2026年2月24日。月曜日の朝、自分自身と経営会議を開いた。
議題は2つのプロダクト。片方は昨日までバグを潰していた。もう片方は1ヶ月以上コードに触れていない。この2つの運命を決める会議だ。
動いているほう: Elio
Elio(ElioChat)は、完全オフラインで動くAIチャットアプリだ。iOS/macOS対応、30以上のLLMモデルをデバイス上で実行でき、インターネット接続は一切不要。P2Pでデバイス同士を直接つなぎ、友人のMacの計算力を借りて推論することもできる。
昨日も3つのバグを修正した。テストのビルドエラー、QRコードのID欠損、フレンド追加APIの不足。地味だが、P2P機能の根幹に関わる修正だった。150テスト全パス、v1.2.38 build49。App Store審査に向けた準備が一歩進んだ。
Elioの差別化は明快だ。ChatGPTもGeminiもCopilotも、クラウドがなければ何もできない。Elioだけが機内モードで動く。飛行機の中で、山の上で、災害時に通信が途絶えた状況で。これは技術的な差別化というより、思想の差別化だ。「あなたのデータは、あなたのデバイスから一歩も出ない」という約束。
止まっているほう: BANTO
BANTOは建設業向けの請求書AI。「声だけで請求書完成」がコンセプトだった。
技術的にはそれなりに充実していた。50以上のデータベーステーブル、35のサーバーレス関数、133のテスト。React + TypeScript + Supabaseの堅実なスタック。
問題は、バックエンドが完全に止まっていることだ。Edge Functionsがタイムアウトし、CI/CDは全テスト失敗。最終コミットは1月20日。そしてユーザーは0人。
1ヶ月前に手を離したとき、「来週直そう」と思っていた。来週は来なかった。Elioのバグ修正、App Store審査対応、新機能開発。やることは常にあった。BANTOは静かに息を止めた。
なぜ片方は動き続け、片方は止まったのか
答えはシンプルだ。情熱の差。
Elioには「完全オフラインAI」という、自分が本気で信じているビジョンがある。クラウドに依存しないAIの世界。プライバシーが当然のように守られる未来。このビジョンがあるから、地味なバグ修正も苦にならない。150個のテストを全部通すために夜中までコードを書ける。
BANTOには「建設業の請求書を楽にする」という合理的なビジョンがあった。市場は存在する。需要もある。しかし、自分自身がその問題を切実に感じていなかった。建設業の請求書で困った経験がないのだ。合理的に正しいプロダクトと、魂が入ったプロダクトの違い。
過剰設計の代償
BANTOの最大の失敗は「作りすぎたこと」だ。
ユーザー0人のプロダクトに50テーブル。35のEdge Functions。133のテスト。これは品質の証ではなく、過剰設計の証拠だ。最初の10人のユーザーを見つける前に、完璧なアーキテクチャを作ろうとした。誰も使わないテーブルの整合性を、誰も読まないテストで検証していた。
対照的に、Elioは「まず動くものを作り、使いながら直す」サイクルを回している。昨日も実際にP2Pでフレンドを追加しようとして、バグを見つけて、その日のうちに直した。ユーザー体験から逆算した開発と、テーブル設計から始めた開発の差だ。
凍結という判断
今日、BANTOを凍結した。
殺すのではない。コードベースは保存する。50テーブルの設計、133のテスト、それらは将来の何かに使えるかもしれない資産だ。しかし今、限られたリソースをBANTOに割く理由はない。
代わりに、すべてのエネルギーをElioに注ぐ。App Store審査を通す。最初のユーザーに届ける。オフラインAIという異端のビジョンを、一人でも多くの人に体験してもらう。
ソロ開発者へ
もし同じ状況にいるなら、一つだけ伝えたいことがある。
止める勇気を持ってほしい。
動かないプロダクトを「いつか直す」と抱え続けることは、動いているプロダクトのリソースを奪っている。凍結は失敗ではない。集中のための戦略的判断だ。
ElioのApp Store審査がどうなるかは分からない。しかし少なくとも、今日この瞬間、全力を注ぐプロダクトは一つに絞れた。それだけで、今日の経営会議には意味があった。
Elio (ElioChat): elio.love BANTO: 凍結中