ChatGPT + Claude Codeで1行も書かずにAndroid アプリを Vibe Codingできた

前提

Vibe Codingが流行っているので、なんか作ってみたい欲が高まっていました。 そんな時ふと、日常の小さなペインである「物理の会員カードにQRコードが印字されていて、来店時にそれを提出する必要があるために財布を持ち歩かなければならない」が気になった。 会員カード系のQRコードはいわば静的データなので、スマホに保存しておけるハズ、そうすればスマホのみを持ち歩けば良いのに、とは前々から思っていた。 軽くStoreを見てもそれっぽいアプリはありそうだったが、無料でなかったりするし、要件はとてもシンプルなので「これ、AIで作れるのでは」と思って作ってみた。

思った以上に簡単にできてしまったため、驚きを以下で書き記していく

さきに成果物デモ

youtube.com

1. ChatGPT との要件定義

要件定義はとりあえずChatGPTに投げるところから。まぁ問題なく話が進む。当初は、スキャンした QR コードをサーバー側の S3 に保存するなど、Backend Engineer らしい発想で設計を考えていたが、「個人利用であれば、端末のローカルストレージで十分」という指摘もしてくれて、余計設計がシンプルになり、実装の複雑さも大幅に削減された。ClientとServer、なんならInfra構成含めたmonorepoでも作るかと思ってたけど、この時点でClientのみに収束した。 実装はClaude Codeにお願いするつもりでいたので、CLAUDE.md と instruction.mdを出力してもらって、ChatGPTはお役御免。

CLAUDE.md と instruction.md の作成

CLAUDE.md に記述した詳細内容は以下(らしい)

  • プロジェクト概要:アプリの目的、対象プラットフォーム、主要機能
  • アーキテクチャ:MVVM + Unidirectional Data Flow、マルチモジュール構成
  • 技術スタック:Kotlin、Jetpack Compose、Material3、Room、Hilt、CameraX、ZXing
  • 開発ルール:実装時の制約やベストプラクティス

instruction.md は、以下な感じ

  1. プロジェクト基盤の構築
  2. ドメイン・データ層の実装
  3. ホーム機能の実装
  4. 追加機能の実装(カメラによる QR コード読み取り)
  5. 表示機能の実装(フルスクリーン QR 表示)
  6. 詳細機能の実装(カード情報の編集)
  7. バックアップ機能の実装
  8. ショートカット・ディープリンクの実装
  9. 削除機能の実装

それまではAndroid Studio上で動作確認していたが、Step6あたりで端末にInstallしてみると、削除機能がないことがわかったw なのでそれだけ追加実装してもらったために、Step9だけ後付けになっている。

2. Claude Code での段階的開発

開発は非常にシンプルで「Step N を作成して」の指示を繰り返すだけで、アプリケーションが段階的に構築されていった。

AI による自動的な実装

各 Step では、以下のような成果物が自動的に生成された(らしい)

  • コンパイル可能なアプリ:各ステップ終了時点でビルドが成功
  • 適切なアーキテクチャ:定義した設計パターンに従ったコード
  • エラーハンドリング:適切な例外処理とユーザーフィードバック
  • テストコードユニットテストと UI テストの実装
  • コード品質:Spotless + ktlint によるコードフォーマット

要件定義を超えた実装の驚き

  • レイアウトMaterial Design に準拠した UI
  • 色味:適切なカラーパレットとアクセシビリティへの配慮
  • ダークモード:システム設定に応じた自動切り替え
  • 保存アイテムの sort, filter 機能ユーザビリティを考慮した検索・ソート機能
  • アイテムのメタデータ(カテゴリ分けなど):データの整理と管理機能

できたものを見て驚いたのは、これらの機能は、要件定義の際には「QR コードをスキャンして保存・表示する」という基本的な要件しか伝えていないのに、実装されており、ChatGPT instruction.md が良かったのか、Claude Code の実装力の高さなのか、いずれにしてもユーザーにとって本当に使いやすいアプリケーションが完成した。

これも、AI Codingの凄さで、単なる指示通りの実装をするのではなく、ユーザー体験を考慮した包括的なソリューションを提供で、人間の開発者でもこれができる人はレベルが高い。。

3. GitHub Actions での APK 配信

動くものができたところで、配信のためにGitHub Actionも作ってもらった。コードの変更があるたびにActionで自動的に APK がビルドされ、GitHub のリリースページからダウンロードできるようになった。 という感じでCICDまで構築して完了。

まとめ:Vibe Coding の実践として

1 行も書かずに Android アプリを作成

結果的に絵に描いたようなVibe Coding の実践になり、1行もコードを書かずに、AI との対話だけで Android アプリを作成し、配信まで完了できた。 Google Play Store公開は、初期費用$25をケチってやってない、要件としては不要ではあるが、経験としてやっても良かったけど、まぁそれはまた次回機会があればやってみたい。

これで仮にもAndroid Engineerを名乗れてしまう訳だが、もちろん名乗るつもりはない。とはいえ、素直に恐ろしい時代だ。 ちなみにこの話、ChatGPT相談から実装完了まで数日しかかかっていないし、「数日間」の大半は「人間からの指示待ち」時間であって、機械が動いていたのはほんの一部でしかない。 各ステップでbuildなどをしながら進めていたが、そこでもエラーが出力されることもなく、最初から最後まで「なんかよくわからんけど、期待通りのものができていっている」以上に把握・観測することがなかったのが驚くべき開発体験だった。