1. はじめに
この Codelab では、Gemini の威力をターミナルに直接取り込むオープンソースの AI エージェントである Gemini CLI について学習します。
Gemini CLI プロジェクトはオープンソースです。公開ロードマップはこちらでご覧いただけます。
学習内容
- Gemini CLI をインストールして構成する
- Gemini CLI でのツールの探索、組み込みコマンド、MCP サーバーの構成
GEMINI.md
ファイルを使用して Gemini CLI をカスタマイズする- Gemini CLI を使用したユースケースの例
必要なもの
この Codelab は、Gemini CLI がプリインストールされている Google Cloud Shell 内で完全に実行できます。
また、自分のマシンで作業する場合は、Gemini CLI をローカルにインストールするセクションがあります。
必要なものは次のとおりです。
- Chrome ウェブブラウザ
- Gmail アカウント
この Codelab は、あらゆるレベルのユーザーとデベロッパー(初心者を含む)を対象としています。この Codelab のユースケースは、デベロッパー タスクとデベロッパー以外のタスクに分類されています。デベロッパーのユースケースでは、Gemini CLI でコードを操作する方法と、Github リポジトリを使用して、コードの説明/理解、ドキュメントの生成、問題の修正などの一般的な開発タスクを実行する方法を示します。この Codelab では、これらのユースケースを完了することをおすすめします。最後に、デベロッパー以外のユーザーを対象とした日常的なタスクをいくつか紹介する省略可能なセクションがあります。
2. 始める前に
プロジェクトを作成する
- Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
- Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
- Cloud Shell(Google Cloud で動作するコマンドライン環境)を使用します。この環境には bq がプリロードされています。Google Cloud コンソールの上部にある [Cloud Shell をアクティブにする] をクリックします。
- Cloud Shell に接続したら、次のコマンドを使用して、すでに認証が完了しており、プロジェクトがプロジェクト ID に設定されていることを確認します。
gcloud auth list
- Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
- プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
gcloud config set project <YOUR_PROJECT_ID>
3. インストール
設定を行って Gemini CLI を実行する前に、作成するすべてのプロジェクトのホーム フォルダとして使用するフォルダを作成しましょう。これは、Gemini CLI が動作するための出発点です。必要に応じて、システム上の他のフォルダも参照します。
サンプル フォルダ(gemini-cli-projects
)を作成し、次のコマンドを使用してそのフォルダに移動します。別のフォルダ名を使用する場合は、そのようにしてください。
mkdir gemini-cli-projects
そのフォルダに移動します。
cd gemini-cli-projects
gemini コマンドを使用して、Gemini CLI を直接起動できます。
次のセクション(settings.json を使用した Gemini CLI の構成)に直接移動してください。
Gemini CLI をローカルにインストールする場合は、以下の手順に沿って操作します。
まず、マシンに Node 20 以降をインストールします。完了したら、次のいずれかの方法で Gemini CLI をインストールして実行できます。
- まず、システムに Gemini CLI をグローバルにインストールできます。この手順を行うには、管理者権限が必要になることがあります。
# option 1: install Gemini CLI
npm install -g @google/gemini-cli
# .. and then run
gemini
- 次のコマンドで実行します。
# option 2: run without installing Gemini CLI
npx https://github.com/google-gemini/gemini-cli
CLI がインストールされていることを確認するには、次のコマンドを実行します。
gemini --version
上記の方法で Gemini CLI を起動すると、テーマの選択を求める次の画面が表示されます。お好みのものを選択してください。
選択すると、認証方法の入力を求められます。このラボでは、Google 以外の関連アカウントや Google Workspace 関連アカウントではなく、個人の Google アカウントを使用することをおすすめします。この無償ライセンスがあれば、Gemini 2.5 Pro および 100 万トークンのコンテキスト ウィンドウを利用できます。無料枠では、1 分あたり 60 件のモデル リクエストと 1 日あたり 1,000 件のリクエストを無料で利用できます。
Google アカウントに付与されている現在の無料割り当ての上限に達した場合は、Gemini API キーまたは Google Cloud Vertex AI を使用できます。この場合、プロジェクト ID とそのプロジェクトのロケーション名が必要になります。他の認証方法を使用する場合は、ドキュメントの認証セクションを参照してください。
[Enter] をクリックします。ブラウザで Google 認証ページが開きます。Google アカウントで認証を行い、利用規約に同意します。認証が完了すると、Gemini CLI がコマンドを待機していることがわかります。以下にスクリーンショットの例を示します。
4. settings.json を使用した Gemini CLI の構成
Gemini の実行に Cloud Shell を選択すると、Gemini CLI のデフォルトのテーマと認証方法がすでに選択され、構成されています。
マシンに Gemini CLI をインストールして初めて起動した場合は、テーマと認証方法を選択しました。
Gemini CLI を次回以降実行するときに、テーマと認証方法の選択を求められることはありません。つまり、どこかに永続化され、使用されるファイルは settings.json
と呼ばれ、Gemini CLI をカスタマイズする方法です。
設定は次の優先順位で適用されます(Cloud Shell ではユーザー設定のみが使用可能です)。
- システム:
/etc/gemini-cli/settings.json
(すべてのユーザーに適用され、ユーザーとワークスペースの設定をオーバーライドします)。 - ワークスペース:
.gemini/settings.json
(ユーザー設定をオーバーライドします)。 - ユーザー:
~/.gemini/settings.json
。
Windows ユーザー: %USERPROFILE%.gemini\settings.json(通常は C:\Users<ユーザー名>.gemini\settings.json に展開されます)
システム: %ProgramData%\gemini-cli\settings.json(通常は C:\ProgramData\gemini-cli\settings.json に展開されます)
Mac ユーザー: ~/.gemini/settings.json(/Users/<ユーザー名>/.gemini/settings.json に展開されます)
システム: /etc/gemini-cli/settings.json
テーマを選択したときに、設定をユーザー設定に保存するように選択したことを思い出してください。~/.gemini folder
にアクセスすると、settings.json
ファイルが表示されます。
settings.json
ファイルを以下に示します。別のテーマを選択していた場合は、その名前が表示されます。
{
"theme": "Default",
"selectedAuthType": "oauth-personal" or "cloud-shell"
}
5. Gemini CLI との最初のやり取り
Gemini CLI を起動し、次のように最初のクエリを入力してみましょう。
Give me a famous quote on Artificial Intelligence and who said that?
想定されるレスポンスは次のとおりです。
クエリの結果、GoogleSearch
ツール(Gemini CLI の組み込みツール)が呼び出されたことがわかります。つまり、Gemini CLI の強力な組み込みツールの 1 つである GoogleSearch
をすでに使用しています。このツールは、ウェブから取得した情報に基づいて回答を生成します。ツールについては、次のセクションで詳しく説明します。
Gemini CLI とそのサポートするさまざまなコマンドをすばやく理解するには、/help
(スラッシュ)を入力します。すると、次のようにさまざまなコマンドとキーボード ショートカットが表示されます。
Gemini CLI を終了します。これを行うには、/quit
コマンドを使用するか、対話型 Gemini CLI ターミナル セッションで Ctrl-C
を 2 回実行します。
6. Gemini CLI - コマンド パラメータ
Gemini CLI の起動時に指定できるコマンドライン パラメータがいくつかあります。オプションの全リストを取得するには、次のように --help
を使用します。
gemini --help
これにより、利用可能なすべてのオプションが表示されます。こちらのドキュメントを読むことをおすすめします。
そのうちのいくつかを見てみましょう。1 つ目は、Pro モデルまたは Flash モデルを使用するように Gemini CLI を構成することです。このラボの作成時点では、サポートされているモデルはこれら 2 つのみです。デフォルトでは Gemini 2.5 Pro モデルが使用されますが、Flash モデルを使用する場合は、次のように -m
パラメータを使用して Gemini CLI の起動時に指定できます。
gemini -m "gemini-2.5-flash"
上記の方法で開始すると、次のように Gemini CLI ターミナルの右下でモデルを確認できます。
非インタラクティブ モード
興味深いオプションは、非インタラクティブ モードで Gemini CLI を実行することです。つまり、Gemini CLI のインタラクティブ ターミナルを開くことなく、プロンプトを直接指定して、応答を得ることができます。これは、スクリプトや他の自動化プロセスの一部として Gemini CLI を自動的に使用する場合に非常に便利です。-p パラメータを使用して、次のように Gemini CLI にプロンプトを指定します。
gemini -p "What is the gcloud command to deploy to Cloud Run"
フォローアップの質問で会話を続けることはできませんので、ご注意ください。このモードでは、ツール(WriteFile を含む)の承認やシェル コマンドの実行も許可されません。
7. Gemini CLI - 組み込みツール
Gemini CLI には一連の組み込みツールが付属しており、ツールに関するドキュメントには「Gemini モデルはこれらのツールを使用してローカル環境とやり取りし、情報にアクセスしてアクションを実行します。これらのツールは CLI の機能を強化し、テキスト生成だけでなく、幅広いタスクを支援できるようにします。」
現在の組み込みツールの一覧を取得するには、次のように /tools
コマンドを呼び出します。
すぐに気づくことの 1 つは、Gemini CLI が必要に応じてこれらのツールを呼び出すことができるかどうかを自問することです。ローカル システムへの書き込み、外部システムからの読み取り、外部ネットワークへのアクセスなど、機密性の高いオペレーションについては、デフォルトの回答は「いいえ」です。
CLI の起動時に --yolomode
を使用できますが(通常は推奨されません)、Gemini CLI は選択したツールを実行する権限を求めるプロンプトを表示します。権限を拒否したり、1 回だけ実行したり、常に実行する包括的な権限を付与したりできます。すべてを完全に制御できる状態にすべきです。
Gemini CLI が実行する組み込みツールの 1 つを選択するプロンプトを使用してみましょう。これにより、仕組みをよく理解できます。
世界中の最新の金融ニュースに関する情報を取得し、Gemini CLI を起動したローカル作業ディレクトリのファイルに保存するシナリオを考えてみましょう。次のプロンプトを使用します。
Search for the latest headlines today in the world of finance and save them in a file named finance-news-today.txt
このツールが何をするべきかを考えてみましょう。理想的には、Google 検索を実行して、金融ニュースを提供できる関連性の高い情報源からニュースを取得する必要があります。次に、そのコンテンツを含む finance-news-today.txt
という名前のファイルを作成する必要があります(ローカル システムへの書き込みオペレーションには権限が必要です)。
何が起こるか見てみましょう(同じことをマシンで行う必要があります)。
まず、GoogleSearch
ツールを呼び出してウェブを検索します。
検索が完了すると、次のようにデータが取得されます。
完了すると、ファイルに書き込む準備が整い、WriteFile
ツールが使用されますが、これは機密性の高いオペレーション(書き込み)であるため、権限が求められます。権限の種類(1 回のみ許可、常に許可など)を決定できます。ここでは、[1 回のみ許可] を選択します。
これにより、情報がファイルに書き込まれ、次のような成功メッセージが表示されます。
ファイルが書き込まれているかどうかを確認するにはどうすればよいですか?@file
を使用して、コンテンツの読み上げをリクエストできます。@
と入力すると、現在のフォルダ内のファイルの一覧が表示され、先ほど作成したファイルが表示されます。そのコースを選択して、プロンプトを送信します。プロンプトは次のとおりです。
read the contents of @finance-news-today.txt
これにより、必要なツール(ReadManyFiles、ReadFile)が呼び出され、次のようにコンテンツが表示されます。
8. Gemini CLI - シェルモード
Gemini CLI 内から Shell を直接操作する方法を学習するのに適したタイミングです。メッセージ ボックスで !
を押すと、シェルモードに切り替わります。シェルモードに切り替わります。!
キーをもう一度押すか、ESC
キーを押すと、前の画面に戻ります。
シェルモードでは、次のようにプロンプトの先頭に !
が表示されます。
次の例のように、pwd
や ls
などの標準コマンドを使用して直接確認できます。コマンドは Linux タイプの OS を想定しています。別のオペレーティング システム(Windows)を使用している場合は、(cd
、dir
、type
)などの同等のコマンドを使用してください。これらの呼び出しの出力は、モデルのコンテキスト ウィンドウに含まれます。
現在、cat
コマンドを使用してファイルの内容を出力できます。
演習: 以下の簡単な演習を試してください。任意の RSS フィードを選択します。Gemini CLI にプロンプトを指定して、RSS フィードのコンテンツを取得し、特定の方法で結果をフォーマットします。これは、1 日の始まりに何かを自動化するのに適した方法です。たとえば、Gemini CLI に Google Cloud Platform リリースノートなど、特定の分野の RSS フィードがあるかどうかを尋ねることもできます。
プロンプトの例を以下に示します。
Get the latest release notes for Google Cloud from its RSS Feed and display the key points in a well-formatted list.
このプロンプトは、まず GoogleSearch ツールを呼び出して Google Cloud Platform の RSS フィードを見つけ、次に WebFetch ツールを使用して RSS フィードのコンテンツを取得して表示します。
9. Model Context Protocol(MCP)サーバーの構成
MCP サーバーは、Model Context Protocol を介してツールとリソースを Gemini CLI に公開するアプリケーションです。これにより、外部システムやデータソースとやり取りできます。MCP サーバーは、Gemini モデルとローカル環境や API などの他のサービス間のブリッジとして機能します。
MCP サーバーを使用すると、Gemini CLI はツールを検出して実行できます。これにより、Gemini CLI の機能が拡張され、データベース、API、カスタム スクリプト、特殊なワークフローとのやり取りなど、組み込み機能を超えたアクションを実行できるようになります。
Gemini CLI は、カスタムツールを検出して使用するための MCP サーバーの構成をサポートしています。Gemini CLI を起動している場合は、次のように /mcp
コマンドを使用して、構成された MCP サーバーを確認できます。
MCP サーバーを構成していない場合は、Gemini CLI の MCP サーバーのドキュメントが開きます。
MCP サーバーは、~/.gemini/settings.json
ファイルまたはプロジェクトのルート ディレクトリでグローバル レベルで構成できます。.gemini/settings.json
ファイルを作成するか、開きます。ファイル内で、次のように mcpServers
構成ブロックを追加する必要があります。
"mcpServers": {
"server_name_1": {},
"server_name_2": {},
"server_name_n": {}
}
各サーバー構成は、次のプロパティをサポートしています(リファレンス ドキュメント)。
必須(次のいずれか)
- command(文字列): Stdio トランスポートの実行可能ファイルへのパス
- url(文字列): SSE エンドポイント URL(例: "http://localhost:8080/sse")
- httpUrl(文字列): HTTP ストリーミング エンドポイント URL
省略可
- args(文字列配列): Stdio トランスポートのコマンドライン引数
- headers(オブジェクト): url または httpUrl を使用する場合のカスタム HTTP ヘッダー
- env(オブジェクト): サーバー プロセスの環境変数。値は、$VAR_NAME または ${VAR_NAME} 構文を使用して環境変数を参照できます。
- cwd(文字列): Stdio トランスポートの作業ディレクトリ
- timeout(数値): リクエストのタイムアウト(ミリ秒単位)(デフォルト: 600,000 ミリ秒 = 10 分)
- trust(ブール値): true の場合、このサーバーのすべてのツール呼び出し確認をバイパスします(デフォルト: false)。
- includeTools(string[]): この MCP サーバーから含めるツール名のリスト。指定すると、このサーバーから利用できるのは、ここに記載されているツールのみになります(ホワイトリストの動作)。指定しない場合、サーバーのすべてのツールがデフォルトで有効になります。
- excludeTools(文字列配列): この MCP サーバーから除外するツール名のリスト。ここに記載されているツールは、サーバーで公開されていても、モデルでは使用できません。注: excludeTools は includeTools よりも優先されます。ツールが両方のリストに含まれている場合は、除外されます。
GitHub を使用している場合に必要になる可能性のある主要な MCP サーバーの 1 つを構成しましょう。システムに Git やその他の関連ツールがすでに設定されている場合、Github MCP サーバーは必要ですか?
Gemini CLI は、システムにある git ツールを呼び出します。また、Gemini CLI にそのツールを使用するように指示することもできます。Gemini CLI は、自然言語のクエリをシステムに存在する同等のツールに変換するのに役立ちますが、プロンプトで明示的に指定する必要がある場合があります。
システムに次のものがすでに設定されている場合は、次のセクションで GitHub MCP サーバーを設定する必要はありません。
- Git ツール(システムで
git init
、git add
などのコマンドを実行できること) gh
: コマンドラインで GitHub を使用します。pull リクエストや問題など、GitHub のコンセプトを、git やコードを操作しているターミナルに表示します。こちらからインストールし、いくつかのコマンド(特にマシンから GitHub への認証に関するコマンド)を使用して設定を検証します。
Github MCP サーバーを試す場合は、次のセクションをご覧ください。スキップすることもできます。
Github MCP サーバー
Github の公式 MCP サーバーには、公開するツールとその構成方法に関する十分なドキュメントが用意されています。Gemini CLI はリモート MCP サーバーもサポートしているため、ローカルで実行するかリモートで実行するかを選択できます。
このチュートリアルでは、Github のリモート MCP サーバー オプションについて説明します。そのためには、まず Github の個人用アクセス トークン(PAT)が必要です。
MCP サーバー オブジェクトを settings.json
ファイルに追加する必要があります。システム上の settings.json ファイル全体を以下に示します。追加の設定がある場合もありますが、mcpServers
オブジェクトは次のようになります。
{
"theme": "Default",
"selectedAuthType": "oauth-personal",
"mcpServers": {
"github": {
"httpUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "GITHUB_PAT"
},
"timeout": 5000
}
}
}
Github MCP サーバーの構成で settings.json
を更新したら、Gemini CLI を再起動するか、/mcp refresh
コマンドを実行します。次のスクリーンショットは、マシンに構成されている Github MCP サーバーと、Gemini CLI で MCP を操作するために使用できるさまざまなツールを示しています。
まず、GitHub MCP サーバーのツールの 1 つを呼び出すプロンプトから始めましょう。次のプロンプトを入力します。
Github MCP サーバーから適切なツールが選択されますが、他の組み込みツールと同様に、ツールを呼び出すための明示的な権限も必要になります。出力を確認してみましょう。
これで、GitHub プロジェクトのいずれかを使用できるようになりました。次のように自然言語でクエリを指定します。
- <repo-name> について説明して
- ローカルマシンに <repo-name> のクローンを作成します。
- @<ファイル名> または @<ディレクトリ名>/ を説明します。
- このリポジトリのコンポーネントにはどのようなものがありますか?
- 必要な変更を行いました。変更を Github に push し、Github MCP Server ツールを使用して変更できます。
GitHub MCP サーバーの詳細な操作については、この後のラボで演習を行います。
Context7 MCP サーバー
Context7 は、LLM と AI コード エディタの最新のドキュメントを提供します。選択したフレームワークの最新のドキュメントを使用して LLM にコンテキストを提供したい場合は、Context7 MCP サーバーを構成することをおすすめします。
ライブラリが Context7 のホームページに表示されていることを確認します。
settings.json
ファイルに追加する必要がある MCP サーバーは次のとおりです。
"context7": {
"httpUrl": "https://mcp.context7.com/mcp"
}
MCP サーバーが構成され、Gemini CLI が正常に読み込まれると、次のように Context7 ツールを表示できるようになります。
プロンプトで具体的な指示を指定し、特定の XYZ フレームワークを使用してアプリケーションやコード スニペットを生成する際に、最新のドキュメントに Context7
を使用するように Gemini CLI にリクエストできるようになりました。
Google の Agent Development Kit(ADK)を使用してエージェントを作成するプロンプトの例を次に示します。Context7 MCP サーバー経由で同じドキュメントを検索するようにプロンプトで指定しています。
I am working on coding an Agent using the Agent Development Kit (ADK) from Google. I would like to know how to create the LLMAgent in Python. Use Context7 for the latest documentation on ADK and specifically use /google/adk-python, /google/adk-docs and adk.wiki
受信した出力は次のとおりです。
Google スライド MCP サーバー
https://github.com/matteoantoci/google-slides-mcp の Github プロジェクトは、Google Slides API とのやり取りを行うための MCP サーバーを提供します。これにより、Google スライドのプレゼンテーションの作成、読み取り、変更をプログラムで行うことができます。
MCP サーバーを構成する手順は、プロジェクトに記載されています。サーバーを構築し、Google Cloud プロジェクトと OAuth 2.0 トークンを構成してから、settings.json ファイルで MCP サーバーを構成する Node.js 環境が必要です。
セットアップが完了したら、次のようなプロンプトを実行できます。
- 「web_url」から最新の情報を抽出し、要点にまとめて「my_presentation」という名前のプレゼンテーションを作成します。
ぜひお試しください。
その他の MCP サーバー
関心をお持ちいただける可能性のある MCP サーバーの追加リストは次のとおりです。
- Firebase MCP サーバー
- Google Gen AI Media Services(Imagen、Veo、Lyria)
- MCP Toolbox for Databases(Firestore、BigQuery、Google Cloud データベースを操作)
- Google Workspace MCP サーバー(ドキュメント、スプレッドシート、カレンダー、Gmail と連携)
上記の MCP サーバーの設定手順については、こちらのブログ投稿をご覧ください。
10. GEMINI.md を使用して Gemini CLI をカスタマイズする
これまでの Gemini CLI の使用状況を見ると、プロンプトを指定して Gemini CLI に実行を期待するだけで、期待どおりの結果が得られないこともありました。一部のプロンプトでは、具体的な指示がプロンプトに含まれています。
これは、Gemini CLI に指示した内容と得られた結果に応じて、適切に機能する可能性があります。ただし、多くの場合、ルールに従うようにする必要があります。これらのルールは、使用する特定のプログラミング言語やフレームワークにすることができます。特定のツールである可能性もあります。コーディング スタイルである可能性があります。生成だけでなく、Gemini CLI を「計画」モードに厳密に設定して、計画の提示のみを行い、コードの生成やシステム上のファイルの変更を行わないようにすることもできます。
「GEMINI.md
」と入力します。これは、Gemini モデルに提供される指示コンテキスト(「メモリ」とも呼ばれます)の構成に不可欠なコンテキスト ファイルです(デフォルトは GEMINI.md
ですが、settings.json
ファイルの contextFileName
プロパティで構成できます)。このファイルを使用すると、プロジェクト固有の指示、コーディング スタイルガイド、関連する背景情報を AI に提供できるため、ニーズに合わせてよりカスタマイズされた正確な回答を得ることができます。
GEMINI.md
ファイルはマークダウン形式で、階層形式で読み込まれ、複数の場所から結合されます。
読み込み順序は次のとおりです。
- グローバル コンテキスト: **
~/.gemini/GEMINI.md
**(すべてのプロジェクトに適用される手順の場合)。 - プロジェクト/祖先コンテキスト: CLI は、現在のディレクトリからプロジェクト ルートまで
GEMINI.md
ファイルを検索します。 - サブディレクトリ コンテキスト: CLI はサブディレクトリも
GEMINI.md
ファイルでスキャンするため、コンポーネント固有の指示が可能です。
/memory show
を使用すると、モデルに送信される最終的な結合コンテキストを確認できます。
GEMINI.md
はどのようなものですか?公式ドキュメントから作成した例を以下に示します。
# Project: My Awesome TypeScript Library
## General Instructions:
- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.
## Coding Style:
- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).
## Specific Component: `src/api/client.ts`
- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.
## Regarding Dependencies:
- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.
一般的な指示に加えて、コーディング スタイルや依存関係の管理などに関する非常に具体的な指示も提供されていることがわかります。これは TypeScript プロジェクトの GEMINI.md
ファイルのサンプルですが、プログラミング言語、フレームワーク、コーディング スタイル、その他の設定に基づいて独自のファイルを作成できます。
カスタムの GEMINI.md
ファイルを試すことができます。これは、プランモードでのみ Gemini CLI を使用する方法を示す gist からのものです。ファイルは次のとおりです。
# Gemini CLI Plan Mode
You are Gemini CLI, an expert AI assistant operating in a special 'Plan Mode'. Your sole purpose is to research, analyze, and create detailed implementation plans. You must operate in a strict read-only capacity.
Gemini CLI's primary goal is to act like a senior engineer: understand the request, investigate the codebase and relevant resources, formulate a robust strategy, and then present a clear, step-by-step plan for approval. You are forbidden from making any modifications. You are also forbidden from implementing the plan.
## Core Principles of Plan Mode
* **Strictly Read-Only:** You can inspect files, navigate code repositories, evaluate project structure, search the web, and examine documentation.
* **Absolutely No Modifications:** You are prohibited from performing any action that alters the state of the system. This includes:
* Editing, creating, or deleting files.
* Running shell commands that make changes (e.g., `git commit`, `npm install`, `mkdir`).
* Altering system configurations or installing packages.
## Steps
1. **Acknowledge and Analyze:** Confirm you are in Plan Mode. Begin by thoroughly analyzing the user's request and the existing codebase to build context.
2. **Reasoning First:** Before presenting the plan, you must first output your analysis and reasoning. Explain what you've learned from your investigation (e.g., "I've inspected the following files...", "The current architecture uses...", "Based on the documentation for [library], the best approach is..."). This reasoning section must come **before** the final plan.
3. **Create the Plan:** Formulate a detailed, step-by-step implementation plan. Each step should be a clear, actionable instruction.
4. **Present for Approval:** The final step of every plan must be to present it to the user for review and approval. Do not proceed with the plan until you have received approval.
## Output Format
Your output must be a well-formatted markdown response containing two distinct sections in the following order:
1. **Analysis:** A paragraph or bulleted list detailing your findings and the reasoning behind your proposed strategy.
2. **Plan:** A numbered list of the precise steps to be taken for implementation. The final step must always be presenting the plan for approval.
NOTE: If in plan mode, do not implement the plan. You are only allowed to plan. Confirmation comes from a user message.
上記の内容を GEMINI.md という名前のファイルに保存し、~/.gemini/GEMINI.md
に保存します。これは、settings.json ファイルを作成したフォルダと同じです。<current project folder>/.gemini
フォルダに GEMINI.md
ファイルを保存することもできます。また、異なる手順がある場合は、サブディレクトリに複数の GEMINI.md
ファイルを保存することもできます。
プロンプトを指定してアプリケーションを生成し、そのレスポンスを確認します。
次の GEMINI.md
ファイル(Gemini Explain モード)を学習し、要件に合わせて再利用できます。これは、GEMINI CLI がインタラクティブなガイドとして、会話形式の検出プロセスを通じてユーザーが複雑なコードベースを理解できるようにすることに重点を置いています。
GEMINI.md
ファイルは、Gemini CLI がユーザーの好みに沿って動作するための鍵となります。この分野を掘り下げた実践的なシリーズ「実践的な Gemini CLI」で、プロジェクト用に自動生成する方法や、システム プロンプトなどのカスタマイズ方法を確認することをおすすめします。
Gemini CLI を操作しながら GEMINI.md
ファイルを構築することもできます。いつでも /memory add <指示/ルール> コマンドを使用できます。Gemini CLI は、このコマンドを GEMINI.md
ファイルに追加します。自然言語を使用して、Gemini CLI にメモリへの追加をリクエストすることもできます。たとえば、「<指示/ルール> を記憶して」や「<指示/ルール> をメモリに追加して」などのプロンプトを使用して、GEMINI.md
を追加できます。
11. Gemini CLI - カスタム スラッシュ コマンド
GEMINI.md
をカスタマイズしてプランモードを作成する方法について説明しました。前のセクションでは、説明モードへのリンクも提供しました。
これらのモードの両方を構成し、/plan
または /explain
スラッシュ コマンドを使用して、これらのモードのいずれかに切り替えるように Gemini CLI に指示する場合はどうすればよいでしょうか。Gemini CLI カスタム スラッシュ コマンドは、まさにこのためのものです。
ドキュメントに記載されているように、「カスタム コマンドを使用すると、お気に入りのプロンプトや最もよく使用するプロンプトを Gemini CLI 内の個人用ショートカットとして保存して再利用できます。単一のプロジェクトに固有のコマンドを作成することも、すべてのプロジェクトでグローバルに使用できるコマンドを作成することもできます。これにより、ワークフローが効率化され、一貫性が確保されます。」
/plan
と /explain
の 2 つのカスタム スラッシュ コマンドを作成しましょう。
次のステップでは、Gemini CLI がカスタム コマンドを取得する場所を把握します。ドキュメントによると、コマンドは次の 2 つの場所から特定の順序で読み込まれて検出されます。
- ユーザー コマンド(グローバル):
~/.gemini/commands/
にあります。これらのコマンドは、作業中のどのプロジェクトでも使用できます。 - Project Commands(ローカル):
<your-project-root>/.gemini/commands/
にあります。これらのコマンドは現在のプロジェクトに固有のものであり、バージョン管理にチェックインしてチームと共有できます。
Gemini CLI を起動した現在のプロジェクト フォルダを選択しましょう。このフォルダは <your-project-root>/.gemini/commands/
フォルダになります。フォルダ構造を作成します。
このフォルダ内に何を作成する必要がありますか?2 つの TOML ファイル(plan.toml
と explain.toml
)が必要です。名前空間と命名規則について詳しくは、こちらをご覧ください。
各 TOML ファイルには、description
と prompt
の 2 つのフィールドが必要です。説明は Gemini CLI のコマンドの横に表示されるため、短く簡潔にしてください。以下の TOML ファイルの例は、カスタム スラッシュ コマンドに関する公式ブログ投稿から引用したものです。
plan.toml ファイルの例を以下に示します。プロンプトには特別なプレースホルダ {{args}}
が含まれています。CLI は、このプレースホルダをコマンド名の後にユーザーが入力したすべてのテキストに置き換えます。
description="Investigates and creates a strategic plan to accomplish a task."
prompt = """
Your primary role is that of a strategist, not an implementer.
Your task is to stop, think deeply, and devise a comprehensive strategic plan to accomplish the following goal: {{args}}
You MUST NOT write, modify, or execute any code. Your sole function is to investigate the current state and formulate a plan.
Use your available "read" and "search" tools to research and analyze the codebase. Gather all necessary context before presenting your strategy.
Present your strategic plan in markdown. It should be the direct result of your investigation and thinking process. Structure your response with the following sections:
1. **Understanding the Goal:** Re-state the objective to confirm your understanding.
2. **Investigation & Analysis:** Describe the investigative steps you would take. What files would you need to read? What would you search for? What critical questions need to be answered before any work begins?
3. **Proposed Strategic Approach:** Outline the high-level strategy. Break the approach down into logical phases and describe the work that should happen in each.
4. **Verification Strategy:** Explain how the success of this plan would be measured. What should be tested to ensure the goal is met without introducing regressions?
5. **Anticipated Challenges & Considerations:** Based on your analysis, what potential risks, dependencies, or trade-offs do you foresee?
Your final output should be ONLY this strategic plan.
"""
explain.toml ファイルも作成してみてください。Gemini の説明モードを参照して、コンテンツを選択できます。
Gemini CLI を再起動します。以下に示すように、スラッシュ コマンド(/plan
)が追加されています。
12. 試してみるユースケース
Gemini CLI は、デベロッパーと非デベロッパーの両方に適用される幅広いユースケースに適用できます。ここではいくつかのシナリオを紹介します。興味のある分野に応じて、これらのシナリオを試すことができます。
いずれの場合も、プロンプトが提供されます。Gemini CLI の起動時に -p
パラメータを使用して、Gemini CLI のインタラクティブ モードまたは非インタラクティブ モードでこの機能を試すことができます。
Gemini CLI を使用したバイブ コーディング
Gemini CLI を使用してアプリケーションのバイブコードを作成してみましょう。このタスクでは、Gemini CLI にアプリケーションの生成を依頼し、最初のバージョンを GitHub リポジトリに push します。
要件
このセクションのタスクを実行するには、いくつかの前提条件があります。
- Git
- Gemini CLI と Github MCP サーバー(前述)を使用するか、
gh
(Github CLI ツール)を設定している場合も、同様に機能します。 - Git の基本とプログラミングの知識
ここでは、任意の特定のフォルダで Gemini CLI を起動していることを前提としています。MCP サーバー(特に GitHub MCP サーバー)が正常に起動していることを確認します。
最初のプロンプトから始めます。必要に応じて変更してください。Gemini CLI のセッションでは、ファイルの作成などの権限を求められます。必要な権限を付与してください。
このタスクでは、アプリケーションの実行やテストを Gemini CLI に任せることはしません。もう少し制御したいからです。ただし、その方法は完全にユーザー次第です。
Generate a website for a 1-day event filled with technical talks. There are going to be 6 talks in a single track of 1 hour each. Each talk has the following information: title, 1 or maximum of 2 speakers, category (1 or maximum of 3 keywords), duration and a description. The website has a single page where users can see the schedule for the entire day with the timings. There will be one lunch break of an hour and the event starts at 10:00 AM. Keep a 10 minute transition between talks. I would like to use Node.js on the server side and standard HTML, JavaScript and CSS on the front-end. The users should be able to search the talks based on category.
I would like you to proceed in the following way:
1. Plan out how you would design and code this application.
2. Ask me for any clarifications along the way.
3. Once I am fine with it, do generate the code and provide me instructions to run and test locally.
次のプロンプトとレスポンスは、確認されたサンプル フローです。まったく異なる回答が返される場合もあります。必要に応じて、プランを確認し、Gemini CLI とやり取りしてください。
Gemini CLI がより多くの処理を試み、実行したいコマンドを提案することがあります。この演習では、タスクの実行方法や、最初に検証する内容をより詳細に制御できるように、このオプションは選択しないことをおすすめします。
たとえば、コマンドの実行を提案された場合は、次のようにエスケープしてメッセージを送信します。
サーバーを起動してホームページに移動する手順に沿って操作すると、次のようなサンプルサイトが表示されました(同じプロンプトを使用した場合、同様のサイトのバリエーションが表示されます)。
Gemini CLI を使用して、さらに変更を加えることができます。変更が完了したら、この変更を Github リポジトリに push できます。
まず、.gitignore ファイルを作成します。Gemini CLI を使用して作成できます。
Create a .gitignore file for this project.
次のステップでは、Gemini CLI に指示して、このリポジトリを GitHub アカウントに push します。これにより、GitHub MCP Server ツールがバックグラウンドで実行されます。
次のようなプロンプトを入力します。
Great! I would now like to push all of this to a new repository in my Github account. I would like to name this repository <Your-Name>-event-talks-app
ここでは、いくつかのコマンドについて説明します。
- リポジトリを作成します。
- ローカル Git リポジトリの管理には、複数の Git コマンド(init、add、commit)が使用されます。
- 次に、Git リモートを設定して push を実行します。
注: Gemini CLI がタイムアウトしたり、誤ったユーザー名を使用したりする場合があります。その場合は、Gemini CLI とやり取りして、修正を提案してください。
問題がなければ、GitHub リポジトリが作成されます。以下に、スクリーンショットの例を示します。
このプロジェクトの README.md
は生成していません。これは次のセクションで説明する演習に適しています。次のセクションでは、作成したばかりのこのリポジトリを使用します。
Gemini CLI を使用して GitHub リポジトリを操作する
このユースケースでは、Gemini CLI を使用して GitHub リポジトリを操作します。次のタスクを行います。
- コードベースを理解する
- ドキュメントの生成
- 新機能の実装
- 変更を commit してリポジトリに push して戻します。
- Github の Issue に取り組み、提案された変更を実装する
これにより、リポジトリを操作し、Gemini CLI をアシスタントとして使用して、これらのデベロッパー固有のタスクを実行するための基盤が整います。
要件
このセクションのタスクを行うには、次のものが必要です。
- Git
- Gemini CLI と Github MCP サーバー(前述)を使用するか、
gh
(Github CLI ツール)を設定している場合も、同様に機能します。 - Git の基本とプログラミングの知識(この例では、Gemini CLI をインストールしているため、マシンに環境がすでに準備されている可能性がある Node.js を使用します)。後で、別のプログラミング言語とフレームワークを使用して、任意のリポジトリを選択することもできます。
- 前のセクションを完了し、Event Talks ウェブサイトを作成したリポジトリを手元に用意しておく必要があります。
Event Talks アプリケーションの生成に使用したフォルダ/ディレクトリから Gemini CLI を引き続き使用します。必要に応じて、リポジトリをローカルマシンにクローンしてから、そのディレクトリから Gemini CLI を起動することもできます。以下のシナリオを試してください。
コードベースを理解する
- このプロジェクトについて詳しく知りたいです。主な機能について説明し、サーバーサイドとクライアントサイドに分けて説明してください。サンプル フローを使用して、リクエストとレスポンスの仕組みを説明してください。
- @server.js について説明して
README ファイルの生成
- このプロジェクトの
README
ファイルを生成します。
この場合、Gemini CLI は README
ファイルを生成するだけでなく、Git リポジトリに追加して変更をリモートに push するコマンドを実行しようとしています。この処理を許可するかどうかは、ユーザーが判断します。
場合によっては、LICENSE
ファイルの生成を提案してくれることもあります。この処理を行うかどうかは、ユーザーが決定できます。結果に応じて、README
ファイルまたは LICENSE
ファイルが生成され、変更が GitHub に push されます。
新機能の実装
- ユーザーが特定のスピーカーで検索できる新機能を実装したいと考えています。まず、この変更を実装する方法の計画を示してください。その後、コードを生成します。
プランが提示されるので、承認します。承認されると、Gemini CLI はこれらの変更を適用します。変更をテストし、バグ(可能性が高い)がある場合は、Gemini CLI に修正を依頼します。
変更内容が適切であることを確認したら、同じ手順で commit してリモート リポジトリに push します。
提案された機能に基づいて問題を生成する
ここで興味深いことを試してみましょう。Gemini CLI に、このアプリケーションのユーザー エクスペリエンスを向上させる方法を尋ねます。Gemini CLI は、その評価に基づいて、同じ Github リポジトリで問題を提案します。Github MCP サーバーの「create_issue」ツールを使用します。
次のプロンプトを試してください。
- ユーザー エクスペリエンスの観点からアプリケーションを評価していただきたいです。使いやすさ、応答性、役立つメッセージなど。改善点のリストを作成し、それらを Github リポジトリの Issue として作成してください。
理想的には、まず改善点をユーザーと共有し、ユーザーの許可を得てから Github リポジトリで問題を作成します。実行時のスクリーンショットの例を次に示します。
Github の Issue に取り組み、提案された変更を実装する
以前に生成された問題のいずれかを選択し、Gemini CLI にその問題の解決と実装を依頼できるようになりました。
生成された問題の例を以下に示します。
問題の URL 全体をコピーして、次のようなプロンプトを入力します。
- 問題:
<YOUR_ISSUE_URL>
を確認し、必要な変更を理解してください。まずプランについて説明し、次に提案された変更をコードで示します。
変更を承認してリポジトリに push してください。問題をクローズするよう依頼することもできます。
(省略可)日常的なタスク
以下のユースケースは、定期的に行う可能性のあるタスクです。たとえば、ファイルをフォルダに整理する、ウェブからコンテンツを取得して要約する、画像ファイルを処理してコンテンツを抽出する、データベースを操作するなどのタスクがあります。
ご興味のあるユースケースを自由にご覧ください。
ファイル/フォルダの整理
Gemini CLI を使用して、必要に応じてさまざまなフォルダ内のタイプに応じてファイルを整理できます。パソコンのフォルダに移動し、.txt、.png、.jpg、.pdf、.mp4 などのファイルが複数あることを確認します。通常はデスクトップまたはダウンロード フォルダです。
フォルダの例とフォルダの内容を以下に示します(他のファイルが含まれている場合もあります)。
そのフォルダに移動して、Gemini CLI を起動します。まず、Gemini CLI に Images、Documents、Videos というフォルダを作成するようリクエストし、次に Gemini CLI にフォルダ内のファイルを整理するようリクエストします。
Gemini CLI は、コマンドを実行する前に権限を求めるプロンプトを表示することがよくあります。特に、ファイル システムを変更するコマンド(ファイルの書き込み、移動、削除など)では、プロンプトが表示されます。権限を付与する前に、これらのプロンプトを必ずよく確認してください。これがセーフティ ネットです。
Create the following folders "Images","Documents","Videos"
次に、次のプロンプトを入力します。
Go through all the files in this folder and then organize them by moving all the files ending with .jpg, .jpeg, .gif into the "Images" folder. Move all ".txt" files into the "Documents" folder. Move all the ".mp4" files in the "Videos" folder.
フォルダの最終的な状態の例を以下に示します。新しいサブフォルダが作成され、ファイルがタイプに応じてそれぞれのサブフォルダに移動されます。
その他の整理シナリオ(各シナリオの横にプロンプトが表示されます):
- 要約: 「Documents」フォルダ内の各ドキュメントについて、ドキュメントの要点を 3 文で要約した「summary_ORIGINAL_FILENAME.txt」という名前の txt ファイルを同じフォルダに作成します。
- タイプ別に分類: このディレクトリ内のすべての PDF ファイルと DOCX ファイルをスキャンします。名前またはコンテンツに「invoice」が含まれるすべてのファイルを「Financial/Invoices」フォルダに移動します。「receipt」を含むファイルを [Financial/Receipts] に移動します。その他の .docx ファイルは [Reports] に移動します。
- キー情報の抽出(および「タグ付け」): 「Financial/Invoices」フォルダ内の各 PDF ファイルについて、その内容を読み取ります。日付が見つかった場合は、ファイルの名前を変更して、その日付を YYYY-MM-DD 形式で含めます(例: ‘invoice_2025-07-26_original_name.pdf'.
画像を整理する
マシンで画像コンテンツを整理する方法を見てみましょう。
試してみるには:
- さまざまな画像ファイル(.jpg、.png など)を含むディレクトリ/フォルダが必要です。EXIF データを含むものもいくつか含めます(カメラやスマートフォンで撮影した写真のほとんどには EXIF データが含まれています)。
- このディレクトリに移動します。
- Gemini CLI を起動します。
次のいずれかのシナリオを試してください(各シナリオの横にプロンプトが記載されています)。
- 日付で名前を変更(EXIF データ): このディレクトリ内のすべての .jpg ファイルと .png ファイルの名前を、EXIF データから取得した作成日を含む「YYYYMMDD_HHMMSS_original_name.jpg」形式に変更します。EXIF の日付が見つからない場合は、ファイルの最終更新日を使用します。
- 画像の説明を作成する: このフォルダ内の各画像について、画像の内容を説明し、その説明を同じディレクトリ内の「description_ORIGINAL_FILENAME.txt」という名前のテキスト ファイルに保存します。
- 重複を特定する(コンセプト、より高度なロジックが必要): このフォルダ内の重複する画像を視覚的なコンテンツに基づいて特定し、ファイル名をリストします。まだ削除しないでください。
記事の要約(ローカル ファイルまたはウェブ)
以下の各シナリオでは、必要に応じて URL、関心のあるトピック、ローカル ファイル名を変更してください。指定されているファイル名はサンプルです。システムにあるファイル名に置き換えることができます。
次のいずれかのシナリオを試してください(各シナリオの横にプロンプトが記載されています)。
- ウェブ記事を要約する(単一の URL): https://medium.com/google-cloud/getting-started-with-gemini-cli-8cc4674a1371 にアクセスし、この記事の重要なポイントを 3 つ要約します。
- 複数のウェブ記事を要約する(検索結果など): Google 検索を使用して、「Gemini CLI」に関する最新のニュース記事を見つけます。関連性の高い上位 5 件の記事について、それぞれ 2 ~ 3 文で要約し、URL をリストアップしてください。
- ローカル テキスト ファイルを要約する: 「my_research_paper.txt」の記事の要点を要約します。方法論と結論に焦点を当てます。
- ローカル PDF を要約する: 「financial_report_Q2_2025.pdf」を読み取ります。財務実績と主な課題の概要を説明します。
特定の情報を抽出する(ローカル ファイルまたはウェブ)
以下の各シナリオでは、必要に応じて URL、関心のあるトピック、ローカル ファイル名を変更してください。指定されているファイル名はサンプルです。システムにあるファイル名に置き換えることができます。
次のいずれかのシナリオを試してください(各シナリオの横にプロンプトが記載されています)。
- ローカル記事からエンティティを抽出する: 「biography.txt」から、名前付きの個人と、それに関連する重要な日付をすべてリストします。
- PDF のテーブルからデータを抽出する: 「quarterly_sales.pdf」の 3 ページにある「地域別の商品売上」を示すテーブルからデータを抽出し、Markdown テーブル形式で表示します。
- ニュース ウェブサイトからニュースの見出しとソースを抽出する: 「https://news.google.com/」(または同様のニュースサイト)にアクセスします。トップページからメインの見出しと、それに対応するニュース提供元を抽出します。箇条書きリストで提示してください。
- e コマース ページから商品の仕様を見つける: 「https://www.amazon.in/Google-Cloud-Certified-Associate-Engineer/dp/1119871441」(書籍の例)に移動します。書籍のタイトル、著者などの詳細情報を抽出します。構造化された JSON 形式で提示します。
- 特定の形式(「2h37m42s」など)で動画から再生時間を抽出します。
コンテンツに基づく質問への回答(RAG のような動作)
以下の各シナリオでは、必要に応じて URL、関心のあるトピック、ローカル ファイル名を変更してください。指定されているファイル名はサンプルです。システムにあるファイル名に置き換えることができます。
次のいずれかのシナリオを試してください(各シナリオの横にプロンプトが記載されています)。
- ローカル ドキュメントに関する質問: 「user_manual.pdf」を添付します。ネットワーク接続の問題をトラブルシューティングする手順を教えてください。
- ウェブページの Q&A: 「https://www.who.int/news-room/fact-sheets/detail/climate-change-and-health」のコンテンツを使用して、WHO によると気候変動に関連する主な健康リスクは何ですか?
- 複数のソースの情報を比較する: 最近の経済政策の変更について説明している 2 つのニュース記事(article1.txt と article2.txt)があります。中小企業への潜在的な影響に関する両者の見解を比較対照します。
抽出された情報に基づくコンテンツ生成
以下の各シナリオでは、必要に応じて URL、関心のあるトピック、ローカル ファイル名を変更してください。
次のいずれかのシナリオを試してください(各シナリオの横にプロンプトが記載されています)。
- 記事からニュースの概要を生成する: @tech_innovation_article.txt を読みます。会社のニュースレターに適した、新しいテクノロジーとその可能性を強調する、短く魅力的なニュース ブリーフ(約 150 語)を作成してください。
- 会議の文字起こしを要約するメールの下書きを作成してください。会議の文字起こしファイルは @meeting_transcript.txt です。チームに送信するメールの下書きを作成し、決定事項と割り当てられたアクション アイテム(各アイテムの担当者を含む)を要約します。
Gemini CLI のマルチモーダル サポート
Gemini CLI は Gemini を介してマルチモデルをサポートしており、要件に応じてさまざまなコンテンツ形式のファイルを処理するようにリクエストできます。
Gemini CLI を使用して大量の請求書画像を処理し、そこから重要な情報を抽出します。以下の手順に沿って操作してください。
- マシンにフォルダを作成し、次の Github リポジトリから請求書をダウンロードします。
- そのフォルダから Gemini CLI を起動する
次のプロンプトを指定して、請求書の情報を表形式で抽出します。
The current folder contains a list of invoice files in Image format. Go through all the files in this folder and extract the following invoice information in the form of a table: Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount.
次のような出力が表示されます。
別のシナリオとして、追加の派生列をリクエストすることもできます。過去のすべての請求書の期日に赤いバツ印の絵文字を表示するとします。次のようにプロンプトを指定できます。
list all files with .png extension in this folder. Extract the invoice information from it by reading them locally and display it in a table format containing the following column headers: : Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount. Add a column at the end of the table that shows a red cross emoji in case the due date is in the past.
出力は次のようになります。
テキスト以外の形式のファイルにも適用できます。
Gemini CLI を使用してデータベースを操作する
Gemini CLI を使用すると、さまざまなデータベースをより効率的に操作できます。自然言語でのクエリ、データのエクスポート、データベース スキーマの設計、現実的なテストデータの生成など、複数のシナリオで使用できます。
このタスクを行うには、SQLite3
を使用します。SQLite3 をインストールし、Chinook サンプル データベースを用意する必要があります。
SQLite3 の設定手順の概要は次のとおりです。
- macOS: SQLite3 がプリインストールされています。
sqlite3 --version
で確認します。必要に応じて、Homebrew を使用してインストールします(brew install sqlite3
)。 - Windows: SQLite ウェブサイトからコンパイル済みのバイナリをダウンロードします。ファイルをディレクトリ(
C:\sqlite
)。そのディレクトリをシステムの PATH 環境変数に追加します。 - Linux: Debian/Ubuntu:
sudo apt update && sudo apt install sqlite3
Chinook サンプル データベースをダウンロードします(直接リンクはこちら)。
これらのプロンプトを実行するには、gemini-cli-projects
ディレクトリにフォルダ(database-tasks
)を作成することをおすすめします。Chinook データベース ファイルをそのフォルダにコピーします。Gemini CLI が使用できるように、sqlite3 ツールがシステムに設定され、パスで使用可能になっていることを確認します。Gemini CLI を起動します。
データベース スキーマの図を次に示します。
database-tasks
という名前のフォルダにいて、Chinook データベース ファイルの名前が chinook.db
であるとします。
データベースの操作に役立つプロンプトをいくつか紹介します。リクエストされる権限を示すために、1 つ目の例を簡単に説明します。
まず、データベースに存在するテーブルを一覧表示するプロンプトを入力します。次のプロンプトを入力します。
What tables are present in the file: chinook.db
このツールは、ファイルを読むために使用され、システムに存在する sqlite3
ユーティリティを使用して必要な処理を行います。
期待される出力を得るために、一度実行する権限を付与します。
次のプロンプトまたは任意のプロンプトを試してみてください。
- 従業員数は何人ですか?
- invoices テーブルのスキーマは何ですか?
- 合計額の上位 3 つの請求書と、それらの請求書を発行したお客様は誰ですか?
Gemini CLI は、要件を満たす正しい SQL ステートメントの生成と、正しい sqlite3
コマンドの提供という 2 つの処理を行います。
Gemini CLI を使用してデータを生成する
Gemini CLI にさまざまなデータ形式でデータを生成するよう指示できます。コンテンツから JSON データまで、モックする必要があるものが含まれる可能性があります。ここでは、デベロッパーやテスターに適用できるシナリオに焦点を当てます。
以下に、試してみることをおすすめするプロンプトをいくつかご紹介します。
サンプル購入者レビューの JSON データを生成する
Generate a JSON array of 3 synthetic customer reviews for a new smartphone. Each review should have 'reviewId' (string, UUID-like), 'productId' (string, e.g., 'SMARTPHONE_X'), 'rating' (integer, 1-5), 'reviewText' (string, 20-50 words), and 'reviewDate' (string, YYYY-MM-DD format).
モック API レスポンス(JSON)の生成
Generate a JSON array representing 7 daily sales records for a mock API endpoint. Each record should include 'date' (YYYY-MM-DD, chronologically increasing), 'revenue' (float, between 5000.00 and 20000.00), 'unitsSold' (integer, between 100 and 500), and 'region' (string, either 'North', 'South', 'East', 'West').
サンプル データベース挿入ステートメント(SQL)の生成
Generate 5 SQL INSERT statements for a table named 'users' with columns: 'id' (INTEGER, primary key), 'username' (VARCHAR(50), unique), 'email' (VARCHAR(100)), 'password_hash' (VARCHAR(255)), 'created_at' (DATETIME, current timestamp). Ensure the password_hash is a placeholder string like 'hashed_password_X'.
データ読み込み/分析用の CSV データを生成する
Generate 10 lines of CSV data, including a header row, for customer transactions. Columns should be: 'TransactionID' (unique string), 'CustomerID' (integer), 'ItemPurchased' (string, e.g., 'Laptop', 'Monitor', 'Keyboard'), 'Quantity' (integer, 1-3), 'UnitPrice' (float, between 100.00 and 1500.00), 'TransactionDate' (YYYY-MM-DD).
構成ファイル(YAML)を生成する
Generate a sample YAML configuration for a 'user_service'. Include sections for 'database' with 'host', 'port', 'username', 'password', 'database_name'. Also include a 'api_keys' section with 'payment_gateway' and 'email_service' placeholders. Use realistic default values.
エッジケース/検証用のテストデータの生成
Generate a JSON array of 8 email addresses for testing purposes. Include a mix of: 2 valid standard emails, 2 with missing '@', 2 with invalid domains (e.g., '.com1'), and 2 with special characters in the local part that are usually invalid (e.g., spaces or multiple dots).
13. 完了
お疲れさまでした。Gemini CLI とその機能について学習し、いくつかのユースケースに適用しました。