Gemini CLI で開発を加速する

1. 概要

このラボでは、Google Cloud のオープンソースの AI 搭載エージェントである Gemini CLI の活用に焦点を当てます。ここでは、既存のコードベースの理解、ドキュメントと単体テストの生成、Python ウェブ アプリケーションの UI コンポーネントとバックエンド コンポーネントの両方のリファクタリングなど、さまざまなタスクに Gemini CLI を使用する方法を学びます。

学習内容

このラボでは、次の方法について学びます。

  • 一般的なデベロッパー タスクで Gemini CLI を使用する方法。

前提条件

  • このラボは、Cloud コンソール環境と Cloud Shell 環境に精通していることを前提としています。

2. 設定と要件

Cloud プロジェクトのセットアップ

  1. Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • プロジェクト名は、このプロジェクトの参加者に表示される名称です。Google API では使用されない文字列です。いつでも更新できます。
  • プロジェクト ID は、すべての Google Cloud プロジェクトにおいて一意でなければならず、不変です(設定後は変更できません)。Cloud コンソールでは一意の文字列が自動生成されます。通常は、この内容を意識する必要はありません。ほとんどの Codelab では、プロジェクト ID(通常は PROJECT_ID と識別されます)を参照する必要があります。生成された ID が好みではない場合は、ランダムに別の ID を生成できます。または、ご自身で試して、利用可能かどうかを確認することもできます。このステップ以降は変更できず、プロジェクトを通して同じ ID になります。
  • なお、3 つ目の値として、一部の API が使用するプロジェクト番号があります。これら 3 つの値について詳しくは、こちらのドキュメントをご覧ください。
  1. 次に、Cloud のリソースや API を使用するために、Cloud コンソールで課金を有効にする必要があります。この Codelab の操作をすべて行って、費用が生じたとしても、少額です。このチュートリアルの終了後に請求が発生しないようにリソースをシャットダウンするには、作成したリソースを削除するか、プロジェクトを削除します。Google Cloud の新規ユーザーは、300 米ドル分の無料トライアル プログラムをご利用いただけます。

環境設定

Gemini チャットを開きます。

bc3c899ac8bcf488.png

または、検索バーに「Gemini に相談」と入力します。

e1e9ad314691368a.png

Gemini for Google Cloud API を有効にします。

636114fa6e5f0abf.png

次の画面で GCA を有効にします。

8e234b2e282c4413.png

[Start chatting] をクリックし、サンプル質問のいずれかに沿って操作するか、独自のプロンプトを入力して試してみてください。

ed120d672468b412.png

プロンプトの例:

  • Cloud Run の 5 つの要点を説明します。
  • あなたは Google Cloud Run のプロダクト マネージャーです。Cloud Run について、5 つの短い要点を学生に説明してください。
  • あなたは Google Cloud Run のプロダクト マネージャーです。認定 Kubernetes デベロッパーに Cloud Run を 5 つの短いキーポイントで説明してください。
  • Google Cloud Run のプロダクト マネージャーとして、Cloud Run と GKE のどちらを使用すべきかを 5 つの短い要点にまとめてシニア デベロッパーに説明してください。

完了したら、Gemini Cloud Assist チャット ウィンドウを閉じます。

プロンプト ガイドで、より良いプロンプトを作成する方法をご確認ください。

Gemini for Google Cloud がデータを使用する方法

Google のプライバシーに関する取り組み

Google は、AI/ML のプライバシーに関する取り組みを業界で最初に発表した企業の 1 つです。この取り組みは、お客様はクラウドに保存されている自社のデータについて最高レベルのセキュリティとコントロールを得られるべきだという、Google の信念を概説したものです。

送信および受信するデータ

Gemini に尋ねる質問(Gemini に送信して分析または完成される入力情報やコードなど)は、プロンプトと呼ばれます。Gemini から受け取る回答やコード補完は、レスポンスと呼ばれます。Gemini がプロンプトやそのレスポンスをデータとして使用してモデルをトレーニングすることはありせん

プロンプトの暗号化

Gemini にプロンプトを送信すると、Gemini の基盤モデルへの入力としてデータが転送中に暗号化されます。

Gemini によって生成されたプログラム データ

Gemini は、ファーストパーティの Google Cloud コードと選択したサードパーティ コードでトレーニングされています。コードのセキュリティ、テスト、有効性については、ユーザー側の責任となります(Gemini によるコード補完、生成、分析など)。

詳しくは、こちらをご覧ください。

3. プロンプトをテストするオプション

既存のプロンプトを変更するには、いくつかの方法があります。

Vertex AI Studio は、生成 AI モデルの開発と使用を簡素化し、加速するために特別に設計された Google Cloud の Vertex AI プラットフォームの一部です。

Google AI Studio は、プロンプト エンジニアリングと Gemini API のプロトタイピングとテストを行うためのウェブベースのツールです。

Google Gemini ウェブアプリ(gemini.google.com)は、Google の Gemini AI モデルの機能を活用できるように設計されたウェブベースのツールです。

4. アプリケーションをダウンロードして調べる

検索バーの右にあるアイコンをクリックして、Cloud Shell をアクティブにします。

3e0c761ca41f315e.png

承認を求められたら、[承認] をクリックして続行します。

6356559df3eccdda.png

ターミナルで次のコマンドを実行して、Git リポジトリのローカル クローンを作成します。

git clone https://github.com/gitrey/calendar-app-lab
cd calendar-app-lab

「Cloud Shell エディタ」を起動します。

18ca8f879206a382.png

calendar-app-lab」フォルダを開きます。

7cef847802b51038.png

Cloud Shell エディタで新しいターミナルを起動します。

3336bea9c0e999b9.png

環境は次のスクリーンショットのようになります。

ae9475871b7d28a6.png

5. Gemini CLI の概要

Gemini CLI は、Google Cloud の Gemini モデルと統合されたオープンソースの AI エージェントです。これにより、開発者はコードベースの理解、ドキュメントと単体テストの生成、コードのリファクタリングなど、さまざまなタスクをターミナルから直接実行できます。Gemini CLI の主なメリットは、生成 AI の機能をデベロッパーのコマンドライン環境に直接取り込むことで、開発ワークフローを効率化し、コンテキストの切り替えを減らして生産性を高められることです。

環境変数を設定するこの手順は、Qwiklabs 環境では必要ありません。次のステップに進みます。

ローカル環境で、組織の有料の Code Assist ライセンスを使用している場合は、ターミナルで Google Cloud プロジェクトを設定してください。詳細

export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_NAME"

プロジェクト フォルダのルートにいることを確認します。

cd ~/calendar-app-lab

ターミナル ウィンドウで Gemini CLI を起動します。

gemini

環境は次のスクリーンショットのようになります。

ローカル環境で手順に沿って操作している場合は、IDE との統合を有効にできます。

この設定は、/ide disable | enable を実行することでいつでも変更できます。

eaee08868abb4ccd.png

Qwiklabs 環境でラボを実行している場合は、[Use Cloud Shell user credentials] を選択します。

それ以外の場合は、次のコマンドを実行して Gemini CLI を認証し、[Login with Google] を選択します。

/auth

CLI を再起動すると、提供されたリンクにアクセスしてアプリケーションを承認するよう求めるメッセージが表示されます。

390e8cbd9a32e8eb.png

リンクを開き、手順に沿って Qwiklabs の受講者用認証情報でログインします。24c1671a3c14b61d.png

確認コードをコピーし、ターミナルに戻ってコードを貼り付けてプロセスを完了します。

認証方法を確認するには、次のコマンドを実行します。

/about

f15a4036437b84d5.png

6. コードベースの理解

Gemini CLI を使用すると、ファイルやディレクトリの目的を要約したり、複雑な関数やコードのセクションを説明したりするよう指示することで、コードベースをすばやく理解できます。これにより、デベロッパーは、手動で深く探索することなく、新しいプロジェクトに迅速にオンボーディングしたり、既存のコードの不明な部分を把握したりできます。

コードベースの詳細を確認するには、Gemini CLI で次のプロンプトを送信します。

Don't suggest any changes. Explain this codebase to me.

出力を確認する:

63b57c91fd0e90a8.png

7. アプリケーションをローカルで起動する

Gemini CLI は、requirements.txt や基本的な Dockerfile などの重要な構成ファイルの自動生成を支援することで、Python アプリケーションのローカル実行を大幅に簡素化できます。また、Python の依存関係の管理やトラブルシューティングにも優れています。パッケージの欠落やバージョンの競合によって発生したトレースバック エラーを迅速に説明し、問題を解決するための正確な pip install コマンドを提案することもできます。

アプリケーションをローカルで起動するには、Gemini CLI ターミナルに次のプロンプトを入力します。

Run this app locally

プロンプトに沿ってアプリケーションを起動します。

d1fefa449b733c15.png

リンクをクリックして、アプリケーションをプレビューします。

695fc8a1abab0aa7.png

出力例:

e9f986d9088b4419.png

d2bb703195b4f99.png

8. ドキュメントの追加

Gemini CLI は、関数やクラスの docstring を即座に生成できるため、ドキュメント作成やコメント作成に効果的です。また、これを利用して、複雑なコードブロックや見慣れないコードブロックに説明的なインライン コメントをすばやく追加し、コードベースの明瞭性と保守性を大幅に向上させることもできます。

アプリケーション内のすべての Python ファイルにコメントを追加するには、Gemini CLI ターミナルを使用して次のプロンプトを入力します。

Add docstrings to all files

提案された変更を承認します。IDE 統合が有効になっている場合は、UI コントロールを使用するか、ターミナルで Enter キーを押して、受け入れて続行できます。「ctrl+y」を使用して自動承認(YOLO)モードを有効にすることもできます。

a41d76b77290cc10.png

次のプロンプトを使用して .gitignore ファイルを更新します。

update .gitignore and add __pycache__ folder

[Source Control] ビューに切り替えて、これまでの変更を確認します。

2c41f8b842573384.png

9. 単体テストの追加

Gemini CLI は、既存の関数のシグネチャとロジックに基づいてテスト関数を生成し、初期アサーションとモック設定を完了することで、単体テストの作成に優れています。ただし、生成されたテストをレビューして検証し、単純なパス実行だけでなく、必要なすべてのエッジケースを意味のある形でカバーしていることを確認する必要があります。

以下のプロンプトを使用して、単体テストを生成します。

Generate unit tests for @calendar.py

変更内容を確認し、承認します。

6b59d78b83152a22.png

新しい依存関係をインストールしてテストを実行します。Gemini CLI は、テストに合格してコードが検証されるまで、生成されたコードをループで監視、修正、再実行します。

ec1a4fbb2d340384.png

10. バグを確認する

Gemini CLI は、コード スニペットのレビューと分析を促し、潜在的な論理的欠陥、オフバイワン エラー、誤った条件処理を特定することで、ロジックのバグのチェックを支援します。コードの意図した動作を説明し、CLI に不一致を検出するように依頼することで、コードを実行する前に微妙な欠陥をすばやく見つけることができます。

変換ロジックにバグがないか確認するには、Gemini CLI で次のプロンプトを送信します。

Are there any bugs in the conversion logic? Check if negative numbers are handled properly.

提案された変更内容を確認し、チャットで承認します。

54ef65ded5462b34.png

11. UI のリファクタリング

Gemini CLI は、古い UI パターン(クラス コンポーネントなど)を新しい最新の関数型パラダイム(React のフックなど)に変換したり、保守性を向上させるための構造的な改善を提案したりすることで、UI のリファクタリングを大幅に支援します。これを使用して、既存の UI コードをよりモジュール化された再利用可能なコンポーネントに分析してリファクタリングし、よりクリーンで標準化されたインターフェース設計を実現できます。

次のプロンプトを Gemini CLI に送信して、Bootstrap ライブラリを使用して UI をリファクタリングします。

Refactor UI to use Bootstrap library

変更内容を確認して承諾します。

16e6ca14e703127.png

まず、アプリを起動します。すでに実行中の場合は、ページを再読み込みします。

python3 main.py

ページを再読み込みして、変更内容を確認します。

b52a709e902040e3.png

54664e527bcd9227.png

エラー処理を実装して、問題が発生したときにエラーページが表示されるようにします。

Implement error handling to display an error page when issues occur.

ページを更新して、更新内容を表示してください。

負の数を送信して、エラーページを確認します。

82e16d4cf25933db.png

12. バックエンドのリファクタリング

Gemini CLI は、レガシー フレームワーク コードを最新の代替コードに移行したり、モノリシック サービスをより管理しやすいマイクロサービス コンポーネントに再構築したりする際に役立ち、バックエンドのリファクタリングに効果的です。サーバーサイド ロジックを分析して、改善されたデータベース クエリ パターンや、より効率的な API エンドポイント設計を提案し、パフォーマンスとスケーラビリティを維持または強化します。

バックエンドを変更して、変換リクエストをメモリに保存します。

Store requests in memory and create a page to display conversion history. Add links on all pages to view the history.

チャットで変更内容を確認して承諾します。

19cfa20552fb3a01.png

アプリケーションに複数のリクエストを送信し、履歴ページを確認します。

ac5639d18b341b0a.png

変換リクエストの履歴を確認します。

9ca680e193510640.png

現在のコードベースの状態で README.md ファイルを更新するには、Gemini CLI を介して次のプロンプトを送信します。

analyze README.md file and update it with latest codebase state

出力を確認します。Cloud Shell 統合を有効にしている場合は、UI コントロールを使用して変更にアクセスするか、ターミナルからアクセスできます。

13. Gemini CLI の組み込みツール

Gemini CLI には、Gemini モデルがローカル環境とのやり取り、情報へのアクセス、アクションの実行に使用する組み込みツールが含まれています。これらのツールにより CLI の機能が強化され、テキスト生成だけでなく、幅広いタスクを支援できるようになります。

Gemini CLI で次のプロンプトを送信して、使用可能なツールを表示します。

/tools

出力を確認します。

e5ef2d9b81f6c10.png

Gemini CLI は、指定されたタスクに基づいて最も適切な組み込みツールをインテリジェントに選択し、リクエストと利用可能な機能の理解を活用して複雑なオペレーションを実行します。詳しくは、組み込みツールについての記事をご覧ください。

14. Gemini CLI Repo Init コマンド

Gemini CLI には、プロジェクトを分析してカスタマイズされた GEMINI.md ファイルを作成するコマンドが含まれています。

GEMINI.md ファイルを生成するには、Gemini CLI を使用して次のプロンプトを送信します。

/init

出力を確認します。このコマンドにより、プロジェクトの目的、テクノロジー、ビルド/実行手順、将来のコンテキストの開発規約をまとめた GEMINI.md ファイルが作成されます。

プロジェクトの GEMINI.md ファイルに含める指示やコンテキストを理解するには、gemini-cli リポジトリにある GEMINI.md ファイルを確認することをおすすめします。

15. Gemini CLI カスタム コマンド

Gemini CLI でカスタム コマンドを使用すると、開発ワークフローを効率化し、一貫性を維持できます。これらのコマンドは、よく使うプロンプトの個人用ショートカットとして機能します。単一のプロジェクトに固有のコマンドを作成することも、すべてのプロジェクトでグローバルに使用できるコマンドを作成することもできます。

リポジトリには、.gemini/commands フォルダにあるいくつかのカスタム コマンドが付属しています。

図を作成するカスタム コマンド

このプロンプトを Gemini CLI で送信して、Mermaid 形式でリクエスト フロー図を生成します。

フォルダの作成やファイルの保存などのツール呼び出しを受け入れます。

/diagram:new request flow for this app

出力を確認します。

a85a31f482a2cc7d.png

図をプレビューする場合は、Marketplace から Mermaid Chart 拡張機能をインストールします。

22d4a002e2137b55.png

ファイルを開き、コンテキスト メニューから [プレビュー] を選択します。

bccf0ae8ac46415f.png

c669fcd96c34662.png

デッキを作成するカスタム コマンド

このプロンプトを Gemini CLI で送信して、Marp 形式の要点をまとめたスライドを生成します。

フォルダの作成やファイルの保存などのツール呼び出しを受け入れます。

/deck:new key points and details for this app

出力を確認します。

c9aa767796204c7c.png

Marp 拡張機能にはウェブブラウザのインストールが必要なため、この手順は Cloud Shell と互換性がありません。

Marketplace から Marp for VS Code 拡張機能をインストールして、デッキを保存します。

a9d339718cbfcd9.png

それ以外の場合は、生成されたファイルをエディタで開き、コマンド パレットから「Marp: Export Slide Deck」を選択します。

91143fe81f7f5d71.png

新機能の実装を計画するためのカスタム コマンド

Gemini CLI でこのプロンプトを送信して、UI をリファクタリングします。

フォルダの作成やファイルの保存などのツール呼び出しを受け入れます。

/plan:new refactor UI to use Materialize CSS

出力を確認します。

552dbe189a493f91.png

前に生成したプランに基づいて、Gemini CLI を介してこのプロンプトを送信し、UI のリファクタリング プロセスを開始します。

フォルダの作成やファイルの保存などのツール呼び出しを受け入れます。「ctrl+y」を使用して、ツールの自動承認モード(YOLO mode)を有効にできます。

/plan:impl implement the plan to refactor the app

a3ceec7146f285e0.png

アプリケーションを起動または再読み込みして、出力を確認します。

fd0675f713d361e4.png

7352b93acabfb5be.png

16. Gemini CLI の非インタラクティブ モード

CI/CD パイプライン内で非インタラクティブ モードで Gemini CLI を実行すると、手動操作を必要とせずに、プロンプトとコマンドを CLI に直接渡すことで、さまざまなタスクを自動化できます。これにより、コード分析、ドキュメント生成、その他の開発タスクの自動化されたワークフローにシームレスに統合できます。

新しいターミナルを開くか、既存の Gemini CLI セッションを閉じて、このコマンドを実行します。

gemini -p "Explain the architecture of this codebase"

出力を確認します。

タスクでツールの承認が必要な場合は、-y フラグを使用して YOLO モードを有効にできます。

gemini -p "Explain the architecture of this codebase and save the file in the markdown format in the docs folder" -y

出力を確認します。

非インタラクティブ モードで Gemini CLI を活用することで、CI/CD パイプラインの自動化機能を大幅に強化し、開発サイクルを効率化してコードの品質を向上させることができます。

17. Gemini CLI シェルモード

LLM は複雑なタスクを処理しますが、簡単なアクションには直接コマンドの方が効率的です。! prefix を使用すると、AI と従来のコマンドライン インターフェースをシームレスに切り替えることができます。

!ls

出力を確認します。Escape を押してシェルモードを終了します。

18. Gemini CLI の MCP サポート

Gemini CLI は、モデル コンテキスト プロトコル(MCP)を介して、Jira、Confluence、GitHub などのサードパーティ システムと統合できます。これは MCP サーバーのカスタムツール統合によって実現され、Gemini CLI で JIRA チケットの作成や更新、Confluence ページからの情報の取得、プルリクエストの作成などを行うことができます。

ターミナルでこのコマンドを実行して構成ファイルを作成するか、シェルモードを使用します。

echo '{
    "mcpServers": {
        "context7": {
            "httpUrl": "https://mcp.context7.com/mcp"
        }
    }
}' > .gemini/settings.json

Gemini CLI セッションを開始します。

gemini

構成された MCP サーバーを確認します。

/mcp

出力を確認する

c80d95544cc3436a.png

構成済みの MCP サーバーをテストするプロンプトを送信します。

use context7 tools to look up how to implement flex grid in react mui library 

ツールを承認して、出力を確認します。

b51db5af09bd3f02.png

19. ローカル環境の MCP サーバー構成の例

次の構成を使用して、ローカル環境に複数の MCP サーバーを構成できます。

{
    "mcpServers": {
        "Snyk Security Scanner": {
            "command": "snyk",
            "args": [
                "mcp",
                "-t",
                "stdio",
                "--experimental"
            ],
            "env": {}
        },
        "atlassian": {
            "command": "npx",
            "args": [
                "-y",
                "mcp-remote",
                "https://mcp.atlassian.com/v1/sse"
            ]
        },
        "playwright": {
            "command": "npx",
            "args": [
                "@playwright/mcp@latest"
            ]
        },
        "github": {
            "command": "npx",
            "args": [
                "-y",
                "@modelcontextprotocol/server-github"
            ],
            "env": {
                "GITHUB_PERSONAL_ACCESS_TOKEN": "******"
            }
        }
    }
}

この構成の MCP サーバーは、外部システムへの標準化されたアクセスを提供することで、Gemini CLI エージェントを動的な開発およびコラボレーション ツールに変換します。具体的には、Snyk Security Scanner サーバーを使用すると、エージェントは現在のワークスペースを離れることなく、コードと依存関係の脆弱性をチェックできます。一方、Atlassian サーバーは Jira と Confluence に接続し、Gemini CLI が自然言語を使用して問題やドキュメントの作成、検索、更新を行えるようにします。さらに、Playwright サーバーはエージェントにブラウザの自動化機能を提供し、テストやデータ抽出などのタスクでウェブを操作できるようにします。最後に、Github サーバーはエージェントにリポジトリへの直接的なコンテキスト アクセスを提供し、PR の管理、問題のトリアージ、コードベースの分析を可能にします。これにより、コンテキスト切り替えが大幅に減少し、開発ワークフロー全体の生産性が向上します。

20. Gemini CLI のまとめ

結論として、Gemini CLI は、Google Cloud の Gemini モデルとシームレスに統合され、デベロッパーの生産性を大幅に向上させる、強力で汎用性の高いオープンソースの AI エージェントとして際立っています。このラボでは、複雑なコードベースの理解、重要なドキュメントと単体テストの生成、Python ウェブ アプリケーションのフロントエンド コンポーネントとバックエンド コンポーネントの両方の効率的なリファクタリングなど、さまざまな一般的な開発タスクを効率化する機能について説明しました。Gemini CLI を活用することで、デベロッパーはコンテキストの切り替えを減らし、反復プロセスを自動化し、最終的に高品質のコードをより効率的に提供できます。生成 AI の力をコマンドラインに直接もたらす機能は、開発ワークフローに真の革命をもたらします。

21. 完了

お疲れさまでした。これでこの Codelab は終了です。

学習した内容

  • 一般的なデベロッパー タスクに Gemini CLI を使用する

次のステップ:

  • 今後もハンズオン セッションが開催される予定です。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。

©2024 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。