1. 概要
このラボでは、Bitbucket パイプラインを設定し、Gemini と統合してコードレビューの手順を自動化します。

学習内容
このラボでは、次の方法について学びます。
- Bitbucket で生成 AI コードレビューの自動化手順を追加する方法
- devai CLI をローカルで実行してコードレビューを自動化する方法
前提条件
- このラボは、Cloud コンソールと Cloud Shell 環境に精通していることを前提としています。
2. 設定と要件
Cloud プロジェクトのセットアップ
- Google Cloud Console にログインして、プロジェクトを新規作成するか、既存のプロジェクトを再利用します。Gmail アカウントも Google Workspace アカウントもまだお持ちでない場合は、アカウントを作成してください。



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

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

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

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

プロンプトの例:
- Cloud Run の 5 つの重要なポイントを説明します。
- あなたは Google Cloud Run のプロダクト マネージャーです。Cloud Run について、5 つの短い要点を学生に説明してください。
- あなたは Google Cloud Run のプロダクト マネージャーです。認定 Kubernetes デベロッパーに Cloud Run を 5 つの短いキーポイントで説明してください。
- あなたは Google Cloud Run のプロダクト マネージャーです。Cloud Run と GKE のどちらを使用するかを、5 つの短い要点にまとめてシニア デベロッパーに説明してください。
プロンプト ガイドで、より良いプロンプトを作成する方法をご確認ください。
Gemini for Google Cloud がデータを使用する方法
Google のプライバシーに関する取り組み
Google は、AI/ML のプライバシーに関するコミットメントを業界で最初に発表した企業の 1 つです。このコミットメントは、お客様はクラウドに保存されている自社のデータについて最高レベルのセキュリティとコントロールを得られるべきだという、Google の信念を概説したものです。
送信および受信するデータ
Gemini に相談する質問(Gemini に送信して分析または完成される入力情報やコードなど)は、プロンプトと呼ばれます。Gemini から受け取る回答やコード補完は、レスポンスと呼ばれます。Gemini がプロンプトやそのレスポンスをデータとして使用してモデルをトレーニングすることはありません。
プロンプトの暗号化
Gemini にプロンプトを送信すると、Gemini の基盤モデルへの入力としてデータが転送中に暗号化されます。
Gemini によって生成されたプログラム データ
Gemini は、ファーストパーティの Google Cloud コードと選択したサードパーティ コードでトレーニングされています。コードのセキュリティ、テスト、有効性については、ユーザー側の責任となります(Gemini によるコード補完、生成、分析など)。
詳しくは、こちらをご覧ください。
3. プロンプトをテストするオプション
既存の devai cli プロンプトを変更または拡張する場合は、いくつかの方法があります。
Vertex AI Studio は、生成 AI モデルの開発と使用を簡素化し、加速するために特別に設計された Google Cloud の Vertex AI プラットフォームの一部です。
Google AI Studio は、プロンプト エンジニアリングと Gemini API のプロトタイピングとテストを行うためのウェブベースのツールです。
- Gemini ウェブアプリ(gemini.google.com)
Google Gemini ウェブアプリ(gemini.google.com)は、Google の Gemini AI モデルの機能を探索して活用できるように設計されたウェブベースのツールです。
4. サービス アカウントを作成する
検索バーの右にあるアイコンをクリックして、Cloud Shell をアクティブにします。

開いたターミナルで、Vertex AI API と Gemini とのチャットを使用するために必要なサービスを有効にします。
gcloud services enable \
aiplatform.googleapis.com \
cloudaicompanion.googleapis.com \
cloudresourcemanager.googleapis.com \
secretmanager.googleapis.com
承認を求められたら、[承認] をクリックして続行します。

次のコマンドを実行して、新しいサービス アカウントと鍵を作成します。
このサービス アカウントを使用して、CICD パイプラインから Vertex AI Gemini API への API 呼び出しを行います。
PROJECT_ID=$(gcloud config get-value project)
SERVICE_ACCOUNT_NAME='vertex-client'
DISPLAY_NAME='Vertex Client'
KEY_FILE_NAME='vertex-client-key'
gcloud iam service-accounts create $SERVICE_ACCOUNT_NAME --display-name "$DISPLAY_NAME"
ロールを付与します。
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/aiplatform.admin" --condition None
gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor" --condition None
gcloud iam service-accounts keys create $KEY_FILE_NAME.json --iam-account=$SERVICE_ACCOUNT_NAME@$PROJECT_ID.iam.gserviceaccount.com
5. GitHub リポジトリを Bitbucket リポジトリにインポートする
https://bitbucket.org/ にログインし、[Create] / [Repository / Import repository] オプションを選択します。

Git リポジトリの URL:
https://github.com/GoogleCloudPlatform/genai-for-developers.git
ワークスペースとプロジェクトを選択し、新しいリポジトリの名前を指定します。

[Import repository] をクリックしてインポートを開始します。
6. Bitbucket パイプライン変数を作成する
次に、変更がリポジトリに push されたときにコードレビューを実行するように Bitbucket CICD パイプラインを有効にします。
ブラウザで Bitbucket リポジトリを開き、[Repository settings / PIPELINES / Settings"] セクションに移動します。このリポジトリのパイプラインを有効にします。

[Repository settings / PIPELINES / Repository variables"] セクションに移動します。
次の 3 つの変数を追加します。
PROJECT_ID- Qwiklabs プロジェクト IDLOCATION- us-central1GOOGLE_CLOUD_CREDENTIALS
GOOGLE_CLOUD_CREDENTIALS 変数値には、上記のセクションで作成したサービス アカウント キーを使用します。Google Cloud Shell でこのコマンドを実行し、値をコピーして貼り付けます。
cat ~/vertex-client-key.json
リポジトリ変数ビュー:

7. Bitbucket パイプラインを実行する
[Pipelines] セクションを開き、[Run initial pipeline] をクリックします。

[main] ブランチと [default] パイプラインを選択し、[Run] をクリックします。

8. Bitbucket パイプラインの出力を確認する
[Pipelines] セクションを開くか更新して、パイプラインの出力を確認します。


テスト カバレッジ コマンドの結果:
devai review testcoverage -c ./sample-app/src
この devai review testcoverage コマンドは、生成 AI モデルである Gemini を使用して、コードと関連するテストスイート(利用可能な場合)を分析します。提供されたコードのテスト カバレッジを評価し、単体テストがあるファイルとメソッド、単体テストがないファイルとメソッドを特定します。次に、このコマンドはモデルを活用して、カバレッジの概要(カバーされた行や分岐/条件などの指標を含む)を提供します。分析に基づいて、テスト カバレッジを改善するための推奨事項を提示します。追加する具体的なテストを提案し、テストのベスト プラクティスに関する一般的なアドバイスを提供します。最後に、カバレッジが不足しているファイルなどの詳細や、既存のテストを改善するための提案を含む Gemini モデルのレスポンスをコマンドライン経由でユーザーに出力します。
コードレビュー コマンドの結果:
devai review code -c ./sample-app/src/main/java/anthos/samples/bankofanthos/balancereader
devai review code コマンドは、生成 AI モデルを使用して、指定されたコード スニペットの包括的なコードレビューを実施します。レビュー対象のコードを入力(コンテキスト)として受け取り、出力形式の優先度(出力)を受け取ります。大規模言語モデルを活用して、コードの正確性、効率性、保守性、セキュリティ、ベスト プラクティスへの準拠を分析します。このコマンドは、レビューの実施方法を Gemini に指示する詳細なプロンプトを作成し、モデルに送信して提供されたコードを評価します。最後に、Gemini のレスポンスを処理し、ユーザーの好みに応じてマークダウン、JSON、または表形式でフォーマットして、レビュー結果を出力します。
コンプライアンス レビュー コマンドの結果:
devai review compliance --context ./sample-app/k8s --config ./devai-cli/gemini/styleguide.md
devai review compliance コマンドは、通常は Kubernetes 構成のベスト プラクティスに照らしてコードを分析します。このコマンドは、Gemini モデルを使用して、指定されたコード(context)をレビューし、別の構成ファイル(config)で定義された指定の標準と比較します。このコマンドは、プロンプトを使用して、Gemini モデルにエキスパート Kubernetes エンジニアとして動作し、コンプライアンス レポートを提供するよう指示します。次に、検出結果を簡潔な説明としてフォーマットします。この説明では、特定された問題に対処する方法を示すコードサンプルに重点が置かれます。最後に、コマンドは Gemini のコンプライアンス レビューの出力をコンソールに出力します。これにより、ユーザーはコードのコンプライアンスを簡単に監査できます。
9. Bitbucket リポジトリのクローンを作成して SSH 認証鍵を設定する
Google Cloud Shell ターミナルに戻り、新しい SSH 認証鍵を設定します。
コマンドを実行する前にメールアドレスを更新します。
ssh-keygen -t ed25519 -C "your-email-address"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub
Bitbucket リポジトリにアクセスキーを追加します。
[Repository settings / SECURITY / Access keys] を開き、[キーを追加] をクリックします。
鍵の値には、最後のコマンドの出力をコピーして貼り付けます。

[Source] セクションで [Clone] をクリックし、URL をコピーします。


ターミナルに戻り、リポジトリのクローンを作成します。
cd ~
mkdir bitbucket
cd bitbucket
Bitbucket のプロジェクトとリポジトリの URL に置き換えます。
git clone git@bitbucket.org:YOUR_PROJECT/genai-for-developers.git
ディレクトリを変更して bitbucket-pipelines.yml ファイルを開きます。インポート時にリポジトリ名を変更した場合は、次のコマンドを実行する前にフォルダ名を更新します。
cd genai-for-developers
cloudshell edit bitbucket-pipelines.yml
10. Gemini Code Assist を使用してコードを説明する
bitbucket-pipelines.yml ファイル内の任意の場所を右クリックして、Gemini Code Assist > Explain を選択します。

審査の説明:

11. DevAI CLI の開発
このセクションでは、devai CLI を変更します。
まず、Python 仮想環境を設定し、要件をインストールして、サンプル コマンドを実行します。
cd ~/bitbucket/genai-for-developers/devai-cli
python3 -m venv venv
. venv/bin/activate
pip3 install -r src/requirements.txt
pip3 install --editable ./src
devai echo
必要な環境変数を設定します。
export PROJECT_ID=$(gcloud config get-value project)
export LOCATION=us-central1
コードレビュー コマンドを実行して、すべてが正常に機能していることを確認します。
devai review code -c ~/bitbucket/genai-for-developers/sample-app/src/main/java/anthos/samples/bankofanthos/balancereader > code-review.md
cloudshell edit code-review.md
Cloud Shell エディタの Markdown プレビューを使用して結果を確認します。
次に、コマンド パレットを使用して [Markdown: Open Preview] を選択します。



テスト カバレッジのレビュー コマンド
devai review testcoverage -c ~/bitbucket/genai-for-developers/sample-app/src > testcoverage.md
cloudshell edit testcoverage.md
コンプライアンス審査コマンド
devai review compliance --context ~/bitbucket/genai-for-developers/sample-app/k8s --config ~/genai-for-developers/devai-cli/.gemini/styleguide.md > k8s-review.md
cloudshell edit k8s-review.md
パフォーマンス レビュー コマンド
devai review performance -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > performance-review.md
cloudshell edit performance-review.md
セキュリティ レビュー コマンド
devai review security -c ~/bitbucket/genai-for-developers/sample-app/src/main/java > security-review.md
cloudshell edit security-review.md
Blockers のレビュー コマンド
devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/pom.xml
devai review blockers -c ~/bitbucket/genai-for-developers/sample-app/setup.md
画像/図のレビューと要約
入力図 [~/bitbucket/genai-for-developers/images/extension-diagram.png]:

レビュー コマンド:
devai review image \
-f ~/bitbucket/genai-for-developers/images/extension-diagram.png \
-p "Review and summarize this diagram" > image-review.md
cloudshell edit image-review.md
出力:
The diagram outlines a process for conducting local code reviews using a VS Code extension or CLI, leveraging Google Cloud's Vertex AI (Gemini Pro) for generating review prompts.
**Process Flow:**
1. **Code Style Check:** Developers initiate the process by checking their code for adherence to pre-defined style guidelines.
2. **Prompt Generation:** The VS Code extension/CLI sends the code to Vertex AI (Gemini Pro) on Google Cloud.
3. **Vertex AI Review:** Vertex AI analyzes the code and generates relevant review prompts.
4. **Local Review:** The prompts are sent back to the developer's IDE for their consideration.
5. **Optional Actions:** Developers can optionally:
- Create new JIRA issues directly from the IDE based on the review prompts.
- Generate new issues in a GitLab repository.
**Key Components:**
* **VS Code Extension/CLI:** Tools facilitating the interaction with Vertex AI and potential integrations with JIRA and GitLab.
* **Vertex AI (Gemini Pro):** Google Cloud's generative AI service responsible for understanding the code and generating meaningful review prompts.
* **Google Cloud Secret Manager:** Securely stores API keys and access tokens required to authenticate and interact with Google Cloud services.
* **JIRA/GitLab (Optional):** Issue tracking and project management tools that can be integrated for a streamlined workflow.
**Benefits:**
* **Automated Review Assistance:** Leveraging AI to generate review prompts saves time and improves the consistency and quality of code reviews.
* **Local Development:** The process empowers developers to conduct reviews locally within their familiar IDE.
* **Integration Options:** The flexibility to integrate with project management tools like JIRA and GitLab streamlines workflow and issue tracking.
画像差分分析
devai review imgdiff \
-c ~/bitbucket/genai-for-developers/images/devai-api.png \
-t ~/bitbucket/genai-for-developers/images/devai-api-slack.png > image-diff-review.md
cloudshell edit image-diff-review.md
出力:
The following UI elements are missing in the "AFTER UPGRADE STATE" image compared to the "BEFORE UPGRADE STATE" image: 1. **Slack:** The entire Slack element, including the icon, "Team channel" label, and the arrow indicating interaction, is absent in the AFTER UPGRADE image. 2. **Storage Bucket:** The "Storage Bucket" element with its icon and "PDFs" label is missing in the AFTER UPGRADE image. 3. **"GenAI Agents" label in Vertex AI block:** The BEFORE UPGRADE image has "Vertex AI Agents" and "GenAI Agent" labels within the Vertex AI block, while the AFTER UPGRADE image only has "Vertex AI." 4. **"Open JIRA Issue" and "Team Project" labels:** In the BEFORE UPGRADE image, these labels are connected to the JIRA block with an arrow. These are missing in the AFTER UPGRADE image. **Decision Explanation:** The analysis is based on a direct visual comparison of the two provided images, noting the presence and absence of specific UI elements and their associated labels. The elements listed above are present in the BEFORE UPGRADE image but absent in the AFTER UPGRADE image.
動画ファイルの分析:
devai review video \
-f "/tmp/video.mp4" \
-p "Review user journey video and create unit tests using jest framework"
ドキュメント生成コマンド
devai document readme -c ~/bitbucket/genai-for-developers/sample-app/src/main/
出力:
# Bank of Anthos - Balance Reader Service ## Description The Balance Reader service is a component of the Bank of Anthos sample application. It provides a REST endpoint for retrieving the current balance of a user account. This service demonstrates key concepts for building microservices with Spring Boot and deploying them to a Kubernetes cluster. ## Features ...
Cloud Shell エディタで利用可能な devai CLI コマンドを確認します。
cloudshell edit ~/bitbucket/genai-for-developers/devai-cli/README.md
または、GitHub リポジトリの README.md をご覧ください。
12. 完了
お疲れさまでした。これでこの Codelab は終了です。
学習した内容
- Bitbucket で生成 AI コードレビューの自動化手順を追加する
- devai CLI をローカルで実行する
次のステップ:
- 今後もハンズオン セッションが開催される予定です。
クリーンアップ
このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。
プロジェクトの削除
課金をなくす最も簡単な方法は、チュートリアル用に作成したプロジェクトを削除することです。
©2024 Google LLC All rights reserved. Google および Google のロゴは、Google LLC の商標です。その他すべての社名および製品名は、それぞれ該当する企業の商標である可能性があります。