
AndroidStudioに GitHub Copilot と Claude CodeとGemini CLIをインストールしてコード自動生成を比較してみた
GitHub Copilot と Claude Code と Gemini CLI をインストールして Android Studio で Flutter のコードを書かせてみた

はじめに
このところプログラムを自動生成するAI技術が大幅に進み、2025年6月に大きなリリースやツール化が立て続けに発表されました。
2025年6月4日には、ClaudeのProプランとMaxプランの両方で「Claude Code」を使えるようになりました。
2025年6月25日には、Googleから無料で使用できる「Gemini CLI」が発表・公開されました。
2025年6月26日には、「Geminiエージェントモード」が追加されたプレビュー版「Anndroid Studio」がリリースされました。
同じく2025年6月26日には、GitHub Copilot Proプランのユーザー向けに「GitHub Copilot coding agent」 がプレビュー版として提供されました。(Pro+プラン以上のユーザーには5月から提供開始)
そして、GitHub Copilot coding agentの登場で、モデルを指定してコード生成がしやすくなりました。
このように連続的にAIエージェントが発表・提供され大きくIT業界の働き方を革新的に変えるような進化が進んでいます。
そこで、Flutter開発において、GitHub Copilot と Claude Code と Gemini CLI それぞれにおいて、共通した指示(プロンプト)でどのようなプロセスでどのように処理されのか、生成コードを比較してみたいと思います。
ちなみにAndroid StudioにおけるClaude Codeの導入方法、Google CLIの導入方法については、以下の記事で紹介しています。
環境
試した環境・用意したものは以下のとおりです。
- Mac (macOS Sequoia: バージョン15.5)
- Android Studio (Meerkat Feature Drop | 2024.3.2)
- 開発中のFlutterプロジェクト(Riverpod + Hooks + Freezed 使用)
- Claude Proプランアカウント
- Gemini 無料版(Google個人アカウント)
- GitHub Copilot Proプランアカウント
前提
既に Gemini CLI と Claude Code においては生成コードを比較しています。
詳しい内容は以下の記事にあります。
したがって今回は更に同じプロンプトで、GitHub Copilot でどのようなプロセスでどのような結果が出るかを検証したいと思います。
指示したプロンプト
実際に実行したプロンプトは以下のとおりです。
> 以下の機能を満たす新しいページを作ってください。
なお、ファイル名はtext_edit_page.dartで、
Riverpod+Hooks+Freezed前提で他のページとスタイルを合わせて作ってください。
1.ユーザーがテキストを入力する
2.ユーザーがボタンを押すと、入力したテキストがリッチなテキストで表示される
3.ユーザーがボタンを押すごとに、入力したテキストのスタイルがランダムに変わる
4.リッチなテキストをタップすると、その文字がシステムとしてコピーされる。(複製されるわけではなくテキストをどこかにペーストできるようになる)
5.コピーされたらコピーされたことがわかるようにトースト表示してください。開発中のプロジェクトはRiverpod+Hooks+Freezedの構成で作っていたので、それを踏襲してもらうように指示しました。
ボタンの名称を未指定だったり、リッチなテキストという少し曖昧な表現にそれぞれどう対応するのでしょうか。またボタンなど、画面のどの位置に配置するかという具体的な指示をしていないので、その辺りもどう判断するのか楽しみです。トースト表示にサードパーティー製のpackageを活用するのかも気になります。
GitHub Copilotの場合
GitHub Copilot プラグインをインストール
メニューの[Tools] > [SDK Manager] か [Android Studio] > [Settings] から「Plugins」の項目を選択します。
検索バーで「GitHub Copilot」と打てばすぐに見つかります。
インストールして、既にGitHub Copilot の各種プランアカウントでログインしましょう。

GitHub Copilot起動
Android Studio のDockにGitHub Copilotの項目があるので、クリックして開きます。
するとタブにAgent (Preview) という項目が追加されているので、ここで指示をすることになります。

画面下に入力できるスペースがあるので、こちらに先ほどのプロンプトをコピペして早速実行します。
プロンプト実行
> 以下の機能を満たす新しいページを作ってください。
なお、ファイル名はtext_edit_page.dartで、
Riverpod+Hooks+Freezed前提で他のページとスタイルを合わせて作ってください。
1.ユーザーがテキストを入力する
2.ユーザーがボタンを押すと、入力したテキストがリッチなテキストで表示される
3.ユーザーがボタンを押すごとに、入力したテキストのスタイルがランダムに変わる
4.リッチなテキストをタップすると、その文字がシステムとしてコピーされる。(複製されるわけではなくテキストをどこかにペーストできるようになる)
5.コピーされたらコピーされたことがわかるようにトースト表示してください。すると、いきなりコーディングを開始して一瞬でページが作成されました。

新しいページ text_edit_page.dart を作成しました。このページは以下の機能を持っています。
1. ユーザーがテキストを入力できるテキストフィールド
2. ボタンを押すと入力テキストがリッチテキストで表示され、スタイルがランダムに変化
3. リッチテキストをタップするとテキストがクリップボードにコピーされ、トースト(SnackBar)でコピー完了を通知
Riverpod+Hooks+Freezedの構成・他ページのスタイルに合わせて実装しています。プロジェクトに組み込む際は、
必要に応じてルーティング等を追加してください。しかし、この時点でプロジェクトを確認すると、エラーがありました。
build_runnerが実行されておらず、freezedのコードが自動生成されていませんでしたので、指示を追加します。

指示したとおり、generateを実行してくれます。

しかし、flutterコマンドが使えないということで、跳ね返ってきました。
ここで、fvmを使っていることを知らせます。

※実際のプロンプトや生成されたコードは、最後にGemini CLI、Claude Codeと比較しやすいようにまとめて掲載しています。
GitHub Copilot 実行結果
生成されたコードによって、以下の画面が作成されました。

はじめにテキストエディタとボタンがあるのは想定どおりです。
実行した動画は以下のとおりです。

テキスト入力はOK。
「リッチテキストで表示」ボタンでリッチテキストが表示されるのもOK。
リッチテキストをタップしてコピーはされるのもOK。
コピーされたときにスナックバーでコピーされたことを知らせる表示もOK。
Freezedの自動生成コードのgenerateまで十分に機能しなかった点はありますが、きちんと仕様通りに作成してくれました。
トースト表示と指示したところをSnackBarで対応してきたところは、一定の意図は汲み取っている感はありますね。










