Gemini CLI を使った実践演習

1. はじめに

この Codelab では、Gemini の威力をターミナルに直接取り込むオープンソースの AI エージェントである Gemini CLI について学習します。

Gemini CLI プロジェクトはオープンソースです。公開ロードマップはこちらでご覧いただけます。

この Codelab では、次のようなアクティビティでステップバイステップのアプローチを採用します。

  1. Gemini CLI のインストール
  2. 基本的な構成
  3. Gemini CLI のツールと組み込みコマンドを調べる
  4. GEMINI.md ファイルを使用して Gemini CLI をカスタマイズする
  5. Gemini CLI を使用したユースケースの例

必要なもの

  • Chrome ウェブブラウザ
  • Gmail アカウント
  • マシンに Node 20 以降がインストールされているローカルマシン。

この Codelab は、初心者を含むあらゆるレベルのユーザーとデベロッパーを対象としています。

2. インストール

設定を実行して Gemini CLI を実行する前に、その中に作成するすべてのプロジェクトのホーム フォルダとして使用するフォルダを作成しましょう。これは Gemini CLI が動作するための出発点ですが、必要に応じてシステム上の他のフォルダも参照します。これについては後で説明します。

サンプル フォルダ(gemini-cli-projects)を作成し、次のコマンドを使用してそのフォルダに移動します。別のフォルダ名を使用する場合は、そのようにしてください。

mkdir gemini-cli-projects

そのフォルダに移動します。

cd gemini-cli-projects

Gemini CLI を実行するには、次のいずれかの方法を使用します。

  1. 次のコマンドで実行します。
npx https://github.com/google-gemini/gemini-cli
  1. まず、システムに Gemini CLI をグローバルにインストールできます。そのためには、管理者権限が必要です。
npm install -g @google/gemini-cli

次のコマンドで実行します。

gemini

上記の方法で Gemini CLI を起動すると、テーマの選択を求める次の画面が表示されます。お好みのものを選択してください。

9b02bd0bf1c670d.png

選択すると、認証方法が求められます。このラボでは、Google 以外の関連アカウントや Google Workspace 関連アカウントではなく、個人の Google アカウントを使用することをおすすめします。この無償ライセンスがあれば、Gemini 2.5 Pro と、100 万トークンのコンテキスト ウィンドウを利用できます。無料枠では、1 分あたり 60 件のモデル リクエストと 1 日あたり 1,000 件のリクエストを無料で利用できます。

Google アカウントに付与されている現在の無料割り当ての上限に達した場合は、Gemini API キーまたは Google Cloud Vertex AI を使用できます。この場合、プロジェクト ID とそのプロジェクトのロケーション名が必要になります。他の認証方法を使用する場合は、ドキュメントの認証セクションを参照してください。

afce8d90e20adb6.png

[Enter] をクリックします。ブラウザで Google 認証ページが開きます。Google アカウントで認証を行い、利用規約に同意します。認証が完了すると、Gemini CLI がコマンドを待機していることがわかります。以下にスクリーンショットの例を示します。

ffd8ddfede565612.png

/help」(スラッシュ)を入力すると、次のようにさまざまなコマンドとキーボード ショートカットが表示されます。

d333742310905dcc.png

Gemini CLI との最初のやり取り

ボックスに最初のメッセージを入力します。次のようなクエリを指定します。

4dc0961206c1b568.png

クエリの結果、GoogleSearch ツール(Gemini CLI の組み込みツール)が呼び出されたことがわかります。これは、Gemini CLI の強力な組み込みツールの 1 つである GoogleSearch を使用して、ウェブから取得した情報に基づいて回答を生成する興味深い方法です。ツールについては、次のセクションで詳しく説明します。

ここでは Gemini CLI を終了します。これを行うには、/quit コマンドを使用するか、対話型 Gemini CLI ターミナル セッションで Ctrl-C を 2 回実行します。

Gemini CLI カスタマイズ ファイル : settings.json

Gemini CLI を初めて起動したときに、テーマと認証方法を選択するように求められたことを思い出してください。Gemini CLI を次回以降実行するときは、テーマと認証方法の選択を求められることはありません。つまり、どこかに保存され、使用されるファイルは settings.json と呼ばれ、Gemini CLI をカスタマイズする方法です。

設定は次の優先順位で適用されます。

  1. ワークスペース: .gemini/settings.json(ユーザー設定とシステム設定をオーバーライドします)。
  2. ユーザー: ~/.gemini/settings.json(システム設定をオーバーライドします)。
  3. システム: /etc/gemini-cli/settings.json(すべてのユーザーに適用されます)。

テーマを選択したときに、ユーザー設定に設定を保存するよう求められたことを思い出してください。~/.gemini folder にアクセスすると、settings.json ファイルが表示されます。

settings.json ファイルを以下に示します。別のテーマを選択していた場合は、その名前が表示されます。

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal"
}

3. 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 ターミナルの右下でモデルを確認できます。

6e662d03b61b2b3f.png

非インタラクティブ モード

興味深いオプションは、非インタラクティブ モードで Gemini CLI を実行することです。つまり、Gemini CLI のインタラクティブ ターミナルを開くことなく、プロンプトを直接指定して、応答を得ることができます。これは、スクリプトや他の自動化プロセスの一部として Gemini CLI を自動的に使用する場合に非常に便利です。-p パラメータを使用して、次のように Gemini CLI にプロンプトを指定します。

gemini -p "What is the gcloud command to deploy to Cloud Run"

フォローアップの質問で会話を続けることはできませんので、ご注意ください。

4. Gemini CLI - 組み込みツール

Gemini CLI には一連の組み込みツールが付属しており、ツールに関するドキュメントには「Gemini モデルはこれらのツールを使用してローカル環境とやり取りし、情報にアクセスしてアクションを実行します。これらのツールは CLI の機能を強化し、テキスト生成だけでなく、幅広いタスクを支援できるようにします。」

現在の組み込みツールの一覧を取得するには、次のように /tools コマンドを呼び出すだけです。

39939257e3f3818e.png

すぐに思いつくことの 1 つは、Gemini CLI が必要に応じてこれらのツールを呼び出すことができるかどうかを自問することです。ローカル システムへの書き込み、外部システムからの読み取り、外部ネットワークへのアクセスなど、機密性の高いオペレーションについては、デフォルトの回答は「いいえ」です。

CLI を起動すると --yolomode が使用可能になりますが、ここでは使用しません。Gemini CLI は、選択したツールを実行する権限を求めるプロンプトを表示します。権限を拒否したり、1 回だけ実行したり、常に実行する包括的な権限を付与したりできます。すべてを完全に制御できる状態にすべきです。

Gemini CLI が組み込みツールのいずれかを選択して実行するプロンプトを送信し、その仕組みを理解しましょう。

世界中の最新の金融ニュースに関する情報を取得し、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 ツールを呼び出してウェブを検索します。

122e6e4b01d05e69.png

検索が完了すると、次のようにデータが取得されます。

b721f40e6f643318.png

完了すると、ファイルに書き込む準備が整い、WriteFile ツールが使用されますが、これは機密性の高いオペレーション(書き込み)であるため、権限を求められます。権限の種類(1 回のみ許可、常に許可など)を決定できます。ここでは、[1 回のみ許可] を選択します。

e92f3a4774dc1e7.png

これにより、情報がファイルに書き込まれ、次のような成功メッセージが表示されます。

33c6afdb89033c35.png

ファイルが書き込まれたかどうかを確認するにはどうすればよいですか?@file を使用して、コンテンツの読み上げをリクエストできます。以下に示すように、プロンプトを指定します。@ と入力すると、現在のフォルダ内のファイルの一覧が表示され、作成したばかりのファイルが表示されます。そのコースを選択して、プロンプトを送信します。プロンプトは次のとおりです。

read the contents of @finance-news-today.txt

これにより、必要なツール(ReadManyFiles、ReadFile)が呼び出され、次のようにコンテンツが表示されます。

6f214cd743646f44.png

また、Gemini CLI 内から Shell を直接操作する方法を学ぶ良い機会でもあります。メッセージ ボックスで ! を押すと、シェルモードに切り替わります。シェルモードに切り替わります。! キーをもう一度押すか、ESC キーを押すと、元に戻ります。

シェルモードでは、次のようにプロンプトの先頭に ! が表示されます。

9e239408835a3acd.png

次のように、pwdls などの標準コマンドを使用して直接確認できます。

2f5d53d3c77fc8e2.png

本日、cat コマンドを使用してファイルの内容を出力できます。

2249b5c80e3ae2c0.png

演習: 以下の演習を試してください。任意の RSS フィードを選択します。Gemini CLI にプロンプトを指定して、RSS フィードのコンテンツを取得し、特定の方法で結果をフォーマットします。これは、1 日の始まりに何かを自動化するのに適した方法です。

ヒント: 最終的に、Gemini CLI で WebFetch ツールを使用するようにします。

5. 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 サーバーを確認できます。

255a14eb31529370.png

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(文字列配列): この MCP サーバーから含めるツール名のリスト。指定すると、このサーバーから利用できるのは、ここに記載されているツールのみになります(ホワイトリストの動作)。指定しない場合、サーバーのすべてのツールがデフォルトで有効になります。
  • excludeTools(文字列配列): この MCP サーバーから除外するツール名のリスト。ここに記載されているツールは、サーバーで公開されていても、モデルでは使用できません。注: excludeTools は includeTools よりも優先されます。ツールが両方のリストに含まれている場合は、除外されます。

GitHub を使用している場合に必要になる可能性のある主要な MCP サーバーの 1 つを構成しましょう。ただし、Gemini CLI はシステムにある git ツールを呼び出すため、代わりにそれを使用するように Gemini CLI に指示することもできます。コマンドの実行をサポートしてくれますが、システムにこれらのツールが設定されている必要があります。

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 を操作するために使用できるさまざまなツールを示しています。

e34f348129d448e9.png

まず、GitHub MCP サーバーのツールの 1 つを呼び出すプロンプトから始めましょう。次のプロンプトを入力します。

da643d182ac3fca4.png

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 ツールを表示できるようになります。

92f715d87989ff72.png

プロンプトで具体的な指示を出し、特定の 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 

受信した出力は次のとおりです。

fe79972a61372d59.png

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 サーバーの追加リストは次のとおりです。

  1. Firebase MCP サーバー
  2. Google Gen AI Media Services(Imagen、Veo、Lyria)
  3. MCP Toolbox for Databases(Firestore、BigQuery、Google Cloud データベースを操作)
  4. Google Workspace MCP サーバー(ドキュメント、スプレッドシート、カレンダー、Gmail と連携)

上記の MCP サーバーの設定手順については、こちらのブログ投稿をご覧ください。

6. 試してみるユースケース

Gemini CLI は、デベロッパーとデベロッパー以外の両方に適用される幅広いユースケースに適用できます。ここではいくつかのシナリオを紹介します。興味のある分野に応じて、これらのシナリオを試すことができます。

いずれの場合も、プロンプトが提供されます。Gemini CLI の起動時に -p パラメータを使用して、Gemini CLI のインタラクティブ モードまたは非インタラクティブ モードでこの機能を試すことができます。

ファイル/フォルダの整理

Gemini CLI を使用して、必要に応じてさまざまなフォルダ内のタイプに応じてファイルを整理できます。パソコンのフォルダに移動し、.txt、.png、.jpg、.pdf、.mp4 などのファイルが複数あることを確認します。通常はデスクトップまたはダウンロード フォルダです。

そのフォルダに移動して、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.

その他の整理シナリオ(各シナリオの横にプロンプトが表示されます):

  1. 要約: 「Documents」フォルダ内の各ドキュメントについて、ドキュメントの要点を 3 文で要約した「summary_ORIGINAL_FILENAME.txt」という名前の txt ファイルを同じフォルダに作成します。
  2. タイプ別に分類: このディレクトリ内のすべての PDF ファイルと DOCX ファイルをスキャンします。名前またはコンテンツに「invoice」が含まれるすべてのファイルを「Financial/Invoices」フォルダに移動します。「receipt」を含むファイルを [Financial/Receipts] に移動します。その他の .docx ファイルは [Reports] に移動します。
  3. キー情報の抽出(および「タグ付け」): 「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 テーブル形式で表示します。
  • PDF のテーブルからデータを抽出する: 「quarterly_sales.pdf」の 3 ページにある「地域別の商品売上」を示すテーブルからデータを抽出し、Markdown テーブル形式で表示します。
  • ニュース ウェブサイトからニュースの見出しとソースを抽出する: 「https://news.google.com/」(または同様のニュースサイト)にアクセスします。トップページからメインの見出しと、それに対応するニュース提供元を抽出します。箇条書きリストで提示してください。
  • e コマース ページから商品の仕様を見つける: 「https://www.amazon.in/Google-Cloud-Certified-Associate-Engineer/dp/1119871441」(書籍の例)に移動します。書籍のタイトル、著者などの詳細情報を抽出します。構造化された JSON 形式で提示します。

コンテンツに基づく質問への回答(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 image files. 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.

次のような出力が表示されます。

fb4183498d02229.png

テキスト以外の形式のファイルにも適用できます。

Gemini CLI を使用してデータベースを操作する

Gemini CLI を使用すると、さまざまなデータベースをより効率的に操作できます。自然言語でのクエリ、データのエクスポート、データベース スキーマの設計、現実的なテストデータの生成など、複数のシナリオで使用できます。

このデモでは SQLite3 を使用します。SQLite3 をインストールし、Chinook サンプル データベースを用意する必要があります。

SQLite3 の設定手順の概要は次のとおりです。

  1. macOS: SQLite3 がプリインストールされています。sqlite3 --version で確認します。必要に応じて、Homebrew を使用してインストールします(brew install sqlite3)。
  2. Windows: SQLite ウェブサイトからコンパイル済みのバイナリをダウンロードします。ファイルをディレクトリ(C:\sqlite)。そのディレクトリをシステムの PATH 環境変数に追加します。
  3. Linux: Debian/Ubuntu: sudo apt update && sudo apt install sqlite3

Chinook サンプル データベースをダウンロードします(直接リンク)。

これらのプロンプトを実行するには、gemini-cli-projects ディレクトリにフォルダ(database-tasks)を作成することをおすすめします。Chinook データベース ファイルをそのフォルダにコピーします。Gemini CLI が使用できるように、sqlite3 ツールがシステムに設定され、パスで使用可能になっていることを確認します。Gemini CLI を起動します。

データベース スキーマの図を次に示します。

fb8e96c21ad57590.png

database-tasks という名前のフォルダにいて、Chinook データベース ファイルの名前が chinook.db であるとします。

データベースの操作に役立つプロンプトをいくつか紹介します。1 つ目の例については、リクエストされる権限を示すために簡単に説明します。

まず、データベースに存在するテーブルを一覧表示するよう求めるプロンプトから始めます。次のプロンプトを入力します。

What tables are present in the @chinook.db 

このツールは、ファイルの内容を読み取ってから、システムに存在する sqlite3 ユーティリティを使用して必要な処理を行います。

b2a17ef60706c3f5.png

1 回実行する権限を付与すると、必要な出力が得られます。

8d40754b830f4697.png

次のプロンプトまたは任意のプロンプトを試してみてください。

  • 従業員数は何人ですか?
  • 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).

Gemini CLI を使用したバイブ コーディング

Gemini CLI を使用してアプリケーションをバイブコード化してみましょう。Gemini CLI にアプリケーションの生成を依頼し、初期バージョンを Github リポジトリに push します。

要件

このセクションのタスクを実行するには、次のものが必要です。

  • Git
  • Github MCP サーバーを使用した Gemini 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 とやり取りしてください。

90232297f1e952f8.png

サーバーを起動しないように指示しましたが、同じシェル コマンドが表示され、実行してよいか尋ねられました。自分で開始する方が制御しやすいので、そうしないことにしました。

次のメッセージを送信しました。

d74e235b0db77c51.png

手順に沿ってサーバーを起動したところ、次のサイトが正常に動作していることを確認できました。

71a0a6123a90e068.png

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

ここでは、いくつかのコマンドについて説明します。

  1. リポジトリを作成します。
  2. ローカル Git リポジトリの管理には、複数の Git コマンド(init、add、commit)が使用されます。
  3. 次に、Git リモートを設定して push を実行します。

注: Gemini CLI がタイムアウトしたり、誤ったユーザー名を使用したりするインスタンスが確認されています。Gemini CLI を操作して、修正を提案してください。

問題がなければ、GitHub リポジトリが作成されます。以下に、スクリーンショットの例を示します。

35c2db48c39fb21a.png

README.md などの通常行う処理は生成していませんが、これは次のセクションで作成したリポジトリを操作する良い練習になります。

Gemini CLI を使用して Github リポジトリを操作する

このユースケースでは、Gemini CLI を使用して Github リポジトリを操作します。次のような複数のシナリオについて説明します。

  • コードベースを理解する
  • ドキュメントの生成
  • 新機能の実装
  • 変更を commit してリポジトリに push して戻します。
  • Github の Issue に取り組み、提案された変更を実装する

これにより、リポジトリを操作し、これらのデベロッパー固有のタスクで Gemini CLI をアシスタントとして使用するための基盤が整います。

要件

このセクションのタスクを実行するには、次のものが必要です。

  • Git
  • Github MCP サーバーを使用した Gemini CLI(これは先ほど行いました)
  • Git の基本とプログラミングの知識(この例では Node.js を使用します。Gemini CLI をインストールしているため、マシンに環境がすでに準備されている可能性があります)。後で、別のプログラミング言語とフレームワークを使用して、任意のリポジトリを選択することもできます。
  • 前のセクションを完了し、Event Talks ウェブサイトを作成したリポジトリを手元に用意しておく必要があります。

Event Talks アプリケーションの生成に使用したフォルダ/ディレクトリから Gemini CLI を引き続き使用します。必要に応じて、リポジトリをローカルマシンにクローンしてから、そのディレクトリから Gemini CLI を起動することもできます。以下のシナリオを試してください。

コードベースを理解する

  • このプロジェクトについて詳しく知りたいです。主な機能について説明し、サーバーサイドとクライアントサイドに分けてください。サンプル フローを使用して、リクエストとレスポンスの仕組みを説明してください。
  • @server.js について説明して

README ファイルの生成

  • このプロジェクトの README ファイルを生成します。

この場合、Gemini CLI は README ファイルを生成しただけでなく、Git リポジトリに追加するコマンドを実行して変更をリモートに push しようとしました。私はこれを許可しました。また、LICENSE ファイルを生成することも提案されたので、これも許可しました。

README ファイルと LICENSE ファイルが生成され、変更が GitHub に push されました。

d77239c8fae0aa8b.png

新機能の実装

  • ユーザーが特定のスピーカーで検索できる新機能を実装したいと考えています。まず、この変更を実装する方法の計画を示してください。その後、コードを生成します。

プランが提示されたので、承認したところ、変更が実行されました。変更をテストし、バグ(可能性が高い)がある場合は、Gemini CLI に修正を依頼します。

変更内容が適切であることを確認したら、同じ手順で commit してリモート リポジトリに push します。

提案された機能に基づいて問題を生成する

ここで興味深いことを試してみましょう。Gemini CLI にこのアプリケーションのユーザー エクスペリエンスを改善する方法を尋ね、その評価に基づいて、同じ GitHub リポジトリに問題として提案を作成します。Github MCP サーバーの「create_issue」ツールを使用します。

次のプロンプトを試してください。

  • ユーザー エクスペリエンスの観点からアプリケーションを評価していただきたいです。使いやすさ、応答性、役立つメッセージなど。改善点のリストを作成し、それらを Github リポジトリの Issue として作成してください。

理想的には、まず改善点をユーザーと共有し、ユーザーの許可を得てから Github リポジトリで問題を作成します。実行結果のスクリーンショットの例を次に示します。

495b0f7afab91ec6.png

Github の Issue に取り組み、提案された変更を実装する

これで、先ほど生成された問題の 1 つを取り上げ、Gemini CLI にその問題の解決と実装を依頼できるようになりました。

生成された問題の例を以下に示します。

2e41f9f6eac3d1b.png

問題の URL 全体をコピーして、次のようなプロンプトを入力します。

  • 問題: <YOUR_ISSUE_URL> を確認し、必要な変更を理解してください。まずプランについて説明し、次に提案された変更をコードで示します。

変更を承認してリポジトリに push してください。問題をクローズするよう依頼することもできます。

cd3c89cf3d47723b.png

7. (省略可)GEMINI.md を使用して Gemini CLI をカスタマイズする

これまでの Gemini CLI の使用状況を見ると、プロンプトを指定して Gemini CLI に実行を期待するだけで、期待どおりの結果が得られないことがありました。一部のプロンプトでは、具体的な操作手順をプロンプトに含めています。

これは、Gemini CLI に指示した内容と取得した結果に応じて、正常に機能する可能性があります。ただし、多くの場合、ルールに従うようにする必要があります。これらのルールは、使用する特定のプログラミング言語やフレームワークである可能性があります。特定のツールである場合もあります。コーディング スタイルである可能性があります。生成だけでなく、Gemini CLI を「計画」モードに厳密に設定して、計画の提示のみを行い、コードの生成やシステム上のファイルの変更を行わないようにすることもできます。

GEMINI.md と入力します。これは、Gemini モデルに提供される指示コンテキスト(「メモリ」とも呼ばれます)の構成に不可欠なコンテキスト ファイルです(デフォルトは GEMINI.md ですが、contextFileName 設定で構成できます)。このファイルを使用すると、プロジェクト固有の指示、コーディング スタイルガイド、関連する背景情報を AI に提供できるため、ニーズに合わせてよりカスタマイズされた正確な回答を得ることができます。

GEMINI.md ファイルはマークダウン形式で、階層形式で読み込まれ、複数の場所から結合されます。

読み込み順序は次のとおりです。

  1. グローバル コンテキスト: **~/.gemini/GEMINI.md**(すべてのプロジェクトに適用される手順の場合)。
  2. プロジェクト/祖先コンテキスト: CLI は、現在のディレクトリからプロジェクト ルートまで GEMINI.md ファイルを検索します。
  3. サブディレクトリ コンテキスト: 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 説明モード)を学習し、要件に合わせて再利用できます。これは、GEMINI CLI がインタラクティブなガイドとして、ユーザーが会話型の検出プロセスを通じて複雑なコードベースを理解できるようにすることに重点を置いています。

GEMINI.md ファイルは、Gemini CLI がユーザーの好みに沿って動作するための鍵となります。この分野を掘り下げ、プロジェクト用に自動生成する方法、システム プロンプトなどのカスタマイズ方法について説明する実践的なシリーズ「実践的な Gemini CLI」をご覧ください。

8. 完了

お疲れさまでした。Gemini CLI とその機能について学習し、いくつかのユースケースに適用しました。

リファレンス ドキュメント