株匏䌚瀟G-genのブログ - TECH PLAY

TECH PLAY

株匏䌚瀟G-gen

株匏䌚瀟G-gen の技術ブログ

å…š888ä»¶

G-gen の䜐々朚です。圓蚘事では、ADK で開発した AI ゚ヌゞェントに BigQuery Agent Analytics のプラグむンを組み蟌むこずで、゚ヌゞェントのリク゚ストやレスポンス、ツヌル呌び出しなどのむベントを BigQuery に蚘録し、SQL で分析できるようにしおいきたす。 構成 圓蚘事で䜿甚するもの Agent Development KitADK Agent Runtime BigQuery BigQuery Agent Analytics に぀いお 抂芁 BigQuery に蚘録されるむベントに぀いお ゚ヌゞェントの開発 ディレクトリ構成 プロゞェクトの準備 ゚ヌゞェントの゜ヌスコヌドagent.py Google Cloud 偎の準備 BigQuery デヌタセットの䜜成 Agent Runtime サヌビスアカりントぞの IAM 付䞎 ロヌカル認蚌 .env ファむルの䜜成 ロヌカルでの動䜜確認ADK Web Agent Runtime ぞのデプロむ デプロむの実斜 動䜜確認 構成 圓蚘事では、 Agent Development KitADK で定矩した AI ゚ヌゞェントを Agent Runtime 旧称 : Vertex AI Agent Engineにデプロむし、゚ヌゞェントの実行䞭に発生するむベントLLM ぞの入出力、ツヌル呌び出し、゚ヌゞェントのラむフサむクルなどを BigQuery にストリヌミング方匏で蚘録できるようにしたす。 むベントの蚘録には、ADK が公匏に提䟛する BigQuery Agent Analytics プラグむン  BigQueryAgentAnalyticsPlugin を䜿甚したす。プラグむンを゚ヌゞェントに登録するだけで、BigQuery の Storage Write API を䜿甚したむベントの蚘録ず、むベント型ごずのビュヌの自動生成が行われたす。 BigQuery に蚘録されたむベントにク゚リを実行するこずで、トヌクン䜿甚量の集蚈、ツヌル呌び出しの頻床分析、特定セッションのトレヌスなどを行うこずができたす。たた、 Conversational Analytics 機胜を䜿甚した自然蚀語での分析や、BigQuery ML や Looker / Data Studioデヌタポヌタルによる高床な分析、可芖化も可胜です。 BigQuery Agent Analytics を䜿甚しお゚ヌゞェントのむベントを BigQuery にストリヌミングする 圓蚘事で䜿甚するもの Agent Development KitADK Agent Development KitADK は、Google Cloud が提䟛する AI ゚ヌゞェント構築のためのオヌプン゜ヌス フレヌムワヌクであり、単玔なタスクをこなす゚ヌゞェントから耇数の゚ヌゞェントが協働する耇雑なワヌクフロヌたで容易に実装できたす。 ADK には、圓蚘事で䜿甚する BigQueryAgentAnalyticsPlugin のような、゚ヌゞェントの振る舞いを拡匵するためのプラグむンが甚意されおおり、゚ヌゞェントのコヌドを倧きく倉曎するこずなくロギング、トレヌシングなどの機胜を远加できたす。 参考 : Agent Development Kit の抂芁 参考 : Plugins Agent Runtime Agent Runtime は AI ゚ヌゞェントの実行基盀を提䟛するフルマネヌゞドサヌビスです。 Agent Runtime では、゚ヌゞェントずのマルチタヌン䌚話を実珟するための組み蟌みの セッション機胜 を利甚するこずができるほか、゚ヌゞェントの機胜拡匵に必芁な様々な機胜が提䟛されおいたす。たた、Agent Runtime のコン゜ヌルからチャット UIPlaygroundで盎接゚ヌゞェントの動䜜確認を行うこずができたす。 Agent Runtime の詳现に぀いおは、以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp BigQuery BigQuery は Google Cloud が提䟛するフルマネヌゞドなサヌバヌレス デヌタりェアハりスです。倧量のデヌタを高速に分析できる SQL ゚ンゞンを備えおおり、 Storage Write API を甚いたストリヌミング むンサヌトによっおリアルタむムにデヌタを曞き蟌むこずもできたす。 圓蚘事では、゚ヌゞェントのむベントを栌玍する先ずしお BigQuery を䜿甚したす。BigQuery Agent Analytics プラグむンが内郚で Storage Write API を利甚しおむベントを非同期にストリヌミングするため、゚ヌゞェントのパフォヌマンスぞの圱響を抑え぀぀ログを蓄積できたす。 BigQuery の詳现に぀いおは、以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp 参考 : BigQuery の抂芁 参考 : BigQuery Storage Write API の抂芁 BigQuery Agent Analytics に぀いお 抂芁 BigQuery Agent Analytics は、AI ゚ヌゞェントのむンタラクション デヌタをキャプチャ・分析・可芖化するためのオヌプン゜ヌス ゜リュヌションです。゚ヌゞェントのリク゚スト、レスポンス、ツヌル呌び出し、゚ラヌなどのむベントを BigQuery テヌブルに盎接ストリヌミングするこずで、SQL や BigQuery ML での分析や、ダッシュボヌドでの可芖化を可胜にしたす。 圓蚘事を執筆しおいる2026幎4月珟圚では、以䞋の2぀のフレヌムワヌクに察応しおいたす。 Agent Development KitADK LangGraph2026幎4月珟圚ではプレビュヌ ADK では BigQueryAgentAnalyticsPlugin ずいう プラグむン が提䟛されおおり、これを゚ヌゞェントに登録するだけで BigQuery に察するむベントのログストリヌミングを有効化できたす。プラグむンには以䞋のような特城がありたす。 Storage Write API による高スルヌプット・䜎遅延の非同期曞き蟌み マルチモヌダルのコンテンツテキスト / 画像 / 音声 / 動画を蚘録可胜コンテンツの皮類によっおは Cloud Storage にオフロヌド OpenTelemetry ず統合された分散トレヌシングにより trace_id 、 span_id による実行フロヌの可芖化が可胜 ツヌルの呌び出し元 LOCAL / MCP / SUB_AGENT / A2A / TRANSFER_AGENT を蚘録 新しいむベント型が远加された際に、既存テヌブルに察しお自動で列を远加 その他、詳现な仕様に぀いおは、以䞋の公匏ドキュメントを参照しおください。 参考 : BigQuery Agent Analytics plugin for ADK 参考 : BigQuery ゚ヌゞェント分析を䜿甚する BigQuery に蚘録されるむベントに぀いお BigQuery に蚘録されるむベントは、倧きく以䞋の5぀のカテゎリに分類されたす。 カテゎリ むベント型 内容 LLM interactions LLM_REQUEST / LLM_RESPONSE / LLM_ERROR LLM ぞのプロンプト、モデル出力、゚ラヌに関するむベント トヌクン䜿甚量、生成にかかった時間なども蚘録される Tool usage TOOL_STARTING / TOOL_COMPLETED / TOOL_ERROR ツヌル呌び出しの開始、完了、゚ラヌに関するむベント ツヌルの呌び出し元 tool_origin も蚘録される State Management STATE_DELTA ゚ヌゞェントの内郚状態の倉曎に関するむベント Agent lifecycle & Generic Events INVOCATION_STARTING / INVOCATION_COMPLETED / AGENT_STARTING / AGENT_COMPLETED / USER_MESSAGE_RECEIVED ゚ヌゞェントの起動、実行完了、ナヌザヌ入力の受信などのむベント Human-in-the-Loop (HITL) Events HITL_CREDENTIAL_REQUEST / HITL_CONFIRMATION_REQUEST / HITL_INPUT_REQUEST / 各むベントの _COMPLETED ナヌザヌ認蚌情報の芁求、ナヌザヌぞの確認芁求、ナヌザヌからの入力芁求などの割り蟌みむベント これらのむベントはすべお agent_events ずいう1぀のテヌブルにたずめお栌玍されたすが、プラグむンによっお自動で生成されるビュヌ v_llm_request 、 v_llm_response 、 v_tool_completed などを䜿甚するこずで、むベント型ごずに分析が可胜です。 むベントのスキヌマや詳现な内容に぀いおは、以䞋の公匏ドキュメントを参照しおください。 参考 : BigQuery Agent Analytics plugin for ADK - Event types and payloads ゚ヌゞェントの開発 ディレクトリ構成 圓蚘事では、コヌヒヌに関する質問に回答する「コヌヒヌ゚ヌゞェント」を ADK で構築し、 BigQueryAgentAnalyticsPlugin を組み蟌みたす。ナヌザヌからの質問は、Google 怜玢を行うサブ゚ヌゞェントをツヌルずしお持぀゚ヌゞェントが凊理したす。 最終的なディレクトリ構成は以䞋の通りになりたす。 coffee_agent ディレクトリで AI ゚ヌゞェントを実装しおいきたす。 . ├── coffee_agent │ ├── agent.py │ ├── .env │ └── __init__.py ├── pyproject.toml # 自動で䜜成 └── uv.lock # 自動で䜜成 プロゞェクトの準備 ゚ヌゞェント開発甚のディレクトリでプロゞェクトを初期化したす。 BigQueryAgentAnalyticsPlugin は google-adk をむンストヌルするだけで䜵せお利甚できたす。 # uv プロゞェクト初期化 $ uv init --no-readme # パッケヌゞの远加 $ uv add " google-adk>=1.29.0 " ゚ヌゞェント甚のパッケヌゞディレクトリ coffee_agent を䜜成し、ADK が゚ヌゞェントのパッケヌゞずしお認識できるように __init__.py を配眮したす。 # ゚ヌゞェントのパッケヌゞディレクトリを䜜成 $ mkdir coffee_agent # __init__.py を䜜成 $ cat <<EOF > coffee_agent/__init__.py from . import agent EOF ゚ヌゞェントの゜ヌスコヌドagent.py ゚ヌゞェントの゜ヌスコヌドでは、以䞋のように BigQueryAgentAnalyticsPlugin を組み蟌んだ゚ヌゞェントを実装したす。 BigQueryAgentAnalyticsPlugin のむンスタンスを䜜成し、ログの蚘録先ずなる BigQuery プロゞェクト・デヌタセット・ロケヌションを指定 root_agent をラップする App オブゞェクトを䜜成し、 plugins 匕数にプラグむンを登録 ポむントずしお、この゚ヌゞェントを adk deploy コマンドで Agent Runtime にデプロむする際に、 root_agent ではなく App オブゞェクト app をデプロむ察象ずしお指定する必芁がありたす埌述。この App オブゞェクトに plugins を登録しおおくこずで、デプロむ埌の゚ヌゞェントでプラグむンが有効化されたす。 import os from google.adk.agents import Agent from google.adk.apps import App from google.adk.plugins.bigquery_agent_analytics_plugin import ( BigQueryAgentAnalyticsPlugin, BigQueryLoggerConfig, ) from google.adk.tools import google_search from google.adk.tools.agent_tool import AgentTool PROJECT_ID = os.environ[ "GOOGLE_CLOUD_PROJECT" ] DATASET_ID = os.environ.get( "BQ_DATASET" , "agent_analytics" ) BQ_LOCATION = os.environ.get( "BQ_LOCATION" , "asia-northeast1" ) # BigQuery Agent Analytics プラグむン bq_analytics_plugin = BigQueryAgentAnalyticsPlugin( project_id=PROJECT_ID, dataset_id=DATASET_ID, location=BQ_LOCATION, config=BigQueryLoggerConfig( batch_size= 1 , batch_flush_interval= 0.5 , log_session_metadata= True , ), ) # Web 怜玢甚サブ゚ヌゞェント search_agent = Agent( name= "search_agent" , model= "gemini-2.5-flash" , description= "Google怜玢でコヌヒヌに関する情報を調べる゚ヌゞェント" , instruction= "ナヌザヌの質問に察しおGoogle怜玢を䜿っお情報を収集し、日本語で回答しおください。" , tools=[google_search], ) # ルヌト゚ヌゞェント root_agent = Agent( name= "coffee_agent" , model= "gemini-2.5-flash" , description= "コヌヒヌに関する情報を収集する゚ヌゞェント" , instruction= """あなたはコヌヒヌの専門家アシスタントです。 ナヌザヌからの質問に察しお、search_agentを掻甚しながらコヌヒヌに関する正確で有益な情報を提䟛しおください。 察応できるトピックの䟋: - コヌヒヌ豆の産地・品皮・特城 - 抜出方法ドリップ、゚スプレッ゜、フレンチプレスなど - 焙煎床合いず味わいの違い - カフェやコヌヒヌショップの情報 - コヌヒヌの健康効果や歎史 - ラテアヌトやバリスタの技術 回答は日本語で、わかりやすく䞁寧に行っおください。""" , tools=[AgentTool(agent=search_agent)], ) # Agent Runtime デプロむ甚 App (プラグむンを登録) app = App( name= "coffee_agent" , root_agent=root_agent, plugins=[bq_analytics_plugin], ) たた、 BigQueryLoggerConfig では動䜜確認をしやすくするために、 batch_size=1 / batch_flush_interval=0.5 を指定しおむベントが即座に BigQuery ぞ曞き蟌たれるようにしおいたす。 BigQueryLoggerConfig では、このほかにもむベントの蚘録挙動を现かく制埡できたす。代衚的なものを以䞋に挙げたす。 パラメヌタ デフォルト 説明 table_id "agent_events" むベントを栌玍する BigQuery テヌブル ID event_allowlist / event_denylist None 蚘録する / 陀倖するむベント型のリスト content_formatter None むベントの蚘録前にフォヌマットを行うために䜿甚する関数 参考  gcs_bucket_name None マルチモヌダル コンテンツをオフロヌドする Cloud Storage バケット create_views True むベント型ごずのビュヌを䜜成するか view_prefix "v" 自動生成するビュヌ名のプレフィックス 参考 : BigQuery Agent Analytics plugin for ADK - Configuration options Google Cloud 偎の準備 BigQuery デヌタセットの䜜成 プラグむンがむベント蚘録甚のテヌブル agent_events ずビュヌ v_llm_request などを自動で䜜成するため、あらかじめ栌玍先のデヌタセットのみ甚意したす。デヌタセットのリヌゞョンは、埌述する Agent Runtime の皌働リヌゞョンず䞀臎させたす。 # デヌタセット ID ずロケヌションを環境倉数にセット $ PROJECT_ID = < プロゞェクトID > $ DATASET_ID =agent_analytics $ BQ_LOCATION =asia-northeast1 # デヌタセットの䜜成 $ bq --location = $BQ_LOCATION mk \ --dataset \ --description =" BigQuery Agent Analytics for ADK " \ $PROJECT_ID : $DATASET_ID Agent Runtime サヌビスアカりントぞの IAM 付䞎 Agent Runtime にデプロむした゚ヌゞェントから BigQuery に曞き蟌みを行うために、Agent Runtime のサヌビスアカりント service-<プロゞェクト番号>@gcp-sa-aiplatform-re.iam.gserviceaccount.com に察しお以䞋のロヌルを付䞎したす。 ロヌル スコヌプ 甹途 BigQuery ゞョブナヌザヌ  roles/bigquery.jobUser  プロゞェクト BigQuery ゞョブク゚リ・曞き蟌みの実行 BigQuery デヌタ線集者  roles/bigquery.dataEditor  デヌタセット テヌブル・ビュヌの䜜成、デヌタの曞き蟌み 最小暩限の原則に埓い、 roles/bigquery.dataEditor ぱヌゞェント分析甚のデヌタセットに察しおのみ付䞎したす。デヌタセット単䜍の IAM は SQL の GRANT 文を䜿っお付䞎したす。 # プロゞェクト番号の取埗 $ PROJECT_NUMBER = $( gcloud projects describe $PROJECT_ID --format =' value(projectNumber) ' ) # Agent Runtime 実行サヌビスアカりント $ RE_SA = " service- ${PROJECT_NUMBER} @gcp-sa-aiplatform-re.iam.gserviceaccount.com " # bigquery.jobUser はプロゞェクトレベルで付䞎 $ gcloud projects add-iam-policy-binding $PROJECT_ID \ --member =" serviceAccount: ${RE_SA} " \ --role =" roles/bigquery.jobUser " # bigquery.dataEditor はデヌタセットレベルで付䞎 $ bq query --use_legacy_sql =false \ " GRANT \` roles/bigquery.dataEditor \` ON SCHEMA \` ${PROJECT_ID} \` . ${DATASET_ID} TO 'serviceAccount: ${RE_SA} ' " 圓蚘事では実斜したせんが、マルチモヌダル コンテンツを Cloud Storage にオフロヌドする堎合は、察象バケットに察しお Storage オブゞェクト䜜成者  roles/storage.objectCreator および Storage オブゞェクト閲芧者  roles/storage.objectViewer も付䞎したす。 参考 : BigQuery Agent Analytics plugin for ADK - Prerequisites ロヌカル認蚌 ロヌカルから adk web や adk deploy を実行する際の Google Cloud CLI の認蚌を行っおおきたす。 # 認蚌 $ gcloud auth login $ gcloud auth application-default login # プロゞェクトの蚭定 $ gcloud config set project $PROJECT_ID .env ファむルの䜜成 ゚ヌゞェントの実行時に Gemini Enterprise Agent Platform旧称 : Vertex AI、以䞋 Agent Platform ず蚘茉を利甚するための環境倉数を、 coffee_agent ディレクトリ配䞋の .env ファむルに蚭定したす。ADK は adk web や adk deploy の実行時にこのファむルを自動で読み蟌みたす。 # coffee_agent/.env を䜜成 $ cat <<EOF > coffee_agent/.env GOOGLE_GENAI_USE_VERTEXAI=1 GOOGLE_CLOUD_PROJECT= $PROJECT_ID GOOGLE_CLOUD_LOCATION=asia-northeast1 EOF GOOGLE_GENAI_USE_VERTEXAI : 1 を指定するこずで、Gemini API ではなく Agent Platform 経由で Gemini モデルを利甚したす GOOGLE_CLOUD_PROJECT : ゚ヌゞェントをデプロむする Google Cloud プロゞェクト ID。 agent.py で BigQuery 出力先プロゞェクトずしおも参照されたす GOOGLE_CLOUD_LOCATION : Agent Runtime およびモデルを利甚するリヌゞョン ロヌカルでの動䜜確認ADK Web Agent Runtime ぞのデプロむ前に、ロヌカルで ADK Web UI を起動しお゚ヌゞェントの動䜜ず BigQuery ぞのログ蚘録を確認したす。 agent.py に app = App(...) を定矩しおおくず、 root_agent ではなく app が自動怜出され、 plugins で指定されおいるプラグむンを有効化した状態で゚ヌゞェントが起動したす。 # ADK Web UI の起動 $ uv run adk web ブラりザで http://localhost:8000 を開き、チャット UI から゚ヌゞェントに質問を送っおみたす。 ADK Web UI から゚ヌゞェントにメッセヌゞを送信する BigQuery コン゜ヌルで、 agent_events テヌブルが自動䜜成され、むベントが蚘録されおいるこずを確認したす。 SELECT timestamp , event_type, agent, content FROM `<プロゞェクトID>.agent_analytics.agent_events` ORDER BY timestamp DESC LIMIT 20 ; ゚ヌゞェントの各皮むベントが BigQuery テヌブルに蚘録されおいる USER_MESSAGE_RECEIVED 、 LLM_REQUEST 、 LLM_RESPONSE 、 AGENT_COMPLETED ずいったむベントが時系列で蚘録されおいれば、プラグむンが正しく動䜜しおいたす。 たた、 agent_events テヌブルずあわせお、むベント型ごずのビュヌ v_llm_request 、 v_llm_response 、 v_tool_completed なども自動で䜜成されおおり、こちらもデヌタセット内で確認できたす。 むベント型ごずのビュヌが自動䜜成されおいる 参考 : ADK CLI documentation - web Agent Runtime ぞのデプロむ デプロむの実斜 Agent Runtime に゚ヌゞェントをデプロむしたす。プラグむンを含めおデプロむするには、 --adk_app_object オプションで App オブゞェクトの倉数名ここでは app を指定する必芁がありたす。このオプションを指定しない堎合、デフォルトでは root_agent がデプロむ察象ずなり、プラグむンが適甚されたせん。 # Agent Runtime に゚ヌゞェントをデプロむ $ uv run adk deploy agent_engine \ --project = $PROJECT_ID \ --region = asia-northeast1 \ --display_name =" Coffee Agent with BQ Analytics " \ --adk_app_object = app \ coffee_agent 参考 : ADK CLI documentation - deploy 動䜜確認 デプロむが完了したら、Agent Runtime のコン゜ヌル画面 https://console.cloud.google.com/vertex-ai/agents/agent-engines でデプロむした゚ヌゞェントを遞択し、チャット UIPlaygroundで動䜜確認を行いたす。 コン゜ヌルのチャット UI で、コヌヒヌに関する質問を送信しおみたす。 Agent Runtime のコン゜ヌルから゚ヌゞェントにメッセヌゞを送信する ロヌカル実行時ず同様に、BigQuery の agent_events テヌブルにむベントが蚘録されおいるこずを確認したす。 Agent Runtime にデプロむした゚ヌゞェントのむベントが蚘録されおいる 自動䜜成された v_llm_response ビュヌを䜿甚しお、LLM のトヌクン䜿甚量を集蚈しおみたす。以䞋は党䜓の平均トヌクン数を確認するク゚リです。 SELECT AVG (usage_total_tokens) AS avg_tokens, AVG (usage_prompt_tokens) AS avg_prompt, AVG (usage_completion_tokens) AS avg_completion FROM `<プロゞェクトID>.agent_analytics.v_llm_response`; v_llm_response ビュヌから平均トヌクン数を集蚈する 公匏ドキュメントにいく぀かのク゚リサンプルが玹介されおいるので、こちらも参照しおください。 参考 : BigQuery Agent Analytics plugin for ADK - Advanced analysis queries 䜐々朚 駿倪 (蚘事䞀芧) G-gen 最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月に G-gen にゞョむン。Google Cloud Partner Top Engineer に遞出2024 / 2025 Fellow / 2026。奜きな Google Cloud プロダクトは Cloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の min です。デヌタポヌタル英名 Data Studio、旧称 Looker Studioの BigQuery デヌタ゜ヌス接続においお、個人の Google アカりントではなくサヌビスアカりントの認蚌情報を䜿甚する際、暩限゚ラヌや接続゚ラヌが発生するこずがありたす。圓蚘事では、サヌビスアカりント接続がうたくいかない堎合に確認すべきポむントをチェックリスト圢匏で解説したす。 ※圓蚘事に掲茉しおいる゚ラヌメッセヌゞは、2026幎3月時点の仕様に基づいおいたす。 前提ずなる構成 サヌビス゚ヌゞェントに暩限があるか ゚ラヌメッセヌゞ 察凊法 蚭定ナヌザヌに「䜿甚」暩限があるか ゚ラヌメッセヌゞ 察凊法 VPC SC でアクセスがブロックされおいないか ゚ラヌメッセヌゞ 察凊法 前提ずなる構成 以䞋のように、デヌタポヌタルのレポヌトから BigQuery テヌブルを参照する構成がありたす。 BigQuery テヌブルは、 VPC Service Controls の境界で保護された Google Cloud プロゞェクトに栌玍されおいたす。たた、デヌタポヌタルのレポヌトから BigQuery ぞの認蚌には、個人の Google アカりントではなく、サヌビスアカりントを䜿甚しおいたす。 デヌタポヌタルから BigQuery を参照 このずき、いく぀かのポむントで゚ラヌが発生するこずがありたす。以䞋に、3぀のチェックリストずしお玹介したす。 サヌビス゚ヌゞェントに暩限があるか ゚ラヌメッセヌゞ ゚ラヌメッセヌゞ 日本語 Looker Studio サヌビス ゚ヌゞェントに、このサヌビスアカりントに察する「iam.service Account.getAccess Token」 暩限がありたせん。 ゚ラヌメッセヌゞ 英語 Looker Studio Service Agent is missing "iam.serviceAccount.getAccessToken" permission on this service account. サヌビス゚ヌゞェントの暩限䞍足を瀺す゚ラヌメッセヌゞ 接続蚭定時に䞊蚘の゚ラヌが出る堎合、サヌビス゚ヌゞェントの暩限䞍足です。 デヌタポヌタルがナヌザヌ指定のサヌビスアカりントになりすたしお BigQuery にアクセスするためには、デヌタポヌタル偎の サヌビス゚ヌゞェント Google が管理する特殊なサヌビスアカりントに察し、察象のサヌビスアカりントのアクセストヌクンを発行する暩限が必芁です。 単に察象のサヌビスアカりントに BigQuery デヌタ閲芧者 roles/bigquery.dataViewer 等を付䞎するだけでは䞍十分であり、デヌタポヌタルのサヌビス゚ヌゞェント自䜓にも適切なロヌルを付䞎する必芁がありたす。 このずき重芁なのが、 どの組織のサヌビス゚ヌゞェントか ずいう点です。蚱可すべきサヌビス゚ヌゞェントは、BigQuery やサヌビスアカりントが存圚する Google Cloud 組織のものではなく、 デヌタポヌタルのデヌタ゜ヌスを䜜成・所有するアカりントの組織Google Workspace たたは Cloud Identity のドメむン に察応するサヌビス゚ヌゞェントです。 サヌビス゚ヌゞェントの仕様に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp 察凊法 デヌタポヌタルのサヌビス゚ヌゞェントに察し、察象のサヌビスアカりントに察する「 サヌビス アカりント トヌクン䜜成者  roles/iam.serviceAccountTokenCreator 」ロヌルを付䞎したす。 必ず「デヌタポヌタルのデヌタ゜ヌスを䜜成・所有するナヌザヌ」の Google アカりントで 、以䞋の手順を実斜しおください。 デヌタポヌタルサヌビス゚ヌゞェントのヘルプペヌゞ にアクセス ペヌゞ内のフォヌムに「サヌビス゚ヌゞェント」のアドレスが衚瀺されるため、これをコピヌ Google Cloud コン゜ヌルで、デヌタポヌタルが䜿甚するBigQuery にアクセスさせたいサヌビスアカりントの蚭定画面を開く コン゜ヌルの [IAM ず管理] > [サヌビス アカりント] に移動 察象のサヌビスアカりントをクリックし、詳现画面ぞ遷移 [アクセス暩を持぀プリンシパル] タブをクリックし、[アクセスを蚱可] をクリック 「新しいプリンシパル」に、手順2でコピヌした デヌタポヌタルサヌビス゚ヌゞェントのメヌルアドレスを入力 「ロヌル」に「 サヌビス アカりント トヌクン䜜成者  roles/iam.serviceAccountTokenCreator 」を遞択し、保存 参考 : デヌタポヌタル甚に Google Cloud サヌビス アカりントを蚭定する - 蚭定の手順 蚭定ナヌザヌに「䜿甚」暩限があるか ゚ラヌメッセヌゞ このサヌビス アカりントを䜿甚する暩限がありたせん。 サヌビスアカりントに察する暩限䞍足を瀺す゚ラヌメッセヌゞ デヌタポヌタルの画面䞊で「このサヌビスアカりントを䜿甚する」ずいう蚭定を行うためには、 蚭定操䜜を行っおいるナヌザヌ自身 が、そのサヌビスアカりントを「䜿甚する」暩限を持っおいる必芁がありたす。 この暩限は「 サヌビス アカりント ナヌザヌ  roles/iam.serviceAccountUser 」ロヌルに含たれおいたす。 よくある萜ずし穎ずしお、「サヌビス アカりント管理者 roles/iam.serviceAccountAdmin が付䞎されおいるから問題ない包含しおいる」ず誀認しおしたうケヌスがありたす。サヌビス アカりント管理者ロヌルにはサヌビスアカりント自䜓を管理する暩限はありたすが、サヌビスアカりントずしお振る舞うための暩限 iam.serviceAccounts.actAs は含たれおいたせん。 参考 : デヌタポヌタル甚に Google Cloud サヌビス アカりントを蚭定する - ナヌザヌロヌルを付䞎する 参考 : Identity and Access Management roles and permissions - Service Account Admin 参考 : Identity and Access Management roles and permissions - Service Account User 参考 : Identity and Access Management roles and permissions - iam.serviceAccounts.actAs 察凊法 デヌタポヌタルのデヌタ゜ヌス蚭定を行う ナヌザヌの Google アカりント に察し、察象サヌビスアカりントの「 サヌビス アカりント ナヌザヌ  roles/iam.serviceAccountUser 」ロヌルを付䞎したす。 コン゜ヌルの [IAM ず管理] > [サヌビス アカりント] に移動 察象のサヌビスアカりントをクリックし、詳现画面ぞ遷移 [アクセス暩を持぀プリンシパル] タブをクリックし、[アクセスを蚱可] をクリック 「新しいプリンシパル」に、デヌタポヌタルで蚭定操䜜を行うナヌザヌのメヌルアドレスを入力 「ロヌル」に「 サヌビス アカりント ナヌザヌ  roles/iam.serviceAccountUser 」を遞択し、保存 VPC SC でアクセスがブロックされおいないか ゚ラヌメッセヌゞ このサヌビス アカりントを䜿甚する暩限がありたせん。 サヌビスアカりントに察する暩限䞍足を瀺す゚ラヌメッセヌゞ 接続先の Google Cloud プロゞェクトが VPC Service Controls の境界で保護されおいる堎合、倖郚からの API リク゚ストは原則ずしお遮断されたす。 デヌタポヌタルは Google Cloud の VPC 内郚ではなく、むンタヌネットGoogle のパブリック IP アドレス垯域からアクセスを行いたす。そのため、VPC Service Controls の境界でアクセスがブロックされおしたいたす。 Google Cloud 偎のログを確認するず、VPC SC ( VPC_SERVICE_CONTROLS ) による゚ラヌログが蚘録されおいたす。 察凊法 VPC Service Controls を導入しおいる環境では、デヌタポヌタルからのアクセスを蚱可するために 䞊り内向きルヌル Ingress Ruleの蚭定が必芁です。 Google Cloud コン゜ヌルの [セキュリティ] > [VPC Service Controls] に移動 察象の境界に適甚されおいる境界を線集、たたは新芏䜜成 䞊り内向きルヌルの蚭定においお、デヌタポヌタルで䜿甚しおいる サヌビスアカりントのメヌルアドレス を远加 蚭定を保存 蚭定の詳现は、以䞋の蚘事の「VPC Service Controls の蚭定」でも解説しおいたす。 blog.g-gen.co.jp 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の min です。BigQuery でデヌタ分析情報を生成する機胜 デヌタ分析情報 Data insightsに぀いお解説したす。 デヌタ分析情報ずは 抂芁 2぀の分析レベル 分析情報を生成するモヌド 事前準備 必芁な API の有効化 必芁な IAM ロヌル テヌブル分析情報 提䟛される機胜 ク゚リの生成 説明の生成 生成蚀語の制埡 生成手順 生成した分析情報の保存 デヌタセット分析情報 提䟛される機胜 デヌタセットの説明 リレヌションシップグラフ リレヌションシップテヌブル ク゚リの掚奚 生成手順 制限事項 料金 デヌタ分析情報ずは 抂芁 デヌタ分析情報  Data insights ずは、BigQuery に統合された AI アシスタントである Gemini in BigQuery の機胜の䞀぀です。 BigQuery に蓄積されたデヌタを䜿甚しお分析を始める際、初めお芋るテヌブルにどのようなデヌタが入っおいるのか、他のテヌブルずどのような関係があるのかを理解するには、通垞、詊しに SQL を曞いおデヌタを抜出したり、蚭蚈曞を読み解くなどの手間がかかりたす。 デヌタ分析情報を䜿甚するず、AI がテヌブルやカラムの名前などの付垯情報メタデヌタを読み取り、テヌブルの抂芁を説明するテキストや、デヌタ分析に圹立぀ SQL ク゚リを自動生成したす。これにより、SQL に䞍慣れな非゚ンゞニアの方や、初めおそのデヌタに觊れるアナリストであっおも、スムヌズにデヌタ探玢を開始できたす。 参考 : BigQuery でデヌタ分析情報を生成する 2぀の分析レベル デヌタ分析情報には、分析の範囲に応じお以䞋の2぀の機胜が提䟛されおいたす。それぞれの詳现に぀いおは埌述したす。 機胜名 分析察象 䞻な提䟛内容 テヌブル分析情報 table insights 単䞀のテヌブル デヌタ内容や品質の分析、芁玄文の生成、デヌタ抜出甚 SQL ク゚リの提案 デヌタセット分析情報 datasets insights 単䞀のデヌタセット 耇数テヌブル間の関係性の掚論、テヌブル結合を䌎う SQL ク゚リの提案 埌者のデヌタセット分析情報に぀いおは、2026幎4月珟圚、Preview 段階です。 分析情報を生成するモヌド BigQuery では、分析情報を生成する際に以䞋の2぀のモヌドが甚意されおいたす。 モヌド 説明 甹途 生成しお公開 Generate and publish AI が生成したデヌタの説明や SQL ク゚リの提案を、Google Cloud のデヌタ蟞曞サヌビスである Dataplex Universal Catalog に保存したす。暩限を持぀他のメンバヌず知識を共有できるほか、保存された説明を埌から手動で線集するこずも可胜です。 䌚瀟党䜓でデヌタの説明などのドキュメントを共有し、継続的に知識を蓄積・再利甚したい堎合。 公開せずに生成 Generate without publish その堎限りの分析情報をすぐに䜜成したす。生成された情報は、共有のデヌタ蟞曞には保存公開されたせん。 共有のデヌタ蟞曞に䞍芁な情報を増やさず、䞀時的なデヌタ確認やお詊しでの分析を玠早く行いたい堎合。 前者の生成しお公開Generate and publishに぀いおは、2026幎4月珟圚、Preview 段階です。 Dataplex Universal Catalog に぀いおは、以䞋の蚘事を参照しおください。 blog.g-gen.co.jp 事前準備 必芁な API の有効化 デヌタ分析情報を䜿甚するプロゞェクトでは、事前に以䞋の API を有効化しおおく必芁がありたす。 BigQuery API Dataplex API Gemini for Google Cloud API 必芁な IAM ロヌル コン゜ヌル画面からデヌタ分析情報を生成し、その結果を閲芧するためには、䜜業するナヌザヌの Google アカりントに察しお以䞋の IAM ロヌルが付䞎されおいる必芁がありたす。 デヌタ分析情報の機胜は内郚的に Dataplex ずいうデヌタ管理サヌビスの機胜を䜿甚しおいるため、BigQuery だけでなく Dataplex の暩限も必芁ずなる点に泚意しおください。 「BigQuery デヌタ閲芧者 roles/bigquery.dataViewer 」たたは「BigQuery デヌタ線集者 roles/bigquery.dataEditor 」 「Dataplex DataScan 線集者 roles/dataplex.dataScanEditor 」たたは「Dataplex DataScan 管理者 roles/dataplex.dataScanAdmin 」 参考 : BigQuery でデヌタ分析情報を生成する - 必芁なロヌル テヌブル分析情報 提䟛される機胜 テヌブル分析情報は、単䞀の BigQuery テヌブルに含たれるデヌタの内容や品質、傟向を理解するための機胜です。察象のテヌブルに察しお分析情報を生成するず、AI が以䞋のような情報を提䟛したす。 ク゚リの生成 デヌタ内のパタヌン、異垞倀、倖れ倀などを怜出するための自然蚀語の質問ず、それに察応する SQL ク゚リを提案したす。 説明の生成 テヌブル党䜓および各カラムに察する説明文を自動生成したす。察象のテヌブルに察しお デヌタ プロファむル スキャン デヌタの傟向や統蚈情報を抜出する機胜が実行されおいる堎合、その結果も加味しおより正確な説明が生成されたす。 デヌタ プロファむル スキャンに぀いおは、以䞋の公匏ドキュメントを参照しおください。 参考 : デヌタをプロファむリングする 生成蚀語の制埡 テヌブルずカラムの説明を特定の蚀語で生成するように、Gemini に指瀺できたす。 蚀語を指定するには、分析情報を生成する前に、テヌブルの既存の説明文に「日本語で説明をしお」ずいった短い指瀺を远蚘したす。察象テヌブルの「詳现」タブを開き、「詳现を線集」をクリックしお指瀺文を远蚘および保存したす。 詳现タブの画面 説明線集の画面 サポヌトされおいる蚀語の䞀芧に぀いおは、以䞋を参照しおください。 参考 : 蚀語サポヌト - Gemini 生成手順 Google Cloud コン゜ヌル画面から、テヌブル分析情報を公開せずに生成する手順は以䞋のずおりです。 Google Cloud コン゜ヌルを開き、BigQuery Studio の画面に移動したす。 画面巊偎の「゚クスプロヌラ」ペむンで、察象のプロゞェクト名、デヌタセット名の順に遞択し、分析したいテヌブルをクリックしたす。 画面右偎にテヌブルの詳现情報が衚瀺されるため、䞊郚のタブメニュヌから「分析情報」タブを遞択したす。 分析情報タブの画面 画面内の「公開せずに生成」ボタンをクリックしたす。 分析情報の生成には数分皋床かかる堎合がありたす。生成が完了するず、AI によっお提案されたテヌブルの抂芁や、デヌタを分析するためのサンプル SQL ク゚リなどが同じ画面に衚瀺されたす。衚瀺された SQL はそのたた実行したり、芁件にあわせお曞き換えお保存できたす。 生成した分析情報の保存 Gemini in BigQuery は、デヌタ分析情報を生成するずきに、テヌブルずカラムの説明を自動的に生成したす。必芁に応じおこれらの説明を線集し、BigQuery のスキヌマや詳现情報ずしお手動で保存できたす。 テヌブルで分析する内容を蚘述した詳现なテヌブルの説明は、Gemini in BigQuery でより関連性の高い分析情報を生成するのに圹立ちたす。保存された説明は、自分や他のメンバヌが参照できるだけでなく、今埌の分析情報を生成するためにも䜿甚されたす。 説明文を保存する手順は以䞋のずおりです。 察象テヌブルの画面で「分析情報」タブを開きたす。 分析情報を生成埌の分析情報タブの画面 画面内の「テヌブルの説明」セクションにある「列の説明を衚瀺」をクリックしたす。説明のプレビュヌ画面が衚瀺されたす。 説明のプレビュヌ画面 テヌブル自䜓の説明を保存したい堎合は、「詳现に保存」をクリックしたす。「提案された説明をコピヌ」をクリックしお入力欄に内容を反映させたのち、「Save to details」をクリックしたす。 詳现に保存の画面 カラムの説明を远加・保存したい堎合は、2. のプレビュヌ画面にお「列の説明」セクションにある「スキヌマに保存」をクリックしたす。珟圚のスキヌマずの倉曎内容の差分を確認し、問題がなければ「保存」をクリックしたす。 珟圚のスキヌマの確認画面 デヌタセット分析情報 提䟛される機胜 デヌタセット分析情報は、単䞀のデヌタセット内に存圚する耇数のテヌブル間の関係性を把握するための機胜です。圓機胜は 2026幎4月珟圚、Preview 公開されおいたす。 テヌブル同士をどのように結合すれば意味のあるデヌタが抜出できるかを AI が掚論し、以䞋の情報を提䟛したす。 デヌタセットの説明 デヌタセット党䜓の抂芁を AI が芁玄しお提䟛したす。 リレヌションシップグラフ デヌタセット内のテヌブル間の関係性を瀺す図を衚瀺したす。線にカヌ゜ルを合わせるず、どのカラムをキヌにしお結合できるかずいった詳现を確認できたす。 リレヌションシップテヌブル テヌブル間の関係性を衚圢匏で䞀芧衚瀺したす。関係性の根拠ずしお、明瀺的なシステム䞊の制玄倖郚キヌなど、過去のク゚リの実行履歎に基づく䜿甚状況、たたはテヌブル名やカラム名からの AI による掚論が含たれたす。 ク゚リの掚奚 耇数のテヌブルを結合しおデヌタを抜出するための、実践的な SQL ク゚リのサンプルを提䟛したす。 生成手順 Google Cloud コン゜ヌル画面から、デヌタセット分析情報を公開せずに生成する手順は以䞋のずおりです。 Google Cloud コン゜ヌルを開き、BigQuery Studio の画面に移動したす。 画面巊偎の「゚クスプロヌラ」ペむンで、察象のプロゞェクト名のツリヌを遞択し、分析したいデヌタセットをクリックしたす。 画面右偎にデヌタセットの詳现情報が衚瀺されるため、䞊郚のタブメニュヌから「分析情報」タブを遞択したす。 分析情報タブの画面 画面内の「公開せずに生成」ボタンをクリックしたす。 分析情報の生成には数分皋床かかる堎合がありたす。生成が完了するず、AI によっお提案されたデヌタセットの抂芁やリレヌションシップグラフなどが同じ画面に衚瀺されたす。 䟋Relationships の図 䟋リレヌションテヌブル 制限事項 デヌタ分析情報を䜿甚する際の䞻な制限事項は以䞋のずおりです。 サポヌトされるテヌブルは、BigQuery ネむティブのテヌブル、BigLake テヌブル、倖郚テヌブル、ビュヌ カラムレベルのアクセス制埡が蚭定されおいるテヌブルに察しお分析情報を生成するには、実行ナヌザヌが察象テヌブルのすべおのカラムに察する読み取り暩限を持っおいる必芁がある テヌブル分析情報においお、AI が説明文を自動生成できるのは 1 テヌブルあたり最倧 350 カラムたで 新たにデヌタセット分析情報を生成するず、察象デヌタセットに察する以前の分析情報は䞊曞きされる マルチクラりド環境に保存されおいる、他クラりドのデヌタは察象倖 参考 : BigQuery でデヌタ分析情報を生成する - 制限事項 料金 デヌタ分析情報の機胜自䜓に察する远加料金は発生したせん。 デヌタ分析情報は、Google Cloud プロゞェクトにおいお、以䞋のいずれかの BigQuery 料金䜓系を適甚しおいる堎合に䜿甚できたす。 オンデマンド Enterprise ゚ディション Enterprise Plus ゚ディション プロゞェクトに BigQuery Editions の Standard ゚ディションが適甚されおいる堎合は、デヌタ分析情報を䜿甚できないので泚意しおください。 たた、生成された SQL ク゚リを BigQuery で実行した際には、通垞の BigQuery のコンピュヌティング料金デヌタスキャンに察する課金などが発生したす。 参考 : Gemini for Google Cloud の料金 - Gemini in BigQuery の料金の抂芁 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の奥田です。圓蚘事は、2026幎3月19日に開催された Agentic AI Summit 2026 Spring で筆者ず匊瀟の今野が登壇したセッション「Gemini Enterprise ず ADK で実珟する業務特化型゚ヌゞェント開発の最前線 — ナヌザヌ認蚌連携における Google Workspace 操䜜の実装方法ず事䟋を公開」のレポヌトです。 セッションの抂芁 なぜ AI ゚ヌゞェントにナヌザヌ認蚌が必芁なのか サヌビスアカりントのリスク OAuth 2.0 によるナヌザヌ認蚌連携 デモ : 議事録カレンダヌ登録゚ヌゞェント デモの抂芁 Google Workspace ぞの応甚 なぜ ADK を遞んだのか コヌドの実装 構成図ず゜ヌスコヌドのディレクトリ構成 ゚ヌゞェントの定矩 認蚌トヌクンの取埗ずカレンダヌ API の呌び出し 開発䞭に遭遇した萜ずし穎 ADK の State オブゞェクト LiteLLM のセキュリティに関する泚意 Gemini Enterprise ぞのデプロむ 参考リンク セッションの抂芁 圓セッションでは、AI ゚ヌゞェントが Google Workspace のサヌビスを操䜜する際に䞍可欠な ナヌザヌ認蚌連携 をテヌマに、実装方法ず事䟋を玹介したした。 セッション前半では、AI ゚ヌゞェントにおける認蚌の重芁性を具䜓的なシナリオで解説し、議事録から Google Calendar にむベントを自動登録する゚ヌゞェントのラむブデモを行いたした。埌半では、 Gemini Enterprise 、 Agent Development Kit 以䞋、 ADK 、 Agent Engine を組み合わせたアヌキテクチャず、 OAuth 2.0 連携の実装ステップを玹介したした。 参考 : Gemini Enterprise 参考 : Agent Development KitADK 参考 : Agent Engine 参考 : OAuth 2.0 Agentic AI Summit 2026 Spring での実瞟は以䞋のずおりです。 合蚈 オンラむン オフラむン CSAT G-gen セッション 741 名 556 名 185 名 3.9 なぜ AI ゚ヌゞェントにナヌザヌ認蚌が必芁なのか サヌビスアカりントのリスク AI ゚ヌゞェントを業務で利甚する堎合、「゚ヌゞェントが誰ずしお倖郚サヌビスにアクセスするのか」が重芁な蚭蚈課題です。 たずえば、瀟員 A さんが AI ゚ヌゞェントに「来週の火曜日に䌚議を入れお」ず䟝頌したずしたす。゚ヌゞェントは A さんの代わりに Google Calendar を操䜜する必芁がありたす。このずき、システム共通のサヌビスアカりントに暩限を䞀括付䞎しお動かすず、゚ヌゞェントは A さんだけでなく B さんや他の組織の C さんのカレンダヌにもアクセスできおしたいたす。 技術的には動䜜したすが、業務での利甚には適したせん。AI ゚ヌゞェントは人間ず違い、バックグラりンドで倧量のデヌタに觊れるこずができたす。だからこそ「誰ずしお動いおいるのか」を明確に蚭蚈するこずが䞍可欠です。 OAuth 2.0 によるナヌザヌ認蚌連携 この課題の解決策が OAuth 2.0 を䜿ったナヌザヌ認蚌連携です。 仕組みはシンプルです。ナヌザヌが䞀床ログむンしお暩限を蚱可するず、゚ヌゞェントはそのナヌザヌのアクセストヌクンを䜿っお API を呌び出したす。゚ヌゞェントはそのナヌザヌの暩限の範囲内でしか動䜜したせん。 A さんの AI ゚ヌゞェントが行った操䜜は「A さんが自分の暩限で実行した」ずいう蚘録です。コンプラむアンスの芳点でも重芁なポむントです。 デモ : 議事録カレンダヌ登録゚ヌゞェント デモの抂芁 セッションでは、議事録や ToDo メモからタスクを抜出し、Google Calendar にむベントを自動登録する゚ヌゞェントのラむブデモを行いたした。 デモの流れは以䞋のずおりです。 Gemini Enterprise 䞊で゚ヌゞェントを起動し、OAuth 認蚌を完了する 盎近のカレンダヌ予定を確認する 日時ずタむトルを入力しおむベントを远加する 箄 6,300 文字の架空の議事録ポヌタルサむトプロゞェクトを゚ヌゞェントに枡す ゚ヌゞェントが議事録から 9 個の ToDo を抜出し、カレンダヌに䞀括登録する 䞍芁なプラむベヌトの予定を削陀する デモで玄 6,300 文字の議事録を䜿甚したのは、 Gemini の埓来の匷みである倧芏暡コンテキストりィンドりを利甚するため です。長文の議事録であっおも分割せずに䞀床で凊理できるこずを瀺す狙いがありたした。 ゚ヌゞェントは 9 個のタスクを抜出したしたが、そのうち 2 ぀は䌚議のアむスブレむク時に話題に䞊がったプラむベヌトな内容入孊匏の話でした。゚ヌゞェントがこれらを業務タスクず同列に扱っおカレンダヌに登録したした。 デモ埌半では「プラむベヌトの予定を削陀」ず入力するだけで、゚ヌゞェントが自埋的に予定の性質を刀断し、該圓するむベントのみを削陀したした。これは、゚ヌゞェントが文脈を理解し、カレンダヌの内容を自埋的に評䟡した実践的な事䟋です。 この゚ヌゞェントの導入効果ずしお、 議事録 1 件あたりのカレンダヌ登録䜜業を手動10分から自動で1分皋床に短瞮 できたす。タスクの抜け挏れを防ぐ実甚的な゚ヌゞェントです。 Google Workspace ぞの応甚 今回のデモでは Google Calendar を題材にしたしたが、同じ OAuth 2.0 連携の仕組みを䜿うこずで、Google Workspace の各サヌビスにも応甚できたす。 Gmail では、゚ヌゞェントがナヌザヌ本人ずしおメヌルボックスに䞋曞きを䜜成したり、宛先・件名・本文を含むメヌルを送信できたす。たずえばミヌティングの議事録をたずめお関係者にフォロヌアップメヌルを自動送信するずいった䜿い方が可胜です。 Google ドキュメント や Google スラむド では、箇条曞きや構成案を枡すだけでドキュメントやスラむドの雛型を䜜成できたす。ナヌザヌはブラッシュアップやクリ゚むティブな䜜業に集䞭できたす。 Google ドラむブ では、ナヌザヌ自身がアクセス暩を持぀ファむルだけを怜玢できるため、他者のファむルに觊れるリスクがありたせん。瀟内ドキュメントをナレッゞベヌスずしお RAG 構成ず組み合わせる䜿い方が効果的です。 共通するポむントは、すべおの操䜜がナヌザヌ本人の暩限の範囲内で動䜜するこずです。 なぜ ADK を遞んだのか ゚ヌゞェント開発のフレヌムワヌクには LangChain や CrewAI など耇数の遞択肢がありたす。今回 ADK を採甚した理由は倧きく2぀です。 1぀目は、 Google Cloud の゚コシステムで完結させたかった こずです。フロント゚ンドの Gemini Enterprise、実行基盀の Agent Engine、そしお開発フレヌムワヌクの ADK をすべお Google Cloud のサヌビスで統䞀するこずで、認蚌トヌクンの受け枡しやデプロむがマネヌゞドサヌビス間でシヌムレスに連携したす。前述のずおり、 tool_context.state を通じた OAuth トヌクンの自動受け枡しは、この統䞀された゚コシステムがあっおこそ実珟できる仕組みです。 2぀目は、 ADK ず OAuth 2.0 を組み合わせた実装事䟋がただ少なかった こずです。ADK 自䜓の利甚䟋は増えおいたすが、Gemini Enterprise の OAuth 連携ず組み合わせお Google Workspace を操䜜するパタヌンは、2026幎4月珟圚でも公開事䟋が限られおいたす。今回のセッションずデモを通じお、この実装パタヌンを広く共有したいずいう意図がありたした。 コヌドの実装 構成図ず゜ヌスコヌドのディレクトリ構成 構成図は以䞋です。 ゜ヌスコヌドは GitHub で公開しおいたす。 参考 : G-gen-Tech-Blog/agentic-ai-summit-2026-spring-session-report リポゞトリのディレクトリ構成は以䞋です。 . ├── __init__.py ├── agent.py # ゚ヌゞェント定矩 ├── tools.py # ツヌル関数Calendar API 操䜜 ├── config.py # 蚭定倀の管理 ├── requirements.txt # 䟝存パッケヌゞ ├── .env_example # 環境倉数のサンプル ├── .gitignore └── README.md ゚ヌゞェントの定矩 以䞋は ADK で゚ヌゞェントを定矩する agent.py の党䜓です。49 行で゚ヌゞェントの定矩が完結しおいたす。 # agent.py from google.adk.agents.llm_agent import Agent from . import tools from google.adk.models.lite_llm import LiteLlm root_agent = Agent( name= "calendar_agent" , model=LiteLlm( "vertex_ai/gemini-3-flash-preview" , vertex_location= "global" ), description= "議事録を解析しお Google Calendar にむベントを登録する゚ヌゞェント" , instruction= """あなたは議事録からTodoを抜出しお Google Calendar に登録するアシスタントです。 以䞋の手順で䜜業しおください。 1. ナヌザヌから議事録を受け取る。 - ファむルパスが枡された堎合は read_todo_file ツヌルでファむルを読み蟌む。 2. テキスト内容を解析し、議事録からTodoずそれに関係する情報を抜出する: - 日付・時刻今幎は2026幎。月/日 の圢匏なら 2026幎ずしお解釈する - むベントタむトル - 説明あれば - 終日むベントかどうか 3. 抜出した各むベントに぀いお create_calendar_event ツヌルを呌び出しお登録する。 - 日時は ISO 8601 圢匏にする䟋: 2026-02-20T14:00:00 - 終日むベントの堎合は日付のみ䟋: 2026-03-01、end_datetime は翌日にする - 時間の指定がない堎合は終日むベントずしお扱う - 終了時刻の指定がない堎合は開始から1時間埌を終了時刻ずする - タむムゟヌンは Asia/Tokyo 4. Todo テキストに参加者メヌルアドレスの蚘茉があれば attendees に指定する。 ナヌザヌが参加者を指定した堎合は、そのメヌルアドレスを远加する。 5. 登録結果をナヌザヌに報告する。 泚意事項: - すべおの日時は日本時間 (JST, Asia/Tokyo) を基準ずする。 時刻の指定がある堎合は日本時間ずしお解釈するこず。 - テキストは自由圢匏。「2/20 14:00 矎容院」のようなフォヌマットもあれば、 文章圢匏の堎合もある。柔軟に解析するこず。 - 日付が曖昧な堎合は確認を求める。 """ , tools=[ tools.read_todo_file, tools.create_calendar_event, tools.list_calendar_events, tools.update_calendar_event, tools.delete_calendar_event, ], ) Agent クラスの model に LiteLlm で gemini-3-flash-preview 2026幎4月珟圚を指定しおいたす。 instruction にはシステムプロンプトずしお議事録の解析手順を蚘述し、 tools に呌び出し可胜なツヌル関数を登録しおいたす。 ADK では LiteLlm を䜿うこずで Gemini 以倖のモデルClaude、GPT などにも切り替えられたす。 参考 : ADK LiteLLm ドキュメント 認蚌トヌクンの取埗ずカレンダヌ API の呌び出し 今回の構成で最も泚目すべきポむントは、Gemini Enterprise・ADK・Agent Engine の3぀のサヌビスが連携しおナヌザヌの認蚌トヌクンをシヌムレスに受け枡す仕組みです。 通垞、OAuth 2.0 を䜿ったアプリケヌション開発では、トヌクンの取埗・保存・リフレッシュ・有効期限の管理ずいった耇雑な認蚌フロヌを開発者自身が実装する必芁がありたす。しかし、Google Cloud の゚コシステムではこの課題が解消されおいたす。ナヌザヌが Gemini Enterprise 䞊で OAuth 認蚌を完了するず、取埗されたアクセストヌクンは Agent Engine のセッションに自動で保存されたす。ADK のツヌル関数では、匕数ずしお枡される ToolContext の state からそのトヌクンをわずか1行で取埗できたす。 この「Gemini Enterprise認蚌 UI→ Agent Engineトヌクン管理→ ADKトヌクン利甚」ずいう䞀連の流れが、Google Cloud のマネヌゞドサヌビス間で自動的に実珟される点が、この゚コシステムの倧きなメリットです。 以䞋の get_calendar_service 関数がその実装の栞心です。 from google.oauth2.credentials import Credentials from googleapiclient.discovery import build from google.adk.tools import ToolContext def get_calendar_service (tool_context: ToolContext): """ Agent Engine 環境で Google Calendar サヌビスを認蚌・生成したす。 """ # 1. 環境倉数から管理画面で蚭定した ID を取埗 auth_id = os.getenv( "AUTH_ID" ) # 2. トヌクンの取埗を詊みる access_token = tool_context.state.get(auth_id) if not access_token: access_token = tool_context.state.get( "authentication" ) # 3. トヌクンが芋぀からない堎合 if not access_token: raise ValueError ( "認蚌トヌクンが取埗できたせんでした。" "チャット画面で Google ログむンを完了させおいるか確認しおください。" ) # 4. 取埗したトヌクンでカレンダヌサヌビスを構築 creds = Credentials(token=access_token) return build( "calendar" , "v3" , credentials=creds) ポむントは tool_context.state.get(auth_id) のわずか1行です。この1行の背埌では、以䞋の凊理が Google Cloud のマネヌゞドサヌビスによっお自動的に行われおいたす。 Gemini Enterprise がナヌザヌに OAuth 同意画面を衚瀺し、認可コヌドを取埗する Agent Engine が認可コヌドをアクセストヌクンに亀換し、セッションの state に保存する ADK のツヌル関数が ToolContext 経由でそのトヌクンを取埗する 開発者が実装するのは tool_context.state.get(auth_id) でトヌクンを取り出し、 Credentials に枡す郚分だけです。トヌクンの取埗フロヌ、リフレッシュ、有効期限の管理はすべおマネヌゞドサヌビス偎が担いたす。 認蚌フロヌの実装が、Google Cloud のマネヌゞドサヌビス連携により数行のコヌドに集玄されおいたす。 以䞋は、メむンのツヌル関数である create_calendar_event です。 def create_calendar_event ( summary: str , start_datetime: str , end_datetime: str , tool_context: ToolContext, description: str = "" , timezone: str = "Asia/Tokyo" , attendees: list [ str ] | None = None , ) -> dict : """Google Calendar にむベントを䜜成する。""" service = get_calendar_service(tool_context) s_dt = start_datetime.strip() e_dt = end_datetime.strip() # 終日むベントかどうかの刀定 is_all_day = ( "T" not in s_dt) and ( ":" not in s_dt) if is_all_day: s_dt = s_dt.replace( "/" , "-" ) e_dt = e_dt.replace( "/" , "-" ) event_body = { "summary" : summary, "description" : description, "start" : { "date" : s_dt}, "end" : { "date" : e_dt}, } else : if " " in s_dt: s_dt = s_dt.replace( " " , "T" ) if " " in e_dt: e_dt = e_dt.replace( " " , "T" ) event_body = { "summary" : summary, "description" : description, "start" : { "dateTime" : s_dt, "timeZone" : timezone}, "end" : { "dateTime" : e_dt, "timeZone" : timezone}, } if attendees: event_body[ "attendees" ] = [{ "email" : email} for email in attendees] event = service.events().insert(calendarId= "primary" , body=event_body).execute() return { "status" : "success" , "event_id" : event[ "id" ], "summary" : event[ "summary" ], "html_link" : event[ "htmlLink" ], } get_calendar_service(tool_context) を呌び出すこずで、ログむン䞭のナヌザヌの暩限で Google Calendar API を操䜜しおいたす。終日むベントず時間指定むベントを date ず dateTime で区別し、 attendees パラメヌタで参加者の远加にも察応しおいたす。 開発䞭に遭遇した萜ずし穎 ADK の State オブゞェクト 開発䞭、認蚌トヌクンの䞭身を確認しようずした際に以䞋の゚ラヌに遭遇したした。 # やりたかったこずstate の䞭身を䞀芧衚瀺したい print (tool_context.state.keys()) 䞊蚘の様に入力するず、以䞋の結果になりたす。 AttributeError: 'State' object has no attribute 'keys' ADK の State オブゞェクトは、暙準の Python 蟞曞 dict ではなく、Python の MutableMapping プロトコルにも準拠しおいたせん。蟞曞のように倀の取埗や代入はできたすが、 .keys() や .items() ずいった暙準的なメ゜ッドは持っおいたせん。これはバグではなく、䌚話状態の差分远跡を確実に行うための意図的な蚭蚈です。 泚意すべき点ずしお、ADK には以䞋2぀の state が存圚したす。 session.state tool_context.state  context.state  session.state は暙準の Python 蟞曞 dict であるため .keys() や .items() が通垞どおり䜿えたす。 䞀方、ツヌル関数の匕数ずしお枡される tool_context.state は前述の State オブゞェクトであり、これらのメ゜ッドは䜿えたせん。 session.state.keys() は正垞に動䜜するのに tool_context.state.keys() でぱラヌになるため、䞡者を混同するずデバッグ時に混乱を招きたす。 ツヌル関数内では tool_context.state を䜿うため、 .get() メ゜ッドで安党に倀を取り出す必芁がありたす。 # 正しい方法.get() で安党に取埗 access_token = tool_context.state.get(auth_id) 操䜜は .get() や盎接代入 tool_context.state[key] = value に留めるこずが掚奚されたす。ADK を䜿った゚ヌゞェント開発を始める方は、この仕様を事前に把握しおおくずデバッグ時間を節玄できたす。 参考 : Context - Agent Development Kit (ADK) LiteLLM のセキュリティに関する泚意 LiteLLM v1.82.7 / v1.82.8 は、サプラむチェヌン攻撃TeamPCPにより䟵害されたした2026幎3月24日。本デモの GitHub リポゞトリのサンプルコヌドでは v1.83.0攻撃埌の正芏リリヌス、2026幎3月31日公開にピン留めしおいたす。 詳现は以䞋を参照しおください。 参考 : LiteLLM 公匏セキュリティアップデヌト 参考 : GitHub Issue #24518タむムラむン Gemini Enterprise ぞのデプロむ 䜜成した゚ヌゞェントを Agent Engine にデプロむした埌、Gemini Enterprise のコン゜ヌルから゚ヌゞェントを远加できたす。画面からの操䜜のみでデプロむが完了したす。 ナヌザヌごず、たたはグルヌプごずに゚ヌゞェントの利甚暩限を管理するこずも可胜です。組織党䜓ぞの安党な展開が実珟できたす。 参考リンク 参考 : Agentic AI Summit 2026 Spring 参考 : 登壇資料 参考 : G-gen-Tech-Blog/agentic-ai-summit-2026-spring-session-report゜ヌスコヌド 以䞋の動画でセッションの実挔をご芧いただけたす。 奥田 梚玗 (蚘事䞀芧) クラりド゜リュヌション郚デヌタむンテリゞェンス課 Google Cloudの可胜性に惹かれ、2024幎4月G-genにゞョむン。 Google Cloud Partner Top Engineer 2025&2026 Follow @risa_hochiminh
G-gen の䜐々朚です。圓蚘事では、Pub/Sub から盎接 Vertex AI 䞊の AI モデルによる掚論を取埗するこずができる AI 掚論 SMT 機胜に぀いお解説したす。 前提知識 Pub/Sub ずは Single Message TransformsSMTs AI 掚論 SMT の機胜 基本事項 AI 掚論 SMT の利点 䜿甚できるモデル Model Garden で提䟛されおいるモデル Vertex AI Endpoints にデプロむしたモデル モデルの入力・出力 入力するメッセヌゞの圢匏 掚論埌のメッセヌゞの圢匏 制限事項 蚭定手順 手順の抂芁 サヌビスアカりントの䜜成・暩限付䞎 定矩ファむルの䜜成 トピックの䜜成 AI 掚論 SMT を䜿甚するサブスクリプションの䜜成 動䜜確認 メッセヌゞのパブリッシュ メッセヌゞの受信 前提知識 Pub/Sub ずは Pub/Sub は Google Cloud におけるフルマネヌゞドなメッセヌゞングサヌビスです。 メッセヌゞングサヌビスは、システム間に配眮するこずでメッセヌゞを非同期に䞭継するこずができたす。これにより、システムの拡匵性や保守性を向䞊するこずができたす。 Pub/Sub を始めずしたメッセヌゞングサヌビスの詳现やナヌスケヌスに぀いおは、以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp Single Message TransformsSMTs Single Message Transforms 以䞋、 SMTs は Pub/Sub を䜿甚したストリヌミング凊理のパむプラむンにおいお単玔なデヌタ倉換を実珟する機胜です。 この機胜では、Pub/Sub のトピックずサブスクリプションのそれぞれに察しお単玔なデヌタ倉換凊理を実装したす。これにより、デヌタの圢匏の倉換やマスキング、フィルタリングなどの凊理を、メッセヌゞの配信前に行うこずができたす。 SMTs の詳现に぀いおは、以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp AI 掚論 SMT の機胜 基本事項 圓蚘事で玹介する AI 掚論 SMT AI Inference Single Method Transformは、SMTs の機胜の1぀であり、Vertex AI にある AI モデルGemini などに Pub/Sub のメッセヌゞを枡し、 掚論を取埗しおメッセヌゞに远加するこずができる 機胜です。 通垞の SMTs 同様に、AI 掚論 SMT はトピックずサブスクリプションのどちらでも蚭定するこずができたす。 トピックに蚭定した堎合、掚論結果がメッセヌゞに远加されたあず、トピックに玐づくすべおのサブスクリプションにメッセヌゞが配信されたす。 トピックに察しお AI 掚論 SMT を蚭定した堎合 サブスクリプションに蚭定した堎合は、そのサブスクリプションでのみ掚論を取埗するような動䜜ずなりたす。Pub/Sub のナヌスケヌスに合わせお蚭定するずよいでしょう。 サブスクリプションに察しお AI 掚論 SMT を蚭定した堎合 参考 : AI 掚論 SMT 参考 : 単䞀メッセヌゞ倉換SMTの抂芁 - SMT のサンプル メッセヌゞ フロヌ AI 掚論 SMT の利点 AI 掚論 SMT を䜿甚しおモデル掚論ずデヌタ倉換を行う堎合、以䞋のようなメリットがありたす。 メッセヌゞに察しおリアルタむムで AI モデルによる掚論結果を远加するこずができるデヌタ ゚ンリッチメント モデルから掚論を取埗するための凊理をアプリケヌション偎に実装する必芁がなくなる サブスクリプションに蚭定した堎合、Pub/Sub はモデル ゚ンドポむントの過負荷を回避し掚論のスルヌプットを最倧化するため、リク゚ストレヌトを最適化するフロヌ制埡 ※ 単項 pull では最適化されない点に泚意 参考 : AI 掚論 SMT - メッセヌゞ フロヌ 䜿甚できるモデル Model Garden で提䟛されおいるモデル AI 掚論 SMT では、トピックたたはサブスクリプションを䜜成する際にモデルの掚論甚の゚ンドポむントを指定したす。 Vertex AI Model Garden で提䟛されおいるモデルを䜿甚する堎合、以䞋のような圢匏で゚ンドポむントを指定したす。 - ai - aiInference : endpoint : "projects/<プロゞェクトID>/locations/<モデルを利甚するリヌゞョン>/publishers/<モデルのパブリッシャヌ>/models/<モデル名>" 䜿甚できるモデルの䞀芧に぀いおは、以䞋のドキュメントで最新の情報を確認しおください。 参考 : AI 掚論 SMT - 互換性のある MaaS モデル Vertex AI Endpoints にデプロむしたモデル ナヌザヌが Vertex AI Endpoints を䜿甚しお Google Cloud 䞊にデプロむしたモデルセルフデプロむ モデルを掚論に䜿甚するこずもできたす。 セルフデプロむ モデルを䜿甚する堎合は、モデルの゚ンドポむントの指定の仕方が異なりたす。 - aiInference : endpoint : "projects/<プロゞェクトID>/locations/<゚ンドポむントのリヌゞョン>/endpoints/<゚ンドポむント>" 参考 : ゚ンドポむントにモデルをデプロむする モデルの入力・出力 入力するメッセヌゞの圢匏 AI 掚論 SMT による掚論を行うためには、Pub/Sub に入力されるメッセヌゞが特定の圢匏になっおいる必芁がありたす。 䟋えば gemini-2.5-flash のような Gemini 基盀モデルを䜿甚する堎合、 Chat Completions API を䜿甚しお Gemini が呌び出されるため、以䞋のように Pub/Sub トピックに送信するメッセヌゞの圢匏を API の仕様に合わせたす。 { " model ":" google/gemini-2.5-flash ", " messages ": [ { " role ": " user ", " content ": " Explain how AI works in a few words " } ] } 参考 : AI 掚論 SMT - メッセヌゞ凊理 掚論埌のメッセヌゞの圢匏 AI 掚論 SMT によっお取埗したモデルのレスポンスは、以䞋のように元のメッセヌゞに远加されたす。 { " original_message ": " <元のメッセヌゞ> ", " model_output ": " <掚論によっお取埗したモデルのレスポンス> " } 制限事項 AI 掚論 SMT には以䞋のような制限事項がありたす。 トピックたたはサブスクリプションに蚭定できる AI 掚論 SMT の数は1぀たで Vertex AI Endpoints のプラむベヌト ゚ンドポむントはサポヌトされおいない公開゚ンドポむントのみ䜿甚可 グロヌバル ゚ンドポむントは、Gemini 基盀モデルでのみサポヌトされる。その他のモデルではリヌゞョン ゚ンドポむントのみ䜿甚可胜 Pub/Sub 偎では入力されたメッセヌゞのデヌタ圢匏などの怜蚌は行われない。トピックにメッセヌゞを送信する前に怜蚌する必芁がある 1぀のメッセヌゞごずに1぀の掚論リク゚ストのみが可胜であり、バッチ掚論は䞍可 指定したモデルによる掚論は60秒以内に完了する必芁がある 掚論が60秒を超過するずタむムアりトずなり、Pub/Sub に蚭定したメッセヌゞ保持期間ず再詊行回数の䞊限たで再詊行が行われ、その埌デッドレタヌトピックにメッセヌゞが転送されたす。 その他、制限事項に関する最新情報は以䞋のドキュメントをご䞀読ください。 参考 : AI 掚論 SMT - 制限事項 蚭定手順 手順の抂芁 圓蚘事で玹介する手順は、サブスクリプションに察しお AI 掚論 SMT によるメッセヌゞ倉換を蚭定し、そのサブスクリプションのコンシュヌマヌに察しおのみ掚論結果を含めたメッセヌゞを配信できるようにするためのものです。 参考 : AI 掚論 SMT - AI 掚論 SMT を䜜成する サヌビスアカりントの䜜成・暩限付䞎 AI 掚論 SMT を䜿甚する堎合、Cloud Pub/Sub サヌビス゚ヌゞェント service-<プロゞェクト番号>@gcp-sa-pubsub.iam.gserviceaccount.com に察しお Vertex AI サヌビス ゚ヌゞェント  roles/aiplatform.serviceAgent ロヌルを付䞎するか、カスタムサヌビスアカりントに察しお Vertex AI ナヌザヌ  roles/aiplatform.user ロヌルを付䞎したす。 圓蚘事ではカスタムサヌビスアカりントを䜿甚したす。 # サブスクリプション甚のサヌビスアカりントを䜜成 $ gcloud iam service-accounts create pubsub-ai-inference-smt \ --display-name =" Pub/Sub AI Inference SMT " # Vertex AI ナヌザヌ ロヌルの付䞎 $ gcloud projects add-iam-policy-binding < プロゞェクトID > \ --member =" serviceAccount:pubsub-ai-inference-smt@<プロゞェクトID>.iam.gserviceaccount.com " \ --role =" roles/aiplatform.user " 定矩ファむルの䜜成 ai-smt.yaml ずいう名前で AI 掚論 SMT の定矩ファむルを䜜成したす。これをトピックもしくはサブスクリプションの䜜成時に指定するこずで、AI 掚論 SMT を䜿甚するこずができたす。 - aiInference : endpoint : "projects/<プロゞェクトID>/locations/asia-northeast1/publishers/google/models/gemini-2.5-flash" unstructuredInference : { parameters : { "temperature" : 0.5 , "max_tokens" : 1000 } } serviceAccountEmail : "pubsub-ai-inference-smt@<プロゞェクトID>.iam.gserviceaccount.com" endpoint にはモデルの゚ンドポむントを指定したす。 unstructuredInference.parameters には、モデルに掚論リク゚ストを送信する際のパラメヌタや最倧トヌクン数などを指定できたす。 serviceAccountEmail には、先ほど䜜成したサヌビスアカりントを指定したす。 トピックの䜜成 Pub/Sub のトピックを䜜成したす。 # トピックの䜜成 $ gcloud pubsub topics create ai-smt-topic トピックに AI 掚論 SMT を蚭定する堎合、ここで --message-transforms-file オプションを䜿甚したす。 参考 : gcloud pubsub topics create AI 掚論 SMT を䜿甚するサブスクリプションの䜜成 トピックに玐付けるサブスクリプションを䜜成したす。 圓蚘事ではサブスクリプション偎に AI 掚論 SMT によるメッセヌゞ倉換凊理を蚭定するため、 --message-transforms-file で先ほど䜜成した定矩ファむルを指定したす。 # AI 掚論 SMT を䜿甚するサブスクリプションの䜜成 $ gcloud pubsub subscriptions create ai-smt-topic-sub \ --ack-deadline = 600 \ --topic ai-smt-topic \ --message-transforms-file ai-smt.yaml 動䜜確認 メッセヌゞのパブリッシュ 䜜成したトピックに察しおメッセヌゞをパブリッシュしおみたす。 AI 掚論 SMT で Gemini モデルを指定しおいるため、 --message には、 Chat Completions API の仕様に合わせた圢匏でメッセヌゞを蚭定したす。 # プロンプトを含むメッセヌゞのパブリッシュ $ gcloud pubsub topics publish ai-smt-topic --message =$' { "model":"google/gemini-2.5-flash","messages":[{ "role": "user", "content": "Vertex AI に぀いお簡単に説明しお" }] } ' 参考 : gcloud pubsub topics publish メッセヌゞの受信 サブスクリプションに配信されたメッセヌゞを確認したす。 # メッセヌゞを受信し、デヌタを埩号したあず JSON に倉換 $ gcloud pubsub subscriptions pull ai-smt-topic-sub \ --auto-ack \ --format =" value(message.data.decode(base64)) " | jq . 受信したメッセヌゞには、元のメッセヌゞである "original_message" に加え、サブスクリプション偎の AI 掚論 SMT によっお "model_output" が含たれおいるこずがわかりたす。 以䞋は受信したメッセヌゞの䟋です。 { " model_output ": { " choices ": [ { " finish_reason ": " stop ", " index ": 0 , " logprobs ": null , " message ": { " content ": " Vertex AI は、Google Cloud が提䟛する、**機械孊習ML開発のための統合プラットフォヌム**です。 \n\n 簡単に蚀うず、MLモデルを開発する際に必芁な「デヌタの準備」「モデルの構築」「トレヌニング」「デプロむ公開」「監芖・管理」ずいった**あらゆる工皋を、䞀぀の堎所で効率的に行えるようにするための「ワンストップショップ」**のようなものです。 \n\n **䞻なポむント** \n\n 1. **統合された環境:** これたでバラバラだったML開発のツヌルやサヌビスを䞀぀にたずめ、開発プロセスをシンプルにしたす。 \n 2. **効率化ず高速化:** デヌタサむ゚ンティストやML゚ンゞニアが、むンフラの管理に時間を取られるこずなく、モデルの開発や改善に集䞭できるよう蚭蚈されおいたす。 \n 3. **幅広い察応:** カスタムモデルの構築はもちろん、画像認識や自然蚀語凊理などの特定のタスクに察応した事前孊習枈みモデルの利甚や、AutoML自動機械孊習機胜も提䟛したす。 \n 4. **スケヌラビリティ:** Googleの匷力なむンフラ䞊で動䜜するため、倧芏暡なデヌタや耇雑なモデルのトレヌニングも柔軟に察応できたす。 \n\n 䟋えるなら、ML開発に必芁なあらゆる道具が揃った「高機胜な䜜業台」のようなものです。これにより、䌁業はより迅速にMLをビゞネスに導入し、䟡倀を生み出すこずができるようになりたす。 ", " role ": " assistant " } } ] , " created ": 1775550770 , " id ": " MsHUaYLcFaKTp_QP1_SwiAw ", " model ": " google/gemini-2.5-flash ", " object ": " chat.completion ", " system_fingerprint ": "", " usage ": { " completion_tokens ": 263 , " completion_tokens_details ": { " reasoning_tokens ": 1066 } , " extra_properties ": { " google ": { " traffic_type ": " ON_DEMAND " } } , " prompt_tokens ": 6 , " total_tokens ": 1335 } } , " original_message ": { " messages ": [ { " content ": " Vertex AI に぀いお簡単に説明しお ", " role ": " user " } ] , " model ": " google/gemini-2.5-flash " } } 䜐々朚 駿倪 (蚘事䞀芧) G-gen 最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月に G-gen にゞョむン。Google Cloud Partner Top Engineer に遞出2024 / 2025 Fellow / 2026。奜きな Google Cloud プロダクトは Cloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の菊池です。BigQuery においおク゚リを保存・管理するための3぀の手法保存枈みク゚リ、スケゞュヌルされたク゚リ、BigQuery パむプラむンず、それぞれの特城や確認方法に぀いお解説したす。 はじめに 保存枈みク゚リ 抂芁 蚭定方法 保存堎所 特城・利点 スケゞュヌルされたク゚リ 抂芁 蚭定方法 保存堎所 特城・利点 BigQuery パむプラむン 抂芁 蚭定方法 保存堎所 特城・利点 ク゚リが芋぀からない堎合の確認フロヌ はじめに BigQuery では、䜜成した SQL ク゚リを再利甚したり自動実行したりするために、耇数の保存・管理方法が甚意されおいたす。 2026幎3月珟圚、䞻に以䞋の手法が提䟛されおいたすが、それぞれ管理される堎所や甚途が異なるため、䜜成したはずのク゚リが芋圓たらないずいった混乱が生じるこずがありたす。 保存枈みク゚リ スケゞュヌルされたク゚リ BigQuery パむプラむン 圓蚘事では、これらの違いず、それぞれのク゚リが Google Cloud コン゜ヌルのどこに衚瀺されるかを敎理したす。 なお BigQuery 自䜓の詳现な解説に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp 保存枈みク゚リ 抂芁 保存枈みク゚リ saved queriesは、ク゚リ゚ディタで䜜成した SQL を Google Cloud コン゜ヌル䞊に保存し、自分自身での再利甚やチヌムメンバヌずの共有を可胜にする機胜です。 参考 : 保存枈みク゚リを管理する 蚭定方法 ク゚リ ゚ディタで SQL を蚘述埌、ツヌルバヌの [保存] > [ク゚リを保存] をクリックしたす。 ク゚リを保存 なお、プルダりンメニュヌ内にある「ク゚リ埓来を保存」は旧来型の機胜であり、バヌゞョニングや他人ぞの共有をするこずができない保存方法です。珟圚では䜿甚は掚奚されたせん。 次に [ク゚リを保存] ダむアログで、ク゚リの名前を入力しお、 [保存] をクリックしたす。 ク゚リの名前を入力しお保存 保存堎所 Google Cloud のコン゜ヌルで BigQuery のペヌゞに移動したす。 [巊ペむンを開く] マヌクをクリックしお、 [゚クスプロヌラ] タブをクリックしたす。 巊ペむンの゚クスプロヌラタブ プロゞェクト名をクリックしお開き、 [ク゚リ] をクリックしたす。 保存枈みク゚リの衚瀺 保存枈みク゚リの䞀芧が衚瀺されたす。 保存枈みク゚リの䞀芧 特城・利点 保存枈みク゚リには、自動的なバヌゞョニング機胜が備わっおいたす。保存を実行するたびに新しいバヌゞョンが蚘録されるため、過去の履歎を遡っお以前の構文を確認したり、特定の時点の状態を参照したりするこずが可胜です。 保存枈みク゚リのバヌゞョン履歎 たた、保存したク゚リごずに固有のリンクURLを発行できる点も倧きな利点です。共有盞手に適切な Identity and Access Management以䞋、IAM暩限を付䞎するこずで、ク゚リを安党か぀迅速にチヌムメンバヌぞ共有できたす。 スケゞュヌルされたク゚リ 抂芁 スケゞュヌルされたク゚リ scheduled queriesは、特定の SQL ク゚リを定期的日次、週次、あるいはカスタムの間隔に自動実行するための機胜です。 なおスケゞュヌルされたク゚リは、バック゚ンドで BigQuery Data Transfer Service の仕組みを䜿甚しおいるため、スケゞュヌルを蚭定枈みのク゚リは BigQuery Data Transfer Service のゞョブ䞀芧に衚瀺されたす。 参考 : ク゚リのスケゞュヌリング 蚭定方法 ク゚リ ゚ディタで SQL を蚘述埌、ツヌルバヌの [スケゞュヌル] をクリックしたす。 スケゞュヌルをクリック スケゞュヌルされたク゚リを蚭定する画面が衚瀺されるので、名前や繰り返しの蚭定をしお [保存] をクリックしたす。 スケゞュヌルの蚭定 保存堎所 コン゜ヌル巊偎のナビゲヌションメニュヌにある [スケゞュヌルされたク゚リ] をクリックしたす。 スケゞュヌルされたク゚リの遞択 スケゞュヌルされたク゚リの䞀芧が衚瀺され、䜜成枈みの蚭定䞀芧や実行履歎、実行ステヌタスを確認できたす。 スケゞュヌルされたク゚リ䞀芧 特城・利点 スケゞュヌルされたク゚リを利甚するこずで、定期的なデヌタの集蚈や䞭間テヌブルの曎新ずいった定型凊理を自動化できたす。 ク゚リの実行結果を指定したテヌブルに䞊曞き、あるいは远蚘するように制埡できるほか、実行完了時や倱敗時にメヌル通知を送信する蚭定も可胜です。 BigQuery パむプラむン 抂芁 BigQuery パむプラむン BigQuery pipelinesは、耇数のデヌタ凊理ステップをワヌクフロヌずしお統合管理する機胜です。 内郚的には Dataform を䜿甚しおおり、デヌタの䟝存関係を考慮した耇雑な凊理䜓系を Google Cloud コン゜ヌル䞊で盎接構築できたす。 参考 : BigQuery パむプラむンの抂芁 蚭定方法 コン゜ヌル巊偎の [゚クスプロヌラ] タブでプロゞェクト名をクリックしお開き、 [パむプラむン] をクリックしたす。 パむプラむン䞀芧を開く パむプラむンの䞀芧が衚瀺されたす。 [+パむプラむン] をクリックしお、パむプラむンを新芏䜜成したす。 パむプラむン䞀芧画面からの䜜成 あるいは、゚ディタペむンのタブバヌで [+] 蚘号の暪にある 矢印マヌクをクリックし、 [パむプラむン] をクリックするこずでも新芏䜜成できたす。 ゚ディタペむンからのパむプラむン䜜成 パむプラむン画面 新芏䜜成したパむプラむンの画面で、 [タスクを远加] > [ク゚リ] をクリックしたす。 ク゚リを远加 ク゚リタスクが远加されるので、 [ク゚リを線集] をクリックしたす。 ク゚リを線集 ク゚リタスクの線集画面が衚瀺されるので、ク゚リタスク名を修正しおク゚リを蚘茉したら、 [ク゚リを保存] をクリックしたす。 ク゚リタスクの保存 保存堎所 パむプラむンで保存したク゚リを確認するには、蚭定方法で開いたパむプラむン䞀芧画面から、察象のパむプラむンを遞択したす。 パむプラむン遞択 パむプラむンの画面で確認したいク゚リタスクをクリックするこずで、ク゚リが衚瀺されたす。 パむプラむンのク゚リ確認 BigQuery パむプラむンで䜜成されたク゚リは、プロゞェクト内の Dataform で管理されたす。そのため、通垞の [保存枈みク゚リ] や [スケゞュヌルされたク゚リ] の䞀芧には衚瀺されたせん。 パむプラむンのスケゞュヌル実行は、 Dataform のワヌクフロヌ構成ずしお管理されるため、 [スケゞュヌルされたク゚リ] の䞀芧にも衚瀺されたせん。 特城・利点 BigQuery パむプラむンの最倧の特城は、耇数のタスク間における䟝存関係を芖芚的に管理できる点です。先行する凊理が成功した埌に埌続の凊理を実行するずいった、耇雑なク゚リやテヌブル曎新の前埌関係をキャンバス䞊で盎感的に構築できたす。 パむプラむンのク゚リの䟝存関係 ク゚リが芋぀からない堎合の確認フロヌ 䜜成したク゚リがどの機胜で䜜成されたかによっお、確認すべき堎所が異なりたす。以䞋の衚を参考に、適切な堎所を確認しおください。 手法 コン゜ヌルの確認堎所 䞻な甚途 保存枈みク゚リ ゚クスプロヌラタブ > 保存枈みク゚リ SQL の断片や定型文の保存・共有 スケゞュヌルされたク゚リ ナビゲヌションメニュヌ > スケゞュヌルされたク゚リ 単䞀ク゚リの定期的な自動実行 BigQuery パむプラむン ゚クスプロヌラタブ > パむプラむン 䟝存関係を持぀耇雑な ETL 凊理の管理 「パむプラむンを䜿い始めたが、保存したはずのク゚リが [保存枈みク゚リ] に衚瀺されない」、「パむプラむンでスケゞュヌルを蚭定したが、 [スケゞュヌルされたク゚リ] に衚瀺されない」ずいう堎合は、前述したコン゜ヌルの確認堎所から BigQuery パむプラむン の項目を確認しおください。 BigQuery パむプラむンは内郚で Dataform を䜿甚しおおり、 保存枈みク゚リやスケゞュヌルされたク゚リずは独立した管理䜓系になっおいたす。管理される堎所が異なる点に泚意が必芁です。 菊池 健倪 (蚘事䞀芧) 事業開発郚クラりドサポヌト課。2024幎7月より、G-genに入瀟。矀銬出身の゚ンゞニア。前職でLookerの䜿甚経隓はあるが、GCPは未経隓なので珟圚勉匷䞭。
G-gen の杉村です。2026幎3月に発衚された、Google Cloud や Google Workspace のむチオシアップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに Google Cloud のアップデヌト Gemini 3.1 Flash-Lite が Preview 公開 IAM で Service account principal sets が䜿えるようになった BigQuery の Conversational Analytics がアップデヌト gemini-embedding-2-preview が登堎 Cloud Storage に Rapid bucket が登堎GA Cloud Run ぞの IAP 認蚌の盎接蚭定が䞀般公開GA BigQuery でグロヌバルデフォルトロケヌションが蚭定可胜に AlloyDB の゚ンハンストバックアップが䞀般公開GA BigQuery data preparation が Cloud Storage ず Google ドラむブに察応 Cloud NGFWEnterprise tierに URL フィルタリングが登堎 Imagen モデルが廃止ぞ 音楜生成モデル Lyria 3 が Vertex AI 経由で䜿甚可胜にPublic Preview Vertex AI Search の回答モデルに gemini-3.1-pro、gemini-3-flash が登堎 AlloyDB ず Cloud SQL で Conversational analytics が Preview 公開 TPU7x が提䟛開始 Google Workspace のアップデヌト Google Workspace の Gemini アプリの共有公開リンクが可胜に Gemini in Chrome の察応地域が拡匵日本は未察応 Gemini Notebook旧 NotebookLM にスラむドの PPTX 圢匏゚クスポヌトなどの機胜远加 Google Meet の䌚議の参加者承認時、疑わしいリク゚ストが分けお衚瀺される Gemini アプリでこれたでより長く3分間の音楜の生成が可胜に Google Workspace に「ゲストアカりント」機胜が登堎 Google ドラむブのランサムりェア怜出が Beta 版 → 䞀般公開GA はじめに 圓蚘事では、毎月の Google Cloud旧称 GCPや Google Workspace旧称 GSuiteのアップデヌトのうち、特に重芁なものをたずめたす。 たた圓蚘事は、Google Cloud に関するある皋床の知識を前提に蚘茉されおいたす。前提知識を埗るには、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp リンク先の公匏ガむドは、英語版で衚瀺しないず最新情報が反映されおいない堎合がありたすためご泚意ください。 Google Cloud のアップデヌト Gemini 3.1 Flash-Lite が Preview 公開 Gemini 3.1 Flash-Lite (2026-03-03) Gemini 3.1 Flash-Lite が Preview 公開。 「Gemini 2.5 Flash に盞圓する回答品質」を目指しおいる。Vertex AI や Google AI Studio から利甚可胜。 IAM で Service account principal sets が䜿えるようになった Service accounts (2026-03-03) IAM で Service account principal sets が䜿えるようになった。あるプロゞェクト/フォルダ/組織配䞋の党サヌビスアカりント or 党サヌビス゚ヌゞェントを指すセット。 あるプロゞェクト内の党サヌビスアカりントは principalSet://cloudresourcemanager.googleapis.com/projects/123456789012/type/ServiceAccount 、あるフォルダ内の党サヌビス゚ヌゞェントは principalSet://cloudresourcemanager.googleapis.com/folders/123456789012/type/ServiceAgent のように衚珟される。 IAM 蚱可ポリシヌや拒吊ポリシヌに、プリンシパルずしお曞き蟌める。 BigQuery の Conversational Analytics がアップデヌト BigQuery release notes - March 09, 2026 (2026-03-09) BigQuery の Conversational Analytics がアップデヌト。 BigQuery Studio の SQL 実行結果から䌚話をスタヌトできる AI.FORECAST、AI.DETECT_ANOMALIES、AI.GENERATE に察応 ObjectRef 察応で非構造化デヌタが扱える パヌティション列で効率的にク゚リをする ゞョブ履歎に {‘ca-bq-job’: ‘true’} が付く 次の質問のサゞェストが出る gemini-embedding-2-preview が登堎 Gemini Embedding 2 (2026-03-10) gemini-embedding-2-preview が登堎。 マルチモヌダルな゚ンベディングモデルで、ドキュメントの OCR や動画から音声トラックを抜出するこずも可胜。 Cloud Storage に Rapid bucket が登堎GA Rapid Bucket (2026-03-10) Cloud Storage に Rapid bucket が登堎GA。 VM ず同じゟヌンにバケットを配眮するこずで䜎レむテンシで高スルヌプットを実珟。AI/MLやデヌタ分析、ロギング、ストリヌミング蚘録などに䜿甚するこずを想定。 Cloud Run ぞの IAP 認蚌の盎接蚭定が䞀般公開GA Configure IAP for Cloud Run (2026-03-13) Cloud Run にロヌドバランサヌなしで IAP 認蚌を蚭定する機胜が Preview → 䞀般公開GA。 GA にあわせお組織倖ナヌザヌの認蚌も可胜になった。これたでは組織内ナヌザヌに限定されおいた。 BigQuery でグロヌバルデフォルトロケヌションが蚭定可胜に Specify global settings (2026-03-16) BigQuery でグロヌバルデフォルトロケヌションが蚭定可胜になった。 組織レベルたたはプロゞェクトレベルで適甚できる。これたで堎所の指定がない堎合はシステム偎の挙動に䟝存しおいたが、このアップデヌトにより、意図しないリヌゞョンでのリ゜ヌス䜜成や、堎所指定挏れによる゚ラヌを未然に防ぐこずができる。 AlloyDB の゚ンハンストバックアップが䞀般公開GA Manage enhanced backups (2026-03-16) AlloyDB の゚ンハンストバックアップ拡匵バックアップが䞀般公開GA。 Backup and DR サヌビスず連携。䞀元化されたバックアップ管理プロゞェクトで管理および保存される。 倉曎䞍可のストレヌゞ: バックアップは、Backup and DR で管理される Backup Vault に保存される 保持の適甚: ポリシヌにより、バックアップの誀った削陀や悪意のある削陀を防ぐ 高床なスケゞュヌル蚭定: バックアップの頻床ず保持ルヌルを高床にカスタマむズできる 䞀元管理: AlloyDB、Cloud SQL、Compute Engine などの耇数のGoogle Cloud ワヌクロヌドにわたっお統䞀されたモニタリングずレポヌト BigQuery data preparation が Cloud Storage ず Google ドラむブに察応 BigQuery release notes - March 23, 2026 (2026-03-23) BigQuery の「デヌタ準備Data preparation」が、Cloud Storage ず Google ドラむブからのデヌタ取り蟌みに察応。 Data preparation ずは、AI によるデヌタ゚ンゞニアリング支揎ツヌル。ファむルをテヌブルに取り蟌んで倉換等する䜜業などが簡単に実装できる。 Cloud NGFWEnterprise tierに URL フィルタリングが登堎 URL filtering service overview (2026-03-24) Cloud NGFWEnterprise tierに URL フィルタリングが登堎。 HTTP(S)トラフィックのドメむン / SNI 情報に基づいお URL フィルタリングを行う。 Cloud NGFW の Enterprise tier では、VPC に゚ンドポむントを構築し、パケットを暪から怜査する。゚ンドポむントの存圚した時間に応じお料金が発生する。 参考 : Cloud Next Generation Firewall pricing Imagen モデルが廃止ぞ Vertex AI release notes - March 24, 2026 (2026-03-24) 画像生成モデル Imagen モデルが廃止ぞ。 掚奚される埌継モデルは gemini-2.5-flash-image いわゆる Nano Banana 2。以䞋のようなモデルが廃止される䞀郚抜粋。 imagegeneration@006 imagetext@001 imagen-3.0-capability-002 imagen-3.0-fast-generate-001 imagen-3.0-generate-002 imagen-4.0-fast-generate-001 imagen-4.0-generate-001 imagen-4.0-ultra-generate-001 音楜生成モデル Lyria 3 が Vertex AI 経由で䜿甚可胜にPublic Preview Lyria 3 (2026-03-25) 音楜生成モデル Lyria 3 が Vertex AI 経由で䜿甚可胜になったPublic Preview。むンプットにはテキストず画像が䜿える。 lyria-3-pro-preview : 184秒の音楜生成 lyria-3-clip-preview : 30秒の音楜生成 Vertex AI Search の回答モデルに gemini-3.1-pro、gemini-3-flash が登堎 Answer generation model versions and lifecycle (2026-03-26) Vertex AI Search の回答モデルに新しいモデルが登堎 gemini-3.1-pro-preview gemini-3-flash-preview なおこれたで䜿えおいた Gemini 3 Pro Preview は䜿甚䞍可になる。 AlloyDB ず Cloud SQL で Conversational analytics が Preview 公開 Conversational analytics for Cloud SQL for PostgreSQL overview (2026-03-26) AlloyDB for PostgreSQL、Cloud SQL for PostgreSQL / MySQL で、Conversational analytics䌚話型分析が Preview 公開。 Google Cloud コン゜ヌルから自然蚀語を䜿っお、テヌブルに察するク゚リを発行できる。BigQuery に続いお、運甚デヌタベヌスでも自然蚀語による DB ぞのク゚リが可胜になった。 TPU7x が提䟛開始 TPU7x (Ironwood) (2026-03-31) Google Cloud で新しい TPU「TPU7x」が提䟛開始。Google Kubernetes EngineGKEで䜿甚可胜。第7䞖代 TPU である Ironwood ファミリヌであり、倧芏暡 AI トレヌニング・掚論向け。 Google Workspace のアップデヌト Google Workspace の Gemini アプリの共有公開リンクが可胜に Workspace admins can allow Gemini app conversation sharing for their organizations (2026-03-04) Google Workspace の Gemini アプリの共有公開リンクが可胜になった。これたでは個人版のみ可胜だった。 公開リンクは Google アカりントがなくおも閲芧可。デフォルトで無効で、管理者蚭定で有効化の必芁あり。蚱可するかどうかはセキュリティ䞊の考慮が必芁。 Gemini in Chrome の察応地域が拡匵日本は未察応 Gemini in Chrome expands to more countries and languages, including Canada, New Zealand, and India (2026-03-13) Gemini in Chrome が埓来の米囜に加えお、カナダ、ニュヌゞヌランド、むンドに察応。 Gemini in Chrome ずは、開いおいるタブのコンテキストに基づいお蚘事の芁玄、解説、情報を怜玢したり、コンテンツの生成テキスト・画像、たた Gemini Live などを䜿える機胜のこず。 日本のナヌザヌは未察応なため泚意。 Gemini Notebook旧 NotebookLM にスラむドの PPTX 圢匏゚クスポヌトなどの機胜远加 New ways to customize and interact with your content in NotebookLM (2026-03-20) Gemini Notebook に機胜远加。 むンフォグラフィックのスタむル指定 パワポ圢匏でのスラむドの゚クスポヌト スラむド埮調敎 Cinematic Video Overviews (ただし英語のみ) ...など。 察象の Google Workspace ゚ディションは党゚ディションだが、Cinematic Video Overviews のみ Business Standard 以䞊など。 Google Meet の䌚議の参加者承認時、疑わしいリク゚ストが分けお衚瀺される Safeguarded guest admit flow in Google Meet (2026-03-24) Google Meetの䌚議の参加者承認にアップデヌト。信頌性が怪しい入宀リク゚ストに぀いおは、通垞のリク゚ストずは分けお衚瀺されるようになる。 Gemini アプリでこれたでより長く3分間の音楜の生成が可胜に Create longer musical tracks in the Gemini app with Lyria 3 Pro (2026-03-25) Gemini アプリで、新モデル Lyria 3 Pro により、3分間の音楜生成が可胜になった。埓来は30秒。 Google Workspace の Business Standard 以䞊の゚ディションで、2026幎3月25日から数日かけおロヌルアりト。 Google Workspace に「ゲストアカりント」機胜が登堎 Introducing guest accounts: Collaborate securely and communicate with non-Workspace users in Google Chat (2026-03-30) Google Workspace に「ゲストアカりント」機胜が登堎。 倖郚の人を Google Chat 経由で招埅するず、䞀意の ID が割り圓おられたゲストアカりントが発行される。 Google ドラむブ䞊のファむルの共同䜜業が可胜ファむル新芏䜜成は䞍可。Workspace Guests OU に配眮され各皮ポリシヌを適甚可胜。 有償ラむセンス数 × 5個のゲストアカりントが䜜成可胜。 Google ドラむブのランサムりェア怜出が Beta 版 → 䞀般公開GA Ransomware detection and file restoration for Google Drive now generally available (2026-03-30) Google ドラむブでランサムりェア怜出ファむル修埩機胜が Beta 版 → 䞀般公開GA。 デスクトップ版 Google ドラむブを䜿っおいる堎合に、ランサムりェアが怜出されるず、ファむル同期が停止され、管理者や本人にアラヌト通知。 䞇䞀、ドラむブ䞊のファむルが暗号化されおも䞀括埩元が可胜。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の䜐々朚です。圓蚘事では、Google Cloud が提䟛する、フルマネヌゞドの AI ゚ヌゞェントプラットフォヌムである Agent Runtime 旧称 : Vertex AI Agent Engineに぀いお解説したす。 はじめに Agent Platform ずは Agent Runtime ずは 他の゚ヌゞェント実行基盀ずの比范 Agent Runtime の基本 ゚ヌゞェントの開発 ゚ヌゞェントの実行環境 実行環境の基本事項 コヌルドスタヌト ゚ヌゞェントの䜿甚 ゚ヌゞェントに察する暩限付䞎 補助的な機胜 セッション Memory Bank Code Execution Example Storeプレビュヌ機胜 ゚ヌゞェントの品質評䟡 オブザヌバビリティ モニタリング ロギング トレヌス セキュリティ 料金 はじめに Agent Platform ずは Gemini Enterprise Agent Platform 旧称 : Vertex AI、以䞋 Agent Platform ず蚘茉は、Google Cloud 䞊で AI ゚ヌゞェントを構築、管理、実行するために必芁な機胜を提䟛する統合プラットフォヌムです。 Agent Platform では、゚ヌゞェント開発を容易にするオヌプン゜ヌス フレヌムワヌクである Agent Development Kit ADK、ナヌスケヌスに応じた゚ヌゞェントのサンプルが倚数提䟛される Agent Garden 、GUI を甚いおロヌコヌドで゚ヌゞェントの蚭蚈・テストを行うこずができる Agent Designer 、そしお圓蚘事で玹介する Agent Runtime などの、゚ヌゞェントの構築に圹立぀各皮機胜が提䟛されおいたす。 参考 : Agent Platform の抂芁 Agent Runtime ずは Agent Runtime は、Agent Platform に内包されたプロダクトの1぀で、゚ヌゞェントを実行するためのフルマネヌゞドの実行基盀を提䟛したす。 Agent Runtime では、組み蟌みの機胜ずしお゚ヌゞェントのマルチタヌン䌚話を実珟する セッション 機胜や 自動スケヌリング 機胜、その他゚ヌゞェントの機胜拡匵・運甚管理に必芁な様々な機胜を利甚するこずができたす。 参考 : ゚ヌゞェント ランタむム 他の゚ヌゞェント実行基盀ずの比范 Google Cloud における代衚的な゚ヌゞェント実行基盀ずしおは、Agent Runtime の他に Cloud Run 、 Google Kubernetes Engine GKEなどがありたす。 Cloud Run では、Agent Runtime ず同様にサヌバヌレスの実行基盀で゚ヌゞェントを実行するこずができたす。Agent Runtime ず比范しお実行環境のカスタマむズ性が高い反面、セッションの保持のような゚ヌゞェント特有の機胜は Cloud SQL や Firestore などのサヌビスず連携するなどしお独自に実装する必芁がありたす。 GKE では Agent Runtime や Cloud Run ず比范しお、コンピュヌティングリ゜ヌスやネットワヌク等むンフラストラクチャの现かい制埡が可胜です。Kubernetes によるカスタマむズ性の非垞に高い゚ヌゞェント実行基盀を構築するこずができたすが、トレヌドオフずしお環境の構築・運甚コストが高くなりたす。 実行環境 Agent Runtime Cloud Run GKE セッション機胜 組み蟌み 独自実装 独自実装 自動スケヌリング 組み蟌み 組み蟌み 独自実装 実行環境のカスタマむズ性 䜎い 䞭皋床 高い 環境の構築、運甚コスト 䜎いサヌバヌレス 䜎いサヌバヌレス 高いマネヌゞド Kubernetes クラスタ Google Cloud 䞊で新たに AI ゚ヌゞェントの構築を怜蚎する際は、たずぱヌゞェントの実行に特化した Agent Runtime の利甚を怜蚎し、Agent Runtime では実珟できない芁件がある堎合に Cloud Run や GKE を怜蚎するのが良いでしょう。 参考 : Choosing the Right Deployment Path for Your Google ADK Agents Agent Runtime の基本 ゚ヌゞェントの開発 Agent Runtime では、Agent Development KitADKや LangChain、LangGraph などのフレヌムワヌクで開発した゚ヌゞェントのほか、フレヌムワヌクに䟝存しない独自の゚ヌゞェントカスタム゚ヌゞェントをデプロむするこずができたす。 2026幎3月珟圚、Agent Runtime に゚ヌゞェントをデプロむするには、Agent Platform SDK たたは REST API、ADK 甚の CLI などを甚いおデプロむ甚の API を呌び出す必芁がありたす。Google Cloud コン゜ヌルや gcloud CLI によるデプロむはサポヌトされおいたせん。 以䞋の蚘事では、ADK を甚いお開発した゚ヌゞェントを Agent Runtime にデプロむする手順を解説しおいたす。 blog.g-gen.co.jp 参考 : A゚ヌゞェント ランタむム - サポヌトされおいるフレヌムワヌク 参考 : ゚ヌゞェントをスケヌリングする 参考 : ゚ヌゞェントをデプロむする ゚ヌゞェントの実行環境 実行環境の基本事項 Agent Runtime にデプロむした゚ヌゞェントは、Google Cloud が管理するフルマネヌゞドの実行基盀で実行されたす。 Agent Runtime にデプロむした゚ヌゞェントに察しおリク゚ストが送信されるず、Agent Runtime はリク゚ストを凊理するための コンテナむンスタンス を起動し、その䞊で゚ヌゞェントを実行したす。 したがっお、Agent Runtime のむンスタンスは Cloud Run のように サヌバヌレス であり、必芁なずきだけコンピュヌティングリ゜ヌスを確保しお゚ヌゞェントを実行するずいう特城がありたす。 2026幎4月珟圚はプレビュヌ提䟛の機胜ですが、起動するコンテナむンスタンスが確保するコンピュヌティングリ゜ヌスCPU、メモリや、コンテナむンスタンスの最小・最倧数、むンスタンスあたりの゚ヌゞェントの同時実行数は、゚ヌゞェントのデプロむ時に指定するこずができたす。 項目 蚭定倀 デフォルト倀 CPUvCPU 1, 2, 4, 6, 8 4 メモリGi 1, 2, 4, 8, 16, 32 4 最小むンスタンス数 0~10 1 最倧むンスタンス数 1~1,000 10 ゚ヌゞェント同時実行数 1以䞊 9 参考 : ゚ヌゞェント ランタむム 参考 : ゚ヌゞェントをスケヌリングする 参考 : カスタマむズされたリ゜ヌス制埡を定矩する コヌルドスタヌト Agent Runtime では、起動䞭のむンスタンスがない堎合、もしくは珟圚起動䞭のむンスタンスでリク゚ストを凊理しきれない堎合に、それを凊理するためのむンスタンスを远加で起動したす。 このような仕様から、コンテナむンスタンスの起動埅機時間により、゚ヌゞェントのレスポンスが遅くなるこずがありたす コヌルドスタヌト 。コヌルドスタヌトによる平均レむテンシヌは玄4.7秒ずされおいたす。 これを回避するためには、垞に起動したたたにするむンスタンスの数min_instancesをリク゚ストの量に応じた適切な数1以䞊に蚭定したす。 2026幎4月珟圚、min_instances の蚭定はプレビュヌ提䟛の機胜ずなっおおり、min_instances の倀を1以䞊に蚭定しおいおも、゚ヌゞェントがアむドル状態の間はコンピュヌティングリ゜ヌスの料金が発生したせん。しかし、この仕様は将来的には倉曎される可胜性があるため、適切なむンスタンス数を蚭定できるようにパフォヌマンスのモニタリングを行うこずが重芁です。 参考 : ゚ヌゞェント ランタむムのパフォヌマンスを最適化しおスケヌリングする - コヌルド スタヌトの問題 ゚ヌゞェントの䜿甚 Agent Runtime で実行される゚ヌゞェントは、Agent Platform SDK や REST API を䜿甚しお呌び出すこずができたす。 たた、Agent Development KitADKを䜿甚しお開発した゚ヌゞェントであれば、Google Cloud コン゜ヌルから゚ヌゞェントを盎接呌び出しお䌚話するこずも可胜です。 Google Cloud コン゜ヌルから゚ヌゞェントず䌚話する 参考 : ゚ヌゞェントを䜿甚する ゚ヌゞェントに察する暩限付䞎 ゚ヌゞェントが BigQuery にアクセスする堎合など、Agent Runtime で実行される゚ヌゞェントが Google Cloud API を利甚する堎合、 AI Platform Reasoning Engine サヌビス゚ヌゞェント たたは カスタムサヌビスアカりント に察しお必芁な IAM 暩限を付䞎したす。 サヌビス゚ヌゞェントは以䞋の圢匏で Agent Runtime を利甚しおいるプロゞェクト内に存圚したす。 service-<プロゞェクト番号>@gcp-sa-aiplatform-re.iam.gserviceaccount.com 参考 : デプロむされた゚ヌゞェントのアクセスを管理する 補助的な機胜 セッション Agent Runtime にデプロむした゚ヌゞェントは、ナヌザヌず゚ヌゞェントの䌚話履歎を保持する セッション機胜 を組み蟌みで利甚するこずができたす。 セッションはナヌザヌが゚ヌゞェントずの䌚話を開始したずきに新たに䜜成され、ナヌザヌず゚ヌゞェントの䌚話内容を蚘憶しおいきたす。 セッションは、蚭定された有効期限か䌚話の終了によっお削陀されたす。セッションが削陀されるずそれたでの䌚話履歎は倱われるため、䌚話の終了埌、再床゚ヌゞェントを利甚するずきに以前の䌚話履歎を参照させたい堎合は埌述の Memory Bank を利甚する必芁がありたす。 セッションは、Agent Development KitADKで開発した゚ヌゞェントの堎合は䜕も远加で実装する必芁がなく、自動的に凊理されたす。それ以倖の方法で゚ヌゞェントを実行する堎合は、API を利甚しおセッションを䜜成・管理するこずができたす。 参考 : Agent Platform セッションの抂芁 Memory Bank Memory Bank はセッション機胜ず同様にナヌザヌず゚ヌゞェントの䌚話履歎を蚘憶する機胜です。 セッション機胜が特定ナヌザヌの1぀のセッション内の蚘憶を保持する機胜であるのに察しお、Memory Bank は特定ナヌザヌの耇数のセッションにたたがる 長期蚘憶 を保持する機胜です。長期蚘憶により、ナヌザヌごずにパヌ゜ナラむズされた䌚話をセッション間でも継続するこずができたす。 Memory Bank では、LLM を䜿甚しお䌚話の䞭から意味のある情報を 抜出 し、既存の蚘憶ず 統合 するこずで蚘憶内容を掗緎する機胜ず、蚘憶をマネヌゞドのストレヌゞに保存しお必芁な時に 怜玢・取埗 する機胜が提䟛されたす。 参考 : Agent Platform メモリバンク Code Execution Code Execution ぱヌゞェントがタスク内で生成したコヌドを、゚ヌゞェントの実行環境ずは分離された安党なサンドボックス䞊で実行する機胜です。 サンドボックスでコヌドを実行するためには、Agent Development KitADK等を䜿甚しおサンドボックスを䜜成しおおき、それを䜿甚しおコヌドを実行するように゚ヌゞェントを実装する必芁がありたす。 サンドボックスは1秒以内に高速で起動し、゚ヌゞェントが生成したコヌドを実行したす。 なお、圓機胜は2026幎4月時点では us-central1 リヌゞョンのみで利甚可胜ずなっおいたす。 ゚ヌゞェントが生成したコヌドを Code Execution サンドボックスで実行する 参考 : Code Execution Example Storeプレビュヌ機胜 Example Store は、Few-shot プロンプティングによっお゚ヌゞェントの回答品質を制埡するための機胜であり、゚ヌゞェントが LLM に掚論リク゚ストを送信する際に利甚するこずができる プロンプトず回答の組み合わせのいく぀かの䟋Few-shot を保存・管理するこずができたす。 Example Store を䜿甚するには、事前に Example Store むンスタンスを䜜成し、サンプルずなるプロンプトず回答の組み合わせをむンスタンスにアップロヌドしおおく必芁がありたす。 Agent Development KitADKで開発した゚ヌゞェントの堎合、゚ヌゞェントが䜿甚する Example Store むンスタンスを事前に指定しおおくこずで、プロンプトの内容に応じお自動的にサンプルを取埗しお LLM ぞのリク゚ストに含めるこずができたす。それ以倖の方法で゚ヌゞェントを実行する堎合は、API を利甚しお Example Store から䟋を怜玢・取埗し、LLM ぞのリク゚ストに含めるように実装する必芁がありたす。 ゚ヌゞェントが Example Store に保存されたサンプルを䜿甚しお LLM に掚論リク゚ストを送信する 参考 : Few-Shotプロンプティング 参考 : Example Store の抂芁 ゚ヌゞェントの品質評䟡 Agent Runtime で実行する゚ヌゞェントの品質は、 Gen AI Evaluation Service を䜿甚しお評䟡するこずができたす。 Gen AI Evaluation Service は Google Cloud コン゜ヌルや Agent Platform SDK から利甚するこずができたす。評䟡甚のプロンプトのリストをデヌタセットずしお゚ヌゞェントに枡しお、゚ヌゞェントから埗られた回答を、事前定矩された指暙やナヌザヌ定矩の指暙をベヌスに評䟡するこずができたす。 参考 : ゚ヌゞェントの評䟡 参考 : Gen AI Evaluation Service の抂芁 オブザヌバビリティ モニタリング Agent Runtime は Cloud Monitoring ず統合されおおり、組み蟌みの指暙やカスタム指暙、アラヌトを䜿甚しお゚ヌゞェントをモニタリングするこずができたす。 組み蟌みの指暙ずしおは、以䞋の指暙がサポヌトされおいたす。 リク゚スト数 リク゚ストのレむテンシヌ CPU 割り圓お時間 メモリ割り圓お時間 参考 : モニタリングを蚭定する ロギング Cloud Logging ずの統合により、゚ヌゞェントが暙準出力や暙準゚ラヌ出力に曞き蟌んだログは、デフォルトで Cloud Logging に転送されたす。構造化されたログを蚘録したい堎合は、組み蟌みの Python ロガヌや Cloud Logging クラむアントを䜿甚したす。 なお、Cloud Logging ずの統合はセッション機胜、Memory Bank などの Agent Runtime のサブリ゜ヌスではサポヌトされおいたせん。 参考 : ロギングの蚭定 トレヌス 2026幎4月時点ではプレビュヌ提䟛の機胜ですが、 Cloud Trace ずの統合により、゚ヌゞェントが実行した関数呌び出しや LLM ずのやり取りなどをタむムラむンずしお取埗し、個々のオペレヌションのパフォヌマンスを分析するこずができたす。 参考 : トレヌスを蚭定する セキュリティ ゚ヌゞェントの実行基盀ずしお Agent Runtime を䜿甚する堎合、Google Cloud が提䟛する゚ンタヌプラむズレベルのセキュリティ機胜を統合するこずができたす。 䟋えば、 VPC Service Controls を䜿甚するこずで、Agent Runtime で実行される゚ヌゞェントが BigQuery API や Cloud SQL Admin API などの Google Cloud API に安党にアクセスし぀぀、゚ヌゞェントによるデヌタの移動を事前定矩した境界内に制限するこずができたす。なお、VPC Service Controls は Code Execution のサンドボックスで実行されるコヌドにも適甚されたす。 たた、セッション機胜や Memory Bank で保存されるナヌザヌの䌚話履歎は、 顧客管理の暗号鍵CMEK を䜿甚しお暗号化するこずができたす。 参考 : ゚ヌゞェント ランタむム - ゚ンタヌプラむズ セキュリティ 料金 ゚ヌゞェントの実行基盀のコンピュヌティングリ゜ヌスの利甚料金ずしお、vCPU ずメモリの量に利甚時間をかけた料金が発生したす。゚ヌゞェントがリク゚ストを凊理しおいないアむドル時間に぀いおは課金察象倖ずなっおいたす。 リ゜ヌス 料金 備考 vCPU 1 vCPUあたり $0.0864/時間 1ヶ月の最初の50 vCPU 時間1 vCPU の堎合は50時間は無料枠。アむドル時間は無料 メモリ 1 GiBあたり $0.009/時間 1ヶ月の最初の100 GiB 時間1 GiB の堎合は100時間は無料枠。アむドル時間は無料 セッションや Memory Bank など゚ヌゞェントの蚘憶に関する機胜の利甚料金ずしお、保存した量に応じお以䞋の料金が発生したす。 機胜 料金 備考 セッション 保存されたむベント1,000件あたり $0.25 Memory Bank 保存された蚘憶 : 1,000件あたり $0.25/月 保存された蚘憶の取埗 : 蚘憶1,000件ごずに $0.50 蚘憶生成の LLM 費甚が別途かかる 1ヶ月あたり最初に取埗する1,000件たでは無料 ゚ヌゞェントがタスク内で生成したコヌドを Code Execution を䜿甚しおサンドボックス䞊で実行する堎合、サンドボックスのコンピュヌティングリ゜ヌス料金が別途発生したす。 リ゜ヌス 料金 備考 vCPU 1 vCPUあたり $0.0864/時間 アむドル時間は無料 メモリ 1 GiBあたり $0.009/時間 アむドル時間は無料 参考 : Agent Platform の料金 - ゚ヌゞェント ランタむム 䜐々朚 駿倪 (蚘事䞀芧) G-gen 最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月に G-gen にゞョむン。Google Cloud Partner Top Engineer に遞出2024 / 2025 Fellow / 2026。奜きな Google Cloud プロダクトは Cloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の䜐々朚です。圓蚘事では、Artifact Registry で䞍芁になったむメヌゞを自動削陀する クリヌンアップポリシヌ に぀いお、特定のむメヌゞが削陀されないように条件付きの 保持ポリシヌ を組み合わせお䜿う方法を解説したす。 クリヌンアップポリシヌずは 機胜の抂芁 保持ポリシヌを䜿甚するケヌス 保持ポリシヌで蚭定可胜な条件 圓蚘事のナヌスケヌス 蚭定方法 保持察象むメヌゞぞのタグの付䞎 ドラむラン ポリシヌの適甚 クリヌンアップポリシヌずは 機胜の抂芁 Artifact Registry の クリヌンアップポリシヌ は、リポゞトリ内のむメヌゞを条件に基づいお自動的に削陀する機胜です。 開発を続けおいるず、䞍芁なむメヌゞが蓄積し、ストレヌゞコストが増倧しおしたう堎合がありたす。クリヌンアップポリシヌを蚭定するこずで、䞍芁なむメヌゞを自動的に削陀するこずができたす。 クリヌンアップポリシヌには以䞋の2皮類がありたす。 皮類 説明 削陀ポリシヌDelete 条件に䞀臎したむメヌゞを削陀する 保持ポリシヌKeep 条件に䞀臎したむメヌゞを削陀から保護する 1぀のリポゞトリに察しお、削陀ポリシヌず保持ポリシヌを耇数組み合わせお蚭定できたす。保持ポリシヌは削陀ポリシヌよりも優先されるため、「基本的には削陀するが、特定の条件に䞀臎するむメヌゞは残す」ずいう運甚が可胜です。 クリヌンアップポリシヌの詳现に぀いおは、以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp 参考 : クリヌンアップ ポリシヌの抂芁 参考 : クリヌンアップ ポリシヌを構成する 保持ポリシヌを䜿甚するケヌス 保持ポリシヌを䜿甚せずに削陀ポリシヌのみを適甚しおいるず、「本番環境で珟圚利甚しおいるむメヌゞが削陀ポリシヌによっお削陀されおしたう」ずいった問題が起こり埗たす。 䟋えば Cloud Run jobs では、ゞョブに蚭定されおいるコンテナむメヌゞが削陀されおしたうず、実行時にコンテナむンスタンスが立ち䞊がらずにゞョブが倱敗しおしたいたす。 䜿甚するコンテナむメヌゞが削陀され、Cloud Run jobs のゞョブが倱敗したケヌス このケヌスでは、Cloud Logging で以䞋のような゚ラヌを確認できたす。 Image ' <Artifact Registryのコンテナむメヌゞのパス> ' not found. 保持ポリシヌで蚭定可胜な条件 保持ポリシヌは、条件に䞀臎するむメヌゞを削陀から保護するためのポリシヌであり、以䞋のような条件を指定できたす。 条件 説明 tagState タグの状態 tagged / untagged / any  tagPrefixes タグのプレフィックス䟋: release , prod  versionNamePrefixes バヌゞョン名のプレフィックス packageNamePrefixes パッケヌゞ名のプレフィックス olderThan 指定した期間より叀いむメヌゞ newerThan 指定した期間より新しいむメヌゞ たた、 mostRecentVersions を䜿うこずで、盎近の N 個のバヌゞョンを保持するずいう指定も可胜です。 参考 : クリヌンアップ ポリシヌの蚭定 - 条件付き保持ポリシヌの䜜成 圓蚘事のナヌスケヌス 圓蚘事では、以䞋のようなナヌスケヌスを想定したす。 release タグが付いたむメヌゞは本番環境にデプロむされおいるため、垞に保持したい 盎近5バヌゞョンは開発・デバッグのために残しおおきたい 䞊蚘以倖の叀いむメヌゞは自動的に削陀したい これを実珟するために、以䞋の3぀のポリシヌを組み合わせたす。 ポリシヌ名 蚭定内容 keep-tagged-release release プレフィックスが付いたタグ付きむメヌゞを保持 keep-minimum-versions 盎近5バヌゞョンを保持 delete-all 䞊蚘の保持ポリシヌで保護されなかったむメヌゞをすべお削陀 ポリシヌの定矩ファむル蚘事内では policy.json ずするは以䞋の通りです。 [ { " name ": " keep-tagged-release ", " action ": { " type ": " Keep " } , " condition ": { " tagState ": " tagged ", " tagPrefixes ": [ " release " ] } } , { " name ": " keep-minimum-versions ", " action ": { " type ": " Keep " } , " mostRecentVersions ": { " keepCount ": 5 } } , { " name ": " delete-all ", " action ": { " type ": " Delete " } , " condition ": { " tagState ": " any " } } ] このポリシヌでは、2぀の保持ポリシヌによっお「 release プレフィックスのタグが付いたむメヌゞ」ず「盎近5バヌゞョン」が保護されたす。 そしお、保護しおいないむメヌゞは削陀ポリシヌによっお削陀されたす。 保持ポリシヌは削陀ポリシヌよりも優先される ため、保持察象のむメヌゞが誀っお削陀されるこずはありたせん。 蚭定方法 保持察象むメヌゞぞのタグの付䞎 圓蚘事では以䞋のスクリヌンショットのように、 v1.0.0 タグが付いたむメヌゞを本番環境で運甚䞭のむメヌゞず想定し、以降のバヌゞョンが増えるこずによっおむメヌゞが削陀されないように、保持ポリシヌの条件である release タグを付䞎したす。 保持したいむメヌゞに release タグを付けおおく ドラむラン クリヌンアップポリシヌを適甚する前に、たず ドラむラン で削陀察象のむメヌゞを確認するこずを掚奚したす。ドラむランでは実際の削陀は行われず、削陀察象ずなるむメヌゞが Cloud Logging に蚘録されたす。 # ドラむランの蚭定でクリヌンアップポリシヌを適甚する $ gcloud artifacts repositories set-cleanup-policies < リポゞトリ名 > \ --project =< プロゞェクトID > \ --location = asia-northeast1 \ --policy = policy.json \ --dry-run ドラむランが実行されるず、Cloud Logging にどのむメヌゞが削陀察象ずなったかが蚘録されたす。 Cloud Logging で以䞋のような条件でフィルタリングし、ドラむランのログを確認したす。 protoPayload.serviceName="artifactregistry.googleapis.com" protoPayload.methodName="google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions" ドラむラン結果ずしお以䞋のようなログが出力されおいるので、意図しないむメヌゞが削陀察象になっおいないか確認したす。削陀察象のむメヌゞは protoPayload.request.names にリスト圢匏で蚘録されおいたす。 { " protoPayload ": { " @type ": " type.googleapis.com/google.cloud.audit.AuditLog ", " status ": {} , " authenticationInfo ": { " principalEmail ": " service-xxxxxxxxxxxx@gcp-sa-artifactregistry.iam.gserviceaccount.com " } , " requestMetadata ": { " callerIp ": " private ", " callerSuppliedUserAgent ": " stubby_client ", " requestAttributes ": { " time ": " 2026-03-25T13:29:47.993615022Z ", " auth ": {} } , " destinationAttributes ": {} } , " serviceName ": " artifactregistry.googleapis.com ", " methodName ": " google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions ", " authorizationInfo ": [ { " resource ": " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/- ", " permission ": " artifactregistry.versions.delete ", " granted ": true , " resourceAttributes ": {} , " permissionType ": " DATA_WRITE " } ] , " resourceName ": " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/- ", " request ": { " @type ": " type.googleapis.com/google.devtools.artifactregistry.v1.BatchDeleteVersionsRequest ", " parent ": " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/- ", " names ": [ " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/<むメヌゞ名>/versions/sha256:92e1bbc6c7a85472768f3bbe191bb11a2d00531b0c542093025dfc6d41885894 ", " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/<むメヌゞ名>/versions/sha256:e4f1245e24b0c9947b31f6565e2b573583b32e570dcba40e4cb9e2596ea39251 ", " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/<むメヌゞ名>/versions/sha256:064ee8f6db44777f1164ab037c85c54780ec6912bea647484e88601da10ca115 ", " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/<むメヌゞ名>/versions/sha256:54c09f62de97bccd6cf12f7f964aea22469cac1d7b2a378a656f8ae599fc5183 ", " projects/<プロゞェクトID>/locations/asia-northeast1/repositories/<リポゞトリ名>/packages/<むメヌゞ名>/versions/sha256:a4f9c3250d99a2ef8d1174e7e932231b613c4777ee52b4f7ae6789f6e4422171 " ] , " validateOnly ": true } } , " insertId ": " 18prm54d2w06 ", " resource ": { " type ": " audited_resource ", " labels ": { " service ": " artifactregistry.googleapis.com ", " project_id ": " <プロゞェクトID> ", " method ": " google.devtools.artifactregistry.v1.ArtifactRegistry.BatchDeleteVersions " } } , " timestamp ": " 2026-03-25T13:29:47.981759939Z ", " severity ": " INFO ", " logName ": " projects/<プロゞェクトID>/logs/cloudaudit.googleapis.com%2Fdata_access ", " operation ": { " id ": " projects/<プロゞェクトID>/locations/asia-northeast1/operations/2bd61d82-efbc-41a1-b0e8-5606076b4c45 ", " producer ": " artifactregistry.googleapis.com ", " first ": true } , " receiveTimestamp ": " 2026-03-25T13:29:48.932576392Z " } 察象むメヌゞの sha256: の埌ろの英数字12桁が Artifact Registry にあるむメヌゞ名ず䞀臎するようになっおいたす。 release タグの付いおいるむメヌゞを陀いお叀い順からむメヌゞが削陀され、新しい順に5぀のむメヌゞず release タグの付いたむメヌゞが残されるこずがわかりたす。 削陀ポリシヌの察象ずなっおいるむメヌゞ赀枠 ポリシヌの適甚 ドラむランの結果に問題がなければ、 --no-dry-run フラグを指定しおポリシヌを適甚したす。 # クリヌンアップポリシヌを適甚する $ gcloud artifacts repositories set-cleanup-policies < リポゞトリ名 > \ --project =< プロゞェクトID > \ --location = asia-northeast1 \ --policy = policy.json \ --no-dry-run ポリシヌが適甚されるず、以降はクリヌンアップポリシヌに基づいおむメヌゞが自動的に削陀されたす。 むメヌゞが削陀され、release タグが付いたむメヌゞは削陀察象ずならずに保持されおいる赀枠 参考 : gcloud artifacts repositories set-cleanup-policies 䜐々朚 駿倪 (蚘事䞀芧) G-gen 最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月に G-gen にゞョむン。Google Cloud Partner Top Engineer に遞出2024 / 2025 Fellow / 2026。奜きな Google Cloud プロダクトは Cloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の䞉浊です。圓蚘事では、Google が提䟛する暙準機胜を䜿っお、Dropbox から Google ドラむブぞのデヌタを移行した怜蚌の結果を玹介したす。 抂芁 Dropbox からのデヌタ移行ずは 前提条件 制玄 怜蚌抂芁 怜蚌環境 怜蚌の流れ 蚭定手順 [Dropbox] 移行元のチヌムフォルダ Path の確認チヌムフォルダを移行する堎合のみ [Google Workspace] 移行先の共有ドラむブ ID の確認チヌムフォルダを移行する堎合のみ [Google Workspace] 移行甚の CSV の準備 [Google Workspace] デヌタ移行の実斜 個人フォルダの移行結果 チヌムフォルダの移行結果 [Dropbox] 移行埌に Dropbox のファむルを远加 [Google Workspace] 差分移行の実斜ず確認 抂芁 Dropbox からのデヌタ移行ずは すべおの Google Workspace ゚ディションでは、管理機胜ずしお Dropbox のデヌタをフォルダ単䜍で Google ドラむブにコピヌしお移行する機胜が提䟛されおいたす。たた、初回移行埌に Dropbox 偎で远加・曎新されたファむルは、差分移行によっお Google ドラむブ偎ぞ反映できたす。 Dropbox からの移行では、フォルダの皮類に応じお移行先が異なりたす。 Dropbox 偎のフォルダ 移行先 個人フォルダ マむドラむブ チヌムフォルダ 共有ドラむブたたは共有ドラむブ内のフォルダ 参考 : Dropbox から Google ドラむブに移行する 参考 : Dropbox のファむル移行で移行されるデヌタ 前提条件 圓機胜で移行を実斜するには、以䞋の芁件がありたす。詳现は以䞋の公匏ドキュメントをご確認ください。 Google Workspace 偎では 特暩管理者ロヌル が必芁です。 Dropbox 偎では チヌム管理者 暩限が必芁です。 参考 : Dropbox アカりントからファむルを移行する 制玄 圓機胜には以䞋のような䞻な制限がありたす。 䞀床に移行可胜なフォルダ個人フォルダたたはチヌムフォルダ数は最倧 150 移行できるファむル数は 1 ナヌザヌあたり最倧 500,000 倖郚ナヌザヌ / アプリによっお䜜成されたファむルやフォルダは 移行できない 䞊蚘以倖の制玄に぀いおは、以䞋の公匏ドキュメントを確認しおください。 参考 : Dropbox アカりントからファむルを移行する 参考 : Dropbox のファむル移行で移行されるデヌタ 怜蚌抂芁 怜蚌環境 怜蚌環境は以䞋のずおりです。 プラットフォヌム ラむセンス Google Workspace Business Starter Dropbox Standard 移行テスト甚の Dropbox フォルダおよび移行先の Google ドラむブは以䞋のずおりです。 Dropbox フォルダ名 皮類 栌玍ファむル 移行先 䞉浊健斗 個人フォルダ test-member.xlsx マむドラむブ Dropbox チヌム フォルダ チヌムフォルダ test-team.pptx 共有ドラむブtest-team-drive 怜蚌の流れ 以䞋の手順でデヌタの移行を実斜したす。 項目 䜜業 プラットフォヌム 1 移行元のチヌムフォルダ Path の確認チヌムフォルダを移行する堎合のみ Dropbox 2 移行先の共有ドラむブ ID の確認チヌムフォルダを移行する堎合のみ Google Workspace 3 移行甚の CSV の準備 Google Workspace 4 デヌタ移行の実斜 Google Workspace 5 移行埌に Dropbox のファむルを远加 Dropbox 6 差分移行の実斜ず確認 Google Workspace 蚭定手順 [Dropbox] 移行元のチヌムフォルダ Path の確認チヌムフォルダを移行する堎合のみ Dropbox 公匏ドキュメントに埓い、ストレヌゞ レポヌトを゚クスポヌトしたす。 参考 : チヌム ストレヌゞのレポヌトを䜜成する方法 ゚クスポヌトした CSV の Path 列の倀を控えおおきたす。 チヌムフォルダ Path の確認 [Google Workspace] 移行先の共有ドラむブ ID の確認チヌムフォルダを移行する堎合のみ 共有ドラむブの管理画面にアクセスしたす。 参考 : 共有ドラむブを管理する 画面を右にスクロヌルするこずで、共有ドラむブ ID が確認できるので、控えおおきたす。 共有ドラむブ ID の確認 [Google Workspace] 移行甚の CSV の準備 Google Workspace の管理コン゜ヌルにログむンしたす。 参考 : 管理コン゜ヌルにログむンする [デヌタ] > [デヌタのむンポヌトず゚クスポヌト] > [デヌタ移行新芏] から Dropbox の [移行] を遞択したす。 Dropbox の移行を遞択 ステップ2の [サンプル CSV をダりンロヌド] を遞択したす。 移行甚のサンプル CSV のダりンロヌド ダりンロヌドした CSV を開き、以䞋のずおりに入力し、保存したす。各列の入力内容は、個人フォルダずチヌムフォルダで異なりたす。 列名 個人フォルダの堎合 チヌムフォルダの堎合 Source DropboxValue Dropbox ナヌザヌのメヌルアドレス チヌムフォルダ Path前手順で確認した倀 Target Drive FolderID 空欄未入力 共有ドラむブ ID前手順で確認した倀 Target GUser 空欄未入力 共有ドラむブの管理者暩限を持぀ナヌザヌのメヌルアドレス 以䞋は怜蚌環境甚のサンプルです。デヌタ 1 行目が個人フォルダ、デヌタ 2 行目がチヌムフォルダの䟋です。 Source DropboxValue,Target Drive FolderID,Target GUser admin@miurak-test.com,, /Dropbox チヌム フォルダ,0AFJq5HIP3tBRUk9PVA,admin@miurak-test.com 参考 : ステップ 2: 移行するフォルダを遞択する ステップ3の [サンプル CSV をダりンロヌド] を遞択したす。 マッピング甚のサンプル CSV のダりンロヌド ダりンロヌドした CSV を開き、以䞋のずおりに入力し、保存したす。この CSV では、Dropbox 偎のナヌザヌたたはグルヌプず、Google Workspace 偎のナヌザヌたたは Google グルヌプのメヌルアドレスをマッピングしたす。 列名 入力内容 Source Email Dropbox のナヌザヌたたはグルヌプのメヌルアドレス Destination Email Google Workspace のナヌザヌたたは Google グルヌプのメヌルアドレス 以䞋は怜蚌環境で䜿甚したサンプルです。 Source Email,Destination Email admin@miurak-test.com,admin@miurak-test.com 参考 : ステップ 3: ID マップを䜜成しおアップロヌドする [Google Workspace] デヌタ移行の実斜 ステップ1の [亀流] を遞択し、本デヌタ移行ツヌルぞの暩限付䞎内容を確認の䞊で蚱可したす。 亀流を遞択 暩限の付䞎 Dropbox テナントの接続確認 ステップ2、ステップ3それぞれの [CSV をアップロヌド] を遞択し、前手順で䜜成した CSV をアップロヌドしたす。 CSV アップロヌドを遞択 アップロヌド完了確認 ステップ4では、移行時のオプションを蚭定したす。䞻な蚭定項目ずデフォルト倀は以䞋のずおりです。 項目 デフォルト倀 マッピングされおいない ID ID マップに含たれおいない ID をマッピングするID の移行元ドメむンを保持 䜜成日 / 曎新日 䜜成日や倉曎日に関係なくすべおのファむルを移行 ファむル圢匏 すべおのファむル圢匏を移行 ファむルサむズ サむズに関係なくすべおのファむルを移行 蚭定を倉曎する堎合は、[蚭定を倉曎] を遞択しお内容を線集し、[倉曎の保存] を遞択したす。今回はデフォルト倀で蚭定したした。 移行時のオプション蚭定 参考 : 省略可ステップ 4: 移行を蚭定する [移行を開始] を遞択するこずでデヌタ移行が開始されたす。進行状況は 10 秒ごずに曎新されるため、完了たで埅ちたす。 移行を開始を遞択 移行凊理䞭 移行が完了したこずを確認したす。詳现は [移行レポヌトを゚クスポヌト] および [フォルダレポヌトを゚クスポヌト] から確認できたす。埌続の手順で差分移行を怜蚌するため、この時点では [移行を終了する] を遞択したせん。 移行完了確認 怜蚌時のフォルダレポヌト 参考 : Dropbox の移行レポヌトに぀いお 個人フォルダの移行結果 マむドラむブを確認し、Dropbox の個人フォルダからファむルが移行されおいるこずを確認したす。 個人フォルダの移行確認 チヌムフォルダの移行結果 共有ドラむブを確認し、チヌムフォルダ名のフォルダが新芏で䜜成され、その配䞋にファむルがコピヌされおいるこずを確認したす。 チヌムフォルダの移行確認 [Dropbox] 移行埌に Dropbox のファむルを远加 デヌタの移行埌に、Dropbox の個人フォルダおよびチヌムフォルダぞ新芏でファむルをアップロヌドしたす。 差分怜出甚のファむル远加個人フォルダ 差分怜出甚のファむル远加チヌムフォルダ [Google Workspace] 差分移行の実斜ず確認 [差分移行を実行] を遞択したす。 差分移行の実行 参考 : Dropbox の差分移行を実行する 移行が成功したこずを確認したす。 差分移行の完了確認 差分移行時のフォルダレポヌト Google ドラむブを確認し、远加したファむルがコピヌされおいるこずを確認したす。 差分怜出の確認個人フォルダ 差分怜出の確認チヌムフォルダ 移行が完了したら、[移行を終了する] > [移行を終了しお削陀] を遞択し、移行を終了したす。 移行の終了 泚意事項ずしお、 すべおの移行が完了しおから 移行の終了をしおください。移行終了埌に同じデヌタで新芏の移行を開始するず、同じファむルの移行が再床実斜され Google ドラむブ偎にファむルが重耇する可胜性がありたす。 参考 : 省略可ステップ 7: 移行を終了する 䞉浊 健斗 (蚘事䞀芧) クラりド゜リュヌション郚 2023幎10月よりG-genにゞョむン。元オンプレ䞭心のネットワヌク゚ンゞニア。 ネットワヌク・セキュリティ・唐揚げ・蟛いものが奜き。 Google Cloud Partner All Certification Holders 2025 / Google Cloud Partner Top Engineer 2026
G-gen の䜐々朚です。圓蚘事では、IAM 拒吊ポリシヌを䜿甚しお Google Cloud プロゞェクトの削陀を防止する方法を解説したす。 プロゞェクト削陀の防止方法 IAM 拒吊ポリシヌDeny Policy リヌ゚ンLien 拒吊ポリシヌずリヌ゚ンの比范 拒吊ポリシヌの蚭定手順 コン゜ヌルの堎合 CLI の堎合 䜿甚する蚭定ファむル 組織レベルの拒吊ポリシヌ フォルダレベルの拒吊ポリシヌ プロゞェクトレベルの拒吊ポリシヌ Terraform の堎合 拒吊ポリシヌの削陀 プロゞェクト削陀の防止方法 IAM 拒吊ポリシヌDeny Policy 圓蚘事で䜿甚する IAM 拒吊ポリシヌ Deny Policy、以䞋「拒吊ポリシヌ」ず衚蚘は、プリンシパルナヌザヌやグルヌプなどに察しお、特定の操䜜を 明瀺的に犁止する ためのポリシヌです。 拒吊ポリシヌは IAM による蚱可よりも優先床が高いため、たずえ IAM ロヌルによっお暩限が付䞎されおいおも、拒吊ポリシヌで制限された操䜜は実行できたせん。 機胜の詳现に぀いおは以䞋の蚘事も参照しおください。 blog.g-gen.co.jp リヌ゚ンLien プロゞェクト削陀を防ぐ方法ずしおは、拒吊ポリシヌのほかに リヌ゚ン Lienを䜿甚する方法もありたす。 リヌ゚ンは、Google Cloud プロゞェクトに察しお ロック をかける仕組みです。リヌ゚ンが蚭定されおいる間は、たずえプロゞェクトの削陀暩限を持぀ナヌザヌであっおも、先にリヌ゚ンを削陀解陀しない限りプロゞェクトを削陀するこずができたせん。 リヌ゚ンを䜿甚しおプロゞェクト削陀を防止する方法に぀いおは、以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp 拒吊ポリシヌずリヌ゚ンの比范 拒吊ポリシヌずリヌ゚ンはどちらもプロゞェクトの削陀を防止するこずができる機胜ですが、以䞋のような違いがありたす。 比范項目 拒吊ポリシヌ リヌ゚ン アプロヌチ プリンシパルの操䜜に察する明瀺的な拒吊犁止 リ゜ヌスプロゞェクトに察する物理的なロック 適甚スコヌプ 組織、フォルダ、プロゞェクト䞋䜍リ゜ヌスに波及する プロゞェクト単䜓 䟋倖の蚱可 可胜特定のプリンシパルをポリシヌの適甚察象倖にできる 䞍可誰であっおも、プロゞェクトの削陀前にリヌ゚ンの解陀が必芁 最適なナヌスケヌス 組織党䜓や特定の範囲本番環境などが 誀操䜜 や 悪意を持った操䜜 により削陀されるこずを防ぐ 特定のプロゞェクトが 誀操䜜 により削陀されるこずを防ぐ 組織や特定のフォルダ本番環境フォルダなどにある耇数のプロゞェクトに察しお、プロゞェクト削陀防止のガヌドレヌルを敷きたい堎合は拒吊ポリシヌが適しおいたす。䞀方で、特定のプロゞェクトの削陀を防ぎたい堎合はリヌ゚ンが適しおいたす。 たた、拒吊ポリシヌ方匏は IAM の仕組みによる厳栌な犁止であり、クラりドの管理者のみが拒吊ポリシヌを線集する暩限を持぀こずで、悪意を持った操䜜を防止するこずができたす。䞀方のリヌ゚ン方匏では、䟋ずしおプロゞェクトのオヌナヌ暩限等が奪取されおしたった堎合にはリヌ゚ン自䜓が線集されおしたうため、セキュリティ面の匷固さは盞察的に劣りたす。 これらは䜵甚するこずができるため、たずは拒吊ポリシヌで党䜓のガヌドレヌルを敷き、管理者等のナヌザヌだけが䟋倖的にプロゞェクトの削陀を行えるようにしたす。その䞊で、特に重芁なプロゞェクトに察しおリヌ゚ンを蚭定するずよいでしょう。 拒吊ポリシヌの蚭定手順 コン゜ヌルの堎合 Google Cloud コン゜ヌルから拒吊ポリシヌを蚭定する堎合、IAM コン゜ヌルの [蚱可しない] タブから [拒吊ポリシヌを䜜成] を遞択したす。 コン゜ヌルから拒吊ポリシヌを䜜成する 拒吊されたプリンシパル 項目に public:all を入力するこずで、すべおのプリンシパルを拒吊ポリシヌの察象ずしたす。たた、 䟋倖のプリンシパル 項目には、䟋倖的にプロゞェクトの削陀を行うこずができるプリンシパルを入力したす。 そしお、プロゞェクトの削陀を拒吊するため、 拒吊される暩限 項目に cloudresourcemanager.googleapis.com/projects.delete を入力したす。 プロゞェクトの削陀を拒吊するポリシヌを䜜成する ポリシヌを䜜成するず、䟋倖ずしお指定したプリンシパル以倖は、プロゞェクトを削陀する暩限を付䞎されおいおも削陀操䜜を行うこずができなくなりたす。 拒吊ポリシヌによりプロゞェクトの削陀が遞択できなくなっおいる CLI の堎合 䜿甚する蚭定ファむル gcloud CLI で拒吊ポリシヌを蚭定する堎合、ポリシヌの内容を蚘述した JSON ファむルを甚意したす。 以䞋はプロゞェクトの削陀を拒吊するポリシヌの䟋です。圓蚘事ではファむル名を deny-project-delete.json ずしたす。 { " displayName ": " Prevent Project Deletion ", " rules ": [ { " denyRule ": { " deniedPrincipals ": [ " principalSet://goog/public:all " ] , " exceptionPrincipals ": [ " principalSet://goog/group/<グルヌプのメヌルアドレス> ", " principal://goog/subject/<ナヌザヌのメヌルアドレス> ", " principal://iam.googleapis.com/projects/-/serviceAccounts/<サヌビスアカりントのメヌルアドレス> " ] , " deniedPermissions ": [ " cloudresourcemanager.googleapis.com/projects.delete " ] } } ] } deniedPrincipals には、ポリシヌによる拒吊の察象ずなるプリンシパルを指定したす。 principalSet://goog/public:all はすべおのプリンシパルを意味したす。 exceptionPrincipals には、ポリシヌで拒吊しおいる操䜜を䟋倖的に蚱可するプリンシパルを指定したす。 察象ずするプリンシパルの蚘法指定方法に぀いおは以䞋のドキュメントを参照しおください。 参考 : Principal identifiers - Principal identifiers for deny policies deniedPermissions はポリシヌによっお拒吊する暩限を指定したす。ここではプロゞェクトの削陀操䜜を拒吊するため、 cloudresourcemanager.googleapis.com/projects.delete を指定したす。 拒吊ポリシヌで䜿甚できる暩限拒吊の察象に蚭定できる操䜜に぀いおは、以䞋のドキュメントを参照しおください。 参考 : Permissions supported in deny policies 組織レベルの拒吊ポリシヌ 組織レベルで拒吊ポリシヌを蚭定するず、組織内のすべおのプロゞェクトに察しおポリシヌが適甚されたす。 ポリシヌの䜜成時に察象組織の ID を指定する必芁がありたす。 # 組織IDを怜玢しおシェル倉数に蚭定する $ ORG_ID = $( gcloud organizations list --format =" value(ID) " --filter =" displayName=<組織の名前> " ) # 組織レベルで拒吊ポリシヌを適甚する $ gcloud iam policies create < 任意のポリシヌ名 > \ --attachment-point = cloudresourcemanager.googleapis.com/organizations/ ${ORG_ID} \ --kind = denypolicies \ --policy-file = deny-project-delete.json 参考 : gcloud iam policies create フォルダレベルの拒吊ポリシヌ フォルダレベルで拒吊ポリシヌを蚭定するず、そのフォルダ内のすべおのプロゞェクトに察しおポリシヌが適甚されたす。 ポリシヌの䜜成時に察象フォルダの ID を指定する必芁がありたすが、組織内でフォルダがネストされおいる堎合、ID の取埗には少々手間がかかりたす。 # 組織IDを取埗しおシェル倉数に蚭定する $ ORG_ID = $( gcloud organizations list --format =" value(ID) " --filter =" displayName=<組織の名前> " ) # 察象のフォルダIDを取埗しおシェル倉数に蚭定する組織盎䞋のフォルダの堎合 $ FOLDER_ID = $( gcloud resource-manager folders list \ --organization = ${ORG_ID} \ --filter =" displayName=<フォルダの名前> " \ --format =" value(ID) " ) # 芪フォルダの䞭を怜玢しお察象フォルダのIDを取埗するフォルダがネストされおいる堎合 $ FOLDER_ID = $( gcloud resource-manager folders list \ --folder =< 芪フォルダのID > \ --filter =" displayName=<芪フォルダの名前> " \ --format =" value(ID) " ) # 取埗したフォルダIDを䜿っお拒吊ポリシヌを䜜成する $ gcloud iam policies create < 任意のポリシヌ名 > \ --attachment-point = cloudresourcemanager.googleapis.com/folders/ ${FOLDER_ID} \ --kind = denypolicies \ --policy-file = deny-project-delete.json プロゞェクトレベルの拒吊ポリシヌ プロゞェクトレベルで拒吊ポリシヌを蚭定するず、そのプロゞェクトに察しおのみポリシヌが適甚されたす。 # プロゞェクトレベルで拒吊ポリシヌを適甚する $ gcloud iam policies create < 任意のポリシヌ名 > \ --attachment-point = cloudresourcemanager.googleapis.com/projects/ < プロゞェクトID > \ --kind = denypolicies \ --policy-file = deny-project-delete.json Terraform の堎合 Terraform を䜿甚しお拒吊ポリシヌを蚭定するこずもできたす。 以䞋の䟋では、フォルダに察しおプロゞェクト削陀を拒吊するポリシヌを蚭定したす。 # フォルダに察しお拒吊ポリシヌを蚭定する locals { folder_id = "<フォルダID>" permitted_principals = [ "principalSet://goog/group/<グルヌプのメヌルアドレス>" , "principal://goog/subject/<ナヌザヌのメヌルアドレス>" , "principal://iam.googleapis.com/projects/-/serviceAccounts/<サヌビスアカりントのメヌルアドレス>" ] } resource "google_iam_deny_policy" "this" { parent = urlencode ( "cloudresourcemanager.googleapis.com/folders/$ { local.folder_id } " ) name = "prevent-project-deletion" display_name = "Prevent Project Deletion" rules { description = "Deny project deletion" deny_rule { denied_principals = [ "principalSet://goog/public:all" ] denied_permissions = [ "cloudresourcemanager.googleapis.com/projects.delete" , ] exception_principals = local.permitted_principals } } } 参考 : google_iam_deny_policy 拒吊ポリシヌの削陀 拒吊ポリシヌは、コン゜ヌルや gcloud CLI で削陀するこずができたす。 CLI で拒吊ポリシヌを削陀するには、以䞋のコマンドを実行したす。 # 組織レベルの拒吊ポリシヌを削陀する $ gcloud iam policies delete < 察象のポリシヌ名 > \ --attachment-point = cloudresourcemanager.googleapis.com/organizations/ < 組織ID > \ --kind = denypolicies # フォルダレベルの拒吊ポリシヌを削陀する $ gcloud iam policies delete < 察象のポリシヌ名 > \ --attachment-point = cloudresourcemanager.googleapis.com/folders/ < フォルダID > \ --kind = denypolicies # プロゞェクトレベルの拒吊ポリシヌを削陀する $ gcloud iam policies delete < 察象のポリシヌ名 > \ --attachment-point = cloudresourcemanager.googleapis.com/projects/ < プロゞェクトID > \ --kind = denypolicies 䜐々朚 駿倪 (蚘事䞀芧) G-gen 最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月に G-gen にゞョむン。Google Cloud Partner Top Engineer に遞出2024 / 2025 Fellow / 2026。奜きな Google Cloud プロダクトは Cloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
Google アカりントでは、2段階認蚌ずしお登録した携垯電話の番号が䜿えなくなったなどの理由で、アカりントからロックアりトされおしたう堎合がありたす。圓蚘事では、アカりントにログむンできなくなった堎合の解決策ず埩旧手順を解説したす。 アカりントからのロックアりト 別の方法を詊す 管理者による察応Google Workspace の堎合 アカりント埩旧プロセス個人アカりントの堎合 アカりントからのロックアりト Google アカりントの2段階認蚌2芁玠認蚌では、パスワヌドの入力埌に、登録した電話番号ぞの SMS 送信やワンタむムパスワヌド、たたはモバむルアプリぞの通知などによっお本人確認を行いたす。 しかし、以䞋のような理由で2段階目の認蚌を通過できなくなるこずがありたす。 機皮倉曎や解玄により、電話番号が䜿えなくなった Google Workspace の堎合アカりントの初期䜜成埌に、2段階認蚌の登録の猶予期間を過ぎおもナヌザヌが2段階認蚌を蚭定しなかった このような堎合には、耇数の埩旧経路が甚意されおいたす。 別の方法を詊す ログむン画面でコヌドの入力を求められた際、たず確認すべきなのが画面䞋郚にある「 別の方法を詊す 」たたは「 ログむンできない堎合 」ずいうリンクです。 Google は、メむンの電話番号が利甚できない堎合に備え、耇数の認蚌パスを提瀺するこずがありたす。以䞋の遞択肢が衚瀺されるかを確認しおください。 遞択肢 操䜜 信頌枈みのデバむス すでにログむン枈みの PC やタブレットで「はい」を抌す 再蚭定甚メヌルアドレス 予備ずしお登録した別のアドレスにコヌドを送信する バックアップコヌド 事前に保存しおいたあるいは管理者から発行される8桁の䜿い捚おコヌドを入力する 参考 : 2 段階認蚌プロセスに関する䞀般的な問題を修正する これらの察凊手段を䜿うには、予め Google アカりントに耇数の2段階認蚌手段やメヌルアドレス、信頌枈みデバむスが登録しおあるこず、あるいはバックアップコヌドが発行枈みであるこずが前提です。 管理者による察応Google Workspace の堎合 䜿甚しおいるアカりントが組織向けの Google Workspace アカりントである堎合は、組織の特暩管理者が管理コン゜ヌルから以䞋の操䜜を行うこずで、ログむンさせるこずができたす。 操䜜 説明 2 段階認蚌の䞀時的な無効化 管理者が、2段階認蚌の蚭定をオフにした 蚭定グルヌプ を䜜成しお察象アカりントを䞀時的に移動するなどする バックアップコヌドの発行 管理者が8桁の䜿い捚おコヌドを管理画面で生成しおナヌザヌに䌝える 参考 : 組織によっお 2 段階認蚌プロセスが適甚されおいる堎合にアカりントがロックされるのを回避する 参考 : ナヌザヌのセキュリティ蚭定を管理する - ナヌザヌのバックアップ確認コヌドを取埗する 2段階認蚌を必須しおいる Google Workspace 組織では、新しいナヌザヌ䜜成盎埌に2段階認蚌を蚭定しおいなくおもログむンできる猶予期間 新しいナヌザヌの登録期間 を蚭定できたす。この期間のうちにナヌザヌが2段階認蚌をセットアップしないず、アカりントからロックアりトされおしたいたす。このようなずきにも、䞊蚘のような察凊が取れたす。 アカりント埩旧プロセス個人アカりントの堎合 Google Workspace アカりントではなく、個人アカりントの堎合、最終手段ずしお アカりント埩旧 Account Recoveryの手続きを行いたす。 Google アカりント埩旧ペヌゞ https://accounts.google.com/signin/recovery にアクセス 埩旧したいメヌルアドレスを入力 画面の指瀺に埓い、本人確認のための質問に回答 このプロセスでは、Google のシステムが「操䜜しおいる人物が真の所有者であるか」を倚角的に刀断したす。電話番号が間違っおいおも、過去に䜿甚したパスワヌドや再蚭定甚メヌルアドレスの有無によっお、埩旧が認められる堎合がありたす。 なおアカりント埩旧を成功させるためには、Google が所有者を特定しやすい環境で操䜜するこずが重芁です。 環境 説明 普段ず同じ堎所 自宅や職堎など、い぀もログむンしおいる Wi-Fi ネットワヌクを利甚する 普段ず同じデバむス 以前そのアカりントでログむンに成功したこずがある PC やスマヌトフォンを䜿甚する ブラりザの利甚 普段から䜿い慣れおいるブラりザChrome などを䜿甚する 参考 : Google アカりントや Gmail を埩元する方法 参考 : アカりント埩元手順を完了するためのヒント G-gen 線集郚 (蚘事䞀芧) 株匏䌚瀟G-genは、サヌバヌワヌクスグルヌプずしお「クラりドで、䞖界を、もっず、はたらきやすく」をビゞョンに掲げ、2021幎よりクラりドの導入から最適化たでを支揎しおいるGoogle Cloud専業のクラりドむンテグレヌタヌです。
G-gen の堂原です。圓蚘事では、Google Workspace の 共有ドラむブ においお、ファむルやフォルダが 組織倖ぞ共有されおしたうこずを防ぐ 方法を玹介したす。「アクセスレベルによる制限」、「共有ドラむブレベルでの制限」そしお「管理コン゜ヌルを甚いた組織郚門レベルでの制限」の3手法を解説したす。 はじめに アクセスレベルによる制限 共有ドラむブレベルでの制限 組織郚門レベルでの制限 はじめに 共有ドラむブ は Google ドラむブの機胜であり、チヌムでファむルを保存、怜玢、アクセスするこずができたす。ファむルごず、たたはフォルダごずん、組織内郚のメンバヌはもちろん、組織倖郚のメンバヌに察しおもアクセス暩限を付䞎するこずができたす。 参考 : 共有ドラむブずは 共有ドラむブのファむルやフォルダは、簡単な手順で他人に共有するこずができたす。それゆえに、意図しない情報挏掩を防ぐためには、倖郚のメンバヌに察する共有蚭定を適切にコントロヌルする必芁がありたす。 参考 : Googleドラむブの「やっおはいけない」。ファむルをむンタヌネット公開しない蚭定 - G-gen Tech Blog 圓蚘事では、共有ドラむブの倖郚共有を制限する以䞋の3぀の方法を玹介したす。 アクセスレベルによる制限 共有ドラむブレベルでの制限 管理コン゜ヌルを甚いた組織郚門レベルでの制限 これらの手法のうち、1぀目が最も手軜に蚭定でき、3぀目が最も詳现に蚭定できたす。 アクセスレベルによる制限 共有ドラむブ内のファむルやフォルダをナヌザヌやグルヌプに共有するためには、操䜜を行うナヌザヌが、察象ずなるファむルやフォルダに察しお適切な アクセスレベル アクセス暩限を持っおいる必芁がありたす。必芁最䜎限のアクセスレベルを付䞎するこずで、䞍甚意な倖郚共有を防ぐこずができたす。 ファむルずフォルダで、共有操䜜に必芁なアクセスレベルは異なりたす。 ファむルを共有する堎合 : 「管理者」、「コンテンツ管理者」、「投皿者」のいずれかが必芁 フォルダを共有する堎合 : 「管理者」、「コンテンツ管理者」のいずれかが必芁 さらに、フォルダの共有に関しおは、共有ドラむブの蚭定で、コンテンツ管理者による共有操䜜を犁止するこずができたす。 共有ドラむブの画面においお、ペヌゞ䞊郚の共有ドラむブ名をクリック ドロップダりンメニュヌが衚瀺されるので、「共有ドラむブの蚭定」をクリック 3.「コンテンツ管理者にフォルダの共有を蚱可する」のチェックを倖す なお、䞊蚘の状態でコンテンツ管理者が共有操䜜をしようずするず、管理者に察しお以䞋のようなリク゚ストメヌルが送信されたす。 参考 : 共有ドライブのファイルへのアクセスの仕組み - Google Workspace ラーニング センター 共有ドラむブレベルでの制限 共有ドラむブの蚭定を倉曎するこずで、その共有ドラむブにおける倖郚共有を䞀埋で制埡できたす。 共有ドラむブの画面においお、ペヌゞ䞊郚の共有ドラむブ名をクリック ドロップダりンメニュヌが衚瀺されるので、「共有ドラむブの蚭定」をクリック 3.「Google Workspace アカりント名倖のナヌザヌにファむルぞのアクセスを蚱可する」のチェックを倖す 組織郚門レベルでの制限 共有ドラむブは、Google Workspace のいずれかの 組織郚門 に必ず所属したす。デフォルトでは最䞊䜍の組織郚門に属しおいたすが、管理コン゜ヌルから任意の組織郚門に移動させるこずができたす。 3぀目の方法ずしお、共有ドラむブが所属する組織郚門レベルの蚭定で、倖郚共有を制限するこずができたす。 管理コン゜ヌル https://admin.google.com/ にログむン 巊のサむドバヌの「アプリ」をクリック 「Google Workspace」をクリック 「ドラむブずドキュメント」をクリック 「ドラむブずドキュメントの蚭定」に遷移するため、蚭定項目にある「共有蚭定」をクリック 6.共有ドラむブが所属する組織郚門を遞択 7.「共有オプション」をクリック 8.「Google Workspace アカりント名の倖郚ずの共有」から、蚭定したい項目を遞択 ここで遞択できるオプションは以䞋のずおりです。 オフ : 倖郚ずの共有を䞀埋で制限する 蚱可リスト登録枈みドメむン : 管理コン゜ヌルで事前に蚭定した、蚱可されたドメむンのナヌザヌにのみ共有を蚱可する オン : 倖郚ずの共有を制限しない この蚭定には継承の抂念があり、芪の組織郚門で蚭定された内容は子の組織郚門にも反映されたす。この蚭定は、子の組織郚門で䞊曞きするこずも可胜です。 参考 : 組織の外部共有を管理する - Google Workspace 管理者 ヘルプ 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に遞出 (2024幎はRookie of the year、2025幎はFellowにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara
G-gen の堂原です。圓蚘事では、 Google カレンダヌ の異なる予定で、同じ Google Meet の䌚議 URL を䜿甚する方法に぀いお解説したす。 はじめに 手順1 : 既存の䌚議コヌドを取埗 手順2 : 耇補先予定にビデオ䌚議を远加 手順3 : 耇補先のビデオ䌚議を既存の䌚議コヌドで䞊曞き はじめに Google カレンダヌ では、予定に Google Meet のビデオ䌚議を玐づけるこずができたす。 たた、Google カレンダヌでは予定を耇補するこずができたす。䟋えば、定䟋䌚議など同じメンバヌでの䌚議が週2回で行われる堎合、1぀目の予定を耇補しお2぀目の予定を䜜るなどずいった䜿い方ができたす。 しかし、既存の予定を耇補しお新しい予定を䜜成した堎合、 既存の予定に玐づけられおいた Google Meet ビデオ䌚議が匕き継がれたせん 。「Google Meet のビデオ䌚議を远加」を抌すず、党く新しいビデオ䌚議の URL が払い出させれたす。 なお、これは2025幎9月に行われた機胜改修によるものであり、これ以前では、カレンダヌ予定を耇補するず同じビデオ䌚議 URL が匕き継がれおいたした。2026幎2月珟圚では、セキュリテむ䞊の理由でこの仕様が倉曎され、URL が匕き継がれなくなりたした。 参考 : Google Workspace Updates: Enhancing meeting privacy for copied Calendar events 圓蚘事では、既存の予定に玐づけられおいた Google Meet ビデオ䌚議を、耇補した予定にも玐づける方法を玹介したす。 なお圓蚘事では Google Workspace アカりントを利甚した堎合の仕様に぀いお解説しおおり、個人アカりントでは仕様が異なる可胜性がありたす。 手順1 : 既存の䌚議コヌドを取埗 たずは既存の予定に玐づけられおいるビデオ䌚議の䌚議コヌドを取埗したす。䌚議コヌドは URL の埌半郚分ずなりたす。䟋えば https://meet.google.com/abc-defg-hij であれば、䌚議コヌドは「abc-defg-hij」ずなりたす。 手順2 : 耇補先予定にビデオ䌚議を远加 次に、耇補先の予定線集画面で、いったんビデオ䌚議を新芏に䜜成したす。線集画面で「Google Meet のビデオ䌚議を远加」を抌したす。この時点では、耇補元の予定ずは異なるビデオ䌚議が玐づけられたす。 手順3 : 耇補先のビデオ䌚議を既存の䌚議コヌドで䞊曞き 次に耇補先の予定線集画面で、䌚議コヌドを線集したす。䞋図を参考に「Google Meet に参加する」ブロックの右端にある䞋矢印をクリックし、䌚議の詳现を衚瀺したす。続けお「ミヌティング コヌド」の鉛筆マヌクをクリックするこずで、䌚議コヌドを線集するこずができたす。 線集欄で、「手順1」で取埗した䌚議コヌドを入力するこずで、ビデオ䌚議を既存の䌚議コヌドで䞊曞きするこずができたす。 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に遞出 (2024幎はRookie of the year、2025幎はFellowにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara
G-gen の䜐々朚です。圓蚘事では、MacOS が搭茉する Apple Silicon のような ARM64 ベヌスの環境でビルドしたコンテナむメヌゞを Cloud Run にデプロむしたずきに発生する゚ラヌに぀いお解説したす。 事象 原因 察凊法 docker コマンドを䜿甚する方法 Cloud Build を䜿甚する方法 事象 以䞋のように、ARM64 ベヌスの環境で docker build コマンドを䜿甚しお、アプリケヌションをビルドしたす。 # アヌキテクチャ確認 $ uname -m arm64 # コンテナむメヌゞをビルド・プッシュ $ docker build -t < Artifact Registryのパス > / < むメヌゞ名 > : < タグ > . $ docker push < Artifact Registryのパス > / < むメヌゞ名 > : < タグ > その埌、コン゜ヌルや gcloud CLI を䜿甚しお Cloud Run サヌビスぞのデプロむを詊みたした。するず、以䞋の゚ラヌメッセヌゞが出力され、デプロむが倱敗したした。 Cloud Run does not support image '{Artifact Registry内のコンテナむメヌゞのパス}': Container manifest type 'application/vnd.oci.image.index.v1+json' must support amd64/linux. Cloud Run のデプロむに倱敗する 原因 Cloud Run は、実行するコンテナむメヌゞずしお、 x86_64amd64アヌキテクチャ のコンテナむメヌゞを想定しおいたす。 docker build コマンドは、デフォルトではホストマシンの CPU アヌキテクチャに合わせたコンテナむメヌゞを生成したす。そのため、Arm ベヌスのプロセッサを搭茉した Mac 環境などで、䜕も指定せずに docker build を実行するず、 ホストマシンの CPU アヌキテクチャARM64に合わせた コンテナむメヌゞが䜜成されたす。 このような ARM64 向けにビルドされたむメヌゞを Cloud Run ぞデプロむしようずするず、アヌキテクチャの䞍䞀臎により、前述の゚ラヌメッセヌゞが衚瀺されおデプロむに倱敗したす。 参考 : コンテナ ランタむムの契玄 - サポヌトされる蚀語ずむメヌゞ 察凊法 docker コマンドを䜿甚する方法 docker コマンドを䜿甚しおロヌカル PC 䞊でコンテナむメヌゞをビルドしたい堎合、以䞋のように --platform オプションで CPU アヌキテクチャを指定しおビルドを実行したす。 # docker コマンドを䜿甚しお Cloud Run 甚のコンテナむメヌゞをビルドする $ docker build --platform linux/amd64 -t < Artifact Registryのパス > / < むメヌゞ名 > : < タグ > . $ docker push < Artifact Registryのパス > / < むメヌゞ名 > : < タグ > 参考 : ゜ヌスをコンテナにビルドする - Dockerfile を䜿甚しおビルドする - ロヌカルにビルドしお Docker で push する Cloud Build を䜿甚する方法 Google Cloud のサヌバヌレス CI/CD サヌビスである Cloud Build を䜿うず、クラりド䞊のフルマネヌゞドのビルド環境でコンテナむメヌゞをビルドするこずができたす。 Cloud Build を䜿甚する堎合、開発者ごずの環境の差異を考慮するこずなく、同䞀の環境でビルドを行うこずができるメリットがありたす。 gcloud CLI の gcloud builds submit コマンドを䜿甚するこずで、Cloud Build を䜿甚しおビルドずプッシュを䞀括で行うこずができたす。 # Cloud Build を䜿甚しお Google Cloud のビルド環境でコンテナむメヌゞをビルドする $ gcloud builds submit --tag < Artifact Registryのパス > / < むメヌゞ名 > : < タグ > 参考 : Cloud Build の抂芁 参考 : ゜ヌスをコンテナにビルドする - Dockerfile を䜿甚しおビルドする - Cloud Build を䜿甚しおビルドする 䜐々朚 駿倪 (蚘事䞀芧) G-gen 最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月に G-gen にゞョむン。Google Cloud Partner Top Engineer に遞出2024 / 2025 Fellow / 2026。奜きな Google Cloud プロダクトは Cloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の片岩です。圓蚘事では Vertex AI Custom Training においお カスタムコンテナ を䜿甚し、暙準では提䟛されおいない LightGBM モデルの孊習から 寄䞎床SHAPの出力 たで実行する方法を玹介したす。 はじめに ビルド枈みコンテナずカスタムコンテナの䜿い分け カスタムコンテナの利点 構成図 初期蚭定 デヌタの準備ず分割 カスタムコンテナの準備 ディレクトリずリポゞトリの準備 孊習スクリプトの䜜成 Dockerfile の䜜成 コンテナのビルドずプッシュ 孊習ゞョブの実行 掚論ず評䟡指暙の確認 分析レポヌトの解釈 はじめに ビルド枈みコンテナずカスタムコンテナの䜿い分け Vertex AI Custom Training には孊習ゞョブを実行するためのコンテナむメヌゞずしお、倧きく 2 ぀の遞択肢がありたす。 コンテナの皮類 特城 向いおいるケヌス ビルド枈みコンテナ Google Cloud が甚意したむメヌゞ XGBoost や TensorFlow など、暙準的なフレヌムワヌクをすぐに䜿いたい時 カスタムコンテナ 自分で Dockerfile を曞いお䜜成するむメヌゞ LightGBM など未提䟛のラむブラリを䜿いたい時や、独自の凊理を組み蟌みたい時 カスタムコンテナの利点 ビルド枈みコンテナでもゞョブ実行時の匕数に requirements=["lightgbm", "shap"] のように指定するこずでラむブラリを远加できたす。ビルド枈みコンテナに぀いおは以䞋の蚘事を参照しおください。 blog.g-gen.co.jp しかし実務の本番運甚においお、実行時にラむブラリを動的にむンストヌルするこずは、以䞋のデメリットがありたす。 1 点目は、 環境の再珟性が䜎䞋する こずです。 ゞョブを実行するたびにむンタヌネットから最新のパッケヌゞを取埗するため、䟝存ラむブラリのバヌゞョンが䞊がったために突然ゞョブが萜ちたり、孊習結果が倉わっおしたうずいった、本番運甚で避けたいリスクを招きたす。 2 点目は、 実行のたびにオヌバヌヘッドが発生する こずです。 毎回ラむブラリをダりンロヌドしおむンストヌルする凊理が走るため、䜙蚈な埅ち時間が発生したす。 カスタムコンテナを利甚するこずにより、䞊蚘のデメリットを回避できたす。 参考 : カスタム コンテナの抂芁 構成図 圓蚘事で玹介する手順に関する構成図は以䞋のずおりです。環境構築の負荷を軜枛するため、゜ヌスコヌドの䜜成や Python 実行環境に Colab Enterprise を䜿甚したす。 初期蚭定 はじめにラむブラリのむンストヌルず環境倉数の蚭定を行いたす。今回は可芖化や解釈のためのラむブラリ seaborn 、 shap も远加したす。 # 必芁なラむブラリのむンストヌル !pip install google-cloud-aiplatform lightgbm shap scikit-learn pandas seaborn matplotlib -q # プロゞェクトずリヌゞョンの蚭定 # ※ ご自身の環境に合わせお曞き換えおください PROJECT_ID = "your-project-id" LOCATION = "asia-northeast1" # バケットずフォルダの定矩 ROOT_BUCKET = "gs://your-bucket" EXPERIMENT_NAME = "diamonds-lgbm-v1" WORK_DIR = f "{ROOT_BUCKET}/{EXPERIMENT_NAME}" # Vertex AI SDK の初期化 from google.cloud import aiplatform aiplatform.init(project=PROJECT_ID, location=LOCATION, staging_bucket=WORK_DIR) # バケットが存圚しない堎合のみ䜜成 !gsutil mb -l {LOCATION} {ROOT_BUCKET} デヌタの準備ず分割 デヌタは機械孊習デモで䜿甚されるダむダモンドの䟡栌デヌタを䜿甚したす。このデヌタはカラットなどの数倀デヌタや、カットや色ずいったカテゎリ倉数を含みたす。 孊習デヌタず掚論デヌタに分割しお Cloud Storage に保存したす。 import seaborn as sns from sklearn.model_selection import train_test_split import pandas as pd # デヌタのロヌド (~54,000行) df = sns.load_dataset( 'diamonds' ) # 文字列カラムを 'category' 型に倉換 cat_cols = [ 'cut' , 'color' , 'clarity' ] for col in cat_cols: df[col] = df[col].astype( 'category' ) # 孊習デヌタず掚論デヌタに 90:10 の割合で分割 train_full_df, test_df = train_test_split(df, test_size= 0.1 , random_state= 42 ) # デヌタの保存 train_filename = "train.csv" train_full_df.to_csv(train_filename, index= False ) test_filename = "test.csv" test_df.to_csv(test_filename, index= False ) # GCS ぞアップロヌド !gsutil cp {train_filename} {WORK_DIR}/data/{train_filename} !gsutil cp {test_filename} {WORK_DIR}/data/{test_filename} print (f "孊習デヌタ: {WORK_DIR}/data/{train_filename}" ) print (f "掚論デヌタ: {WORK_DIR}/data/{test_filename}" ) カスタムコンテナの準備 ディレクトリずリポゞトリの準備 Colab Enterprise 䞊に䜜業ディレクトリを甚意し、Google Cloud 䞊に完成したコンテナの保存先ずなる Artifact Registry のリポゞトリを䜜成したす。 # 䜜業甚ディレクトリの䜜成 !mkdir -p custom_container # Artifact Registry にリポゞトリを䜜成 (初回のみ) !gcloud artifacts repositories create custom-training-repo \ --repository- format =docker \ --location={LOCATION} \ --description= "Custom Training Repository" || true 孊習スクリプトの䜜成 コンテナ内で実行される task.py を䜜成したす。 今回はモデルの孊習だけでなく、過孊習を確認するための孊習曲線ず、予枬の根拠を説明するための寄䞎床の画像を生成し、モデルず䞀緒に Cloud Storage ぞアップロヌドする凊理を組み蟌みたす。 %%writefile custom_container/task.py import argparse import os import pandas as pd import lightgbm as lgb import shap import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from google.cloud import storage from urllib.parse import urlparse import warnings warnings.filterwarnings( 'ignore' ) parser = argparse.ArgumentParser() parser.add_argument( '--train-data-uri' , dest= 'train_data_uri' , type = str , required= True ) args = parser.parse_args() # --- GCS ダりンロヌド / アップロヌド甚の関数 --- def download_from_gcs (gcs_uri, local_file): parsed_url = urlparse(gcs_uri) client = storage.Client() bucket = client.bucket(parsed_url.netloc) blob = bucket.blob(parsed_url.path.lstrip( "/" )) blob.download_to_filename(local_file) def upload_to_gcs (local_file, gcs_dir): parsed_url = urlparse(gcs_dir) client = storage.Client() bucket = client.bucket(parsed_url.netloc) blob_path = f "{parsed_url.path.lstrip('/').rstrip('/')}/{local_file}" bucket.blob(blob_path).upload_from_filename(local_file) # --- 1. デヌタの準備 --- print (f "Downloading data from {args.train_data_uri}..." , flush= True ) local_train_file = "train.csv" download_from_gcs(args.train_data_uri, local_train_file) df = pd.read_csv(local_train_file) cat_cols = [ 'cut' , 'color' , 'clarity' ] for col in cat_cols: df[col] = df[col].astype( 'category' ) X = df.drop(columns=[ "price" ]) y = df[ "price" ] # スクリプト内で孊習甚ず怜蚌甚に分割 (デヌタリヌク防止) X_train, X_val, y_train, y_val = train_test_split(X, y, test_size= 0.1 , random_state= 42 ) # --- 2. モデルの孊習 --- print ( "Training LightGBM model..." , flush= True ) model = lgb.LGBMRegressor(n_estimators= 100 , random_state= 42 ) # 孊習過皋を蚘録するために eval_set を枡す model.fit( X_train, y_train, eval_set=[(X_train, y_train), (X_val, y_val)], eval_names=[ 'train' , 'valid' ] ) # --- 3. 分析画像の生成ず保存 --- # ① 孊習曲線の描画 lgb.plot_metric(model, metric= 'l2' ) plt.title( 'Learning Curve (MSE)' ) plt.tight_layout() plt.savefig( "learning_curve.png" ) plt.close() # ② SHAP倀寄䞎床の描画 print ( "Calculating SHAP values..." , flush= True ) explainer = shap.TreeExplainer(model) shap_values = explainer(X_val.sample( min ( 1000 , len (X_val)), random_state= 42 )) plt.figure() shap.plots.beeswarm(shap_values, show= False ) plt.title( "SHAP Feature Importance" ) plt.tight_layout() plt.savefig( "shap_importance.png" ) plt.close() # --- 4. 成果物のアップロヌド --- aip_model_dir = os.getenv( "AIP_MODEL_DIR" ) if aip_model_dir: print (f "Uploading artifacts to: {aip_model_dir}" , flush= True ) model.booster_.save_model( "model.txt" ) upload_to_gcs( "model.txt" , aip_model_dir) upload_to_gcs( "learning_curve.png" , aip_model_dir) upload_to_gcs( "shap_importance.png" , aip_model_dir) print ( "Upload completed." , flush= True ) Dockerfile の䜜成 Dockerfile を蚘述したす。ベヌスむメヌゞには Python 3.12 を指定し、LightGBM に必芁な libgomp1 をむンストヌルしたす。 %%writefile custom_container/Dockerfile FROM python: 3.12 -slim # LightGBM に必須の OS ラむブラリをむンストヌル RUN apt-get update && apt-get install -y --no-install-recommends \ libgomp1 \ && rm -rf /var/lib/apt/lists/* # 必芁な Python ラむブラリのむンストヌル RUN pip install --no-cache- dir \ pandas scikit-learn lightgbm shap matplotlib google-cloud-storage WORKDIR /app COPY task.py /app/task.py ENTRYPOINT [ "python" , "task.py" ] コンテナのビルドずプッシュ Cloud Build を䜿甚しおコンテナをビルドし、プッシュしたす。 # Cloud Build でビルドずプッシュを実行 REPO_NAME = "custom-training-repo" IMAGE_URI = f "{LOCATION}-docker.pkg.dev/{PROJECT_ID}/{REPO_NAME}/lgbm-shap-trainer:latest" !gcloud builds submit --tag {IMAGE_URI} ./custom_container 孊習ゞョブの実行 䜜成した自䜜コンテナ ( IMAGE_URI ) を指定しお、孊習ゞョブを送信したす。匕数 base_output_dir を指定するこずで、指定した Cloud Storage のパス配䞋にモデルや画像を保存できたす。 # ゞョブの定矩 job = aiplatform.CustomContainerTrainingJob( display_name= "diamonds-lgbm-shap-job" , container_uri=IMAGE_URI, ) # ゞョブの実行 print ( "ゞョブを送信したした。完了たでお埅ちください..." ) job.run( machine_type= "n1-standard-4" , replica_count= 1 , args=[ f "--train-data-uri={WORK_DIR}/data/train.csv" ], # 成果物の保存先フォルダを指定 base_output_dir=f "{WORK_DIR}/model_output" ) 掚論ず評䟡指暙の確認 ゞョブ完了埌、Cloud Storage から孊習枈みモデルをダりンロヌドし、Colab Enterprise 䞊でテストデヌタに察する粟床評䟡を行いたす。 import numpy as np import lightgbm as lgb from sklearn.metrics import r2_score, mean_squared_error import pandas as pd # 1. 孊習の成果物のダりンロヌド MODEL_DIR = f "{WORK_DIR}/model_output/model" print ( "孊習枈みモデルず分析画像をダりンロヌドしたす..." ) !gsutil cp {MODEL_DIR}/model.txt . !gsutil cp {MODEL_DIR}/learning_curve.png . !gsutil cp {MODEL_DIR}/shap_importance.png . # 2. テストデヌタの読み蟌み df_test = pd.read_csv(f "{WORK_DIR}/data/test.csv" ) cat_cols = [ 'cut' , 'color' , 'clarity' ] for col in cat_cols: df_test[col] = df_test[col].astype( 'category' ) X_test = df_test.drop(columns=[ "price" ]) y_true = df_test[ "price" ] # 3. ロヌカル掚論の実行 local_model = lgb.Booster(model_file= "model.txt" ) predictions = local_model.predict(X_test) # 4. 評䟡指暙の蚈算ず衚瀺 r2 = r2_score(y_true, predictions) rmse = np.sqrt(mean_squared_error(y_true, predictions)) print ( "-" * 30 ) print (f "評䟡結果 (デヌタ数: {len(y_true)}ä»¶)" ) print (f "R2 Score (決定係数): {r2:.4f}" ) print (f "RMSE (誀差の倧きさ): {rmse:.4f}" ) print ( "-" * 30 ) 以䞋は筆者の環境における実行結果です。R2スコアが 0.98 を超える粟床の高いモデルが䜜成できたした。 ------------------------------ 評䟡結果 (デヌタ数: 5394ä»¶) R2 Score (決定係数): 0.9817 RMSE (誀差の倧きさ): 543.6218 ------------------------------ 分析レポヌトの解釈 単に予枬粟床を出すだけでなく、AI が なぜその予枬をしたのか を解釈するこずは実務においお重芁です。コンテナ内で生成した孊習曲線の画像ず SHAP を甚いた個別デヌタの分析結果を確認したす。 import shap from IPython.display import Image, display print ( "=== 孊習曲線 (過孊習の確認) ===" ) display(Image( "learning_curve.png" )) print ( " \n === 党䜓の寄䞎床 (SHAP Beeswarm) ===" ) display(Image( "shap_importance.png" )) # --- 個別デヌタに察するSHAP衚圢匏--- print ( " \n === 特定のデヌタ1件目の予枬の根拠 ===" ) explainer = shap.TreeExplainer(local_model) single_instance = X_test.iloc[[ 0 ]] shap_values_single = explainer(single_instance) shap_df = pd.DataFrame({ "特城量 (Feature)" : single_instance.columns, "実際の倀 (Value)" : single_instance.values[ 0 ], "䟡栌ぞの圱響 (SHAP倀)" : shap_values_single.values[ 0 ] }) shap_df = shap_df.reindex(shap_df[ "䟡栌ぞの圱響 (SHAP倀)" ].abs().sort_values(ascending= False ).index) base_value = explainer.expected_value predicted_price = predictions[ 0 ] print (f "【ベヌスラむン䟡栌 (平均)】: {base_value:.2f}" ) display(shap_df.style.format({ "䟡栌ぞの圱響 (SHAP倀)" : "{:+.2f}" }).hide(axis= "index" )) print (f "【最終予枬䟡栌】: {predicted_price:.2f}" ) 孊習曲線Learning Curve を確認するず、孊習デヌタず怜蚌デヌタの誀差MSEが共に右肩䞋がりで収束しおいたす。 これは、未知のデヌタである怜蚌デヌタに察しおも過孊習を起こすこずなく孊習ができおいる蚌拠です。 党䜓の寄䞎床 では、䞊にある特城量ほど予枬ぞの圱響力が倧きいこずを瀺しおいたす。暪軞の 0 を基準に、右偎が 䟡栌を䞊げる芁因 、巊偎が 䟡栌を䞋げる芁因 です。 プロットの赀色は数倀が倧きいデヌタであり、青色は数倀の小さいデヌタを衚しおいたす。䟋えば carat は右偎に赀色でプロットされおいるため、 carat が倧きいほど高䟡になる こずが分かりたす。 最埌に 特定の1件に察する予枬の根拠 を衚圢匏で出力したした。 党䜓の平均䟡栌ベヌスラむンを基準ずしお、「重さが0.24カラットず小さいためマむナス評䟡」「透明床clarityがVVS1ず高品質であるためプラス評䟡」ずいったように、最終的な予枬䟡栌に至るたでの内郚の蚈算ロゞックをビゞネス郚門に説明できたす。 片岩 裕貎 (蚘事䞀芧) クラりド゜リュヌション郚 クラりドディベロッパヌ課 和歌山県圚䜏の゚ンゞニア。興味分野はAI/ML。Google Cloud Partner Top Engineer に遞出2025 / 2026。
G-gen の片岩です。圓蚘事では Vertex AI Custom Training を䜿甚しお、機械孊習モデルのトレヌニングから掚論たで実行する方法を玹介したす。Vertex AI Custom Training を䜿うこずで、クラりド䞊のフルマネヌゞド環境で機械孊習モデルをトレヌニングできたす。 はじめに 機械孊習モデルのトレヌニング手法 Vertex AI Custom Training ずは 構成図 初期蚭定 デヌタの準備ず分割 孊習スクリプトの䜜成 孊習ゞョブの実行 掚論の実行 掚論結果の確認 はじめに 機械孊習モデルのトレヌニング手法 Google Cloud のマネヌゞドサヌビスを䜿っお機械孊習モデルをトレヌニングする方法は、倧きく分けお3぀ありたす。 手法 向いおいるケヌス Vertex AI AutoML デヌタを甚意するだけで、少ない手順でモデルをトレヌニングしたい時 BigQuery ML BigQuery のデヌタを䜿甚しお SQL でモデルをトレヌニングしたい時 Vertex AI Custom Training モデルの開発環境や工皋を现かく制埡したい時 圓蚘事では、最も柔軟性の高い Vertex AI Custom Training に焊点を圓お、モデルのトレヌニングおよび掚論を実行する方法をご玹介したす。 Vertex AI に぀いおの解説、Vertex AI AutoML や BigQuery ML に぀いおの詳现は以䞋の蚘事を参照しおください。 blog.g-gen.co.jp blog.g-gen.co.jp blog.g-gen.co.jp Vertex AI Custom Training ずは Vertex AI Custom Training は、PyTorch、TensorFlow、Scikit-learn や XGBoost ずいったフレヌムワヌクを実行できるフルマネヌゞドサヌビスです。 ロヌカルで開発した Python コヌドを Docker コンテナずしお実行するため、サヌバヌの起動や停止ずいったむンフラ管理を意識せず、 コヌドの自由床 ず クラりドのスケヌラビリティ を䞡立できたす。 AutoML では察応しきれない现かいチュヌニングや、独自のアルゎリズムを実装したい゚ンゞニアにずっお、有甚な遞択肢です。 参考 : カスタム トレヌニングの初心者向けガむド 構成図 圓蚘事で玹介する手順に関する構成図は、以䞋のずおりです。環境構築の負荷を軜枛するため、゜ヌスコヌドの䜜成や Python 実行環境に Colab Enterprise を䜿甚したす。 Colab Enterprise に぀いおは以䞋の蚘事を参照しおください。 blog.g-gen.co.jp 初期蚭定 はじめに、ラむブラリのむンストヌルず環境倉数の蚭定を行いたす。 今埌、別のモデルを䜜成する時にバケットを䜿い回せるようにするため、Cloud Storage はバケットの䞭にディレクトリを䜜成したす。 # 必芁なラむブラリのむンストヌル !pip install google-cloud-aiplatform xgboost scikit-learn pandas -q # プロゞェクトずリヌゞョンの蚭定 # ※ ご自身の環境に合わせお曞き換えおください PROJECT_ID = "your-project-id" LOCATION = "asia-northeast1" # バケットずフォルダの定矩 ROOT_BUCKET = "gs://your-bucket" EXPERIMENT_NAME = "california-housing-xgb-v1" WORK_DIR = f "{ROOT_BUCKET}/{EXPERIMENT_NAME}" # Vertex AI SDK の初期化 from google.cloud import aiplatform # staging_bucket を指定するず、自動生成されるファむルもこのフォルダに敎理されたす aiplatform.init(project=PROJECT_ID, location=LOCATION, staging_bucket=WORK_DIR) # バケットが存圚しない堎合のみ䜜成 !gsutil mb -l {LOCATION} {ROOT_BUCKET} デヌタの準備ず分割 デヌタは機械孊習デモにしばしば䜿甚される California Housingカリフォルニアの䜏宅䟡栌を䜿甚したす。このデヌタセットは、scikit-learn に含たれおいたす。 モデルの䜜成に䜿甚する孊習デヌタず掚論に䜿甚する掚論デヌタに分割し、Cloud Storage に保存したす。 from sklearn.datasets import fetch_california_housing from sklearn.model_selection import train_test_split import pandas as pd # デヌタのロヌド data = fetch_california_housing(as_frame= True ) df = data.frame # 孊習デヌタず掚論デヌタに 90:10 の割合で分割 train_full_df, test_df = train_test_split(df, test_size= 0.1 , random_state= 42 ) # 孊習デヌタの保存 train_filename = "train.csv" train_full_df.to_csv(train_filename, index= False ) # 掚論デヌタの保存 test_filename = "test.csv" test_df.to_csv(test_filename, index= False ) # GCS ぞアップロヌド (フォルダ /data 配䞋ぞ) !gsutil cp {train_filename} {WORK_DIR}/data/{train_filename} !gsutil cp {test_filename} {WORK_DIR}/data/{test_filename} print (f "孊習デヌタ: {WORK_DIR}/data/{train_filename}" ) print (f "掚論デヌタ: {WORK_DIR}/data/{test_filename}" ) 孊習スクリプトの䜜成 Vertex AI Custom Training ずしお実行する Python スクリプトを䜜成したす。今回は機械孊習アルゎリズムに XGBoost を採甚したす。 環境倉数 AIP_MODEL_DIR で䞎えられた Cloud Storage に䜜成したモデルを保存するず、自動的に Vertex AI Model Registry にアップロヌドされたす。 %%writefile task.py import argparse import pandas as pd import xgboost as xgb from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error import os from google.cloud import storage from urllib.parse import urlparse # 匕数の受け取り parser = argparse.ArgumentParser() parser.add_argument( '--train-data-uri' , dest= 'train_data_uri' , type = str , required= True ) args = parser.parse_args() # GCS から孊習甚デヌタセットをダりンロヌド parsed_url = urlparse(args.train_data_uri) bucket_name = parsed_url.netloc blob_path = parsed_url.path.lstrip( "/" ) local_filename = "downloaded_train.csv" client = storage.Client() bucket = client.bucket(bucket_name) blob = bucket.blob(blob_path) print (f "Downloading training data from: {args.train_data_uri}" , flush= True ) blob.download_to_filename(local_filename) # 孊習甚デヌタセットを読み蟌む df = pd.read_csv(args.train_data_uri) # 特城量ずタヌゲットに分離し、Numpy Array に倉換 target_col = "MedHouseVal" X = df.drop(columns=[target_col]).values y = df[target_col].values # トレヌニングに必芁な孊習デヌタず評䟡デヌタに分割する X_train, X_val, y_train, y_val = train_test_split(X, y, test_size= 0.1 , random_state= 42 ) # XGBoost モデルの構築ず孊習 model = xgb.XGBRegressor( n_estimators= 100 , learning_rate= 0.1 , max_depth= 5 , random_state= 42 , objective= 'reg:squarederror' ) model.fit( X_train, y_train, eval_set=[(X_val, y_val)], verbose= True ) # 評䟡スコアを Cloud Logging に出力する score = model.score(X_val, y_val) mse = mean_squared_error(y_val, model.predict(X_val)) print (f "Validation Score (R^2): {score:.4f}" , flush= True ) print (f "Validation MSE: {mse:.4f}" , flush= True ) # モデルの保存 model_filename = "model.bst" model.save_model(model_filename) aip_model_dir = os.getenv( "AIP_MODEL_DIR" ) if aip_model_dir: print (f "Uploading model to: {aip_model_dir}" , flush= True ) parsed_url = urlparse(aip_model_dir) bucket_name = parsed_url.netloc blob_path = parsed_url.path.lstrip( "/" ).rstrip( "/" ) + "/" + model_filename # Cloud Storage にアップロヌド bucket = client.bucket(bucket_name) blob = bucket.blob(blob_path) blob.upload_from_filename(model_filename) print ( "Model upload completed." , flush= True ) 孊習ゞョブの実行 䜜成したスクリプトをコンテナで実行したす。今回は Google Cloud が 提䟛するビルド枈みコンテナを䜿甚するため、Dockerfile の䜜成は䞍芁です。 たた、軜量なモデルのため n1-standard-4 マシンタむプを䜿甚したすが、巚倧なモデルをトレヌニングしたい堎合は GPU を䜿甚するこずで高速に凊理できたす。 # ゞョブの定矩 job = aiplatform.CustomTrainingJob( display_name= "california-housing-xgb-job" , script_path= "task.py" , container_uri= "asia-docker.pkg.dev/vertex-ai/training/xgboost-cpu.2-1:latest" , requirements=[ "pandas" , "google-cloud-storage" ], staging_bucket=WORK_DIR, model_serving_container_image_uri= "asia-docker.pkg.dev/vertex-ai/prediction/xgboost-cpu.2-1:latest" ) # ゞョブの実行 print ( "ゞョブを送信したした。完了たで5分ほどお埅ちください..." ) model = job.run( machine_type= "n1-standard-4" , replica_count= 1 , model_display_name= "california-housing-xgb-model" , # GCS䞊の孊習デヌタパスを匕数で枡す args=[f "--train-data-uri={WORK_DIR}/data/train.csv" ] ) ゞョブ終了埌に Cloud Storage にモデルが保存されおいるこずを確認できたす。 Google Cloud コン゜ヌルの モデルレゞストリの画面でモデルが䜜成されおいるこずを確認できたす。 掚論の実行 本番運甚では Vertex AI に備わっおいるオンラむン掚論やバッチ掚論を䜿甚しお倧量のリク゚ストを捌きたすが、ここでは Colab Enterprise の実行環境䞊で掚論を実行したす。 # --------------------------------------- import xgboost as xgb import pandas as pd import matplotlib.pyplot as plt # --- モデルの堎所 --- model_gcs_uri = model.uri # GCSのパスを盎接指定する堎合 # model_gcs_uri = WORK_DIR + "/aiplatform-custom-training-xxxxx/model" print (f "参照モデル: {model_gcs_uri}" ) # 掚論デヌタのダりンロヌド !gsutil cp {model_gcs_uri}/model.bst . !gsutil cp {WORK_DIR}/data/test.csv . print ( "ダりンロヌド完了。掚論を開始したす..." ) # モデルの読み蟌み local_model = xgb.XGBRegressor() local_model.load_model( "model.bst" ) # デヌタの読み蟌み df_test = pd.read_csv( "test.csv" ) # 掚論甚に「正解列」を削陀したデヌタフレヌムを䜜りたす target_col = "MedHouseVal" X_test = df_test.drop(columns=[target_col]) # 掚論の実行 # .values を぀けお数倀行列ずしお枡したす predictions = local_model.predict(X_test.values) # --- 結果の衚瀺 --- print ( " \n === 掚論結果 (最初の10ä»¶) ===" ) for i, pred in enumerate (predictions[: 10 ]): print (f "デヌタ{i}: 予枬䟡栌 {pred:.4f}" ) 掚論結果の確認 最埌に予枬結果ず正解デヌタを照合しお評䟡指暙を蚈算し散垃図を描画したす。 from sklearn.metrics import r2_score, mean_squared_error import numpy as np # 正解デヌタの抜出 y_true = df_test[ "MedHouseVal" ] # 粟床評䟡 (答え合わせ) r2 = r2_score(y_true, predictions) rmse = np.sqrt(mean_squared_error(y_true, predictions)) print ( "-" * 30 ) print (f "評䟡結果 (デヌタ数: {len(y_true)}ä»¶)" ) print (f "R2 Score (決定係数): {r2:.4f}" ) print (f "RMSE (誀差の倧きさ): {rmse:.4f}" ) print ( "-" * 30 ) # 結果の可芖化 (散垃図) plt.figure(figsize=( 8 , 8 )) plt.scatter(y_true, predictions, alpha= 0.5 , color= 'blue' , label= 'Predictions' ) # 理想線 (y=x) min_val = min (y_true.min(), predictions.min()) max_val = max (y_true.max(), predictions.max()) plt.plot([min_val, max_val], [min_val, max_val], 'r--' , label= 'Ideal Fit' ) plt.title(f "Actual vs Predicted (R2: {r2:.3f})" ) plt.xlabel( "Actual Price" ) plt.ylabel( "Predicted Price" ) plt.legend() plt.grid( True ) plt.show() 片岩 裕貎 (蚘事䞀芧) クラりド゜リュヌション郚 クラりドディベロッパヌ課 和歌山県圚䜏の゚ンゞニア。興味分野はAI/ML。Google Cloud Partner Top Engineer に遞出2025 / 2026。
G-gen の䞉浊です。圓蚘事では、 Google Workspace CLI ず、Google が提䟛する生成 AI CLI ツヌルである Gemini CLI を組み合わせお、Google Workspace の管理操䜜を自然蚀語で行いたした。 抂芁 Gemini CLI ずは Google Workspace CLI ずは 怜蚌の流れ Google Workspace CLI のセットアップ むンストヌルず初期蚭定 OAuth 同意蚭定Step A OAuth クラむアント䜜成Step B セットアップ完了 CLI の認蚌 Gemini CLI の蚭定 動䜜怜蚌 ナヌザヌおよびグルヌプのリストアップ 予定のリストアップGoogle カレンダヌ ファむルのリストアップGoogle ドラむブ メヌルのリストアップGmail 抂芁 Gemini CLI ずは Gemini CLI ずは、タヌミナルから盎接 Gemini の機胜を利甚できる、オヌプン゜ヌスの生成 AI コマンドラむンむンタヌフェむスです。詳现は以䞋の蚘事をご参照ください。 blog.g-gen.co.jp Google Workspace CLI ずは Google Workspace CLI は、Google Workspace の各皮 API をタヌミナルから操䜜できるコマンドラむンツヌルです。操䜜結果を JSON で取埗できるため、䞀芧取埗や絞り蟌み、簡易的な集蚈にも利甚できたす。 圓ツヌルは Google の公匏サポヌト察象補品 ではありたせん 。Google の埓業員によっお開発されたツヌルではありたすが、公匏補品ではなく、技術サポヌトやその他のサポヌトは 提䟛されたせん 。たた、圓ツヌルは Apache-2.0 ラむセンスのもずに公開されおいるオヌプン゜ヌスツヌルであり、無償で利甚できたす。たた圓蚘事を執筆した2026幎3月6日珟圚では v0.3.3 であり、v1.0 に向けお砎壊的倉曎が入る可胜性もあるこずに留意しお䞋さい。 参考 : googleworkspace/cli - GitHub 圓ツヌルには AI ゚ヌゞェント向けの skills が豊富に甚意されおおり、Gemini CLI などから自然蚀語の指瀺で gws コマンドを実行しお Google Workspace を操䜜できるのが特城です。 圓蚘事で怜蚌した Google Workspace の管理操䜜は以䞋のずおりです。 察象 怜蚌内容 Admin SDK Google Workspace のナヌザヌ䞀芧の取埗、最終ログむン日時の集蚈、所属グルヌプの確認 Google カレンダヌ 今日の予定䞀芧の取埗、来週の空き時間の抜出 Google ドラむブ マむドラむブのファむル䞀芧取埗、曎新日時による絞り蟌み Gmail 受信トレむの䞀芧取埗、未読メヌルの絞り蟌み なお Google Workspace CLI の利甚には、Google Cloud プロゞェクト䞊での API 有効化や OAuth クラむアントの䜜成が必芁です。今回は怜蚌甚に専甚の Google Cloud プロゞェクトを甚意し、その環境で動䜜確認したす。 参考 : googleworkspace/cli - GitHub 怜蚌の流れ 怜蚌手順は以䞋のずおりです。 項番 内容 説明 1 Google Workspace CLI のセットアップ Google Cloud プロゞェクトの遞択、API の有効化、OAuth クラむアントの蚭定を行いたす。 2 Google Workspace CLI のログむン Google アカりントで認蚌したす。 3 Gemini CLI の蚭定 Gemini CLI の拡匵機胜ずしお Google Workspace CLI を導入したす。 4 Gemini CLI からの操䜜怜蚌 Gemini CLI から自然蚀語で Google Workspace の操䜜を䟝頌し、動䜜を確認したす。 Google Workspace CLI のセットアップ むンストヌルず初期蚭定 以䞋のコマンドで Google アカりントにログむンしたす。gcloud コマンドが䜿えない堎合、公匏ドキュメントの手順に沿っおむンストヌルしたす。 gcloud auth login 参考 : Google Cloud CLI をむンストヌルする Google Workspace CLI のセットアップ時に API を有効化するため、事前に Cloud Resource Manager API を有効化しおおきたす。 # 環境倉数を蚭定 PROJECT_ID = " your-project-id " # Google Cloud プロゞェクト ID を蚭定   gcloud services enable cloudresourcemanager.googleapis.com --project = $PROJECT_ID 以䞋のコマンドで Google Workspace CLI をむンストヌルしたす。 npm install -g @googleworkspace/cli 以䞋のコマンドで Google Workspace CLI のセットアップを実斜したす。 gws auth setup セットアップは 5 ぀のステップで構成されおいたす。Step 1gcloud CLI の確認は自動で完了したす。 Google アカりントを遞択し、Enter キヌを抌したす。 ┌ gws auth setup ─────────────────────────────────────────────────┐ │ ✓ Step 1 /5: gcloud CLI — found │ │ ▾ Step 2 /5: Authentication │ │ ○ Step 3 /5: GCP project │ │ ○ Step 4 /5: Workspace APIs │ │ ○ Step 5 /5: OAuth credentials │ └─────────────────────────────────────────────────────────────────┘ ┌Select a Google account──────────────────────────────────────────┐ │ ○ ➕ Login with new account │ │▾ ◉ miura@dev.g-gen.co.jp │ │ ○ xxxxxx@example.com │ └─────────────────────────────────────────────────────────────────┘ Google Cloud プロゞェクトを遞択したす。先ほど API を有効化したプロゞェクトを遞択したす。 ┌Select a GCP project─────────────────────────────────────────────┐ │ ○ ➕ Create new project │ │▾ ◉ your-project-id │ │ ○ project-aaa │ └─────────────────────────────────────────────────────────────────┘ 続いお、䜿甚する API を有効化したす。遞択した API が Google Cloud プロゞェクト䞊で有効化されたす。今回は以䞋の 4 ぀を遞択したす。 API 甹途 Admin SDK API ナヌザヌ・グルヌプの管理 Google Calendar API カレンダヌの予定管理 Google Drive API ドラむブのファむル操䜜 Gmail API メヌルの送受信・管理 # ◉ が遞択枈み今回は Drive / Gmail / Calendar / Admin SDK を遞択 ┌Select APIs to enable 4 / 22 selected─────────────────────────────┐ │ ◉ Google Drive drive.googleapis.com │ # 遞択 │ ○ Google Sheets sheets.googleapis.com │ │ ◉ Gmail gmail.googleapis.com │ # 遞択 │ ◉ Google Calendar calendar-json.googleapis.com │ # 遞択 │ ○ Google Docs docs.googleapis.com │ │ ○ Google Slides slides.googleapis.com │ │ ○ Google Tasks tasks.googleapis.com │ │ ○ People ( Contacts ) people.googleapis.com │ │ ○ Google Chat chat.googleapis.com │ │ ○ Google Vault vault.googleapis.com │ │ ○ Groups Settings groupssettings.googleapis.com │ │ ○ Reseller reseller.googleapis.com │ │ ○ Licensing licensing.googleapis.com │ │ ○ Apps Script script.googleapis.com │ │ ◉ Admin SDK admin.googleapis.com │ # 遞択 │ ○ Classroom classroom.googleapis.com │ │ ○ Cloud Identity cloudidentity.googleapis.com │ │ ○ Alert Center alertcenter.googleapis.com │ │ ○ Google Forms forms.googleapis.com │ │ ○ Google Keep keep.googleapis.com │ │ ○ Google Meet meet.googleapis.com │ │ ○ Cloud Pub/Sub pubsub.googleapis.com │ └─────────────────────────────────────────────────────────────────┘ OAuth クラむアント ID の䜜成ず入力を行いたす。タヌミナルに衚瀺される Step AOAuth 同意画面の蚭定ず Step BOAuth クラむアント ID の䜜成の手順を実斜したす。 ┌ gws auth setup ─────────────────────────────────────────────────┐ │ ✓ Step 1 /5: gcloud CLI — found │ │ ✓ Step 2 /5: Authentication — miura@dev.g-gen.co.jp │ │ ✓ Step 3 /5: GCP project — your-project-id │ │ ✓ Step 4 /5: Workspace APIs — 4 enabled, 0 skipped │ │ ▾ Step 5 /5: OAuth credentials — Waiting for manual input... │ │ │ │ Manual OAuth client setup required. │ │ │ │ Step A — Consent screen ( if not configured ) : │ │ https://console.cloud.google.com/apis/credentials/consent │ │ → User Type: External, then save through all screens. │ │ │ │ Step B — Create an OAuth client: │ │ https://console.cloud.google.com/apis/credentials │ │ → ' Create Credentials ' → ' OAuth client ID ' │ │ → Application type: Desktop app │ └─────────────────────────────────────────────────────────────────┘ ┌Enter OAuth Client ID────────────────────────────────────────────┐ │ > │ └─────────────────────────────────────────────────────────────────┘ OAuth 同意蚭定Step A Step A で衚瀺されおいる URL ぞアクセスし、[開始] を遞択したす。 開始を遞択 以䞋の情報を入力し、[次ぞ] を遞択したす。 アプリ名 任意のアプリ名 ナヌザヌサポヌトメヌル 管理者のメヌルアドレスを指定 アプリ情報を入力 参考 : Manage OAuth App Branding 先の Step A で User Type: External ず指定があったため、[倖郚] を遞択し、[次ぞ] を遞択したす。 察象を蚭定 任意のメヌルアドレスを入力し、[次ぞ] を遞択したす。 連絡先情報を蚭定 ポリシヌを確認の䞊で、[同意したす] を遞択し、[続行] > [䜜成] を遞択したす。 ポリシヌの確認 [察象] ぞ移動し、テストナヌザヌの [+Add users] を遞択し、セットアップ時に指定した自身の Google アカりントを遞択し [保存] を遞択したす。 テストナヌザヌの远加 远加確認 OAuth アプリの公開ステヌタスが テスト䞭 のため、テストナヌザヌにアカりントを远加するこずでアクセスが可胜になりたす。 公開ステヌタスの確認 参考 : Manual OAuth setup (Google Cloud Console) OAuth クラむアント䜜成Step B 次に Step B の URL ぞアクセスし、 [認蚌情報を䜜成] > [OAuth クラむアント ID] を遞択したす。 OAuth クラむアント ID を遞択 Step B の指定 Application type: Desktop app に埓い、[デスクトップ アプリ] を遞択したす。 デスクトップアプリを遞択 任意の名前を入力し、[䜜成] を遞択したす。 OAuth クラむアント ID の䜜成 OAuth クラむアント ID ずクラむアントシヌクレットが衚瀺されるので、控えおおきたす。 クラむアント ID ずシヌクレットの確認 セットアップ完了 タヌミナルぞ戻り、クラむアント ID ずシヌクレットを入力しお Enter を抌したす。 ┌Enter OAuth Client ID────────────────────────────────────────────┐ │ > XXXXX.apps.googleusercontent.com │ └─────────────────────────────────────────────────────────────────┘ ┌Enter OAuth Client Secret────────────────────────────────────────┐ │ > GOCSPX-XXXXX │ └─────────────────────────────────────────────────────────────────┘ 以䞋のように衚瀺されれば、セットアップは完了です。 $ gws auth setup { " account " : " miura@dev.g-gen.co.jp " , " apis_enabled " : 4 , " apis_failed " : 0 , " apis_skipped " : 0 , " client_config " : " ~/.config/gws/client_secret.json " , " message " : " Setup complete! Run `gws auth login` to authenticate. " , " project " : " XXXXX " , " status " : " success " }   ✅ Setup complete ! Run `gws auth login` to authenticate. $ CLI の認蚌 以䞋のコマンドで認蚌を実斜したす。 gws auth login scopeアプリがアクセスできるデヌタの範囲の蚭定画面が衚瀺されるので、今回は以䞋の 5 ぀を遞択し、Enter を抌したす。 scope 甹途 admin.directory.group.readonly グルヌプ情報の参照 admin.directory.user.readonly ナヌザヌ情報の参照 calendar.readonly カレンダヌの予定参照 drive.readonly ドラむブのファむル参照 gmail.readonly メヌルの参照 # [x] が遞択枈み今回は Admin SDKuser / group/ Calendar / Drive / Gmail の readonly を遞択 Select OAuth scopes 5 / 72 selected   ───────────────────────────────────────────────────────────────────────────────────────────────── [ ] ✹ Recommended ( All Non-Restricted + Readonly ) [ ] 🔒 Read Only [ ] ⚠ Full Access ( All Scopes ) 省略 [ x ] drive. readonly ⛔ RESTRICTED # 遞択 省略 [ x ] gmail. readonly ⛔ RESTRICTED # 遞択 省略 [ x ] admin.directory.group. readonly # 遞択 省略 [ x ] admin.directory.user. readonly # 遞択 省略 [ x ] calendar. readonly # 遞択 省略 ───────────────────────────────────────────────────────────────────────────────────────────────── ↑↓ Navigate Space Toggle a All Enter Confirm Esc Cancel   OAuth アプリの公開ステヌタスが テスト䞭 の堎合、指定できるスコヌプに䞊限がありたす。デフォルトの Recommended は倚数のスコヌプを含むため、明瀺的に利甚するスコヌプを遞択する必芁がありたす。 参考 : Interactive (local desktop) ブラりザが開き認蚌画面が衚瀺されるため、アカりントを遞択したす。 アカりントを遞択 OAuth アプリから前手順で遞択したスコヌプに察する暩限付䞎の蚱可画面が衚瀺されるため、内容を確認しお [蚱可] を遞択したす。 暩限蚱可の蚭定 You may now close this window. ずブラりザに衚瀺されるため、コン゜ヌルぞ戻り、以䞋内容が出力されおいるこずを確認したす。 { " credentials_file " : " ~/.config/gws/credentials.enc " , " encryption " : " AES-256-GCM (key secured by OS Keyring or local `.encryption_key` ) " , " message " : " Authentication successful. Encrypted credentials saved. " , " scopes " : [ " https://www.googleapis.com/auth/drive.readonly " , " https://www.googleapis.com/auth/gmail.readonly " , " https://www.googleapis.com/auth/admin.directory.group.readonly " , " https://www.googleapis.com/auth/admin.directory.user.readonly " , " https://www.googleapis.com/auth/calendar.readonly " , " https://www.googleapis.com/auth/cloud-platform " ] , " status " : " success " } cloud-platform スコヌプは gws auth login の実行時に自動で远加されたす。 Gemini CLI の蚭定 以䞋のコマンドで Gemini CLI の Extension拡匵機胜ずしお、Google Workspace CLI をむンストヌルしたす。 gemini extensions install https://github.com/googleworkspace/cli 以䞋の譊告が衚瀺された堎合、 Y を入力しお Enter を抌したす。 The extension you are about to install may have been created by a third-party developer and sourced from a public repository. Google does not vet, endorse, or guarantee the functionality or security of extensions. Please carefully inspect any extension and its source code before installing to understand the permissions it requires and the actions it may perform.   Agent skills inject specialized instructions and domain-specific knowledge into the agent ' s system prompt. This can change how the agent interprets your requests and interacts with your environment. Review the skill definitions at the location(s) provided below to ensure they meet your security standards. Do you want to continue? [Y/n]:Y この譊告は、サヌドパヌティ補の拡匵機胜が゚ヌゞェントのシステムプロンプトに指瀺を远加し、動䜜に圱響を䞎える可胜性があるこずを瀺しおいたす。むンストヌル前に゜ヌスコヌドや暩限を確認するこずが掚奚されおいたす。 以䞋のコマンドで google-workspace-cli が拡匵機胜ずしお登録されおいるこずを確認したす。 gemini extensions list 2 >&1 | grep -n " google-workspace-cli "   # 出力䟋 25:✓ google-workspace-cli ( latest ) 28: Path: ~/.gemini/extensions/google-workspace-cli 34: ~/.gemini/extensions/google-workspace-cli/CONTEXT.md 動䜜怜蚌 ナヌザヌおよびグルヌプのリストアップ Gemini CLI を起動し、以䞋プロンプトを入力したす。 Google Workspace のナヌザヌを䞀芧で確認したい 以䞋のように gws コマンドの実行蚱可が出るこずを確認し、蚱可したす。 > Google Workspace のナヌザヌを䞀芧で確認したい   Action Required Shell: gws admin users list ...省略 Allow execution of: ' gws ' ? 1 . Allow once 2 . Allow for this session 3 . No, suggest changes ( esc )   ナヌザヌが 10 件衚瀺されるこずを確認したす。 # 出力䟋各皮倀はマスク   ✩ Google Workspace のナヌザヌ䞀芧最初の 10 件を取埗したした。   ┌───────────────────────┬──────────────────┬───────────────────────────────────┐ │ ID │ 氏名 │ プラむマリメヌルアドレス │ ├───────────────────────┌──────────────────┌──────────────────────────────────── │ 1070 *********** 6529 │ g*** s******* │ 13 ****.***@***************.** │ │ 1161 *********** 2967 │ や******** │ a*************@***************.** │ │ 1015 *********** 9379 │ あ******* │ a******@***************.** │ │ 1161 *********** 5713 │ こ******** │ a*********@***************.** │ │ 1031 *********** 8256 │ し****** │ b**@***************.** │ │ 1158 *********** 3809 │ t*** C***** │ c*****@***************.** │ │ 1089 *********** 0291 │ み******** │ c***************@***************.** │ │ 1071 *********** 2585 │ t*** C** │ c*******.****@***************.** │ │ 1159 *********** 7349 │ で******** │ d*******@***************.** │ │ 1168 *********** 3985 │ t*** s***** │ d****************@***************.** │ └───────────────────────┮──────────────────┮───────────────────────────────────┘   さらに倚くのナヌザヌを確認したい堎合や、特定の条件で絞り蟌みたい堎合はお知らせください。   次に以䞋プロンプトで、最終ログむン日時をもずに集蚈したす。 最終ログむンが1週間前のナヌザヌが䜕名いるか知りたい Gemini CLI は gws admin users list を実行しおナヌザヌの lastLoginTime を取埗し、その結果をもずに最終ログむン日時を集蚈したした。 # 出力䟋   ✩ 党ナヌザヌ 100 名を調査した結果、以䞋のようになりたした。   * 最終ログむンが 1 週間以䞊前のナヌザヌ 71 名 * ただ䞀床もログむンしおいないナヌザヌ 9 名 * 過去 1 週間以内にログむンしたナヌザヌ 20 名 次に、ナヌザヌが所属しおいる Google グルヌプを確認したす。 miura@dev.g-gen.co.jp が所属しおいる Google グルヌプを知りたい Gemini CLI は最初に gws admin groups list を実行したしたが、 fields の指定方法が誀っおいたため䞀床゚ラヌになりたした。その埌、 fields を --params 内ぞ移しお再実行し、正垞に結果を取埗できたした。 # 出力䟋メヌルアドレスはマスク   ✩ miura@dev.g-gen.co.jp が所属しおいる Google グルヌプは以䞋の通りです。   ┌─────────────────────────────────────┬─────────────────────────┐ │ メヌルアドレス │ グルヌプ名 │ ├─────────────────────────────────────┌────────────────────────── │ m*******************@************** │ m********************* │ │ m***************@************** │ a** │ │ t***@************** │ t*** │ └─────────────────────────────────────┮─────────────────────────┘ 予定のリストアップGoogle カレンダヌ 以䞋プロンプトを入力し、今日の予定を䞀芧で確認したす。 今日の予定を䞀芧で確認したい。開始時刻、タむトル、参加者の有無だけ出しお 本日の予定が䞀芧衚瀺されるこずを確認したす。 # 出力䟋   ✩ 本日の予定は以䞋の通りです。   ┌──────────┬──────────┬────────────────────┐ │ 開始時刻 │ タむトル │ 参加者 │ ├──────────┌──────────┌───────────────────── │ 08:00 │ 䌚議 │ あり ( 自分含め 2 名 ) │ └──────────┮──────────┮────────────────────┘   他に確認したい時間垯や、特定の予定の詳现が必芁であればお知らせください。   次に、来週の平日 13:00〜18:00 の空き時間を確認したす。 来週の平日、13:00〜18:00 の間で予定が入っおいない時間垯を日ごずに教えお 来週の空き時間が日別に出力されるこずを確認したす。 # 出力䟋   ✩ 来週の平日 2026 / 03 / 09 〜 03 / 13 、13:00〜18:00 の空き時間は以䞋の通りです。     * 3 / 9 ( 月 ) : 13:00 〜 18:00終日空いおいたす * 3 / 10 ( 火 ) : 空き時間なし * 3 / 11 ( æ°Ž ) : 13:00 〜 18:00終日空いおいたす * 3 / 12 ( 朚 ) : 13:00 〜 18:00終日空いおいたす * 3 / 13 ( 金 ) : 13:00 〜 14:00、15:00 〜 18:00     予定の調敎やミヌティングの䜜成など、他にお手䌝いできるこずはありたすか   ファむルのリストアップGoogle ドラむブ 以䞋プロンプトを入力し、マむドラむブのファむルを新しい順に 10 件取埗したす。 マむドラむブのファむルを新しい順に 10 件だけ確認したい。ファむル名、皮類、曎新日時を出しお Gemini CLI は gws drive files list を実行したす。なお、 fields は --fields ではなく --params 内に指定する必芁があり、最初の実行で゚ラヌになった埌、Gemini CLI が自動で修正し再実行したした。 # 出力䟋ファむル名はマスク   ┌───────────────┬─────────────────────────┬─────────────────────┐ │ ファむル名 │ 皮類 ( MIMEタむプ ) │ 曎新日時 ( UTC ) │ ├───────────────┌─────────────────────────┌────────────────────── │ **** │ Google ドキュメント │ 2025-07-16 04:52:29 │ │ **** │ Google スラむド │ 2025-07-14 15:52:29 │ │ **** │ Google スプレッドシヌト │ 2025-07-14 15:50:37 │ │ **** │ PDF │ 2025-07-13 13:29:10 │ │ **** │ テキストファむル │ 2025-03-10 07:40:26 │ │ **** │ フォルダ │ 2025-03-10 07:40:24 │ │ 
 │ 
 │ 
 │ └───────────────┮─────────────────────────┮─────────────────────┘   次に、盎近 7 日以内に曎新されたファむルに絞り蟌みたす。 盎近 7 日以内に曎新された Google Drive のファむルだけを䞀芧で確認したい。ファむル名ず曎新日時を出しお 確認した結果、該圓ファむルが存圚しない堎合はその旚が衚瀺されるこずを確認したす。 ✩ 盎近 7 日以内 2026 幎 2 月 27 日以降に曎新された Google Drive のファむルは芋぀かりたせんでした。     参考たでに、先ほど確認したマむドラむブの最新ファむルは 2025 幎 7 月に曎新された「****」でした。より長い期間䟋盎近 1 ヶ月や 1 幎で確認したい堎合は、その旚お知らせください。 メヌルのリストアップGmail 以䞋プロンプトを入力し、受信トレむの最新メヌルを 10 件取埗したす。 受信トレむのメヌルを新しい順に 10 件だけ確認したい。差出人、件名、受信日時を出しお Gemini CLI は gws gmail users messages list / get を甚いおメヌル䞀芧を取埗し、衚圢匏に敎圢しお衚瀺したす差出人・件名は蚘事掲茉甚にマスクしおいたす。 # 出力䟋差出人・件名はマスク   ┌───────────────┬───────────────┬────────────────────┐ │ 差出人 │ 件名 │ 受信日時 ( JST換算 ) │ ├───────────────┌───────────────┌───────────────────── │ ******** │ ******** │ 2026 / 03 / 04 10:50 │ │ ******** │ ******** │ 2026 / 03 / 03 17:40 │ │ ******** │ ******** │ 2026 / 03 / 03 02:01 │ │ 
 │ 
 │ 
 │ └───────────────┮───────────────┮────────────────────┘   次に、未読メヌルに絞り蟌んで最新 10 件を取埗したす。 未読メヌルを新しい順に 10 件だけ確認したい。差出人、件名、受信日時を出しお # 出力䟋差出人・件名はマスク   ✩ 未読メヌルの最新 10 件は以䞋の通りです。   ┌───────────────┬───────────────┬────────────────────┐ │ 差出人 │ 件名 │ 受信日時 ( JST換算 ) │ ├───────────────┌───────────────┌───────────────────── │ ******** │ ******** │ 2026 / 03 / 04 10:50 │ │ ******** │ ******** │ 2026 / 03 / 03 17:40 │ │ 
 │ 
 │ 
 │ └───────────────┮───────────────┮────────────────────┘ 䞉浊 健斗 (蚘事䞀芧) クラりド゜リュヌション郚 2023幎10月よりG-genにゞョむン。元オンプレ䞭心のネットワヌク゚ンゞニア。 ネットワヌク・セキュリティ・唐揚げ・蟛いものが奜き。 Google Cloud Partner All Certification Holders 2025 / Google Cloud Partner Top Engineer 2026
G-gen のminです。BigQuery の デヌタマスキング 機胜を解説したす。デヌタマスキングを䜿うず、機密情報をマスキングしお特定できない圢でク゚リ結果に衚瀺させるこずができ、分析を阻害せずにデヌタを保護するこずができたす。 デヌタマスキングずは 抂芁 列レベルのアクセス制埡ずの違い 仕組み 暩限ずロヌル マスキングルヌルの皮類 定矩枈みルヌル カスタムマスキングルヌチン ルヌルの優先順䜍 蚭定手順 分類ずポリシヌタグの䜜成 デヌタポリシヌの䜜成 テヌブル列ぞのタグ付け デヌタポリシヌの列ぞの盎接付䞎 制玄ず泚意点 互換性のない機胜 SQL で利甚する際の泚意点 コストぞの圱響 セキュリティの考慮事項 デヌタマスキングずは 抂芁 BigQuery の デヌタマスキング ずは、BigQuery テヌブルの特定の列に察しお、ナヌザヌの暩限に応じおデヌタをマスクしお衚瀺する機胜です。 ポリシヌタグず呌ばれるタグをテヌブルの列に付䞎するこずで、誰が機密情報に盎接アクセスできるか、あるいはマスクされた状態でアクセスできるか、たたマスキングをどのように行うかを定矩したす。この機胜により、分析を阻害せずにデヌタを保護するこずができたす。 参考 : Introduction to data masking 列レベルのアクセス制埡ずの違い BigQuery で特定の列を保護する他の機胜ずしお、 列レベルのアクセス制埡 がありたす。 参考 : BigQueryの列レベルのアクセス制埡・行レベルのセキュリティを解説 - G-gen Tech Blog 列レベルのアクセス制埡ずデヌタマスキングの䞻な違いは、「暩限がない堎合に゚ラヌにするか、マスクしお芋せるか」ずいう点です。 比范項目 列レベルのアクセス制埡 デヌタマスキング 䞻な目的 特定の列ぞのアクセス自䜓を制限する アクセスを蚱可し぀぀、倀を加工しおマスクする 暩限がない堎合の挙動 ク゚リに含めるず゚ラヌAccess Deniedになる 倀がマスクされお衚瀺される 分析ぞの圱響 ク゚リ自䜓が実行できない マスクされた状態で集蚈や結合が可胜 䞻なナヌスケヌス 閲芧を完党に犁止すべき極めお機密性の高い情報 個人の特定は避け぀぀、統蚈分析には利甚したい情報 列レベルのアクセス制埡では、暩限のないナヌザヌが機密情報の列を含むク゚リを実行するず ゚ラヌ になりたす。 䞀方、デヌタマスキングを䜿甚するず、暩限のないナヌザヌでもク゚リ自䜓は成功させ぀぀、デヌタの倀をハッシュ倀や NULL、あるいは「XXXX」のように、 別の文字列に眮き換えお衚瀺 させるこずができたす。 仕組み デヌタマスキングは、以䞋のように蚭定されたす。 分類Taxonomyずポリシヌタグの䜜成 分類はデヌタの意味的な区分を衚すコンテナです。この分類の䞭に、「個人情報」「機密情報」など耇数のポリシヌタグを定矩できたす。各ポリシヌタグには IAM ロヌルを盎接玐づけるこずが可胜です。 デヌタポリシヌの䜜成 ポリシヌタグに察しお、「どのようなマスキングルヌルを適甚するか」ず「どのプリンシパルに適甚するか」を定矩したす。 テヌブル列ぞの適甚 テヌブルの列にポリシヌタグを玐付けたす。 ポリシヌが適甚された列ぞク゚リが実行されるず、ク゚リ実行時に以䞋のように動的に衚瀺結果に反映されたす。 タグに玐づく IAM ポリシヌが評䟡される 察象ナヌザヌのロヌルが確認される 必芁に応じおマスキングルヌルが適甚される 暩限ずロヌル デヌタマスキングの挙動は、ナヌザヌが持぀ IAM ロヌルによっお決定されたす。䞻に以䞋の2぀のロヌルが関係したす。 ロヌル名 ID 暩限の内容 きめ现かい読み取り roles/datacatalog.categoryFineGrainedReader 元のマスクされおいない生デヌタを閲芧できる。 マスクされた読み取り roles/bigquerydatapolicy.maskedReader マスクされたデヌタを閲芧できる。 ナヌザヌが䞊蚘のどちらの暩限も持っおいない堎合、 Access Denied ゚ラヌずなり、ク゚リは倱敗したす。 マスキングルヌルの皮類 定矩枈みルヌル デヌタポリシヌには、以䞋の定矩枈みのマスキングルヌルを適甚できたす。 参考 : Introduction to data masking - Data masking rules ルヌル名 動䜜抂芁 適甚可胜なデヌタ型 ハッシュSHA-256 倀を SHA-256 でハッシュ化しお衚瀺したす。同じ倀は垞に同じハッシュ倀になる決定論的であるため、JOIN のキヌずしお利甚可胜です。 STRING, BYTES メヌルマスク メヌルアドレスの @ の前を XXXXX に眮き換えたす䟋: XXXXX@gmail.com 。無効な圢匏の堎合は SHA-256 ハッシュ化されたす。 STRING 先頭/末尟 4 文字 先頭たたは末尟の 4 文字のみを衚瀺し、残りを XXXXX に眮き換えたす。文字列が短い堎合は SHA-256 ハッシュ化されたす。 STRING 幎月日マスク 日付をその幎の1月1日に切り詰めたす䟋: 2026-02-14 → 2026-01-01 。 DATE, DATETIME, TIMESTAMP デフォルトのマスキング倀 デヌタ型に応じたデフォルト倀を返したす。 党おの型 NULL 化 NULL を返したす。デヌタ型自䜓もマスクしたい堎合に䜿甚したす。 党おの型 ランダムハッシュ 読み取りごずに䞀意の゜ルトを自動生成しお非決定論的にハッシュ化したす。同じ倀でもク゚リごずに結果が倉わるため、セキュリティ匷床は高いですが、異なるク゚リ間での JOIN はできたせん。ポリシヌタグでは䜿甚できず、列に盎接付䞎するデヌタポリシヌで䜿甚できたす STRING, BYTES カスタムマスキングルヌチン 定矩枈みのマスキングルヌルの他に、ナヌザヌ定矩関数を䜿甚しお、独自のマスキングロゞックを䜜成するこずも可胜です。䟋えば、「電話番号の䞋4桁だけを衚瀺する」「特定の蟞曞に基づいお眮換する」ずいった高床な芁件に察応できたす。 ただし、 STRUCT 型には察応しおいたせん STRUCT の䞭の各フィヌルドに察しおは適甚可胜です。 ルヌルの優先順䜍 1぀のポリシヌタグに察しお、耇数のデヌタポリシヌを蚭定するこずが可胜です。ナヌザヌが耇数のグルヌプに所属しおいる堎合など、耇数のルヌルが同時に適甚されるナヌスケヌスでは、以䞋の優先順䜍に埓っお、最も具䜓的で有甚性の高いルヌルが優先されたす。 カスタムマスキングルヌチン ランダムハッシュ ハッシュSHA-256 メヌルマスク 末尟 4 文字 先頭 4 文字 幎月日マスク デフォルトのマスキング倀 NULL 化 䟋えば、あるナヌザヌに察しお「ハッシュ」の暩限ず「NULL 化」の暩限の䞡方が䞎えられおいる堎合、優先床の高い「ハッシュ」が適甚されたす。 参考 : Introduction to data masking - Data masking rule hierarchy 蚭定手順 参考 : Mask column data 分類ずポリシヌタグの䜜成 Google Cloud コン゜ヌルの BigQuery > ポリシヌタグ を遞択したす。 分類Taxonomyずポリシヌタグを䜜成したす。 デヌタポリシヌの䜜成 䜜成したポリシヌタグを遞択し、デヌタポリシヌを管理を遞択したす。 「マスキングルヌル」ず「察象のプリンシパルナヌザヌやグルヌプ」を指定したす。 指定されたプリンシパルに roles/bigquerydatapolicy.maskedReader ロヌルが付䞎されたす。 テヌブル列ぞのタグ付け BigQuery のテヌブルスキヌマ線集画面 > Add policy tag を遞択しお、察象の列にポリシヌタグを付䞎したす。 デヌタポリシヌの列ぞの盎接付䞎 別の蚭定手順ずしお、ポリシヌタグを䜜成せずに、 デヌタポリシヌをテヌブルの列に盎接玐付ける こずができたす。 ただし2026幎2月珟圚、この蚭定方法は Preview です。たた2026幎2月珟圚、コン゜ヌル画面からの蚭定操䜜はできず、SQL を実行するか、REST API ぞのリク゚ストによっお蚭定したす。 この蚭定方法を䜿う堎合は、いく぀かの制玄事項がありたすので、䜿甚の際は必ず公匏ドキュメントを確認しおください。 参考 : Mask column data - Mask data by applying data policies to a column 以䞋に、SQL を䜿った蚭定操䜜を玹介したす。  CREATE TABLE たたは ALTER TABLE ステヌトメントを䜿甚し、 OPTIONS 句でデヌタポリシヌを指定したす。 デヌタポリシヌの䜜成 -- 䟋: デヌタポリシヌ「ハッシュSHA-256」のマスキングを東京リヌゞョンに䜜成 CREATE DATA_POLICY `your-project-id.region-asia-northeast1.test_direct_masking_policy` OPTIONS( data_policy_type= " DATA_MASKING_POLICY " , masking_expression= " SHA256 " ); テヌブル列ぞのポリシヌ適甚 -- 䟋: 既存の列にデヌタポリシヌを適甚する ALTER TABLE `your-project-id.your-dataset.your- table ` ALTER COLUMN email SET OPTIONS ( data_policies=[ " {'name':'your-project-id.region-asia-northeast1.test_direct_masking_policy'} " ]); 制玄ず泚意点 互換性のない機胜 レガシヌ SQL サポヌトされおいたせん。GoogleSQL を䜿甚する必芁がありたす。 ワむルドカヌドテヌブル ワむルドカヌドを䜿甚したク゚リでは、参照されるすべおのテヌブルのすべおの列に察しお、生デヌタの閲芧暩限「きめ现かい読み取り」が必芁です。 パヌティション/クラスタ化列 パヌティションたたはクラスタ化キヌずしお蚭定されおいる列に察しおデヌタマスキングを適甚した堎合、その列を含むク゚リはサポヌトされたせん。 テヌブルのコピヌ テヌブルコピヌを行うには、゜ヌステヌブルの党列に察する生デヌタの閲芧暩限が必芁です。 SQL で利甚する際の泚意点 マスクされた列を SQL の WHERE 句などで䜿甚する堎合、挙動に泚意が必芁です。 SHA-256 ハッシュなどの決定的なマスキング同じ入力に察しお垞に同じ結果が返るものでは、等䟡比范 = や GROUP BY による集蚈は機胜したすが、倧小比范 > や < や LIKE 怜玢は元の倀に基づいた結果にならないため、意味をなしたせん。 コストぞの圱響 オンデマンドでの BigQuery の料金はスキャンしたデヌタ量に基づきたす。デヌタマスキングで「NULL 化」や「デフォルトのマスキング倀」が適甚される堎合、その列のデヌタはスキャンされず、課金察象のバむト数が削枛される堎合がありたす。 䞀方、ハッシュ化などの蚈算を䌎うマスキングの堎合、通垞通りのスキャン料金が発生したす。 セキュリティの考慮事項 SHA-256 ハッシュは決定論的であるため、ブルヌトフォヌス攻撃に察しお脆匱になる可胜性がありたす。攻撃者が元の倀のリストを持っおいる堎合、それらをハッシュ化しお比范するこずで、元の倀を掚枬できる可胜性がありたす。 より高いセキュリティが必芁な堎合は、NULL 化やデフォルトマスキングルヌル、あるいは非決定論的なハッシュ化を行うランダムハッシュなど別のマスキング方法を怜蚎しおください。ただし、前述のずおり、ランダムハッシュは列に盎接デヌタポリシヌを付䞎する堎合にのみ䜿甚できたす2026幎2月珟圚、Preview。 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の助田です。圓蚘事では、 Network Connectivity Center を䜿い、異なるプロゞェクトの VPC ネットワヌク同士を接続する手順を解説したす。 はじめに Network Connectivity Center ずは 怜蚌シナリオ ハむブリッドスポヌク䜿甚時の泚意点 蚭定手順 事前準備 プロゞェクト A: NCC ハブの䜜成ずスポヌクの接続 プロゞェクト B: スポヌクの䜜成ず接続リク゚ストの送信 プロゞェクト A: 接続リク゚ストの承認 疎通確認 ルヌトテヌブルの確認 PING による疎通テスト はじめに Network Connectivity Center ずは Network Connectivity Center 以䞋、NCCは、Google Cloud 䞊の VPC ネットワヌクやオンプレミスネットワヌク等を、ハブアンドスポヌクモデルで䞀元管理するためのネットワヌク接続管理サヌビスです。耇数の VPC ネットワヌクを統合管理し、掚移的ルヌティングや拠点間接続を実珟できたす。 NCC の基本的な仕様や詳现な説明に぀いおは、以䞋の蚘事をご参照ください。 blog.g-gen.co.jp 怜蚌シナリオ 圓蚘事では、ハブを管理するプロゞェクト A ず、そこぞ接続するスポヌクを持぀プロゞェクト B の構成を怜蚌したす。 具䜓的には、プロゞェクト A に䜜成する NCC ハブ ncc-hub-central に察しお、自プロゞェクトの VPC ネットワヌク vpc-a ず、別プロゞェクトであるプロゞェクト B の VPC ネットワヌク vpc-b を、それぞれスポヌクずしお接続したす。これにより、異なるプロゞェクトに存圚する VPC ネットワヌク間で経路情報を亀換し、 盞互通信が可胜な状態 を実珟したす。 構成図は、以䞋の通りです。 構成図 リ゜ヌス定矩は以䞋の通りです。 項目 プロゞェクト Aハブ管理 プロゞェクト Bスポヌク接続 プロゞェクト ID project-a-hub project-b-spoke VPC ネットワヌク名 vpc-a vpc-b サブネット subnet-a 10.0.0.0/24  subnet-b 172.16.0.0/24  リヌゞョン asia-northeast1 asia-northeast1 NCC ハブ名 ncc-hub-central - スポヌク名 spoke-a spoke-b ハむブリッドスポヌク䜿甚時の泚意点 圓蚘事ではプロゞェクトを跚いだ VPC スポヌク の接続手順を玹介したすが、プロゞェクト間接続においお、ハむブリッドスポヌクCloud VPN、Cloud Interconnect、ルヌタヌ アプラむアンスは、 ハブず同じプロゞェクト内に存圚する必芁 がありたす。 䟋えば、倖郚ネットワヌクオンプレミスや他クラりド等ずの接続甚リ゜ヌスをスポヌク偎のプロゞェクト今回の䟋ではプロゞェクト Bに配眮し、プロゞェクト A のハブぞ接続するこずはできたせん。ハむブリッド接続を行う堎合は、 ハブ偎のプロゞェクトぞリ゜ヌスを集玄しなければならない ずいう蚭蚈䞊の制玄に留意が必芁です。 参考 : ハむブリッドスポヌク 蚭定手順 事前準備 プロゞェクトを跚いだネットワヌク構成ずする堎合、各プロゞェクトでの䜜業内容に応じお適切な IAM 暩限の付䞎が必芁です。今回は以䞋の䜜業を実斜するため、それぞれのプロゞェクトで暩限を蚭定したす。 圓蚘事の䜜業では、プロゞェクト A においお、ハブの䜜成や別プロゞェクトからの接続承認、および自プロゞェクトの VPC ネットワヌクのスポヌク化を行いたす。この䜜業のためにハブの䜜成者が必芁な暩限は以䞋のずおりです。 リ゜ヌス ロヌル プロゞェクト A ・ハブ アンド スポヌク管理者 roles/networkconnectivity.hubAdmin  ・スポヌク管理者 roles/networkconnectivity.spokeAdmin  ・Compute ネットワヌク管理者 roles/compute.networkAdmin  䞀方のプロゞェクト B では、スポヌクを䜜成し、プロゞェクト A のハブに察しお接続リク゚ストを送信したす。この䜜業のためにスポヌクの䜜成者が必芁な暩限は以䞋のずおりです。 リ゜ヌス ロヌル プロゞェクト A ・グルヌプ ナヌザヌ roles/networkconnectivity.groupUser  プロゞェクト B ・スポヌク管理者 roles/networkconnectivity.spokeAdmin  ・Compute ネットワヌク管理者 roles/compute.networkAdmin  䞊蚘では、プロゞェクト A ず B にそれぞれ別の管理者がいる前提で必芁な暩限を分けお蚘茉したしたが、䞡方のプロゞェクトに察しお同じ管理者が操䜜をしおも構いたせん。 参考 : ハブずスポヌクを操䜜する 参考 : 別のプロゞェクトでスポヌクを提案する プロゞェクト A: NCC ハブの䜜成ずスポヌクの接続 たずはネットワヌクの䞭心ずなるハブを䜜成し、プロゞェクト A 自身の VPC ネットワヌクを接続したす。 NCC ハブのトポロゞを遞択したす。今回は盞互通信を行うため、 メッシュ トポロゞ を遞択したす。 ハブ -トポロゞ遞択- ハブ名を入力し、䜜成ボタンを抌䞋したす。スポヌクの远加は埌ほど行いたす ハブ -構成- 続いお、スポヌクを䜜成したす。先ほど䜜成したハブに、 vpc-a をスポヌク spoke-a ずしお接続したす。 スポヌクA -接続先のハブ蚭定- スポヌクA -線集- 同䞀プロゞェクト内のスポヌク接続では特別な承認ステップは発生せず、䜜成盎埌にスポヌクのステヌタスが Active ずなりたす。 スポヌクA -䜜成完了埌- プロゞェクト B: スポヌクの䜜成ず接続リク゚ストの送信 次に、プロゞェクト B でスポヌクを䜜成し、別プロゞェクトにある NCC ハブぞ接続したす。 接続するハブのロケヌションを指定したす。別のプロゞェクトにあるハブぞ接続するため、 「別のプロゞェクト内」 を遞択し、ハブが存圚する プロゞェクト ID ず ハブ名 を指定しお、次のステップを抌䞋したす。 スポヌクB -接続先のハブ蚭定- vpc-b をスポヌク spoke-b ずしお䜜成したす。 スポヌクB -線集- 䜜成完了埌、スポヌクのステヌタスが 「確認埅ちPending」 ずなるこずを確認したす。 スポヌクB -承認埅ち- この時点では経路情報の亀換は行われおおらず、VPC ネットワヌク間での通信はできたせん。 プロゞェクト A: 接続リク゚ストの承認 プロゞェクト間のスポヌク接続においおは、ハブ管理者が リク゚ストを承認する こずでハブぞの接続が有効化されたす。 プロゞェクト A のハブ詳现画面から、ステヌタスが [確認埅ち] のスポヌクを遞択したす。 リク゚スト内容を確認埌、 [スポヌクを承認] を抌䞋し、接続を承認したす。 スポヌクB -承認実行- 承認埌、ステヌタスが Active ずなりたす。 スポヌクB -承認枈- 疎通確認 ルヌトテヌブルの確認 接続完了埌、NCC ハブおよび各 VPC ネットワヌクのルヌトテヌブルを参照し、以䞋の通りルヌトが远加されおいるこずを確認したす。 NCC ハブのルヌトテヌブル スポヌク A 10.0.0.0/24 およびスポヌク B 172.16.0.0/24 のサブネットルヌトが孊習されおいるこずを確認したす。 NCC ハブのルヌトテヌブル VPC ネットワヌク A のルヌトテヌブル ネクストホップを NCC ハブずする 172.16.0.0/24 ぞのルヌトが自動远加されおいるこずを確認したす。 VPC-A ルヌトテヌブル VPC ネットワヌク B のルヌトテヌブル 同様に 10.0.0.0/24 ぞのルヌトが远加されおいるこずを確認したす。 VPC-B ルヌトテヌブル PING による疎通テスト 怜蚌甚に䜜成した各 VPC ネットワヌク内の VM 間で、プラむベヌト IP アドレスによる疎通を確認したした。 # VPC ネットワヌク B の VM から、VPC ネットワヌク A のVM10.0.0.2ぞ ping 実行 ping 10 . 0 . 0 . 2 -c 4 PING 10 . 0 . 0 . 2 ( 10 . 0 . 0 . 2 ) 56 ( 84 ) bytes of data. 64 bytes from 10 . 0 . 0 .2: icmp_seq = 1 ttl = 64 time = 1 . 23 ms 64 bytes from 10 . 0 . 0 .2: icmp_seq = 2 ttl = 64 time = 0 . 456 ms 64 bytes from 10 . 0 . 0 .2: icmp_seq = 3 ttl = 64 time = 0 . 421 ms 64 bytes from 10 . 0 . 0 .2: icmp_seq = 4 ttl = 64 time = 0 . 443 ms --- 10 . 0 . 0 . 2 ping statistics --- 4 packets transmitted, 4 received, 0 % packet loss, time 3004ms rtt min/avg/max/mdev = 0 . 421 / 0 . 637 / 1 . 230 / 0 . 342 ms NCC ハブを介しお、プロゞェクトを跚いだ通信が正垞に行われおいるこずが確認できたした。 助田 真茝 (蚘事䞀芧) クラりド゜リュヌション郚所属。2024幎11月、G-genにゞョむン。クラりドむンフラ蚭蚈、特にネットワヌクずセキュリティ分野に匷い関心を持ち、関連技術の探求に日々取り組む。