目次
- Gemini CLIとは? ─ 2026年最強の無料AIコーディングエージェント
- Gemini CLIの全体像:スペック・アーキテクチャ・対応モデル
- インストールと初期設定(5つの導入方法+3つの認証方式)
- 基本操作:起動オプション・スラッシュコマンド完全リファレンス
- GEMINI.md ─ プロジェクトメモリの3階層構造
- サンドボックス ─ 安全なコード実行環境の構築
- MCP連携 ─ 外部ツールとの統合アーキテクチャ
- Extensions ─ 拡張機能エコシステムの活用
- Hooks ─ ライフサイクルイベント駆動のカスタマイズ
- 料金・プラン完全比較 ─ 無料枠からAPI課金まで
- 実践Tips&トラブルシューティング
- まとめ&よくある質問(FAQ)
Gemini CLIとは? ─ 2026年最強の無料AIコーディングエージェント
2026年、AIを活用したコーディングツールは開発者にとって不可欠な存在となりました。GitHub Copilot、Cursor、Claude Code、OpenAI Codexなど、主要なAIコーディングツールが市場を席巻しています。しかし、これらのツールにはひとつの共通した課題がありました。それは「コスト」です。Claude CodeはMax Planで月額100〜200ドル(約15,000〜30,000円)、OpenAI CodexはChatGPT Proプランの月額200ドル(約30,000円)が必要です。個人開発者やスタートアップにとって、この月額費用は決して無視できるものではありません。
そこに登場したのが、Googleが開発・公開したGemini CLIです。Gemini CLIは、Googleアカウントさえあれば完全無料で利用できるAIコーディングエージェントです。1日あたり1,000リクエストという潤沢な無料枠が設けられており、個人開発者はもちろん、チームでの利用にも十分対応できる容量を備えています。しかも、利用できるモデルはGemini 2.5 FlashやGemini 2.5 Proといった最先端の大規模言語モデルであり、100万トークンという圧倒的なコンテキストウィンドウを持っています。
Gemini CLIが他のAIコーディングツールと一線を画すのは、単に「無料」というだけではありません。Apache 2.0ライセンスのもとで完全にオープンソースとして公開されており、GitHubでは約95,900ものスターを獲得しています。これは、開発者コミュニティからの圧倒的な支持を物語っています。コードの透明性が確保されているため、セキュリティに敏感な企業環境でも安心して導入できます。
本記事では、Gemini CLIのインストール方法から高度な設定、MCP連携やExtensions、料金体系に至るまで、あらゆる側面を網羅的に解説します。すでにClaude CodeやCodexを使っている方も、これから初めてAIコーディングツールを導入しようとしている方も、この記事を読み終える頃にはGemini CLIの全体像を完全に把握し、即座に実務に活かせるようになるでしょう。
Gemini CLIの全体像:スペック・アーキテクチャ・対応モデル
Gemini CLIは、Googleが2025年6月に初公開し、その後継続的にアップデートを重ねてきたオープンソースのAIコーディングエージェントです。TypeScriptで実装されており、最新バージョンはv0.30.1です。GitHubリポジトリでは約95,900スターを獲得しており、オープンソースのAIコーディングツールとしては最大級のコミュニティを形成しています。
アーキテクチャ:ReActループによる自律的なタスク実行
Gemini CLIの核心にあるのは、ReAct(Reasoning + Acting)ループと呼ばれるアーキテクチャです。これは、LLM(大規模言語モデル)が「観察(Observe)」→「思考(Think)」→「行動(Act)」のサイクルを繰り返すことで、複雑なタスクを自律的に遂行するパターンです。ユーザーがプロンプトを入力すると、Gemini CLIはまずプロジェクトのコンテキストを観察し、次にどのようなアクションが必要かを推論し、最後にシェルコマンドの実行やファイルの編集といった具体的なアクションを実行します。この一連のサイクルがタスク完了まで自動的に繰り返されます。
このReActループにより、Gemini CLIは単なるコード補完ツールではなく、本格的な「AIエージェント」として機能します。たとえば、「このプロジェクトにユニットテストを追加して」という指示を出すと、Gemini CLIはプロジェクトの構造を分析し、テストフレームワークの設定を確認し、適切なテストファイルを生成し、テストを実行して結果を確認するまでの一連の作業を自律的に行います。
対応モデルと性能特性
Gemini CLIでは、Googleの最新LLMファミリーであるGeminiシリーズの複数のモデルを切り替えて利用できます。デフォルトモデルはGemini 2.5 Flashで、高速な応答性と十分な推論能力を兼ね備えています。より高度な推論が必要な場合は、Gemini 2.5 Proに切り替えることで、複雑なアーキテクチャ設計やリファクタリングにも対応できます。さらに、最新世代のGemini 3 FlashおよびGemini 3 Proも利用可能で、より高い精度と効率でコード生成・分析を行えます。
特筆すべきは、すべてのモデルが100万トークン以上のコンテキストウィンドウを持っている点です。これは、大規模なコードベース全体をコンテキストに含めることができることを意味します。Claude Codeの200Kトークンと比較すると、約5倍のコンテキスト容量を持っています。この大容量コンテキストにより、数千ファイルにおよぶプロジェクト全体の構造を理解した上で、的確なコード提案やリファクタリングが可能になります。
| 項目 | 詳細 |
|---|---|
| 正式名称 | Gemini CLI |
| 開発元 | |
| 最新バージョン | v0.30.1 |
| GitHubスター数 | 約95,900 |
| 実装言語 | TypeScript |
| ライセンス | Apache 2.0(オープンソース) |
| デフォルトモデル | Gemini 2.5 Flash |
| 対応モデル | Gemini 2.5 Flash / 2.5 Pro / 2.5 Flash-Lite / 3 Flash / 3 Pro |
| コンテキストウィンドウ | 100万〜200万トークン |
| 料金(Googleアカウント) | 無料(1日1,000リクエスト) |
| 対応OS | macOS / Linux / Windows(WSL推奨) |
| 必要環境 | Node.js v20以上 |
| アーキテクチャ | ReActループ(Observe → Think → Act) |
Gemini CLIの重要な特徴として、マルチモーダル対応があります。テキストだけでなく、画像やPDFファイルを入力として受け付けることができます。たとえば、デザインモックアップの画像を渡して「このデザインをReactコンポーネントとして実装して」と指示したり、仕様書のPDFを読み込ませて「この仕様に基づいたAPIを実装して」と指示することが可能です。これにより、従来はテキストベースの指示に限られていたAIコーディングの可能性が大きく広がります。
競合ツールとの比較も重要です。Claude Codeは高度な推論能力と正確なコード生成で知られていますが、月額100〜200ドルのMax Planが必要です。OpenAI Codexはクラウドサンドボックスでの安全な実行が特徴ですが、ChatGPT ProプランやAPIキーが必要です。一方、Gemini CLIはこれらと同等以上の機能を無料で提供しており、さらにオープンソースという透明性を備えています。詳しい比較については、Claude Code vs Codex比較記事も参照してください。
インストールと初期設定(5つの導入方法+3つの認証方式)
Gemini CLIのインストールは非常に簡単です。前提条件として、Node.js v20以上がインストールされている必要があります。Node.jsがまだインストールされていない場合は、公式サイトからLTS版をダウンロードしてインストールしてください。以下では、5つのインストール方法を順に解説します。
方法1:npm(グローバルインストール)
最も標準的なインストール方法です。グローバルにインストールすることで、どのディレクトリからでもgeminiコマンドを実行できます。
# npmでグローバルインストール
npm install -g @google/gemini-cli
# インストール確認
gemini --version
方法2:npx(インストール不要で即実行)
npxを使えば、グローバルインストールなしで即座にGemini CLIを実行できます。試しに使ってみたい場合や、常に最新版を使いたい場合に便利です。
# npxで直接実行(インストール不要)
npx @google/gemini-cli
方法3:Homebrew(macOS / Linux)
macOSやLinuxユーザーにとって馴染み深いHomebrewでもインストール可能です。Homebrewで管理することで、アップデートもbrew upgradeで簡単に行えます。
# Homebrewでインストール
brew install gemini-cli
# アップデート
brew upgrade gemini-cli
方法4:MacPorts(macOS)
# MacPortsでインストール
sudo port install gemini-cli
方法5:Anaconda環境
Python開発者がAnaconda環境内で利用する場合は、conda環境を作成してからnpmでインストールします。
# Anaconda環境での導入
conda create -n gemini-env nodejs=20
conda activate gemini-env
npm install -g @google/gemini-cli
3つの認証方法
Gemini CLIでは、用途に応じて3つの認証方法が用意されています。それぞれにクォータ(利用制限)が異なるため、自分の利用スタイルに合った方法を選択しましょう。
認証方法1:Googleアカウントログイン(推奨・無料)
最も手軽で推奨される方法です。初回起動時にブラウザが開き、Googleアカウントでの認証が求められます。認証が完了すれば、追加の設定なしで即座にGemini CLIを利用開始できます。1日1,000リクエスト、1分あたり60リクエストという潤沢な無料枠が割り当てられます。
認証方法2:APIキー
Google AI Studioで発行したAPIキーを使用する方法です。自動化スクリプトやCI/CDパイプラインでの利用に適しています。ただし、無料枠はモデルによって異なり、Googleアカウントログインと比べてクォータが制限される場合があります。
# APIキーを環境変数で設定
export GEMINI_API_KEY="your-api-key-here"
# または起動時に指定
gemini --api-key="your-api-key-here"
認証方法3:Vertex AI(Google Cloud)
企業向けのGoogle Cloudプラットフォームを通じた認証です。Vertex AIを利用することで、エンタープライズグレードのセキュリティ、SLA保証、従量課金を利用できます。大規模なチームやプロダクション環境での利用に適しています。
| 認証方法 | 無料枠 | RPM(1分あたり) | RPD(1日あたり) | 最適な用途 |
|---|---|---|---|---|
| Googleアカウントログイン | 完全無料 | 60 | 1,000 | 個人開発・日常利用 |
| APIキー(2.5 Pro) | 無料枠あり | 5 | 100 | 自動化・CI/CD |
| APIキー(2.5 Flash) | 無料枠あり | 10 | 250 | 高頻度バッチ処理 |
| APIキー(2.5 Flash-Lite) | 無料枠あり | 15 | 1,000 | 軽量タスク大量処理 |
| Vertex AI | なし(従量課金) | カスタム | カスタム | 企業・プロダクション |
基本操作:起動オプション・スラッシュコマンド完全リファレンス
Gemini CLIは、豊富な起動オプションとインタラクティブなスラッシュコマンドを備えています。これらを適切に使いこなすことで、開発効率を大幅に向上させることができます。まずは基本的な起動方法から見ていきましょう。
起動オプション一覧
Gemini CLIの起動時には、さまざまなオプションを指定できます。特に重要なのは、-p(プロンプト直接指定)、-m(モデル指定)、--yolo(全自動モード)、--sandbox(サンドボックス有効化)の4つです。
# 基本起動
gemini
# プロンプトを直接指定(非インタラクティブ)
gemini -p "このプロジェクトのREADMEを日本語で作成して"
# モデルを指定して起動
gemini -m gemini-2.5-pro
# 全自動モード(確認なしで実行)
gemini --yolo
# サンドボックス内で実行
gemini --sandbox
# 前回のセッションを復元
gemini --resume
# 特定ディレクトリを含めて起動
gemini -I ./src -I ./tests
# デバッグモードで起動
gemini --debug
# 出力フォーマットを指定
gemini -p "Hello" --output-format json
# 承認モードの指定
gemini --approval-mode auto
# 使用可能ツールの制限
gemini --allowed-tools "shell,file_operations"
スラッシュコマンド完全リファレンス
Gemini CLIのインタラクティブセッション中には、/で始まるスラッシュコマンドを使ってさまざまな操作を行えます。これらのコマンドは、セッション管理、メモリ操作、モデル切り替え、ツール管理、ユーティリティの5つのカテゴリに分類されます。
| カテゴリ | コマンド | 説明 |
|---|---|---|
| セッション管理 | /clear |
現在のセッションのコンテキストをクリア |
/compress |
コンテキストを要約して圧縮(トークン節約) | |
/chat save |
現在のチャットセッションを保存 | |
/chat resume |
保存したチャットセッションを復元 | |
/chat list |
保存済みチャットセッション一覧を表示 | |
/restore |
直前のセッション状態に復元 | |
| メモリ | /memory show |
現在のメモリ設定を表示 |
/memory add |
メモリにルールや情報を追加 | |
/memory refresh |
メモリを最新状態にリフレッシュ | |
/init |
プロジェクトのGEMINI.mdを初期化・生成 | |
| モデル | /model |
現在使用中のモデルを表示 |
/model list |
利用可能なモデル一覧を表示 | |
/stats |
トークン使用量・コスト統計を表示 | |
| ツール&拡張 | /tools |
利用可能なツール一覧を表示 |
/mcp list |
接続中のMCPサーバー一覧を表示 | |
/extensions list |
インストール済みExtension一覧を表示 | |
/commands reload |
カスタムコマンドを再読み込み | |
| ユーティリティ | /help |
ヘルプ情報を表示 |
/settings |
設定画面を表示 | |
/copy |
直前の応答をクリップボードにコピー | |
/bug |
バグレポートを作成 | |
/branch |
現在のGitブランチ情報を表示 |
特殊入力プレフィックス
Gemini CLIでは、通常のテキスト入力に加えて、2つの特殊なプレフィックスを使用できます。これらを活用することで、ファイルの内容をコンテキストに含めたり、シェルコマンドを素早く実行したりできます。
@プレフィックス(ファイルインクルード):@に続けてファイルパスを指定すると、そのファイルの内容がコンテキストに追加されます。たとえば、@src/index.ts このファイルのバグを修正してと入力すると、index.tsの内容を読み込んだ上でバグ修正の提案を行います。複数ファイルを同時に指定することも可能です。
!プレフィックス(シェルコマンド実行):!に続けてシェルコマンドを入力すると、そのコマンドを即座に実行し、結果をコンテキストに含めます。たとえば、!git log --oneline -10と入力すると、直近10件のコミットログを表示します。デバッグ情報の確認やプロジェクト状態の把握に便利です。
上の図は、Gemini CLIのコマンド体系を視覚的にまとめたものです。セッション管理、メモリ、ツール&拡張、ユーティリティ、モデルの5つのカテゴリに整理されており、それぞれのコマンドが直感的に把握できます。日常的な開発では、/compressでコンテキストを節約し、/statsでトークン消費量を確認し、/modelでタスクに応じたモデルを切り替えるという3つの操作を覚えておくだけでも、格段に効率的な作業が可能になります。
GEMINI.md ─ プロジェクトメモリの3階層構造
Gemini CLIの強力な機能のひとつが、GEMINI.mdによるプロジェクトメモリシステムです。GEMINI.mdは、プロジェクトのコーディング規約、アーキテクチャ方針、特有のルールなどをMarkdown形式で記述するファイルで、Gemini CLIはこのファイルの内容を自動的にコンテキストに含めて推論を行います。Claude CodeにおけるCLAUDE.mdに相当する機能ですが、Gemini CLIではより柔軟な3階層構造を採用しています。
3階層構造の仕組み
GEMINI.mdは、以下の3つの階層で構成されています。上位の階層ほど広い範囲に適用され、下位の階層ほどプロジェクトやディレクトリ固有の設定を記述します。複数の階層にGEMINI.mdが存在する場合は、すべてがマージされてコンテキストに含まれます。
第1階層:Global GEMINI.md(~/.gemini/GEMINI.md)
ホームディレクトリに配置するグローバル設定です。すべてのプロジェクトに共通して適用されるルールを記述します。たとえば、個人的なコーディングスタイルの好み、使用する言語の設定、一般的なベストプラクティスなどを記述します。
第2階層:Project GEMINI.md(.gemini/GEMINI.md)
プロジェクトルートの.geminiディレクトリに配置するプロジェクト固有の設定です。そのプロジェクトのアーキテクチャ方針、使用するフレームワーク、コーディング規約、テスト方針などを記述します。チームメンバーと共有するために、Gitリポジトリにコミットすることが推奨されます。
第3階層:JIT GEMINI.md(サブディレクトリ内のGEMINI.md)
プロジェクト内の各サブディレクトリに配置するJust-In-Time(JIT)設定です。特定のディレクトリ内で作業しているときだけ適用されるルールを記述します。たとえば、src/api/ディレクトリにGEMINI.mdを配置して、API層固有の実装ルールを定義できます。
# .gemini/GEMINI.md の記述例
## プロジェクト概要
このプロジェクトはNext.js 15 + TypeScriptで構築されたWebアプリケーションです。
## コーディング規約
- TypeScript strict modeを使用
- any型の使用は禁止
- すべてのexport関数にJSDocコメントを付与
- コンポーネントはfunction宣言で定義(アロー関数禁止)
## アーキテクチャ
- Server Componentsをデフォルトで使用
- Client Componentsは最小限に("use client"を明示)
- APIルートはRoute Handlers(app/api/)を使用
- データベースアクセスはPrisma経由のみ
## テスト方針
- ユニットテストはVitest
- E2EテストはPlaywright
- テストカバレッジ80%以上を維持
## 禁止事項
- console.logのコミット禁止(debugger文も同様)
- インラインスタイルの使用禁止(Tailwind CSSを使用)
- default exportの使用禁止(named exportのみ)
@docs/api-reference.md
@docs/database-schema.md
@fileインポート構文
GEMINI.md内では、@file.mdのようなインポート構文を使って、外部ファイルの内容を取り込むことができます。これにより、GEMINI.md本体を簡潔に保ちつつ、詳細なドキュメントや仕様書を参照させることが可能です。上記の例では、@docs/api-reference.mdと@docs/database-schema.mdがインポートされており、これらのファイルの内容もコンテキストに含まれます。
/memoryコマンドと/initコマンド
/memoryコマンドは、セッション中にGEMINI.mdの内容を確認・追加・更新するためのコマンドです。/memory showで現在読み込まれているメモリの内容を確認し、/memory addで新しいルールを追加し、/memory refreshでGEMINI.mdファイルを再読み込みできます。
/initコマンドは、新しいプロジェクトでGEMINI.mdの初期テンプレートを自動生成する便利な機能です。プロジェクトの構造を分析し、適切な初期設定を提案してくれます。プロジェクト開始時には、まず/initを実行してGEMINI.mdの雛形を生成し、それをカスタマイズしていくワークフローが推奨されます。
| 比較項目 | GEMINI.md(Gemini CLI) | CLAUDE.md(Claude Code) |
|---|---|---|
| 階層構造 | 3階層(Global / Project / JIT) | 3階層(User / Project / Directory) |
| ファイル配置 | ~/.gemini/GEMINI.md, .gemini/GEMINI.md |
~/.claude/CLAUDE.md, CLAUDE.md |
| 外部ファイル参照 | @file.md インポート構文 |
標準ではなし |
| 自動生成 | /initコマンド |
手動作成 |
| セッション内操作 | /memoryコマンド群 |
/memoryコマンド |
| Git管理 | .gemini/ディレクトリごと |
プロジェクトルートのCLAUDE.md |
| フォーマット | Markdown | Markdown |
GEMINI.mdは、プロジェクトの「知識ベース」としてチーム全体で共有できる点が大きな利点です。新しくチームに加わった開発者も、GEMINI.mdを読むことでプロジェクトの規約やアーキテクチャ方針を即座に把握できます。また、Gemini CLIがこのファイルを自動的に読み込むため、AIとのコミュニケーションにおいて毎回同じ指示を繰り返す必要がなくなります。Claude Codeの上級テクニックについては、Claude Code上級テクニックガイドでも詳しく解説しています。
サンドボックス ─ 安全なコード実行環境の構築
AIコーディングエージェントに自律的なコード実行を許可する場合、セキュリティは最も重要な懸念事項です。意図しないファイル削除、システム設定の変更、機密情報の漏洩など、さまざまなリスクが考えられます。Gemini CLIは、この課題に対して3種類のサンドボックス機構を提供しています。
3種類のサンドボックス
1. Seatbelt(macOS専用)
macOSのネイティブサンドボックス機能であるSeatbeltを活用した軽量なサンドボックスです。コンテナを使用しないため、起動が高速で、システムリソースの消費も最小限に抑えられます。Seatbeltでは6つのプロファイルが用意されており、セキュリティレベルと利便性のバランスを細かく調整できます。
2. Docker
Dockerコンテナ内でコマンドを実行するサンドボックスです。ホストシステムから完全に分離された環境でコードを実行できるため、最も高いレベルのセキュリティを提供します。Docker Desktopがインストールされている環境で利用可能です。
3. Podman
Dockerの代替として、Podmanを使用したサンドボックスも利用可能です。Podmanはデーモンレスのコンテナエンジンであり、root権限なしでコンテナを実行できる点が特徴です。セキュリティポリシーでDockerの使用が制限されている環境に適しています。
# サンドボックスの有効化方法
# コマンドラインオプションで有効化
gemini --sandbox
gemini -s
# 環境変数で有効化
export GEMINI_SANDBOX=true
gemini
# settings.jsonで恒久的に有効化
# ~/.gemini/settings.json
{
"sandbox": {
"enabled": true,
"type": "seatbelt",
"profile": "restrictive-open"
}
}
# --yoloモード使用時は自動的にサンドボックスが有効化
gemini --yolo
| サンドボックス方式 | 対応OS | 分離レベル | 起動速度 | リソース消費 | 特徴 |
|---|---|---|---|---|---|
| Seatbelt | macOSのみ | 中〜高 | 高速 | 低 | 6プロファイル、ネイティブ統合 |
| Docker | 全OS | 高 | 中速 | 中 | 完全分離、広い互換性 |
| Podman | 全OS | 高 | 中速 | 中 | デーモンレス、root不要 |
Seatbeltの6つのプロファイル
Seatbeltサンドボックスでは、6つのプロファイルが用意されています。プロファイル名は「制限レベル」と「ネットワークアクセス」の2つの軸で構成されています。permissive(寛容)、restrictive(制限的)、strict(厳格)の3段階の制限レベルと、open(ネットワーク許可)、proxied(プロキシ経由のみ)の2つのネットワーク設定の組み合わせです。
デフォルトプロファイルはpermissive-openで、プロジェクトディレクトリ内のファイル操作とネットワークアクセスを許可しつつ、システムファイルへのアクセスを制限します。本番環境やセキュリティ要件が厳しいプロジェクトでは、strict-proxiedプロファイルを使用することで、ファイルアクセスとネットワークアクセスの両方を最小限に制限できます。
競合ツールとのセキュリティ比較
AIコーディングツールのセキュリティアプローチは、ツールによって大きく異なります。Gemini CLIは柔軟なサンドボックスオプションを提供し、ユーザーがセキュリティレベルを細かく制御できます。Claude Codeは権限ベースの承認システム(ツール呼び出し前の確認プロンプト)を採用しており、ユーザーがアクション単位で承認・拒否を行います。OpenAI Codexはクラウド上のサンドボックスで実行されるため、ローカル環境への影響を完全に排除しています。いずれのアプローチにもメリット・デメリットがあり、プロジェクトの要件に応じて最適なツールを選択することが重要です。
MCP連携 ─ 外部ツールとの統合アーキテクチャ
MCP(Model Context Protocol)は、AIコーディングエージェントが外部ツールやサービスと連携するための標準プロトコルです。Anthropicが提唱し、現在では業界標準として広く採用されています。Gemini CLIはMCPクライアントを内蔵しており、MCPサーバーを設定するだけで、GitHub、データベース、ファイルシステム、Webスクレイピングなど、さまざまな外部ツールとシームレスに連携できます。
MCP設定の基本
MCPサーバーの設定は、settings.jsonファイルに記述します。設定ファイルは~/.gemini/settings.json(グローバル設定)または.gemini/settings.json(プロジェクト固有設定)に配置します。MCPサーバーは、stdio(標準入出力)、SSE(Server-Sent Events)、HTTP Streamableの3つのトランスポート方式をサポートしています。
// ~/.gemini/settings.json - MCP設定例
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]
},
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}
上記の設定例では、GitHub MCP Server、Filesystem Server、PostgreSQL Serverの3つを同時に接続しています。Gemini CLIは起動時にこれらのMCPサーバーを自動的に起動し、利用可能なツールとしてエージェントに公開します。これにより、「GitHubのissue一覧を取得して」「データベースのスキーマを確認して」といった指示を自然言語で行えるようになります。
GitHub MCP Serverの実践的な設定
開発者にとって最も実用的なMCPサーバーのひとつが、GitHub MCP Serverです。このサーバーを接続することで、Gemini CLI内からGitHubのPull Request作成、Issue管理、コードレビュー、リポジトリ検索などを行えるようになります。
// GitHub MCP Server の詳細設定
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
},
"tools": {
"include": [
"create_pull_request",
"list_issues",
"get_file_contents",
"search_repositories"
]
}
}
}
}
OAuth認証サポート
Gemini CLIのMCP実装は、OAuth認証にも対応しています。これにより、APIキーをハードコードすることなく、安全にサードパーティサービスと連携できます。サポートされるOAuth方式には、dynamic_discovery(自動検出)、google_credentials(Google認証情報)、service_account_impersonation(サービスアカウント偽装)の3種類があります。エンタープライズ環境では、サービスアカウント偽装を使用することで、個人の認証情報を使わずにチーム共有のMCPサーバーにアクセスできます。
環境変数のサニタイズ
セキュリティ上の重要な機能として、Gemini CLIはMCPサーバーに渡す環境変数のサニタイズを行います。MCPサーバーのプロセスには、明示的に指定された環境変数のみが渡され、ホストシステムの環境変数(APIキー、データベース接続文字列など)が意図せずMCPサーバーに漏洩することを防ぎます。この仕組みにより、信頼性の低いサードパーティ製MCPサーバーを使用する場合でも、ホストシステムの機密情報が保護されます。
MCPは、AIコーディングエージェントの能力を飛躍的に拡張するための鍵となるテクノロジーです。Gemini CLIのMCPサポートは、Claude Codeと同等の機能を持ちながら、環境変数サニタイズやツールフィルタリングなど、セキュリティ面でも充実した機能を備えています。MCPの実践的な活用方法については、Claude Code MCP実践ガイドでも詳しく解説していますので、合わせてご確認ください。
Extensions ─ 拡張機能エコシステムの活用
Gemini CLIのExtensions(拡張機能)システムは、コアの機能を超えてGemini CLIの能力を拡張するための仕組みです。MCPがプロトコルレベルの外部ツール連携を提供するのに対して、Extensionsはより高レベルな機能追加を実現します。Extensions Marketplaceがgeminicli.com/extensionsで公開されており、コミュニティが開発した豊富な拡張機能をワンクリックでインストールできます。
Extensions Marketplace
Extensions Marketplaceは、Gemini CLIの拡張機能を集約したプラットフォームです。コード品質チェック、ドキュメント自動生成、テスト生成、デプロイメント支援など、さまざまなカテゴリの拡張機能が公開されています。各Extensionは審査プロセスを経て公開されるため、品質とセキュリティが一定水準で保証されています。
Extensionマニフェスト
独自のExtensionを開発する場合は、gemini-extension.jsonマニフェストファイルを作成します。このファイルには、Extensionの名前、バージョン、説明、提供するツール、必要な権限などを記述します。
// gemini-extension.json マニフェスト例
{
"name": "code-reviewer",
"version": "1.0.0",
"description": "AIパワードのコードレビューツール",
"author": "your-name",
"license": "MIT",
"main": "index.js",
"tools": [
{
"name": "review_code",
"description": "指定されたファイルまたはdiffに対してコードレビューを実行",
"parameters": {
"type": "object",
"properties": {
"target": {
"type": "string",
"description": "レビュー対象のファイルパスまたはgit diff"
},
"severity": {
"type": "string",
"enum": ["info", "warning", "error"],
"description": "報告する最低重大度レベル"
}
},
"required": ["target"]
}
}
],
"permissions": ["file_read", "shell_execute"],
"skills": ["code-review", "quality-check"]
}
カスタムコマンド(TOMLフォーマット)
Extensionとは別に、カスタムコマンド機能も用意されています。カスタムコマンドは.gemini/commands/ディレクトリにTOMLフォーマットで定義し、Gemini CLI内でスラッシュコマンドとして呼び出せる独自のコマンドを作成できます。プロジェクト固有のワークフローを自動化するのに最適です。
# .gemini/commands/deploy.toml
[command]
name = "deploy"
description = "ステージング環境にデプロイする"
[command.steps]
1 = "npm run build"
2 = "npm run test"
3 = "npm run deploy:staging"
[command.options]
confirm = true
sandbox = true
Agent SkillsとConductor Extension
Agent Skillsは、.gemini/skills/ディレクトリに配置する特殊なExtensionで、特定のコンテキストや条件に応じて自動的にアクティベートされます。たとえば、Dockerfileの編集時にDocker関連のベストプラクティスを自動的にロードしたり、テストファイルの作成時にテスティングフレームワークの規約を自動的に適用したりできます。
Conductor Extensionは、複数のExtensionを連携させて複雑なワークフローを構築するためのメタExtensionです。たとえば、「コード変更 → レビュー → テスト → デプロイ」という一連のワークフローを、Conductor Extensionで自動化できます。これは、Claude CodeのAgent Teamsに相当する機能と言えます。
| 構成要素 | 配置場所 | フォーマット | 用途 |
|---|---|---|---|
| Extension | Marketplace / ローカル | gemini-extension.json | 高レベル機能追加 |
| カスタムコマンド | .gemini/commands/ |
TOML | プロジェクト固有ワークフロー |
| Agent Skills | .gemini/skills/ |
JSON / Markdown | コンテキスト依存の自動機能 |
| Conductor | Extension内 | gemini-extension.json | 複数Extension連携 |
| MCPサーバー | settings.json | JSON | プロトコルレベル外部ツール連携 |
Hooks ─ ライフサイクルイベント駆動のカスタマイズ
Gemini CLIのHooks機能は、エージェントのライフサイクルの各段階でカスタムスクリプトを実行するための仕組みです。Gitのフック(pre-commit、post-commitなど)に着想を得た設計で、エージェントの動作を細かくカスタマイズできます。たとえば、ツール実行前にセキュリティチェックを行ったり、セッション終了時にログを保存したり、モデル呼び出し後に出力をフィルタリングしたりすることが可能です。
ライフサイクルイベント一覧
Gemini CLIでは、11以上のライフサイクルイベントが定義されています。各イベントに対して、シェルスクリプトやNode.jsスクリプトを関連付けることができます。
| イベント名 | 発火タイミング | 主な用途 |
|---|---|---|
OnStartup |
Gemini CLI起動時 | 環境チェック、初期設定ロード |
OnExit |
Gemini CLI終了時 | ログ保存、クリーンアップ |
SessionStart |
新規セッション開始時 | セッションログ初期化 |
SessionEnd |
セッション終了時 | セッションサマリー生成 |
BeforeAgent |
エージェントループ開始前 | 入力バリデーション |
AfterAgent |
エージェントループ完了後 | 結果の後処理 |
BeforeTool |
ツール実行前 | セキュリティチェック、ログ記録 |
AfterTool |
ツール実行後 | 結果検証、通知送信 |
BeforeModel |
モデルAPI呼び出し前 | プロンプト加工、キャッシュチェック |
AfterModel |
モデルAPI呼び出し後 | 出力フィルタリング、ログ記録 |
BeforeToolSelection |
ツール選択前 | ツール使用制限 |
Notification |
通知発生時 | 外部通知連携(Slack等) |
PreCompress |
コンテキスト圧縮前 | 重要情報の保護 |
Hooks設定の実例
// .gemini/settings.json - Hooks設定例
{
"hooks": {
"BeforeTool": [
{
"command": "bash",
"args": [".gemini/hooks/security-check.sh"],
"description": "ツール実行前のセキュリティチェック"
}
],
"AfterAgent": [
{
"command": "node",
"args": [".gemini/hooks/log-session.js"],
"description": "セッション結果のログ記録"
}
],
"Notification": [
{
"command": "bash",
"args": [".gemini/hooks/notify-slack.sh"],
"description": "Slackへの通知送信"
}
]
}
}
終了コードのセマンティクス
Hooksスクリプトの終了コードには特別な意味が定義されています。この仕組みにより、Hooksはエージェントの動作を制御するゲートキーパーとして機能できます。
| 終了コード | 意味 | エージェントの動作 |
|---|---|---|
0 |
許可(Allow) | 処理を続行する |
1 |
エラー(Error) | エラーログを記録して続行する |
2 |
ブロック(Block) | 操作をブロックし、エージェントに通知する |
たとえば、BeforeToolフックで終了コード2を返すと、そのツールの実行がブロックされ、エージェントは別のアプローチを検討します。これは、本番データベースへの書き込みを防止したり、特定のディレクトリへのファイル操作を制限したりするのに有用です。Claude CodeのHooksシステムとも類似した設計思想を持っていますが、Gemini CLIの方がイベントの種類が豊富で、より細かい粒度での制御が可能です。
料金・プラン完全比較 ─ 無料枠からAPI課金まで
Gemini CLIの最大の魅力のひとつは、その圧倒的なコストパフォーマンスです。Googleアカウントログインによる無料利用から、APIキーを使った従量課金、さらにはVertex AIによるエンタープライズ利用まで、幅広い価格帯で利用できます。ここでは、認証方法別のクォータ比較と、各モデルのAPI料金を詳しく解説します。
認証方法別クォータ比較
Gemini CLIの利用料金は、認証方法とモデルの組み合わせによって決まります。最もコストパフォーマンスが高いのは、Googleアカウントログインによる無料利用です。1日1,000リクエスト、1分あたり60リクエストという制限は、個人開発者の日常的な使用には十分すぎる容量です。たとえば、1回のリクエストで1つのファイル修正を行うとすると、1日に1,000ファイルの修正が可能ということになります。実際にはこれほどの回数を使うことは稀でしょう。
| 認証方法 | モデル | RPM | RPD | 月額コスト |
|---|---|---|---|---|
| Googleアカウント | 全モデル共通 | 60 | 1,000 | 無料 |
| APIキー無料枠 | Gemini 2.5 Pro | 5 | 100 | 無料 |
| APIキー無料枠 | Gemini 2.5 Flash | 10 | 250 | 無料 |
| APIキー無料枠 | Gemini 2.5 Flash-Lite | 15 | 1,000 | 無料 |
| APIキー従量課金 | 全モデル | カスタム | カスタム | 使用量に応じて |
| Vertex AI | 全モデル | カスタム | カスタム | 使用量に応じて |
モデル別API料金表
APIキーの従量課金を利用する場合の料金は、モデルと入出力トークン数によって決まります。以下の表は、100万トークンあたりの料金を示しています。Batch APIを利用すると、すべてのモデルで50%の割引が適用されます。
| モデル | 入力(≤200K) | 出力(≤200K) | 入力(>200K) | 出力(>200K) |
|---|---|---|---|---|
| Gemini 2.5 Flash | $0.15 | $0.60 | $0.30 | $1.20 |
| Gemini 2.5 Flash-Lite | $0.075 | $0.30 | – | – |
| Gemini 2.5 Pro | $1.25 | $10.00 | $2.50 | $15.00 |
| Gemini 3 Flash | $0.50 | $3.00 | – | – |
| Gemini 3 Pro | $2.00 | $12.00 | $4.00 | $18.00 |
コスト最適化のテクニック
API従量課金を利用する場合、いくつかのテクニックでコストを最適化できます。まず、日常的なコーディング作業にはGemini 2.5 Flash(入力$0.15/1Mトークン)を使用し、アーキテクチャ設計や複雑なリファクタリングなど、高度な推論が必要な場面でのみGemini 2.5 Pro(入力$1.25/1Mトークン)に切り替えるという戦略が効果的です。モデルの切り替えは/model gemini-2.5-proコマンドで即座に行えます。
次に、/compressコマンドを定期的に実行してコンテキストを圧縮することで、不要なトークン消費を削減できます。特に長時間のセッションでは、コンテキストが肥大化しやすいため、/statsでトークン使用量を確認しながら、適切なタイミングで圧縮を行うことが推奨されます。
さらに、Batch APIを利用すると、すべてのモデルで50%の料金割引が適用されます。リアルタイム応答が不要なバッチ処理(大量のコードレビュー、テスト生成など)では、Batch APIの活用がコスト面で大きなメリットをもたらします。Gemini CLIの料金体系の詳細やClaude Codeとの比較については、Claude Code vs Codex比較記事でも取り上げていますので、合わせてご確認ください。
実践Tips&トラブルシューティング
Gemini CLIを日常的に使いこなすためのベストプラクティスと、よくあるトラブルの解決方法をまとめました。これらのTipsを実践することで、Gemini CLIの生産性を最大限に引き出せます。
ベストプラクティス
1. クォータ管理を習慣化する:Googleアカウントログインでは1日1,000リクエストが上限です。/statsコマンドで現在のトークン使用量とリクエスト数を確認し、残りのクォータを把握しておきましょう。特に複雑なタスクでは、1回のやり取りで複数のリクエストが消費されることがあります。
2. /compressでコンテキストを節約する:長時間のセッションでは、コンテキストウィンドウが徐々に埋まっていきます。定期的に/compressを実行することで、過去のやり取りを要約してコンテキストを圧縮し、新たな作業に十分な容量を確保できます。100万トークンという大容量のコンテキストウィンドウを持つGemini CLIでも、大規模プロジェクトでは圧縮が有効です。
3. プロジェクト開始時に/initを実行する:新しいプロジェクトで作業を始める際は、まず/initコマンドを実行してGEMINI.mdの雛形を生成しましょう。これにより、AIがプロジェクトの構造やコーディング規約を理解した上で作業を開始できます。
4. モデルの使い分け:すべてのタスクにGemini 2.5 Proを使う必要はありません。日常的なコーディング、バグ修正、コードレビューにはGemini 2.5 Flashで十分です。アーキテクチャ設計、複雑なアルゴリズム実装、大規模リファクタリングなど、高度な推論が求められるタスクでのみ、Proモデルに切り替えましょう。Gemini 3 FlashやGemini 3 Proは、最新の精度向上が必要なケースで活用できます。
5. サンドボックスを常に有効化する:特に--yoloモードで全自動実行を行う場合は、必ずサンドボックスを有効化してください。意図しないファイル削除やシステム変更からプロジェクトを保護できます。
よくあるエラーと解決方法
エラー1:「Node.js version not supported」
Gemini CLIはNode.js v20以上を必要とします。node --versionでバージョンを確認し、古い場合はnvmやvoltaなどのバージョン管理ツールでアップグレードしてください。
エラー2:「Rate limit exceeded」
1分あたりまたは1日あたりのリクエスト上限に達した場合に発生します。Googleアカウントログインの場合は60 RPM / 1,000 RPDが上限です。しばらく待ってからリトライするか、APIキーの有料プランに切り替えることで解決できます。
エラー3:「Authentication failed」
Googleアカウントの認証が失敗した場合に発生します。gemini --logoutで既存の認証情報をクリアし、再度ログインし直してください。ネットワーク接続も確認してください。
エラー4:「MCP server connection failed」
MCPサーバーへの接続に失敗した場合に発生します。settings.jsonのMCPサーバー設定を確認し、指定されたコマンドやパスが正しいことを確認してください。/mcp listで接続状態を確認できます。
エラー5:「Context window exceeded」
コンテキストウィンドウが上限に達した場合に発生します。/compressでコンテキストを圧縮するか、/clearでセッションをリセットしてください。
上図は、Gemini CLIの推奨セットアップフローを示しています。プロジェクト開始 → GEMINI.md設定 → サンドボックス有効化 → MCP連携設定 → Extensions導入の順に設定することで、安全かつ効率的な開発環境を構築できます。Ollamaを使った無料のローカルAI開発環境に興味がある方は、Claude Code無料Ollamaガイドも参考にしてください。
📖 この記事をNotebookLMに読み込ませてみた
本記事をGoogle NotebookLMのソースとして読み込ませたところ、19分のAIポッドキャスト、AI動画解説、57枚のフラッシュカード、マインドマップが自動生成されました。NotebookLMの詳しい使い方はNotebookLM完全ガイドをご覧ください。
まとめ&よくある質問(FAQ)
本記事では、Google Gemini CLIのあらゆる側面を網羅的に解説してきました。最後に、重要なポイントを5つのキーテイクアウェイとしてまとめ、よくある質問にお答えします。
5つのキーテイクアウェイ
1. 完全無料で始められる:Gemini CLIは、Googleアカウントさえあれば完全無料で利用できます。1日1,000リクエスト、1分あたり60リクエストという潤沢な無料枠は、個人開発者の日常的な使用に十分な容量です。Claude Code(月額$100-200)やCodex(月額$20-200)と比較して、コストゼロでプロフェッショナルなAIコーディング支援を受けられる唯一のツールです。
2. 100万トークンの圧倒的コンテキスト:すべてのGeminiモデルが100万トークン以上のコンテキストウィンドウを持っており、大規模なコードベース全体を理解した上で的確なコード提案を行えます。これは競合ツールの約5倍の容量であり、大規模プロジェクトでの利用において大きなアドバンテージとなります。
3. オープンソースの透明性:Apache 2.0ライセンスで公開されており、コードの透明性が確保されています。GitHubで約95,900スターを獲得するコミュニティの大きさも、ツールの信頼性を裏付けています。企業環境でも安心して導入できます。
4. 拡張性の高いアーキテクチャ:MCP連携、Extensions、Hooks、カスタムコマンドなど、多層的な拡張メカニズムを備えています。標準機能だけでなく、プロジェクト固有のワークフローに合わせた柔軟なカスタマイズが可能です。
5. 堅牢なセキュリティ:Seatbelt、Docker、Podmanの3種類のサンドボックス、環境変数サニタイズ、Hooksによるアクション制御など、多層的なセキュリティ機能を備えています。--yoloモードでの全自動実行時も、サンドボックスが自動的に有効化されるため安全です。
よくある質問(FAQ)
Q1. Gemini CLIは本当に無料で使えますか?
はい、Googleアカウントでログインするだけで完全に無料で利用できます。1日あたり1,000リクエスト、1分あたり60リクエストが上限ですが、個人開発者の日常的な使用には十分な容量です。追加の支払い情報やクレジットカードの登録は一切不要です。APIキーを使った従量課金やVertex AIによるエンタープライズ利用も可能ですが、これらはオプションです。
Q2. Claude CodeやOpenAI Codexとの違いは何ですか?
最大の違いは料金体系です。Gemini CLIは無料で利用できるのに対し、Claude CodeはMax Plan(月額$100-200)、CodexはChatGPT Plus/Pro(月額$20-200)が必要です。技術的な違いとしては、Gemini CLIは100万トークンのコンテキストウィンドウを持つのに対し、Claude Codeは200Kトークンです。また、Gemini CLIはオープンソース(Apache 2.0)であり、コードの透明性が確保されています。各ツールにはそれぞれの強みがあり、推論精度ではClaude Codeが優れる場面もありますが、コスト面ではGemini CLIが圧倒的に有利です。
Q3. オフラインで使えますか?
いいえ、Gemini CLIはクラウド上のGemini APIに接続して動作するため、インターネット接続が必須です。ローカルにモデルを保持する機能はありませんが、APIキーを使った認証方式であれば、VPN環境やプロキシ経由でも利用可能です。完全なオフライン環境でAIコーディング支援を利用したい場合は、OllamaなどのローカルLLMの使用を検討してください。
Q4. 日本語対応はどうですか?
GeminiモデルはMultilingual(多言語)対応であり、日本語での指示やコメント生成に問題なく対応しています。日本語でプロンプトを入力すれば、日本語で応答が返されます。GEMINI.mdも日本語で記述可能です。ただし、CLIインターフェース自体(コマンドやオプション名)は英語です。日本語のコードコメント生成、ドキュメント作成、エラーメッセージの説明など、日本語の開発ワークフロー全般をカバーしています。
Q5. チームで共有して使えますか?
はい、チームでの利用に適した設計になっています。GEMINI.mdをGitリポジトリにコミットすることで、チーム全体でプロジェクトのコーディング規約やアーキテクチャ方針を共有できます。各メンバーが自分のGoogleアカウントでログインすれば、それぞれが1日1,000リクエストの無料枠を利用できます。Vertex AIを使用すれば、組織単位でのアクセス制御やクォータ管理も可能です。MCPサーバーの設定もチームで共有でき、統一された開発環境を構築できます。
Q6. セキュリティは大丈夫ですか?
Gemini CLIは複数層のセキュリティ機能を備えています。Seatbelt、Docker、Podmanの3種類のサンドボックスにより、AIが実行するコマンドの影響範囲を制限できます。環境変数のサニタイズ機能により、MCPサーバーに機密情報が漏洩することを防ぎます。Hooksによるアクション制御では、特定の操作をブロックするルールを定義できます。また、Apache 2.0ライセンスのオープンソースであるため、コードの透明性が確保されており、セキュリティ監査も容易です。企業環境でも安心して導入できるレベルのセキュリティが実現されています。