このドキュメントでは、Gemini Code Assist をプライベート コード リポジトリに接続して、Gemini Code Assist のコードカスタマイズを設定する方法について説明します。この機能を使用すると、組織の内部ライブラリ、限定公開 API、コーディング スタイルに基づくコード推奨事項を受け取ることができます。
始める前に
- Gemini Code Assist のコードカスタマイズを利用するには、営業担当者にお問い合わせください。
- プロジェクトに変更を加えるには、Google Cloud 管理者アカウントがあることを確認します。
- Gemini Code Assist の設定
- エンドユーザー アカウントを作成または構成します。Gemini Code Assist を使用している組織内のすべてのデベロッパーには、Google Cloud プロジェクトにアクセスする権限を持つ Google Cloud のユーザー ID が必要です。詳細については、Google Cloud コンソールでロールを付与するをご覧ください。各ユーザーに次のロールがあることを確認します。
Developer Connect を構成し、GitHub.com または GitLab.com リポジトリに接続します。
また、コードのカスタマイズは、次のロケーション(リージョン)のデベロッパー コネクト接続でのみサポートされます。
us-central1
europe-west1
asia-southeast1
シェル環境で
gcloud components update
コマンドを実行して、インストールされているすべての Google Cloud CLI コンポーネントが最新バージョンに更新されていることを確認します。
接続するプライベート リポジトリを選択する
ベスト プラクティスとして、次のリポジトリを接続することをおすすめします。
- デベロッパーに記述してほしいコードと類似したスタイルまたは構造のコードがある。
- 現在のコードベースから呼び出すプライベート ライブラリまたは API がある。
(省略可)インデックスに登録しないファイルを選択する
デフォルトでは、コード カスタマイズは、指定されたリポジトリ内のサポートされているコードファイルをすべてインデックスに登録します。多くの場合、インデックスに登録したくない特定のファイルやサブツリーがあります。次に例を示します。
- 組織内でのアクセスが制限されている極めて機密情報
- 古いコードや非推奨のコード
- 自動生成コードまたは一時コード
インデックスに登録したくないコードが公開されないようにするには、ブランチ パターンを使用してインデックスへのアクセスを制御し、main
などの安定したブランチを使用します。
また、.aiexclude
ファイルを作成して、インデックスからファイルを除外することもできます。
インデックスを作成する
コードのカスタマイズでは、インデックスを使用してリポジトリを分析および解析し、コード生成の候補と検索を迅速に行います。
-
In the Google Cloud console, activate Cloud Shell.
インデックスを作成するには、
gemini code-repository-indexes create
コマンドを使用します。gcloud gemini code-repository-indexes create INDEX_NAME \ --project=PROJECT_ID \ --location=REGION
以下を置き換えます。
INDEX_NAME
: インデックス名。PROJECT_ID
: Google Cloud プロジェクト IDREGION
: このページの始める前にで説明されているように、Google Cloud プロジェクトの Developer Connect で構成したサポートされているリージョン。
インデックスの作成は通常 30 分で完了しますが、最長で 1 時間ほどかかることがあります。
Google では、コード リポジトリ インデックスの数をプロジェクトと組織ごとに 1 つに制限しています。コード リポジトリのインデックスがさらに必要な場合は、割り当ての増加をリクエストできます。
リポジトリ グループを使用してインデックスへのアクセスを制御する
-
In the Google Cloud console, activate Cloud Shell.
リポジトリ グループを作成するには、
gemini code-repository-indexes repository-groups create
コマンドを使用します。gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \ --project=PROJECT_ID \ --location=REGION \ --code-repository-index=INDEX_NAME \ --repositories='[{"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "BRANCH_NAMES"}]'
以下を置き換えます。
REPOSITORY_GROUP
: リポジトリ グループの名前(default
など)。PROJECT_ID
: Google Cloud プロジェクト IDREGION
: このページの始める前にで説明されているように、Google Cloud プロジェクトの Developer Connect で構成したサポートされているリージョン。INDEX_NAME
: インデックスを作成する前の手順で作成したインデックスの名前。REPOSITORY_RESOURCE_NAME
: Developer Connect 接続内のリポジトリの名前。リポジトリの名前を確認するには、Google Cloud コンソールの Developer Connect ページに移動し、[リポジトリ] タブで、テーブルの [接続] 列の下にある接続 ID を探します。リソース名をコピーするには、more_vert メニューをクリックしてオプションを表示し、[リソースパスをコピー] を選択します。BRANCH_NAMES
: インデックスに登録するブランチの名前(main|dev
など)。
JSON(または YAML)ファイルで定義されたリポジトリを使用して、リポジトリ グループを作成することもできます。形式は次のとおりです。
JSON
[
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "main|dev"
},
{
"resource": "REPOSITORY_RESOURCE_NAME", "branchPattern": "dev"
}
]
YAML
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: main|dev
- resource: REPOSITORY_RESOURCE_NAME
branchPattern: dev
JSON ファイルまたは YAML ファイルに基づいてリポジトリ グループを作成するには、gemini code-repository-indexes repository-groups create
コマンドを使用します。
JSON
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.json
YAML
gcloud gemini code-repository-indexes repository-groups create REPOSITORY_GROUP \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME \
--repositories=FILEPATH.yaml
プロジェクトのリポジトリ グループに IAM ロールを付与する
インデックス内にあるリポジトリからの候補のみが提示されます。各リポジトリは 1 つ以上のリポジトリ グループに属します。候補にアクセスするには、次のいずれかの方法で、必要な cloudaicompanion.repositoryGroups.user
IAM 権限を含む Cloud AI Companion リポジトリ グループ ユーザーの IAM ロール(roles/cloudaicompanion.repositoryGroupsUser
)をリポジトリ グループに付与する必要があります。
- プリンシパルにインデックス全体へのアクセス権を付与します。
- プリンシパルにインデックスのサブセットへのアクセス権を付与します。
プリンシパルにインデックス全体へのアクセス権を付与する
-
In the Google Cloud console, activate Cloud Shell.
プロジェクトの IAM ポリシーをバインドするには、
projects add-iam-policy-binding
コマンドを使用します。gcloud projects add-iam-policy-binding PROJECT_ID \ --member='PRINCIPAL' \ --role='roles/cloudaicompanion.repositoryGroupsUser'
以下を置き換えます。
PROJECT_ID
: リポジトリ グループが配置されているプロジェクト ID。PRINCIPAL
: アクセスが必要なプリンシパルのメールアドレス(例: 個人の場合はuser:test-user@gmail.com
、グループの場合はgroup:admins@example.com
)。
詳細については、
gcloud projects set-iam-policy
をご覧ください。条件を指定するよう求められたら、「
None
」と入力します。
プリンシパルにインデックスのサブセットへのアクセス権を付与する
複数のリポジトリ グループを作成し、異なる IAM プリンシパルに IAM ロールを割り当てることができます。
IAM ポリシーを設定するには、IAM ポリシーの JSON または YAML ファイルを準備する必要があります。このファイルには、IAM グループと割り当てられたロールのリストが含まれます。次に例を示します。
bindings:
- members:
- group:my-group@example.com
- user:test-user@example.com
role: roles/cloudaicompanion.repositoryGroupsUser
詳細と構文については、許可ポリシーについてをご覧ください。
IAM ポリシーを設定するには、gemini code-repository-indexes repository-groups set-iam-policy
コマンドを使用します。
gcloud gemini code-repository-indexes repository-groups set-iam-policy GROUP_NAMEPOLICY_FILE \
--project=PROJECT_ID \
--location=REGION \
--code-repository-index=INDEX_NAME
以下を置き換えます。
GROUP_NAME
: リポジトリ グループを使用してインデックスへのアクセスを制御するために、前の手順で作成したリポジトリ グループ名。POLICY_FILE
: IAM ポリシー。REGION
: このページの始める前にで説明されているように、Google Cloud プロジェクトの Developer Connect で構成したサポート対象のリージョン。INDEX_NAME
: インデックスを作成する前の手順で作成したインデックスの名前。詳細については、
gcloud gemini code-repository-indexes repository-groups set-iam-policy
をご覧ください。
インデックスのステータスを確認する
インデックスに登録するリポジトリの数とサイズによっては、コンテンツのインデックス登録に最大 24 時間かかることがあります。大規模なリポジトリの場合、インデックス作成に時間がかかることがあります。インデックス処理は 24 時間に 1 回行われ、リポジトリに加えられた変更がすべて取り込まれます。
Google Cloud コンソールで、[ログ エクスプローラ] ページに移動します。
ログ名フィルタを使用して
indexing
ログを表示するか、次のコマンドを使用してインデックス ログを検索します。gcloud logging read "logName="projects/PROJECT_ID/logs/indexing""
PROJECT_ID
は、リポジトリ グループが配置されているプロジェクト ID に置き換えます。たとえば、
indexing
ログのエラーを表示するには、次のコマンドを実行します。gcloud logging read "logName="projects/PROJECT_ID/logs/indexing" AND severity>=ERROR"
詳細については、Logging のクエリ言語をご覧ください。
次のような関連するインデックス登録ステータスを確認します。
- リポジトリのインデックス登録の開始(例:
Indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 6, failed: 0.
) - 個々のリポジトリのインデックス登録の終了 - 例:
- 成功:
Successfully finished indexing repository REPOSITORY_NAME. Total number of repositories: 10, succeeded: 7, failed: 0.
- 失敗:
Failed to index repository REPOSITORY_NAME. Error: [<error message>]. Total number of repositories: 10, succeeded: 7, failed: 1.
- 成功:
- リポジトリのインデックス登録の終了(例:
- 成功:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 0.
- 失敗:
Finished indexing process. Repositories attempted: 10. Repositories successfully indexed: 9. Repositories unsuccessfully fetched: 1. Repositories that were not successfully fetched will be retried in the next run.
- 成功:
インデックス ステータスでは、
REPOSITORY_NAME
は確認するリポジトリです。- リポジトリのインデックス登録の開始(例:
次のような関連するインデックス作成エラーを確認します。
- リポジトリを取得できませんでした。
- リポジトリ ファイルを一覧表示できませんでした。
- インデックスからリポジトリ情報を取得できませんでした。
- インデックスからファイルを取得できませんでした。
- 内部エラーが発生しました。
コードのカスタマイズを使用
コードのカスタマイズを設定すると、コード補完とコード生成の候補が表示されます。これは、インデックスに登録したプライベート コードに基づく場合や、コードベース全体の認識結果に基づく場合があります。
コードのカスタマイズを無効にする
-
In the Google Cloud console, activate Cloud Shell.
現在のインデックスのすべてのリポジトリ グループを一覧表示するには、
gemini code-repository-indexes repository-groups list
コマンドを使用します。gcloud gemini code-repository-indexes repository-groups list --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME --uri
以下を置き換えます。
REGION
: このページの始める前にで説明されているように、Google Cloud プロジェクトの Developer Connect で構成したサポートされているリージョン。PROJECT_ID
: Google Cloud プロジェクト IDINDEX_NAME
: インデックスを作成する前の手順で作成したインデックスの名前。
現在のインデックスからリポジトリ グループを削除するには、
gemini code-repository-indexes repository-groups delete
コマンドを使用します。gcloud gemini code-repository-indexes repository-groups delete REPOSITORY_GROUP \ --location=REGION \ --project=PROJECT_ID \ --code-repository-index=INDEX_NAME
インデックスからすべてのリポジトリ グループを削除するまで、リポジトリ グループごとに手順 3 を繰り返します。
省略可: インデックスを削除するには、
gemini code-repository-indexes delete
コマンドを使用します。gcloud gemini code-repository-indexes delete INDEX_NAME \ --location=REGION \ --project=PROJECT_ID
次のステップ
- Gemini Code Assist の使用を開始します。
- VS Code: Gemini Code Assist を使用したコード
- IntelliJ: Gemini Code Assist を使用したコード
- Cloud Shell エディタ: Gemini Code Assist を使用したコード
- Cloud Workstations: Gemini Code Assist を使用したコード
- Developer Connect の詳細を確認する。
- Gemini for Google Cloud がデータを使用する方法とタイミングについての説明をご確認ください。