Gemini CLI の詳細

1. はじめに

be8ebdfe42ca39ac.png

皆さん、こんにちは。スパーキーだ!ご参加いただきありがとうございます。今日は us-central1 の GKE クラスタからここまで来ました。この Codelab へようこそ。

私は Google Cloud のデータ ストリームを駆け巡り、あらゆるものを見てきました。アーキテクトやエンジニアの皆様が素晴らしいものを構築しているのを見てきました。でも、あなたは茨に引っかかったこともあります。言いたいことはわかりますよね。GKE で Pod をデバッグしているときに、コンテキストの切り替えが発生する。kubectl logs、ノードの健全性を確認するための GCP コンソール、デプロイされたソースコードを確認するための IDE、Pod ライフサイクル フックの Kubernetes 公式ドキュメントが表示されたブラウザタブを切り替えています。ジャンプするたびに目的のコンテンツとして表示されている状態が途切れます。

複雑なツールも必要です。gcloudkubectlterraform... それぞれに独自の DSL と大量のフラグがあります。そのため、常にドキュメントを探すことになります。最終的には、必要なデータを取得するために、--filter フラグと --format フラグの適切な組み合わせを含む完璧な gcloud コマンドを検索することになります。何百万もの木々が生い茂る森の中から、特定の木の実を探すようなものです。反復的なタスクについては、ここでは触れないでおきます。新しい Python サービスに同じ Dockerfilecloudbuild.yaml を何度も記述しているのを見てきました。コードはデジャブを感じているかもしれません。

もっと良い方法があります。森の中の秘密の道。Gemini CLI は、まさにこのような目的で開発されました。

Gemini CLI とは

では、私が興奮している魔法のショートカットとは何でしょうか?

Gemini CLI は、ターミナル内で利用できるパーソナル クラウド コンパニオンです。会話であり、パートナーシップです。コンテキスト認識機能を備えており、単に聞いているだけでなく、理解もしています。ファイルの内容を読み取り、プロジェクトの慣例(タブとスペースのどちらを使用するかなど)を学習して、ユーザーが何をしようとしているかを把握できます。まるで、ユーザーが拾おうとしているドングリの匂いを嗅ぎ取れるようです。

アーキテクチャの概要(内部構造を見てみましょう)

では、その仕組みについて説明します。これは、いくつかの優れた機能が調和して動作しているものです。

  1. 強力な言語モデル: これは脳です。具体的には、Google がトレーニングした大規模なマルチモーダル モデルです。「マルチモーダル」とは、テキストだけでなく、コードの構造と意味も理解することを意味します。これにより、ソフトウェアを読み取るだけでなく、ソフトウェアについて推論できるようになります。
  2. ローカル コンテキスト: これは非常に重要です。Gemini CLI は、ユーザー アカウントと同じ権限を持つプロセスとしてローカルマシンで実行されます。つまり、ファイル システムにアクセスして、プロジェクト固有のヘルプを提供できます。コードについて推測する遠隔地のクラウド サービスではなく、目の前にあるのです。
  3. ツール エコシステム: モデルが世界とやり取りする方法です。呼び出すことができる関数(read_filerun_shell_command など)のセットが明確に定義されています。安全な API のようなものと考えてください。モデルは、何をするかどのツールを使用するかを決定し、実行する tool_code ブロックを生成します。これにより、アクションの予測可能性と信頼性が高まります。
  4. シェル コマンドの実行: これが真の魔法です。bash -c <command> サブシェルで任意のコマンドを実行できます。stdoutstderrexit code をキャプチャします。これは大きな変化です。これは、Gemini CLI がコマンドを実行し、失敗したかどうかを確認してから、エラー メッセージに基づいて修正を試みることを意味します。
  5. セーフティ ネット: これが一番のお気に入りです。その tool_code ブロックが実行される前に、CLI クライアントにexactコマンドまたはコードが表示され、確認が求められます。クライアントサイドのチェックであるため、システムにアクセスする前に最終的な判断を下すことができます。常にユーザーが主導権を握っています。

単なるチャットボットではなく、実行者です。コーディングの冒険をサポートするアクティブなヘルパー。

重要なコンセプト: 宣言型と命令型

最も大きな変化は、コンピュータに何かを行う「方法」を伝えることから、コンピュータに「何」を求めるかを伝えることに移行することです。

  • 命令型(古い、困難な方法): すべてのステップを記述する必要があります。ツールの特定のドメイン言語の専門家である必要があります。次のような複雑なコマンドです。
    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. 始める前に

86dffda616ab7a1d.png

未来のクラウド ウィザードの皆さん、こんにちは。Sparky がお手伝いします。壮大な冒険を始める前に、ワークショップ環境の準備が整っていることを確認する必要があります。森に入る前に、適切なツールと魔法のドングリをすべてバッグに詰めるようなものです。フォローしてね!

Google Cloud プロジェクトがすでにある場合は、Gemini CLI がプリインストールされている Google Cloud Shell 内で Gemini CLI を使用できます。または、次の手順に沿ってローカルマシンで設定します。

ステップ 1: 必須事項(前提条件)

優れた冒険家には、しっかりとした基盤が必要です。Gemini CLI をインストールする前に、ローカルマシンにいくつかの設定を済ませておく必要があります。

  1. Google Cloud SDK(gcloud: Google Cloud のメイン ツールキットです。Gemini CLI もこのファミリーの一員です。
  • インストールされているかどうかを確認する: gcloud --version を実行します。バージョン番号が表示されたら、準備完了です。
  • インストールされていない場合: cloud.google.com/sdk/docs/install の公式の手順に沿ってインストールします。
  1. Git: ハンズオン ラボのリポジトリのクローンを作成するために必要です。
  • インストールされているかどうかを確認する: git --version を実行します。
  • インストールされていない場合: git-scm.com/downloads から入手できます。
  1. GCP プロジェクトと認証:
  • 課金が有効になっている Google Cloud プロジェクトがあることを確認します。これは非常に重要です。
  • 次のコマンドを実行して、Google アカウントにログインします。
gcloud auth login
  • セッションのプロジェクトを設定します。GCP Console でプロジェクト ID を確認し、次のコマンドを実行します。
gcloud config set project YOUR_PROJECT_ID

YOUR_PROJECT_ID は実際のプロジェクト ID に置き換えてください)。

  1. 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 コマンドを実行して起動します。以下に示す画面が表示されます。

9378d804bc647191.png

簡単に認証を行うには、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: Spark テスト(セットアップの確認)

いよいよ真価が問われるときです。すべてが正常に機能しているか確認してみましょう。これらのコマンドを実行して、すべてのライトが緑色であることを確認します。

  1. 次のプロンプトを入力します。
What is my current directory?

Gemini CLI は、現在の作業ディレクトリを返します。これにより、コア言語モデルとシェル統合がテストされます。

15a12d7b3fdd2d83.png

  1. 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. コアコンセプトとローカル ワークスペースのインタラクション

a7bf3a905d8e2638.png

では、作業の準備はできましたか?次に、新しい 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_stringnew_string を指定します。これを安全に機能させるには、old_string はファイルからの一意のスニペットである必要があります。通常、変更する部分の前後に数行のコンテキストが含まれます。これにより、意図したコードのexact部分のみが変更されます。
  • **run_shell_command**: 究極のパワーアップです。指定されたコマンドを bash -c <command> サブシェルで実行します。モデルは stdoutstderrexit code を取得します。これは、ワークフローを構築するうえで重要です。モデルは terraform plan を実行して出力を読み取ります。プランが成功した場合(終了コード 0)、モデルはプランを適用するかどうかをユーザーに尋ねます。

セーフティ ネット(お客様への約束)

コマンドの実行は怖いものです。わかりました。そのため、セーフティ ネットが非常に重要になります。モデルが run_shell_command または write_file の呼び出しを含む tool_code ブロックを生成すると、Gemini CLI クライアントがそれをインターセプトします。書き込む正確なコマンドまたはファイルの内容全体が表示され、[y/n] プロンプトが表示されます。お客様の明示的な承認なしに、何も起こりません。常にユーザーが主導権を握っています。

4. プロジェクトの探索

314faf951de66388.png

目的: 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

46c2feb0d1184db7.png

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.

568fdb8ff4889c5d.png

Gemini は search_file_content の機能を使用して、そのインポート ステートメントを含むファイルを正確に検索します。これにより、Cloud SQL のやり取りを処理するコードの部分にすぐに焦点を当てることができます。このプロジェクトでは、backend/main.py が見つかります。

タスク 3: メイン Dockerfile の内容を表示する

Dockerfile が表示されています。これがコンテナのブループリントです。中身を見てみましょう。質問するだけです。

Show me the contents of the main Dockerfile.

e49a83b3efbcf807.png

Gemini は read_file を使用して Dockerfile を表示します。ベースイメージ(FROM)、インストールされる依存関係(RUN pip install...)、最終コマンド(CMD)を分析できます。これにより、アプリケーションのランタイム環境を把握できます。

タスク 4: main.py ファイルの目的は何ですか?

それでは、コードの中核部分を見ていきましょう。Gemini に相談しましょう。次のように伝えます。

What's the purpose of the `main.py` file?

81d480c285285150.png

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

5. From Local to Live! Cloud Run と Cloud SQL を使用したデプロイ

db708c2edf0036a9.png

クラウドの冒険者よ、領土を偵察したな。それでは、クラウドに独自のツリーハウスを構築してみましょう。クイック投票アプリケーションを、誰でもアクセスできる実際のウェブアプリにします。

目標: 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!.

6c09e8e548efe217.png

Gemini CLI は、Cloud SQL 拡張機能を使用して作業を開始します。create_instance ツール呼び出しが表示されます。承認してください。

インスタンスが作成されると、次のような出力が表示されます。

1378c05137bf9260.png

上記の環境変数を含む .env ファイルを作成し、Gemini CLI を再起動する前にこのファイルをソース指定すると、Gemini CLI がこれらの変数にアクセスできるようになります。

インスタンスが成長している間に、土壌を準備しましょう。アプリにはデータベースとユーザーが必要です。

In the quickpoll-db instance, create a new database named quickpolldb.

Gemini CLI は、Cloud SQL for PostgreSQL 拡張機能の create_database ツールを使用して、データベースを作成します。

3a0ffbf97fbc35cc.png

次に、この Pod を管理するユーザーを追加します。

In the quickpoll-db instance, create a built in user named quickpoll-user with the password another-secure-password!.

今回は、Gemini CLI が create_user ツールを使用します。

562db72ed9a59d4a.png

タスク 2: シークレット パス(バックエンドの接続)

バックエンドは、新しいデータベースへの秘密のパスを知る必要があります。backend/main.py を見て、どのように処理されるかを確認しましょう。

show me how would the backend/main.py connect to the database

6592c52d634253ce.png

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?

aa539ea8798aad71.png

詳細が表示されます。[接続名] を探して、その値をコピーします。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

5201cbf678dd3fc9.png

ツール 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 はメモしておいてください。

f3330321e52c98e9.png

タスク 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

a80fe48e54b47c4.jpeg

タスク 5: 大公開!

このように変更します。いよいよ結果発表です。quickpoll-fe サービスの URL を取得し、ウェブブラウザで開きます。

QuickPoll アプリケーションがライブで表示され、使用できるようになります。アンケートを作成して投票し、結果がリアルタイムで更新されるのを確認してみましょう。

やりました!ローカルマシンからプロジェクトを取得し、Google Cloud で実現しました。そして、信頼できる相棒である Gemini CLI を使用して、ターミナルからすべてを実行しました。

これこそが生産性です。

6. デベロッパー向け - 開発ライフサイクルの加速

8feb670e686f4038.png

デベロッパーの皆様、ここからが本番です。プロジェクトについて説明しましたが、ここからはビルドについて説明します。Gemini が究極のコーディング パートナーとなり、リスが木の実を見つけるよりも速く、シンプルなアイデアからプロダクション レディなコードを作成するのに役立つ方法をご紹介します。

アイデアからコードへ

一般的な開発サイクルについて考えてみましょう。コードを書くだけではないですよね?スキャフォールディング、エラー処理の追加、リファクタリング、テストの作成などです。Gemini がすべてお手伝いします。

ボイラープレートと反復タスク: コピー&ペーストは不要に

これで、基本的なアプリケーション機能が完成しました。次に、ロギングを追加して、潜在的なエラーを処理する必要があります。通常、これは多くの繰り返し try...except ブロックになります。場合まず、Gemini CLI にコードの分析を依頼し、エラー ロギングと例外処理の効果的な手法の推奨事項を提案してもらいます。

What are the best practices for error handling and logging that should also be included in this application?

3a132d7bbf57bf67.png

Gemini CLI は既存のファイルを分析し、効果的な手法の推奨事項をいくつか提供します。自分で調査する時間を節約できる専門家のアシスタントのようなものだと考えてください。

次に、これらの推奨事項を実装するよう Gemini に依頼してみましょう。

please go ahead and implement these in the existing app

実際の出力は異なる場合がありますが、最終的には変更の詳細が表示されます。たとえば、次のスクリーンショットでは、JSON 形式のログを生成するために structlog が追加され、一元化された例外処理が実装され、リクエスト レスポンスのロギング方法が改善されていることがわかります。入力の手間が省けます。

7fcd0153f88740ce.png

リファクタリング: パーソナル コードレビュー

誰もがクリーンで効率的なコードを書きたいと思っています。しかし、急いでいる場合もあります。Gemini は、パーソナル コード レビュー担当者として機能します。次のようなことを質問できます。

please perform a comprehensive code review for best practices and security

e5482012a524210e.png

32039b0638d1efd.png

Gemini は言語固有のベスト プラクティスを理解しています。繰り返しになりますが、実際の出力は上記のスクリーンショットと異なる場合がありますが、出力を読むと、Gemini CLI がコードの分析にどれほど詳細なレベルで取り組んでいるかがわかります。コードを学習しながら改善できます。

テストの生成: 最も重要な部分

これは私のお気に入りのトリックです。テストを書くべきなのはわかっていますが、特にモックを作成する必要がある場合は、面倒な作業になることがあります。ご覧ください。次のように質問できます。

Add a test suite to this application

d7475f5ca8c9d99d.png

ac55b84b842187b.png

3653819afe847cf3.png

Gemini は関数を分析し、入力と出力を特定して、依存関係を把握します。次に、ハッピーパスやエラー条件など、いくつかのテストケースを含む完全な test_main.py ファイルが生成されます。生産性が大幅に向上します。

テストを実行する(チャレンジ タスク)

ここからが本当に面白いところです。この部分は、ご自身で調べていただくための課題として残しておきます。Gemini CLI に、生成したテストケースを実行するようプロンプトを入力してください。あとは、処理が行われるのを見守るだけです。

7. ローカルホストを超えて: GitHub との統合

d2664a4c173f1d6.png

ローカルマシンという森の小さな一角で、素晴らしい作業を行ってきました。しかし、クラウドの真の力はコラボレーションと接続にあります。さあ、飛び立ちましょう。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 を取得したら、settings.json ファイルに MCP サーバー オブジェクトを追加します。完全な 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 を使用して、さまざまな強力なツールを利用できるようになりました。

cf9cab5f70ca1fc2.png

キーコマンドの紹介

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 の探索

7e66f28519488019.png

説明は以上です。新しい 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 番号、タイトル、作成者が表示されます。これは、プロジェクトのアクティブな開発状況をすぐに確認できるビューです。実際に貢献しているリポジトリで試して、結果を確認してください。

38aecd94347e633c.png

タスク 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 から最初のコミットまで

bbaad74efa344d07.png

探索、構築、テストの方法を学習しました。では、実際のシナリオでこれらをまとめてみましょう。この段階で、計画がプロダクトに変わります。プロダクト要件ドキュメント(PRD)から最初のコミットまで、一連のプロセスを説明します。あっと驚くものを作りましょう

目標: ローカル コンテキストとリモート コンテキストを組み合わせて、実際の開発タスクを最初から最後までシミュレートします。

シナリオ: 新しい機能が割り当てられました。要件は、プロジェクトの GitHub リポジトリ内の PRD ファイルに記載されています。

タスク 1: 理解する - PRD を読む

これは最も重要なステップです。コードを 1 行も書く前に、計画を完全に把握する必要があります。新機能の要件は prd/NEW_FEATURE.md ファイルに記載されています。開けて中身を見てみましょう。

explain the requirements mentioned in prd/NEW_FEATURE.md

Gemini CLI は、read_file を使用して PRD のコンテンツを表示します。さあ、始めましょう。この機能は、ユーザーがアクティブなアンケートのリストを手動で更新するための [更新] ボタンです。必ず最初にブループリントを確認してください。

b07e95a5977e927d.png

タスク 2: コード - 要件を現実にする

これがマジック モーメントです。PRD から要件を取得し、Gemini にコードの作成を依頼します。具体的に、何を求めているのかを正確に伝えましょう。

Implement the changes as per the PRD

Gemini CLI が動作を開始し、しばらくすると次のような出力が表示されます。新しいコードが快適な環境で実行されるようになりました。

aff664dee6796f8b.png

タスク 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. 完了

393fa778d8ee9f18.png

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

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