TECH PLAY

株式会社G-gen

株式会社G-gen の技術ブログ

798

G-genの杉村です。当記事では、BigQuery に対して自然言語によってデータの抽出や分析を行うための方法を10個紹介します。BigQuery の Conversational Analytics、Gemini Enterprise の Data Insights エージェント、MCP サーバーの利用など、現在ではさまざまな手段が用意されています。 はじめに 自然言語によるデータベースへのクエリ 10個の方法 注意点 Looker Studio Pro(Conversational Analytics) Looker(Conversational Analytics) Gemini Enterprise(Data Insights エージェント) BigQuery data agents(Conversational Analytics) BigQuery データキャンバス Gemini in BigQuery MCP サーバーの利用 Colab Enterprise(Data Science Agent) Agent Development Kit(BigQuery ツールセット) LLM アプリケーションの実装 はじめに 自然言語によるデータベースへのクエリ これまでのデータ分析業務では、アナリストやエンジニアが SQL を記述してデータを抽出する必要がありました。しかし生成 AI の発達に伴い、SQL を書かなくても、 自然言語 (私たちが普段使う言葉)でデータベースからデータを抽出することができるようになりました。なお自然言語による人間の指示を AI 等が SQL に変換する技術のことを NL2SQL (Natural Language to SQL)と呼びます。 こういった技術を使うことで、非エンジニアや非アナリストでも「昨日の売上を商品カテゴリごとに集計して」といった自然言語の指示でデータを抽出できます。サービスによっては、ユーザーは自動的に生成された SQL を意識する必要さえなく、AI が抽出結果や分析結果だけを返してくれます。 当記事では、Google Cloud が提供する分析用データベースである BigQuery に対して、自然言語でクエリや分析を行う10個の方法を解説します。 10個の方法 当記事で紹介する手法は、以下のとおりです。 BigQuery に自然言語で問い合わせる方法の一覧 以下のリストは、技術的な難易度や実装の工数が低い方から順番に並べています。なお、表の「追加金銭コスト」は、BigQuery の料金とは別に追加で発生する料金等を指します。例えば Looker Studio Pro(Conversational Analytics)では、BigQuery の利用料金のほかに、Looker Studio Pro のライセンス料金が発生します。「高」「中」「低」は、上記表の中で比較した相対的なものです。 難易度 手法名称 概要 追加金銭コスト 1 Looker Studio Pro (Conversational Analytics) Looker Studio Pro に付属する対話型分析 低 2 Looker (Conversational Analytics) Looker に付属する対話型分析 高 3 Gemini Enterprise (Data Insights エージェント) AI プラットフォーム Web ツール「Gemini Enterprise」の対話型 AI エージェント 中 4 BigQuery data agents (Conversational Analytics) Google Cloud コンソール画面に付属する対話型分析 なし 5 BigQuery データキャンバス BigQuery Studio(Web コンソール)で使える AI 補助ありのテーブル分析機能 なし 6 Gemini in BigQuery BigQuery Studio(Web コンソール)で使える AI による SQL コーディング補助 なし 7 MCP サーバー の利用 Gemini CLI や IDE 等から MCP サーバーを通じて BigQuery にアクセス 低(※) 8 Colab Enterprise (Data Science Agent) Colab Enterprise ノートブック上でデータサイエンティストによる分析を補助 中 9 Agent Development Kit (BigQuery ツールセット) ADK で BigQuery にアクセスする AI エージェントを実装 低(※) 10 LLM アプリケーション の実装 フルスクラッチで自然言語問い合わせアプリを実装 ツールに依存 ※トークン量(AI への入出力データ量)に応じて変動する 注意点 Google Cloud に組み込まれている生成 AI 機能では、基本的に LLM への入出力データは保護され、Google によりモデルの再トレーニング等に利用されることはありません。当記事で紹介した手法のうち、Google Cloud 関連サービス(Looker Studio Pro、Looker、Gemini Enterprise、BigQuery、Colab Enterprise、Gemini CLI の特定の利用方法など)では、データは保護されます。 参考 : Vertex AI とデータの保持ゼロ 参考 : Service Specific Terms しかし、無償版の Google AI Studio(API キーの発行含む)を使用したり、個人 Google アカウントで Gemini CLI にログインしたりした場合、データは Google のサービス改善や、モデルの再トレーニングに使用される可能性があります。 機密情報 を扱ったり、 企業データの保護 を図る場合は、有償版サービスや Google Cloud サービスを利用する必要がある点に十分留意してください。 Looker Studio Pro(Conversational Analytics) Looker Studio は、Google Cloud の可視化ダッシュボードツールです。Google アカウントがあれば無償で使える無償版と、組織向けの管理機能を強化した有償の Looker Studio Pro が用意されています。なお、後述の Looker と Looker Studio は名称が似ているものの別製品であり、性質が異なります。詳細は以下の記事も参照してください。 blog.g-gen.co.jp 有償版の Looker Studio Pro には Gemini in Looker Studio の機能が付属しており、その中の1機能が Conversational Analytics (対話型分析)です。Conversational Analytics は、ユーザーからの自然言語指示によりデータを抽出したり、分析をすることができる機能です。 参考 : Conversational Analytics in Looker Studio overview Looker Studio Pro の Conversational Analytics Looker Studio にはデータソースとして BigQuery を簡単に接続可能です。Conversational Analytics を使うと、データソースとして追加された BigQuery のテーブルやビュー等に対して、自然言語でクエリすることができます。SQL や IT 技術の知識は不要です。 2025年12月現在、Looker Studio Pro の Conversational Analytics は Preview 公開の位置づけであり、通常のライセンス料金($9/ユーザー/月)のほかは、追加の課金は発生しません。 参考 : Looker Studio の料金 Looker(Conversational Analytics) Looker は、Google Cloud のエンタープライズ向け BI プラットフォームです。Looker には Gemini in Looker が搭載されており、生成 AI モデルである Gemini が、ユーザーによるデータの探索や分析を補助してくれます。 Gemini in Looker の1機能である Conversational Analytics (対話型分析)は、ユーザーからの自然言語指示によりデータを抽出したり、分析をすることができる機能です。 参考 : Conversational Analytics in Looker overview Looker の Conversational Analytics は、Looker Studio Pro の Conversational Analytics と類似の機能ではありますが、Looker では事前に独自言語である LookML を用いてディメンションとメジャーを定義する必要がある点が異なります。これは AI 機能とは関係なく、Looker の特徴として必要な工程です。LookML によるセマンティックレイヤの定義は、Looker の最大の強みでもあります。ただし、この LookML によるセマンティックレイヤをメンテナンスする体制が必要になることから、初期導入や運用の難易度は Looker Studio よりも高くなります。ただし、データ管理者により上記のような定義が一度されてしまえば、一般ユーザーにとっては SQL 等の知識なく、データの抽出や分析が可能になります。 なお Looker の Conversational Analytics の料金は、2026年9月30日までは割り当て(クォータ)制限や追加料金なしであり、2026年10月1日以降、入出力データのトークン数に応じた料金が発生するとされています。Looker のライセンス料金は、前述の Looker Studio Pro に比較すると高価です。 参考 : Looker pricing Gemini Enterprise(Data Insights エージェント) Gemini Enterprise は、Google Cloud が提供する生成 AI アシスタントサービスです。組織内データを横断検索したり、各種 AI エージェント機能により、人間の業務を効率化します。このプロダクトにより、企業や官公庁等の組織が、組織内のデータを有効活用しつつ、AI の力を借りることができます。 Gemini Enterprise の画面 Gemini Enterprise でできることやライセンス体系、各機能については、以下の記事で詳細に解説されています。 blog.g-gen.co.jp Gemini Enterprise には Data Insights エージェント が搭載されています。自然言語での質問に基づいて AI が SQL を生成し、BigQuery に投入して結果を得て、回答を生成します。 Data Insights エージェントは2025年12月現在、Private Preview であり、使用には Google への申請が必要です。 参考 : Get insights with the Data Insights agent Gemini Enterprise には コネクタ を通じて様々なデータソースを接続可能です。Gemini Enterprise に BigQuery をデータソースとして統合することで、Data Insights エージェントが BigQuery のテーブルやビューにアクセスできるようになります。Gemini Enterprise は Google Cloud と統合されているため、BigQuery との接続作業は容易です。当機能の利用者にとっては、SQL や技術的な知識は一切不要です。 Data Insights エージェントの料金は Gemini Enterprise のライセンス料金に組み込まれています。一般公開後は、割り当て制限が適用される可能性があります。 BigQuery data agents(Conversational Analytics) BigQuery には、 Conversational Analytics (対話型分析)機能が備わっています。Google Cloud の Web コンソール画面で BigQuery の画面に遷移し、左部のメニューから「エージェント」を選択するだけで、Conversational Analytics 機能にアクセスできます。 この機能では、AI とのチャット形式で、データに関する質問をすることができます。AI は自動的にクエリを生成して、テキストや図表を使ってユーザーに回答します。 同機能は2026年1月29日に Preview 公開され、同日現在では無料で使用できます(BigQuery へのクエリ料金は通常どおり発生します)。 参考 : Conversational analytics overview BigQuery の Conversational Analytics 機能 同機能を使用するには、まず管理者が データエージェント を作成します。ここでは以下のような設定が可能です。 データソースとなるテーブル、ビュー、UDF(ユーザー定義関数) システム指示(エージェントに遵守させるプロンプト) 検証済みクエリ(AI が参考にするための、ビジネスロジックを反映したゴールデンクエリ。想定質問とそれに対する SQL を登録) Dataplex 用語集(ユーザープロンプト理解のため AI が参考にする) 課金される最大バイト数(費用スパイクを防止する) エージェント作成画面 作成したエージェントは、IAM による制御で特定の従業員にだけ公開できます。エージェントに質問するユーザーは、エージェントに対する権限に加え、データソースとなるテーブルやビュー等に対する閲覧権限も必要です。 参考 : Analyze data with conversations - Required roles これらの設定により、SQL の知識を持たない一般ユーザーが、BigQuery に日本語などの自然言語を使ってクエリできるようになります。よりよい精度を得るためには、管理者がエージェントを作成する際に、適切なシステム指示や検証済みクエリ、Dataplex 用語集などをエージェントに登録し、 組織のビジネスロジックをエージェントに組み入れる ことが重要です。 BigQuery データキャンバス BigQuery データキャンバス (BigQuery data canvas)は、Google Cloud コンソール上で提供される、自然言語中心のデータ分析インターフェースです。BigQuery に統合された AI 機能群である Gemini in BigQuery 機能の1つです。 従来の SQL エディタとは異なり、テーブル間の関係性が可視化された UI で対話的に分析を進めます。BigQuery データキャンバスはテーブル等のメタデータを解釈できるため、連結すべき対象テーブル等を自然言語によって検索することもできます。 参考 : BigQuery データ キャンバスで分析する BigQuery データキャンバス BigQuery データキャンバスでは、自然言語による対話の結果として SQL が生成 されます。このことからも、当機能の想定ユーザーは比較的 SQL に関する知識があるデータアナリストやデータエンジニアなどであると考えられます。 BigQuery データキャンバスの料金は BigQuery 利用料金に組み込まれており、追加の課金は発生しません。ただし、組織ごとの割り当て制限が存在します。 参考 : Quotas for Gemini in BigQuery 当機能については、以下の当社記事も参照してください。 blog.g-gen.co.jp blog.g-gen.co.jp Gemini in BigQuery BigQuery の Web ユーザーインターフェイスである BigQuery Studio には、標準で Gemini による支援機能が組み込まれています。 SQL エディタ上でコメントとして -- 過去3ヶ月のユーザーごとの購入回数を集計 等と記述して Enter キーを押すと、Gemini がテーブルスキーマを考慮した SQL を提案(オートコンプリート)します。また、既存の複雑な SQL をハイライトして「このクエリを解説して」と依頼することも可能です。 参考 : Gemini のアシスタント機能を使用してクエリを作成する データキャンバスが「対話的な分析体験」を提供するのに対し、こちらは「SQL 記述作業を支援する」位置づけです。利用には、一定の SQL 知識が必要になります。 BigQuery Studio での SQL 生成は BigQuery 利用料金に組み込まれており、追加の課金は発生しません。ただし、データキャンバスと同様、組織ごとの割り当て制限が存在します。 参考 : Quotas for Gemini in BigQuery SQL のサジェスト 当機能については、以下の記事で解説しています。 参考 : Gemini in BigQueryを徹底解説! - G-gen Tech Blog - SQL コーディング補助 MCP サーバーの利用 MCP サーバー を利用することで、Gemini CLI や Curosor 等の IDE といった MCP クライアントから、BigQuery に自然言語でクエリを投入することができます。 Google Cloud は、 Google Cloud MCP servers という、フルマネージドのリモート MCP サーバーを公開しています。これを利用することで、ローカルでの MCP サーバーのセットアップをすることなく、MCP クライアントから BigQuery の MCP サーバーへアクセスできます。 参考 : Google Cloud MCP servers overview 以下の記事も参照してください。 blog.g-gen.co.jp blog.g-gen.co.jp また、Google は BigQuery 等のデータベースへアクセスするためのオープンソースの MCP サーバーである MCP Toolbox for Databases を公開しています。ローカル環境に MCP サーバーをセットアップしたい場合は、こちらの利用も検討します。 参考 : GitHub - googleapis/genai-toolbox また、Gemini CLI BigQuery extensions を使うことで、Gemini CLI から簡単に BigQuery に問い合わせが可能です。 Gemini CLI は、Linux、macOS、Windows 等の Node.js 環境で動作する、オープンソースの生成 AI エージェント CLI ツールです。Gemini CLI は extensions (拡張機能)と呼ばれるアドオンを追加することで、さまざまな機能を拡張できます。 BigQuery extensions を Gemini CLI に追加することで、BigQuery に対するさまざまな操作を自然言語で指示することができます。なお BigQuery extensions は MCP Toolbox for Databases をベースとしています。 参考 : Analyze data with the Gemini CLI Gemini CLI Gemini CLI については、以下の記事で詳細に解説しています。 blog.g-gen.co.jp ターミナルでの作業を行うエンジニアや分析者にとって、CLI や IDE といった使い慣れたツールから自然言語でクエリを BigQuery へクエリできる点は大きなメリットです。一方で、これらのツールはビジネスユーザー向けではありません。 オープンソースツールを利用する場合にはツール自体の利用料金はかかりませんが、CLI の背後で動作する LLM として Gemini 等を利用するため、それらの LLM の利用料金を考慮する必要があります。 Colab Enterprise(Data Science Agent) Colab Enterprise は、Vertex AI および BigQuery 上で動作するマネージドな Jupyter ノートブック環境です。Colab Enterprise の Data Science Agent 機能では、Gemini による支援を受けることができます。 ノートブックのセルにおいて「BigQuery の my_dataset.my_table からデータを読み込んで、Pandas DataFrame に変換し、欠損値を確認して」等と指示すると、必要な Python コード(BigQuery Storage API の利用コード等)を生成します。 参考 : Use the Data Science Agent Colab Enterprise の Data Science Agent Data Science Agent は、SQL だけでなく、Python によるデータサイエンスを自然言語で効率化する場合に適しています。データサイエンティスト等を支援する目的の機能であるため、Python 等の知識が必要であり、ビジネスユーザー向けではありません。 2025年12月現在、Data Science Agent は Preview 段階の機能であり、ノートブックランタイムの料金以外の追加料金は発生しません。 Agent Development Kit(BigQuery ツールセット) ここからは、独自の AI アプリケーション開発の領域に入ります。Google が公開するオープンソースフレームワークである Agent Development Kit (ADK)を使用すると、マルチ AI エージェントを少ないソースコード行数で開発することができます。 ADK では、BigQuery へクエリするモジュールを「ツール(tools)」として LLM に与えることができます。ユーザーの質問(「在庫が少ない商品は?」)に対し、エージェント(LLM)が自律的に「在庫テーブルを検索する必要がある」と判断し、適切な SQL を生成・実行して、結果を回答として返します。BigQuery 用の tool である BigQuery ツールセット は ADK にビルトインされているため、開発者が独自に開発する必要がありません。 参考 : Agent Development Kit - Built-in tools 以下の記事では、ADK の BigQuery ツールセットについて解説しています。 blog.g-gen.co.jp AI エージェントアプリケーションの開発は、特定の業務ロジックや、複数のデータソースを横断するような複雑なエージェントを構築する場合に採用されます。当手法は、エンジニアによる開発が必要になるほか、開発したエージェントをサーバーやクラウドのサーバーレスサービスにホストする必要があります。 ADK 自体はオープンソースであり、利用料金は発生しません。背後で動作する Gemini 等の LLM の利用料金を考慮する必要があります。 LLM アプリケーションの実装 最も自由度が高く、かつ難易度が高いのが、LangChain などのライブラリと LLM(Gemini API 等)を組み合わせて、フルスクラッチで自然言語問い合わせアプリケーションを実装する方法です。 テーブルスキーマ(DDL)をどのようにプロンプトに含めるか、大量のテーブルがある場合にどうやって関連テーブルを検索するか(RAG)、生成された SQL の構文エラーをどう修正するかといった仕組みを自前で実装する必要があります。 既存のツールでは対応できない特殊な要件がある場合や、自社サービスの中に NL2SQL 機能を組み込みたい場合に選択されます。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
G-gen の佐々木です。当記事では、Google Cloud が提供するリモート MCP サーバーである Google Cloud MCP Servers について解説します。 概要 Google Cloud MCP servers とは 提供される MCP サーバー 前提知識 MCP サーバーとは リモート MCP サーバー セキュリティと安全性 MCP サーバーに対する認証 拒否ポリシーによる読み取り/書き込み操作の制限 監査ログ Model Armor との統合 Cloud API Registry 使用方法 MCP サーバーの有効化 構成ファイルの準備 MCP サーバーへの接続 参考記事 概要 Google Cloud MCP servers とは Google Cloud MCP servers は、Google および Google Cloud が提供するフルマネージドのリモート MCP サーバーです。BigQuery や Compute Engine といったプロダクトを利用するための MCP ツールが提供されます。 Google Cloud MCP servers は Google 管理のインフラストラクチャ上で動作するため、ユーザーによる運用管理は不要です。専用の HTTP エンドポイントを通じて、MCP サーバーをすぐに使い始めることができます。 Google Cloud MCP servers で提供される MCP サーバーに対しては、Identity and Access Management(IAM)、OAuth、API キーなどの方法で認証を行います。 参考 : Google Cloud MCP servers overview 提供される MCP サーバー Google から提供されるリモート MCP サーバーとして、Google Cloud プロダクトに関する Google Cloud MCP Servers 、Google プロダクトに関する Google MCP Servers 、および Google Workspace に関する Google Workspace MCP Servers の3種類があります。 以下は、2026年5月現在で提供されているリモート MCP サーバーの一覧です。 Google Cloud MCP servers プロダクト名 エンドポイント URL Agent Registry(Preview) https://agentregistry.googleapis.com/mcp Agent Search https://discoveryengine.googleapis.com/mcp AlloyDB for PostgreSQL https://alloydb.<リージョン>.rep.googleapis.com/mcp App Lifecycle Manager(Preview) https://saasservicemgmt.googleapis.com/mcp BigQuery https://bigquery.googleapis.com/mcp BigQuery Data Transfer Service(Preview) https://bigquerydatatransfer.googleapis.com/mcp BigQuery Migration Service https://bigquerymigration.googleapis.com/mcp Bigtable https://bigtableadmin.googleapis.com/mcp Cloud Asset Inventory(Preview) https://cloudasset.googleapis.com/mcp Cloud Logging https://logging.googleapis.com/mcp Cloud Monitoring https://monitoring.googleapis.com/mcp Cloud Product Registry(Preview) https://cloudproductregistry.googleapis.com/mcp Cloud Run https://run.googleapis.com/mcp Cloud SQL https://sqladmin.googleapis.com/mcp Cloud Storage https://storage.googleapis.com/storage/mcp Cloud Trace https://cloudtrace.googleapis.com/mcp Compute Engine https://compute.googleapis.com/mcp Customer Experience Agent Studio https://ces.us.rep.googleapis.com/mcp Database Center https://databasecenter.googleapis.com/mcp Database Insights https://databaseinsights.googleapis.com/mcp Database Migration Service(Preview) https://datamigration.googleapis.com/mcp Datastream(Preview) https://datastream.googleapis.com/mcp Error Reporting https://clouderrorreporting.googleapis.com/mcp Firestore https://firestore.googleapis.com/mcp Gemini Cloud Assist(Preview) https://geminicloudassist.googleapis.com/mcp Gemini Enterprise Agent Platform ドキュメントを参照 GKE https://container.googleapis.com/mcp Google Security Operations https://chronicle.<リージョン>.rep.googleapis.com/mcp Knowledge Catalog(Preview) https://dataplex.googleapis.com/mcp Managed Service for Apache Airflow(Preview) https://composer.<リージョン>.rep.googleapis.com/mcp Managed Service for Apache Kafka https://managedkafka.<リージョン>.rep.googleapis.com/mcp Managed Service for Apache Spark https://dataproc.googleapis.com/mcp Memorystore for Redis https://redis.googleapis.com/mcp Memorystore for Valkey https://memorystore.googleapis.com/mcp Network Intelligence Center https://networkmanagement.googleapis.com/mcp Oracle Database@Google Cloud(Preview) https://oracledatabase.googleapis.com/mcp Pub/Sub https://pubsub.googleapis.com/mcp Resource Manager https://cloudresourcemanager.googleapis.com/mcp Spanner https://spanner.googleapis.com/mcp Google MCP servers プロダクト名 エンドポイント URL Android Management API https://androidmanagement.googleapis.com/mcp Design MCP(Preview) https://design.googleapis.com/mcp Developer Knowledge API https://developerknowledge.googleapis.com/mcp Google Pay and Wallet(Preview) https://paydeveloper.googleapis.com/mcp Maps Code Assist(Preview) https://mapscodeassist.googleapis.com/mcp Maps Grounding Lite https://mapstools.googleapis.com/mcp Stitch(Beta) https://stitch.googleapis.com/mcp Google Workspace MCP servers プロダクト名 エンドポイント URL Calendar( Developer Preview ) https://calendarmcp.googleapis.com/mcp/v1 Chat(Developer Preview) https://chatmcp.googleapis.com/mcp/v1 Drive(Developer Preview) https://drivemcp.googleapis.com/mcp/v1 Gmail(Developer Preview) https://gmailmcp.googleapis.com/mcp/v1 People API(Developer Preview) https://people.googleapis.com/mcp/v1 なお Developer Knowledge API MCP server とは、Google Cloud 製品や Google 製品(Android、Firebase など)の公式ドキュメントを検索するための MCP サーバーです。以下の記事も参考にしてください。 参考 : Developer Knowledge APIをMCPサーバー経由で使ってみた - G-gen Tech Blog 提供されている MCP サーバーの最新情報は以下の公式ドキュメントに記載されているほか、後述の Cloud API Registry の API でも取得することができます。 参考 : Supported products # 利用できる MCP サーバーの一覧を取得する(2025年12月12日時点) $ gcloud beta api-registry mcp servers list --all --format =" table(urls[0],description) " URLS DESCRIPTION compute.googleapis.com/mcp This is an MCP server which provides tools to manage Google Compute Engine resources. container.googleapis.com/mcp This is an MCP server which provides tools to manage Google Kubernetes Engine ( GKE ) clusters and their Kubernetes resources. bigquery.googleapis.com/mcp BigQuery MCP server provides tools to interact with BigQuery mapstools.googleapis.com/mcp This is an MCP server provided by the Maps Grounding Lite API. The server provides tools for developers to build LLM applications on top of Google Maps Platform. 参考 : Discover and list MCP tools 前提知識 MCP サーバーとは Model Context Protocol (MCP)は、Anthropic 社によって開発された、大規模言語モデル(LLM)と外部ツールを連携するためのオープンプロトコルです。 MCP サーバー は、MCP で実装された外部ツールを提供するためのサーバーです。ファイルシステムやメール、データベース、天気情報 API などを操作する機能を ツール として公開することで、LLM の機能を特定の用途に合わせて拡張することができます。 MCP サーバーに対しては、Gemini CLI や Claude Desktop、Cursor、Cline といった LLM アプリケーションから接続することができます。 参考 : What is the MCP and how does it work? 参考 : What is the Model Context Protocol (MCP)? リモート MCP サーバー ローカル MCP サーバー はローカル環境で動作する MCP サーバーであり、GitHub などで公開されている MCP サーバーや、自分で実装した MCP サーバーをローカル環境(自分の PC 等)で実行して利用します。 それに対して、 リモート MCP サーバー はインターネットを通じてアクセスできる MCP サーバーであり、Streamable HTTP を使用して MCP サーバーに接続します。ローカル MCP サーバーと比べて、複数のユーザーが利用する MCP サーバーを一元的に管理・共有できるメリットがあります。 リモート MCP サーバーの例として、サーバーレス コンピューティング サービスである Cloud Run を利用して、MCP サーバーをホストする方法があります。Cloud Run の強みであるスケーラビリティや、IAM 認証によるアクセス制御を活用することで、複数のユーザーに対して MCP サーバーを安全に提供することができます。 Cloud Run でリモート MCP サーバーをホストする方法については、以下の記事をご一読ください。 blog.g-gen.co.jp セキュリティと安全性 MCP サーバーに対する認証 Google Cloud の IAM を使用して、MCP サーバーに対するアクセス制御を行うことができます。 MCP サーバーのツールを使用するには、プリンシパル(Google アカウント、サービスアカウントなど)に対して組織/フォルダ/プロジェクトレベルで以下のロールを付与します。 MCP ツールのユーザー ( roles/mcp.toolUser ) Service Usage ユーザー ( roles/serviceusage.serviceUsageAdmin ) また、MCP ツールを介して操作する各サービスの権限も必要となる点に注意してください。 ユーザーのローカル環境から Google Cloud MCP Servers にアクセスする場合、 gcloud auth application-default login コマンドを使用してアプリケーションのデフォルト認証情報(ADC)を設定するか、サービスアカウントの 権限借用 (impersonate)を使用して認証を行います。 Compute Engine や Cloud Run などの Google Cloud リソースから MCP サーバーにアクセスする場合は、リソースに紐付けられたサービスアカウントで認証を行います。 その他の環境では、Google API の OAuth クライアント ID を使用して認証を行うこともできます。 参考 : Google Cloud MCP servers roles and permissions 拒否ポリシーによる読み取り/書き込み操作の制限 MCP ツールの利用に際しては、IAM の機能である 拒否ポリシー を設定することができます。これにより、特定のユーザーが呼び出した MCP ツールによる意図しないリソース変更などを防ぐことができます。 参考 : Prevent read-write MCP tool use 例えば、以下の拒否ポリシーは、すべてのプリンシパルに対して読み取り専用ではない(リソースの作成/変更/削除を行う)MCP ツールの呼び出しを禁止します。 { " rules ": [ { " denyRule ": { " deniedPrincipals ": [ " principalSet://goog/public:all " ] , " deniedPermissions ": [ " mcp.googleapis.com/tools.call " ] , " denialCondition ": { " title ": " Deny read-write tools ", " expression ": " api.getAttribute('mcp.googleapis.com/tool.isReadOnly', false) == false " , } } } ] } IAM の拒否ポリシーの詳細については、以下の記事をご一読ください。 blog.g-gen.co.jp 監査ログ Cloud Logging には、Google Cloud MCP servers の監査ログが記録されます。 MCP サーバーごとの監査ログは以下のクエリ条件で取得できます。 protoPayload. serviceName = " <サービス API エンドポイント>/mcp " 例えば、BigQuery MCP サーバーの場合は、以下の条件で監査ログをフィルタリングすることができます。 protoPayload. serviceName = " bigquery.googleapis.com/mcp " 監査ログには、使用した MCP サーバーのエンドポイントやツールの名前などが記録されています。 Google Cloud MCP Servers の監査ログ 監査ログのうち、MCP サーバーの データアクセス監査ログ については、MCP ツールによるデータアクセスが非常に多くなり、監査ログのサイズが膨大になる可能性があります。データアクセス監査ログはデフォルトで無効になっています。 参考 : Google Cloud MCP servers audit logging Model Armor との統合 Model Armor は、生成 AI のプロンプトやレスポンスをスクリーニングして、不適切な内容や機密データを漏洩する可能性のある内容、プロンプトインジェクションなどを検出、サニタイズすることができるフルマネージドサービスです。 Model Armor との統合により、MCP ツールの利用をスクリーニングし、より安全に MCP サーバーを利用することができます。 参考 : Model Armor integration with Google Cloud MCP servers Model Armor の詳細については、以下の記事をご一読ください。 blog.g-gen.co.jp Cloud API Registry Cloud API Registry は、Google Cloud MCP servers、および Apigee API Hub で管理している自組織の MCP サーバーを管理するためのサービスです。 自組織で利用している MCP サーバーや MCP ツールの検索、Google Cloud MCP servers の有効化/無効化を行うことができます。 参考 : Cloud API Registry overview 使用方法 MCP サーバーの有効化 Google Cloud MCP servers の使用例として、BigQuery remote MCP server を使用してみます。 はじめに、利用する MCP サーバーを有効化します。 # BigQuery MCP サーバーを有効にする $ gcloud beta services mcp enable bigquery.googleapis.com 有効化した MCP サーバーの一覧を表示してみます。 # 有効化した MCP サーバーの一覧を表示する $ gcloud beta services mcp list --enabled NAME MCP_ENDPOINT services/bigquery.googleapis.com bigquery.googleapis.com/mcp 参考 : Enable or disable MCP servers 構成ファイルの準備 当記事では、Gemini CLI を使用して MCP サーバーに接続します。その他のツールを使用する場合や、より詳細な説明については、当記事末尾に記載のドキュメントを参照してください。 Gemini CLI の構成ファイル( .gemini/settings.json )に MCP サーバーの設定を追加します。当記事では、アプリケーションのデフォルトの認証情報(ADC)で認証を行い、BigQuery MCP サーバーに接続します。 { " mcpServers ": { " BigQuery ": { " httpUrl ": " https://bigquery.googleapis.com/mcp ", " authProviderType ": " google_credentials ", " oauth ": { " scopes ": [ " https://www.googleapis.com/auth/cloud-platform " ] } , " timeout ": 30000 , " headers ": { " x-goog-user-project ": " <MCP サーバーを有効化したプロジェクトの ID> " } } } } MCP サーバーへの接続 gcloud auth application-default login コマンドを使用して MCP サーバーを利用できるアカウントでログインし、アプリケーションのデフォルト認証情報(ADC)を設定します。 # アプリケーションのデフォルト認証情報(ADC)を設定する $ gcloud auth application-default login Gemini CLI を起動して、MCP サーバーに接続します。 # Gemini CLI を起動する $ gemini Gemini CLI のプロンプトで /mcp コマンドを使用して、接続している MCP サーバーの情報を表示します。 MCP サーバーに接続できていれば、構成ファイルに記述した MCP サーバーと、利用できるツールの一覧が表示されます。 > /mcp Configured MCP servers: 🟢 BigQuery - Ready ( 5 tools ) Tools: - execute_sql - get_dataset_info - get_table_info - list_dataset_ids - list_table_ids 以下のプロンプトを送信して、BigQuery MCP サーバーのツールを使用してみます。 プロジェクト内にデータセットは何個ありますか? 対象となるプロジェクトの情報が不足していたため、以下のようなレスポンスが返されました。 > プロジェクト内にデータセットは何個ありますか? ✦ プロジェクトIDを教えてください。 プロンプトにプロジェクト ID を入力して送信すると、ツールの使用を許可するかどうかの確認が行われます。 ╭──────────────────────────────────────────────────────────────────────────╮ │ ? list_dataset_ids ( BigQuery MCP Server ) { " projectId " : " myproject " } ← │ │ │ │ MCP Server: BigQuery │ │ Tool: list_dataset_ids │ │ │ │ Allow execution of MCP tool " list_dataset_ids " from server " BigQuery " ? │ │ │ │ ● 1 . Yes, allow once │ │ 2 . Yes, always allow tool " list_dataset_ids " from server " BigQuery " │ │ 3 . Yes, always allow all tools from server " BigQuery " │ │ 4 . No, suggest changes ( esc ) │ │ │ ╰──────────────────────────────────────────────────────────────────────────╯ ⠏ Waiting for user confirmation... 今回のプロンプトでは、BigQuery MCP サーバーの list_dataset_ids ツールを使用するようです。 一回限りのツール実行のみ許可する場合は 1 を、 list_dataset_ids ツールの実行を常に許可する場合は 2 を、BigQuery MCP サーバーのすべてのツールを常に許可する場合は 3 を選択します。 ツールの実行を許可すると、プロジェクト内のデータセットのリストが出力され、レスポンスとしてプロジェクト内にあるデータセットの個数が返されました。 ╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ list_dataset_ids ( BigQuery MCP Server ) { " projectId " : " myproject " } │ │ │ │ { " datasets " : [< ここにデータセットのリストが出力される >] } │ ╰──────────────────────────────────────────────────────────────────────────╯ ✦ プロジェクト「myproject」には 16 個のデータセットがあります。 参考 : Configure MCP in an AI application 参考記事 BigQuery remote MCP server の使用例については、以下の記事も参照してください。 blog.g-gen.co.jp また、BigQuery に自然言語を使って問い合わせをする手法は、MCP サーバーを使用する以外にもいくつか存在します。その他の方法については、以下の記事も参照してください。 blog.g-gen.co.jp 佐々木 駿太 (記事一覧) G-gen 最北端、北海道在住のクラウドソリューション部エンジニア 2022年6月に G-gen にジョイン。Google Cloud Partner Top Engineer に選出(2024 / 2025 Fellow / 2026)。好きな Google Cloud プロダクトは Cloud Run。 趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。 Follow @sasashun0805
G-gen の三浦です。当記事では、Windows Server のイベントログを Google SecOps で分析する方法を解説します。 概要 Google SecOps とは Bindplane とは 検証概要 構成図 前提条件 検証の流れ Bindplane コレクタの設定 Bindplane コレクタのインストール Google SecOps 転送用のパラメータと認証情報の取得 Google SecOps 転送設定 ログに対するクエリ Windows イベントログへのクエリ 国外からの Windows ログオン失敗イベントの抽出 概要 Google SecOps とは Google Security Operations (以下 Google SecOps、旧称 Chronicle)は、Google Cloud が提供する 統合セキュリティ運用プラットフォーム です。 SIEM、SOAR、脅威インテリジェンス、Gemini を利用した AI による運用支援を提供します。これらにより、脅威の検知・調査・対応を一元的に行えます。結果として、セキュリティ運用の効率化と高度化を実現できます。 参考: Google SecOps の概要 詳細は、以下の記事をご参照ください。 blog.g-gen.co.jp Bindplane とは Bindplane は、オープンソースの OpenTelemetry Collector をベースにした統合テレメトリーパイプラインです。さまざまなソースからログやメトリクスを収集し、Google SecOps を含む多様な宛先に転送できます。 参考: Bindplane について 参考: Google SecOps で Bindplane を使用する 詳細は、以下の記事をご参照ください。 blog.g-gen.co.jp 検証概要 構成図 当記事では、以下の構成で検証を行いました。 構成図 検証時の Windows Server のバージョンは以下のとおりです。 Windows Server 2022 Datacenter 前提条件 Windows Server(Bindplane コレクタ)から Google SecOps へログを転送するために、VPC ファイアウォールルール等で以下の通信を許可する必要があります。 通信の方向 : アウトバウンド(Egress) 宛先ポート : 443/tcp 通信要件の詳細については、以下の公式ドキュメントをご参照ください。 参考: Google SecOps で Bindplane を使用する - ゲートウェイ コレクタをファイアウォールで保護する 検証の流れ 項番 内容 説明 1 Bindplane コレクタの導入 Windows Server に Bindplane コレクタをインストールし、Google SecOps への送信設定を行います。 2 Google SecOps でのログ分析 Google SecOps の管理画面で収集した Windows イベントログを確認し、自然言語による検索や条件によるイベントの抽出を行います。 Bindplane コレクタの設定 Bindplane コレクタのインストール 以下の手順に従い、Windows Server へ Bindplane コレクタをインストールします。 参考: Google SecOps で Bindplane を使用する - Windows に Bindplane コレクタをインストールする 参考: Windows Installation まず、ウェブブラウザで以下の URL へアクセスし、インストーラーをダウンロードします。 https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi インストーラーの取得 インストーラーを実行し、[Next] を選択します。 Next を選択 ライセンス規約を確認して同意し、[Next] を選択します。 ライセンス規約を確認して Next を選択 インストール先を選択し、[Next] を選択します。本手順ではデフォルト値を使用します。 インストール先を選択し Next を選択 OpAMP(Agent を一元管理する仕組み)を利用する場合は、チェックを有効化します。本検証では有効化せずに、[Next] を選択します。 参考: Open Agent Management Protocol Next を選択 [Install] を選択します。 Install を選択 インストールが完了したら、[Finish] を選択します。 Finish を選択 Windows + R キーを押下し、services.msc と入力して Enter キーを押下します。 services.msc の実行 サービス「observIQ Distro for OpenTelemetry Collector」の状態が 実行中 であることを確認します。 コレクタのステータス確認 Google SecOps 転送用のパラメータと認証情報の取得 Google SecOps の管理画面に移動します。 Google SecOps 管理画面に移動 [Settings] > [SIEM Settings] > [Profile] へ移動し、 Customer ID を控えます。 Customer ID の確認 [Settings] > [SIEM Settings] > [Collection Agents] へ移動し、[Ingestion Authentication File] をダウンロードします。JSON 形式の認証情報ファイルです。認証情報となるため、取り扱いにはご注意ください。 認証情報の取得 Google SecOps 転送設定 Windows エクスプローラーで Bindplane コレクタのインストール先(デフォルト値の場合、以下)へ移動し、前手順で取得した Ingestion Authentication File を配置します。 C:\Program Files\observIQ OpenTelemetry Collector Ingestion Authentication File の配置 config.yaml を開き、以下のとおりに修正します。接続先のエンドポイントについては、以下の公式ドキュメントをご参照ください。 参考: Google SecOps で Bindplane を使用する - ゲートウェイ コレクタをファイアウォールで保護する receivers : windowseventlog/application : attributes : log_type : WINEVTLOG channel : application max_reads : 100 poll_interval : 1s raw : true start_at : end   windowseventlog/security : attributes : log_type : WINEVTLOG channel : security max_reads : 100 poll_interval : 1s raw : true start_at : end   windowseventlog/system : attributes : log_type : WINEVTLOG channel : system max_reads : 100 poll_interval : 1s raw : true start_at : end   exporters : chronicle/windows : compression : gzip creds_file_path : "C: \\ Program Files \\ observIQ OpenTelemetry Collector \\ auth.json" # 前手順で配置した Ingestion Authentication File のパスを指定 customer_id : "<customer_id>" # Customer ID を指定 endpoint : asia-northeast1-malachiteingestion-pa.googleapis.com # 接続先のエンドポイントをリージョンに応じて指定 ingestion_labels : env : dev log_type : WINEVTLOG namespace : testNamespace raw_log_field : body   service : pipelines : logs/windows : receivers : - windowseventlog/application - windowseventlog/security - windowseventlog/system exporters : - chronicle/windows 設定変更を反映するため、PowerShell を管理者権限で起動し、Bindplane コレクタのサービスを再起動します。再起動に失敗する場合、config.yaml に問題がある可能性があります。後述の collector.log を確認し、エラーログの有無を確認します。 Restart-Service -Name "observiq-otel-collector" 以下は再起動に失敗した場合のエラーログのサンプルです。 {"level":"error","ts":"2025-11-26T15:56:54.449+0900","caller":"service/service_windows.go:104","msg":"Failed to start service","error":"failed while starting collector: cannot start pipelines: failed to start \"chronicle/windows\" exporter: load Google credentials: invalid character 'C' looking for beginning of value","stacktrace":"github.com/observiq/bindplane-otel-collector/internal/service.(*windowsServiceHandler).Execute\n\tD:/a/bindplane-otel-collector/bindplane-otel-collector/internal/service/service_windows.go:104\ngolang.org/x/sys/windows/svc.serviceMain.func2\n\tC:/Users/runneradmin/go/pkg/mod/golang.org/x/sys@v0.37.0/windows/svc/service.go:234"} log フォルダ配下の collector.log を確認し、再起動後に上記のようなエラーログが無いことを確認します。 collector.log の確認 ログに対するクエリ Windows イベントログへのクエリ Google SecOps の管理画面から [Investigation] > [SIEM Search] へ移動します。 SIEM Search へ移動 以下のプロンプトを入力し、[Generate Query] を選択します。これにより、AI(Gemini モデル)が、自然言語からログ検索クエリを生成します。 Windows のイベントログが見たい Generate Query の実行 クエリが生成されたことを確認し、[Run Search] を選択します。 Run Search の実行 対象のログが表示されることを確認します。 ログ確認 Google SecOps では、さまざまなログを Unified Data Model(以下、UDM)という共通スキーマに正規化します。UDM 化されたログと、元の生ログの両方を確認できます。 ログ確認(UDM 化) ログ確認(生ログ) 国外からの Windows ログオン失敗イベントの抽出 [SIEM Search] で、以下のプロンプトを入力し、[Generate Query] を選択します。 Windows のログオン失敗イベントを対象に、ネットワーク経由の認証失敗を抽出し、国外からのアクセスに絞って、IP アドレス、国情報、発生時刻を表示してください。期間は過去24時間です。 Generate Query の実行 クエリが生成されたことを確認し、[Run Search] を選択します。 Run Search の実行 対象のログが表示されることを確認します。 ログ確認 三浦 健斗 (記事一覧) クラウドソリューション部 2023年10月よりG-genにジョイン。元オンプレ中心のネットワークエンジニア。 ネットワーク・セキュリティ・唐揚げ・辛いものが好き。 Google Cloud Partner All Certification Holders 2025 / Google Cloud Partner Top Engineer 2026
G-gen の佐々木です。当記事では Cloud Run に MCP サーバーをデプロイし、Gemini CLI からの接続を試してみます。 はじめに MCP サーバーについて MCP サーバーの概要 ツール(tools) Cloud Run について Cloud Run の概要 Cloud Run における MCP サーバーのホスティング 検証環境とツール サンプル MCP サーバーの作成 Python プロジェクトの準備(uv) サンプルコード server.py Dockerfile Cloud Run へのデプロイ Artifact Registry リポジトリの準備 コンテナイメージの作成 Cloud Run サービスの作成 動作確認 認証について Cloud Run 上のサービスにアクセスするための IAM ロール 非公開のサービスへのアクセス方法 proxy コマンドを使用した認証 MCP クライアントの設定 proxy コマンドの実行 gemini CLI で MCP サーバーに接続 ID トークンによる認証 MCP クライアントの設定 gemini CLI で MCP サーバーに接続 はじめに MCP サーバーについて MCP サーバーの概要 MCP (Model Context Protocol)は、Anthropic 社が提唱した、Gemini のような大規模言語モデル(LLM)と外部ツールを連携するためのオープンプロトコルです。 MCP サーバー は、MCP で実装された外部ツールを LLM に提供するためのサーバーです。ファイルシステムやメール、データベース、天気情報 API など、特定の領域に特化したツールを MCP サーバーに実装することで、LLM の機能を拡張することができます。 MCP サーバーに対しては、Gemini CLI や Claude Desktop、Cursor、Cline といった LLM アプリケーションから接続することができます。 参考 : What is the MCP and how does it work? 参考 : What is the Model Context Protocol (MCP)? ツール(tools) MCP サーバーにおける ツール は、MCP サーバーが LLM に対して提供する 関数 です。MCP サーバーは LLM からの要求に従ってツール(関数)を実行し、その処理結果を LLM に返します。 LLM はユーザーが自然言語で入力したプロンプトに応じて適切な MCP サーバー・ツールを選択し、返ってきた結果を元に処理を継続したり、応答を生成したりします。 参考 : Understanding MCP servers - Core Server Features - Tools 参考 : 生成AIのよくある誤解を整理してAIの業務活用を推進する - G-gen Tech Blog - AI を助ける tools Cloud Run について Cloud Run の概要 Cloud Run は、Google Cloud が提供するサーバーレス コンテナ コンピューティング サービスであり、ユーザーによるインフラ管理が不要なサーバーレス環境でコンテナを実行することができます。 Cloud Run では、必要なときだけ CPU、メモリといったコンピューティングリソースを確保する(コンテナを起動する)ことができ、コンテナが起動していないときはコンピューティングリソースの使用料金が発生しないという特徴があります。 Cloud Run にはいくつかの種類がありますが、当記事ではウェブアプリケーションの実行に特化した Cloud Run サービス を使用します。 サービスの詳細な解説については、以下の記事をご一読ください。 blog.g-gen.co.jp Cloud Run における MCP サーバーのホスティング Cloud Run で MCP サーバーをホスティングすることで、複数のユーザーが共通の MCP サーバーを使用することが可能になります。また、IAM 認証により MCP サーバーに接続できるユーザーを制限することができます。 IAM で許可されたユーザーだけが Cloud Run 上の MCP サーバーを使用できる 2025年12月時点では、MCP サーバーとの通信方式(Transports)として 標準入出力 (stdio)と Streamable HTTP が利用できます。 Cloud Run に MCP サーバーをホストする場合は、Streamable HTTP のみ使用することができます。通信方式の詳細については以下のドキュメントを参照してください。 参考 : Transports 参考 : Host MCP servers on Cloud Run 検証環境とツール 当記事では、Google が提供するオープンソース AI エージェントである Gemini CLI から、Cloud Run にデプロイした MCP サーバーのツールを呼び出せるように構成していきます。 MCP サーバーの実装は Python で行い、パッケージ管理ツールとして uv を使用します。それぞれ、以下のバージョンを使用しています。 $ python --version Python 3 . 13 . 3 $ uv self version uv 0 . 9 . 16 Gemini CLI は以下のバージョンを使用しています。 $ gemini -v 0 . 19 . 4 Gemini CLI の詳細やインストール方法等については、以下の記事を参照してください。 blog.g-gen.co.jp 当記事では、以下の Google Cloud ドキュメントを参考に MCP サーバーを作成していきます。 参考 : Build and deploy a remote MCP server on Cloud Run 参考 : How to deploy a secure MCP server on Cloud Run サンプル MCP サーバーの作成 Python プロジェクトの準備(uv) まずは、uv を使用して Python プロジェクトを作成します。 当記事では以下のように mcp-on-cloudrun ディレクトリにプロジェクトを作成し、各ファイルを配置します。 └── mcp-on-cloudrun ├── pyproject.toml ├── server.py ├── Dockerfile └── uv.lock まずは mcp-on-cloudrun ディレクトリを作成します。 # ディレクトリを作成する $ mkdir mcp-on-cloudrun && cd mcp-on-cloudrun mcp-on-cloudrun ディレクトリ内で uv を使用してプロジェクトを初期化します。 # uv で Python プロジェクトを作成する $ uv init \ --name " mcp-on-cloudrun " \ --description " Example of deploying an MCP server on Cloud Run " \ --bare \ --python 3 . 13 当記事では、 fastmcp フレームワークを使用して MCP サーバーを実装します。以下のコマンドで、プロジェクトの依存関係に fastmcp を追加します。 # fastmcp を依存関係に追加する $ uv add fastmcp = = 2 . 13 . 3 --no-sync ここまでの手順で、 mcp-on-cloudrun ディレクトリに以下の内容で pyproject.toml が作成されています。 [ project ] name = "mcp-on-cloudrun" version = "0.1.0" description = "Example of deploying an MCP server on Cloud Run" requires-python = ">=3.13" dependencies = [ "fastmcp==2.13.3" , ] MCP サーバーを実装するためのファイル( server.py )と、Dockerfile を作成します。ファイルの内容については後の手順で解説します。 # server.py と Dockerfile を作成する $ touch server.py Dockerfile 参考 : fastmcp サンプルコード server.py server.py に MCP サーバーを実装していきます。当記事では、シンプルな加算ツールと減算ツールのみ定義します。 fastmcp フレームワークでは、 @mcp.tool デコレーターに関数を渡すことで、関数をツールとして登録することができます。 ツール 説明 add 数値 a と数値 b を足して返す subtract 数値 a から数値 b を引いて返す fastmcp は関数の型ヒント( (a: int, b: int) の部分)とドキュメント文字列( """Use this to add two numbers together. ~ """ の部分)からツールの定義を自動生成して LLM に提供します。これにより、LLM が入力されたプロンプトに応じて適切なツールを選択できるようになっています。 # server.py import asyncio import logging import os from fastmcp import FastMCP logger = logging.getLogger(__name__) logging.basicConfig( format = "[%(levelname)s]: %(message)s" , level=logging.INFO) mcp = FastMCP( "MCP Server on Cloud Run" ) @ mcp.tool () def add (a: int , b: int ) -> int : """Use this to add two numbers together. Args: a: The first number. b: The second number. Returns: The sum of the two numbers. """ logger.info(f ">>> 🛠️ Tool: 'add' called with numbers '{a}' and '{b}'" ) return a + b @ mcp.tool () def subtract (a: int , b: int ) -> int : """Use this to subtract two numbers. Args: a: The first number. b: The second number. Returns: The difference of the two numbers. """ logger.info(f ">>> 🛠️ Tool: 'subtract' called with numbers '{a}' and '{b}'" ) return a - b if __name__ == "__main__" : logger.info(f "🚀 MCP server started on port {os.getenv('PORT', 8080)}" ) # Could also use 'sse' transport, host="0.0.0.0" required for Cloud Run. asyncio.run( mcp.run_async( transport= "http" , # Streamable HTTP transport を使用する host= "0.0.0.0" , port=os.getenv( "PORT" , 8080 ), ) ) Dockerfile Dockerfile は uv を使用してビルドできるように、以下のように記述します。 # Use the official Python image FROM python:3.13-slim # Install uv COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ # Install the project into /app COPY . /app WORKDIR /app # Allow statements and log messages to immediately appear in the logs ENV PYTHONUNBUFFERED=1 # Install dependencies RUN uv sync EXPOSE $PORT # Run the FastMCP server CMD [ " uv ", " run ", " server.py " ] Cloud Run へのデプロイ Artifact Registry リポジトリの準備 当記事では asia-northeast1 リージョンに各種 Google Cloud リソースを作成する前提で進めていきます。 Cloud Run にデプロイするコンテナイメージは Artifact Registry リポジトリに格納しておく必要があるため、リポジトリがない場合は以下のコマンドで作成します。 # Artifact Registry リポジトリを作成する $ gcloud artifacts repositories create < リポジトリ名 > \ --repository-format = docker \ --location = asia-northeast1 参考 : gcloud artifacts repositories create コンテナイメージの作成 MCP サーバーのコンテナイメージを作成していきます。 イメージ名を含む Artifact Registry リポジトリのパスを IMAGE_NAME シェル変数として定義します。当記事ではイメージ名を mcp-on-cloudrun としています。 # イメージ名(mcp-on-cloudrun)を含むリポジトリのパスを定義する $ IMAGE_NAME = " asia-northeast1-docker.pkg.dev/<プロジェクトID>/<リポジトリ名>/mcp-on-cloudrun:latest " Cloud Build を使用してコンテナイメージをビルドします。コードと Dockerfile が配置されているディレクトリで以下のコマンドを実行します。 # コンテナイメージをビルドする $ gcloud builds submit \ --region asia-northeast1 \ --tag $IMAGE_NAME 参考 : gcloud builds submit Cloud Run サービスの作成 作成したコンテナイメージを使用して、Cloud Run サービスを作成します。当記事ではサービス名を mcp-on-cloudrun とします。 # Cloud Run サービスを作成する $ gcloud run deploy mcp-on-cloudrun \ --image $IMAGE_NAME \ --region asia-northeast1 \ --no-allow-unauthenticated --no-allow-unauthenticated オプションを指定することで、IAM で許可されているユーザーのみが Cloud Run 上の MCP サーバーにアクセスできるように制限します。 参考 : gcloud run deploy 動作確認 認証について Cloud Run 上のサービスにアクセスするための IAM ロール 当記事では、 --no-allow-unauthenticated オプションを指定して、Cloud Run 上の MCP サーバーを非公開のサービスとして作成しました。 非公開の Cloud Run サービスにアクセスするためには、以下のいずれかの IAM ロールをユーザーに付与する必要があります。 Cloud Run 起動元 (roles/run.invoker) Cloud Run サービス起動元 (roles/run.servicesInvoker) 上記以外にも、 run.routes.invoke 権限を持つその他のロール(オーナーなど)であれば、サービスを呼び出すことができます。 参考 : Cloud Run IAM roles 非公開のサービスへのアクセス方法 Gemini CLI から非公開の Cloud Run サービスに直接アクセスするには、適切な権限を持つユーザーで以下のいずれかの方法を使用します。 gcloud run services proxy コマンドを使用して、ローカルホストで起動したプロキシ経由でアクセスする ID トークンをリクエストヘッダーに含めて、Cloud Run のエンドポイントにアクセスする どちらの手順もシンプルですが、プロキシと Cloud Run サービスは一対一となるので、接続する MCP サーバーが複数ある場合(Cloud Run サービスが複数ある場合)は ID トークンを使用する方法が便利です。 proxy コマンドを使用した認証 MCP クライアントの設定 まず、proxy コマンドを使用して Cloud Run の認証を行い、Gemini CLI から MCP サーバーに接続してみます。 Gemini CLI の構成ファイルとして、 .gemini/settings.json を作成します。 proxy コマンドを使用して Cloud Run 上の MCP サーバーに接続する場合、ローカルホストで起動するプロキシ( http://localhost:8080 )が Cloud Run へのリクエストをフォワーディングするため、構成ファイルを以下のように記述します。 { " mcpServers ": { " cloud-run ": { " httpUrl ": " http://localhost:8080/mcp " } } } proxy コマンドの実行 以下のコマンドを実行し、Cloud Run に接続するためのプロキシをローカルホスト( http://localhost:8080 )で起動します。 # ローカルホストに Cloud Run 接続用のプロキシを起動する $ gcloud run services proxy mcp-on-cloudrun --region asia-northeast1 Gemini CLI の構成ファイルで MCP サーバーの URL を http://localhost:8080/mcp に設定しているため、このプロキシを経由して Cloud Run 上の MCP サーバーに接続することができます。 参考 : gcloud run services proxy gemini CLI で MCP サーバーに接続 Gemini CLI を起動して、MCP サーバーに接続してみます。 # Gemini CLI を実行する $ gemini Gemini CLI 起動時に以下のエラーが表示された場合、MCP サーバーへの接続に失敗しています。Gemini CLI の構成ファイルに記述ミスがあるか、ソースコードや Dockerfile の問題でサービスが正しく実行されていない可能性があります。各種ファイルや Cloud Run のログを確認してみてください。 ✕ Error during discovery for server 'cloud-run': Connection failed for 'cloud-run': fetch failed Gemini CLI を起動したら、以下のコマンドをプロンプトに入力して実行します。 # プロンプトに入力する /mcp list MCP サーバーに接続できている場合、使用できるツールのリストが表示されます。 > /mcp list Configured MCP servers: 🟢 cloud-run - Ready ( 2 tools ) Tools: - add - subtract プロンプトに足し算の問題を入力し、送信してみます。Gemini CLI は、ソースコードに記述した型ヒントやドキュメント文字列から、適切な MCP サーバーを自動的に選択して呼び出します。 # プロンプトに入力する 1 + 2 = ? MCP サーバーを初めて使用する場合、ツールの使用を許可するか確認する、以下のようなメッセージが表示されます。 > 1 + 2 = ? ╭──────────────────────────────────────────────────────────────────────────╮ │ ? add ( cloud-run MCP Server ) { " a " :1, " b " :2 } ← │ │ │ │ MCP Server: cloud-run │ │ Tool: add │ │ │ │ Allow execution of MCP tool " add " from server " cloud-run " ? │ │ │ │ ● 1 . Yes, allow once │ │ 2 . Yes, always allow tool " add " from server " cloud-run " │ │ 3 . Yes, always allow all tools from server " cloud-run " │ │ 4 . No, suggest changes ( esc ) │ │ │ ╰──────────────────────────────────────────────────────────────────────────╯ ⠏ Waiting for user confirmation... 今回は MCP サーバーに実装した2つのツールのうち、 add ツールが使用されます。ツール実行を一回限りで許可したい場合は 1 を、 add ツールの使用を常に許可したい場合は 2 を、この MCP サーバーのすべてのツールの使用を常に許可したい場合は 3 を選択します。 4 以外を選択すると、MCP サーバーに実装した add ツールによる計算結果が返り、それを解釈した Gemini による回答が表示されます。 > 1 + 2 = ? ╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ add ( cloud-run MCP Server ) { " a " :1, " b " :2 } │ │ │ │ 3 │ ╰──────────────────────────────────────────────────────────────────────────╯ ✦ The answer is 3 . ID トークンによる認証 MCP クライアントの設定 次に、ID トークンによる認証を行って Cloud Run 上の MCP サーバーに接続してみます。 Gemini CLI の構成ファイル( .gemini/settings.json )は以下のように記述します。 { " mcpServers ": { " cloud-run ": { " httpUrl ": " https://<Cloud Run の URL>/mcp ", " headers ": { " Authorization ": " Bearer $ID_TOKEN " } } } } <Cloud Run の URL> は、以下のコマンドで取得したものに置き換えてください。 # Cloud Run の URL を取得する $ gcloud run services describe mcp-on-cloudrun \ --region asia-northeast1 \ --format =' value(status.url) ' gemini CLI で MCP サーバーに接続 まず、ID トークンを取得して環境変数に設定します。これにより、Gemini CLI 起動時に .gemini/settings.json に記述した $ID_TOKEN が、コマンドで取得したトークンに置き換えられます。 # ID トークンを取得して環境変数に設定する $ export ID_TOKEN = $( gcloud auth print-identity-token ) 次に、Gemini CLI を起動します。 # Gemini CLI を実行する $ gemini Gemini CLI のプロンプトから /mcp list を実行し、MCP サーバーのツールが表示されれば、Cloud Run 上の MCP サーバーに接続できています。 > /mcp list Configured MCP servers: 🟢 cloud-run - Ready ( 2 tools ) Tools: - add - subtract 引き算のツールを試してみます。今回は計算式ではなく、算数の問題のような文章をプロンプトに入力して送信します。 木にりんごが 5 つなっています。強い風が吹き、りんごが 3 つ落ちてしまいました。木に残っているりんごは何個ですか? MCP サーバーに実装した subtract ツールによる計算結果が返り、それを解釈した Gemini による回答が表示されます。 > 木にりんごが 5 つなっています。強い風が吹き、りんごが 3 つ落ちてしまいました。 木に残っているりんごは何個ですか? ╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ subtract ( cloud-run MCP Server ) { " a " :5, " b " :3 } │ │ │ │ 2 │ ╰──────────────────────────────────────────────────────────────────────────╯ ✦ 木に残っているりんごは 2 個です。 佐々木 駿太 (記事一覧) 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 の 自動エンベディング生成 機能の概要と、簡単な検証結果を紹介します。自動エンベディング生成を使うと、テーブルの特定列のデータが挿入されたり更新されたりしたときに、自動的にエンベディングが生成され、セマンティック検索や RAG に利用することができます。 はじめに BigQuery の自動エンベディング生成とは 料金 制限事項 接続の作成と設定 接続とは 接続の新規作成 サービスアカウントへの権限付与 テーブルの作成 レコードの挿入 エンベディング生成状況の追跡 検索の実行 応用 ベクトルインデックスの作成 予約の指定 はじめに BigQuery の自動エンベディング生成とは BigQuery の 自動エンベディング生成 とは、BigQuery テーブルの特定列のデータが挿入されたり更新されたりしたときに、自動的にエンベディングが生成される機能です。 初期設定後はデータのベクトル化が自動的に行われるため、パイプラインの構築やメンテナンスは不要です。これにより、運用・保守の工数を抑えることができます。 当機能では、特定のソース列を指定してテーブルを作成すると、ソース列のデータの挿入や更新に応じて、バックグランドの非同期処理によってエンベディングが生成されます。生成のステータスを示す列も同時に生成されるため、生成処理の進捗を追跡することもできます。 参考 : Autonomous embedding generation 料金 BigQuery の自動エンベディング生成では、デフォルトではオンデマンドスロットが使用され、処理に使用したスロット分だけのコンピュート料金が発生します。 参考 : BigQuery pricing これに加え、ベクトル化に利用した Vertex AI のモデルの利用料金も発生します。 例として当記事でも使用した text-embedding-005 モデルでは、入力および出力に文字数あたりの料金が発生します。具体的な単価は以下の公式料金表を参照してください。 参考 : Cost of building and deploying AI models in Vertex AI - Understand embedding costs for your AI applications 制限事項 当機能には、例として以下のような制限事項があります。 ソース列は STRING 型のみ対応 既存テーブルに、あとから自動生成エンベディング列を追加することは不可 自動生成エンベディング列は、テーブルごとに1つだけ生成可能 自動生成エンベディング列に対して、手動で直接、更新や挿入は不可 制限の全量や詳細は、以下の公式ガイドを参照してください。 参考 : Autonomous embedding generation - Limitations 接続の作成と設定 接続とは 当機能を使うには、まず Google Cloud プロジェクトに 接続 (Connection)を作成します。接続とは、BigQuery から外部リソースを利用するために、認証情報や接続情報を保存するための設定オブジェクトです。 参考 : 接続の概要 接続の新規作成 今回は Vertex AI 経由でエンベディング生成 AI モデルを使用するため、「Google Cloud リソース」種別の接続を作成します。 BigQuery Studio(Google Cloud コンソールの BigQuery 画面)において、画面左側のエクスプローラメニューから「接続」をクリックします。表示された一覧画面上部の、「接続を作成」ボタンを押下します。 接続の作成 接続タイプとして「Vertex AI リモートモデル、リモート関数、BigLake、Spanner(Cloud リソース)」を選択します。接続 ID やわかりやすい名前は任意のものを指定します。ロケーションは、対象データセットのロケーションとあわせます。 設定値の指定 サービスアカウントへの権限付与 接続が作成できたら、詳細画面でサービスアカウント ID を確認します。プロジェクトレベルの IAM 許可ポリシーで、このサービスアカウントに Vertex AI ユーザー ( roles/aiplatform.user )を付与します。これにより、BigQuery は接続を通じて、Vertex AI のリモートモデル(当記事の場合は text-embedding-005 )を呼び出すことができます。 参考 : Autonomous embedding generation - Create a connection and grant permission to a service account 接続の詳細画面 プロジェクトレベルでサービスアカウントにロールを付与 テーブルの作成 テーブルの作成時に、自動エンベディング生成を有効化します。今回は、以下のような DDL でテーブルを作成します。 当記事ではパブリックデータセットとして公開されている Google Cloud のリリースノートをお題のデータとして検証を行います。 description 列をソース列として、 description_embedding 列にエンベディングを自動生成させます。 CREATE OR REPLACE TABLE `my-project.my_dataset.google_cloud_release_notes_search` ( published_at DATE , product_id STRING, product_name STRING, product_version_name STRING, release_note_type STRING, description STRING, description_embedding STRUCT<result ARRAY<FLOAT64>, status STRING> GENERATED ALWAYS AS ( AI.EMBED(description, connection_id => ' us.vertex_ai_connection ' , endpoint => ' text-embedding-005 ' ) ) STORED OPTIONS( asynchronous = TRUE ) ); 上記のうち description_embedding 列の定義で、 GENERATED ALWAYS AS を入れることで、エンベディングの自動生成がセッティングされます。構文については、以下の公式ガイドを参照してください。 参考 : Autonomous embedding generation - Create a table with autonomous embedding generation レコードの挿入 以下のような DML で、新規作成したテーブルにレコードを挿入します。データは、パブリックデータセットから取得しています。 INSERT INTO `my-project.my_dataset.google_cloud_release_notes_search` (description, release_note_type, published_at, product_id, product_name, product_version_name) SELECT description, release_note_type, published_at, CAST (product_id AS STRING), product_name, product_version_name FROM `bigquery- public -data.google_cloud_release_notes.release_notes` WHERE published_at >= " 2025-11-01 " ; なおこのソーステーブルの product_id 列にはレガシーな INTEGER 型が使われており、新しい INT64 型の列には格納できない値が含まれているため、STRING 型に CAST しています。 エンベディング生成状況の追跡 description_embedding.status フィールドには、エンベディングの生成状況が格納されます。 status には、未生成であれば NULL が、生成済みであれば空文字列が格納されます。生成がエラーであれば、status フィールドにはエラーメッセージが格納されます。 また description_embedding.result には、生成されたエンベディング( [0.012149171903729439, 0.018285524100065231, -0.0325402095913887...] )が格納されます。 SELECT * FROM `my-project.my_dataset.google_cloud_release_notes_search` ORDER BY description_embedding.status ASC ; 今回の検証における元データのデータ量は395 KB、行数は635行です。このデータに対しては、1分も経たずにすべての行のエンベディング生成が完了しました。 生成状況の確認(1) より大きいサイズのテーブルに対しては、以下のようなクエリで、全行数に対してどこまで生成が完了しているかを確認できます。 SELECT COUNT (*) AS total_num_rows, COUNTIF(description_embedding IS NOT NULL AND description_embedding.status = '' ) AS total_num_generated_embeddings FROM `my-project.my_dataset.google_cloud_release_notes_search`; 生成状況の確認(2) 検索の実行 以下のようなクエリで、テーブルに対するセマンティック検索を実施します。このクエリでは、マネージド AI 関数である AI.SEARCH() を使っています。この関数は、自動エンベディング生成が有効になったテーブル専用の関数です。 この関数に検索クエリを与えると、エンベディングのベクトル空間内での距離の近さ、すなわち意味の近さを数字で返します。この関数はセマンティック検索、レコメンデーション、分類、クラスタリング、外れ値検出などに使用できます。数字がゼロに近ければ近いほど、意味が近いことになります。 SELECT base.published_at, base.product_id, base.product_name, base.release_note_type, base.description, distance FROM AI.SEARCH( TABLE `my-project.my_dataset.google_cloud_release_notes_search`, ' description ' , " BigQuery AI functions " , top_k => 20 ) ORDER BY distance ASC ; 上記のクエリでは、リリースノートの description の中から、「BigQuery AI functions」というワードに意味が近いもののうち、上位20行を抽出します。 AI.SEARCH() の詳細な使用方法は以下の公式ガイドを参照してください。 参考 : The AI.SEARCH function 実行結果として、BigQuery の生成 AI 関数のアップデート情報などが上位に表示されました。 検索の実行結果 応用 ベクトルインデックスの作成 オプションで、以下のようにして ベクトルインデックス を作成できます。ベクトルインデックスを作成すると、ベクトル検索が効率化され、スピードが向上します。ただし、ベクトルインデックスは5,000行以上のテーブルに作成できます。 参考 : Manage vector indexes CREATE VECTOR INDEX my_index ON `my-project.my_dataset.google_cloud_release_notes_search`(description_embedding) OPTIONS(index_type = ' IVF ' ); 予約の指定 デフォルトでは、エンベディングの生成にはオンデマンドスロットが使用されます。 BigQuery editions のスロットを使用したい場合、 job_type を BACKGROUND にして予約をプロジェクトに割り当てます。 参考 : Autonomous embedding generation - Use your own reservation 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
G-gen の杉村です。当記事では、Google Cloud が提供する生成 AI アシスタントサービスである Gemini Enterprise を徹底解説します。ユーザー目線での機能や、管理者目線での注意事項、料金等についても解説します。 概要 Gemini Enterprise とは Gemini Enterprise で何ができるのか 多様なデータソース 提供形態 利用するには モバイルアプリ 個人での利用 料金とライセンス サブスクリプション プランと料金 クォータ サブスクリプションの購入 ライセンスの適用 アシスタント アシスタントとは 横断検索 テキストの生成、ファイルの分析 画像や動画の生成 Google ドキュメント、Google スプレッドシートへのエクスポート Word、PowerPoint、PDF の生成 アシスタントアクション エージェント エージェントの種類 Deep Research アイデアの生成 ノーコードエージェント Data Insights エージェント カスタムエージェントの統合 エージェントの社内共有 Agent Designer とノーコードエージェント Agent Designer とは スケジュール実行 プロンプトのコツ ノーコードエージェントの共有 パーソナライズ(メモリ) NotebookLM Enterprise NotebookLM Enterprise とは 無償版や Pro 版との違い ユーザーインターフェイス Gemini Enterprise からの検索 ノートブックへのソース追加 利用可能なデータソース(コネクタ) ファーストパーティコネクタ サードパーティコネクタ data ingestion と federation の違い カスタムコネクタ MCP サーバーデータストア 認証情報 概要 シングルサインオン(SSO)設定手順 IAM によるアクセス制御 データソースへの認証 セキュリティ・統制 データの保護 データの所在地 Model Armor との統合 アナリティクス トラブルシューティング Google Workspace コネクタの注意点 検索結果が表示されない NotebookLM Enterprise アクセス用 URL が発行できない データストアに関する参考記事 概要 Gemini Enterprise とは Gemini Enterprise (旧称 Google Agentspace)とは、Google Cloud が提供する生成 AI アシスタントサービスです。Google が提供する生成 AI モデルである Gemini が組み込まれており、AI とのチャットにより テキストや画像の生成 をしたり、AI エージェントにより 人間のタスクを自動化 したり、組織内に分散しているドキュメント、メール、チャット履歴などのデータの横断検索により 情報の発見を手助け したりします。また、NotebookLM Enterprise が付属しており、 情報の整理や要約 を効率化します。 Gemini Enterprise の主要機能は、以下の3つと言うことができます。 AI エージェントのプラットフォーム Google 品質の横断検索 NotebookLM Enterprise Gemini Enterprise は、単なる AI チャットツールや横断検索ツールに留まらず、ノーコードエージェントを簡単に開発したり、企業で独自開発したフルコードの AI エージェントを統合することもできます。 AI エージェントのプラットフォーム であることが、Gemini Enterprise のコアバリュー(核となる価値)であるといえます。 参考 : What is Gemini Enterprise? 参考 : Gemini Enterprise concepts Gemini Enterprise で何ができるのか Gemini Enterprise は、ブラウザで起動するウェブアプリケーションです。以下のような画面で、情報の検索や AI エージェントへの指示を行うことができます。 Gemini Enterprise の画面 上記のスクリーンショット中央部のテキストボックスに質問や指示をすると、Google ドライブや SharePoint などのデータソースへの 横断検索 を実行したり、アップロードしたファイルに基いて生成 AI に 質問 したり、 画像や動画を生成 したりなど、様々なタスクを実行できます。この機能は アシスタント と呼ばれます。 また Gemini Enterprise のライセンスには、 NotebookLM Enterprise もパッケージされています。NotebookLM Enterprise は、独自データをアップロードして生成 AI から利用できるウェブサービスです。知識を整理したり、ドキュメントを要約・分析したり、ドキュメントに基づいてポッドキャスト風の音声を生成することもできます。 その他にも、Agent Designer により ノーコードエージェント を簡単に開発できたり、Deep Research などの Google が用意したエージェント機能を利用したり、フルコードで独自に開発したエージェントを統合することができるなど、Gemini Enterprise には AI エージェントのプラットフォーム というべき機能が多数備わっています。 Gemini Enterprise の背後で動作する AI モデルは、 Gemini です。Gemini 3 Pro / Flash、Gemini 3 Pro Image(通称 Nano Banana Pro)などのモデルが動作し、ユーザーの仕事をサポートします。 多様なデータソース Gemini Enterprise の横断検索は、Google ドライブや Google カレンダー、BigQuery などの Google サービスのほか、Microsoft Teams、Outlook、SharePoint Online、OneDrive、Notion、Salesforce、Box、Slack など多くのサードパーティデータソース(コネクタ)に対応しています。また、カスタムコネクタを開発することにより任意のデータソースを接続することも可能です。 Gemini Enterprise はこのような多様なデータソースを横断して、 セマンティック検索 (意味論検索)により、あいまいな言葉や自然言語での検索を可能にします。また、検索結果に応じてドキュメントを要約したり、人間の自然言語による質問に対して回答を返すこともできます。 対応しているデータソースの詳細は後述します。また以下の公式ドキュメントに記載されています。 参考 : Connect a Google data source 参考 : Connect a third-party data source さらに Gemini Enterprise には、 MCP サーバー をデータストアとして接続できます。これにより、MCP サーバーがプロキシとして動作して、Gemini Enterprise からレガシーな社内システムなどの情報を取得することができます。 参考 : Set up your custom MCP server data store 提供形態 Gemini Enterprise は Google Cloud と統合されたサービスです。使用には Google Cloud プロジェクトが必要 です。またサブスクリプションの請求は Google Cloud の請求先アカウントと紐付きます。 類似プロダクトである Gemini アプリが Google Workspace や個人用 Google アカウントと紐づくプロダクトである一方、Gemini Enterprise は Google Cloud と結びつきが深いプロダクトです。 なお Gemini Enterprise には Entra ID(Active Directory)などのサードパーティ IdP のアカウントでログインできるため、使用にあたって Google Workspace は必須ではありません 。 利用するには Gemini Enterprise をセットアップするには、Google Cloud プロジェクトが必要です。Google Cloud プロジェクトを作成して請求先アカウントと紐づけ、必要な API を有効化すると、Gemini Enterprise の アプリ を作成できます。アプリは、Gemini Enterprise の管理単位(テナント)です。 その後、横断検索のために各種データソース用の データストア と呼ばれるコネクタを作成し、認証情報を設定します。 ユーザーが利用できるようにするためには、 IAM ロール の設定と、 ライセンス の購入およびユーザーアカウントとの紐づけが必要です。ライセンスは Google Cloud コンソールから購入でき、請求は Google Cloud の請求先アカウントに対して行われます。 ここまで設定すれば、ユーザーは専用の URL から Gemini Enterprise アプリにアクセスできます。 その他にも、 アシスタントアクション (Assistant actions)を利用する場合など、機能に応じていくつかのセットアップが必要です。 参考 : Get started with Gemini Enterprise 参考 : Get licenses for Gemini Enterprise モバイルアプリ Gemini Enterprise には モバイルアプリ が用意されており、スマートフォンやタブレット端末から企業データに基づいた AI タスクを行うことができます。 2026年3月現在、Gemini Enterprise のモバイルアプリは Private GA(限定公開)段階であり、使用には Google の営業チームへの申請が必要です。 参考 : Gemini Enterprise release notes - February 12, 2026 個人での利用 Gemini Enterprise は、企業や官公庁などの組織が利用することを想定したサービスです。ただし、最低ライセンス購入数は1ライセンスからであり、個人での利用は不可能ではありません。 Gemini Enterprise の利用の前提となるのは、課金が有効になった Google Cloud プロジェクトのみです。 ただし、個人向けの代替策として、Gemini アプリや NotebookLM といった個人 Google アカウントでも利用可能なサービスが用意されているため、そちらの利用も検討します。 参考 : 全Geminiプロダクトを徹底解説! - G-gen Tech Blog 参考 : NotebookLM vs Gemini アプリ:業務で使い分けるための実践知識まとめ - G-gen Tech Blog 料金とライセンス サブスクリプション Gemini Enterprise の利用にあたっては、ユーザーごとにライセンスが必要です。 Gemini Enterprise には ライセンス という言葉と サブスクリプション という言葉が両方使われます。サブスクリプションは契約の単位であり、ライセンスは個々のユーザーに割り当てることができる権利の単位です。例えば「Gemini Enterprise Standard の年間サブスクリプションを、100ライセンス購入する」というように使います。ライセンス数のことを シート数 と表現する場合もあります。 Gemini Enterprise のサブスクリプションは、月間サブスクリプションまたは年間サブスクリプションから選択して購入可能です。また、サブスクリプションの購入は Google Cloud コンソールから行うことができ、支払いは Google Cloud の請求先アカウントを通して行うことができます。 Gemini Enterprise のサブスクリプションには、 Gemini Enterprise Standard 、 Gemini Enterprise Plus 、 Gemini Enterprise Frontline があります。また、 NotebookLM Enterprise だけが利用可能なサブスクリプションもあります。さらに、廉価版の Gemini Business も存在しています。 Gemini Business は Google Cloud 環境が不要な下位プランの扱いであり、Google Cloud 販売パートナーからの購入ができなかったり、Google Cloud コンソールからのオンライン購入ができないプランです。 サブスクリプション名 機能詳細 (一部抜粋) Gemini Business ・データソースの横断検索と要約、生成 ・AI によるテキスト、画像、動画の生成 ・ノーコードエージェントの開発画面 ・ NotebookLM Enterprise 付属 ・Google のプリメイドエージェント (※1) ・ユーザーあたり 25 GiB のストレージ ・最大300ライセンス Gemini Enterprise Standard Business の全機能に加えて以下 ・より高いクォータ(生成上限) ・ Gemini Code Assist Standard 付属(コーディング補助ライセンス) ・カスタムエージェントの統合 ・VPC Service Controls や CMEK など 高度なセキュリティ ・ユーザーあたり 30 GiB のストレージ ・最大ライセンス数制限なし Gemini Enterprise Plus Standard の全機能に加えて以下 ・より高いクォータ(生成上限。特に画像、動画などのマルチモーダル) ・ユーザーあたり 75 GiB のストレージ Gemini Enterprise Frontline 現場従業員向けの廉価版ライセンス。NotebookLM Enterprise やノーコードエージェントは新規作成ができず公開されたものの使用のみ、Gemini Code Assist なし、Google のプリメイドエージェントなし、などの制限 NotebookLM Enterprise NotebookLM Enterprise のみ (※1) Deep Research、アイデア生成エージェントなど 上記の表は一部抜粋であり、詳細な機能差は以下のドキュメントを参照してください。 参考 : Compare editions of Gemini Enterprise プランと料金 Gemini Enterprise の料金(各プランの価格)は以下のとおりです。価格は2026年3月現在の Google Cloud コンソールおよびドキュメントの表記に基づきます。 サブスクリプション名 最低購入数 価格(月額契約) 価格(年間契約) Gemini Enterprise Standard 1 $35/人/月 $30/人/月 Gemini Enterprise Plus 1 $60/人/月 $50/人/月 Gemini Enterprise Frontline 150 (※2) $15/人/月 $12.5/人/月 NotebookLM Enterprise 15 $9/人/月 $7.5/人/月 (※2) 150以上の Gemini Enterprise Standard もしくは Plus ライセンスの購入が前提として必要 参考 : Get licenses for Gemini Enterprise 参考 : Get licenses for NotebookLM Enterprise Gemini Enterprise のサブスクリプションの種類 クォータ Gemini Enterprise では、アシスタントへの1日あたりのクエリ回数やノーコードエージェントの1日あたりの作成数上限、動画や画像の生成回数の上限など、さまざまな クォータ (割り当て)が設定されています。 クォータは、 1ユーザーあたりのクォータ × 購入済みのライセンス数でプールされ 、各ユーザーはそこから割り当てを消費します。 以下に、1ユーザーあたりのクォータを、一部抜粋します(2026年3月現在の公式ドキュメントの記載による)。 割り当て名 Gemini Enterprise Standard Gemini Enterprise Plus アシスタントへのクエリ 160回/日 200回/日 ノーコードエージェントの作成数 1エージェント/日 10エージェント/日 動画生成 2回/日 3回/日 画像生成 5回/日 10回/日 Deep Research 実行 3回/日 10回/日 例えば「動画生成」について、Gemini Enterprise Plus サブスクリプションを100ライセンス購入済みであれば、サブスクリプション全体での上限は300回/日となります。 各ユーザーがアクションを実行すると、プールされた共有クォータから回数を消費します。超過した分は従量課金で 追加の課金 が行われます。クォータを超過すると自動的に課金が発生するので、十分に注意が必要です。2026年3月現在、クォータを超過した場合に使用を禁止するなどの「フタをする」機能はありません(動画や画像の生成自体を無効にすることはできます)。 クォータの消費状況は、管理画面から確認することができます。 参考 : Get licenses for Gemini Enterprise - View the pooled quota usage 最新のすべてのクォータ情報や追加料金については、以下の公式ドキュメントを参照してください。 参考 : Quotas and overages サブスクリプションの購入 Gemini Enterprise や NotebookLM Enterprise のサブスクリプションの購入は、Google Cloud コンソール画面上で行うことができます。 Gemini Enterprise の場合 Gemini Enterprise のサブスクリプションを購入するには、Google Cloud コンソールにログインし、上部の検索ボックスに「Gemini Enterprise」と入力して Gemini Enterprise の画面に遷移します。画面左下部分にある「サブスクリプションを管理」をクリックして、サブスクリプション管理画面に遷移して、サブスクリプションを紐づける請求先アカウントを選択してから、「サブスクリプションを作成」ボタンを押下します。購入するエディション(Gemini Enterprise Standard または Plus)を選択すると、購入画面が表示されます。 ここで、サブスクリプション名称(任意)、ライセンス数、契約期間、自動更新の有無、サブスクリプションを紐づける Google Cloud プロジェクト、ロケーション( global / us / eu )を指定して購入します。 ここから分かるように、サブスクリプションは請求先アカウントにひも付きます。また、Google Cloud プロジェクトやロケーションにも紐づきます。 Gemini Enterprise のサブスクリプション購入画面 NotebookLM Enterprise の場合 一方で NotebookLM Enterprise のサブスクリプションの購入画面は、2026年3月現在、上記とは異なります。Google Cloud コンソールで Gemini Enterprise の管理画面に遷移したあと、左部分のメニューから「ユーザーの管理」をクリックします。プルダウンメニューからロケーション( global / us / eu )を選択すると、購入済みのサブスクリプションと、ライセンスを紐づけられたユーザーの一覧が表示されます。ここに「サブスクリプションを追加」ボタンがあり、NotebookLM Enterprise のサブスクリプションはここから購入できます。 2026年3月現在はこのような UI になっていますが、Gemini Enterprise の購入方法と一貫性がないため、この仕様は変更される可能性があります。 NotebookLM Enterprise のサブスクリプションも、Google Cloud プロジェクトやロケーションに紐づきます。料金は、プロジェクトに紐づいている請求先アカウントに課金されます。 NotebookLM Enterprise のサブスクリプション購入画面 ライセンスの適用 サブスクリプションを購入後、手動または自動で、ライセンスをユーザーに割り当てることができます。Google Cloud コンソールで Gemini Enterprise の管理画面に遷移したあと、左部分のメニューから「ユーザーの管理」をクリックすることで、今保有しているサブスクリプション(ライセンス)を確認したり、ライセンスとユーザーの紐づけ、自動割当設定の管理などが行えます。 手動割り当て の場合、ユーザーのメールアドレスに対して手動でライセンスを割り当てます。 自動割り当て の場合、アクセス権限を持つユーザーが Gemini Enterprise や Notebook LM Enterprise のユーザー画面に初めてアクセスしたときに、ライセンスが自動で割り当てられます。 前述のとおり、サブスクリプション(ライセンス)はリージョンに紐づいています。例として Gemini Enterprise アプリを global と us のそれぞれに作成した場合は、それぞれのリージョンに対してサブスクリプション(ライセンス)の購入が必要です。 アシスタント アシスタントとは アシスタント (Assistant)は Gemini Enterprise の主要機能です。自然言語を介して、横断検索やテキスト生成、ファイルの分析、動画や画像の生成などを行うことができます。 登録したデータストアに基づいた生成が行われるほか、 Google Search grounding を有効化することで Google 検索によるグラウンディング(根拠づけ)を行い、外部ウェブサイトに基づいた生成をさせることもできます。アプリの管理画面を開き、「構成 > アシスタント」画面で「ウェブ グラウンディングを有効にする」を有効にすることで、Google 検索が有効になります。 また指示の際に、ファイルを PC からアップロードしたり Google ドライブからファイルを追加することで、ファイルを コンテキスト (背景情報)として利用させることができます。さらに、接続済みの データソース (Google ドライブや Gmail、Microsoft SharePoint、Microsoft Outlook など)を指定することで、横断検索の機能を利用してファイルを検索したり、それらの情報をコンテキストとしてアシスタントに利用させることができます。 参考 : Chat with the assistant 横断検索 アシスタントに自然言語で指示をすると、接続したデータソースに対してドキュメントの横断検索が実行できます。検索機能は Google 検索の技術を活かしており、 セマンティック検索 (意味論検索)が行われます。あいまいな語句や、近い意味の語句で検索することができます。 また、検索結果のドキュメントを利用して要約した回答を、生成 AI が生成します。人間のあいまいな言葉による質問にも、AI による回答が生成されます。 検索と生成の結果(画面は2025年4月2日のもの) テキストの生成、ファイルの分析 アシスタントが行えるのは、検索だけではありません。Google Workspace や個人 Google アカウントに付属している Gemini アプリと同様に、知らない用語に関する質問、文章の生成や推敲、ソースコードの作成など、 生成 AI による様々なタスク を行わせることもできます。 アシスタントは PDF、Microsoft Office ファイル、画像、ビデオ、ソースコードなど アップロードしたファイルに基づいたタスク を行ったり、ファイルを 分析 することができます。 これらのタスクは、Gemini 3 Pro、Gemini 2.5 Pro、Gemini 2.5 Flash といった Google の生成 AI モデルによって実行されます。アシスタントへの指示の際、モデルを選択可能です。 ファイルに対するタスクの実行 画像や動画の生成 それに加え、アシスタントは自然言語による指示に基づいて 画像 や 動画 を生成することも可能です。 画像生成には、Gemini 3 Pro Image(Nano Banana Pro)モデルなどが使用されます。動画生成には、Veo 3 などのモデルが使用されます。 画像の生成 Google ドキュメント、Google スプレッドシートへのエクスポート アシスタントの出力結果は、Google ドキュメントや Google スプレッドシートへのエクスポートが可能です。 参考 : Chat with the assistant - Export to Google Docs and Google Sheets Google ドキュメントへのエクスポート Word、PowerPoint、PDF の生成 アシスタントは、Word ファイル(DOCX)、PowerPoint ファイル(PPTX)、PDF の生成も可能です。 PowerPoint ファイル生成の指示 生成された PowerPoint ファイル アシスタントアクション アシスタントアクション (Assistant actions)は、アシスタントに入力されたユーザーからの自然言語による指示に基づき、カレンダー予定作成やメール送信などのタスクを自動化する機能です。アシスタントアクションは以下のようなサービスに対応しています(一部抜粋)。 コネクタ 対応アクション Gmail メール送信 Google カレンダー 予定の作成、更新 Box ファイルのコピー、アップロード、ダウンロード Confluence Cloud ページ作成等 Jira Cloud Issue 作成、更新等 Microsoft OneDrive ファイルのアップロード、ダウンロード等 Microsoft Outlook 予定の作成、メールの送信塔 Microsoft SharePoint ドキュメントのアップロード、ダウンロード等 アシスタントアクションを使うことで、AI との対話の中で、Jira の issue の作成、Gmail や Outlook でのメール送信、Google カレンダーや Outlook カレンダーの予定作成が可能です。 参考 : Set up assistant actions 参考 : Connect a Google data source - Supported actions 参考 : Connect a third-party data source - Supported actions アシスタントアクションの実行 エージェント エージェントの種類 エージェント (Agents)は、AI が人間の代わりにタスクを行う機能です。Gemini Enterprise のエージェントには、以下の3種類があります。 名称 説明 あなたのエージェント(Your Agents) ユーザー個人が作成した Agent Designer で作成したノーコードエージェント Google が作成したエージェント(Made by Google) Google によって用意されたエージェント。Deep Research、アイデアの生成、Data Insights エージェントなど 会社のエージェント(From your company) 管理者が作成して配布するエージェント。Vertex AI Agent、A2A、Dialogflow で実装したエージェントを配布できる あなたのエージェント(Your Agents) は、ユーザー個人が作成したノーコードエージェントです。Gemini Enterprise のユーザーは、Agent Designer という UI で、自然言語により独自の AI エージェントを作成できます。開発のスキルは不要です。 Google が作成したエージェント(Made by Google) は、Gemini Enterprise に組み込みのエージェントであり、すぐに使うことができます。後述の Deep Research や アイデアの生成 、 Data Insights エージェント があり、今後も Google によって追加される可能性があります。 会社のエージェント(From your company) は、Gemini Enterprise 管理者が作成・配布するエージェントです。ADK エージェント(Vertex AI Agent Engine でホスト)、Dialogflow、A2A で接続されたエージェントなど、会社が独自に開発する AI エージェントを Gemini Enterprise から呼び出すことができます。 これらのエージェントは、エージェントギャラリー画面から選択して、いつでも呼び出すことができます。 参考 : Browse agents with Agents gallery エージェントギャラリー Deep Research Gemini Enterprise には Google 作成のエージェントとして Deep Research が用意されています。Deep Research は Gemini アプリにも実装されている機能で、Gemini Enterprise に繋がれたデータストアや、インターネット上の複数のデータソースに基づいて深い調査を行い、詳細なレポートにまとめてくれます。 Gemini Enterprise に接続した Google ドライブや Notion、SharePoint といった社内データもレポート生成のためのデータソースとして使えるため、社内情報をもとにしたレポートを生成させることが可能です。 Deep Research は通常の生成 AI チャットアプリとは異なり、多段で詳細な調査と生成を行うため、回答の生成には数分間を要します。 Deep Research 参考 : Get reports with Deep Research アイデアの生成 アイデアの生成エージェント (Idea Generation agent)も、Google が用意したエージェントの1つです。 自然言語でアイデア創出の指示をすると、生成 AI が複数のアイデアを検討し、ランク付けしたうえで提示します。各アイデアは詳細にレポート化されています。新ビジネス、マーケティング施策、エンジニアリングなど、様々な場面でのアイデア創出に活かすことができます。 Deep Research と同様、最終結果の生成には数分の時間を要します。 参考 : Ideate with Idea Generation agent アイデアの生成エージェント ノーコードエージェント ノーコードエージェント (No-code agents)は、ユーザーが独自に定義できる AI エージェントです。事前に自然言語でプロンプトを記述することで振る舞いを定義でき、開発やプログラミングのスキルは必要ありません。Gemini アプリにおける Gems と似ていますが、多段階の挙動を指示可能です。 ノーコードエージェントは、後述する Agent Designer と呼ばれる UI で自然言語により目標や手順を指定して作成します。また データソースとツール を指定することで、特定のデータソースから情報を取得して回答を生成させるようにできます。 また、作成したノーコードエージェントは、組織内で他人に共有することができます。共有にあたっては、管理者による承認を必須とすることも可能です。 例えば、Jira や Notion といったデータソースから情報を取得させ、開発プロジェクトの状況を報告するエージェントや、社内規定集から情報を取得させ、社内規定について回答するヘルプデスクエージェントを作成できます。 参考 : Agent Designer overview ノーコードエージェントの使用 Data Insights エージェント Data Insights エージェント は、自然言語で質問することで BigQuery のデータに対してクエリを実行できるエージェントです。2026年3月現在「許可リスト付き一般公開(GA with allowlist)」であり、 使用には Google への申請が必要 です。 SQL の知識がなくても、自然言語での質問に基づいて AI が SQL を生成します。ユーザーの質問の意図を理解して SQL が生成されるほか、SQL の実行結果はそのまま返されるだけではなく、図表で視覚化されたり、洞察を加えて提示されます。 Data Insights エージェントは「ある地域の売上トップ5の店舗について、〇〇を図にして比較して」などの質問に答えることができます。 参考 : Get insights with the Data Insights agent カスタムエージェントの統合 Gemini Enterprise には、ユーザーが 独自開発した AI エージェント を接続できます。例として Agent Development Kit(ADK)を用いて開発した組織独自の AI エージェントを Gemini Enterprise に統合できます。このような独自エージェントは カスタムエージェント と呼ばれます。 これにより、Gemini Enterprise の標準機能では実現できないタスクを AI エージェントに実行させることが可能です。この拡張性は、Gemini Enterprise をただの検索・AI サービスではなく、 AI エージェントのプラットフォーム と位置づけるものになっています。 また、Google Cloud Marketplace でサードパーティのエージェントを購入することもできます。これらのエージェントは、A2A プロトコルと呼ばれる、AI エージェント同士の通信方法を規定するプロトコルで Gemini Enterprise と接続されます。 カスタムエージェントとして統合可能な AI エージェントは、以下です。 ADK で開発され Vertex AI Agent Engine にホストされたエージェント A2A プロトコルで接続されるエージェント Dialogflow エージェント(Conversational agents) Google Cloud Marketplace で購入したエージェント Gemini Enterprise からカスタムエージェントを呼び出す 参考 : Register and manage ADK agents hosted on Vertex AI Agent Engine 参考 : Register and manage A2A agents 参考 : Register and manage Dialogflow agents 参考 : Add and manage A2A agents from Google Cloud Marketplace エージェントの社内共有 Gemini Enterprise に接続されたカスタムエージェント(Vertex AI Agent Engine エージェント、A2A プロトコルエージェント、Dialogflow エージェント、Google Cloud Marketplace で購入したエージェント)には、アクセス権限を設定して、特定のユーザーやグループからだけ使用できるように制御できます。ユーザー全員に権限を付与することも可能です。 権限は、Google アカウントや Google グループ、Workforce identity pool(Entra ID 等と統合した場合)、全ユーザーのいずれかに付与できます。 参考 : Share agents from Google Cloud console また、Agent Designer で個々の従業員が作成したノーコードエージェントも、他人に共有することができます。他人に共有するにあたり、管理者の承認を必須とする設定も可能です。 ノーコードエージェントを他人に共有するときの注意点として、 データソースへのアクセス件も共有されてしまう という点に十分留意してください。データソースに対して本来アクセス権を持っていない人でも、ノーコードエージェントを通じて情報に到達できてしまいます。 参考 : Share an agent Agent Designer とノーコードエージェント Agent Designer とは Agent Designer とは、ノーコードエージェントを開発するための画面です。システム開発の知識は一切不要で、誰でもノーコードエージェントを開発することができます。 参考 : Agent Designer overview エージェントにどのようなタスクをやらせたいか、自然言語で指示すると、自動的にエージェントが作成されます。 自然言語によるエージェント開発 また、タスクの順番を指定したり、プロンプトを明示的に入力して、ワークフローツールのようにエージェントを開発できます。 個々のフローでは、使用モデルを指定したり、プロンプトを指定したり、使用するツール(どのコネクタに対して検索をかけるか等)を指定できます。また、あらかじめ参考ファイルをアップロードしてエージェントに参照させることもできます。 Agent Deisgner のフロー編集画面 スケジュール実行 Agent Designer で作成したノーコードエージェントは、スケジュール実行させることができます。 月、週、日、時間などの単位で繰り返し予定を設定し、その時間が来るとエージェントが実行されます。 参考 : Schedule agent executions プロンプトのコツ AI に与えるプロンプトのコツとして、以下の Google Workspace 公式ドキュメントでは、 ペルソナ 、 タスク 、 コンテキスト 、 形式 (フォーマット)を明示することが有用であると示唆されています。ドキュメントは Gemini アプリの Gems に関するものですが、生成 AI に与えるプロンプト全般で使えるコツといえます。 参考 : カスタム Gem 作成のヒント - 適切な Gem カスタム指示を作成する ノーコードエージェントの共有 Agent Designer で個々の従業員が作成したノーコードエージェントは、他人に共有することができます。エージェント一覧から対象エージェントの三点リーダーをクリックし「共有」を選択したうえで、共有対象のユーザーやグループを追加します。 ノーコードエージェントの共有 ノーコードエージェントの共有にあたり、管理者の承認を必須とする設定も可能です。 管理者の承認を必須に ノーコードエージェントを他人に共有する際は、エージェントに「知識(Knowledge)」として添付したファイル(PC からのアップロード、Google ドライブからの添付、または SharePoint / OneDrive からの添付)ついては、エージェントにアクセスできる人であれば情報にアクセスできる点に注意してください。ノーコードエージェントがコネクタ経由でアクセスするデータへのアクセス制御については、通常のコネクタ使用時と同様、クエリを実行したユーザーのアクセス権限が評価されます。 参考 : Share an agent パーソナライズ(メモリ) Gemini Enterprise はユーザーの利用状況を学習して パーソナライズ されます。パーソナライズはデフォルトで有効化されていますが、管理者設定や個人設定でオフにすることも可能です。 Gemini Enterprise はユーザー1人1人の入力パターンやアシスタントとの最近の会話内容を学習し、 メモリ (Memory)を構築することで、ユーザーの仕事内容や優先順位、ユーザーが好む文体などを理解します。また Microsoft Outlook や Microsoft OneDrive などの業務アプリケーションからメール、カレンダー、ドキュメントなどの最近の情報をスキャンして、状況に応じたサポートを行います。 また Web ブラウザで位置情報の取得を許可していれば、天気やイベント情報など、位置情報に応じた情報を出力します。 プロフィール情報として氏名、役割、業種などを定義しておくことで、さらに精度を向上させることもできます。 参考 : Personalize your Gemini Enterprise experience 「歯車マーク > カスタマイズ」でプロフィールを設定 また、アシスタントとの会話で明示的に「〇〇を覚えて(remember xx)」と指示することで、明示的に情報を記憶させておくことができます。保存済みの情報は、個人ごとの設定画面(右上の歯車マーク)から確認できます。 NotebookLM Enterprise NotebookLM Enterprise とは NotebookLM Enterprise は、Gemini Enterprise のライセンスに含まれている生成 AI ノートブック機能です。 NotebookLM は Google が無償で提供している生成 AI ウェブサービスであり、アップロードしたファイルに基づいて、生成 AI が分析を提供したり、要約したり、新たな文章を生成したりできる仕組みです。また Google Workspace の多くのエディションには、組織向けの機能を強化した NotebookLM in Pro が付随しています。 NotebookLM Enterprise は、無償版や Pro 版とも異なる、Google Cloud と統合された NotebookLM です。 NotebookLM Enterprise は、Gemini Enterprise ライセンスに含まれていますが、スタンドアロンのプロダクトとして購入することもできます。 参考 : What is NotebookLM Enterprise? NotebookLM Enterprise NotebookLM の基本的な使い方については、以下の記事も参照してください。 blog.g-gen.co.jp 無償版や Pro 版との違い NotebookLM Enterprise では、無償版の NotebookLM と比較して、エンタープライズ向けの機能が強化されています。 NotebookLM Enterprise で作成したノートブックは、無償版や Pro 版の NotebookLM ユーザーに対しては 共有できません 。同じ Google Cloud プロジェクトに紐づいた NotebookLM Enterprise の利用者に対してのみ、共有できます。これにより、不用意に組織外にノートブックの内容が流出することを避けることができます。 NotebookLM Enterprise は、Google Cloud の API・データ保護機能である VPC Service Controls にも対応しています。 また、ノートブックやアップロードしたデータは、Google Cloud の内部に保存され、Google Cloud の規約に基づいて保護されます。 認証の面では、無償版の NotebookLM や Google Workspace に付属する NotebookLM in Pro と異なり、NotebookLM Enterprise では利用者の Google アカウントは 必須ではありません 。Active Directory(Entra ID)等のサードパーティの IdP のアカウントで利用することができます。 上記のように、NotebookLM Enterprise はセキュリティやガバナンス関連の機能が無償版や Pro 版に比較して強化されており、よりセキュアに、統制が効いた状態で利用することができるエディションであるといえます。 NotebookLM の各エディションの違いについては、以下の記事を参照してください。 blog.g-gen.co.jp ユーザーインターフェイス NotebookLM Enterprise のユーザーインターフェイスは、基本的に無償版や Pro 版と同じです。 ただし、アクセスのための URL は異なります。無償版や Pro 版が https://notebooklm.google.com/ からアクセスするのに対し、NotebookLM Enterprise には2つのアクセス方法があります。 Gemini Enterprise の Web UI 内のメニューからアクセス 管理者が払い出した専用の URL からアクセス 1つ目の Gemini Enterprise の画面から遷移する方法は、Gemini Enterprise の左側のメニューから NotebookLM をクリックするだけです。 Gemini Enterprise の画面から遷移 メニューが表示されなかったり、権限不足である旨が表示された場合は、IAM 権限が不足している可能性があります。利用者の Google アカウントまたは Entra ID 等と連携している Workforce Identity Pool 等に、Cloud NotebookLM ユーザー( roles/discoveryengine.notebookLmUser )ロールを付与してください。 2つ目の方法である NotebookLM Enterprise のアクセス専用 URL は、管理者によって Google Cloud コンソールから発行できます。Google Cloud コンソールで、検索テキストボックスに「NotebookLM」と入力するとサジェストされる「NotebookLM for Enterprise」画面に遷移すると、URL を発行できます。 URL がうまく発行できないときのトラブルシューティングについては、当記事末尾の「トラブルシューティング」の見出しを参照してください。 Gemini Enterprise からの検索 Gemini Enterprise には、NotebookLM Enterprise をデータストアとして追加し、検索対象とすることができます。ただし、以下の制限があります。 ノートブック内のデータは Gemini Enterprise にインポートされない。タイトルだけが検索対象となる 他人から共有されたノートブックは検索対象とならない(Gemini Enterprise のユーザー、つまり検索者が自分で作ったノートブックだけが検索対象となる) Gemini Enterprise と同じ Google Cloud プロジェクト・同じリージョンの NootebookLM Enterprise だけが検索対象となる 上記の仕様から、例えば、ある部署がノートブックを「よくある質問」のようにまとめて他部署に公開することはできますが、そのノートブックを Gemini Enterprise から検索対象とすることはできません。 参考 : Enable NotebookLM Enterprise as a search source ノートブックへのソース追加 逆に、Gemini Enterprise で検索された検索結果のファイル等を、ノートブックに追加することもできます。検索結果からワンクリックで追加できます。なおこの機能を使ってデータをノートブックに追加した場合、 ドキュメントが複製されてノートブックに追加される仕様になっています。ドキュメントが2つ存在することになることから、元のドキュメントへの変更はコピーには反映されないので、注意が必要です。 また、この機能はすべてのデータソースに対応しているわけではなく、例えば Google ドキュメントや Google スライドはノートブックに追加できますが、メールは追加できません。 参考 : Use NotebookLM Enterprise within Gemini Enterprise 利用可能なデータソース(コネクタ) ファーストパーティコネクタ 参考 : Connect a Google data source Gemini Enterprise の横断検索は、以下のような Google サービスのデータソースに対応しています。リストは公式ドキュメントに掲載されているものからの一部抜粋です。 BigQuery Cloud Storage Google ドライブ Gmail Google チャット Google サイト Google カレンダー Google グループ Google アカウント NotebookLM Enterprise Cloud SQL Spanner Firestore ...等 サードパーティコネクタ 参考 : Connect a third-party data source Gemini Enterprise の横断検索は、以下のようなサードパーティのデータソースに対応しています。以下のリストはいずれも、2026年5月現在の一部抜粋です。 正式提供開始済み Box(data federation) Confluence Cloud(data ingestion / federation) Dropbox(data federation) Jira Cloud(data ingestion / federation) Microsoft Entra ID Microsoft Outlook(data ingestion / federation) Microsoft OneDrive(data ingestion / federation) Microsoft SharePoint Online(data ingestion / federation) ServiceNow(data ingestion) Public Preview 段階 Confluence Data Center(data federation) GitHub(data federation) GitLab(data federation) Jira Data Center(data federation) Microsoft Teams(data federation) Notion(data federation) ServiceNow(data federation) Zendesk(data federation) Private Preview 段階 (要申請) Box(data ingestion) Confluence Data Center(data ingestion) Jira Data Center On-premises(data ingestion) Salesforce(data ingestion) Slack(data federation) data ingestion と federation の違い Gemini Enterprise のコネクタには、 data ingestion と data federation の2種類があります。同じデータソースに対して、2種類のうち片方、もしくは両方のコネクタが用意されており、両方用意されている場合はどちらかを選択してコネクタを作成できます。 data ingestion とは、データを同期して Gemini Enterprise 内にインデックス情報(データを ベクトル化 して AI から検索できるようにした変換したもの)を保持する連携方式のことです。 一方で data federation とは、インデックス情報を Gemini Enterprise 内に 保持せず 、検索の都度、Gemini Enterprise から API 経由でデータソース側へ検索クエリを投入する連携方式のことです。 一般的に、data ingestion のほうが検索精度が高くなる可能性がありますが、Gemini Enterprise のストレージを消費するほか、データの同期時に、データソース側の API リクエストのクォータに抵触するなどのおそれがあります。また、データを定期的に同期する必要があるため、同期頻度の設定と検索タイミングによっては最新の情報が反映されない場合があります。一方の data federation では、インデックス情報を Gemini Enterprise に保持しないため、ストレージ容量を過剰に消費するおそれがないほか、データは常に最新のものが返されます。 参考 : Introduction to connectors and data stores カスタムコネクタ Gemini Enterprise では、Google から提供されるクライアントライブラリを使用して、カスタムコネクタを開発することができます。開発と保守のコストはかかりますが、これにより Google がネイティブに対応していないデータソースとの連携が可能になります。 カスタムコネクタの開発時は、データ取得(Fetch)、Discovery Engine ドキュメント形式への変換(Transform)、そしてデータソースとの同期(Sync)を実装する必要があります。また、データのアクセス制御(ACL)の検討が必要です。 参考 : Custom connectors - Overview Gemini Enterprise クライアントライブラリは Python、Java、Node.js など、複数種類の言語用に提供されています。 参考 : Gemini Enterprise client libraries MCP サーバーデータストア Gemini Enterprise には、 MCP サーバー をデータストアとして接続できます。これにより、MCP サーバーがプロキシとして動作して、Gemini Enterprise からレガシーな社内システムなどの情報を取得することができます。 リモートにホストされている MCP(Model Context Protocol)サーバーをデータストアとして Gemini Enterprise に接続できます。対応しているのは StreamableHTTP プロトコルです。なお、ローカル MCP サーバーを Gemini Enterprise にインストールするようなことはできません。 MCP サーバーデータストアは Agent Designer で作成されたノーコードエージェントからのみ使用できます。デフォルトの Gemini Enterprise のアシスタントからは使用できない点に注意が必要です。 参考 : Set up your custom MCP server data store 認証情報 概要 Gemini Enterprise へは、 Google アカウント もしくは サードパーティ認証情報 を用いてログインできます。Gemini Enterprise を使用するにあたり、Google アカウントや Google Workspace は必須ではありません。認証情報の連携を設定することで、Entra ID などの IdP の認証情報でログインすることができます。 Google アカウントによる認証情報を選択する場合、利用者は Google Workspace 等で管理された Google アカウントを使って Gemini Enterprise へログインできます。 サードパーティの認証情報を選択する場合、Active Directory(AD FS 利用)や Entra ID、Okta、OneLogin など、OIDC または SAML 2.0 に対応している IdP の認証情報を利用することができます。 さらに、Gemini Enterprise がデータソース(Google ドライブや SharePoint など)の情報を得るためにも、認証情報の設定が必要です。Gemini Enterprise の設定時には、「Gemini Enterprise 自体へのログイン認証」と「データソースへの認証」は 分けて考える 必要があります。 Gemini Enterprise はデータソース(データストア)との同期に、ACL(アクセスコントロールリスト)の情報も同期します。Gemini Enterprise はこの ACL 情報を用いて、Gemini Enterprise にログインしたユーザーが アクセス権限を持っている情報だけ を検索結果に表示したり、要約に利用します。つまり、 利用者が本来アクセスできないファイルは検索結果や要約結果に現れません 。 参考 : Gemini Enterprise security overview 参考 : About apps and data stores 参考 : Configure identity provider シングルサインオン(SSO)設定手順 Active Directory や Okta など、サードパーティの IdP のアカウントで Gemini Enterprise へログインするには、Google Cloud の Workforce Identity 機能を用いて、OIDC や SAML 2.0 を使った認証情報の連携を設定します。 セットアップには、Google Cloud とサードパーティ IdP 側の両方で設定作業を行います。 Entra ID(OIDC 連携)を例に取ると、作業は以下のようになります。 Entra ID 側 アプリケーションの作成 クライアントシークレットの生成 Google Cloud 側 Workforce Identity Pool の作成 Workforce Identity Pool Provider の作成 クライアントシークレットの登録 OIDC 属性マッピングの設定 Workforce Identity Pool に対して Gemini Enterprise を利用するための IAM ロールを付与 SSO のセットアップにあたり、Entra ID の場合、クライアントアプリケーションの作成を行うにはグローバル管理者またはアプリケーション管理者のロールが必要です。 詳細な手順については、以下の公式ドキュメントを参照してください。 参考 : Microsoft Entra ID との Workforce Identity 連携を構成してユーザー ログインを行う IAM によるアクセス制御 Gemini Enterprise へのログインに Google アカウントを使う場合でも、サードパーティの IdP(Workforce Identity)を利用する場合でも、いずれの場合も Identity and Access Management(IAM)の仕組みによって、ユーザーにログインを許可する必要があります。 ユーザーが IAM 権限を持っており、かつ有効なライセンスが割り当てられている場合、Gemini Enterprise や NotebookLM Enterprise を利用可能になります。 必要なロールは以下のドキュメントに記載されています。 参考 : IAM roles and permissions 参考 : What is NotebookLM Enterprise? - User roles Gemini Enterprise にログインする権限を与えるには、ログインに使う Google アカウント、グループ、もしくは Workforce Identity プリンシパルに、プロジェクトレベルで以下のいずれかのロールを付与します。 Gemini Enterprise ユーザー( roles/discoveryengine.agentspaceUser ) また、NotebookLM Enterprise を利用させたい場合は、以下のロールを付与します。 Cloud NotebookLM ユーザー( roles/discoveryengine.notebookLmUser ) データソースへの認証 サードパーティのデータソースに接続するには、Gemini Enterprise と OIDC 等で連携するための設定をデータソース側に登録する必要があります。 詳細な手順は以下の公式ドキュメントに掲載されています。 参考 : Connect a third-party data source 例として、SharePoint や OneDrive 等の Microsoft 365 サービスでは、Microsoft Entra 管理センターで「アプリケーション」を作成し、API へのアクセス許可を設定したり、クライアントシークレットの発行を行います。 Microsoft Entra 管理センター データソースの追加作業にあたり、Microsoft 365 の場合、クライアントアプリケーションの作成を行うため、グローバル管理者またはアプリケーション管理者のロールが必要です。 セキュリティ・統制 データの保護 Gemini Enterprise や NotebookLM Enterprise に入力・出力したデータや保存されるデータは、Google Cloud の規約に基づいて保護されます。プロンプトや出力等は、Google のモデルの再トレーニングなどには使用されません。 参考 : Gemini Enterprise に関するよくある質問 また、Gemini Enterprise や NotebookLM Enterprise は、ISO 27001、SOC 1/2/3、PCI DSS などの各種監査要件を満たしています。 参考 : Compliance and security controls データの所在地 Gemini Enterprise では、アプリやデータストアの作成時に、ロケーション(リージョン)を選択できます。 特にデータ所在地に関する監査要件等、特別な理由がない限りは global が推奨されています。 global を選択した場合、データの所在地(地域、国等)は明示されませんが、機能制限なく Gemini Enterprise が使用可能なほか、ユーザーのレスポンスタイムも最適化されます。 特別な要件に対応するため、ロケーションとして us や eu などのリージョンを選択した場合には、 データレジデンシー がサポートされます。つまり、保存データは米国や欧州圏内に留まり、外部に出ることはありません。ただし、アナリティクス機能が使えない、Google 検索によるグラウンディングが使えないなど、一部の機能が制限されます。 asia-northeast1 (東京)、 europe-west2 (ロンドン)などの一部のロケーションは、許可リスト付き GA(一般公開)とされており、使用には Google への申請が必要です。 参考 : Gemini Enterprise Standard and Plus Editions data residency and ML regional processing commitments Model Armor との統合 Gemini Enterprise や NotebookLM Enterprise は、スクリーニングのためのフルマネージドサービスである Model Armor と統合できます。 Model Armor は、生成 AI のプロンプトやレスポンスをスクリーニングし、悪意あるコンテンツが生成 AI にインプットされたり、ユーザーに返されることを防ぐためのフルマネージドサービスです。Model Armor により、プロンプトインジェクションのような悪意あるプロンプトや、危険性のあるコンテンツを含んだレスポンスなどを検知してブロックできます。 blog.g-gen.co.jp 適用タイプは 検査してブロック と 検査のみ から選択できます。検査のみにした場合、検査結果が Cloud Logging ログエントリに記録されるものの、ブロックまではされません。 Gemini Enterprise で Model Armor を有効化するには、事前に テンプレート と呼ばれる設定オブジェクトを作成したうえで、Gemini Enterprise アプリの詳細画面の [構成] > [アシスタント] から [モデル アーマーを有効にする] を有効化します。 NotebookLM Enterprise では、同様に事前にテンプレートを作成したうえで、API 経由で有効化します。 参考 : Enable Model Armor in Gemini Enterprise 参考 : Enable Model Armor in NotebookLM Enterprise アナリティクス Gemini Enterprise のユーザーの利用状況を確認するために、アナリティクス(分析)画面が用意されています。管理者が、Gemini Enterprise の活用状況を確認するために利用できます。 アナリティクスは Google Cloud コンソールの Gemini Enterprise 画面から確認でき、総ユーザー数、Daily Active Users、リテンションレートやチャーンレートなどを確認することができます。 参考 : View and export analytics data アナリティクス画面 トラブルシューティング Google Workspace コネクタの注意点 Google ドライブや Google カレンダー、Gmail といった Google Workspace のデータソースは Gemini Enterprise に簡単に接続できますが、以下に留意する必要があります。 Google Workspace のコネクタをセットアップするときは、 接続対象の Google ドライブと同じ組織に所属する Google アカウントで作業する こと。設定時に顧客 ID が読み取られるため Google ドライブコネクタを使用するには Google Workspace の管理設定で「スマート機能」が有効化されている必要がある Google ドライブのデータはインデックスされないためストレージを消費しない(いわゆる data federation 形式) その他の詳細は、以下の公式ドキュメントから該当データソースのページを確認してください。 参考 : Connect a Google data source 検索結果が表示されない Workforce Identity 連携やデータソースの追加が正しく完了し、Gemini Enterprise からデータソースへのクロール(取り込み)も成功しているのに、検索結果が出ないことがあります。 データストアの取り込みは成功している 該当する結果が見つかりませんでした。別の検索語句をお試しください。 該当する結果が見つかりませんでした。別の検索語句をお試しください。 これは、Workforce Identity プールのプロバイダ設定において、ID 属性のマッピングが正しくないことにより、認証情報が正しく連携されず検索ができていない可能性があります。 Workforce Identity の公式ガイド( https://docs.cloud.google.com/iam/docs/workforce-sign-in-microsoft-entra-id?hl=ja#create_the_microsoft_entra_id_workforce_identity_pool_provider )の記述では、推奨される属性マッピングとして以下が提示されています。 google.subject=assertion.sub, google.groups=assertion.groups, google.display_name=assertion.preferred_username しかし、Gemini Enterprise の公式ガイド( https://docs.cloud.google.com/gemini/enterprise/docs/configure-identity-provider?hl=en#attribute_mapping )では、以下のマッピングが必要とされています。 google.subject=assertion.email google.groups=assertion.groups google.display_name=assertion.given_name 上記の2つのドキュメントで記載が異なるため誤りやすいですが、後者の Gemini Enterprise の公式ガイドが正しい設定です。 google.subject に対して assertion.email をマッピングすることで、ユーザーの認証情報が正しく連携されます。 NotebookLM Enterprise アクセス用 URL が発行できない NotebookLM Enterprise のアクセス専用 URL は、管理者によって Google Cloud コンソールから発行できます。Google Cloud コンソールで、検索テキストボックスに「NotebookLM」と入力するとサジェストされる「NotebookLM for Enterprise」画面に遷移すると、URL を発行できます。 ここではログインを許可するアイデンティティ設定を指定する必要があります。しかし Entra ID などの外部 IdP と連携している場合に、Workforce プール プロバイダの設定項目のプルダウンで選択肢が現れず、「表示する項目はありません」と表示されてしまうことがあります。 「表示する項目はありません」 この場合は、設定項目「ID の設定」で一度「Google ID プロバイダ」を選択して、また「サードパーティの ID プロバイダ」を選択しなおしてください。これにより、Workforce プール プロバイダの選択肢が現れることがあります。選択肢からプールを選択肢、リンクが正しく発行されたら Save ボタンをクリックします。 この方法で選択肢が現れなかった場合は、操作者の Google アカウントが組織レベルで Workforce Identity 関係の IAM ロールを持っていることを確認してください。 データストアに関する参考記事 以下に、データストアの追加手順に関する当社記事をリストアップします。記事が新しく公開された場合は随時、更新します。 blog.g-gen.co.jp 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
G-gen の杉村です。当記事では、Google Cloud のフルマネージドなコンテナプラットフォームである Cloud Run サービスで、 ビルドなしのソースコードからのデプロイ (Deploy from source without build)を試してみた結果をご紹介します。 はじめに Cloud Run サービスのデプロイ方法 制約事項 前提条件 関連記事 ディレクトリとソースコードの準備 パッケージのインストール デプロイと動作確認 ビルドありの場合との比較 デプロイの所要時間 起動時のパフォーマンス はじめに Cloud Run サービスのデプロイ方法 Cloud Run サービスにおけるデプロイは、大きく分けて「コンテナイメージによるデプロイ」「ソースコードからのデプロイ」の2種類があります。このうち後者の「ソースコードからのデプロイ」は、さらに2種類に分けられます。 ビルド あり のソースからのデプロイ(Deploy from source with build) ビルド なし のソースからのデプロイ(Deploy from source without build) 上記のうち 1. は、ソースコードを指定するだけで、コマンドライン等から簡単に Cloud Run にデプロイできる手法です。デプロイにあたって Dockerfile の準備等は必要ありません。ソースコードの存在するディレクトリでコマンドライン等によりデプロイを実行すると、自動的に Cloud Build による Docker イメージのビルドが開始され、Cloud Run サービスにデプロイされます。 一方で 2. は、Cloud Build による Docker イメージのビルドをスキップします。ソースコードの存在するディレクトリでコマンドライン等によりデプロイを実行すると、アプリケーションのパッケージが Cloud Storage バケットにアップロードされます。Cloud Run では指定された各言語向けのベースイメージが実行され、その上でパッケージを取得して実行します。 参考 : Deploy services from source code 当記事では、 2. のビルド なし のソースからのデプロイを実際に試してみた結果をご紹介します。 制約事項 ビルドなしのソースからのデプロイでは、以下のような制約事項があります。 Cloud Run jobs では使用不可 特定のランタイムしかサポートされない(Node.js、Python、Go、Java 等) ソースアーカイブは圧縮後 250 MiB 以下 バイナリやスクリプトは x86 アーキテクチャ互換のみ すべての依存関係がパッケージ化されている必要あり その他の制約事項や最新情報は、以下の公式ドキュメントを参照してください。 参考 : Deploy services from source code - Limitations 前提条件 当記事の検証は、Google Cloud の Cloud Shell 上で行いました。 また、gcloud CLI のバージョンは以下のとおりです。 Google Cloud SDK 548.0.0 2025年11月21日現在(検証実施時)の Cloud Shell には、デフォルトで Google Cloud SDK 547.0.0 がインストールされており、このバージョンでは後に紹介する gcloud beta run deploy コマンドの --no-build オプションが実装されていませんでした。同バージョンでコマンドを実行しようとすると、以下のエラーが出力されます。 ERROR: (gcloud.beta.run.deploy) unrecognized arguments: --no-build 同オプションを使用するため、検証に先んじて gcloud コマンドをバージョンアップしました。 参考 : Install the gcloud CLI - Manage an installation 関連記事 Cloud Run の詳細については、以下の記事を参照してください。 blog.g-gen.co.jp blog.g-gen.co.jp ディレクトリとソースコードの準備 アプリケーションの専用ディレクトリを作成し、以下のファイルを準備しました。 main.py requirements.txt main.py は、Cloud Storage オブジェクト gs://my-sample-bucket/sample.txt の情報を取得(describe)して標準出力に出力するシンプルなものです。ソースコードパッケージに Google Cloud クライアントライブラリを含めてデプロイするケースを検証したいため、このようなアプリケーションにしました。 main.py import json import os import sys # モジュールを検索する対象パス(sys.path)に packages を追加 sys.path.insert( 0 , os.path.join(os.path.dirname(__file__), 'packages' )) from flask import Flask from google.cloud import storage app = Flask(__name__) @ app.route ( '/' ) def describe_gcs_object (): bucket_name = "my-sample-bucket" blob_name = "sample.txt" try : storage_client = storage.Client() bucket = storage_client.bucket(bucket_name) blob = bucket.get_blob(blob_name) if blob is None : return f "Object {blob_name} not found in bucket {bucket_name}." , 404 # 日付時刻をテキスト形式に変換 time_created_text = blob.time_created.strftime( "%Y-%m-%d %H:%M:%S UTC" ) updated_text = blob.updated.strftime( "%Y-%m-%d %H:%M:%S UTC" ) # ログ出力内容 properties = { "message" : "Object metadata has been printed to standard output." , "Bucket" : blob.bucket.name, "Name" : blob.name, "Content-Type" : blob.content_type, "TimeCreated" : time_created_text, "Updated" : updated_text, "Size" : blob.size, "Generation" : blob.generation, "Metageneration" : blob.metageneration, "Etag" : blob.etag, "Crc32c" : blob.crc32c, "ComponentCount" : blob.component_count, "StorageClass" : blob.storage_class, } message_json = json.dumps(properties) print (message_json) return "OK" except Exception as e: print (f "Error describing Cloud Storage object: {e}" , file =sys.stderr) return "An error occurred." , 500 if __name__ == "__main__" : app.run(debug= True , host= '0.0.0.0' , port= int (os.environ.get( 'PORT' , 8080 ))) requirements.txt Flask== 2.3 . 2 gunicorn== 20.1 . 0 google-cloud-storage== 2.7 . 0 パッケージのインストール ソースコードと同じディレクトリに、サブディレクトリ packages を作成しました(名称は任意)。 mkdir packages その後、以下のコマンドを実行しました。 pip install -r requirements.txt -t packages このコマンドにより、ディレクトリ packages に、必要な Python ライブラリが格納されます。 デプロイと動作確認 ソースコードと同じディレクトリで、以下のコマンドを実行します。 gcloud beta run deploy my-test-service \ --project = my-project \ --region = asia-northeast1 \ --no-allow-unauthenticated \ --source . \ --no-build \ --base-image = us-central1-docker.pkg.dev/serverless-runtimes/google-22/runtimes/python312 \ --command = python \ --args = main.py およそ30秒後、デプロイが完了しました。以下のコマンドで動作確認をしたところ、オブジェクトの情報が Cloud Logging に出力され、期待どおりに動作することが確認できました。 curl -X GET " https://my-test-service-1234567890.asia-northeast1.run.app " \ -H " Authorization: bearer $( gcloud auth print-identity-token ) " ビルドありの場合との比較 デプロイの所要時間 今回検証した「ビルド なし のソースからのデプロイ(Deploy from source without build)」のデプロイは、30秒〜35秒程度で完了しました。 もう1つの手法であるビルド あり のソースからのデプロイ(Deploy from source with build)とのデプロイ所要時間を比較するため、同じソースコードとパッケージを、ビルドありの手法でデプロイしました。その結果、所要時間は2分00秒〜2分05秒程度でした。 起動時のパフォーマンス 「ビルドなしのソースからのデプロイ」では、各言語ランタイム向けのベースイメージを使用してコンテナを起動します。Cloud Run はコンテナが立ち上がった後にソースコードを取得・展開し、実行環境を整えます。 そのため、事前にソースコードをイメージ内にビルド(内包)しておく他の手法と比較すると、コンテナ起動時に「ソースコードの取得・展開」という処理が加わります。 これにより、特にコールドスタート時(初回アクセス時)において、リクエストからレスポンスが返るまでのレイテンシが増加する可能性があります。 ただし、このパフォーマンスへの影響について公式ドキュメントへの明記はなく、当記事でも高負荷なパッケージを用いた検証までは行えていません。あくまで仕様から推測される懸念点であるため、本番環境での採用を検討される際は、従来のデプロイ手法とパフォーマンスを比較検証することを推奨します。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
Google Workspace Studio は、Google Workspace アプリ同士を連携させ、タスクを自動化する AI ツールです。Gemini モデルが動作する AI エージェント(フロー)をノーコードで構築して、さまざまな仕事を自動化することができます。 概要 Google Workspace Studio とは ユースケース サービス公開の経緯 利用の前提条件 利用方法 コンソールへのアクセス 自然言語によるフロー作成 手動でのフロー作成 Google のフローテンプレートからのカスタマイズ 作成したフローの管理 コンセプト フロー starter actions と steps サードパーティとの連携 変数 トラブルシューティング We are at capacity, we'll be back soon exceeded Gemini limits FAQ Tips アドオンによる拡張 自然言語によるフロー作成 steps の中での AI への指示 概要 Google Workspace Studio とは Google Workspace Studio は、Google Workspace アプリ同士を連携させて、タスクを自動化することができる AI エージェントツール です。人による何らかのアクションやメールの受信などをトリガーとして、通知、要約、集計などのタスクを自動化できます。 Google Workspace Studio では自動化処理フローを Web UI 上で簡単に作成することができ、個々の自動化フローは フロー (flows)と呼ばれます。 Google Workspace Studio は Google の生成 AI モデル Gemini と統合されており、フロー内で文章の要約や分類、Web の調査などをさせることができます。 これらの機能により、これまで人間が行っていた定常的な仕事を AI エージェント(フロー)に行わせることで、業務を効率化することができます。 参考 : Introducing Google Workspace Studio: Automate everyday work with AI agents 参考 : Google Workspace Studio training and help 管理コンソールトップ画面 フロー編集画面 ユースケース Google Workspace Studio では、以下のようなことを実現できます。 Gmail に特定の人から E メールが届いた場合に、要約して Google スプレッドシートに追記する Google Meet の会議の前に、アジェンダを要約して参加者に E メールを送信する Google フォームに回答が送信されたら、自動返信を送り、チームに Google チャットで通知する Google ドライブ上の Google ドキュメントが編集されたら、その内容を要約して Google スプレッドシートに追記する 毎朝、AI 関連のニュースを Web から取得して要約し、E メールで自分に配信する 処理のトリガーとしては、E メールの受信や Google Chat でのメッセージ受信、Google フォームの内容送信、Google ドライブ上のファイルの編集など人のアクションを起点にできるほか、特定の時刻や曜日など、定期的なスケジュール実行を設定することもできます。 サービス公開の経緯 当サービスは2025年11月に「Google Workspace Flows」という名称で Gemini Alpha プログラムの試用版アプリとして公開されました。その後、2025年12月4日(日本時間)に Google Workspace Studio と名称を変えて一般公開されました。 また2025年12月現在、対応言語は英語のみです。2025年12月現在の当社の検証では、日本語のプロンプトを入力することで、出力を日本語にすることができました。しかしながらドキュメント上では、 AI への指示を英語で記載する ことが求められており、他の言語は未サポートであることに注意して下さい。 参考 : Tips to create agents with AI Google Workspace Studio で提供される機能(後述の actions など)はしばしば変更されており、使えていたものが使えなくなったり、逆に新しいものが追加されたりします。当記事で紹介する機能やスクリーンショットは、いずれも2025年12月現在のものですので、ご了承ください。 利用の前提条件 Google Workspace Studio は、以下の Google Workspace エディションで利用可能です。 Google Workspace Business Starter、Standard、Plus Google Workspace Enterprise Standard、Plus Google Workspace Education Fundamentals、Standard、Plus、Teaching and Learning add-on また、以下の個人向け有償サブスクリプションでも利用可能です。 Google AI Pro for Education Google AI Ultra for Business その他の条件等は以下の公式ドキュメントを参照してください。 参考 : Access to Workspace Studio 利用方法 コンソールへのアクセス Google Workspace Studio の管理コンソールへアクセスするには、Google アカウントにログインした状態で、以下の URL にアクセスします。 https://studio.workspace.google.com/ 管理コンソールトップ画面 自然言語によるフロー作成 フローを作成する際は、手動で処理内容を指定して作成することもできますし、自然言語で AI に指示をすることで自動作成することもできます。 行いたい処理を、トップページのテキストボックスに自然言語で入力することで、フローが10秒ほどで出来上がりました。 自然言語でのフロー作成 自動生成されたフロー フローの処理内容を確認し、必要に応じて微修正したら、 Turn on ボタンを押下することでフローが保存され、有効化されます。 Test run を押下することで、即時実行することもできます。 実際に実行してみたところ、以下のような要約結果が、Google Chat の DM で自分宛てに届きました。 フローの実行結果 手動でのフロー作成 トップ画面左側の青いプラス(+)ボタンを押下することで、ゼロから手動でフローを作成することも可能です。この画面では、処理の起点となる starter や、処理の内容である steps を手動で追加できます。 starter や steps にどのような種類があるかは、後述します。 処理内容は順次実行で追加できるほか、前の steps の実行内容やファイル、E メールの内容に応じて分岐させたり、Gemini に分岐を判断させることもできます。 手動でのフロー作成 Google のフローテンプレートからのカスタマイズ Google は、フローのテンプレートを多数用意しており、テンプレートの中から実現したい内容に近いものを選択して、そこから作成を始めることもできます。トップ画面(Discover 画面)を下にスクロールすると、テンプレートの一覧がカード表示されています。カードをクリックすると、フローが新規作成され、アレンジしたうえで保存できます。 Google が用意したテンプレート(一部) テンプレートをアレンジして保存可能 作成したフローの管理 画面左部メニューの My flows をクリックすると、保存済のフローの一覧が表示されます。ここで、作成済みのフローを無効化 / 有効化したり、編集、削除したりすることができます。既存フローをコピーして、新しいフローを作成することもできます。 My flows(フローの一覧) 同画面の Activity タブをクリックすると、過去のフロー実行履歴を閲覧できます。 Activity(フロー実行履歴) コンセプト フロー Google Workspace Studio で作成する自動化処理は、 フロー と呼ばれます(GA 直後は「エージェント」と呼ばれていた時期もありました)。 フローには、処理のトリガーとなる starter と、処理の本体となる actions 、 steps を指定します。 参考 : Guide to Starters & Steps in Workspace Studio starter starter は、フローの処理のトリガー(きっかけ)です。以下のような starter を指定できます。 名称 説明 スケジュール 単発、15分ごと、30分ごと、毎時、日次、毎平日、週次、隔週、月次、年次 Gmail E メールを受信したとき。全メール、特定の人から、特定の文言を含む場合など Google Chat スペースにコメントが投稿されたとき、自分がメンションされたとき、emoji リアクションがついたときなど Google スプレッドシート シートが変更されたとき Google ドライブ ファイルが編集されたとき、フォルダにファイルが追加されたときなど Google カレンダー 会議後、会議前など Google フォーム フォームが送信されたとき、編集されたとき Google Meet 議事メモが完成したとき Starter に指定した条件に合致すると、フローがスタートし、Actions が実行されます。 actions と steps actions はフローが実際に行う一連の処理です。actions には複数の steps を追加することができます。steps には、以下のような処理を指定できます。以下は一部のみの抜粋です。 名称 説明 Ask Gemini Gemini にプロンプトを送信し、レスポンスを得る Ask a Gem Gem にプロンプトを送信し、レスポンスを得る Recap unread emails 未読 E メールを取得して Gemini に処理させる Extract Gemini にコンテンツを分析させ、アクションアイテム、質問、URL、感情などの要素を抽出する Decide Gemini に判断させ、処理を分岐させる。Check if とセットで使用する Check if 前の step の属性が True か False かによって処理を分岐させる Send a webhook 外部に HTTP リクエストを送信する。GET、POST、PUT、DELETE、PATCH メソッドが使用可能 Gmail メール送信、転送、ラベル付与、既読にする、スターをつけるなど Google Chat 自分に通知する Google スプレッドシート 行の追加、編集、削除、シート内容取得など Google ドライブ フォルダ作成、メールの添付ファイルをドライブに保存など Google カレンダー 会議予定の作成 Google ドキュメント ドキュメント作成、追記など サードパーティとの連携 Google Workspace アプリとの連携に加えて、以下のようなサードパーティアプリとの連携も可能です。以下は、一般公開(GA)直後に利用可能だった連携機能の一部抜粋です。ただし2025年12月25日現在では表示されなくなっており、今後も変更の可能性があります。 名称 説明 Asana プロジェクト作成、タスク作成など Confluence ページ作成など Jira Issue 作成、Issue へのコメント追加など Salesforce 商談作成、リード作成、タスク作成など また、Google Workspace Marketplace から、追加の統合機能をインストールすることもできます。 参考 : Take actions in third-party services with flows 変数 steps 間では 変数 (variables)を使うことで、情報を受け渡すことができます。 以下の例では、Step 4: Extract でメールから抽出した質問内容を、次の Step 5: Ask Gemni に与えるプロンプト内で参照しています。このようにして、steps 間で情報を受け渡すことができます。 プロンプト内で変数を使い前の処理の情報を参照する 参考 : Use variables to pass data in your flow トラブルシューティング We are at capacity, we'll be back soon We are at capacity, we'll be back soon これは Google 側で生成 AI モデル等のリソースが枯渇していることを示します。 ユーザー側でできる対処はなく、需要が減ることを待つか、Google がリソースを増強するのを待つしかありません。2025年12月現在、リリース直後の Google Workspace Studio が大きな注目を集めていることもあり、このエラーがたびたび発生します。 exceeded Gemini limits The prompt, including content referenced with variables and links, exceeded Gemini limits. Consider editing your prompt, such as using fewer variables. Ask Gemini などの action で LLM に要約等を行わせる際に与えるプロンプトは、リンクされたコンテンツと変数で追加されたコンテンツを含めて、144,000文字(約18,000語)未満である必要があります。メールを要約させるときなどに文字数が超過している場合は、このエラーが出力されます。 FAQ Google Workspace Studio でよくあるトラブルやエラーについては、以下のドキュメントに対処法や FAQ が記載されています。 参考 : Troubleshoot issues with agents Tips アドオンによる拡張 Google Workspace Studio では、 Google Apps Script (GAS)でアドオン(拡張プログラム)を開発することによって、フローに独自の処理を実装することができます。Google Apps Script はスクリプト言語による軽量なアプリケーション開発プラットフォームです。開発言語は JavaScript がベースとなっています。 GAS のプログラムを特定の方法で記述して Google Workspace Studio 用のアドオンとしてデプロイすることで、steps として GAS プログラムを実行できます。フロー内での GAS プログラム実行にあたり、入力と出力を定義することができ、steps 間で値を受け渡すことができます。 参考 : Create and use custom steps in flows 参考 : Extend Google Workspace Studio 自然言語によるフロー作成 前述のとおり、フローを作成する際は、starter や steps を手動で指定して作成することもできますし、自然言語で AI に指示をすることで自動作成することもできます。 AI に指示を与える際は、適切にフローを構築できるように、以下のような点に注意します。 いつ処理を行うかを明確にする(時刻や曜日、きっかけ) 使用するアプリ(Gmail、Google スプレッドシートなど)を明示する サポートされていないコンテンツを避ける(英語以外の言語、カレンダー予定のリンク、@メンションなどは未対応) 詳細は以下のドキュメントを参考にしてください。 参考 : Tips to create agents with AI steps の中での AI への指示 steps の中で Gemini(AI)への指示を記述するときは、以下のような点に注意すると、精度が向上します。 背景を明記する。特に、処理対象のメールやファイルは変数で明示的に指示する 複数の AI ステップを活用する。Ask Gemini の結果を Extract に渡して、その結果をまた Ask Gemini に渡すなどしてタスクを小分けし、精度向上を図る Ask Gemini では Gmail、Google Chat、Google ドライブ、Google カレンダー、Web 検索などをコンテキストとして利用できる 詳細は以下のドキュメントを参考にして下さい。 参考 : Tips to use AI steps in agents 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
G-gen の齊間です。この記事では、Dataflow の Flex テンプレートジョブが VPC ネットワーク内のリソース(例:Compute Engine 上の Oracle DB)にアクセスする際に、ランチャー VM が原因でタイムアウトエラーとなる事象が発生しました。この事象の原因と実施した対処法について解説します。 事象 エラー内容 実行したコマンド 参考記事 原因 対処法 additional-experiments オプションの使用 ネットワークタグの設定 事象 エラー内容 Dataflow の Flex テンプレートを利用し、VPC ネットワーク内に配置された Compute Engine VM 上の Oracle データベースからデータを取得し、BigQuery へ移送するジョブを作成しました。 System Architecture この Dataflow ジョブを、VPC ネットワークとサブネット、および内部 IP アドレスのみを使用する設定( use_public_ips=false )で実行したところ、ジョブの起動処理(ランチャー VM の起動)中にタイムアウトし、以下のエラーが発生しました。 Timeout in polling result file: gs://{project_id}/staging/template_launches/2025-09-07_23_39_02-6074885035213821531/operation_result. Service account: {service_account}@developer.gserviceaccount.com Image URL: asia-northeast1-docker.pkg.dev/{project_id}/{repository_name}/{template_name:version} Troubleshooting guide at https://cloud.google.com/dataflow/docs/guides/troubleshoot-templates#timeout-polling Dataflow Error Screen なお、エラーメッセージに記載されている以下のトラブルシューティングガイドを確認しましたが、事象は解消しませんでした。 参考 : Troubleshoot Flex Templates - Polling timeout errors 実行したコマンド Dataflow ジョブの実行には、以下の gcloud コマンドを使用しました。コマンドのオプションで、ワーカー VM が使用する VPC ネットワーク( network )とサブネット( subnetwork )、および内部 IP アドレスの使用( use_public_ips=false )を指定しています。 # エラーが発生したコマンド gcloud dataflow flex-template run $JOB_NAME \ --template-file-gcs-location $TEMPLATE_PATH \ --region asia-northeast1 \ --network = $NETWORK_NAME \ --subnetwork = regions/asia-northeast1/subnetworks/ $SUBNET_NAME \ --parameters \ use_public_ips =false 参考記事 Dataflow の詳細については、以下の記事も参照してください。 blog.g-gen.co.jp 原因 原因は、起動したランチャー VM に対して適切なファイアウォールルールが適用されておらず、Google Cloud APIs(Cloud Storage API)等への通信が遮断されていたことにありました。 Dataflow の Flex テンプレートジョブを実行すると、Dataflow は 2段階のプロセスで VM を起動します。 ランチャー VM : まず、ジョブの起動処理(Docker イメージやテンプレートファイルの Cloud Storage からの Pull、パイプライングラフの構築など)を行うための一時的な VM(ランチャー VM)が起動する ワーカー VM : ランチャー VM による準備が完了すると、実際のデータ処理を実行するワーカー VM 群が起動する 今回のように use_public_ips=false を指定して閉域網で実行する場合、ランチャー VM から Cloud Storage への通信(結果ファイルのポーリング等)は「限定公開の Google アクセス(Private Google Access)」を経由する必要があります。 しかし、ランチャー VM に適切なネットワークタグが付与されていない状態では、VPC 内の特定の通信を許可するファイアウォールルールを適用することができず、結果として通信タイムアウト(Timeout in polling result file)が発生していました。 対処法 ランチャー VM に対して適切なファイアウォールルールやルート設定を適用するためには、ランチャー VM を識別するための ネットワークタグ の付与が必要です。以下の対応が必要となります。 additional-experiments オプションの使用 ネットワークタグの設定 additional-experiments オプションの使用 Dataflow Flex テンプレートのランチャー VM にネットワークタグを付与するには、 gcloud dataflow flex-template run コマンドに --additional-experiments オプションを追加します。なお2025年11月現在、当オプションは experimental ステージです。 参考 : Set Dataflow pipeline options 具体的には、 use_network_tags_for_flex_templates というフラグを用いて、ランチャー VM に付与したいネットワークタグを指定します。 # 修正後のコマンド gcloud dataflow flex-template run $JOB_NAME \ --template-file-gcs-location $TEMPLATE_PATH \ --region asia-northeast1 \ --network = $NETWORK_NAME \ --subnetwork = regions/asia-northeast1/subnetworks/ $SUBNET_NAME \ --parameters \ use_public_ips =false \ --additional-experiments =" use_network_tags_for_flex_templates= $NETWORK_TAG " # ランチャー VMに付与するネットワークタグを指定 ネットワークタグの設定 --additional-experiments="use_network_tags_for_flex_templates=$NETWORK_TAG" を指定することにより、 $NETWORK_TAG で指定したネットワークタグがランチャー VM のインスタンスに付与されます。 このネットワークタグ(例 : dataflow-launcher )をキーとして、ランチャー VM が適切な VPC ネットワーク内で動作できるように、あらかじめ以下のネットワーク設定を行っておく必要があります。 1. ファイアウォールルール : 指定したネットワークタグ( $NETWORK_TAG )を持つ VM が、必要な通信(例 : Cloud Storage への Egress、Dataflow サービスとの通信、VPC 内の Oracle データベースへの通信など)を行えるように、VPC ネットワークのファイアウォールルールを設定します。 use_public_ips=false の場合は、限定公開の Google アクセスの IP レンジ( private.googleapis.com )への Egress を許可するルールも必要です。 FireWall Ingress Setting FireWall Egress Setting 2. ルート : 同様に、このネットワークタグを持つ VM が限定公開の Google アクセスを利用できるよう、適切なルート(ネクストホップが default-internet-gateway で宛先が private.googleapis.com の IP レンジ)が設定されていることを確認します。 Route Setting なお、 VPC 関連の設定方法や詳細については、以下の記事をご参考ください。 blog.g-gen.co.jp これらの設定により、ランチャー VM が指定した VPC ネットワーク内で正常に起動し、Cloud Storage へのポーリングや後続のワーカー VM の起動処理を正しく実行できるようになります。 参考 : Specify a network and subnetwork 参考 : Configure internet access and firewall rules 参考 : Use Flex Templates to package a Dataflow pipeline for deployment 齊間 陽史 (記事一覧) 開発部プロジェクトマネジメント課 狩猟免許を持つ ハンター兼 IT エンジニア。2025年7月より、G-genにジョイン。前職は SIerで DX化案件を数多く担当。平日はデジタルの世界で、休日は山で奮闘中。
G-gen の杉村です。Google Cloud や Google Workspace の、2025年11月に発表されたイチオシアップデートをまとめてご紹介します。記載は全て、記事公開当時のものですのでご留意ください。 はじめに Google Cloud のアップデート Bigtable で Protocol Buffer を直接クエリできるように(Preview) BigQuery でクエリ結果ダウンロードのサイズ制限が 10 MB から 1 GB に Vertex AI Search で docx/pptx/xlsx 等のレイアウトパーサーが GA BigQuery のメタデータ生成が Preview から一般公開(GA)に Compute Engine で N4D と N4A マシンタイプが使用可能に Vertex AI Agent Engine に無料枠が登場 Vertex AI Agent Engine で複数の機能が Preview 公開 AlloyDB for PostgreSQL で自動エンベディング生成が Preview 公開 BigQuery ML で AI.DETECT_ANOMALIES 関数が Preview 公開 プロジェクトの API 有効化を組織 / フォルダに適用できるように(Preview) Cloud SQL でリードプールインスタンスのオートスケーリングが可能に Cloud SQL for MySQL で30日間の無料トライアルインスタンスが利用可能に BigQuery の実行グラフにクエリテキストヒートマップが登場(Preview) Google の動画生成 AI モデル Veo 3.1 / Veo 3.1 Fast が一般公開(GA) Gemini Enterprise で独自エージェントとの統合が一般公開(GA) Gemini 3.0 Pro が Preview 公開 Google、新 IDE「Google Antigravity」をリリース Cloud Runで、ビルドなしでソースからの直接デプロイが可能に(Preview) AlloyDB for PosgreSQL でリードプールインスタンスのオートスケーリング BigQuery Agent Analytics for the Google ADK が登場 Gemini Enterprise に複数アップデート Dataplex Universal Catalog で data products 機能が Preview 公開 Google Kubernetes Engine の Autopilot で高速起動ノードが使用可能に(GA) BigQuery Data Transfer で Salesforce からの差分転送が Preview 公開 Google Workspace のアップデート Google Meet のチャット欄が Google Chat と統合される 共有ドライブ上のファイル共有時に有効期限を設定できるように Deep Research が Google Workspace アプリから情報収集できるように Google Meet のリアクションで emoji ライブラリ全種が使えるように Google ドライブで PDF の音声概要が利用可能に Dropbox から Google ドライブへの移行ツールがオープンベータ版で公開 Google カレンダーでタスク取り組み時間をブロックするための機能が公開 繰り返し予定を変更したときの Meet リンクの仕様が変更 Nano Banana Pro(Gemini 3 Pro Image)が登場 Google ドライブのデータ分類ラベルがファイル一覧で表示されるように Google ドライブの動画への自動字幕生成が日本語に対応 はじめに 当記事では、毎月の Google Cloud(旧称 GCP)や Google Workspace(旧称 GSuite)のアップデートのうち、特に重要なものをまとめます。 また当記事は、Google Cloud に関するある程度の知識を前提に記載されています。前提知識を得るには、ぜひ以下の記事もご参照ください。 blog.g-gen.co.jp リンク先の公式ガイドは、英語版で表示しないと最新情報が反映されていない場合がありますためご注意ください。 Google Cloud のアップデート Bigtable で Protocol Buffer を直接クエリできるように(Preview) Create and manage protobuf schemas (2025-11-03) Bigtable でバイト型で保存された Protocol Buffer を直接クエリできるように(Preview)。 事前に schema bundle というリソースにスキーマ情報を定義しておく。BigQuery 外部テーブル経由でもクエリ可能。 BigQuery でクエリ結果ダウンロードのサイズ制限が 10 MB から 1 GB に BigQuery release notes - November 04, 2025 (2025-11-04) BigQuery のクエリ結果の、ローカルへのダウンロード時のサイズ制限が従来の 10 MB から 1 GB になった。 これまではサイズが大きい場合、一度 Cloud Storage を挟むなどする必要があった。 Vertex AI Search で docx/pptx/xlsx 等のレイアウトパーサーが GA Parse and chunk documents (2025-11-05) Vertex AI Search で docx、pptx、xlsx 等の非構造化データストアでのレイアウトパーサーが GA。 レイアウトパーサーではこれらのファイルに加え PDF や HTML ファイル内でも画像の検索が可能になっている。 BigQuery のメタデータ生成が Preview から一般公開(GA)に Generate table and column descriptions (2025-11-05) BigQuery のメタデータ生成が Preview から一般公開(GA)に。さらに日本語を含む他言語に対応。 ただし英語以外で生成するにはテーブルの Description にあらかじめプロンプトを入力しておく必要あり。 以下の記事も参照。 blog.g-gen.co.jp Compute Engine で N4D と N4A マシンタイプが使用可能に Compute Engine release notes - November 07, 2025 (2025-11-07) Compute Engine で N4D と N4A マシンタイプが使用可能に。コスト性能比率の良い選択肢が広がった。 N4D : 第5世代 AMD EPYC Turin(Intel 互換) N4A : Axion プロセッサ(Arm Neoverse N3 platform ベース)※ Private Preview Vertex AI Agent Engine に無料枠が登場 Agent Engine Runtime Pricing (2025-11-07) Vertex AI Agent Engine に無料枠が登場。月に 180,000 vCPU秒と 360,000 GiB秒が無料で使える。 例えば 1 vCPU、2 GiB RAM の開発環境なら丸2日間、デプロイできる。 Vertex AI Agent Engine で複数の機能が Preview 公開 Vertex AI release notes - November 07, 2025 (2025-11-07) Vertex AI Agent Engine に複数の新機能が登場(いずれも Preview)。 機能名 概要 express mode Google Cloud プロジェクトなしで Vertex AI Agent Engine にエージェントをデプロイ Playground Google Cloud コンソール上でエージェントと会話できる。これまでこのような画面はなく動作確認時は CLI や自前のアプリ等からリクエストを送る必要があった Agent identity サービスアカウントと似ているがAIエージェント専用のプリンシパル。エージェントのライフサイクルと紐づいているため取り違え等がなくよりセキュア。IAM 許可ポリシーにプリンシパルとして追加可能 observability Google Cloud コンソール上で observability 閲覧が可能。セッション、トレース、ログ、イベントなど ...など AlloyDB for PostgreSQL で自動エンベディング生成が Preview 公開 Generate and manage vector embeddings for large tables (2025-11-10) AlloyDB for PostgreSQL で自動エンベディング生成が Preview 公開。 特定の列のデータを自動でベクトル化して、メンテナンスを最小限にしてテーブルデータをセマンティック検索や RAG に使える。モデルを指定可能。 text-embedding-* gemini-embedding-* カスタムモデル ...など BigQuery ML で AI.DETECT_ANOMALIES 関数が Preview 公開 The AI.DETECT_ANOMALIES function (2025-11-10) BigQuery ML で AI.DETECT_ANOMALIES 関数が Preview 公開。 時系列データから異常値を検知。SQL の世界で容易に異常検知を実装できる。ビルトインの TimesFM モデルを使用。 プロジェクトの API 有効化を組織 / フォルダに適用できるように(Preview) Hierarchical service activation overview (2025-11-11) プロジェクトの API 有効化を階層(組織、フォルダ)に適用できるようになった(Preview)。 配下のすべてのプロジェクトでサービス API を有効化できる。Google Cloud プロジェクト管理の効率化につながる。 Cloud SQL でリードプールインスタンスのオートスケーリングが可能に Read pool autoscaling (2025-11-14) Cloud SQL for MySQL/PostgreSQL でリードプールインスタンスのオートスケーリングが一般公開(GA)。 CPU 使用率やコネクション数をトリガーにして読み取り専用のリードレプリカをスケーリングできる。 Cloud SQL for MySQL で30日間の無料トライアルインスタンスが利用可能に Free trial instance overview (2025-11-17) Cloud SQL for MySQL で30日間の無料トライアルインスタンスが利用可能になった。なお PostgreSQL では以前から使用可能。 プロジェクト1個につき1インスタンスが作成可能 バックアップは不可 Enterprise Plus エディション 有料版にアップグレード可能 BigQuery の実行グラフにクエリテキストヒートマップが登場(Preview) Query text heatmap (2025-11-17) BigQuery の実行グラフにクエリテキストヒートマップが登場(Preview)。 スロットを多く消費している部分が SQL 上でハイライトされるため、ボトルネックの特定・チューニングに役立つ。 Google の動画生成 AI モデル Veo 3.1 / Veo 3.1 Fast が一般公開(GA) Vertex AI release notes - November 17, 2025 (2025-11-17) Google の動画生成 AI モデル Veo 3.1 / Veo 3.1 Fast が一般公開(GA)。 Google Cloud の Vertex AI や Google AI Studio 経由で利用できる。 Gemini Enterprise で独自エージェントとの統合が一般公開(GA) Gemini Enterprise release notes - November 17, 2025 (2025-11-17) Gemini Enterprise(旧 Google Agentspace)で独自エージェントとの統合が一般公開(GA)。 ADK で開発されたエージェント(Vertex AI Agent Engine にホストされたもの)と、A2A プロトコルによって、自社独自の AI エージェントを Gemini Enterprise に統合できる。 Gemini 3.0 Pro が Preview 公開 A new era of intelligence with Gemini 3 (2025-11-18) Google が最新生成 AI モデル Gemini 3.0 Pro を Preview 公開。思考(reasoning)やエージェント的(agentic)な振る舞いが進化。 以下のプラットフォームから API 経由で使用可能。 Vertex AI Google AI Studio 以下のアプリでも使用可能。 Gemini アプリ(個人 / Google Workspace) Gemini Enterprise Gemini CLI での利用については、2025年11月19日現在、ところ個人向け Google AI Ultra 登録者や Google AI Studio の有償版 API キー使用時のみ可能。Gemini Code Assist Enterprise 登録者はまもなく使用可能になる。またその他ユーザーは waitlist に申請が必要。 参考 : 5 things to try with Gemini 3 Pro in Gemini CLI Google、新 IDE「Google Antigravity」をリリース Introducing Google Antigravity, a New Era in AI-Assisted Software Development (2025-11-19) AI エージェントと統合された IDE「Google Antigravity」がリリース。 Gemini による Agentic な開発。Nano Banana による画面イメージの調整を行い、それをソースコードに適用するなどが柔軟に可能。 Cloud Runで、ビルドなしでソースからの直接デプロイが可能に(Preview) Deploy from source without build (2025-11-19) Cloud Runで、ビルドなしでソースからの直接デプロイが可能に(Preview)。 ソースの .tar.gz を Cloud Storage バケットへアップロード、Cloud Run はそのソースを取得してベースイメージ上で実行。Cloud Build でのビルドがない分、デプロイが高速。ただし、使用可能な言語(ランタイム)は限定的。 AlloyDB for PosgreSQL でリードプールインスタンスのオートスケーリング Autoscale a read pool instance (2025-11-20) AlloyDB for PosgreSQL でリードプールインスタンスのオートスケーリングが Preview 公開。 読み取り専用リードレプリカが自動でスケールアウト・スケールインできる。CPU 使用率ベースまたはスケジュールベースで設定可能。 BigQuery Agent Analytics for the Google ADK が登場 From interaction to insight: Announcing BigQuery Agent Analytics for the Google ADK (2025-11-21) Agent Development Kit(ADK)向けに BigQuery Agent Analytics for the Google ADK が登場。 ADK で開発した AI エージェントのやりとり情報を簡単に BigQuery にストリーミングできる。レイテンシ、トークン量、使用状況等を分析可能にする。 Gemini Enterprise に複数アップデート Gemini Enterprise release notes - November 21, 2025 (2025-11-21) Gemini Enterprise に複数のアップデートが登場。 Nano Banana Pro(Gemini 3 Pro Image)による画像生成が可能に(Preview) メモリにユーザーが覚えさせたい情報を明示的に保存可能に( 参考 ) 独自のフルコードエージェント(Vertex AI Agent Engine、A2A プロトコル、Dialogflow エージェント)を管理画面から統合可能に( 参考 ) Dataplex Universal Catalog で data products 機能が Preview 公開 About data products (2025-11-22) Dataplex Universal Catalog で data products 機能が Preview 公開。 データプロデューサーが組織内の利用者向けにデータアセット(BigQuery データセットやテーブル)をパッケージしてキュレーションするための機能。権限管理の運用もシンプルになる。 Google Kubernetes Engine の Autopilot で高速起動ノードが使用可能に(GA) About quicker workload startup with fast-starting nodes (2025-11-24) Google Kubernetes Engine(GKE)の Autopilot で高速起動ノードが使用可能に(GA)。 所定の設定の場合にベストエフォートでノードが高速起動する。追加料金なし。 BigQuery Data Transfer で Salesforce からの差分転送が Preview 公開 Full or incremental transfers (2025-11-26) BigQuery Data Transfer で Salesforce からの差分転送が Preview 公開。 これまでは全量転送のみだった。Append か Upsert を選択可能。最小15分間隔で転送ジョブをセット可能。 Google Workspace のアップデート Google Meet のチャット欄が Google Chat と統合される New to Google Meet: Continue your conversations in Google Chat (2025-11-03) Google Meet のチャット欄が Google チャットと統合される。 Meet 内のチャットで Google チャットのように画像共有、ファイル送信、絵文字などが使えるようになる。会議前に事前に Chat で資料を共有するなども可能。2025年11月10日以降に、順次ロールアウトされていく。 Business Starter 以上のエディションで利用可能。 共有ドライブ上のファイル共有時に有効期限を設定できるように Set sharing expirations on files and folders in shared drives (2025-11-05) Google ドライブで、共有ドライブ上のファイル共有時に有効期限を設定できるようになった。 これまでは API 経由でのみ可能だったが画面から設定可能に。2025年11月4日から段階的にリリース。 Deep Research が Google Workspace アプリから情報収集できるように Gemini Deep Research now integrates with your Workspace content (2025-11-06) Gemini アプリの Deep Research が Google Workspace アプリ(Gmail、Chat、Drive)から情報収集できるようになった。 これまでネット情報と手動アップロードした情報だけが対象だった。社内ドキュメントやメール等をシームレスに調査しレポート化してくれる。 Google Meet のリアクションで emoji ライブラリ全種が使えるように Use a wider range of emoji reactions in Google Meet (2025-11-07) Google Meet のリアクションで、emoji ライブラリの全種の絵文字が使えるようになった。リアクションの表現が豊かに。 11月6日から順次ロールアウト。 Google ドライブで PDF の音声概要が利用可能に New AI-powered audio overviews for PDFs in Google Drive (2025-11-11) Google ドライブで PDF の音声概要が利用可能に。NotebookLM の音声概要と同じ技術を使用。 20回/日の制限あり。2025-11-12から順次ロールアウト(即時リリースドメインでは既に使用可能)。 Dropbox から Google ドライブへの移行ツールがオープンベータ版で公開 Available in open beta: Migrate files from Dropbox to Google Drive (2025-11-11) Dropbox から Google ドライブへの移行ツールが Google 公式からオープンベータ版で公開。 Dropbox Business アカウントに接続し、チームフォルダと移行先ドライブを指定。Dropbox/Google ユーザー・グループをマッピングして権限のコピーも可能。 Google カレンダーでタスク取り組み時間をブロックするための機能が公開 Block off time to work on a task in Calendar (2025-11-17) Google カレンダーでタスク取り組み時間をブロックするための機能が公開。 通常の予定と視覚的に区別できるほか、タスクリストにも追加されタスク管理ができる。2025-11-06から順次ロールアウト。 繰り返し予定を変更したときの Meet リンクの仕様が変更 New Google Meet links when changing recurrence or start time of recurring Calendar events (2025-11-19) Google Meet の仕様変更。繰り返し予定の開始時刻または繰り返し頻度を変更して「これ以降のすべての予定」を選んで保存すると、以降のイベントの Meet リンクが新しくなる。 組織外の人に Meet リンクを共有している場合には今まで違う挙動なので注意が必要。 Nano Banana Pro(Gemini 3 Pro Image)が登場 Introducing Nano Banana Pro in Slides, Vids, Gemini app, and NotebookLM (2025-11-20) 画像生成・編集モデルの最新版、Nano Banana Pro(Gemini 3 Pro Image)が登場。Google Workspace の Gemini アプリ、NotebookLM、Google スライド、Google Vids で利用可能。以下のような機能を持つ。 画像生成 インフォグラフィック ものごとを説明するための一枚絵(いわゆるポンチ絵) Beautify this slide 「スライドをきれいにして」と指示することで、既存スライドのブラッシュアップ 2025-11-20 より15日間かけてロールアウト。 Google ドライブのデータ分類ラベルがファイル一覧で表示されるように Data classification labels visible in more places across Google Drive (2025-11-25) ファイルに付与したデータ分類ラベルがファイル一覧で表示されるようになった。 これまでは詳細情報を表示する必要があったが、これからは一覧で視覚的にわかりやすくなる。 Google ドライブの動画への自動字幕生成が日本語に対応 Automatically generated captions for videos in Google Drive now available in more languages (2025-11-25) Google ドライブで自動字幕が日本語に対応。 ドライブに動画をアップロードすると、話している音声に対して、自動的に字幕が生成される。すべての Google Workspace と個人 Google アカウントですでに利用可能。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
当記事は、ライオン株式会社様と株式会社G-genの 技術情報発信コラボレーション企画 『SAPと連携するデータ分析基盤の実践とTips』で執筆されたものです。 当企画について ライオンによる記事 1. ライオンのデータ基盤構築とSAPデータ活用体制 2. ライオンのデータマネジメント 3. ライオンのデータ基盤における分析環境 G-gen による記事 1. VPC Service Controls の境界の分割設計に関する考察 2. Security Command Center検出結果のPub/Subエクスポートをフィルタリングする 3. Security Command Center検出結果を一時的にミュートする方法 当企画について 当記事は株式会社 G-gen 様とライオン株式会社の技術ブログ相互寄稿企画で執筆されたものです。 当企画では、ライオン側からは、Google Cloud 環境に構築を進めているデータ基盤に関連した以下の記事を公開しました。 ライオンのデータ基盤構築とSAPデータ活用体制 ライオンのデータマネジメント ライオンのデータ基盤における分析環境 G-gen 側からは、Google Cloud のセキュリティと統制に関わる、以下の記事を公開しました。 VPC Service Controlsの境界の分割設計に関する考察 Security Command Center検出結果のPub/Subエクスポートをフィルタリングする Security Command Center検出結果を一時的にミュートする方法 当記事では、上記の記事をそれぞれ要約してお伝えします。 ライオンによる記事 1. ライオンのデータ基盤構築とSAPデータ活用体制 ライオン株式会社では、中期経営計画「Vision 2030 2nd STAGE」の実現に向け、全社的なデータ活用を支える基盤構築を Google Cloud 上で進めています。これまではデータのサイロ化やガバナンス不足、特に SAP データの活用障壁が課題となっており、これらを解消して迅速な意思決定を可能にし、「未来予測型経営」への変革を実現することが目的です。 構築にあたり、当初は SAP データ活用テンプレートである「Cortex Framework」を用いたシンプルな構成を検討しましたが、検証の結果、大幅な方針転換を行いました。まず、ガバナンスとセキュリティ強化のため、単一プロジェクトから機能別(DL/DWH/DM)の階層構造へと構成を見直しました。また、Cortex Framework については、同社の業務独自テーブル(カスタムテーブル)への対応率が低く、標準テンプレートの適用範囲が限定的であったため、今回は導入を見送りました。 最終的に、データ連携には「Fivetran」、パイプライン管理には運用負荷が軽く安価な「Dataform」を採用し、自社要件に合ったモデリングを実装する体制を整えました。これにより、組織全体でデータを資産として活用するための強固な土台形成を実現しています。 blog.g-gen.co.jp 2. ライオンのデータマネジメント ライオン株式会社のデータサイエンスグループによる、データ基盤におけるSAP データの利活用に向けた取組み事例の紹介です。 データマネジメントにおいては「アジリティ・ガバナンス・利活用」のバランスを考慮し、現在は利用イメージの共有を優先するため「アジリティ(データ準備の速さ)」を重視しています。アーキテクチャは DataLake、DWH、Datamart の3層構造とし、Datamart は扱いやすさを優先して大福帳形式(OBT)を採用。データカタログの整備はフェーズを見極めて行う方針です。 技術面では、ELT ツールに SQL ベースで処理の依存関係管理ができる「Dataform」、BI ツールに指標定義をコード(LookML)で管理できる「Looker」を採用しました。これら Google Cloud 製品を活用し、外部に依存しすぎない、自社主導での全社的なデータ利活用の実現を目指しています。 blog.g-gen.co.jp 3. ライオンのデータ基盤における分析環境 部署横断的なデータ共有とデータドリブン文化の定着を目的として、データマート層に部門単位の Google Cloud プロジェクトを整備しました。特にデータサイエンティスト向けに、Python を用いた自由な分析と、VPC Service Controls による高いセキュリティレベルを両立するため、Vertex AI Workbench を採用しました。 セキュアなネットワーク構成として、インスタンスに外部 IP アドレスを持たせず、インターネットを経由しない「限定公開の Google アクセス」と restricted.googleapis.com を利用して BigQuery 等へ接続しています。また、JupyterLab を利用するために DNS 設定を追加し、外部サービス(GitHub 等)への通信は Cloud NAT と FQDN によるフィルタリングで厳格に制御しています。 また VPC Service Controls 環境下でのバッチ実行にあたり、VPC Service Controls 配下では Vertex AI 標準のスケジュール実行機能(エグゼキュータ)が非対応であることが判明しました。解決策として、Cloud Scheduler と Cloud Run jobs、OSS の papermill を組み合わせ、Notebook をコンテナ化してバッチ実行するアーキテクチャを確立しました。 今後は生成 AI を活用し、専門知識がない一般ユーザーでも自然言語でデータ抽出やレポート作成が行える環境の整備を目指しています。 blog.g-gen.co.jp G-gen による記事 1. VPC Service Controls の境界の分割設計に関する考察 当記事は、Google Cloudのリソース保護サービス「VPC Service Controls」における「境界(Perimeter)」の設計方針について解説しています。 VPC Service Controls は、APIやデータ操作を特定 IP アドレスからのリクエストに限定するなど、指定領域内でのデータ移動を制御するセキュリティ機能です。保護範囲を定義する「境界」と、異なる境界間を接続する「境界ブリッジ」という構成要素があります。 境界は組織内で増えすぎないように、ある程度の単位にまとめることが推奨されます。境界をプロジェクト等の単位で細分化すると、境界間での API リクエスト発生時に許可ルール(ブリッジや外向き・内向きルール)の設定が複雑化し、運用負荷が肥大化するためです。 「誰がどのプロジェクトにアクセスするか」という制御は IAM の責務とし、VPC Service Controls はあくまで接続元 IP などのコンテキストに基づく多層防御の役割を持たせるのが適切です。 接続元やアクセス制御の要件が明確に異なるユースケースが複数存在する場合は、複数の境界を作成することを検討します。ただしその場合も、Terraform 等による構築自動化で運用負荷を下げる工夫が望まれます。 zenn.dev 2. Security Command Center検出結果のPub/Subエクスポートをフィルタリングする 当記事は、Google Cloud の Security Command Center の検出結果を Pub/Sub へ通知(継続的エクスポート)する際に、特定の条件でフィルタリングする方法とクエリの記述例を紹介しています。 Security Command Center は脆弱性や異常検知を Pub/Sub 経由で外部ツールへリアルタイムに連携できますが、全件ではなく必要な情報のみを通知するために「検出結果クエリ」を利用します。このクエリは独自の文法を持ちますが、コンソール画面のフィルタ操作から自動生成することも可能です。 記事内では、以下の実用的なクエリサンプルが解説されています。 基本フィルタ : ミュート済みを除外し、アクティブな検出結果のみを抽出する記述 特定プロジェクト : project_display_name 属性(実態はプロジェクト ID)を用いた指定方法 特定フォルダ配下 : contains 関数を使用し、リソース階層情報(resource_path)に特定のフォルダ ID が含まれるかを判定する方法 これらを活用することで、運用監視に必要な重要度の高い通知のみを適切にエクスポートすることが可能になります。 zenn.dev 3. Security Command Center検出結果を一時的にミュートする方法 当記事は、Google Cloud の Security Command Center における「動的ミュートルール」の活用方法と設定手順について解説しています。 Security Command Center のミュートルールは、特定の条件に合致するセキュリティ検出結果をコンソール上で非表示にする機能です。中でも「動的ミュートルール」は、指定した期日まで、あるいは構成が一致しなくなるまで一時的に検出結果をミュートできます。 これにより、計画メンテナンス、開発環境での例外的な運用、誤検知への対応、一時的なリスク受容などの場面において、許容済みの検出結果をノイズとして排除し、重要なセキュリティ通知に集中できる環境を構築できます。 記事では「特定期間中の VM インスタンスへのパブリック IP 割り当てを許容する」シナリオを例に、以下の手順で検証を行っています。 動作確認 : ルール設定前に、対象の VM が検出結果として表示されることを確認 設定 : 有効期限や検出クエリ(条件)を指定し、動的ミュートルールを作成 適用確認 : 該当する検出結果がデフォルト一覧から非表示になり、専用フィルタを通した場合のみ閲覧できる状態になることを確認 設定期間が終了すればルールは自動的に無効化されるため、一時的なリスク管理に有効な手段となります。 zenn.dev G-gen 編集部 (記事一覧) 株式会社G-genは、サーバーワークスグループとして「クラウドで、世界を、もっと、はたらきやすく」をビジョンに掲げ、2021年よりクラウドの導入から最適化までを支援しているGoogle Cloud専業のクラウドインテグレーターです。
G-gen の高宮です。 Google Calendar API と Google Meet REST API を利用し、Google Meet の成果物作成を有効化したカレンダーの予定を作成する方法を解説します。 はじめに 概要 Google Calendar API とは Google Meet REST API とは 免責事項 事前準備 各種 API の有効化 OAuth 同意画面の構成 デスクトップ アプリケーションの認証情報を承認 アーティファクト作成を有効化したイベントと Meet 会議の作成処理 プロジェクトの初期化 ファイル構成 ライブラリのインストール 実装 動作確認 はじめに 概要 Google カレンダーの Web UI では、予定(以下、イベント)を作成後、「Google Meet のビデオ会議を追加」を押下するか、ゲストを追加することで、イベントに Meet 会議の URL を追加することができます。 また、Meet 会議で録画や文字起こしなどの成果物(以下、アーティファクト)作成を、会議が開始されると同時に開始したい場合、ビデオ通話オプションの「会議の記録」タブで、以下の項目にチェックを入れます。これにより、自動記録が有効化されアーティファクトが作成されます。 Gemini でメモを生成する 会議を文字起こし 会議を録画 公式ドキュメントでは、 自動メモ生成 機能を使用するために推奨される会議の長さは、15 分から最大 8 時間までであることが記載されています。 参考 : Google Meet の自動メモ生成 当記事では、Google Calendar API と Google Meet REST API を使用して、API 経由でアーティファクト作成を有効化したイベントと Meet 会議の作成方法を解説します。 Google Calendar API とは Google Calendar API は、HTTP 呼び出しまたは Google クライアント ライブラリを使用してアクセスできる RESTful API です。この API を利用すると、Google カレンダーの Web UI で利用できるほとんどの操作を、自身のプログラムから呼び出すことができます。 参考 : Google Calendar API の概要 以下の記事も参照してください。 blog.g-gen.co.jp Google Meet REST API とは Google Meet REST API は、HTTP 呼び出しまたは Google クライアント ライブラリを使用してアクセスできる RESTful API です。この API を利用すると、自身のプログラムから以下の操作ができます。 Meet 会議のためのスペースの作成、取得、更新 参加者と参加者セッションのリストを取得 アーティファクトを取得 また、Google Workspace Events API を使用して Meet イベントに登録できます。特定の会議スペースまたは特定のユーザーに属するすべてのスペースを登録することで、変更の通知を受け取れます。 参考 : Google Meet REST API の概要 参考 : Google Workspace Events API を使用してイベントに登録する 参考 : Google Meet のイベントに登録する 免責事項 当記事で紹介するプログラムのソースコードは、ご自身の責任のもと、使用、引用、改変、再配布して構いません。 ただし、同ソースコードが原因で発生した不利益やトラブルについては、当社は一切の責任を負いません。 事前準備 各種 API の有効化 使用する Google Cloud プロジェクトで以下の API を有効化します。 Google Calendar API Google Meet REST API gcloud services enable \ calendar-json.googleapis.com \ meet.googleapis.com OAuth 同意画面の構成 Google Cloud コンソールで、ハンバーガーメニューから > Google Auth platform > [ブランディング] に移動します。 「開始」ボタンを押下し、以下の情報を入力し、OAuth 同意画面の設定を構成します。 項目 値 アプリ名 同意を求めるアプリの名前 ユーザーサポートメール 同意に関して問い合わせる際に使用するメールアドレス 対象 内部 メールアドレス 使用しているメールアドレス 参考 : OAuth 同意画面を構成する 参考 : Manage OAuth App Branding デスクトップ アプリケーションの認証情報を承認 Google Cloud コンソールで、ハンバーガーメニューから > Google Auth platform > [クライアント] に移動します。 「クライアントを作成」を押下します。 アプリケーションの種類 で デスクトップアプリ を選択し、デスクトップアプリの名前を入力して「作成」を押下します。 OAuth クライアントの作成が完了したら、「JSON をダウンロード」*を押下し、クライアントシークレットを保存します。 参考 : デスクトップ アプリケーションの認証情報を承認する アーティファクト作成を有効化したイベントと Meet 会議の作成処理 当記事では、Astral 社が開発・提供している、Rust 製のパッケージ・プロジェクト管理ツールの uv を使用します。 参考 : uv Introduction プロジェクトの初期化 以下のコマンドを実行して、Python プロジェクトを初期化、仮想環境を構築します。 uv init < プロジェクト名 > uv venv ファイル構成 ファイル名 説明 client_secret.json 作成したクライアントから発行したクライアントシークレット .python-version uv で使用する Python のバージョン main.py メイン処理 pyproject.toml プロジェクトのパッケージや依存関係の管理 token.json 認証情報(アクセストークンやリフレッシュトークン)を保管 ライブラリのインストール 以下のコマンドを実行して、必要なライブラリをインストールします。 uv add google-api-python-client == 2 . 187 . 0 uv add google-auth-oauthlib == 1 . 2 . 3 実装 main.py に以下のコードを実装します。 本実装では、API の呼び出しは、 google-api-python-client ライブラリを使用して行っています。 import os import datetime from google.auth.transport import requests from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from googleapiclient.discovery import build def authorize () -> Credentials: """Calendar API と Meet API を呼び出すために OAuth 2.0 認証を行い、Credentials オブジェクトを返す""" CLIENT_SECRET_FILE = "./client_secret.json" credentials = None if os.path.exists( "token.json" ): credentials = Credentials.from_authorized_user_file( "token.json" ) if credentials is None : flow = InstalledAppFlow.from_client_secrets_file( CLIENT_SECRET_FILE, scopes=[ "https://www.googleapis.com/auth/calendar.events.owned" , "https://www.googleapis.com/auth/meetings.space.created" , ], ) flow.run_local_server(port= 0 ) credentials = flow.credentials if credentials and credentials.expired: credentials.refresh(requests.Request()) if credentials is not None : with open ( "token.json" , "w" ) as f: f.write(credentials.to_json()) return credentials USER_CREDENTIALS = authorize() def create_event (): """Calendar API を使用してイベントを作成する""" # サービスオブジェクトの構築 service = build( "calendar" , "v3" , credentials=USER_CREDENTIALS) # 指定した時刻から1時間の予定を作成 now = datetime.datetime.now() startTime = now.isoformat() endTime = (now + datetime.timedelta(hours= 1 )).isoformat() event = { "summary" : "Google Calendar Meet Test Event" , "start" : { "dateTime" : startTime, "timeZone" : "Asia/Tokyo" , }, "end" : { "dateTime" : endTime, "timeZone" : "Asia/Tokyo" , }, } # 自身のカレンダーに予定を追加 event = service.events().insert(calendarId= "primary" , body=event).execute() return event def create_space (): """Meet API を使用して アーティファクト生成を有効化した Space リソースを作成する""" # google-api-python-client での実装 service = build( "meet" , "v2" , credentials=USER_CREDENTIALS) # 変更する Space リソースのボディ定義 space_body = { "config" : { "artifactConfig" : { "recordingConfig" : { "autoRecordingGeneration" : "ON" , }, "transcriptionConfig" : { "autoTranscriptionGeneration" : "ON" , }, "smartNotesConfig" : { "autoSmartNotesGeneration" : "ON" , }, } } } # Space リソースの作成 return service.spaces().create(body=space_body).execute() def update_event (eventId: str = None , meetUri: str = None ): """Calendar API を使用して既存のイベントに Meet 情報を追加する""" # サービスオブジェクトの構築 service = build( "calendar" , "v3" , credentials=USER_CREDENTIALS) # 予定の更新 event = service.events().get(calendarId= "primary" , eventId=eventId).execute() event[ "conferenceData" ] = { "conferenceSolution" : { "key" : { "type" : "hangoutsMeet" }, }, "entryPoints" : [ { "entryPointType" : "video" , "uri" : meetUri, } ], } updated_event = ( service.events() .update( calendarId= "primary" , eventId=event[ "id" ], body=event, conferenceDataVersion= 1 , ) .execute() ) return updated_event def main (): """メイン処理""" # イベントと Space の作成 event = create_event() print (f "Google Calendar URL {event.get('htmlLink')}" ) space = create_space() meet_uri = space.get( "meetingUri" ) print (f "Meet URL {meet_uri}" ) # イベントに Space を紐付けて更新 event = update_event(eventId=event[ "id" ], meetUri=meet_uri) # カレンダーの更新結果を確認(イベントのURLは変わらず、作成した Meet URL が追加されている) print (f "Update Google Calendar URL {event.get('htmlLink')}" ) print (f "Calendar Meet URL {event['conferenceData']['entryPoints'][0]['uri']}" ) if __name__ == "__main__" : main() authorize 関数は作成した client_secret.json を使用して、OAuth の認証を行います。Google アカウントを選択し認証に成功すると、 token.json が作成され、認証情報(アクセストークンやリフレッシュトークン)が保管されます。 scopes ではアプリから操作できる範囲を限定しているので、実装する処理に応じてスコープを変更する必要があります。 create_event 関数は認証に使用した Google アカウントの Google カレンダーにイベントを作成します。今回実装した処理では、実行した時刻から1時間の予定を作成しています。 create_space 関数はアーティファクト生成を有効化した Meet 会議のスペースを作成しています。設定は JSON 形式で実装します。Google Meet REST API の呼び出しは、 google-apps-meet ライブラリからも可能ですが、本機能は2025年11月時点でベータ版として提供されているので使用していません。 update_event 関数は [2.] で作成したイベントの event["conferenceData"] に、[3.] で作成したスペースの Uri を設定しています。 main 関数が実行されると、イベント、スペースの作成、イベントの更新処理が順番に呼び出されます。 参考 : Google Calendar API のスコープを選択する 参考 : Events 参考 : REST Resource: spaces 動作確認 ターミナルで uv run main.py を実行することで、OAuth の同意画面が表示されます。Google アカウントを選択し認証すると、認証された Google アカウントの Google カレンダーにアーティファクト作成が有効化された Meet 会議を含むイベントが登録されます。 登録されたイベントの Meet 会議に参加すると、アーティファクト作成が自動で開始されることが確認できます。 高宮 怜 (記事一覧) クラウドソリューション部クラウドエクスプローラ課 2025年6月より、G-genにジョイン。前職は四国のSIerで電力、製造業系のお客様に対して、PM/APエンジニアとして、要件定義から運用保守まで全工程を担当。現在はGoogle Cloudを学びながら、フルスタックエンジニアを目指してクラウドエンジニアとしてのスキルを習得中。 Follow @Ggen_RTakamiya
G-gen の堂原です。本記事では、Google Cloud の 共有 VPC (Shared VPC)を設定または利用する際に必要な IAM 権限について解説します。 はじめに ホストプロジェクト有効化時の IAM 権限 必要な IAM ロール 権限不足時のエラーメッセージ 共有 VPC 利用時の IAM 権限 必要な IAM ロール コンソールでの設定 ユースケース別の具体例 Compute Engine VM の起動 Cloud Run サービスの Egress 接続 無効化時の IAM 権限に関する挙動 はじめに 共有 VPC は、複数のプロジェクト間で VPC ネットワークを共有できる機能です。ネットワークの管理を行う ホストプロジェクト と、そのネットワークリソースを利用する サービスプロジェクト を定めて管理します。 参考 : 共有 VPC 共有 VPC については、以下の記事も参照してください。 blog.g-gen.co.jp 共有 VPC の有効化時や利用時には、組織、フォルダ、ホストプロジェクト上での適切な IAM 権限設定が必要です。 当記事では、共有 VPC の有効化時と利用時、それぞれの IAM 権限設定と、無効化時の IAM 権限設定の挙動について解説します。 ホストプロジェクト有効化時の IAM 権限 必要な IAM ロール Google Cloud のコンソール画面にて、プロジェクトを共有 VPC の「ホストプロジェクト」として有効化する操作を行う際は、操作するプリンシパル(Google アカウントやサービスアカウント)に対して、以下のとおりロールを付与する必要があります。 ロールを付与するリソース ロール名 組織またはフォルダ Compute Shared VPC 管理者( roles/compute.xpnAdmin ) ホストプロジェクト Project IAM 管理者( roles/resourcemanager.projectIamAdmin ) ※ resourcemanager.projects.setIamPolicy 権限があれば他のロールでも可能 ただし、gcloud コマンドを用いて有効化する際は「Project IAM 管理者」ロールは必要ありません。コンソールで操作する場合のみ、「Project IAM 管理者」ロールが無いと設定画面に遷移する際にエラーメッセージが表示されます。 重要な点は、「Compute Shared VPC 管理者」ロールは、ホストプロジェクト自身ではなく、その 上位の組織またはフォルダレベル で付与する必要があるという点です。 参考 : 共有 VPC - 管理者と IAM 権限不足時のエラーメッセージ 上記の権限が不足している場合、コンソールや gcloud コマンドでホストプロジェクトを有効化しようとすると、以下のようなエラーメッセージが表示されます。 Required 'compute.organizations.enableXpnHost' permission for 'projects/xxx' または プロジェクト「xxx」の 'compute.subnetworks.setIamPolicy', 'resourcemanager.projects.setIamPolicy' 権限がありません。 これらのメッセージは、一見すると対象のプロジェクトレベルでの権限付与を促しているように見えます。 しかし、前述のとおり、「Compute Shared VPC 管理者」ロールは、ホストプロジェクト自身ではなく、その 上位の組織またはフォルダレベル で付与する必要がある点に注意してください。 共有 VPC 利用時の IAM 権限 必要な IAM ロール サービスプロジェクトにおいて、共有されたサブネットを利用するためには、操作を行うプリンシパル(Google アカウントやサービスアカウント)が、ホストプロジェクトまたは該当サブネットに対して「Compute ネットワーク ユーザー( roles/compute.networkUser )」ロールを有している必要があります。 ホストプロジェクトレベルで付与した場合、そのホストプロジェクト上のすべてのサブネットを利用することができます。 参考 : 共有 VPC をプロビジョニングする - 共有 VPC を使用する コンソールでの設定 共有 VPC コンソール画面では、ホストプロジェクトの初期有効化時に、プリンシパルに対して「Compute ネットワーク ユーザー」ロールを付与するための設定が用意されています。 「役割別のユーザーの選択」画面では、どのプリンシパルに「Compute ネットワーク ユーザー」ロールを付与するかを決定します。例えば、各サービスプロジェクトの「Compute インスタンス管理者」ロールや「オーナー」ロールを持つプリンシパルなど、既にサービスプロジェクトに対して特定のロールを持つプリンシパルに対して、「Compute ネットワーク ユーザー」ロールを付与することができます。 役割別のユーザーの選択 「アクセスを許可」画面では、上記で選択したプリンシパルに対し、プロジェクトレベルで「Compute ネットワーク ユーザー」ロールを付与するか(すなわち、ホストプロジェクト上のすべてのサブネットが利用可能)、あるいは個々のサブネットレベルで付与するかを選択します。 アクセスを許可 ユースケース別の具体例 Compute Engine VM の起動 サービスプロジェクトにおいて共有 VPC ネットワーク上に Compute Engine VM を起動するには、 操作者の Google アカウント が、ホストプロジェクトの該当サブネットへの「Compute ネットワーク ユーザー」ロールを持っている必要があります。 Cloud Run サービスの Egress 接続 サービスプロジェクト上の Cloud Run サービスから、ホストプロジェクト上のサブネットに Direct VPC Egress などで接続するケースです。 この場合、 「Cloud Run サービス エージェント」 に対して、ホストプロジェクトの該当サブネットへの「Compute ネットワーク ユーザー」ロールを付与する必要があります。 Cloud Run サービスエージェントのメールアドレスは、以下の形式です。 service-{サービスプロジェクト番号}@serverless-robot-prod.iam.gserviceaccount.com 参考 : ダイレクト VPC 下り(外向き)と共有 VPC ネットワーク - IAM 権限を設定する なお、サービスエージェントとは、Google Cloud サービスが使用する特殊なサービスアカウントのことです。以下の記事も参照してください。 参考 : サービスエージェントとは何か - G-gen Tech Blog 無効化時の IAM 権限に関する挙動 Google Cloud コンソールからホストプロジェクトの共有 VPC 設定を無効化すると、ホストプロジェクトにおいて、プロジェクトレベル、またはサブネットごとに設定されているすべての「Compute ネットワーク ユーザー」ロール設定が自動的に削除されます。 この自動的な削除処理は Google Cloud コンソールからの操作時のみ行われます。一方で、gcloud コマンド( gcloud compute shared-vpc disable )で無効化した場合は、「Compute ネットワーク ユーザー」ロール設定は自動的には削除されず、残ります。 堂原 竜希 (記事一覧) クラウドソリューション部クラウドエクスプローラ課。2023年4月より、G-genにジョイン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に選出 (2024年はRookie of the year、2025年はFellowにも選出)。休みの日はだいたいゲームをしているか、時々自転車で遠出をしています。 Follow @ryu_dohara
G-gen の堂原です。当記事では、Ingress 設定が「内部」となっている Cloud Run サービス に対し、異なる Google Cloud プロジェクトから VPC ネットワークを経由して プライベートアクセス する方法について解説します。 はじめに Cloud Run サービスの Ingress 設定 異なるプロジェクトからのアクセス アクセス先プロジェクトがホストプロジェクトの共有 VPC を経由する 構成 留意点 アクセス先 Cloud Run が共有 VPC へ Egress 接続する 構成 留意点 VPC Service Controls を利用する 構成 留意点 内部ロードバランサを経由する はじめに Cloud Run サービスの Ingress 設定 Cloud Run サービスの Ingress(上り)設定は、サービスにアクセス(リクエスト)できるネットワークトラフィックを制御します。 この設定を「 内部 」にすると、インターネットからの直接的なアクセスをブロックし、同じ Google Cloud プロジェクト内の VPC ネットワークや、特定の Google Cloud サービス(Cloud Scheduler や Cloud Tasks など)からのアクセスのみに制限できます。 詳しくは以下のブログで紹介しています。 blog.g-gen.co.jp 異なるプロジェクトからのアクセス Ingress 設定が「内部」になっている Cloud Run サービスにおいては、同一の Google Cloud プロジェクト(以後、「プロジェクト」)の VPC ネットワークからであればアクセス可能ですが、異なるプロジェクトからアクセスするには、追加の構成が必要です。 このプロジェクト間プライベートアクセスの実現方法として、次のようなパターンがあります。 アクセス先プロジェクトがホストプロジェクトの共有 VPC を経由する アクセス先 Cloud Run が共有 VPC へ Egress 接続する VPC Service Controls を利用する 内部ロードバランサを経由する なお当記事では、「アクセス先プロジェクト」はアクセス先の Cloud Run サービスが属するプロジェクトを、「アクセス元プロジェクト」はアクセス元のリソース(Compute Engine VM など)が属するプロジェクトを指します。 当記事では、各パターンについて紹介します。 参考 : プライベート ネットワークと Cloud Run  |  Google Cloud アクセス先プロジェクトがホストプロジェクトの共有 VPC を経由する 構成 共有 VPC 経由で Cloud Run サービスへリクエストする場合で、アクセス 先 プロジェクトが 共有 VPC の ホストプロジェクト である場合は、Cloud Run サービスからみて「内部」アクセスと判定されます。 構成の概要は以下のとおりです。 アクセス先プロジェクトで共有 VPC を有効化し、ホストプロジェクトとする アクセス元プロジェクトをサービスプロジェクトとして、サブネットを共有する 上記の構成により、アクセス元プロジェクトに共有されたサブネット上の Compute Engine VM 等から、Cloud Run サービスの URL に HTTP リクエストをすることが可能です。アクセス元リソースが Cloud Run サービスや Cloud Run ジョブの場合、自プロジェクトの共有されたサブネットに Egress 接続することで、アクセスすることができます。 留意点 本構成においては以下のような点に気をつける必要があります。 アクセス 先 プロジェクトが共有 VPC ホストプロジェクト ではない 場合は、後述の Egress 接続設定が必要 アクセス元リソースが外部 IP アドレスを有していない場合、サブネットで限定公開の Google アクセス(Private Google Access)を有効化する、または Cloud NAT を利用する必要がある。外部 IP アドレスを有している場合は共に不要 アクセス先 Cloud Run が共有 VPC へ Egress 接続する 構成 アクセス先 の Cloud Run サービスが、 Direct VPC Egress または サーバーレス VPC アクセス を用いて共有 VPC に Egress 接続設定をしている場合、その共有 VPC は Cloud Run サービスからみて「内部」と判定されます。 構成の概要は以下のとおりです。 任意のプロジェクト(アクセス元でもアクセス先でもない、第三のプロジェクトでも可)をホストプロジェクトとして共有 VPC を設定する アクセス元プロジェクトとアクセス先プロジェクトの両方をサービスプロジェクトとして、ホストプロジェクトにアタッチし、サブネットを共有する アクセス先の Cloud Run サービスで、共有されたサブネットへの Egress 接続(Direct VPC Egress またはサーバーレス VPC アクセス)を構成する 上記の構成で、アクセス元プロジェクト上で、共有されたサブネットから Cloud Run サービスの URL に HTTP リクエストをすることが可能となります。 留意点 本構成においては以下のような点に気をつける必要があります。 アクセス元プロジェクトをホストプロジェクトとすることも可能 アクセス先 Cloud Run サービスの Egress 接続の「トラフィックルーティング」設定は、「プライベート IP へのリクエストのみを VPC にルーティングする」でも本構成は成立する アクセス元リソースが外部 IP アドレスを有していない場合、サブネットで限定公開の Google アクセス(Private Google Access)を有効化する、または Cloud NAT を利用する必要がある。外部 IP アドレスを有している場合は共に不要 VPC Service Controls を利用する 構成 アクセス先プロジェクトの Cloud Run Admin API を保護する VPC Service Controls 境界に含まれている VPC ネットワークは、Cloud Run サービスからみて「内部」と判定されます。 構成の概要は以下のとおりです。 VPC Service Controls の境界を作成する 境界に、アクセス先プロジェクトと、アクセス元プロジェクトの VPC ネットワークを含める(アクセス元プロジェクトを含める必要はない) 境界で保護するサービスに Cloud Run Admin API( run.googleapis.com )を含める アクセス元プロジェクトのリソースは、境界内の VPC ネットワークを経由して Cloud Run サービスにアクセスする 上記の構成で、VPC Service Controls に含まれている VPC ネットワーク上のサブネットから Cloud Run サービスの URL に HTTP リクエストをすることが可能となります。 留意点 本構成においては以下のような点に気をつける必要があります。 本構成において、VPC ネットワークは共有 VPC である必要はない VPC Service Controls の設定について 「保護するリソース」にアクセス元プロジェクトを含める必要はない 「VPC のアクセス可能なサービス」において、「CLoud Run Admin API」を許可する必要がある アクセス元リソースが外部 IP アドレスを有していない場合、サブネットで限定公開の Google アクセス(Private Google Access)を有効化する、または Cloud NAT を利用する必要がある。外部 IP アドレスを有している場合は共に不要 内部ロードバランサを経由する Cloud Load Balancing の一種である 内部アプリケーションロードバランサ のバックエンドとして Cloud Run サービスを登録し、アクセス元リソースからそのロードバランサにアクセスするという構成です。 詳しくは以下の記事で紹介しています。 blog.g-gen.co.jp 堂原 竜希 (記事一覧) クラウドソリューション部クラウドエクスプローラ課。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 が提供できる生成 AI チャットサービスである Gemini アプリ では、Google スライドを生成できます。当記事では、このスライド生成機能について紹介します。 Gemini アプリによるスライド生成 プロンプト入力と Canvas の使用 スライドの生成 Google スライドへのエクスポート 資料を引用した生成 Gemini アプリによるスライド生成 Google が提供できる生成 AI チャットサービスである Gemini アプリ では、 Canvas 機能を使って Google スライドを生成できます。 Canvas 機能とは、生成 AI との自然言語を使った指示により、資料や Web サイト(HTML)、Web アプリ(JavaScript)、スライドや PDF などを作成したり、対話を通じて成果物の微修正を行うことができる機能です。 参考 : Canvas でドキュメントやアプリなどを作成する - Gemini アプリ ヘルプ プロンプト入力と Canvas の使用 Gemini アプリ( https://gemini.google.com/ )へアクセスし、プロンプトを入力します。 また「ツール」をクリックして、 Canvas をクリックして有効化します。その後、Enter キーを押下します。 プロンプトの入力 今回のプロンプトは以下のようにしました。 日本のクラウドインテグレーター、株式会社G-genのエンジニア採用向けの資料を作りたいです。アウトプットは Google スライドとしてください。 インターネット上から、G-gen のエンジニア採用関連の情報を検索して資料を作って下さい。 スライドの生成 3分ほど待つと、画面右側の Canvas エリアにスライドが生成されました。 スライドの表紙 プロンプトでの指示通り、インターネットで公開されている情報からスライドが生成されています。 スライドの中身(1) スライドの中身(2) スライドの中身(3) 最後のページには、画像の 引用元 が表示されています。資料を商用利用したりインターネットに公開する前に、利用規約を確認することが望ましいでしょう。 画像の引用元 Google スライドへのエクスポート Canvas エリアの右上の「スライドにエクスポート」ボタンを押下すると、資料が Google ドライブに Google スライドとしてエクスポート されます。 Google スライドへのエクスポート なお「スライドにエクスポート」ボタンの右側のダウンロードボタンを押すと、 PDF としてのダウンロード も可能です。 資料を引用した生成 スライドの生成にあたり、 既存の資料 を参考として添付することができます。Gemini は、添付した資料を参考にして新しい資料を作成します。 既存資料の追加 今回のプロンプトは、以下のようにしました。 日本のクラウドインテグレーター、株式会社G-genのエンジニア採用向けの資料を作りたいです。アウトプットは Google スライドとしてください。 添付した資料を使って、新しい資料を生成してください。また、G-gen のエンジニア採用関連の情報をインターネット上から検索して追加の参考資料としてください。 また、添付資料として、G-gen の Web 採用説明会の投影スライドを追加しました。資料はパソコンからアップロードすることも、Google ドライブ上のファイルを指定することもできます。 出力は、以下のようになりました。今回生成された資料には、アップロードした既存資料の情報が反映されています。 スライドの中身(4) スライドの中身(5) スライドの中身(6) 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
当記事は、ライオン株式会社様と株式会社G-genの 技術情報発信コラボレーション企画 『SAPと連携するデータ分析基盤の実践とTips』で執筆されたものです。 はじめに 当企画について 当記事について 目的と位置づけ、ユースケース なぜ分析環境が必要なのか? データ基盤における分析環境の位置づけ 分析環境のユースケース Notebook 環境のアーキテクチャ Vertex AI Workbench の利用 Google Cloud サービスへのプライベートアクセス JupyterLab のための追加設定 外部サービスへのアクセス設定 バッチ処理のためのアーキテクチャ まとめ はじめに 当企画について 当記事は株式会社 G-gen 様とライオン株式会社の技術ブログ相互寄稿企画で執筆されたものです。ライオン側からは、 G-gen 様のご協力のもと、Google Cloud 環境に構築を進めているデータ基盤に関連した以下3つの記事をシリーズでお届けします。 ライオンのデータ基盤構築とSAPデータ活用体制 ライオンのデータマネジメント ライオンのデータ基盤における分析環境 👈 当記事 G-gen Tech Blog の記事一覧 blog.g-gen.co.jp LION Digital Inside の記事一覧 zenn.dev 当記事について ライオン株式会社にてデータ基盤まわりを担当しているフクヤマです。 当記事では、部署横断での安全なデータ共有とデータドリブン文化の定着を目的として、データマート(DM)層に部門単位の Google Cloud プロジェクトを用意し、Vertex AI Workbench を中核としたセキュアな分析環境を構築した事例を紹介します。 事例紹介の中で、VPC Service Controls 配下で外部 IP アドレスを持たずに BigQuery などへアクセスする設定や、Notebook をバッチ実行するための構成について解説します。 目的と位置づけ、ユースケース なぜ分析環境が必要なのか? データ基盤に集約されたデータを迅速かつセキュアに活用するためには、ユーザ専用の分析環境が必要です。この環境を構築することにより、以下のようなメリットを期待しています。 部署横断的な活用の促進 異なる部門間でデータを共有し、共通の基盤のもとで意思決定を行うことで、組織全体の生産性向上に寄与 データドリブンな文化の醸成 ユーザが主体的にデータ活用できる環境を整備することによる、組織全体へのデータドリブンな文化の浸透、および現場レベルでの改善活動の一層の促進 セキュアな環境での実験と開発 VPC Service Controls などのセキュリティ技術を活用し、安心して分析や機械学習の実験が行える環境を提供 データ基盤における分析環境の位置づけ 当社のデータ基盤では、レイヤー構造で環境を分離しており、役割と管轄を明確化しています(詳細は 当社1つ目の記事 を参照)。この構成に従い、分析環境は DM 層に整備することになります(Figure 1)。ここでいう環境は、1つの Google Cloud プロジェクトを指しており、部門ごとあるいは業務プロジェクトごとに作成することを想定しています。 Figure 1: データ基盤における分析環境の位置づけ 分析環境においては、データ基盤に存在するデータ、具体的にはデータレイク(DL)層またはデータウェアハウス(DWH)層に位置するプロジェクトのデータに対しては参照のみを許可しています。分析者はこれらのデータを主に Notebook から参照のうえ、必要な処理・分析を実施します。処理済みのデータは必要に応じて分析環境上のテーブルとして保管され、活用されます(e.g. BIツールによる可視化)。 分析環境のユースケース 当社ではデータサイエンティストから分析専門職以外の一般ユーザにまで、分析環境を提供することを想定しています。それぞれの環境のユースケースとしては、おおまかに以下を想定しています(Table 1)。 Table 1: ユーザごとの分析環境のユースケース No ユーザ ユースケース 主な利用サービス 1 データサイエンティスト ・Notebook 環境で Python を使った次の処理 ・アドホック分析 ・機械学習モデル構築 ・バッチ処理(スケジュール実行) ・コード管理 ・BigQuery ・Vertex AI ・Artifact Registory ・Cloud Run ・Cloud Storage 2 データアナリスト ・SQLを活用したダッシュボード・レポーティングの作成 ・データ探索によるインサイト抽出 ・BigQuery ・Looker 3 一般ユーザ ・ダッシュボード・定型レポートの閲覧 ・業務指標のモニタリング (・SQL活用) ・BigQuery ・Looker 当記事では上記のうち、データサイエンティストの分析環境について紹介します。 Notebook 環境のアーキテクチャ Vertex AI Workbench の利用 データサイエンティストが試行錯誤しながらデータ分析をしたり、機械学習モデルを開発する環境としては、 Notebook ( Jupyter 環境)が必要です。Notebook の利用にあたり、当社では大きく以下の2つの要件があり、これらを満たすため、 Vertex AI Workbench を利用することに決めました(Figure 2)。 要件1. ユーザーが日常的に Python でデータ探索・分析を行うこと 要件2. ユーザ管理の VPC 内に環境を配置したうえで、VPC Service Controls(以降、VPC SC)を利用して企業データのセキュリティレベルを確保すること Notebook 環境を利用できるサービスとしては、Colab Enterprise や Cloud Dataproc もありますが、要件を満たさなかったため候補から外れました。Colab Enterprise は要件2を満たさず、Cloud Dataproc は大規模分散処理や Spark 利用が前提であれば有力な選択肢となるが要件1の観点でオーバースペックだったためです。 Figure 2: データサイエンティスト向け分析・モデル開発環境 設計上のポイントは、VPC SC のサービス境界(Service Perimeter)により、Vertex AI をはじめ、本環境で利用するサービスの全てが保護されることです。この保護機能によりデータの漏洩防止対策が充実する一方で、設計で考慮すべきことがいくつか出てきます。 Google Cloud サービスへのプライベートアクセス Vertex AI Workbench インスタンス(以降、Workbench インスタンス)からは、様々な理由で他の Google Cloud サービスにアクセスする必要があります。代表的なケースは、分析対象のデータを参照するために、BigQuery や Cloud Storage にアクセスするといったものです。 当社の場合、Workbench インスタンスには外部 IP アドレスを持たせていないため、別の Google Cloud サービスにアクセスする際にはインターネットを経由せずにアクセスする必要がありました。この場合、アクセス対象が VPC SC にサポートされている Google Cloud API に限定されていれば、限定公開の Google アクセス(Private Google Access)と restricted.googleapis.com VIP を組み合わせたプライベートアクセス方式を採用することでセキュアにアクセスできることがわかり、この方式を採用しました。 設定方法の詳細は、以下の記事が参考になりました。Cloud DNS については、デフォルトドメイン( *.googleapis.com )を restricted.googleapis.com に向ける設定にしています。 blog.g-gen.co.jp JupyterLab のための追加設定 VPC SC のサービス境界によって保護されている Workbench インスタンスについて、前述のように外部 IP アドレスを持たない、かつ Google Cloud API へのパブリックアクセスを許可していない場合は、JupyterLab をブラウザ上で起動するために追加の設定が必要となります。 なぜなら、そのような Workbench インスタンスは VPC ネットワークの外部にあるサービスエンドポイントにアクセスする必要があるからです。具体的には、 restricted.googleapis.com VIP を利用するサービスエンドポイントとして、DNS に以下のドメインを追加で設定する必要があります。 notebooks.googleapis.com *.notebooks.cloud.google.com *.notebooks.googleusercontent.com 詳細は以下の公式ドキュメントをご覧ください。 参考 : Vertex AI Workbench インスタンスを作成する - ネットワーク構成オプション 外部サービスへのアクセス設定 本記事のメインテーマではありませんが、ソースコード管理ツールなどの外部サービス(Github、PyPI、Docker など)へのアクセスについて補足です。 今回はインスタンスに外部 IP アドレスを持たせないため、Cloud NAT でアウトバウンド通信をさせています。また、通信制御は Cloud NGFW の FQDN オブジェクトを利用して、対象サービスの FQDN に対してのみアウトバウンド通信を許可することで、不要な外部通信を排除しています。 バッチ処理のためのアーキテクチャ 当社のデータ分析基盤では、分析やデータ活用のため、バッチ処理を定期実行(スケジュール実行)させる要件があります。データサイエンティストから、Notebook に記述したプログラムをそのままバッチ処理として実行したいというニーズが挙がったため、スクリプトを新しく記述してワークフロー化することは見送り、Notebook 上のプログラムをバッチ処理として実行する方法を検討しました。 調査したところ、Vertex AI Workbench には Notebook のスケジュール実行( エグゼキュータ )機能が備わっていることを発見し、これで一件落着!・・・と思いきや、調査を進めたところ、エグキュータ機能は VPC SC 下ではサポートされていないことが判明しました。試行錯誤するなかでドキュメントを読み漁ったところ、公式ドキュメントに、以下の記載を見つけました。 In instances that use VPC Service Controls, use of the executor isn't supported. 参考 : Introduction to Vertex AI Workbench - Limitations すなわち、エグゼキュータは VPC SC 環境下では利用できないことが判明しました。気を取り直して代替手段を調査したところ、VPC SC 配下でバッチ処理をスケジュール実行する際のベストプラクティスとして、Cloud Scheduler、Cloud Run services、Cloud Run jobs を組み合わせた方法を発見しました。 参考 : ベスト プラクティス: スケジュールされたジョブを VPC Service Controls の境界で実行する 上記のドキュメントを参考に、Notebook ファイルをバッチ実行するための OSS である papermill を組み込んだ Docker コンテナを Cloud Run jobs として登録することで、ひとまず目的としたジョブのバッチ処理が実現できました。 まとめ 当記事では、ライオンのデータ基盤における分析環境について、主にデータサイエンティスト向け環境の概要をご紹介しました。 今後はより広範な業務ユーザや非エンジニアの分析ニーズに応えるため、Google Cloud の提供する生成 AI 機能のを積極的に導入するなどして、専門知識のないユーザでも自然言語で問い合わせてデータの取得やレポート作成などが行える環境を整備し、データ分析への参入障壁の軽減にも挑戦したいです。 G-gen 編集部 (記事一覧) 株式会社G-genは、サーバーワークスグループとして「クラウドで、世界を、もっと、はたらきやすく」をビジョンに掲げ、2021年よりクラウドの導入から最適化までを支援しているGoogle Cloud専業のクラウドインテグレーターです。
記事の移行について 当記事は移行しました Google Workspace Flows は、日本時間2025年12月4日に Google Workspace Studio に名称を変更して一般公開されました。 これに伴い、Google Workspace Studio についての解説記事は、以下のページに移行されています。 blog.g-gen.co.jp window.addEventListener('DOMContentLoaded', () => { const canonicalUrl = "https://blog.g-gen.co.jp/entry/google-workspace-studio-explained"; let canonicalLink = document.querySelector('link[rel="canonical"]'); if (!canonicalLink) { canonicalLink = document.createElement('link'); canonicalLink.setAttribute('rel', 'canonical'); document.head.appendChild(canonicalLink); } canonicalLink.setAttribute('href', canonicalUrl); });
G-gen の佐々木です。当記事では、Cloud Run jobs で実行されるジョブのエラー通知を、 Cloud Logging と Cloud Monitoring で作成します。リソースの作成には IaC である Terraform を使用します。 はじめに アラートのリソース構成 Terraform コード全文 バージョン定義 リソース定義 Terraform コード解説 ローカル変数 ログベースの指標 通知チャンネル アラートポリシー 動作確認 はじめに Cloud Run jobs は Google Cloud のサーバーレス コンテナ コンピューティング サービスである Cloud Run の実行モデルの1つであり、コンテナ化されたバッチジョブの長時間実行に特化したサービスです。 サーバーレス、つまりユーザーによるインフラの管理を必要とせず、またコンテナ化されていればランタイムを問わずバッチジョブを実行することができます。 Cloud Run jobs は非常に扱いやすい強力なサービスですが、ジョブ実行が失敗したときなど、ユーザーへの何かしらの通知を実装したい場合には、別途モニタリングの仕組みを構成する必要があります。 当記事では、Google Cloud のモニタリングサービスである Cloud Logging および Cloud Monitoring を使用することで、Cloud Run jobs のジョブ実行失敗をメール通知する仕組みを構成していきます。 各サービスの詳細な解説は以下の記事をご一読ください。 blog.g-gen.co.jp blog.g-gen.co.jp blog.g-gen.co.jp アラートのリソース構成 Cloud Run jobs は、ジョブ実行の失敗時にエラーログを出力します。 当記事では、Cloud Logging に記録されたエラーログを Cloud Monitoring の ログベースの指標 として取り込み、 アラートポリシー を使用してアラートの通知を送信します。 ログベースの指標とアラートポリシーを使用したアラート通知の構成 Terraform コード全文 バージョン定義 当記事で使用する Terraform および Terraform の Google Cloud プロバイダのバージョンは以下の通りです。 # versions.tf terraform { required_version = ">= 1.13" required_providers { google = { source = "hashicorp/google" version = ">= 7.7" } } } リソース定義 アラート通知のために以下の3つのリソースを定義します。 ログベースの指標 通知チャンネル アラートポリシー なお、モニタリングの対象となる Cloud Run ジョブはすでに作成してあるものとします。 リソース定義の詳細は後ほど解説していきます。 # monitoring.tf locals { project_id = "sample-project" location = "asia-northeast1" job_name = "sample-job" notification_email = "sample@g-gen.co.jp" } # ログベースの指標 resource "google_logging_metric" "this" { project = local.project_id name = "error_metric_for_$ { local.job_name } " # Cloud Logging のクエリを定義 filter = <<-EOT severity>=ERROR resource.type="cloud_run_job" resource.labels.job_name="$ { local.job_name } " resource.labels.location="$ { local.location } " logName=~"cloudaudit.googleapis.com%2Fsystem_event" EOT metric_descriptor { metric_kind = "DELTA" value_type = "INT64" } } # 通知チャンネル resource "google_monitoring_notification_channel" "this" { project = local.project_id display_name = "ジョブエラー通知用メールアドレス" type = "email" force_delete = false labels = { email_address = local.notification_email } } # アラートポリシー resource "google_monitoring_alert_policy" "this" { project = local.project_id display_name = "Error Alert for $ { local.job_name } " # アラートの表示名 combiner = "OR" severity = "ERROR" # アラートの重大度(CRITICAL / ERROR / WARNING) enabled = true notification_channels = [ google_monitoring_notification_channel.this.id ] conditions { display_name = "Error Condition for $ { local.job_name } " condition_threshold { # filterのmetric.typeにログベースの指標を指定(resource.typeの指定も必須) filter = "resource.type=\"cloud_run_job\" AND metric.type=\"logging.googleapis.com/user/$ { google_logging_metric.this.name } \"" comparison = "COMPARISON_GT" # threshold_value の値よりも大きいときにアラート作成 threshold_value = 0 aggregations { alignment_period = "60s" per_series_aligner = "ALIGN_COUNT" } duration = "60s" # ログベースの指標にデータがないときにアラートを止める evaluation_missing_data = "EVALUATION_MISSING_DATA_INACTIVE" } } alert_strategy { # アラート作成時のみ通知を送信する notification_prompts = [ "OPENED" ] } documentation { subject = "ジョブ($${resource.label.job_name})の実行に失敗しました" content = <<-EOT ## Google Cloudプロジェクト $${resource.label.project_id} ## Cloud Runジョブ名 $${resource.label.job_name} ## アラートの説明 Cloud Runジョブ**($${resource.label.job_name})**の実行に失敗しました。 ジョブの実行ログおよびTerraformテンプレートの設定値を確認してください。 EOT mime_type = "text/markdown" } } Terraform コード解説 ローカル変数 当記事では、通知対象のジョブ名や通知先メールアドレスなどの情報は locals に定義しています。 locals { project_id = "sample-project" # プロジェクトID location = "asia-northeast1" # ジョブが存在するリージョン job_name = "sample-job" # ジョブ名 notification_email = "sample@g-gen.co.jp" # 通知先メールアドレス } 当記事のコードをモジュール化し、複数のジョブで同様のアラート通知を設定するようなケースでは、これらの変数は variables で定義し、モジュールの外から値を渡せるようにするのがよいでしょう。 ログベースの指標 ログベースの指標 として、通知対象ジョブのエラーログを取り込む Cloud Monitoting 指標を定義します。 ログベースの指標では、Cloud Logging の特定のログエントリの数などを Cloud Monitoring の指標として記録することができます。 resource "google_logging_metric" "this" { project = local.project_id name = "error_metric_for_$ { local.job_name } " # Cloud Logging のクエリを定義 filter = <<-EOT severity>=ERROR resource.type="cloud_run_job" resource.labels.job_name="$ { local.job_name } " resource.labels.location="$ { local.location } " logName=~"cloudaudit.googleapis.com%2Fsystem_event" EOT metric_descriptor { metric_kind = "DELTA" value_type = "INT64" } } ログベースの指標としてエラーログを取得するために、Cloud Logging のクエリ言語を使用してログをフィルタリングします。このクエリを filter の値として定義しています。 Cloud Logging に出力されるジョブ実行エラーログは以下のフィールドが含まれています。これをクエリに使用します。 フィールド名 値 severity ERROR resource.type cloud_run_job resource.labels.job_name ジョブの名前 resource.labels.location ジョブが存在するリージョン logName projects/<プロジェクトID>/logs/cloudaudit.googleapis.com%2Fsystem_event Cloud Run jobs のジョブ実行エラー時のログ 参考 : Log-based metrics overview 参考 : Cloud Loggingのクエリ言語の構文を徹底解説 - G-gen Tech Blog 参考 : google_logging_metric (Terraformドキュメント) 通知チャンネル Cloud Monitoring で作成されるアラートの通知先として 通知チャンネル を設定します。 当記事ではメール通知を設定しますが、通知先チャンネルとしては Slack や SMS、Pub/Sub などを設定することも可能です。 resource "google_monitoring_notification_channel" "this" { project = local.project_id display_name = "ジョブエラー通知用メールアドレス" type = "email" force_delete = false labels = { email_address = local.notification_email } } 参考 : Create and manage notification channels 参考 : google_monitoring_notification_channel (Terraformドキュメント) アラートポリシー 実際にアラートを作成するリソースである Cloud Monitoring の アラートポリシー を設定します。 resource "google_monitoring_alert_policy" "this" { project = local.project_id display_name = "Error Alert for $ { local.job_name } " # アラートの表示名 combiner = "OR" severity = "ERROR" # アラートの重大度(CRITICAL / ERROR / WARNING) enabled = true notification_channels = [ google_monitoring_notification_channel.this.id ] conditions { display_name = "Error Condition for $ { local.job_name } " condition_threshold { # filterのmetric.typeにログベースの指標を指定(resource.typeの指定も必須) filter = "resource.type=\"cloud_run_job\" AND metric.type=\"logging.googleapis.com/user/$ { google_logging_metric.this.name } \"" comparison = "COMPARISON_GT" # threshold_value の値よりも大きいときにアラート作成 threshold_value = 0 aggregations { alignment_period = "60s" per_series_aligner = "ALIGN_COUNT" } duration = "60s" # ログベースの指標にデータがないときにアラートを止める evaluation_missing_data = "EVALUATION_MISSING_DATA_INACTIVE" } } alert_strategy { # アラート作成時のみ通知を送信する notification_prompts = [ "OPENED" ] } documentation { subject = "ジョブ($${resource.label.job_name})の実行に失敗しました" content = <<-EOT ## Google Cloudプロジェクト $${resource.label.project_id} ## Cloud Runジョブ名 $${resource.label.job_name} ## アラートの説明 Cloud Runジョブ**($${resource.label.job_name})**の実行に失敗しました。 ジョブの実行ログおよびTerraformテンプレートの設定値を確認してください。 EOT mime_type = "text/markdown" } } L15~L16 ジョブ実行失敗時のエラーログが1つでも記録されたときにアラートを作成したいため、 conditions.condition_threshold.comparison の値を COMPARISON_GT (閾値より上)、 conditions.condition_threshold.threshold_value の値(閾値)を 0 に指定します。 L25 conditions.condition_threshold.evaluation_missing_data の値を EVALUATION_MISSING_DATA_INACTIVE にすることで、ログベースの指標にデータが記録されないときにアラートを止める(復旧させる)ようにしています。 これは、今回設定しているログベースの指標が「Cloud Logging にジョブ失敗のエラーログが記録されたとき」だけ取得されるものであり、 エラーログがないときは値が何も取得されない ため、アラートが一度作成されると復旧しない(指標の値として0が記録されないと復旧しない)ためです。 もし、エラーの対処後にアラートを手動で復旧させたい場合は、 conditions.condition_threshold.evaluation_missing_data は記述しないか、値に EVALUATION_MISSING_DATA_NO_OP を設定します( 参考 )。 L29~L32 alert_strategy.notification_prompts では OPENED を指定し、アラートの作成時のみメール通知を送信するように設定しています。 ここで CLOSED も一緒に記述した場合、アラート復旧時にもメール通知が送信されます。しかし、先述したように今回設定しているログベースの指標には復旧時の手がかりがないため、アラートは作成後すぐに止める(復旧させる)ように設定しています。この場合、アラート作成のメール通知のすぐ後に復旧時のメール通知も送信されてしまうため、復旧時の通知はあえて行わないようにしています。 L34~L48 documentation にはアラート通知メールの本文(ドキュメント)を定義できます。 ドキュメントはマークダウンで記述することができ、 ${varname} の形式で変数を使用することもできます。これにより、アラート対象となっているジョブのプロジェクト ID やジョブ名など、そのアラート固有の情報をドキュメントに含めることができます。 参考 : Alerting overview 参考 : Annotate notifications with user-defined documentation - Variables in documentation 参考 : google_monitoring_alert_policy (Terraformドキュメント) 動作確認 アラート通知対象のジョブを失敗させ、アラートを作成してみます。 Cloud Run のジョブを失敗させる Google Cloud コンソールの ポリシーの詳細 画面でアラートポリシーを確認すると、ジョブ実行の失敗を示すエラーログがログベースの指標として記録されています。アラート閾値は 0 であり、アラート作成条件は 閾値よりも上 のため、Cloud Monitoring によってアラートが作成されます。 ジョブ失敗時のエラーログがログベースの指標に記録されている 同じく ポリシーの詳細 画面の インシデント 欄に、作成されたアラートが表示されています。 アラートポリシーによって作成されたアラート 通知チャンネルに設定したメールアドレスに対しては、アラートポリシーによって作成されたアラートメールが alerting-noreply@google.com から送信されています。 Cloud Monitoring のアラートメール メール本文は以下のようになっており、アラートポリシー作成時にマークダウンで記述したドキュメントのほか、対象のアラートおよびエラーログのリンクも含まれています。 アラートメールの本文 佐々木 駿太 (記事一覧) G-gen最北端、北海道在住のクラウドソリューション部エンジニア 2022年6月にG-genにジョイン。Google Cloud Partner Top Engineer 2025 Fellowに選出。好きなGoogle CloudプロダクトはCloud Run。 趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。 Follow @sasashun0805
G-gen の杉村です。2025年10月のイチオシ Google Cloud(旧称 GCP)アップデートをまとめてご紹介します。記載は全て、記事公開当時のものですのでご留意ください。 はじめに Cloud Run functions 第1世代を第2世代にアップグレードするツール (Preview) Google チャットで、スラッシュ(/)でアプリが呼び出せるように Google Gen AI SDK に C# 版が登場(Preview) gemini-2.5-flash-image(通称 Nano Banana)が一般公開(GA) Google Cloud の AI Applications が「Vertex AI Search」に名称変更 Gemini in Chrome が Google Workspace ユーザー向けに一般公開(GA) Looker の Private IP インスタンスで Connected Sheets が利用可能に Google Meet で画面上にタイマーを表示できるように Gemini 2.5 Computer Use model がプレビュー公開 Colab Enterprise で post-startup script が設定できるように(Preview) BigQuery でクエリ実行時に使用する予約(reservation)を明示的に指定可能に Google が Gemini Enterprise を発表 Secret Manager が GKE の Kubernetes Secrets と自動同期可能に(Preview) Google Meet で AI によるバーチャルメイクアップが登場 Gmail にスケジュールを自動調整する Help me schedule 機能が登場 Google スプレッドシートの AI 関数が Google 検索グラウンディングに対応 Google が新しい動画生成モデル Veo 3.1 と Veo 3.1 Fast を公開 Veo 2 で動画内へのオブジェクト追加や削除が可能に(Preview) Cloud Armor の階層型セキュリティポリシーが Preview → GA Looker Studio Pro で Slack へのレポート共有が Preview 公開 BigQuery Studio の UI に新機能が追加 Google Workspace に「Business Continuity エディション」が登場 Cloud Run の Direct VPC egress で VPC Flow Logs と Private NAT がサポート Ask Gemini in Google Meet が英語で利用可能に BigQuery で conversational analytics への Early access が募集開始 Cloud SQL で複数のアップデート AlloyDB for PostgreSQL で、時系列予測機能が登場(Preview) Google Meet に待合室(waiting rooms)機能が登場 Gemini アプリが LaTeX フォーマット生成・PDF 出力に対応 Gemini アプリで Google スライドのプレゼンテーションが生成可能に BigQuery に Data Engineering Agent が登場(Preview) BigQuery で3つの「Managed AI functions」が Preview 公開 Application Load Balancers で Authorization policy が一般公開(GA) BigQuery で reservation groups が利用可能に(Preview) Google Workspace の監査ログイベントのスキーマが変更 請求先アカウントの異常検知(Anomalies)が Preview → 一般公開(GA) Google Cloud 公式ドキュメントのドメインが変更 はじめに 当記事では、毎月の Google Cloud(旧称 GCP)や Google Workspace(旧称 GSuite)のアップデートのうち、特に重要なものをまとめます。 また当記事は、Google Cloud に関するある程度の知識を前提に記載されています。前提知識を得るには、ぜひ以下の記事もご参照ください。 blog.g-gen.co.jp リンク先の公式ガイドは、英語版で表示しないと最新情報が反映されていない場合がありますためご注意ください。 Cloud Run functions 第1世代を第2世代にアップグレードするツール (Preview) Upgrade 1st gen functions to Cloud Run functions (2025-10-01) Cloud Run functions 第1世代を第2世代にアップグレードするツールが公開(Preview)。 第1世代の HTTP 関数と Pub/Sub 関数に対応。関数を第2世代として複製し、トラフィックを新しい第2世代関数にリダイレクトする。最終コミット前にロールバックもできる。 Google チャットで、スラッシュ(/)でアプリが呼び出せるように Quickly find and use Google Chat apps and Workspace actions with the redesigned integrations menu (2025-10-01) Google チャットで、スラッシュ(/)でアプリが呼び出せるように。 /poll のようにしてアプリを呼び出せる。2025年9月29日から15日間かけて順次ロールアウトされる。 Google Gen AI SDK に C# 版が登場(Preview) Vertex AI release notes - October 02, 2025 (2025-10-02) Google Gen AI SDK に C# 版が登場(Preview)。 Gemini などへの API リクエストをラップするクライアントライブラリ。これまでは Python、Java、Go、Node.js 版などが存在していた。 gemini-2.5-flash-image(通称 Nano Banana)が一般公開(GA) Vertex AI release notes - October 02, 2025 (2025-10-02) gemini-2.5-flash-image(通称 Nano Banana)が Preview から一般公開(GA)。 プロンプトからの画像生成 複数画像を参照しての生成 マルチターンでの画像編集 GA に伴いコストに優れるバッチ推論も可能になった。 Google Cloud の AI Applications が「Vertex AI Search」に名称変更 Vertex AI Search release notes - October 02, 2025 (2025-10-02) Google Cloud の AI Applications が「Vertex AI Search」に名称変更。今回で、4回目の名称変更。 Generative AI App Builder → Vertex AI Search and Conversation → Vertex AI Agent Builder → AI Applications → Vertex AI Search かつて AI Applications の中に Search と Agents が含まれていたが、Agents が Conversational Agents として独立して、Search も1プロダクトとして独立した形。 Gemini in Chrome が Google Workspace ユーザー向けに一般公開(GA) Use the Gemini in Chrome AI browsing assistant, now generally available (2025-10-03) Gemini in Chrome が Google Workspace ユーザー向けに一般公開(GA)になった。 ただし現在はまだ米国在住のユーザーしか使えない。GWS アプリやブラウザの最大10個のタブをコンテキストとして読み取って AI がタスクを実行。要約、質問への回答等が可能。 Looker の Private IP インスタンスで Connected Sheets が利用可能に Looker Connected Sheets Private IP support (2025-10-06) Looker(Google Cloud Core)の Private IP インスタンスに、Connected Sheets からアクセスできるようになった。 管理者側で有効化が必要。2025年10月6日から15日間かけて順次ロールアウト。 Google Meet で画面上にタイマーを表示できるように Set timers in Google Meet on the web (2025-10-07) Google Meet で画面上にタイマーを表示できるようになった。 会議や登壇でのユースケースが考えられる。2025年10月6日から3日間かけてロールアウト。 Gemini 2.5 Computer Use model がプレビュー公開 Introducing the Gemini 2.5 Computer Use model (2025-10-07) Gemini 2.5 Computer Use model がプレビュー公開。 AI が PC 画面のクリック、入力、スクロールなどの操作を行えるようになる。クリック箇所などの座標が JSON 形式レスポンスに含まれる。アクション自体は Playwright 等でプログラム側で実行。Google AI StudioとVertex AIで使用可能。 参考 : Computer Use model and tool ‐ Google Cloud Colab Enterprise で post-startup script が設定できるように(Preview) Use a post-startup script (2025-10-07) Colab Enterprise で post-startup script が設定できるように(Preview)。 post-startup script は、ランタイムに設定する。ランタイム起動時に自動的に必要なパッケージをインストールなどが可能。スクリプトは Cloud Storage バケットに格納するか HTTPS エンドポイント経由で取得。 BigQuery でクエリ実行時に使用する予約(reservation)を明示的に指定可能に Flexibly assign reservations (2025-10-08) BigQuery でクエリ実行時に使用する予約(reservation)を明示的に指定する機能が Preview → GAになった。 これにより1つのプロジェクトで、クエリごとにオンデマンドを使うか Editions を使うかを切り替えられる。SQLの記述で指定することもできる。 参考 : BigQuery Editionsを徹底解説 - プロジェクト内での予約の使い分け - G-gen Tech Blog Google が Gemini Enterprise を発表 Introducing Gemini Enterprise (2025-10-10) Google が Gemini Enterprise を発表。 既存サービス Google Agentspace が改称され、機能追加とともにライセンス体系も一新。以前の Google Agentspace との大きな違いは以下。 Gemini Code Asssit ライセンスが付与されたこと ノーコードエージェント開発(Agent Designer)が下位プランにも付属 以下の記事も参照。 blog.g-gen.co.jp Secret Manager が GKE の Kubernetes Secrets と自動同期可能に(Preview) Synchronize secrets to Kubernetes Secrets (2025-10-13) Secret Manager を GKE の Kubernetes Secrets と自動同期する機能が Preview 公開。 環境変数方式でもマウント方式でも利用できる。従来からあった Secret Manager add-on だとマウント方式でしか利用できなかった。 Google Meet で AI によるバーチャルメイクアップが登場 AI-powered makeup in Google Meet (2025-10-13) Google Meet で AI によるバーチャルメイクアップが登場。 コップなどで顔が少し隠れても崩れない。12種類から選択可能。Google Workspace Business Standard 以上で利用可能。 2025年10月8日から15日かけて順次ロールアウト。 Gmail にスケジュールを自動調整する Help me schedule 機能が登場 Use Help me schedule to easily set up a meeting time over email (2025-10-14) Gmail に Help me schedule 機能が登場。 Gemini がメールの文章を読み取り、スケジュール調整が必要な場合、カレンダーから時間帯を自動的に提案してくれる。 即時リリース組織では2025年10月13日から15日間かけて順次ロールアウト。 Google スプレッドシートの AI 関数が Google 検索グラウンディングに対応 The AI function in Google Sheets is now enhanced with Google Search results for more up-to-date answers (2025-10-14) Google スプレッドシートの AI 関数が Google 検索によるグラウンディングをするようになった。 LLM が知らない最新情報をもとに生成が可能になる。2025年10月15日から15日間かけて順次ロールアウト。 Google が新しい動画生成モデル Veo 3.1 と Veo 3.1 Fast を公開 Veo 3.1 preview (2025-10-15) Google が新しい動画生成モデル Veo 3.1 と Veo 3.1 Fast を公開。 Gemini アプリで回数制限付きで無料で使える。Vertex AI や Gemini AI Studio から API 経由で使用可能。API 利用は料金に注意。 参考動画 : Google Gemini App 公式 X アカウント Veo 2 で動画内へのオブジェクト追加や削除が可能に(Preview) Insert objects into Veo videos (2025-10-15) 従来からある動画生成モデル Veo 2 で、動画内への物体の追加や削除が可能になった(Preview)。 Cloud Armor の階層型セキュリティポリシーが Preview → GA Hierarchical security policies overview (2025-10-15) Cloud Armor(フルマネージド型 WAF)の階層型セキュリティポリシーが Preview → 一般公開(GA)。 組織レベルまたはフォルダレベルで「階層型バックエンドセキュリティ ポリシー」を作成すると、配下のすべての「グローバル外部アプリケーションロードバランサ」にポリシーが適用される。 Google Cloud Armor Enterprise(Annual または Paygo)が必要。階層型ポリシーが適用されたプロジェクトは自動的に Paygo で登録されてしまうので、費用に注意が必要。 Looker Studio Pro で Slack へのレポート共有が Preview 公開 Share and schedule reports with Slack (2025-10-16) Looker Studio Pro で Slack へのレポート共有が Preview 公開。 チャンネルやユーザーにレポートをスケジュール配信できる。Looker Studio 無償版では不可 BigQuery Studio の UI に新機能が追加 BigQuery release notes - October 16, 2025 (2025-10-16) BigQuery Studio の UI に新機能が追加。 左部の Explorer ペインが Explorer、Classic Explorer、Git repository の3セクションに 新 Explorer はツリー式表示ではなくディレクトリ風表示。検索も可能で、パンくずリストあり。 ジョブ履歴は、かつては画面下部分に表示。今後は details のタブとして表示 リソース詳細は基本的に同じタブの中に表示される Ctrl + click して新しいタブで開くか、タブ名をダブルクリックしてタブを固定すればタブの中身が置き換わらない 最近閉じたタブ、なども表示可能 その他細かい変更 Google Workspace に「Business Continuity エディション」が登場 Introducing Business Continuity editions: Support business continuity and resilience for enterprise customers (2025-10-17) Google Workspace に「Business Continuity エディション」が登場。 Microsoft 365 ユーザー等向けのバックアップとして使用可能。メール、カレンダー、ドライブ、チャットなどをデータ同期して、何かあった際のバックアップとして利用できる。 Cloud Run の Direct VPC egress で VPC Flow Logs と Private NAT がサポート Cloud Run release notes - October 21, 2025 (2025-10-21) Cloud Run の Direct VPC egress で VPC Flow Logs と Private NAT がサポートされた。VPC Flow Logs は Preview、Private NAT 対応は GA(一般公開)。 これまでは、Cloud Run から Direct VPC egress 経由で VPC に出ると、VPC Flow logs は記録されなかった。また、Private NAT の利用は不可だった。 Ask Gemini in Google Meet が英語で利用可能に Ask Gemini in Google Meet coming to Workspace enterprise customers (2025-10-22) Google Meet 内で AI アシスタント Gemini に質問したり要約を依頼できる機能 Ask Gemini in Google Meet が利用可能になった。ただし、現在のところ英語版のみ。対象エディションは Enterprise Standard および Enterprise Plus。 途中参加した議論の要約、重要なポイントやアクションアイテムのリストアップなどが可能。 BigQuery で conversational analytics への Early access が募集開始 BigQuery release notes - October 23, 2025 (2025-10-23) BigQuery で conversational analytics(会話形分析)への Early access(早期アクセス)が募集開始。 既存の Data Canvas 等との違いはあまり情報がないが、新しい機能と思われる。応募フォーム経由で組織やプロジェクト ID を添えて申し込む。 Cloud SQL で複数のアップデート Cloud SQL for PostgreSQL release notes - October 23, 2025 (2025-10-23) (1) Cloud SQL で新しいマシンシリーズが使用可能になった。 Enterprise エディション : N4 マシンシリーズが使用可能に Enterprise Plus エディション : C4A マシンシリーズが使用可能に 使えるストレージのタイプも、マシンシリーズに依存して変わるため注意。これまでより選択肢の幅が広がった。 (2) Cloud SQL for PostgreSQL で、メモリ使用量の急増をプロアクティブに検知して、Connection を強制終了して OOM(out-of-memory)を回避するようになった。キャンセルさあれたクエリはログで確認できる。 AlloyDB for PostgreSQL で、時系列予測機能が登場(Preview) Perform time-series forecasting (2025-10-23) AlloyDB for PostgreSQL で、時系列予測機能が登場(Preview)。 Vertex AI のリモートモデルを SQL から呼び出す形で、予測を生成できる。 Google Meet に待合室(waiting rooms)機能が登場 Introducing a new waiting rooms experience in Google Meet (2025-10-23) Google Meetに待合室(waiting rooms)機能が登場。 入室承認前に参加者を待機させられる他、管理者から待機者にメッセージを送れる。予定作成時に待合室をオンにしておくと使える。2025年10月23日から15日間かけて順次ロールアウト。 Gemini アプリが LaTeX フォーマット生成・PDF 出力に対応 New LaTeX features in the Gemini app (2025-10-27) Gemini アプリが LaTeX フォーマット生成・PDF 出力に対応。 LaTeX とは、印刷物や PDF 等の組版用フォーマット。Gemini アプリに「PDF化して」と指示することで、Canvas で作ったページを LaTeX 化すると、プレビュー画面でPDF として表示したり、ダウンロードできる。 Business Starter 以上で既に使用可能。 Gemini アプリで Google スライドのプレゼンテーションが生成可能に Generate presentations in the Gemini app (2025-10-28) Gemini アプリで Google スライドのプレゼンテーションが生成できるようになった。Canvas で生成して Google スライドにエクスポート。 Business Starter 以上の Google Workspace エディションや Google AI Pro で利用可能。2025年11月12日までに順次ロールアウト。 BigQuery に Data Engineering Agent が登場(Preview) Use the Data Engineering Agent to build and modify data pipelines (2025-10-27) BigQuery に Data Engineering Agent が登場(Preview)。 Dataform もしくは BigQuery pipelines 形式のデータパイプラインを自然言語指示により生成。エージェントはデータセットやテーブルのメタデータを読み込んで解釈する。 BigQuery で3つの「Managed AI functions」が Preview 公開 Managed AI functions (2025-10-28) BigQuery で3つの「Managed AI functions」が Preview 公開。バックエンドでは生成 AI モデル Gemini を使用。 AI.IF (WHERE 句で使用してフィルタリング) AI.SCORE (スコアリング・ランク付け) AI.CLASSIFY (分類) Application Load Balancers で Authorization policy が一般公開(GA) Authorization policy overview (2025-10-28) Application Load Balancers で Authorization policy が一般公開(GA)。 Load Balancer に mTLS 等に基づく認可ルールを設定できる。接続元が Compute Engine VM や GKE 等であればサービスアカウントやタグによる認証もサポート。 BigQuery で reservation groups が利用可能に(Preview) Prioritize idle slots with reservation groups (2025-10-29) BigQuery の予約(reservation)でアイドルスロットを優先的に共有させるグルーピングが可能に(Preview)。 通常、アイドルスロットは管理プロジェクト内で平等に分配されるが、グループを設定するとグループ内で互いに優先的にスロットをシェアするようになる。 Google Workspace の監査ログイベントのスキーマが変更 Enhanced admin audit log events (2025-10-29) Google Workspace の監査ログイベントのスキーマ変更が予定されている。分析などに使っている場合は要確認。 2025年10月29日から15日間かけてロールアウト。フィールド名や値表記などが変更される。Google ドライブ、Gmail などのログに影響。 請求先アカウントの異常検知(Anomalies)が Preview → 一般公開(GA) View and manage cost anomalies (2025-10-30) 請求先アカウントの異常検知(Anomalies)機能が Preview → 一般公開(GA) 通常の使用パターンから逸脱した課金スパイクを検知・通知。以下の記事も参照。 blog.g-gen.co.jp Google Cloud 公式ドキュメントのドメインが変更 Announcing docs.cloud.google.com: The new home for Google Cloud documentation (2025-10-30) Google Cloud の公式ドキュメントのドメインが変更される。 従来 : https://cloud.google.com/〜 今後 : https://docs.cloud.google.com/〜 URL のうち、変更になるのは、原則的にはドメイン名の部分のみ。旧リンクはしばらく存続し、今後数週間以内に、新ドメインへのリダイレクトが始まるとのこと。 またドキュメントへの他言語への翻訳が迅速になる、とも発表された。Google はドキュメント作成や翻訳に AI を使用していることを公表している。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
当記事は、ライオン株式会社様と株式会社G-genの 技術情報発信コラボレーション企画 『SAPと連携するデータ分析基盤の実践とTips』で執筆されたものです。 はじめに 当企画について 自己紹介 当記事について 概要 データマネジメントのプロセス アジリティ、ガバナンス、利活用促進のバランス 設計 3つのレイヤ DataLake DWH Datamart データカタログとメタデータ 実現するためのプロダクト Dataform、BigQuery Looker まとめ はじめに 当企画について 当記事は株式会社 G-gen 様とライオン株式会社の技術ブログ相互寄稿企画で執筆されたものです。 ライオン側からは、 G-gen 様のご協力のもと、Google Cloud 環境に構築を進めているデータ基盤に関連した以下3つの記事をシリーズでお届けします。 ライオンのデータ基盤構築とSAPデータ活用体制 ライオンのデータマネジメント 👈 当記事 ライオンのデータ基盤における分析環境 G-gen Tech Blog の記事一覧 blog.g-gen.co.jp LION Digital Inside の記事一覧 zenn.dev 自己紹介 データサイエンスグループのハマノです。 もともとデータサイエンティストとしてライオンに入社し、データ分析を行っていましたが、データ基盤の必要性を感じ、入社後はガッツリとデータマネジメントに携わるようになりました。とりあえずデータを準備するだけに留まらず、継続的に全社的な業務が回るように、設計・構築・運用を踏まえたエンジニアリングを行うところが面白いなと思っています。 当記事では、ライオンで行っているデータマネジメントについて紹介したいと思います。 当記事について ライオンでは2022年5月より基幹システムとして SAP S/4HANA (以下、SAP)を利用していますが、SAP に蓄積されたデータにまとめてアクセスする手段は、各部門の業務で用いるいくつかの帳票ツール(BO やアドオン)に限られており、部門ごとにサイロ化している傾向がありました。そのため、様々なデータの取得・解析が必要なデータサイエンティストや、自部門の業務の改善をしようとする業務担当者が必要なデータにスムーズにアクセスすることが困難な状態でした。 当記事は、データ基盤を構築することで、 データの取得に関するボトルネックを解消 し 意思決定までのプロセスをスムーズに することを目的とした活動について記載しています。 当企画の1つ前の記事である フクヤマからの投稿 で共有いたしましたが、我々は当初、SAP その他の業務システム由来のデータをインポートする複数のテンプレート群を持つデータ分析基盤構築向けのリファレンスアーキテクチャである Google Cloud Cortex Framework の利用を検討しました。しかし、アドオンテーブルなどを含む当社での SAP の実装においては、必要なデータを含むテーブルに対するテンプレートのカバー率が低く、Cortex Framework を効果的に使えないことが判明しました。 我々はこの事実を受け、Cortex Framework のテンプレートに依存しないデータモデルの設計と実装を行うことを選択しました。ここからは、我々がデータマネジメントをどう定義し、どんなツールを使って実現するかを検討した話を簡単にご紹介します。 概要 データマネジメントのプロセス データマネジメントについては、一般的には DMBOK などで詳細に定義されていますが、少しシンプルにすると、以下の3つのプロセスに分解される活動です。 アジリティの確保 ガバナンスの確保 利活用の促進 まず アジリティ は、すぐにデータを利用出来る状態にすることです。データ基盤は、基幹システムとの依存関係を切り離し、独自システムとして構築します。リスクやサービスレベルを変えることで、開発スピードを上げます。また、クラウドサービスを使って、スケーラブルな設計をします。 次に ガバナンス は、品質の担保やセキュリティ面の考慮です。ユーザーが懸念なくデータを利活用できるよう準備します。 利活用の促進 は、BI や AI などの分析ツールを提供し、データを使いやすくするプロセスです。ユーザーが、データを利活用できるために、業務プロセスでどのように意思決定を行うかを理解した上で、データを活用する機能やデータそのものを適切に提供することが重要となります。 アジリティ、ガバナンス、利活用促進のバランス 上に挙げたアジリティ、ガバナンス、利活用の促進はどれも重要な要素ですが、実のところこれらは本質的にトレードオフの関係にあり、バランスを取りながら進める必要があります。 ユーザー部門主導でのデータ利活用を優先して、既存の Excel ファイルなどをかき集めてアウトプットをする仕組みを作ったものの、運用に関する考慮をしておらず、担当者の異動や業務の見直しなどによりファイルが作成されなくなることや、人材リソースの不足でプロジェクトを中断するケースなどは、コンサルティング会社が主導した場合でも発生するといった話を耳にすることがあります。 逆に、外部の会社にデータ基盤の構築を委託し、その会社がつくったカッチリと決めた設計書、運用プロセスでは、ビジネスの変化に柔軟に対応できず、担当者のスピード感と合わず、上手く回ってないというケースもよく耳にします。 他にも、データの移動と保管、整合性維持にかかるコストを節約することを目論み、データカタログを整備しデータ仮想化技術によって各システムから動的にデータを取得するソリューションを導入すれば、労せずにデータ基盤が手に入るという構想のもと始めたプロジェクトが、主要システムのスキーマ取得すら試行錯誤続きで満足にできず、接続ができたとしても必要なパフォーマンスが出ず使い物にならなかった、といったような話も聞いたりします。 これらの望まざる状況を避けるためには、トレードオフを見極め、自社をよく知る担当者が、目指すべきデータマネジメントを定める必要がありますし、同時に状況に合わせて見直していく必要もあります。これらのプロセスは、メンバーのモチベーションを高めるためにも重要な要素であると考えられます。 とはいえ初期の状態では、何を可視化するか、誰がどういう意思決定を行うか、等が決まっていない、あるいは分かっていないケースも多いので、BI で出来ることのイメージを膨らませてもらうために、仮に設計したダッシュボードにより「可視化で何が出来るか」についての共有することも必要です。 当社でも、まずはイメージを持ってもらうために、汎用的なデータ基盤を目指し、アジリティ(データ準備)に重きを置いたデータマネジメントを目指すことにしました。 SAP のデータを整備から着手することになりましたが、ABAP が読めないことに加えて、生成 AI でも効率的に変換できなかったため、SAP の定義書を見ながら、SQL で再現しました。不明点は、社内の担当者・導入ベンダーに確認したり、Cortex Framework の SQL を参考にしたりしながら進めています。 設計 3つのレイヤ まずは、データベース設計部分の話です。ライオンのデータ基盤では、アジリティを高めるために、データベースの階層を以下の3レイヤに分けて考えています。 DataLake DWH Datamart DataLake DataLake は、SAP のデータを同期したテーブルとしています。Fivetran の連携機能により、最新断面でのデータや履歴データを連携しています。 Fivetran の機能により、履歴データでは、Slowly changing dimension Type2 でのフォーマットで連携することを設定できるので、データの性質に合わせて連携しています。 DWH DWH は、BI の可視化軸に合わせて、スタースキーマの設計をするべきところですが、たいていの場合は、BI のユースケースが定まっていないので、設計できません。 今回は、SAP のデータが厳密な第3正規化で設計された ER モデルであることから、スタースキーマに近づくことを見据えて、Datamart 作成のための中間テーブルを DWH レイヤで作成していて、マスタテーブルの整備を中心に行いました。ファクトテーブルでは、あまりフィルタ条件などは入れずに、変化の少ないビジネスロジックだけを実装しています。 将来的には、BIに合わせたスタースキーマの設計など、このレイヤの設計に重点を置く予定です。 正直、今は、そこまでキレイなものではなく、現段階では「後悔の塊」のようなレイヤになっています。 Datamart Datamart には、DWH に対して、変化する可能性もあるロジックを実装しています。また、Datamart では、とりあえず利用しそうな列名を詰め込んだ大福帳形式(OBT: One Big Table)を採用し、汎用的に利用できるデータを準備しています。こうすることで、依頼者からの依頼に対して、素早く対応できるようにしています。 OBT は、BI や集計の目的に合わせたテーブルとして、様々なテーブルを結合して作成しています。 例えば、会計用 OBT だと、様々なテーブルを結合することで、会計年月/勘定を計上した組織 / 勘定を計上した組織 / 勘定種別(総売上、売上原価、販促費など)/ 金額のようなカラム名を持つ1つのテーブルにすることです。1つのテーブルにすることで、パフォーマンスのリスク、テーブル結合ミスなどのリスクを減らし、スムーズに利用することが出来ます。 とはいえ、OBT は良いことばかりでなく、依頼に合わせて様々なカラムを追加することが往々にして発生するため、大なり小なりデータ品質や保管効率は劣化することになりますし、BigQuery をもってしても(クラシックな RDBMS ほどではないにせよ)パフォーマンス・運用の問題が出ることはあります。 これらの設計も BI や仕様に合わせて、今後、チームで協力して細かく見直していきたいところです。 データカタログとメタデータ データマネジメントといえば、データカタログなどのメタデータ管理が先行してしまうことも多いと思います。設計書などにも言えることですが、作成するドキュメントは「誰がどういう時に利用するものか?」「本当に必要か?」を問うことで、やらないコトを決めて開発の加速にリソースを集中することが望ましいと考えています。 まず、データ基盤導入では、以下の2段階のフェーズに分けて実際の行動を整理します。 Phase1: まだ利用用途が固まってない導入 PoC フェーズ Phase2: 利用用途が固まり、データ活用を民主化し、ユーザーでの利用を加速するフェーズ Phase1 では、利用者の大半は「BI 画面を見るだけの人」で、データカタログを必要とする人は、一部のデータサイエンティストやデータエンジニアです。 データベースに直接アクセスする人は少人数で、基礎知識のあるユーザーがほとんどです。また、このフェーズでデータサイエンティストが使うデータの種類はそれほど多くはないものの、外部システムからデータ基盤にデータを連携・蓄積する工程はまとめて行う方が効率が良いため、実際には使われないテーブルやカラムが数多く存在するという状況が発生します。加えて、この時点ではユースケースが定まっておらず、データモデルを決め切れていないため、テーブル構成も流動的で、大きな変更が発生する可能性も高いと言えます。このような状態で厳格に様式を定めた詳細なデータカタログを作ったとしても、大きな変更が発生して手戻りにつながることから、データカタログやメタデータの整備に過剰に注力することなく、口頭レベル・簡易ドキュメントでデータの仕様を共有する方が効率的と考えます。 さらに、このフェーズで、多くの「BI 画面を見るだけの人」は、データ分析をすることが目的ではなく、ダッシュボード上の可視化されたグラフを見て意思決定するためにデータ基盤を利用する人です。このようなユーザーはデータカタログを必要としていませんので、この時点で慌ててデータカタログを整備する必要はありませんし、将来に向けてデータカタログの整備を始める場合でも、スタート時は Looker などの BI ツールを使って、最低限のデータカタログ・アクセス権を大まかに管理するくらいで十分と感じています。 Phase2 では、利用用途が固まり、データモデルを設計する段階になります。データモデルが固まることで、DWH や Datamart をどのように定義するべきかを定めることができます。例えば、スタースキーマなどの設計に従って、データモデルが整備されていると、このフェーズからデータベースを使い始めるユーザーが扱いやすいものになりますし、DWH や Datamart のデータカタログの整備を積極的に行うことで、利用者が自主的にデータを活用することを促進できます。 もちろん、フェーズが進んでいくごとに、ユーザーのポートフォリオも変わっていくので、データカタログの必要性と費用対効果を意識しながら徐々に整備を進めて行くのが良いと考えています。 実現するためのプロダクト Dataform、BigQuery 今後、DWH、Datamart の設計を見直すと、たくさんのテーブルが作成されることが予想され、これらのテーブル管理、処理のオーケストレーションの管理が必要になります。つまり、テーブルがたくさんできることで、それらの依存関係も複雑になるので、依存関係を可視化して、変更の影響が自動で整理できるようになっていることが求められます。 また、増分更新や差分更新は、初回実行時と差分実行時の処理を分ける必要がありますが、複数のメンバーでそれぞれのテーブル・処理に対して都度コードを書くようになっていると、効率が悪いだけでなく、コードの書き方が人に依存してしまいがちでメンテナンスができなくなります。Dataform では、 when 関数、 pre_operations ブロックがついているので、テーブルや処理の違いを吸収し汎用的なコードでの実装をサポートしてくれます。JavaScript で拡張することも出来るので、共通して使いたい変数の実装など、痒い所に手が届きますし、これが無料で使えるのが驚きです。 GitHub と連携したスケジュール実行も可能です。 我々は、このような利点を踏まえ、新データ基盤内の ELT ツールとして Dataform を採用しました。 BigQuery のスケーラブルなリソースに加え、内部のデータ操作は基本的に SQL を中心に完結しますので、この処理を効率的に管理する ELT ツールの Dataform を活用することで安価で効率的な仕組み作りを実現できています。 整理すると、Dataform は オーケストレーション機能 依存関係の可視化 when 関数、 pre_operations ブロックなどの拡張機能 GitHub 連携 スケジュール実行 などの機能があり、DWH、Datamart の管理を効率化するツールになっています。 Looker Google Cloud で利用できる各種 BI ツールの中でも、Looker は特に使いやすいプロダクトです。 ユーザーは、合計の操作が必要な利益などの指標、割り算の操作が必要な利益率などの指標の可視化の要望があり、可視化する粒度が変わる度に計算が必要な指標は BI 側にロジックを実装する必要があります。 管理者や高度な分析を行うデータサイエンティストにとっては、それらの指標を LookML でコードとして定義し、extends 機能により再利用できるようにすることで、DRY(Don't Repeat Yourself)の原則に従った設計が可能になります。また一般ユーザーは、GUI で一般的なエンタープライズ向けの BI と同じような操作で分析が可能です。 さらに、いわゆるデータセットはセマンティックレイヤという形でコードの形で管理されることで、差分管理も可能になります。ツールによっては画面ごとに手作業で GUI を使って作る必要があるダッシュボードも、コードとして定義・管理できるので、新しい画面の迅速な実装が可能となりますし、担当者間での知見の共有や業務の分担も進めやすいです。昨今の技術トレンドを考えると、セマンティックレイヤをコードとして定義できていることで、生成AIとの相性も良いです。 整理すると、Looker は ディメンジョン、ファクトの概念に合った設計 LookML によるコードでの指標定義、指標の説明などメタデータ管理、ダッシュボード管理 DRY の原則を実現できる extends 機能 セマンティックレイヤによるデータセット管理 などの機能があり、長期的な目線で考えた時に有用なツールと考えました。 以上はエンジニア観点での Looker の利点ですが、ユーザーにとっても、可視化機能に加えて、ディメンション(集計軸)、ファクト(数値)が明確に分かれていることで、迷うことなく、直感的にグラフ作成や集計を行うことができ、LookML でメタデータをコードで管理できます。また、セマンティックレイヤがコードにより可視化とは独立して管理されることで、生成 AI モデルを自由に検証できるので、自然言語での問い合わせや動的なグラフ作成など、将来の可能性が広がると考えています。 まとめ 上記のように、外部リソースに大きく依存することなく、データマネジメントのアウトラインを定め、データを物理的に Google Cloud に集め、Google Cloud のプロダクトを使って、全社的にデータを利活用できる状態を目指して、設計・実装を進めています。 G-gen 編集部 (記事一覧) 株式会社G-genは、サーバーワークスグループとして「クラウドで、世界を、もっと、はたらきやすく」をビジョンに掲げ、2021年よりクラウドの導入から最適化までを支援しているGoogle Cloud専業のクラウドインテグレーターです。