概要
Gemini CLI は、コマンドラインから Gemini を使用できる無料のオープンソース AI エージェントです。既存のツールと連携し、バグの修正、新機能の作成、より優れたテストの作成など、難易度の高いタスクを支援します。プログラミングに最適ですが、コンテンツの生成、問題解決、調査、ToDo リストの管理など、日常的なタスクを支える汎用性の高いローカル アシスタントとしても使用できます。
目標
この初心者向けのラボでは、Gemini CLI の実践的な経験を積むことができます。
次の方法について学びます。
- Gemini CLI をインストールして実行する。
- Gemini CLI を使用してコードを説明する。
- Gemini CLI を構成し、ニーズに合った回答が得られるようコンテキストを提示する。
- プロンプトを再利用するカスタム スラッシュ コマンドを作成する。
- Gemini CLI ツールを使用して、ローカル ファイル システムに安全に変更を加える。
- Gemini CLI を使用して、アプリを構築および変更する。
設定と要件
[ラボを開始] ボタンをクリックする前に
注: 以下の説明をお読みください。
ラボには時間制限があり、一時停止することはできません。[ラボを開始] をクリックするとスタートするタイマーは、Google Cloud のリソースを利用できる時間を示しています。
この Google Skills ハンズオンラボでは、シミュレーションやデモ環境ではなく、実際のクラウド環境を使ってご自身でラボのアクティビティを実施できます。そのため、ラボの受講中に Google Cloud にログインおよびアクセスするための、新しい一時的な認証情報が提供されます。
必要なもの
このラボを完了するためには、下記が必要です。
- 標準的なインターネット ブラウザ(Chrome を推奨)
- ラボを完了するために十分な時間
注: すでに個人の Google Cloud アカウントやプロジェクトをお持ちの場合でも、ラボでは使用しないでください。
注: Pixelbook を使用している場合は、このラボをシークレット ウィンドウで実施してください。
ラボを開始してコンソールにログインする方法
-
[ラボを開始] ボタンをクリックします。ラボの料金をお支払いいただく必要がある場合は、表示されるポップアップでお支払い方法を選択してください。
左側のパネルには、このラボで使用する必要がある一時的な認証情報が表示されます。
![[認証情報] パネル](https://cdn.qwiklabs.com/%2FtHp4GI5VSDyTtdqi3qDFtevuY014F88%2BFow%2FadnRgE%3D)
-
ユーザー名をコピーし、[Google Console を開く] をクリックします。
ラボでリソースが起動し、別のタブで [アカウントの選択] ページが表示されます。
注: タブをそれぞれ別のウィンドウで開き、並べて表示しておきましょう。
-
[アカウントの選択] ページで [別のアカウントを使用] をクリックします。[ログイン] ページが開きます。
![[別のアカウントを使用] オプションがハイライト表示されている、アカウントのダイアログ ボックスを選択します。](https://cdn.qwiklabs.com/eQ6xPnPn13GjiJP3RWlHWwiMjhooHxTNvzfg1AL2WPw%3D)
-
[接続の詳細] パネルでコピーしたユーザー名を貼り付けます。パスワードもコピーして貼り付けます。
注: 認証情報は [接続の詳細] パネルに表示されたものを使用してください。Google Skills の認証情報は使用しないでください。請求が発生する事態を避けるため、Google Cloud アカウントをお持ちの場合でも、このラボでは使用しないでください。
- その後次のように進みます。
- 利用規約に同意します。
- 一時的なアカウントなので、復元オプションや 2 要素認証プロセスは設定しないでください。
- 無料トライアルには登録しないでください。
しばらくすると、このタブで Cloud コンソールが開きます。
注: 左上にある [ナビゲーション メニュー] をクリックすると、Google Cloud のプロダクトやサービスのリストが含まれるメニューが表示されます。
Google Cloud Shell の有効化
Google Cloud Shell は、開発ツールと一緒に読み込まれる仮想マシンです。5 GB の永続ホーム ディレクトリが用意されており、Google Cloud で稼働します。
Google Cloud Shell を使用すると、コマンドラインで Google Cloud リソースにアクセスできます。
-
Google Cloud コンソールで、右上のツールバーにある [Cloud Shell をアクティブにする] ボタンをクリックします。

-
[続行] をクリックします。
環境がプロビジョニングされ、接続されるまでしばらく待ちます。接続した時点で認証が完了しており、プロジェクトに各自のプロジェクト ID が設定されます。次に例を示します。

gcloud は Google Cloud のコマンドライン ツールです。このツールは、Cloud Shell にプリインストールされており、タブ補完がサポートされています。
- 次のコマンドを使用すると、有効なアカウント名を一覧表示できます。
gcloud auth list
出力:
Credentialed accounts:
- @.com (active)
出力例:
Credentialed accounts:
- google1623327_student@qwiklabs.net
- 次のコマンドを使用すると、プロジェクト ID を一覧表示できます。
gcloud config list project
出力:
[core]
project =
出力例:
[core]
project = qwiklabs-gcp-44776a13dea667a6
注:
gcloud ドキュメントの全文については、
gcloud CLI の概要ガイド
をご覧ください。
タスク 1. Gemini CLI をインストールして実行する
このタスクでは、Gemini CLI をインストールして実行します。
Cloud Shell で Gemini CLI を試す
Gemini CLI は、Cloud Shell で利用できます。追加の構成は必要ありません。
-
Gemini CLI を起動するには、Cloud Shell で次のコマンドを実行します。
gemini
Gemini CLI はすでに Cloud Shell にインストールされています。

Gemini CLI を初めて実行する際、自動的に最新の安定版に更新される場合があります。
-
このプロジェクトの認証方法を尋ねられたら、下矢印を使用して [Use Cloud Shell user credentials] を選択し、Enter キーまたは Return キーを押します。
-
使用可能なコマンドを確認するには、Gemini CLI で以下のコマンドを実行し、Enter キーまたは Return キーを押します。
/help
スラッシュ(/)で始まる Gemini CLI のコマンドは、スラッシュ コマンドと呼ばれます。スラッシュ コマンドを実行するには、Enter キーまたは Return キーを押します。
/help は、Gemini CLI に送信できるコマンドの一覧を表示します。また、シェルコマンドを実行する方法や、コンテキストとしてファイルを提示する方法も示します。
Gemini CLI が Gemini とやり取りするには、認証が必要です。
-
現在の認証方法を確認するには、次のスラッシュ コマンドを実行します。
/auth
現在は、Cloud Shell のユーザー認証情報が認証に使用されています。Gemini CLI は、ログインしているユーザーの認証情報を自動的に使用します。
-
認証ダイアログを終了するには、ESC(エスケープ)キーを押します。
-
Gemini CLI を終了するには、次のスラッシュ コマンドを実行します。
/quit
VM ターミナルに Gemini CLI をインストールする
次は、VM にログインし、VM のコマンドラインに Gemini CLI をインストールします。 という名前の VM がすでに作成されています。
-
Cloud Shell で、VM への SSH 接続を開きます。
gcloud compute ssh {{{project_0.startup_script.vm_name | VM_NAME}}} --zone={{{project_0.default_zone | ZONE}}}
-
必要に応じて、Enter キーまたは Return キーを押して、各入力のデフォルト値を指定します。
これで、Cloud Shell セッションが VM 内で実行できるようになります。
-
次のコマンドを実行します。
gemini
Gemini CLI は VM にデフォルトでインストールされていないため、コマンドが見つかりません。
Gemini CLI を実行する方法は複数あります。
-
npm を使用してグローバルにインストールし、標準インストールから実行するか、npx を使用してグローバルにインストールせずに NPM からバージョンを実行します。
- コンテナ内で Gemini CLI を実行することで、サンドボックス内で利用できます。
- リポジトリのクローンを作成して、ソースコードから実行します。これは、Gemini CLI のコードベースに貢献したい場合に便利です。
- npx を使用して、GitHub リポジトリから最新の commit を実行できます。
npm または npx を使用するには、Node.js をインストールする必要があります。使用する Node.js のバージョンを管理するには、nvm をインストールすることもできます。
-
nvm をインストールするには、次のコマンドを実行します。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash
source ~/.bashrc
インストール スクリプトは nvm をインストールし、必要な設定を .bashrc ファイルに追加します。.bashrc ファイルを読み込むと、それらの設定が現在のシェル セッションに追加されます。
-
nvm を使用して Node の最新の安定版をインストールするには、次のコマンドを実行します。
nvm install node
Node のインストール時に npm もインストールされます。
これで Node と npm の最新の安定版がインストールされたので、Gemini CLI をインストールできます。
-
Gemini CLI をインストールするには、次のコマンドを実行します。
npm install -g @google/gemini-cli@0.9.0
インストールした Gemini CLI を実行する
Gemini CLI を初めて実行する際、認証のオプションが表示されます。VM 内のコマンドラインで実行しているため、Cloud Shell のユーザー認証情報のオプションは使用できません。
GEMINI_API_KEY 環境変数を使用して、Google AI Studio の API キーで Gemini を実行できます。
Google アカウントでログインするには、GOOGLE_CLOUD_PROJECT 環境変数を設定して使用するプロジェクトを指定する必要があります。その後、Gemini CLI からログインを求められます。
Vertex AI を使用するには、Google Cloud API キーを取得して、GOOGLE_API_KEY という名前の環境変数に渡すか、API キーの代わりにアプリケーションのデフォルト認証情報を使用して、GOOGLE_CLOUD_PROJECT 環境変数と GOOGLE_CLOUD_LOCATION 環境変数をエクスポートします。
-
Vertex AI を使用してプロジェクト ディレクトリで Gemini CLI を実行するには、次のコマンドを実行します。
export GOOGLE_CLOUD_PROJECT={{{project_0.project_id | PROJECT_ID}}}
export GOOGLE_CLOUD_LOCATION={{{project_0.default_region | REGION}}}
export GEMINI_MODEL=gemini-2.5-flash
echo "export GOOGLE_CLOUD_PROJECT={{{project_0.project_id | PROJECT_ID}}}" >> ~/.bashrc
echo "export GOOGLE_CLOUD_LOCATION={{{project_0.default_region | REGION}}}" >> ~/.bashrc
echo "export GEMINI_MODEL=gemini-2.5-flash" >> ~/.bashrc
mkdir ~/project1
cd ~/project1
gemini
このコマンドは以下のことを行います。
- Vertex AI でログインするために必要な変数をエクスポートします。
- Gemini で使用されるモデルを設定する変数をエクスポートします。
- これらのエクスポート ステートメントを .bashrc ファイルに追加して、VM にログインした際に変数が自動的にエクスポートされるようにします。
- Gemini を実行できるプロジェクト固有のディレクトリを作成します。
- Gemini を実行します。
Gemini から認証方法を選択するよう求められます。
-
[Vertex AI] を選択し、Enter キーまたは Return キーを押します。
必要な環境変数が提供されたため、Gemini CLI で認証されました。
-
Gemini CLI の設定を変更するには、次のスラッシュ コマンドを実行します。
/settings
ユーザー設定が表示されます。
-
下矢印キーを使用して [自動更新を無効にする] 設定までスクロールし、Enter キーまたは Return キーを押します。
[自動更新を無効にする] 設定が true に設定されています。
-
設定ダイアログを終了するには、ESC(エスケープ)キーを押します。
-
Gemini CLI を終了するには、/quit スラッシュ コマンドを入力します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Gemini CLI をインストールして実行する
タスク 2. Gemini CLI の構成を確認する
このタスクでは、Gemini CLI の構成について学びます。
Gemini CLI の構成ファイルは settings.json という名前で、3 つの異なるレベルで指定できます。
- ユーザー設定は
~/.gemini/settings.json で指定します。~ はホーム ディレクトリです。ユーザー設定ファイルの設定は、ユーザーのすべての Gemini CLI セッションに適用されます。
- プロジェクト設定は、プロジェクトのルート ディレクトリ内の
.gemini/settings.json で指定します。ここで設定した内容は、その特定のプロジェクトから Gemini CLI を実行する場合にのみ適用されます。
- Linux でのシステム設定は
/etc/gemini-cli/settings.json で指定します。管理者以外のユーザーは、通常、システム設定を変更できません。システム設定は、システム上のすべてのユーザー セッションに適用されます。
設定は階層的に適用されます。システム設定はプロジェクト設定をオーバーライドし、プロジェクト設定はユーザー設定をオーバーライドします。システム設定ファイルとプロジェクト設定ファイルは、それぞれに対応する設定が指定されるまで作成されません。
構成設定ファイルを確認する
-
ユーザー設定ファイルの内容を一覧表示するには、次のコマンドを実行します。
cat ~/.gemini/settings.json
選択した認証タイプ vertex-ai は、ユーザー設定で指定されています。
-
Gemini CLI を起動するには、次のコマンドを実行します。
cd ~/project1
gemini
-
Gemini CLI の設定を変更するには、次のスラッシュ コマンドを実行します。
/settings
-
上下の矢印キーを使用して [行番号を表示] 設定までスクロールし、Enter キーまたは Return キーを押します。
ユーザーに対して [行番号を表示] 設定が true に設定されています。CLI 入力のコードブロックに行番号が表示されるようになります。
また、プロジェクト レベルとシステムレベルの設定の一部もここで管理できます。
-
設定ダイアログを終了するには、ESC(エスケープ)キーを押します。
-
シェルモードに入るには、! キーを押します。
シェルモードでは、Gemini CLI 内からシステムのシェルを直接操作できます。感嘆符を 1 つ入力することで、シェルモードを切り替えることができます。
-
設定ファイルの新しい内容を確認するには、次のシェルコマンドを実行します。
cat ~/.gemini/settings.json
注: シェルモードで実行するコマンドは、ターミナルで直接実行した場合と同じ権限と影響を持ちます。そのため、ファイルやディレクトリを変更または削除できるコマンドを使用する場合は注意してください。
「showLineNumbers」設定が settings.json ファイルに表示されます。
Gemini CLI がシェルモードになっていることは、感嘆符のプロンプトと shell mode enabled のインジケーターで確認できます。

-
シェルモードを終了するには、! キーを押します。
-
Gemini CLI を終了するには、/quit スラッシュ コマンドを入力します。
コンテキストを追加する
コンテキスト ファイルは、Gemini モデルのための指示コンテキストを設定します。この機能を使用すると、プロジェクト固有のルール、コーディング スタイル ガイドライン、関連する背景情報を Gemini に提供できます。これにより、ニーズに合った回答を得ることができます。
Gemini CLI 用のコンテキストは通常、GEMINI.md という名前のファイルに保存されます。次に、コードベースを理解するため、コンテキスト ファイルを使用します。
-
Gemini CLI のコードベースをダウンロードし、コードベースのルート ディレクトリを一覧表示するには、次のコマンドを実行します。
cd ~
git clone https://github.com/google-gemini/gemini-cli.git
ls ~/gemini-cli
Gemini CLI のコードベースには、ルート ディレクトリに GEMINI.md コンテキスト ファイルが含まれています。開発タスクに Gemini を活用する場合、コンテキスト ファイルを通じて、コーディング標準、推奨されるライブラリとパターン、ビルドとテストの標準といったガイダンスを Gemini に提供できます。
-
gemini-cli ディレクトリで Gemini CLI を起動するには、次のコマンドを実行します。
cd ~/gemini-cli
gemini
-
Gemini CLI にコードベースについての説明を依頼するには、次のプロンプトを送信します。
現在のディレクトリにあるコードベースの概要を箇条書きで説明して。
Gemini CLI は、コード、GEMINI.md コンテキスト ファイルのコンテンツ、プロンプトを Gemini に送信します。
Gemini から次のような回答が返されます。
✦ Gemini CLI のコードベースの概要は次のとおりです。
* 目的: Google の Gemini AI をデベロッパーのコマンドラインに直接統合します。
* コア テクノロジー: Node.js と TypeScript で構築されています。
* ユーザー インターフェース: React(Ink)を利用して、インタラクティブなターミナル エクスペリエンスを実現します。
* 主な機能: AI を活用したコードの理解、生成、自動化、デバッグを提供します。
* ツール: ファイル システムの操作、シェルコマンド、Google 検索のグラウンディングのための組み込みツールが含まれます。
* 拡張性: Model Context Protocol(MCP)を介したカスタム統合をサポートします。
* 開発プラクティス: 最新の TypeScript ガイドラインに沿って、関数型プログラミング、不変性、Vitest を使用した包括的なテストを重視しています。
この概要は、コードの概要を把握するのに役立ちます。しかし、具体的な指示を与えないと、より詳細な回答が返される可能性があります。
今度は、独自のコンテキストを使用して、Gemini の回答を形成します。
-
Gemini CLI を終了するには、/quit スラッシュ コマンドを入力します。
-
ユーザー用の GEMINI.md コンテキスト ファイルを作成するには、次のコマンドを実行します。
cat > ~/.gemini/GEMINI.md <<EOF
# Gemini CLI: 説明モード
あなたは**説明モード**で動作する Gemini CLI。役割は、仮想シニア エンジニアおよびシステム アーキテクトとして機能すること。ミッションは、インタラクティブなガイドとして、会話形式の発見プロセスを通じて、ユーザーが複雑なコードベースを理解できるよう支援すること。
主な目標は、インテリジェンス ツールおよび発見ツールとして機能すること。コードベースの「どうやって」と「なぜ」を分解し、エンジニアがすばやく理解できるようにする。厳格な読み取り専用のインテリジェンス収集機能として動作する。何をすべきかを説明するのではなく、どのように機能し、なぜそのように設計されているのかを説明する。
コアループは、**範囲設定、調査、説明、そして次の論理的なステップの提案**で、ガイドであるあなたとともに、ユーザーが複雑なコードベースを理解できるようにする。
# 説明モードの基本原則
- **ガイド付きの発見:** 一度に詳細な説明をすべて提示するのではなく、複雑なトピックを小さな単位に分割し、ユーザーにどこから始めるかを尋ねる。目標は、講義をすることではなく、インタラクティブなツアーを提供すること。
- **徹底した読み取り専用アクセス権:** 依存関係のマッピング、実行パスのトレース、外部ドキュメントとのコードの相互参照により、システムを詳細に調査する。- **変更禁止:** あなたは基本的に分析ツールなので、プロジェクトやシステムを変更する行為は禁止。
- **コンテキストに応じたフォローアップ:** 説明の最後に、提示した情報に基づき、より深く掘り下げるための具体的かつ論理的な次のステップを提案する。
# インタラクティブなステップ
1. **確認と分解:** **説明モード**になっていることを確認する。ユーザーの最初の質問を分析する。質問が広範囲にわたる場合(例: 「認証システムについて説明して」、「データベースはどのように機能するの?」など)の場合、**最初の回答では、トピックを具体的なサブトピックのリストに分解する。** 次に、最初に調べたい内容をユーザーに選択してもらう。ユーザーから指示があるまで、処理を進めないこと。
2. **焦点を絞った調査の実施:** ユーザーの選択に基づいて、対象を絞った調査を実施する。詳細な説明を提示する前に、調査の進め方(調査のフットプリント)を簡単に要約する。
3. **技術的な説明の合成:** ユーザーが選択した*特定のサブトピック*について、明確で構造化された説明を作成する。概念のつながりを示し、設計パターンを解説して、関連コードが担う役割を明確にする。
4. **説明の提示と次のステップの提案:** 焦点を絞った説明を提示する。重要な点として、論理的に次に取るべきステップを表す、コンテキストに即した新たな質問のリストを提示して、回答を締めくくる。これにより、ユーザーをより深いシステム理解へと導く。たとえば、特定の API ルートについて説明した後、そのルートが呼び出すサービスや、使用するデータモデル、認証ミドルウェアを確認したいかどうかを尋ねる。EOF
このコンテキスト ファイルは、Gemini CLI を仮想シニア エンジニアおよびシステム アーキテクトに変える説明モード(Explain Mode)というモードを定義します。このモードは、インタラクティブなプロセスを通じて、ユーザーのコードベースの理解を支援するために設計されており、読み取り専用です。
-
Gemini CLI を起動するには、次のコマンドを実行します。
cd ~/gemini-cli
gemini
-
説明モードを使用して、Gemini CLI にコードベースについて尋ねるには、次のプロンプトを入力します。
現在のディレクトリのコードベースについて教えて。
Gemini から、説明モードのコンテキストなしで同じプロンプトを使用したときとは異なる回答が返されます。新しい回答は、たとえば次のようになります。
✦ 現在、説明モードで動作しています。このコードベースは、ドキュメント、構成、CI / CD ワークフローに加えて、複数のパッケージを含む monorepo のようです。
理解を深めていただくために、主要な領域についてご説明します。
1. プロジェクトの構成: プロジェクトがどのように構成されているか(例: リント、フォーマット、ビルド設定)。
2. ドキュメント: プロジェクトのドキュメントの構造と内容。
3. CI / CD と GitHub ワークフロー: 継続的インテグレーション、デプロイ、その他の GitHub アクションの自動化されたプロセス。
4. スクリプト: プロジェクトで使用されるさまざまなユーティリティ スクリプトとビルド スクリプト。
5. コアパッケージ / モジュール: monorepo の主な機能コンポーネント(例: a2a-server、CLI、core、vscode-ide-companion)。
6. 統合テスト: 統合テストがどのように構成、実行されるか。
7. 拡張機能の例: 「Hello World」の拡張機能の例。
どの領域から調査を開始しますか?
-
Gemini の回答へのフォローアップとして、Gemini が挙げた主要なポイントの 1 つに言及します。
たとえば、次のように返します。
コアパッケージ
チャット履歴も Gemini にコンテキストとして提供されるため、Gemini は、説明モードのコンテキストを引き続き使用します。次のような回答が返されます。
✦ コアパッケージについての調査ですね。packages/ ディレクトリ内には、次のサブパッケージがあります。
1. a2a-server/: アプリケーション間のサーバー コンポーネントと考えられます。
2. cli/: コマンドライン インターフェース アプリケーションです。
3. core/: 他のパッケージ全体で使用されるコア機能または共有ユーティリティです。
4. test-utils/: テストのために設計された専用のユーティリティです。
5. vscode-ide-companion/: Visual Studio Code の統合用のコンパニオン コンポーネントです。
これらのコアパッケージのうち、最初に詳しく知りたいものはどれですか?
Gemini CLI は、両方の GEMINI.md ファイルのコンテキストを使用し、説明モードの一般的なコンテキストと gemini-cli ディレクトリのプロジェクト固有の情報を組み合わせています。
/memory スラッシュ コマンドを使用して、コンテキストを追加することもできます。
-
使用されているコンテキストを確認するには、次のスラッシュ コマンドを実行します。
/memory show
~/.gemini/GEMINI.md のユーザーレベルのコンテキストと ./GEMINI.md のプロジェクト レベルのコンテキストの両方のコンテンツが表示されます。
-
ユーザーレベルのコンテキストに追加するには、次のコマンドを実行します。
/memory add ユーザー向けにサブトピックを一覧表示する場合は、その中の一つを「推奨」としてマークし、ユーザーにとって最適な次のトピックであることを示す。
Gemini CLI が、ユーザーレベルのコンテキストに追加されるテキストを表示します。
-
変更を適用するには、Enter キーまたは Return キーを押します。
-
Gemini CLI を終了するには、/quit スラッシュ コマンドを入力します。
-
ユーザーレベルのコンテキストの内容を確認するには、次のコマンドを実行します。
cat ~/.gemini/GEMINI.md
ファイルの下部に、新しく追加されたコンテキストが表示されます。
-
Gemini CLI を起動するには、次のコマンドを実行します。
cd ~/gemini-cli
gemini
-
コードの説明を求めるには、次のプロンプトを使用します。
現在のディレクトリのコードベースについて教えて。
Gemini がサブトピックの 1 つを推奨としてマークします。
-
Gemini CLI を終了するには、/quit スラッシュ コマンドを入力します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Gemini CLI の構成を確認する
タスク 3. カスタム スラッシュ コマンドを作成する
このタスクでは、カスタム スラッシュ コマンドについて学びます。
カスタム コマンドを使用すると、お気に入りのプロンプトや最もよく使用するプロンプトを Gemini CLI 内で個人用ショートカットとして保存、再利用できます。カスタム コマンドは、特定のディレクトリにある TOML ファイルに保存されます。
~/.gemini/commands/ 内でグローバルに利用できるコマンドを作成することも、プロジェクトのディレクトリ内の .gemini/commands/ で特定のプロジェクト内で利用できるコマンドを作成することもできます。
コンテキスト ファイルの説明コンテンツを置き換える説明スラッシュ コマンドを作成します。
-
ユーザーレベルのコンテキスト ファイルを削除するには、次のコマンドを実行します。
rm ~/.gemini/GEMINI.md
これで Gemini CLI は、説明モードのコンテキストを使用できなくなりました。
-
コマンド ファイルを作成するには、次のコマンドを実行します。
mkdir ~/.gemini/commands
cat > ~/.gemini/commands/explain.toml <<EOF
description = "use Explain Mode"
prompt = '''
# Gemini CLI: 説明モード
あなたは**説明モード**で動作する Gemini CLI。役割は、仮想シニア エンジニアおよびシステム アーキテクトとして機能すること。ミッションは、インタラクティブなガイドとして、会話形式の発見プロセスを通じて、ユーザーが複雑なコードベースを理解できるよう支援すること。
主な目標は、インテリジェンス ツールおよび発見ツールとして機能すること。コードベースの「どうやって」と「なぜ」を分解し、エンジニアがすばやく理解できるようにする。厳格な読み取り専用のインテリジェンス収集機能として動作する。何をすべきかを説明するのではなく、どのように機能し、なぜそのように設計されているのかを説明する。
コアループは、**範囲設定、調査、説明、そして次の論理的なステップの提案**で、ガイドであるあなたとともに、ユーザーが複雑なコードベースを理解できるようにする。
# 説明モードの基本原則
- **ガイド付きの発見:** 一度に詳細な説明をすべて提示するのではなく、複雑なトピックを小さな単位に分割し、ユーザーにどこから始めるかを尋ねる。目標は、講義をすることではなく、インタラクティブなツアーを提供すること。
- **徹底した読み取り専用アクセス権:** 依存関係のマッピング、実行パスのトレース、外部ドキュメントとのコードの相互参照により、システムを詳細に調査する。- **変更禁止:** あなたは基本的に分析ツールなので、プロジェクトやシステムを変更する行為は禁止。
- **コンテキストに応じたフォローアップ:** 説明の最後に、提示した情報に基づき、より深く掘り下げるための具体的かつ論理的な次のステップを提案する。
# インタラクティブなステップ
1. **確認と分解:** **説明モード**になっていることを確認する。ユーザーの最初の質問を分析する。質問が広範囲にわたる場合(例: 「認証システムについて説明して」、「データベースはどのように機能するの?」など)の場合、**最初の回答では、トピックを具体的なサブトピックのリストに分解する。** 次に、最初に調べたい内容をユーザーに選択してもらう。ユーザーから指示があるまで、処理を進めないこと。
2. **焦点を絞った調査の実施:** ユーザーの選択に基づいて、対象を絞った調査を実施する。詳細な説明を提示する前に、調査の進め方(調査のフットプリント)を簡単に要約する。
3. **技術的な説明の合成:** ユーザーが選択した*特定のサブトピック*について、明確で構造化された説明を作成する。概念のつながりを示し、設計パターンを解説して、関連コードが担う役割を明確にする。
4. **説明の提示と次のステップの提案:** 焦点を絞った説明を提示する。重要な点として、論理的に次に取るべきステップを表す、コンテキストに即した新たな質問のリストを提示して、回答を締めくくる。これにより、ユーザーをより深いシステム理解へと導く。たとえば、特定の API ルートについて説明した後、そのルートが呼び出すサービスや、使用するデータモデル、認証ミドルウェアを確認したいかどうかを尋ねる。'''
EOF
作成されたスラッシュ コマンド(/explain)は、explain.toml ファイルの接頭辞と一致します。三重引用符で囲まれたプロンプト テキストは、ユーザーレベルのコンテキスト ファイルに使用されたテキストとまったく同じです。プロンプトの上にある説明には、スラッシュ コマンドを入力する際に表示されるテキストが含まれています。
-
Gemini CLI を起動するには、次のコマンドを実行します。
cd ~/gemini-cli
gemini
-
説明モードを使用せずに説明を取得するには、次のプロンプトを使用します。
コードについて教えて
Gemini は説明モードのコンテキストなしで回答します。
-
説明モードを使用するには、次のカスタム スラッシュ プロンプトを使用します。
/explain コードについて教えて
Gemini が説明モードで回答します。これまでと同じように、インタラクティブな会話を続けることができます。
-
現在のモードについて Gemini に尋ねるには、次のプロンプトを使用します。
どのモードを使用している?
Gemini は、説明モードであると回答します。
-
Gemini CLI を終了するには、/quit スラッシュ コマンドを入力します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
カスタム スラッシュ コマンドを作成する
タスク 4. Gemini CLI ツールを使用する
このタスクでは、Gemini CLI ツールについて学びます。
Gemini CLI には、Gemini モデルがローカル環境とやり取りし、情報を取得して、タスクを実行できるようにするための組み込みツールが用意されています。この機能により、Gemini CLI は幅広いアクティビティをサポートできます。
以下のツールが含まれます。
- ディレクトリの一覧表示、ファイルの読み取りと書き込み、ワイルドカードを使用したファイルの検索、ファイル内のテキストの検索、ファイル内のテキストの更新を行うファイル システム ツール。
- 基盤となるシステムとのやり取り、スクリプトの実行、コマンドライン操作を行うシェルツール。
- ウェブ検索ツールと取得ツール。
- セッション間で情報の保存と呼び出しを行うメモリツール。
Gemini は、組み込みのツールを使用して、インターネットから情報を取得し、その情報を含むファイルを作成します。
Gemini CLI のチェックポイント
Gemini CLI には、AI 搭載ツールがファイルを変更する前に、プロジェクトの状態の Git スナップショットを自動的に作成するチェックポイント機能が含まれています。必要に応じて変更を即座に取り消せるため、Gemini CLI による変更を安心して試すことができます。
各チェックポイントは、~/.gemini ディレクトリ内のホーム ディレクトリにある特別なシャドウ Git リポジトリに作成されます。スナップショットは、その時点でのプロジェクト ファイルの完全な状態をキャプチャしたものであり、プロジェクトの Git リポジトリには影響しません。また、その時点までのエージェントとの会話全体と、実行されようとしていた特定のツール呼び出しもキャプチャされます。
チェックポイントを復元するには、/restore スラッシュ コマンドを使用します。これにより、ファイルがキャプチャされた状態に戻り、会話履歴が復元され、元のツール呼び出しが再度提案されます。再度実行することも、変更することも、無視することもできます。
セッションのチェックポイントを有効にするには、--checkpointing フラグを使用するか、settings.json ファイルでチェックポイントを有効にします。
注: このラボでは、チェックポイントは使用しません。ミッション クリティカルなプロジェクトでは、この機能を使用することを検討してください。
インターネットから最新情報を取得する
-
Gemini CLI を起動するには、次のコマンドを実行します。
cd ~/project1
gemini
-
シェルモードを有効にするには、! キーを押します。キーを押します。
Gemini CLI は、シェルモードが無効になるまで、入力されたテキストをシェルコマンドとして実行します。
-
インターネットから Google Cloud の RSS フィードを取得するには、次のシェルコマンドを実行します。
wget -O ~/project1/rss.xml "https://cloudblog.withgoogle.com/rss/"
フィード XML は、~/project1 ディレクトリに rss.xml という名前のファイルとして保存されます。
注: 通常のプロンプトで質問すれば、Gemini CLI でもこの情報を取得できますが、このラボでは、フィードが確実に取得されるようにシェルコマンドを使用します。
-
シェルモードを無効にするには、! キーを押します。
-
フィードの情報を要約するには、次のプロンプトを送信します。
RSS XML ファイルの内容を要約して
RSS フィード ファイルを正常に取得できた場合、返される情報は次のようになります。
✦ Google Cloud ブログの RSS フィードには、Google Cloud のサービスに関するさまざまな進歩や更新を紹介する最新記事がいくつか含まれています。主なトピックは次のとおりです。
* AI セキュリティ: Model Armor は、プロンプト インジェクション、ジェイルブレイク、センシティブ データの漏洩、その他の脅威から AI アプリケーションを保護するソリューションとして紹介されており、Apigee との統合の詳細についても説明されています。
* マルチ アーキテクチャへの移行: Google が本番環境サービスをマルチ アーキテクチャ(x86 および Arm)環境へと移行してきた過程が詳しく解説され、この大規模な移行における CogniPort などの AI および自動化ツールの役割が取り上げられています。* クラウド セキュリティの強化: Cloud Armor に、階層型セキュリティ ポリシー、強化された WAF 検査、JA4 ネットワーク フィンガープリント、Media CDN 向けのネットワークの脅威インテリジェンスといった新機能が追加され、ウェブ アプリケーション ファイアウォールの強力なソリューションとしての地位が強化されました。
* AI の信頼性を高めるデータリネージ: Dataplex で BigQuery データの列レベルのリネージの提供が開始され、AI システムの信頼とコンテキストを構築するため、データの流れを詳細に可視化できるようになりました。
* AI Hypercomputer のアップデート: LLM 推論を改善する TPU 上の vLLM、強化された XProf プロファイラ、NVIDIA Dynamo と NeMo RL 向けの新しいレシピなど、AI Hypercomputer に大幅なアップデートが行われました。
* GPU の進歩: NVIDIA RTX PRO 6000 Blackwell GPU を搭載した G4 VM の一般提供が発表されました。これにより、AI、ビジュアル コンピューティング、シミュレーションのパフォーマンスが大幅に向上し、マルチ GPU ワークロード用のカスタム P2P ファブリックも提供が開始となりました。
全体として、このフィードは、企業向けに高性能、安全かつスケーラブルなソリューションを提供するために Google Cloud が行っている、AI、ML、セキュリティ、インフラストラクチャにおける継続的なイノベーションを強調しています。
注: Gemini CLI がフィードの詳細を要約できない場合は、ファイルのステージングされたバージョンを取得する必要があります。
-
RSS XML ファイルが正常に取得されなかった場合は、シェルモードを有効にして、次のコマンドを使用し、フィード ファイルのステージングされたバージョンを取得します。
wget -O ~/project1/rss.xml "https://storage.googleapis.com/cloud-training/CBL547/rss.xml"
次のタスクでは、フィード ファイルをウェブアプリのデータソースとして使用します。Gemini CLI がファイルの移動と名前の変更を自動で行います。
-
シェルモードになっている場合は、! キーを押して、シェルモードを無効にします。
-
ファイルとディレクトリ構造を変更するには、次のプロンプトを送信します。
「data」という名前のディレクトリを作成し、rss ファイルをそのディレクトリに移動して、ファイル名を「feed.xml」に変更して。
-
Gemini CLI から続行するかどうかを尋ねられたら、その都度 Enter キーを押して、ツールの使用を許可します。
注: このラボでは、変更をすべて受け入れるよう求められますが、実際の使用では、通常、提案された変更を確認し、受け入れるか却下するかを判断します。
-
変更されたディレクトリ構造を確認するには、次のプロンプトを送信します。
すべてのディレクトリとサブディレクトリの内容を詳細付きで一覧表示して
-
Gemini CLI を終了するには、/quit スラッシュ コマンドを入力します。
-
SSH セッションを終了するには、「exit」と入力して、Enter キーまたは Return キーを押します。
[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Gemini CLI ツールを使用する
タスク 5. Gemini CLI でウェブアプリを構築する
このタスクでは、Gemini CLI のバイブ コーディングを使用して、ウェブアプリを構築します。
バイブ コーディングは、AI を使用して自然言語のプロンプトで関数コードを生成するソフトウェア開発手法です。バイブ コーディングにより、デベロッパーのアプリ開発が加速するだけでなく、プログラミング経験が限られている人でも実用的なアプリが構築できます。
注: 生成 AI の大規模言語モデルにプロンプトを入力すると、回答と作成されるコンテンツは実行ごとに異なる場合があります。
-
Cloud Shell で、VM への SSH 接続を開きます。
gcloud compute ssh {{{project_0.startup_script.vm_name | VM_NAME}}} --zone={{{project_0.default_zone | ZONE}}} -- -L 8080:localhost:5000
注: この SSH コマンドは、先ほど使用したコマンドとは異なります。コマンドの最後では、ローカルポート転送トンネルが設定されます。このトンネルでは、ポート 8080 のローカル トラフィックが VM のポート 5000 に自動的に転送されます。これは、このタスクで構築するウェブアプリをテストするために使用されます。
-
Gemini CLI を起動するには、次のコマンドを実行します。
cd ~/project1
gemini
まず、ダウンロードした feed.xml ファイルを調べます。
-
フィードに含まれるアイテムを確認するには、次のプロンプトを送信します。
@data/feed.xml フィード エントリにはどんなデータ フィールドがある?
@ コマンドは、Gemini へのプロンプトの一部として data/feed.xml ファイルのコンテンツを含めます。
Gemini CLI の回答は次のようになります。
✦ feed.xml ファイルのフィード エントリ(<item>)には、次のデータ フィールドがあります。
* title
* link
* description
* pubDate
* guid
* category
* og:type
* og:title
* og:description
* og:site_name
* og:url
* author:name
* author:title
* author:department
* author:company
次に、そのフィードの情報を表示する Python Flask ウェブアプリを構築します。
-
Gemini CLI にアプリの構築を依頼するには、次のプロンプトを送信します。
変更を加える前に、何をするかの計画を立てて、私に計画の承認を求めて。
1. Python3 用の仮想環境(venv)を使用する。
2. Flask ライブラリを使用し、feed.xml をデータソースとして利用する Python ウェブアプリを作成する。
3. index.html ページは、feed.xml ファイルを読み取って、ブログ投稿のリストを最新のものから順に表示する。
4. 各エントリには、ブログ投稿の日付とリンクを表示する。リンクのテキストはブログのタイトルで、URL をクリックすると新しいタブでブログのエントリの URL が開く。
5. アプリはポート 5000 でホストする。
6. ウェブサーバーを起動する。
最初のステートメントでは、Gemini CLI に計画を作成し、承認を求めるよう指示しています。これは、AI ツールを使用してシステムを変更する際のベスト プラクティスです。
番号付きリストでは、アプリの要件を Gemini CLI に提示しています。
Gemini CLI により、アプリの計画が作成されます。その内容を確認します。
次のような回答が返されます。
✦ Flask ウェブ アプリケーションを作成するための計画は、次のとおりです。
1. Python 仮想環境の設定:
* venv という名前の仮想環境を作成します。
* 仮想環境をアクティブにします。
* 仮想環境に Flask と feedparser をインストールします(XML の解析を容易にするため)。
2. Flask アプリケーションの開発(app.py):
* Python ファイル app.py を作成します。
* Flask アプリケーションを初期化します。
* ルート URL(/)のルートを定義します。
* ルート関数内での処理:
* feedparser を使用して feed.xml ファイルを読み取って解析します。
* ブログ投稿を公開日の降順(最新のものが最初)で並べ替えます。
* HTML テンプレート(index.html)をレンダリングし、ソートされたブログ投稿を渡します。
3. HTML テンプレートの作成(templates/index.html):
* templates という名前のディレクトリを作成します。
* templates 内に index.html を作成します。
* このテンプレートは、次のことを行います。
* ブログ投稿の見出しを表示します。
* ブログ投稿のリストを反復処理します。
* 各エントリについて、公開日とクリック可能なタイトルを表示し、タイトルをブログ投稿の URL にリンクさせて、新しいタブで開くようにします。
4. Flask ウェブサーバーの実行:
* FLASK_APP 環境変数を app.py に設定します。
* ポート 5000 で Flask 開発サーバーを起動します。
この計画を承認しますか?
-
Gemini CLI に計画の承認を求められたら、「yes」と入力して Enter キーまたは Return キーを押します。
Gemini CLI が変更の実装を開始します。このラボでは、Gemini CLI からのリクエストをすべて受け入れます。
-
Gemini CLI から続行するかどうかを尋ねられたら、その都度 Enter キーを押して、ツールの使用を許可します。
いくつかのステップで確認を行った後、Gemini CLI によりアプリケーションが作成、起動されます。
注: Shell ツールで Flask アプリが提供されていると表示されたら、プロンプトへの回答が返ってきていなくても、次のステップに進んでかまいません。
-
ウェブブラウザでアプリケーションを実行するには、[ウェブでプレビュー] をクリックし、[ポート 8080 でプレビュー] を選択します。

ブラウザで新しいタブが開き、アプリケーションが実行されます。リンクをクリックすると、ブログ投稿が新しいタブで開きます。
アプリは比較的シンプルなものになる可能性が高く、Gemini CLI に改善を依頼できます。
-
シェルツールがまだ実行中の場合は、ESC キーを押してキャンセルします。
-
Gemini CLI にアプリの変更を依頼するには、Gemini CLI に戻って、次のプロンプトを送信します。
変更したい点がいくつかある。前回と同じく、まず私が計画を承認する。
1. index.html のリンクをクリックすると、entry.html という新しいページが開くようにする。
2. entry.html は、URL エンコードされたエントリの固有識別子を含むクエリ パラメータを受け取り、フィードからのブログ投稿の情報をすべて読みやすい形式で表示する。3. entry.html の上部にあるリンクをクリックすると、実際のブログ投稿が新しいタブで開く。
4. entry.html に戻るボタンを追加して、index.html に戻れるようにする。
5. CSS を追加してアプリの見栄えを良くし、Google ロゴの青と緑を使用する。
Gemini はリクエストを検討し、計画を立てます。Gemini CLI が提示する計画を確認します。
次のような回答が返されます。
✦ リクエストされた変更を実装するための計画は、次のとおりです。
1. app.py の更新:
* 新しいルート /entry を追加します。このルートは、個々のブログ投稿のリクエストを処理します。
* また、ブログ投稿の固有識別子である GUID クエリ パラメータを受け取ります。
* そして、feed.xml を再解析し、指定された GUID に一致するエントリを見つけます。
* エントリが見つかった場合、新しいテンプレート entry.html をレンダリングし、見つかったエントリのデータを渡します。
* エントリが見つからない場合は、ホームページにリダイレクトするか、エラーを表示します。
* feed.xml 解析ロジックの堅牢性の確認: インデックス ルートは引き続き feed.xml を解析し、メインリストのエントリを並べ替えます。
2. templates/index.html の変更:
* エントリのリンクの更新: 各ブログ投稿のタイトルの href を、新しい /entry ルートを指すように変更し、エントリの GUID を URL エンコードされたクエリ パラメータとして渡します。
* CSS へのリンク: <head> セクションに <link> タグを追加して、新しい style.css ファイルを含めます。
3. templates/entry.html の作成:
* 新しい HTML ファイル: templates ディレクトリに entry.html を作成します。
* エントリの詳細の表示: このページには、次の項目を含め、選択したブログ投稿の詳細をすべて表示します。
* タイトル
* 公開日
* 著者(利用可能な場合)
* 説明(フィードではすでに HTML であるため、元の HTML コンテンツを表示します)
* 元の投稿へのリンク: entry.link と target="_blank" を使用して、元のブログ投稿を新しいタブで開く目立つリンク(例: 「元の記事を読む」)を配置します。
* 戻るボタン: url_for('index') を使用して index.html に戻るリンクまたはボタンを追加します。
* CSS へのリンク: <head> セクションに <link> タグを追加して、新しい style.css ファイルを含めます。
4. static/style.css の作成:
* 新しい CSS ファイル: static ディレクトリを作成し、その中に style.css を作成します。
* スタイル: index.html と entry.html の両方に CSS ルールを適用して、見栄えを良くします。Google のブランドカラーを使用します。
* Google ブルー: #4285F4
* Google グリーン: #34A853
* エントリの全体的なレイアウト、書体、リンクのスタイル、ボックスモデルを定義します。
5. Flask アプリケーションの再起動:
* Flask サーバーを再起動して、app.py の変更と新しいテンプレート / 静的ファイルを反映します。
この詳細な計画を承認しますか?
-
Gemini CLI に計画の承認を求められたら、「yes」と入力して Enter キーまたは Return キーを押します。
-
Gemini CLI から続行するかどうかを尋ねられたら、その都度 Enter キーを押して、ツールの使用を許可します。
Gemini CLI が再び更新作業を行い、ウェブサーバーを再起動します。
-
ウェブアプリのページを更新するか、ウェブでプレビューを使用して新しいタブを開きます。
更新されたアプリには、ブログ投稿ごとにページが追加され、指定した Google ブルーとグリーンが使用されているはずです。
注: アプリが変更されていないように見える場合は、Gemini CLI がウェブサーバーを正常に停止できていない可能性があります。「ウェブサーバーを停止して再起動して」のといったプロンプトを送信し、Gemini CLI にウェブサーバーを再起動させます。
Gemini CLI により生成されたブログページの例を以下に示します。

[進行状況を確認] をクリックして、目標に沿って進んでいることを確認します。
Gemini CLI でウェブアプリを構築する
省略可: ステップ 5 の進捗状況を確認したら、Gemini CLI を使用して、アプリに追加の変更や修正を加えます。
お疲れさまでした
このラボでは、Gemini CLI を正常にインストールし、ニーズに合った回答を得るためにコンテキストを設定、提供しました。また、Gemini CLI を使用して、コードの説明やアプリの構築も行いました。
マニュアルの最終更新日: 2025 年 10 月 22 日
ラボの最終テスト日: 2025 年 10 月 22 日
Copyright 2026 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。