こんにちは、しらかわるーむの白川秋です。
「アプリに実装したい機能が10個ある。でも自分は一人。しかも本業もある」——個人開発をしている人なら、この絶望的な足し算に覚えがあるんじゃないでしょうか。
僕が開発している熊本の観光×乗換案内アプリ「くまモビ」も、まさにその状態でした。クローズドテストは始まったものの、やりたいことリストは膨らむ一方。そこで今回、AIアシスタントのClaudeと本気のペアプログラミングで挑んだところ、8月4日の夜に決めた10機能が、8日の夜には全部動いていました。5日間です。
もちろん、順風満帆ではありません。通知が来なくて20分待ちぼうけしたり、ビルドが謎のエラーで割れたり。今日はその舞台裏を、失敗談込みで正直に書きます。
この記事のポイント
- 個人開発アプリに5日間で10機能を実装した実録と役割分担を公開
- ハマった不具合はすべてlogcatで真因確定してから直すのが鉄則
- AIは「書く係」ではなく「調べて検証して直す係」として使うと強い
8分0秒でわかるまとめ動画
実装した10機能、ぜんぶ見せます
まず決めたのは優先順位です。Claudeに過去の開発チャットを全部読み返してもらい、「リリース前に効くもの順」に並べ替えました。実装したのはこの10個。
| 機能 | ひとこと | |
|---|---|---|
| 1 | リリース前TODOの回収 | テスト用設定の戻し忘れをフラグ1つに一元化 |
| 2 | 検索履歴・お気に入り | 毎日同じ検索をする人のためのワンタップ再検索 |
| 3 | クーポン使用記録 | 店舗への実績報告に使える集計をこっそり裏で |
| 4 | リアルタイム運行情報 | バス4社の遅延をGTFS-RTで自動表示 |
| 5 | 運賃表示 | 経路検索の結果に「いくらかかるか」を追加 |
| 6 | バリアフリー情報 | 車いす・多目的トイレ・エレベーターの有無 |
| 7 | オフライン地図 | 圏外の山あいでも地図が出る事前ダウンロード |
| 8 | スタンプ全制覇の報酬 | コンプリートでクーポン解放 |
| 9 | 実績ダッシュボード | 訪問数・クーポン利用をグラフとCSVで可視化 |
| 10 | プッシュ通知 | お知らせと運行情報を4言語で配信 |
こうして表にすると涼しい顔をしていますが、一つひとつに小さなドラマがありました。いくつか紹介します。
事件簿①:通知が来ない。20分待った
プッシュ通知を実装して、いざ配信テスト。……来ない。5分待っても、20分待っても来ない。
こういうとき、僕とClaudeの間には鉄の掟があります。「真因を確定してから動く」。勘で直さない。証拠はAndroidのログ(logcat)に必ず残っているからです。
ログを渡すと、Claudeが一行を指差しました。「14時05分42秒、メッセージは届いています」。……え、届いてる?
犯人は僕でした。プッシュ通知はアプリを開いたままだと表示されない仕様(OSが出すのはバックグラウンド時だけ)で、僕はPCで配信操作をしながら、スマホでアプリを開いて待ち構えていたんです。ログには17秒後に僕がアプリ内でキーボードを触った記録まで残っていました。完全犯罪ならぬ完全自白です。
この一件から「アプリを開いているときは画面上部にバナーを出す」機能が生まれたので、失敗も無駄にはなりませんでした。
事件簿②:ビルドが割れた。犯人はバージョン番号
通知機能はネイティブのライブラリ追加が必要で、ビルドし直したらエラーの嵐。日本語で「シンボルを見つけられません」と言われても、こっちが見つけたいくらいです。
これもClaudeの見立ては早くて、「Firebaseのライブラリ群は全部同じバージョンに揃えるのが鉄則。1個だけ新しいのが入ったはず」。確認したら図星で、他が23.8.8のところに26.1.0が混入していました。番号を揃えて一発解決。エラーメッセージが呪文に見えても、原因はだいたい地味なんですよね。
事件簿③:地図5MBのはずが27MBだった
オフライン地図は、ダウンロード容量を「約5MB」と見積もっていたら、実測27MB。5倍です。
原因は日本語でした。地図タイル自体は小さいのに、漢字のフォント一式が20MB以上あって、これが必ず同梱される。日本語アプリの宿命みたいな話で、表示を実測値に直して一件落着。ちなみに実装前には「地図サービスの規約的に一括ダウンロードして良いのか」もClaudeに調査してもらいました。使っているOpenFreeMapは回数無制限を明言している太っ腹なサービスで、感謝しつつ節度ある範囲(熊本県内だけ)に絞っています。
AIペアプロ、実際どう役割分担したのか
5日間やってみて、分担はきれいにこうなりました。
僕(人間)の仕事は、優先順位を決める・実機でテストする・logcatを取る・「なんか変」を言語化する。Claudeの仕事は、過去チャットから文脈を思い出す・規約や世界標準のやり方を調べる・コードを書く・書いたら自分で構文チェックまで通す。
特に効いたのは、Claudeが「動かないときに実物を取り寄せて調べる」ところ。オフライン地図のAPIが動かなかったとき、Claudeは自分の環境に同じライブラリを実際にインストールして、型定義ファイルを読み、「このバージョンではAPI名が変わっています」と証拠付きで特定しました。推測で3回書き直すより、1回調べるほうが速い。人間側の教訓としても持ち帰りたい仕事ぶりでした。
まとめ:個人開発の「一人」の定義が変わった
10機能を積んだくまモビは、いまクローズドテストで最終調整中です。振り返って思うのは、AIペアプロの価値は「コードを速く書くこと」ではなく、「調査・検証・記憶をアウトソースして、人間は判断とテストに集中できること」だということ。
個人開発は相変わらず一人です。でも「一人+よく調べる相棒」は、思ったよりずっと遠くまで行けます。やりたい機能リストを前に固まっている開発者のみなさん、まず相棒に「優先順位をつけて」と頼むところから始めてみてください。
くまモビの一般公開が近づいたら、またこのブログでお知らせします。それでは、また次の記事で!
ではでは、参考までに

