Geminiエージェントモードを使ってコード自動生成(リファクタリング)してみた
スポンサーリンク

Gemini Agent Modeが追加されたAndroidStudioプレビュー版を使ってコード自動生成(リファクタリング)してみた

Geminiエージェントモード(Gemini Code Assist)を使うことができるようになった Canary版 Android Studio Narwhal Feature Drop で Flutter のコードを書かせてみた

ヒーラー
Gemini CLI、Gemini Code Assist、Gemini Agent Modeと色々用語が出てきて何がどんな機能なのか整理できない

はじめに

2025年6月25日、GoogleからオープンソースのAIエージェント「Gemini CLI」が発表・公開されたばかりですが、2025年6月26日 Geminiエージェントモードが追加されたプレビュー版「Anndroid Studio」がリリースされました。

現時点ではベースになっているのはGemini CLIと同じくGemini 2.5 Proとなっており、Googleアカウントがあれば無料で使うことができます。

Gemini エージェントモードとは

具体的にはCanary版「Android Studio Narwhal Feature Drop」に「Gemini」のエージェントモード(Agent Mode)が追加されました。
「Android Studio Narwhal Feature Drop」のダウンロードはこちらから可能です。

 「Gemini in Android Studio」のエージェントモードは、AIとのチャットだけでは実現できない複雑な開発タスクを処理するために設計された新しい実験的機能とのことです。

従来のAndroid StudioのDockにも、Geminiをチャット形式で使用することができました。

今回はさらに拡張された「エージェントモード」として、よりコーディングに役立つ存在として登場したということです。
ユニットテストの生成から複雑なリファクタリングまで、目標を自然言語で記述するだけでエージェントがプロジェクト内の複数のファイルにまたがる実行計画を策定し、開発者の指示に従って実行してくれるようになりました。

Gemini CLIとエージェントモードは何が違うの?

エージェントモードは、Gemini CLIを基盤に置きつつ、Android StudioのようなIDEにおいて、利用しやすいように拡張された機能と考えればよさそうです。
コアな機能はGemini CLIだけれども、IDEに組み込まれてより対話的で視覚的に使いやすくしたものが「エージェントモード」だという理解でよいと思います。

また、「Gemini Code Assist」という用語もよく用いられますが、「Gemini Code Assist」は、従来のGeminiを使って、コーディングをアシストする機能全般の広く捉えた概念だと考えればよいでしょう。

従来のAndroid Studioでも、コードを選択して右クリックなどでコンテキストメニューを開き、「Gemini」を選択すると、いくつか補助するような選択肢が出てきます。
例えば、「Suggest Improvements」を選択すると、Geminiがよりよいコードを提案してくれます。

図の例では、Spacerの親に不要なContainerがあるので、取り除くことを提案してくれました。

Claudeによると、以下のように概念図が作られました。

IDEの機能の概念として、Gemini Code Assistというものがあるが、特に基盤となるGemini CLIを活用して、自律的なタスク実行機能を持ったものが「Agent Mode」だということができそうです。

プレビュー版 Android Studioでエージェントモードを使ってみる

Canary版「Android Studio Narwhal Feature Drop」をダウンロード・インストールして、早速エージェントモードを使ってみます。

実際にインストールしたのは、「Android Studio Narwhal Feature Drop | 2025.1.2 Canary 2」で、黒ベースのアイコンです。

実は「Android Studio Narwhal Feature Drop | 2025.1.2 Canary 2」をインストールした時点ではまだエージェントモードは使えません。このあと、「Canary 6」へのアップデートを促されるので、アップデート&リスタートをする必要があります。

そして無事「Canary 6」にアップデートできたら、Android Studioを起動し、Dockにある「Gemini」を開きます。するとエージェントタブが追加されていることがわかります。

そして早速

パフォーマンス向上のために直せるところある?

と聞いてみました。

すると、README.mdファイルに目をつけたようで、build_runnerの実行コマンドの記述で、非推奨な記述を修正してくれました。
ちょっと想定外で、もう少し広い範囲でリファクタリングできるところを探して欲しかったのですが、すごく細かいところを修正されましたね。

もう少し具体的にパフォーマンス向上のためのリファクタリング案を促します。

パフォーマンス向上のために直せるところある?
例えばscreen以下の各所にある、ref.watchでprovider経由でstateを取得する箇所において、
selectを使ってstateの何を取得するのか明示的にした方が、パフォーマンスはよさそうなんだけど

と少し砕けた表現で指示してみます。

すると、

✦ はい、おっしゃる通りです。ref.watch で状態 (state) を取得する際に select を使用して、
  監視する値を具体的に指定することは、パフォーマンス向上に非常に有効な手段です。

理由は以下の通りです。

(中略)

これらの箇所に select を適用する修正をご希望でしたら、具体的な変更案を提示できますが、いかがでしょうか?

という期待していた答えが返ってきました。

提案どおり修正したいので、以下のように返答します。

はい。適用して修正したいです。

すると、

✦ 了解しました。それでは、まず ... メソッドで ref.watch を使用している箇所を、
  select を使って特定のプロパティのみを監視するように修正しました。

具体的には以下のように変更しました。

(中略)

これにより、これらのウィジェットは関連するプロパティが変更された場合にのみリビルドされるようになり、
アプリケーション全体のパフォーマンス向上に貢献します。
他に修正を希望される箇所はありますか?

修正を実行してくれました。そして更に修正する箇所はあるかと聞いてきてくれました。

他のディレクトリにも同様の事例はあるので、同じように直してほしい旨を伝えます。

screenディレクトリ以下には画面ごとにディレクトリが作られているのですが、
それぞれのファイルにおいて同じような記述があると思うので、同様に直したい

すると、

✦ 了解しました。screen ディレクトリ以下の各画面ファイルに対して、同様の ref.watch から ref.watch.select への修正を試みます。

まずは screen ディレクトリ内のファイル構造を把握するために、ファイルとディレクトリの一覧を取得します。

(中略)

これらの箇所を修正します

きちんと他のディレクトリも参照して、修正するコードを提案してくれました。

そして最終的にきちんと ref.watch から ref.watch.select へのリファクタリングをすることができました。

ちなみにGemini CLIの導入方法や検証結果については、以下の記事で紹介しています。

環境

試した環境・用意したものは以下のとおりです。

  • Mac (macOS Sequoia: バージョン15.5)
  • Android Studio Narwhal Feature Drop | 2025.1.2 Canary 6
  • Gemini 無料版(Google個人アカウント)

まとめ

プレビュー版の Android Studio をインストールするだけで、Gemini エージェントモードを使うことができました。私の環境では、Android Studio (Meerkat Feature Drop | 2024.3.2)をインストール済みで、既にGemini Code Assistantプラグインを入れてGoogleアカウントが紐づいたので、今回新たにインストールしたプレビュー版 Android Studio でもGoogleログインされた状態でした。
初めてインストールした場合はGoogleログインが求められることでしょう。

今回は試しませんでしたが、単体テストの生成やエラーの修正などの複雑な目標を記述すると、エージェントはプロジェクト内の複数のファイルにまたがる実行プランを策定します。
そして、提案された変更内容をきちんと確認して、許可するか拒否するかを選択することもできますし、フィードバックに基づいてエージェントに変更を依頼することもできます。

今はまだプレビュー版ですが、正式リリースされた場合には、わざわざGemini CLIを起動することなく、Gemini Agent Modeでやりとりすることになるかもしれませんね。


楽天ブックス
¥1,760 (2025/07/09 13:16時点 | 楽天市場調べ)

スポンサーリンク

Twitterでフォローしよう

おすすめの記事