Gemini CLIでAndroidアプリを作るのがめっちゃ簡単だった

に公開

Gemini CLIのインストール

以下に簡単にやり方を紹介しましたので、ご参考としてください。
インターネッツをさまよえば、参考になる記事や動画が出てきます。
頑張ってインストールします。
https://zenn.dev/rucco/scraps/63204bcde014aa

お試し用メモアプリの仕様(実験プロジェクト)

概要

このアプリは、Jetpack Compose と Room を使ったメモアプリの実験用プロジェクトです。
UI構成・状態管理・DB操作の基本を実装しつつ、今後の機能追加(タグ、手書き、スクリーンショット、音声など)にも対応できる構造を意識します。
盛り込みすぎか!?💦

HomeScreen(メモ一覧画面)

  • 登録済みメモを一覧表示。
  • 各メモの右に「編集(ペン)」と「削除(ゴミ箱)」アイコンを表示。
  • 画面右下に「新規作成(+)」FABを配置。

AddNoteScreen(新規作成)

  • Home画面の「+」ボタンで遷移。
  • 入力項目:タイトル・日付・詳細。
  • 「登録」ボタンを押すと Room DB に保存。

EditNoteScreen(既存メモ編集)

  • Home画面の「編集」ボタンで遷移。
  • 入力項目は AddNoteScreen と同じだが、初期状態として既存データを表示。
  • 「変更」ボタンで Room DB のデータを更新。

削除処理

  • Home画面で「削除」ボタンを押すと、確認ダイアログを表示。
  • 「はい」で該当メモを Room DB から削除。

アーキテクチャ概要

  • DB:Room(Entity, Dao, Repository)
  • 状態管理:viewModel + uiState
  • 画面構成:Jetpack Compose の Screen 単位

Android Studioで新規プロジェクト作成

New Project>EmptyActivityを選択してNext。
Nameに「Memoco」と入力し、Finish。
プロジェクトが作成されるまでちょっと待つ。

Gemini用「概要説明」ファイルを作成

こんな感じでGeminiに大雑把に作業指示するためのファイルを作って、
プロジェクトの中に入れておく。

ターミナル作業

プロジェクトができたら、おもむろにターミナルボタンを押す!!!!

ターミナルに「gemini」とコマンドを打ってgeminiを呼び出す。
こんな画面が表示されたらGeminiCLIが起動したということです。
一番下のプロンプト入力ボックスに色々書いていくぞーーーー!

Geminiにアプリ作成を依頼する

まずは、作成した概要説明をgeminiに見せたいので、プロンプト欄に「@」と入力。
そうすると、プロジェクト直下にあるファイル一覧が表示されるので、
MemocoSpec.mdを矢印キーで選択し、Enter!
プロンプト欄に「@MemocoSpec.md]と入力されるので、再度Enter!

で、色々考えてくれて・・・・

おおっ!依存関係を追加してくれるんですね!?
この設定、面倒だったんです><
ありがとう🙇‍♂️

編集するけどいい?みたいなことを聞かれるので、
Yes,allow once!(今回のみよろしく!)が選択されていることを確認してEnter

次にgeminiがこのように編集しますぞ?と見せてくれます。
よければ、Yes,allow onceを選択し、enter

念のためエラーになっていないか実際のファイルを見て確認します!!!
確認するファイルはlibs.versions.tomlとbuild.gradle.ktsかな。
エラーが出ている可能性があるので、SyncNowしてみます。

Roomを使う場合、KSPとKotlinのバージョンと合わせないと実行時エラーになります。
Geminiが書くコードはバージョンが若干古いので、このタイミングで修正しておくと
いいかもと思いました。

次はRoom(DB)を構築してくれるようです。
Yes,allow once!

次に、Noteエンティティ、MpteDaoインタフェース、NoteDatabaseクラスを作成してくれるみたいです。
もちろん、Yes,allow once!

さらにNoteリポジトリを作ってくれました。
コードはちらっとしか見てないけど、順調のようです。
放置してていいのかしら^^;

NoteViewModelも作ってくれるって言っているので甘えます。
自分がコーディングするとこんなに早くここまで作れません。
調べながらとか確認しながらとかやってますので😅😅

MainActivityを更新して、NoteDatabaseとNoteRepositoryを初期化、
NoteViewModelのセットアップ。
さらにNavigation Composeを使用して画面遷移を管理をするそうです。
さすがにコードチェックしてきます!

うーん。
MainActivityにNavHost設定してるー。
Navigationは切り離しているので、なんか違和感。
HomeScreenなどがエラーになっていますが、おそらくこの後実装する予定なのでしょう。
見守ります。

次はUI作っていくようです。
Yes,allow once!

1つ1つの作業が数秒~数十秒で終わるんですが^^;;;;

そして、出来上がったようなので、アプリ起動してみましたが、
KPSの依存関係の問題で実行時エラーが発生しました。
これは自分で修正。

ビルドしなおして、実行してみます。
おお@@;普通にアプリだ。。。
一覧表示、新規作成、編集、削除一通りそろってます。
UIがダサいとか、いきなり削除するとか、一覧表示の並び順とか、
気になるポイントはありますが、完成です。
この記事を書きながらやっていたので、時間がかかっていますが、
数分でアプリ作成が終わったのではないでしょうか💦

この後、正しく画面遷移ができるか?のテストをgeminiCLIに書いてもらいましたが、
めっちゃ苦労していたようです。
アプリはサクサク作ってくれたけど、テストは苦手なのかなって思いました。
私もテスト苦手なんです🤣

Discussion