📚

VScodeにGemini Code Assistを導入してエージェントモードを有効にする

に公開

Gemini Code Assist Agentモードについて

Gemini Code Assist のAgentモードは、Gemini CLIをベースエンジンとして動作する、VS Code内のエージェント機能です。従来のチャット形式を超えて、複雑で多段階のタスクを自動実行できる用になりました。今回は、Google Code Assistを導入してエージェントモードを有効化します。

環境情報

  • Mac (M1チップ)
  • Gemini Cliインストール済み
  • VSCode インストール済み

Gemini Code Assistを導入する

公式ドキュメントに従い設定していきます。

https://developers.google.com/gemini-code-assist/docs/use-agentic-chat-pair-programmer#before-you-begin

個人なので1のリンクから、進めます。

https://developers.google.com/gemini-code-assist/docs/set-up-gemini?hl=ja

VsCodeから拡張機能でGemini Code Assistを選択します。

再起動でGemini Code Assistが追加された。

ログインに進みます。

"Sigh in " ボタンで、ブラウザを使用してログインできました。

VSCodeでもチャットできるようになったので、Gemini Code Assistの追加は完了です。

インストールできたので、また戻って進めます。

Insiderプログラムに登録

エージェントモードは現時点て、Insiderプログラムに登録してプレビュー版を使用するという位置付けです。
インストールした後、次のセクションに進んでしまい、この項目を飛ばしそうなので注意です。

最後の行に追加した。

{
  "editor.accessibilitySupport": "off",
  "terminal.integrated.env.osx": {
    "Q_NEW_SESSION": "1"
  },
  "workbench.colorTheme": "Default Dark Modern",
  "security.workspace.trust.untrustedFiles": "open",
  "geminicodeassist.updateChannel": "Insiders"
}

設定を追加して間もなく、VS Code通知が届いたので、通知内のReloadをしました。

エージェントモードを有効化する

次の、エージェントモードを使用する セクションへ進む

プロンプトのベストプラクティスについても公式でドキュメントがある。ありがたい。

https://cloud.google.com/gemini/docs/discover/write-prompts

ディレクトリを開いた状態で、エージェントモードを有効にできました。

MCP サーバの設定

MCPサーバとして機能を追加する例が記載されている。

https://developers.google.com/gemini-code-assist/docs/use-agentic-chat-pair-programmer#configure-mcp-servers

私はGithubと連携を追加して、
Gemini CLIを立ち上げて、/mcpで、githubが追加されていることを確認しました。
*Gemini Code Assistからも/mcpで確認できます。

🟢 github - Ready (26 tools)
    - create_or_update_file:
        Create or update a single file in a GitHub repository
    - search_repositories:
        Search for GitHub repositories
    - create_repository:
        Create a new GitHub repository in your account
    - get_file_contents:

コンテキストファイルを作成する

https://developers.google.com/gemini-code-assist/docs/use-agentic-chat-pair-programmer#create-context-file

仮で、グローバルなコンテキストを設定してみます。
~/.gemini/GEMINI.md

~ $ cat ~/.gemini/GEMINI.md
・私はコーディングについては初心者です。分かりやすい解説をお願いします。
・コーディングで作るのは、ゲームやMCPサーバ、OSSソフトウェアです。
・コーディングの手法とアーキテクチャを重視しています
・クリーンで、セキュリティ対策がされあコーディング重視
・管理性/保守性/可読性重視

エージェントを動かす

先日作成したポモドーロタイマーのディレクトリでコードの解説してもらい、問題なく動きました。

https://github.com/keyaki80/one-day-walking-simulator

# One Day Walking Simulator コード解説

## プロジェクトの概要

このプロジェクトは、**"One Day Walking Simulator"** という名前の、Pythonの`pygame`ライブラリを使って作られたシンプルな2Dゲームです。

コンセプトは「コンピュータ作業の合間に、海辺を散歩する人を眺めてリラックスする」というもので、癒やし系のシミュレーションゲームと言えるでしょう。

## 各ファイルの役割

*   **`one_day.py`**:
    *   このプロジェクトの心臓部です。ゲームのすべてのロジックがこのファイルに書かれています。
    *   `pygame`を使って、ウィンドウの表示、キャラクターや背景の描画、キーボードやマウスの操作、ゲームの進行などを処理しています。
    *   **特徴的な機能**:
        *   **時間や季節の表現**: 実行した時間帯(朝、昼、夕方、夜)や季節(春夏秋冬)を自動で取得し、空の色、キャラクターの服装、背景のオブジェクト(花、蝶、落ち葉、雪など)を変化させます。
        *   **スムーズな画面遷移**: ゲーム開始時に、レトロなPCが置かれた部屋の中から窓の外へ視点がスムーズに移動していくアニメーションが含まれています。
        *   **カスタマイズ可能な時間**: ユーザーは散歩の時間を3分から60分の間で設定できます。

*   **`README.md`**:
    *   このプロジェクトの取扱説明書です。
    *   ゲームの概要、特徴、インストール方法、遊び方、技術的な仕様などが詳しく書かれています。

*   **`requirements.txt`**:
    *   このプロジェクトを動かすのに必要なPythonライブラリが記載されています。中身は`pygame`だけです。

*   **`run_one_day.sh`**:
    *   `python3 one_day.py`というコマンドを実行するためのシェルスクリプトです。ターミナルで `./run_one_day.sh` と入力するだけでゲームを起動できます。

*   **`setup.py`**:
    *   このPythonプロジェクトをパッケージとして配布するための設定ファイルです。他の人が`pip install`で簡単にインストールできるようにするために使われますが、現状は基本的な情報しか書かれていません。

*   **`.gitignore`**:
    *   Gitでバージョン管理する際に、不要なファイル(Pythonのキャッシュファイルなど)が含まれないようにするための設定ファイルです。

## コードのアーキテクチャ

`one_day.py`の中では、`OneDayApp`という一つのクラスにゲームの機能がまとめられています。

*   `__init__`: ゲームの初期設定(ウィンドウサイズ、色、キャラクターの状態など)を行います。
*   `handle_events`: キーボードやマウスの入力を処理します。
*   `update`: ゲームの状態(キャラクターの位置、時間など)を更新します。
*   `draw`: `update`メソッドで更新された状態を画面に描画します。
*   `run`: 上記のメソッドをループさせてゲームを進行させます。

これは`pygame`を使ったゲームの基本的な構造です。

## まとめ

このプロジェクトは、Pythonと`pygame`を使った、非常によくできた小規模なゲームです。コードは単一のファイルにまとまっており、初心者の方でも比較的読みやすく、ゲーム制作の基本的な要素(描画、イベント処理、ゲームループ)を学ぶのに良い教材になるでしょう。


まとめ

エージェントモードの位置付けがわかりづらかったですが、設定自体は1時間程度で完了できました。
ただ、Gemini CLIの方で、すぐにLimitに達してしまい、思うように使えない状態でした。

この辺りもう少し緩和されるのか、情報のアップデートを待ちたいと思います。

Discussion