🍣

gemini CLIに調査させた結果が色々と間違っていた件

に公開

はじめに

みなさん、AIコーディングエージェント使っていますか?

Gemini CLIについて調べている中で --ide-modeというオプションを見つけたので一体どんなオプションなのか気になって調査してみました。

$ gemini --help
gemini [options]

Gemini CLI - Launch an interactive CLI, use -p/--prompt for non-interactive mode

オプション:
  -m, --model                     Model                                                                                                                                                                                                                                                                                              [文字列] [デフォルト: "gemini-2.5-pro"]
  -p, --prompt                    Prompt. Appended to input on stdin (if any).                                                                                                                                                                                                                                                                                      [文字列]
  -i, --prompt-interactive        Execute the provided prompt and continue in interactive mode                                                                                                                                                                                                                                                                      [文字列]
  -s, --sandbox                   Run in sandbox?                                                                                                                                                                                                                                                                                                                     [真偽]
      --sandbox-image             Sandbox image URI.                                                                                                                                                                                                                                                                                                                [文字列]
  -d, --debug                     Run in debug mode?                                                                                                                                                                                                                                                                                              [真偽] [デフォルト: false]
  -a, --all-files                 Include ALL files in context?                                                                                                                                                                                                                                                                                   [真偽] [デフォルト: false]
      --all_files                 Include ALL files in context?                                                                                                                                                                                           [非推奨: Use --all-files instead. We will be removing --all_files in the coming weeks.] [真偽] [デフォルト: false]
      --show-memory-usage         Show memory usage in status bar                                                                                                                                                                                                                                                                                 [真偽] [デフォルト: false]
      --show_memory_usage         Show memory usage in status bar                                                                                                                                                                         [非推奨: Use --show-memory-usage instead. We will be removing --show_memory_usage in the coming weeks.] [真偽] [デフォルト: false]
  -y, --yolo                      Automatically accept all actions (aka YOLO mode, see https://www.youtube.com/watch?v=xvFZjo5PgG0 for more details)?                                                                                                                                                                                             [真偽] [デフォルト: false]
      --telemetry                 Enable telemetry? This flag specifically controls if telemetry is sent. Other --telemetry-* flags set specific values but do not enable telemetry on their own.                                                                                                                                                                     [真偽]
      --telemetry-target          Set the telemetry target (local or gcp). Overrides settings files.                                                                                                                                                                                                                             [文字列] [選択してください: "local", "gcp"]
      --telemetry-otlp-endpoint   Set the OTLP endpoint for telemetry. Overrides environment variables and settings files.                                                                                                                                                                                                                                          [文字列]
      --telemetry-log-prompts     Enable or disable logging of user prompts for telemetry. Overrides settings files.                                                                                                                                                                                                                                                  [真偽]
      --telemetry-outfile         Redirect all telemetry output to the specified file.                                                                                                                                                                                                                                                                              [文字列]
  -c, --checkpointing             Enables checkpointing of file edits                                                                                                                                                                                                                                                                             [真偽] [デフォルト: false]
      --experimental-acp          Starts the agent in ACP mode                                                                                                                                                                                                                                                                                                        [真偽]
      --allowed-mcp-server-names  Allowed MCP server names                                                                                                                                                                                                                                                                                                            [配列]
  -e, --extensions                A list of extensions to use. If not provided, all extensions are used.                                                                                                                                                                                                                                                              [配列]
  -l, --list-extensions           List all available extensions and exit.                                                                                                                                                                                                                                                                                             [真偽]
      --ide-mode                  Run in IDE mode?                                                                                                                                                                                                                                                                                                                    [真偽]
      --proxy                     Proxy for gemini client, like schema://user:password@host:port                                                                                                                                                                                                                                                                    [文字列]
  -v, --version                   バージョンを表示                                                                                                                                                                                                                                                                                                                    [真偽]
  -h, --help                      ヘルプを表示                                                                                                                                                                                                                                                                                                                        [真偽]

しかしながら、サクッと検索するだけでは内容が一切わかりませんでした。
そこでこれ以上本腰を入れて調べるぐらいなら Gemini CLI自身に聞いてみようと思い立ったのが事の始まりでした...

Gemini CLIによる調査

まずはこちらのGemini CLIによるまとめをご覧ください。
見やすいようにマークダウン形式で調査結果をまとめています。

Gemini CLIのまとめ

Gemini CLIの隠れた実力者?--ide-modeを徹底解説!

Googleの強力なAIモデル、Geminiをコマンドラインから対話的に利用できる「Gemini CLI」。多くの開発者がその便利さを実感し始めていることでしょう。しかし、そのヘルプメニューにひっそりと存在する--ide-modeというオプションについて、詳しく知っている人はまだ少ないかもしれません。

実はこのオプション、Gemini CLIを単なる「対話型AIツール」から、あなたのIDEに常駐する 「自律型AIペアプログラマー」 へと進化させる、非常に強力なスイッチなのです。

この記事では、--ide-modeが一体何であり、どのように開発ワークフローを変革する可能性を秘めているのかを、具体的な利用シーンや動作の違いを交えながら徹底的に解説します。

--ide-modeとは何か?

--ide-modeは、一言で言えば 「Gemini CLIをIDE(統合開発環境)と深く連携させるための専用モード」 です。

通常、Gemini CLIはターミナル上で人間との対話を最適化するように動作します。しかし、このモードを有効にすると、VS CodeなどのIDEに組み込まれた拡張機能(特にVS CodeのGemini Code Assist)のバックエンドとして機能するように、その応答形式や動作が変化します。

目的は、IDEという開発の中心地から離れることなく、Geminiの持つプロジェクト全体の読解能力とコード生成・編集能力を最大限に引き出し、シームレスな開発体験を実現することにあります。

主な機能と目的

--ide-modeを有効にすることで、主に3つの強力な機能が解放されます。

1. AIペアプログラマーとしての統合(エージェントモード)

VS Codeの拡張機能が提供する「エージェントモード」は、まさにこの--ide-modeによって支えられています。Geminiは単に指示されたファイルを編集するだけでなく、プロジェクト全体のコードベースを能動的に分析・理解します。

これにより、以下のような複雑なタスクを対話的に解決できるようになります。

  • 複数ファイルにまたがる新機能の実装
  • 大規模なリファクタリング
  • 原因不明のバグの調査と修正

2. IDE内でのシームレスなツール利用

Gemini CLIが持つファイル操作、コマンド実行、Web検索といった強力なツール群が、IDEのチャットUIから直接利用可能になります。開発者はIDEの画面を離れることなく、自然言語で指示を出すだけで、必要な操作を裏側で実行させることができます。

3. 開発ワークフローの効率化

従来、開発者はエディタ、ターミナル、ブラウザといった複数のウィンドウを頻繁に行き来する必要がありました。--ide-modeは、このスイッチングコストを大幅に削減します。コーディング、テスト、デバッグ、リファクタリングという開発サイクル全体を、IDE内でスムーズに完結させることが可能になります。

具体的な利用シーン

このモードが実際にどのように役立つのか、具体的なシナリオを見ていきましょう。

シナリオ1:新機能の追加

指示:

「商品詳細ページにレビューの平均評価を表示する機能を追加して。バックエンドAPIの更新と、フロントエンドコンポーネントの作成もお願いします。」

Geminiの動作 (in --ide-mode):

  1. データベーススキーマやモデルファイルを特定し、averageRatingのようなフィールドを追加。
  2. 関連するAPIエンドポイント(例: /api/products/[id])の処理を更新し、新しいフィールドをレスポンスに含める。
  3. フロントエンドのコンポーネント(例: ProductDetail.tsx)を解析し、APIからのデータを受け取って評価を星などで表示するUIコードを適切な場所に追加。
  4. 関連するテストコードがあれば、それも併せて更新。

シナリオ2:大規模なリファクタリング

指示:

「プロジェクト全体で使われている古い独自関数 formatDate を、標準の Intl.DateTimeFormat を使う新しい実装に置き換えてください。」

Geminiの動作 (in --ide-mode):

  1. formatDateの定義元を特定し、その実装を新しいものに書き換える。
  2. プロジェクト全体をスキャンし、formatDateを呼び出している全ての箇所をリストアップ。
  3. 新しい関数の仕様に合わせて、全ての呼び出し箇所を一つずつ正確に修正。

--ide-modeの有無による動作の違い

では、このオプションの有無で具体的に何が変わるのでしょうか。以下の表にまとめました。

比較項目 --ide-mode なし (デフォルト) --ide-mode あり
ペルソナ 有能なアシスタント 自律的なAIペアプログラマー
目的 人間との対話を最適化 IDE/ツールとの連携を最適化
応答形式 人間が読みやすい自然な文章 マシンリーダブルな形式 (JSON等)
コンテキスト 主に対話の流れや直前のファイル プロジェクト全体の構造
得意なタスク 個別の明確な指示 (ファイル読込、コマンド実行) 複数ファイルにまたがる抽象的な開発タスク
インタラクション ユーザーによるステップ毎の確認が多い 確認が少なく、より自律的に処理が進む

まとめ

--ide-modeは、Gemini CLIを単なるコマンドラインツールから、IDEに深く統合された開発エージェントへと昇格させるための鍵です。

このモードを有効にすることで、Geminiはプロジェクトの深い文脈を理解し、開発者の抽象的な指示に対して自律的にコーディングタスクを実行する、真の「AIペアプログラマー」として機能します。

まだ試したことがない方は、ぜひ一度、お使いのIDEでこのモードの力を体験してみてください。あなたの開発スタイルが、根底から変わるかもしれません。


参考情報

この記事は、以下の公開情報を基に、Gemini自身がWeb検索を行い、内容を要約・再構成したものです。

どうでしょう...
それっぽいことをいっているのですが、実際に調べてみると事実と全然違うのです。
参考情報のリンクも404エラーだったり...

人の手で調査開始

まずはGitHubのPRやissueなどを調べます。

するとすぐにありました。
このPRで--ide-modeのオプションが追加されているようです。
https://github.com/google-gemini/gemini-cli/pull/3927

主な変更点:

  • 新しいCLIフラグ「enableIDE」を追加
  • VS Code統合ターミナルかつサンドボックス外でのみ有効化
  • VS Code拡張のIDEサーバーへの接続機能を実装
  • IDE統合のための新しいMCP(Model Context Protocol)サーバー登録

関連PRも発見
https://github.com/google-gemini/gemini-cli/pull/3917

そこからすぐに該当のIssueに辿り着きました。

https://github.com/google-gemini/gemini-cli/issues/3903

内容としてVS Code上で起動した時にVS CodeとMCP接続させたいといった感じでしょうか?
間違っていたらすいません...

  • VS Codeのターミナルで実行されている時ににIDEサーバーへの接続を試行
  • ユーザーの混乱を避けるため、/mcpメニューからIDEサーバーを非表示にする
    といった提案がされています。

このissueに引き継がれて...
https://github.com/google-gemini/gemini-cli/issues/4383

さらにこちらのissueに引き継がれています。
https://github.com/google-gemini/gemini-cli/issues/4800

VSCodeとの統合に向けたマイルストーンもひかれていました
https://github.com/google-gemini/gemini-cli/issues/3905

まだ開発途中のようですね。

重複していますがもう1つissueがありました
https://github.com/google-gemini/gemini-cli/issues/3900

結論

Gemini CLIがVS Codeの統合ターミナルで実行されている時に

  • 現在アクティブなファイル
  • カーソル位置
  • ユーザーのIDEで開いている全ての他のファイル

などを認識できるようにIDEとGemini CLIを統合する途中の状態ですね。

将来的には

セットアップ

  1. ユーザーが一度だけVS Code拡張機能をマーケットプレイスからインストール
  2. または/ide installコマンドでインストール

動作

  • VS Codeの統合ターミナルでgemini-cliを実行し、拡張機能がインストールされている場合
  • Gemini CLIがユーザーの開いているファイルに自動的にアクセス
  • このコンテキストがモデルのプロンプトに含まれ、UIに表示される

といったような機能になるみたいです。

現状の状態を動作確認してみよう

実際にVSCodeで--ide-modeオプションをつけて起動してみます。

https://zenn.dev/shirochan/articles/faa79d13a864cd

こちらの記事でアップデート内容を確認した時に /ide コマンドが入っていることは確認済みです。
まだ未完成の機能だと思いますので、今の開発状況はどうなっているのかという確認をしてみます。

$ gemini --version 
0.1.15

$ gemini --ide-mode
[DEBUG] [IDEClient] Unable to connect to IDE mode MCP server. GEMINI_CLI_IDE_SERVER_PORT environment variable is not set.

なんかログが出てきましたね。

これらのコマンドも使えるようになりましたがまだうまく動作はしません。
まだ開発途中なので動かないのでしょうか...

色々と試してみたのですが思ったような動作にはなりませんでした。
もう少しGemini CLIのコードを読み込んだりissueなどで開発計画を確認する必要がありそうです。
ということで、一旦調査はここまでとします。

今後Gemini CLIのこのIDE統合がどういった形で完成するのか楽しみです。
マイルストーンのissueをwatchしておくことにします。

まとめ

生成AIが引き起こすハルシネーションを改めて体験しました。

生成AIを利用する際は必ず人間の目でファクトチェックを行い、重要な情報については複数の信頼できるソースで検証することが重要です。
AIの利便性を活用しながらも、最終的な判断と責任は人間が持つという意識を忘れてはいけないなと改めて感じさせられました。

Discussion