Gemini CLI を使った実践演習

1. はじめに

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

学習内容

  1. Gemini CLI をインストールして構成する
  2. Gemini CLI でのツールの探索、組み込みコマンド、MCP サーバーの構成
  3. GEMINI.md ファイルを使用して Gemini CLI をカスタマイズする
  4. Gemini CLI を使用したユースケースの例

必要なもの

この Codelab は、Gemini CLI がプリインストールされている Google Cloud Shell 内で完全に実行できます。

独自のマシンで作業する場合は、Gemini CLI をローカルにインストールするセクションをご覧ください。

必要なものは次のとおりです。

  • Chrome ウェブブラウザ
  • Gmail アカウント

この Codelab は、あらゆるレベルのユーザーとデベロッパー(初心者を含む)を対象としています。この Codelab のユースケースは、デベロッパー タスクとデベロッパー以外のタスクに分類されています。デベロッパーのユースケースでは、Gemini CLI を使用したバイブ コーディングの方法と、Github リポジトリを使用してコードの説明/理解、ドキュメントの生成、問題の修正などの一般的な開発タスクを実行する方法を示します。この Codelab では、これらのユースケースを完了することをおすすめします。最後に、デベロッパー以外のユーザーを対象とした日常的なタスクをいくつか紹介する省略可能なセクションがあります。

2. 始める前に

プロジェクトを作成する

  1. Google Cloud コンソールのプロジェクト選択ページで、Google Cloud プロジェクトを選択または作成します。
  2. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。
  3. Cloud Shell(Google Cloud で動作するコマンドライン環境)を使用します。この環境には bq がプリロードされています。Google Cloud コンソールの上部にある [Cloud Shell をアクティブにする] をクリックします。

[Cloud Shell をアクティブにする] ボタンの画像

  1. Cloud Shell に接続したら、次のコマンドを使用して、すでに認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されていることを確認します。
gcloud auth list
  1. Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
  1. プロジェクトが設定されていない場合は、次のコマンドを使用して設定します。
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 をインストールして実行できます。

  1. まず、システムに Gemini CLI をグローバルにインストールできます。この手順を行うには、管理者権限が必要になることがあります。
# option 1: install Gemini CLI

npm install -g @google/gemini-cli

# .. and then run
gemini
  1. 次のコマンドで実行します。
# option 2: run without installing Gemini CLI

npx https://github.com/google-gemini/gemini-cli

次のコマンドを実行して、CLI がインストールされていることを確認できます。

gemini --version

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

35a98edaf7f22e8e.png

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

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

57bad75cedaaaa38.png

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

4dbc0138b78dc354.png

4. settings.json を使用した Gemini CLI の構成

Gemini の実行に Cloud Shell を選択すると、Gemini CLI のデフォルトのテーマと認証方法がすでに選択され、構成されています。

マシンに Gemini CLI をインストールして初めて起動した場合は、テーマと認証方法を選択しました。

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

設定は次の優先順位で適用されます(Cloud Shell ではユーザー設定のみが使用可能です)。

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

Windows ユーザー: %USERPROFILE%.gemini\settings.json(通常は C:\Users&lt;ユーザー名>.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 Searching the web for: "famous quote on Artificial Intelligence and who said it"                                                                                                                 ...
Search results for "famous quote on Artificial Intelligence and who said it" returned.                                                                                                                             

✦ "The development of full artificial intelligence could spell the end of the human race." - Stephen Hawking.

クエリの結果、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 ターミナルの右下にモデルが表示されます。

60c4c0e6d277ade7.png

Gemini CLI アプリケーションで、/model コマンドを使用して、モデルを選択できるダイアログを開きます。サンプル実行を以下に示します。要件とガイダンスに応じて、モデルを切り替えて、複雑さと費用管理の必要性に応じてタスクに適したモデルを選択できます。

4bd48822b92ba012.png

非対話型モード

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

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

フォローアップの質問で会話を続けることはできませんので、ご注意ください。このモードでは、ツール(WriteFile を含む)の承認やシェル コマンドの実行も許可されません。

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

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

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

Available Gemini CLI tools:

  - Codebase Investigator Agent (codebase_investigator)
  - Edit (replace)
  - FindFiles (glob)
  - GoogleSearch (google_web_search)
  - ReadFile (read_file)
  - ReadFolder (list_directory)
  - SaveMemory (save_memory)
  - SearchText (search_file_content)
  - Shell (run_shell_command)
  - WebFetch (web_fetch)
  - WriteFile (write_file)
  - WriteTodos (write_todos)

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

CLI の起動時に --yolo を使用できますが(通常はおすすめしません)、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 ツールを呼び出してウェブを検索し、結果を取得します。

GoogleSearch Searching the web for: "latest finance headlines today"                                                                                                                                            

Search results for "latest finance headlines today" returned.  

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

c84c5b58e202f98f.png

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

✦ I have successfully saved the latest finance headlines into the file finance-news-today.txt.

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

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

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

7a5fc5d834cbb93b.png

8. Gemini CLI - シェルモード

Gemini CLI 内から Shell を直接操作する方法を学習するのに最適なタイミングです。メッセージ ボックスで ! を押すと、シェルモードに切り替わります。シェルモードに切り替わります。! をもう一度押すか、ESC キーを押すと、前の画面に戻ることができます。

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

a87f54bb3066b82d.png

次の例に示すように、pwdls などの標準コマンドを使用して直接確認できます。コマンドは Linux タイプの OS を想定しています。別のオペレーティング システム(Windows)を使用している場合は、同等のコマンド(cddirtype など)を使用してください。これらの呼び出しの出力は、モデルのコンテキスト ウィンドウに含まれます。

33a18abe5581ff74.png

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

6dbe0049ed002553.png

演習: 以下の演習を試してください。任意の 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. Gemini CLI 拡張機能

ドキュメントに記載されているように、Gemini CLI 拡張機能は、プロンプト、MCP サーバー、カスタム コマンドを使い慣れたユーザーフレンドリーな形式でパッケージ化します。拡張機能を使用すると、Gemini CLI の機能を拡張し、その機能を他のユーザーと共有できます。これは、Gemini CLI の機能を組み込みツールを超えて拡張するための主要なメカニズムです。

拡張機能は、自己完結型でバージョン管理が可能で、簡単に配布できるパッケージです。これは、Gemini CLI のカスタマイズの「輸送コンテナ」のようなもので、特定のワークフローに必要なものをすべて 1 つの整然としたパッケージにバンドルします。

f5ae3e229462c130.png

拡張機能は、次の任意の組み合わせをバンドルできます。

  • カスタム スラッシュ コマンド(.toml ファイル)。
  • MCP サーバー構成(以前は settings.json に存在していました)。
  • モデルに具体的な手順とガイドラインを提供するコンテキスト ファイル(GEMINI.md)。
  • より安全で集中しやすい環境を構築するためのツール制限(excludeTools)。

拡張機能ギャラリーは、Google が作成した公式の拡張機能とサードパーティの拡張機能をすべて見つけることができる中央のマーケットプレイスです。

  1. ブラウザで次の URL(https://geminicli.com/extensions/browse/)を開きます。
  2. このギャラリーは、エコシステムの検出エンジンです。GitHub、Redis、DynaTrace などの企業の拡張機能が表示され、利用可能なツールの幅広さがわかります。
  3. 下にスクロールして、Cloud Run の拡張機能カードを見つけます。
  4. カードには、説明、作成者(Google)、ワンクリックの Copy コマンドボタンが表示されます。これが拡張機能のインストール コマンドを取得する最も簡単な方法です。

Gemini CLI 拡張機能 - 管理コマンド

gemini extensions コマンドは、ローカル拡張機能を管理するためのエントリ ポイントです。

ターミナルで実行すると、使用可能なコマンドのリストが表示されます。

gemini extensions <command>

Manage Gemini CLI extensions.

Commands:
  gemini extensions install <source> [--auto-update] [--pre-release]   
      Installs an extension from a git repository URL or a local path.
  gemini extensions uninstall <names..>                                  
      Uninstalls one or more extensions.
  gemini extensions list
      Lists installed extensions.
  gemini extensions update [<name>] [--all]                           
      Updates all extensions or a named extension to the latest version.
  gemini extensions disable [--scope] <name>                          
      Disables an extension.
  gemini extensions enable [--scope] <name>                           
      Enables an extension.
  gemini extensions link <path>                                       
     Links an extension from a local path. Updates made to the local path 
     will always be reflected.
  gemini extensions new <path> [template]                             
     Create a new extension from a boilerplate example.
  gemini extensions validate <path>                                   
     Validates an extension from a local path.

コマンドは簡単です(インストール/アンインストール、リスト、更新、有効/無効など)。この Codelab では、これらのコマンドの一部を使用します。

現在の拡張機能のリストを確認する

インストールを行う前に、クリーンな状態を確認しましょう。

  1. gemini extensions list コマンドを実行します。
  2. 次の出力が表示され、拡張機能がまだインストールされていないことが確認されます。
No extensions installed.

Github MCP サーバーの構成

Gemini CLI 拡張機能のタイプの 1 つは MCP サーバーです。MCP サーバーは、Model Context Protocol を介してツールとリソースを Gemini CLI に公開するアプリケーションです。これにより、外部システムやデータソースとやり取りできます。MCP サーバーは、Gemini モデルとローカル環境や API などの他のサービスとの間の橋渡し役として機能します。

Gemini 拡張機能ギャラリーで利用可能な Github MCP サーバーがあります。クリックすると、拡張機能カードが開き、拡張機能をインストールするコマンドも表示されます。

4eee33951dabd2db.png

コピーするか、次のコマンドを使用します。

gemini extensions install https://github.com/github/github-mcp-server

必要な権限を付与して続行します。インストールが完了すると、gemini extensions list コマンドを実行したときに、拡張機能のリストにこの拡張機能が表示されます。

✓ github (1.0.0)
 ID: faa318861b48de8d83c95eb8cd5e82c02393493978d198a0e7bf67fcb1bd22cb
 name: c0b0109d9439de57fe3cf03abeccbc52f4c98170c732d3b69af5e6395ace574e
 Path: /home/romin/.gemini/extensions/github
 Source: https://github.com/github/github-mcp-server (Type: git)
 Enabled (User): true
 Enabled (Workspace): true
 MCP servers:
  github

拡張機能のパスが表示されます。そのフォルダには gemini-extension.json という名前のファイルがあり、その内容は次のとおりです。

{
  "name": "github",
  "version": "1.0.0",
  "mcpServers": {
    "github": {
      "description": "--description–",
      "httpUrl": "https://api.githubcopilot.com/mcp/",
      "headers": {
            "Authorization": "Bearer $GITHUB_MCP_PAT"
      }
     }
  }
}

環境変数を使用して個人用アクセス トークン(PAT)が読み取られていることがわかります。まず、Github の個人用アクセス トークン(PAT)が必要です。取得したら、.env ファイルを作成してこの値を配置するか、次のように環境変数を作成します(PAT_VALUE は実際の値に置き換えます)。

export GITHUB_MCP_PAT=PAT_VALUE

Gemini CLI を再起動する必要があります。起動したら、/mcp list コマンドを使用して、利用可能な MCP サーバーとそれぞれのツールのリストを表示できます。GitHub MCP サーバーが緑色で表示され、そのツール(30 個以上)も表示されます。以下に一部を示します。

🟢 github(github から)- 準備完了(40 個のツール)

ツール:

  • add_comment_to_pending_review
  • add_issue_comment
  • assign_copilot_to_issue
  • create_branch
  • create_or_update_file
  • create_pull_request
  • create_repository
  • delete_file
  • fork_repository
  • get_commit
  • get_file_contents
  • get_label
  • get_latest_release
  • get_me
  • get_release_by_tag
  • get_tag
  • get_team_members
  • get_teams
  • issue_read

まず、GitHub MCP サーバーのツールの 1 つを呼び出すプロンプトから始めましょう。次のプロンプトを入力します(GitHub での自分の名前は?)。これにより、Gemini CLI は正しいツールを選択し、権限を求めるメッセージを表示します。

c9873c3f51b26866.png

承認すると、次のように結果が取得されます。

✦ You are rominirani, a Developer Advocate at Google Cloud, located in Mumbai. You have 125 public repositories and 256 followers.

これで、いずれかの GitHub プロジェクトを使用できるようになりました。次のように自然言語でクエリを指定します。

  • <repo-name> について説明して
  • ローカルマシンに <repo-name> のクローンを作成します。
  • @<ファイル名> または @<ディレクトリ名>/ を説明します。
  • このリポジトリのコンポーネントにはどのようなものがありますか?
  • 必要な変更を行いました。変更を Github に push して、Github MCP Server ツールを使用して変更できますか?

GitHub MCP サーバーの詳細な操作については、この後のラボで演習を行います。

Cloud Run MCP サーバーの構成

Gemini CLI 拡張機能ギャラリーで利用可能な Cloud Run 拡張機能は、アプリケーションを Cloud Run にデプロイできる MCP サーバーです。

以下は、拡張機能ギャラリーの Cloud Run 拡張機能カードです。

ed9b19eac1fbde78.png

まず、上の図のように [インストール コマンドをコピー] をクリックして、Cloud Run 拡張機能をインストールします。次に、そのコマンドを Cloud Shell ターミナルに貼り付けます(次のようになります)。

gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp

上記のコマンドを実行すると、確認が必要なメッセージが表示されます。承認してください。Cloud Run 拡張機能が正常にインストールされます。

ここで gemini extensions list コマンドを実行すると、次のように Cloud Run 拡張機能がインストールされていることがわかります。

✓ cloud-run (1.0.0)
 ID: 3c1a38909b6d7d90b6acc8ca1e80d97b4a867253a3cd12d841b2aab4e556a58f
 name: 0b1820c1f0c043bbb3b54f496d862c02172424c930eb965d61f468be52e6f127
 Path: /home/romin/.gemini/extensions/cloud-run
 Source: https://github.com/GoogleCloudPlatform/cloud-run-mcp (Type: git)
 Enabled (User): true
 Enabled (Workspace): true
 Context files:
  /home/romin/.gemini/extensions/cloud-run/gemini-extension/GEMINI.md
 MCP servers:
  cloud-run

ここで Gemini CLI を起動して /mcp list コマンドを実行すると、次のようになります。

🟢 cloud-run (from cloud-run) - Ready (8 tools, 2 prompts)
  Tools:
  - create_project
  - deploy_container_image
  - deploy_file_contents
  - deploy_local_folder
  - get_service
  - get_service_log
  - list_projects
  - list_services
  Prompts:
  - deploy
  - logs

上記は、構成方法を示した Gemini CLI 拡張機能のほんの一例です。拡張機能ギャラリーで詳細を確認するか、「Gemini CLI 拡張機能を使ってみる」の Codelab をご覧ください。

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

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

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

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

Gemini CLI を使用してアプリケーションをバイブコード化してみましょう。このタスクでは、Gemini CLI にアプリケーションの生成をリクエストし、最初のバージョンを GitHub リポジトリに push します。

要件

このセクションのタスクを実行するには、いくつかの前提条件があります。

  • Git
  • Github Gemini CLI 拡張機能を使用する Gemini CLI(前述)または ghGithub CLI ツール)を設定している場合も同様です。
  • Git の基本とプログラミングの知識

ここでは、任意の特定のフォルダで Gemini CLI を起動していることを前提とします。

最初のプロンプトから始めます。必要に応じて変更してください。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 は計画を立て、確認や説明を求めたり、続行したりします。手順に沿って操作してください。以下は会話スレッドの例です。

   1. Backend (Node.js/Express):
       * Set up an Express server to serve the static frontend files.
       * Create an /api/schedule endpoint that will:
           * Generate the event schedule dynamically, including talk timings and the lunch break, based on your requirements.
           * Store mock talk data (title, speakers, category, description).
           * Filter the schedule based on a category query parameter.

   2. Frontend (HTML, CSS, JavaScript):
       * Create an index.html file for the main structure.
       * Develop style.css for a clean and responsive design.
       * Write script.js to:
           * Fetch the schedule data from the backend.
           * Dynamically render the talks and lunch break on the page.
           * Implement a search input that filters talks by category, updating the displayed schedule without a full page reload.

   3. Schedule Logic:
       * The backend will handle calculating the precise start and end times for each 1-hour talk, factoring in the 10:00 AM start, 10-minute transitions, and the 1-hour lunch break.

  Before I proceed with the code, could you please clarify the following:

   * Example Talk Data: Could you provide some example talk titles, speakers, categories (keywords), and descriptions? This will help me create realistic dummy data for the schedule.
   * Lunch Break Placement: Where should the 1-hour lunch break be placed in the schedule? (e.g., after the 3rd talk, at 1 PM, etc.)
   * Styling Preferences: Do you have any specific styling preferences (e.g., color scheme, modern/minimalist, etc.)? If not, I will go with a clean, simple design.

 I will create a single-page website for your event. Here's my plan:

  WriteTodos Set 7 todo(s)                                                                                                                                                                                        

 I am waiting for your clarifications regarding the example talk data, lunch break placement, and styling preferences before I proceed with generating the code.

最後に、次のような要約が表示されました。

 Instructions to Run and Test Locally:

   1. Start the server:
      Open your terminal in the project directory (/home/romin/gemini-cli-projects/event-website/) and run:
   1     node server.js
      You should see a message in the terminal indicating: Server running on http://localhost:3000.

   2. Open in your browser:
      Open your web browser and navigate to:
      http://localhost:3000

   3. Test functionality:
       * You should see the event schedule displayed on the page, with talks and a lunch break.
       * Search by category: In the "Search by category..." input box, type a category keyword (e.g., "AI", "Web Development", "Python", "Security").
       * Click the "Search" button. The schedule displayed should filter to only show talks matching that category.
       * Click the "Reset" button to clear the search filter and view the full schedule again.

  Let me know if you encounter any issues or if you'd like to make any modifications or additions to the website!

サーバーを起動してホームページに移動する手順に沿って操作すると、次のようなサンプルサイトが表示されました(同じプロンプトを使用した場合、同様のサイトのバリエーションが表示されます)。

78c224b7ce29bb4d.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 リポジトリが作成されます。以下に、スクリーンショットの例を示します。

d046ee11d28e4d33.png

このプロジェクトの README.md は生成していません。これは次のセクションで取り組むとよいでしょう。次のセクションでは、作成したばかりのこのリポジトリを使用します。

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

このユースケースでは、Gemini CLI を使用して GitHub リポジトリを操作します。次のタスクを行います。

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

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

要件

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

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

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

コードベースを理解する

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

README ファイルの生成

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

新機能の実装

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

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

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

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

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

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

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

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

86c33b7815c7872a.png

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

これで、以前に生成された問題の 1 つを取り上げ、Gemini CLI にその問題の解決と実装を依頼できます。

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

2778bde35f41efe9.png

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

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

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

(省略可)日常的なタスク

以下のユースケースは、定期的に行う可能性のあるタスクです。たとえば、ファイルをフォルダに整理する、ウェブからコンテンツを取得して要約する、画像ファイルを処理してコンテンツを抽出する、データベースを操作するなどのタスクがあります。

ご興味のあるユースケースを自由にご覧ください。

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

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

フォルダの例とフォルダの内容を以下に示します(他のファイルが含まれている場合もあります)。

7011e3dfaf628e9b.png

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

フォルダの最終的な状態の例を以下に示します。新しいサブフォルダが作成され、ファイルがタイプに応じてそれぞれのサブフォルダに移動されます。

4c1ee9ddea4b3f5f.png

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

  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 テーブル形式で表示します。
  • ニュース ウェブサイトからニュースの見出しとソースを抽出する: 「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.

理想的には、次のような出力が得られます。

7203d699d875a91f.png

別のシナリオとして、追加の派生列をリクエストすることもできます。過去のすべての請求書の期日に赤いバツ印の絵文字を表示するとします。次のようにプロンプトを指定できます。

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.

出力は次のようになります。

e11fcde0400f5a0b.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 を起動します。

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

4178b54e03a07d60.png

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

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

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

What tables are present in the file: chinook.db 

このツールは、ファイルを読むために使用され、システムに存在する sqlite3 ユーティリティを使用して必要な処理を行います。

a8d782201eba1eb8.png

期待される出力を得るために、一度実行する権限を付与します。

69e96f22610e7892.png

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

  • 従業員数は何人ですか?
  • invoices テーブルのスキーマは何ですか?
  • 合計額の上位 3 件の請求書と、それらの請求書を発行したお客様は誰ですか?

Gemini CLI は、要件を満たす正しい SQL ステートメントを生成し、正しい sqlite3 コマンドを提供します。

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).

11. 完了

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

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