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 の構成

Cloud Shell を選択して Gemini を実行する場合、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 が回答します。スクリプトやその他の自動化プロセスの一部として 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)

まず、Gemini CLI がこれらのツールを必要に応じて簡単に呼び出せるかどうかを自問する必要があります。ローカル システムへの書き込み、外部システムからの読み取り、外部ネットワークへのアクセスなど、機密性の高い操作を行う場合、デフォルトの回答は「いいえ」です。

CLI を起動するときに --yolo を使用できます(通常は推奨されません)。この場合、Gemini CLI は選択したツールを実行する際に、権限を求めるメッセージを表示します。権限を拒否する、1 回だけ実行する、包括的な権限を付与して常に実行する、のいずれかを選択できます。これにより、すべてを完全に制御できます。

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 ツールを呼び出してウェブを検索し、結果を取得します。

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 から直接シェルを操作する方法を学習するのに最適なタイミングです。メッセージ ボックスで ! を押すと、シェルモードに切り替わります。シェルモードに切り替わります。! をもう一度押すか、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 に公開するアプリケーションです。これにより、Gemini CLI は外部のシステムやデータソースとやり取りできるようになります。MCP サーバーは、Gemini モデルとローカル環境または API などの他のサービスをつなぐ役割を果たします。

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

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> のクローンを作成して。
  • @<file-name> や @<directory-name>/ について説明して。
  • このリポジトリのコンポーネントにはどのようなものがありますか。
  • 必要な変更を加えました。GitHub MCP サーバーツールを使って、この変更を GitHub に push できますか。

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 拡張機能のほんの一例です。拡張機能ギャラリーで詳細を確認するか、Codelab「Gemini CLI 拡張機能を使ってみる」をお試しください。

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.

次のステップとして、このリポジトリを GitHub アカウントに push するよう Gemini CLI に指示します。これにより、バックグラウンドで GitHub MCP サーバーツールが実行されます。

次のようなプロンプトを入力します。

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 リポジトリを管理するために、init、add、commit などの複数の Git コマンドを使用します。
  3. 次に、Git リモートを設定して push を実行します。

注: 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 ファイルについて、その内容を読み取ります。日付が見つかった場合は、ファイル名を「invoice_2025-07-26_original_name.pdf」のように、YYYY-MM-DD 形式で日付を含む名前に変更します。

画像を整理する

マシンで画像コンテンツを整理する方法を見てみましょう。

試してみるには:

  • さまざまな画像ファイル(.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

1 回実行する権限を付与して、想定される出力を取得します。

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 とその機能について学び、いくつかのユースケースに適用できるようになりました。

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