1. はじめに

皆さん、こんにちは。スパーキーです!ご参加いただきありがとうございます。今日は us-central1 の GKE クラスタからここまで来ました。この Codelab へようこそ。
私は Google Cloud のデータ ストリームを駆け巡り、あらゆるものを見てきました。アーキテクトやエンジニアの皆様が素晴らしいものを構築しているのを見てきました。でも、あなたは茨に引っかかったこともあります。言いたいことはわかりますよね。GKE で Pod をデバッグしているときに、コンテキストの切り替えを感じます。kubectl logs、ノードの健全性を確認するための GCP コンソール、デプロイされたソースコードを確認するための IDE、Pod ライフサイクル フックの Kubernetes 公式ドキュメントが表示されたブラウザタブを切り替えています。ジャンプするたびに集中力が途切れます。
複雑なツールも必要です。gcloud、kubectl、terraform... それぞれに独自の DSL と大量のフラグがあります。ドキュメントの検索が頻繁に発生します。最終的には、必要なデータを取得するために、--filter フラグと --format フラグの適切な組み合わせを含む完璧な gcloud コマンドを検索することになります。何百万もの木々が生い茂る森の中から、特定の木の実を探し出すようなものです。反復的なタスクについては、ここでは触れないでおきます。新しい Python サービスに同じ Dockerfile と cloudbuild.yaml を何度も記述しているのを見てきました。コードはデジャブを感じているかもしれません。
もっと良い方法があります。森の中の秘密の道。Gemini CLI はまさにそのためのものです。
Gemini CLI とは
では、私が興奮している魔法のショートカットとは何でしょうか?
Gemini CLI は、ターミナル内で利用できるパーソナル クラウド コンパニオンです。会話であり、パートナーシップです。コンテキストアウェアです。これは、単に聞いているだけでなく、理解しているという意味です。ファイルの内容を読み取り、タブとスペースのどちらを使用するかなど、プロジェクトの規則を学習して、ユーザーが何をしようとしているかを把握できます。まるで、ユーザーが拾おうとしているドングリの匂いを嗅ぎ取れるようです。
アーキテクチャの概要(内部構造を見てみましょう)
では、その仕組みについて説明します。これは、いくつかの優れた機能が調和して動作しているものです。
- 強力な言語モデル: これは脳です。具体的には、Google がトレーニングした大規模なマルチモーダル モデルです。「マルチモーダル」とは、テキストだけでなく、コードの構造と意味も理解できることを意味します。これにより、ソフトウェアを読み取るだけでなく、ソフトウェアについて推論できるようになります。
- ローカル コンテキスト: これは非常に重要です。Gemini CLI は、ユーザー アカウントと同じ権限を持つプロセスとしてローカルマシンで実行されます。つまり、ファイル システムにアクセスして、プロジェクト固有のヘルプを提供できます。コードについて推測する遠隔地のクラウド サービスではなく、目の前にあるのです。
- ツール エコシステム: モデルが世界とやり取りする方法です。呼び出すことができる関数(
read_fileやrun_shell_commandなど)のセットが明確に定義されています。安全な API のようなものと考えてください。モデルは、何をするかとどのツールを使用するかを決定し、実行するtool_codeブロックを生成します。これにより、アクションの予測可能性と信頼性が高まります。 - シェル コマンドの実行: これが実際の魔法です。
bash -c <command>サブシェルで任意のコマンドを実行できます。stdout、stderr、exit codeをキャプチャします。これは大きな変化です。つまり、Gemini CLI はコマンドを実行し、失敗したかどうかを確認してから、エラー メッセージに基づいて修正を試みます。 - セーフティ ネット: これが一番のお気に入りです。その
tool_codeブロックが実行される前に、CLI クライアントにexactコマンドまたはコードが表示され、確認が求められます。クライアントサイドのチェックであるため、システムにアクセスする前に最終的な判断を下すことができます。常にユーザーが主導権を握っています。
単なる chatbot ではなく、実行者です。コーディングの冒険をサポートするアクティブなヘルパー。
重要なコンセプト: 宣言型と命令型
最も大きな変化は、コンピュータに何かを行う「方法」を伝えることから、コンピュータに「何」を求めるかを伝えることに移行することです。
- 命令型(古い、困難な方法): すべてのステップを指定する必要があります。ツールの特定のドメイン言語の専門家である必要があります。次のような複雑なコマンドです。
残念!ご覧ください。マシンタイプ、イメージ ファミリー、メタデータ、タグの構文を理解している必要があります。一部を省略すると、わかりにくいエラーが発生します。gcloud compute instances create my-vm --project=my-project --zone=us-central1-a --machine-type=e2-medium --image-family=debian-11 --image-project=debian-cloud --metadata-from-file startup-script=./startup.sh --tags=http-server,dev - 宣言型(Sparky ショートカット): 平易な英語でリクエストするだけです。
Create a new e2-medium VM for my web server in us-central1, run the startup.sh script, and tag it for http traffic.
これで、Gemini はリクエストを解析し、gcloud ツールのパラメータにマッピングし、各フラグの正しい構文を特定して、そのコマンドを生成します。その後、承認を求めるメッセージが表示されます。これは、コマンドライン フラグを覚えるのではなく、全体像を把握できるようにするためのものです。
Gemini の能力を拡張する: CLI 拡張機能の概要
Gemini CLI は、すぐに使える強力なツールですが、その真の可能性は拡張機能によって引き出されます。拡張機能は、CLI の機能を強化するプロンプト、ツール、カスタム コマンドのバンドルです。これにより、特定のニーズやワークフローに合わせて CLI を調整できます。
拡張機能を見つけてインストールする
Gemini CLI には、Google とサードパーティ デベロッパーの両方が構築した拡張機能のエコシステムが拡大しています。拡張機能の公式ディレクトリは、geminicli.com/extensions でご覧いただけます。
拡張機能をインストールするには、拡張機能の Git リポジトリの URL を指定して gemini extensions install コマンドを使用します。たとえば、公式の Cloud SQL for PostgreSQL 拡張機能をインストールするには、次のコマンドを実行します。
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
説明は以上です。実際に手を動かして試してみましょう。
2. 始める前に

未来のクラウド ウィザードの皆さん、こんにちは。Sparky がお手伝いします。壮大な冒険を始める前に、ワークショップ環境の準備が整っていることを確認する必要があります。森に入る前に、適切なツールと魔法のドングリをすべてバッグに詰めるようなものです。フォローしてね!
Google Cloud プロジェクトがすでにある場合は、Gemini CLI がプリインストールされているため、Google Cloud Shell 内で Gemini CLI を使用できます。または、次の手順に沿ってローカルマシンで設定します。
ステップ 1: 必須事項(前提条件)
優れた冒険家には、しっかりとした基盤が必要です。Gemini CLI をインストールする前に、ローカルマシンにいくつかの設定を済ませておく必要があります。
- Google Cloud SDK(
gcloud): Google Cloud のメイン ツールキットです。Gemini CLI もこのファミリーの一員です。
- インストールされているかどうかを確認する:
gcloud --versionを実行します。バージョン番号が表示されたら、準備完了です。 - インストールされていない場合: cloud.google.com/sdk/docs/install の公式の手順に沿ってインストールします。
- Git: ハンズオン ラボのリポジトリのクローンを作成するために必要です。
- インストールされているかどうかを確認する:
git --versionを実行します。 - インストールされていない場合: git-scm.com/downloads から入手できます。
- GCP プロジェクトと認証:
- 課金が有効になっている Google Cloud プロジェクトがあることを確認します。これは非常に重要です。
- 次のコマンドを実行して、Google アカウントにログインします。
gcloud auth login
- セッションのプロジェクトを設定します。GCP Console でプロジェクト ID を確認し、次のコマンドを実行します。
gcloud config set project YOUR_PROJECT_ID
(YOUR_PROJECT_ID は実際のプロジェクト ID に置き換えてください)。
- Node.js バージョン 20 以降
ステップ 2: 魔法を手に入れる(Gemini CLI のインストール)
基本は以上です。それでは、メインイベントに移りましょう。Gemini CLI をインストールします。
npx で即座に実行する
# Using npx (no installation required)
npx https://github.com/google-gemini/gemini-cli
npm を使用してグローバルにインストールする
npm install -g @google/gemini-cli
Homebrew(macOS/Linux)を使用してグローバルにインストールする
brew install gemini-cli
Gemini のバージョンを確認する
gemini --version
バージョン番号が表示されます。これで、インストールが成功したことを確認できます。
ステップ 3: 電源投入(構成)
Gemini CLI がインストールされたので、Gemini CLI に権限を付与する必要があります。まず、ターミナルで gemini コマンドを実行して起動します。以下に示す画面が表示されます。

簡単に認証を行うには、Google アカウントを使用します。これにより、API キーを管理することなく、100 万トークンのコンテキスト ウィンドウと最大 60 件/分、1,000 件/日のリクエストで Gemini 2.5 Pro にアクセスできます。
特定の Gemini モデルにアクセスする場合や、必要に応じて上限を引き上げる場合は、認証方法として Gemini API キーを使用します。
すでに Google プロジェクトと請求先アカウントを設定しているエンタープライズ チームと本番環境ワークロードの場合は、Vertex AI を使用して高度なセキュリティとコンプライアンスを実現します。
選択したオプションに応じて、認証を構成するための次の手順が表示されます。これらのオプションの詳細については、Gemini CLI のドキュメントをご覧ください。
Google Cloud の Vertex AI プラットフォームを使用する場合は、まず ctrl+c を 2 回押して Gemini CLI を終了し、必要な環境変数を設定します。
認証方法に関係なく、通常は GOOGLE_CLOUD_PROJECT と GOOGLE_CLOUD_LOCATION の変数を設定する必要があります。
これらの変数を設定するには:
# Replace with your project ID and desired location (e.g., us-central1)
export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"
export GOOGLE_CLOUD_LOCATION="YOUR_PROJECT_LOCATION"
次に、Google Cloud にログインします。
gcloud auth application-default login
前の方法で認証したら、ターミナルで gemini コマンドを実行して Gemini CLI を再度起動します。認証オプションで Vertex AI を選択すれば、設定は完了です。
ステップ 4: スパーク テスト(セットアップの確認)
いよいよ正念場です。すべてが正常に機能しているか確認してみましょう。これらのコマンドを実行して、すべてのライトが緑色であることを確認します。
- 次のプロンプトを入力します。
What is my current directory?
Gemini CLI は、現在の作業ディレクトリを返します。これにより、コア言語モデルとシェル統合がテストされます。

- GCP 接続をテストします。
list my gcs buckets
GCS バケットがある場合は、それらが一覧表示されます。ない場合は、その旨が通知されます。これにより、GCP プロジェクトに正しく接続されていることが確認されます。
ステップ 5: スーパーパワーをさらに付与する(拡張機能のインストール)
次に、ラボで後ほど使用する拡張機能をいくつかインストールして、Gemini CLI の機能を強化します。
Cloud Run
gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp
Gemini CLI のセキュリティ
gemini extensions install https://github.com/gemini-cli-extensions/security
gcloud
gemini extensions install https://github.com/gemini-cli-extensions/gcloud
Cloud SQL for PostgreSQL
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresql
これらのコマンドがすべて機能していれば、ワークショップの準備は完了です。環境が設定され、生産性を高める準備が整いました。最初のラボでお会いしましょう。
3. コア コンセプトとローカル ワークスペースのインタラクション

では、作業の準備はできましたか?次に、新しい Gemini ツールベルトの実際のツールを見ていきましょう。クラウドでの探索と構築に役立つスーパーパワーだと思っています。ここでは、その仕組みについて少し詳しく見ていきましょう。
中核となる機能
私の能力は、外の世界を見る能力と、実際に何かをする能力の 2 つに分類できます。
環境を理解する(私の超感覚!)
新しい巣を作る前に、木を調べる必要がありますよね?これらのツールは、状況を把握するためのものです。
list_directory: これは基本的な「嗅ぎ回る」ツールです。これは、標準の OS レベルのディレクトリ リストの簡単なラッパーです。このモデルは、この構造化された出力を解析して、srcという名前のサブディレクトリを探索するなど、意思決定を行うことができます。glob: これは「どんぐりファインダー」です。.gitignoreなどで既にご存じの標準の glob パターン(*、**、?、[]など)を使用します。たとえば、パターンapp/**/*.pyを使用して、「appディレクトリ内のすべての*.pyファイルを検索」と尋ねることができます。これは、モデルが分析する特定のファイルセットを収集する強力な方法です。search_file_content: これは私の透視能力です。検索には単純な文字列照合ではなく、完全な正規表現(regex)を使用します。これは非常に強力です。「POST メソッドを使用するすべての Flask ルートを見つけて」などの複雑なパターンを検索するように指示すると、app\.route\(.*methods=\['POST'\].*\)などの正規表現が生成されることがあります。ファイルパス、行番号、一致する行が返され、モデルに必要なコンテキストがすべて提供されます。read_file: 興味深いファイルを見つけたら、それを開いてみましょう。read_fileはこのために最適化されています。ファイル全体を読み取ることも、大きなファイルの場合はoffsetパラメータとlimitパラメータを使用してチャンク単位で読み取ることもできます。つまり、モデルはタイムアウトすることなく、巨大なログファイルでも効率的にスキャンできます。
理解から行動へ(構築の時間!)
地形を探索しました。巣作りを始めましょう。これらのツールを使用すると、変更を行って作業を完了できます。
**write_file**: 新しいファイルを最初から作成する必要がありますか?write_fileは、指定されたパスに提供されたコンテンツ全体を書き込むアトミック オペレーションです。新しいモジュールのスキャフォールディングや、プロジェクトのニーズに基づいてDockerfileをゼロから作成する場合に最適です。**replace**: このツールは外科的な変更を行うためのものです。これは単なる検索と置換ではありません。old_stringとnew_stringを指定します。これを安全に機能させるには、old_stringはファイルからの一意のスニペットである必要があります。通常、変更する部分の前後に数行のコンテキストが含まれます。これにより、意図したコードのexact部分のみが変更されます。**run_shell_command**: 究極のパワーアップです。指定されたコマンドをbash -c <command>サブシェルで実行します。モデルはstdout、stderr、exit codeを取得します。これは、ワークフローを構築するうえで重要です。モデルはterraform planを実行して出力を読み取ることができます。プランが成功した場合(終了コード 0)、モデルはプランを適用するかどうかをユーザーに尋ねます。
セーフティ ネット(お客様への約束)
コマンドの実行は怖いものです。わかりました。そのため、セーフティ ネットが非常に重要になります。モデルが run_shell_command または write_file への呼び出しを含む tool_code ブロックを生成すると、Gemini CLI クライアントがそれをインターセプトします。書き込む正確なコマンドまたはファイルの内容全体が表示され、[y/n] プロンプトが表示されます。お客様の明示的な承認なしに、何も起こりません。常にユーザーが主導権を握っています。
4. プロジェクトの探索

目的: Gemini CLI を使用して、ターミナルを離れることなく、見慣れないコードベースを理解します。
シナリオ: 新しいデベロッパーとして、このプロジェクトをすばやく理解する必要があります。
タスク 0: セットアップ - プロジェクトをクローンする
まず、コードを取得する必要があります。これは、GitHub の公開リポジトリの quickpoll という「ツリー」に隠されています。Gemini CLI にクローンを作成してもらいましょう。その前に、作業ディレクトリを作成し、作業ディレクトリ内から Gemini CLI を起動しましょう。
mkdir workdir
cd workdir
gemini
次のプロンプトを入力します。
clone the github repository from the URL: https://github.com/gauravkakad-google/quickpoll.git

Gemini は、「clone」が git clone コマンドの使用を意味することを理解します。git clone https://github.com/gauravkakad-google/quickpoll.git のような run_shell_command ツール呼び出しが生成されます。承認すると、リポジトリがダウンロードされます。
次に、ctrl+c を 2 回押して Gemini CLI を終了し、サンプル リポジトリに移動して Gemini CLI を再度起動します。
cd quickpoll
gemini
承知しました。プロジェクト ツリーに入ったので、探索を開始できます。
タスク 1: プロジェクト内のすべてのファイルを一覧表示する
森に入ったので、森全体をマッピングしましょう。すべてのファイルを表示します。Gemini に次のように質問します。
List all the files in the project.
Gemini は、パターン **/* で glob ツールを使用する可能性があります。これにより、すべてのファイルが再帰的に一覧表示され、コードベースの完全なマニフェストが生成されます。これは、プロジェクトの構造を理解するための第一歩として最適です。
タスク 2: 「google.cloud.sql.connector」をインポートするすべてのファイルを見つける
なるほど、興味があります。このプロジェクトは Google Cloud Storage とどこで通信しますか?調査してみましょう。次のように尋ねます。
Find all files that import the 'google.cloud.sql.connector' library.

Gemini は search_file_content の機能を使用して、そのインポート ステートメントを含むファイルを正確に検索します。これにより、Cloud SQL のやり取りを処理するコードの部分にすぐに焦点を当てることができます。このプロジェクトでは、backend/main.py が見つかります。
タスク 3: メイン Dockerfile の内容を表示する
Dockerfile が表示されています。これがコンテナのブループリントです。中身を見てみましょう。質問するだけです。
Show me the contents of the main Dockerfile.

Gemini は read_file を使用して Dockerfile を表示します。ベースイメージ(FROM)、インストールされる依存関係(RUN pip install...)、最終コマンド(CMD)を分析できます。これにより、アプリケーションのランタイム環境を把握できます。
タスク 4: main.py ファイルの目的
それでは、コードの中核部分を見ていきましょう。Gemini にガイドを依頼しましょう。次のように伝えます。
What's the purpose of the `main.py` file?

ここで Gemini CLI が真価を発揮します。最初に backend/main.py で read_file を呼び出します。次に、マルチモーダル言語モデルが Python コードを分析します。これは、投票アプリケーションの REST API を提供する FastAPI アプリケーションであることを識別します。次に、API エンドポイントとその機能について説明します。自分で読み解く手間を省くことができます。また、これらの機能の一部について詳細な説明を求めることもできます。便利だと思いませんか?ぜひお試しください。
5. From Local to Live! Cloud Run と Cloud SQL を使用したデプロイ

クラウドの冒険者よ、領土を偵察したな。それでは、クラウドに独自のツリーハウスを構築してみましょう。クイック投票アプリケーションを、誰でもアクセスできる実際のウェブアプリにします。
目標: Cloud SQL for PostgreSQL バックエンドを使用して、quickpoll アプリケーションを Cloud Run にデプロイします。
タスク 1: データの堅牢なブランチ(Cloud SQL の設定)
優れたアプリケーションには、貴重なドングリを保存する場所が必要です。データです。Cloud SQL for PostgreSQL を使用します。データベースの自動管理機能のようなもので、楽しいことに集中できます。
Gemini CLI にデータベースのシードを植えてもらいましょう。
Please create a new Cloud SQL for PostgreSQL instance for me in project <myproject>. Call it quickpoll-db and put it in us-central1. Lets use the Development preset for now, and make the root password a-very-secure-password!.

Gemini CLI は、Cloud SQL 拡張機能を使用して作業を開始します。create_instance ツール呼び出しが表示されます。承認してください。
インスタンスが作成されると、次のような出力が表示されます。

上記の環境変数を使用して .env ファイルを作成し、Gemini CLI を再起動する前にこのファイルをソース指定すると、これらの変数にアクセスできるようになります。
インスタンスが成長している間に、土壌を準備しましょう。アプリに必要なデータベースとユーザーを作成します。
In the quickpoll-db instance, create a new database named quickpolldb.
Gemini CLI は、Cloud SQL for PostgreSQL 拡張機能の create_database ツールを使用してデータベースを作成します。

次に、この Pod を管理するユーザーを追加します。
In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.
今回は、Gemini CLI で create_user ツールを使用します。

タスク 2: シークレット パス(バックエンドの接続)
バックエンドは、新しいデータベースへの秘密のパスを知る必要があります。backend/main.py を見て、どのように処理されるかを確認しましょう。
show me how would the backend/main.py connect to the database

Aha! ほら。Cloud SQL Python コネクタを使用し、CLOUD_SQL_POSTGRES_INSTANCE、CLOUD_SQL_POSTGRES_USER、CLOUD_SQL_POSTGRES_PASSWORD、CLOUD_SQL_POSTGRES_DATABASE などの環境変数を検索します。これらは Cloud Run サービスに提供する必要があります。
まず、CLOUD_SQL_POSTGRES_INSTANCE が必要です。秘密の握手のようなものです。
What are the details for the Cloud SQL instance quickpoll-db in us-central1?

詳細が表示されます。[Connection Name] を探して、その値をコピーします。your-project-id:us-central1:quickpoll-db のようになります。
アプリケーションを Cloud Run にデプロイする前に、必要なテーブルを使用してデータベースをインスタンス化しましょう。別のデータベースとユーザーを作成したので、Gemini CLI を終了し、先ほど作成した .env を新しい値で更新します。
export CLOUD_SQL_POSTGRES_USER=quickpoll-user
export CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
export CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Gemini CLI を再起動して、次のコマンドを入力します。
execute backend/database.sql file on quickpolldb database as quickpolluser in quickpoll-db instance

ツール execute_sql が 1 回の呼び出しで複数の SQL コマンドを実行することをサポートしていないことを自動的に判断しました。そのため、各 SQL コマンドが個別に実行されました。
タスク 3: バックエンド、離陸!(Cloud Run へのデプロイ)
バックエンドが巣立つときが来ました。Gemini に、バックエンド フォルダを Cloud Run にデプロイし、データベースのシークレット パスを指定するように指示します。
Deploy the backend folder to a new Cloud Run service called quickpoll-be in us-central1. Here are the secrets (environment variables):
CLOUD_SQL_POSTGRES_INSTANCE=your-project-id:us-central1:quickpoll-db
CLOUD_SQL_POSTGRES_USER=quickpoll-user
CLOUD_SQL_POSTGRES_PASSWORD=password-you-provided
CLOUD_SQL_POSTGRES_DATABASE=quickpolldb
Gemini がコードをパッケージ化し、コンテナ イメージを作成して Cloud Run にデプロイします。完了すると(数分かかることがあります)、新しいバックエンド サービスの URL が表示されます。この URL はメモしておいてください。

タスク 4: 仕上げ(フロントエンドの構成とデプロイ)
フロントエンドは、アプリケーションの顔のようなものです。バックエンドの場所を把握する必要があります。移動先を指定しましょう。
Deploy the frontend folder to a new Cloud Run service called quickpoll-fe in us-central1. Here are the secrets (environment variables):
BACKEND_URL=backend-url

タスク 5: 大公開!
このように変更します。いよいよ正念場です。quickpoll-fe サービスの URL を取得し、ウェブブラウザで開きます。
QuickPoll アプリケーションがライブで表示され、使用できるようになります。アンケートを作成して投票し、結果がリアルタイムで更新されるのを確認してみましょう。
やりました!ローカルマシンからプロジェクトを取得し、Google Cloud で実現しました。信頼できる相棒である Gemini CLI を使用して、ターミナルからすべての操作を行いました。
これこそが生産性です。
6. デベロッパー向け - 開発ライフサイクルの加速

デベロッパーの皆様、ここからが本番です。プロジェクトについて説明しましたが、ここからはビルドについて説明します。Gemini が究極のコーディング パートナーとなり、リスが木の実を見つけるよりも速く、シンプルなアイデアから本番環境対応のコードを作成する方法をご紹介します。
アイデアからコードへ
一般的な開発サイクルについて考えてみましょう。コードを書くだけではないですよね?スキャフォールディング、エラー処理の追加、リファクタリング、テストの作成などです。Gemini がすべてお手伝いします。
ボイラープレートと反復タスク: コピー&ペーストはもう不要
これで、基本的なアプリケーション機能が完成しました。次に、ロギングを追加して、潜在的なエラーを処理する必要があります。通常、これは多くの繰り返し try...except ブロックになります。もう心配はいりません。まず、Gemini CLI にコードの分析を依頼し、エラー ロギングと例外処理のベスト プラクティスを提案してもらいます。
What are the best practices for error handling and logging that should also be included in this application?

Gemini CLI は既存のファイルを分析し、ベスト プラクティスの推奨事項を提供します。自分で調査する時間を節約できるエキスパート アシスタントのようなものと考えてください。
次に、これらの推奨事項を実装するよう Gemini に依頼してみましょう。
please go ahead and implement these in the existing app
実際の出力は異なる場合がありますが、最終的には変更の詳細が表示されます。たとえば、次のスクリーンショットでは、JSON 形式のログを生成するために structlog が追加され、一元化された例外処理が実装され、リクエスト レスポンスのロギング方法が改善されていることがわかります。入力の手間が省けます。

リファクタリング: パーソナル コードレビュー
誰もがクリーンで効率的なコードを書きたいと思っています。しかし、急いでいる場合もあります。Gemini は、パーソナル コード レビュー担当者として機能します。次のようなことを質問できます。
please perform a comprehensive code review for best practices and security


Gemini は言語固有のベスト プラクティスを理解しています。実際の出力は上記のスクリーンショットと異なる場合がありますが、出力を読むと、Gemini CLI がコードを分析するためにどれほど詳細なレベルまで踏み込んでいるかがわかります。コードを学習しながら改善できます。
テスト生成: 最も重要な部分
これは私のお気に入りのトリックです。テストを書くべきなのはわかっていますが、特にモックを作成する必要がある場合は、面倒な作業になることがあります。ご覧ください。次のように質問できます。
Add a test suite to this application



Gemini は関数を分析し、入力と出力を特定して、依存関係を把握します。次に、ハッピーパスやエラー条件など、いくつかのテストケースを含む完全な test_main.py ファイルが生成されます。生産性が大幅に向上します。
テストを実行します。(チャレンジ タスク)
ここからが本当に面白いところです。この部分は、ご自身で調べていただくための課題として残しておきます。Gemini CLI に、生成したテストケースの実行を指示してください。あとは、処理が行われるのを見守るだけです。
7. ローカルホストを超えて: GitHub との統合

ローカルマシンという森の小さな一角で、素晴らしい作業を行ってきました。しかし、クラウドの真の力はコラボレーションと接続にあります。さあ、飛び立ちましょう。Gemini がより広い世界とどのようにやり取りできるか、デベロッパーの森で一番大きな木である GitHub から見ていきましょう。
コンセプト: 統合 DevOps アシスタント
これまでは、Gemini をローカル コーディング バディとして使用してきました。このたび、これを本格的な Integrated DevOps Assistant にアップグレードします。これは、Model Context Protocol(MCP)の統合によるものです。これは凝った名前ですが、Gemini がユーザーに代わって他のサービスと安全に通信できるという意味です。最初に習得するのは GitHub です。
考えてみてください。GitHub で pull リクエストを確認したり、問題を報告したり、リポジトリを閲覧したりするために、ターミナルを離れる頻度はどのくらいですか?コンテキストの切り替えが増えました。github ツールセットを使用すると、これらの操作をすべてここで行うことができます。Gemini が GitHub のネイティブ インターフェースになります。
公式の GitHub MCP サーバーのドキュメントには、公開されているツールと構成オプションに関する十分なガイダンスが記載されています。Gemini CLI はリモート MCP サーバーを完全にサポートしているため、ローカル オペレーションとリモート オペレーションのどちらでも自由に選択できます。
このチュートリアルでは、GitHub のリモート MCP サーバー オプションを設定する方法について説明します。まず、GitHub の個人アクセス トークン(PAT)が必要です。
PAT を取得したら、MCP サーバー オブジェクトを settings.json ファイルに追加します。完全な settings.json は以下のとおりですが、mcpServers オブジェクトがここに示されているものと一致していることを確認するだけでかまいません。
{
"security": {
"auth": {
"selectedType": "vertex-ai"
}
},
"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 は Model Context Protocol を使用して強力なツールを操作できるようになります。

キーコマンドの紹介
Gemini には、GitHub 専用のまったく新しいスーパーパワーが備わっています。おすすめのものをいくつかご紹介します。
github.list_repositories: ブラウザを開かずに組織内のすべてのリポジトリを表示したいですか?このツールを活用しましょう。「組織内のすべてのリポジトリを一覧表示して」と尋ねます。github.create_issue: バグを見つけた場合問題を報告するためにウィンドウを切り替えないでください。Gemini に「sample-flask-appリポジトリに「ログインバグを修正」というタイトルの問題をこの説明で作成して」と指示するだけで、問題が作成されます。github.get_pull_request: PR を確認する必要がありますか?「sample-flask-appリポジトリの PR 番号 42 の詳細を表示して」と尋ねることができます。Gemini は、タイトル、説明、ステータス、レビュー担当者をフェッチします。github.get_file_contents: これは非常に優れています。ファイルを最初にクローンしなくても、リモート リポジトリからファイルを読み取ることができます。ローカルにないプロジェクトの構成ファイルや README をすばやく確認するのに最適です。
8. GitHub の探索

説明は以上です。新しい GitHub の機能を使用して、ターミナルから組織とプロジェクトを探索します。
目標: Gemini を使用して、GitHub でホストされているプロジェクトを探索して理解します。
シナリオ: これまで取り組んだことのない GitHub のプロジェクトについて理解を深める必要があります。
タスク 1: 組織内のリポジトリを一覧表示する
まず、GitHub 組織内のすべてのプロジェクトのビューを取得します。このラボでは、独自の GitHub ユーザー名または所属する組織を使用できます。Gemini に一覧表示してもらいましょう。
List the repositories in the `[your-org-or-username]` GitHub organization.
([your-org-or-username] は実際の情報に置き換えてください)。Gemini は github.list_repositories ツールを使用して、すべてのプロジェクトのリストを表示します。誠にありがとうございます。
タスク 2: 特定のリポジトリを見つける
リポジトリのリストが表示されます。実際のデベロッパーと同じように、このリストをスキャンして、目的のプロジェクトを見つける必要があります。このラボでは、先ほどクローンを作成した quickpoll リポジトリを探しているとします。この部分にはコマンドは必要ありません。前のステップの出力を読み取って、リポジトリを見つけるだけです。
タスク 3: 未処理の pull リクエストを一覧表示する
ターゲット リポジトリを特定したので、そのリポジトリで何が起こっているかを確認しましょう。未解決のプルリクエストはありますか?質問してみましょう。
List the open pull requests for the `quickpoll` repository in the `[your-org-or-username]` organization.
Gemini は github.list_pull_requests ツールを使用して、open 状態をフィルタします。開いている PR のリストが表示され、PR 番号、タイトル、作成者が表示されます。これは、プロジェクトのアクティブな開発状況をすぐに確認できるビューです。実際に貢献しているリポジトリでこれを試して、結果を確認できます。

タスク 4: Pull リクエストを調査する
たとえば、そのリストに興味深い PR があるとします。ぜひ、詳しく教えてください。説明と変更されたファイルを確認します。リストから PR 番号を選択します(ない場合はスキップできますが、ここでは 1 つあるとします)。
Show me the details and files changed in PR number 1 in the `quickpoll` repo.
これは Gemini の複数ステップのタスクの好例です。まず、github.get_pull_request を使用して、タイトル、本文、著者などの主な詳細情報を取得します。次に、ファイル変更を取得するために、2 つ目のツール github.get_pull_request_files を使用します。この情報をすべて組み合わせて、わかりやすくまとめた概要を作成します。ターミナルを離れることなく PR を確認しました。すごいですよね。
9. PRD から最初のコミットまで

探索、構築、テストの方法を学習しました。では、これまでの内容を実際のシナリオに当てはめてみましょう。この段階で、計画がプロダクトに変わります。プロダクト要件ドキュメント(PRD)から最初のコミットまでを説明します。あっと驚くものを作りましょう
目標: ローカル コンテキストとリモート コンテキストを組み合わせて、実際の開発タスクを最初から最後までシミュレートします。
シナリオ: 新しい機能が割り当てられました。要件は、プロジェクトの GitHub リポジトリ内の PRD ファイルに記載されています。
タスク 1: 理解する - PRD を読む
これは最も重要なステップです。コードを 1 行も書く前に、計画を完全に把握する必要があります。新機能の要件は prd/NEW_FEATURE.md ファイルに記載されています。開けて中身を見てみましょう。
explain the requirements mentioned in prd/NEW_FEATURE.md
Gemini CLI は read_file を使用して PRD の内容を表示します。さっそく始めましょう。このボタンは、ユーザーがアクティブなアンケートのリストを手動で更新するためのものです。必ず最初にブループリントを確認してください。

タスク 2: コード - 要件を現実にする
この瞬間がマジック モーメントです。PRD から要件を取得し、Gemini にコードの作成を依頼します。具体的に、正確に指示しましょう。
Implement the changes as per the PRD
Gemini CLI が動作を開始し、しばらくすると次のような出力が表示されます。新しいコードが快適な場所に配置されました。

タスク 3: 変更を確認する
新しいコードを含む新しいファイルを作成しました。このラボの最後のステップは、変更を Cloud Run にデプロイして検証することです。
let's deploy the changes made to frontend to Cloud Run. The existing service on Cloud Run is quickpoll-fe in us-central1.
このプロンプトでは、既存の Cloud Run サービス名やデプロイ リージョンなどの詳細情報が提供されています。具体的に指定すると時間を節約できますが、詳細が不足している場合は、Gemini CLI が常に不足している詳細を求めるプロンプトを表示します。
更新した Cloud Run サービスでエラーが発生した場合は、Gemini CLI にデバッグとコードの修正を求めるだけです。スーパー パワーを持つコンパニオンです。
10. 完了

以上です。これで開発サイクル全体が完了しました。要件ドキュメントから新しい機能が完成し、コミットしてプッシュする準備が整いました。ローカル コンテキスト、リモート コンテキスト、ファイル システム オペレーション、コード生成を組み合わせました。あなたは単なるデベロッパーではなく、生産性の高いクラウド アーキテクトです。お疲れさまでした