株式会社G-genのブログ - TECH PLAY

TECH PLAY

株式会社G-gen

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

862

G-gen の min です。Google Apps Script(以下、GAS)で開発したアドオンをユーザーが実行した際、スクリプトプロパティの読み取り時に PERMISSION_DENIED エラーが発生しました。本記事では、この事象の原因と対処法を解説します。 事象 原因 対処法 定数としてコード内に記述する ユーザーにスクリプトファイルへの閲覧権限を付与する 事象 GAS で作成した機能を Google Workspace アドオンとして配布し、利用者がそのアドオンのメニューを実行した際、以下のようなエラーログが Google Cloud の Cloud Logging に記録され、処理が失敗しました。 { " insertId ": " -w58fk8fbk0qfb ", " jsonPayload ": { " message ": " ストレージからの読み取り中にサーバーエラーが発生しました。エラーコード: PERMISSION_DENIED。 ", " serviceContext ": { " service ": " AKfycbw...(省略)... " } } , " resource ": { " type ": " app_script_function ", " labels ": { " project_id ": " 000000000000 ", " invocation_type ": " menu ", " function_name ": " callUpdateMasterData " } } , " severity ": " ERROR ", " labels ": { " script.googleapis.com/deployment_id ": " AKfycbw...(省略)... " } } メインのエラーメッセージは、以下のとおりです。 ストレージからの読み取り中にサーバーエラーが発生しました。エラーコード: PERMISSION_DENIED。 該当のスクリプトでは、 PropertiesService.getScriptProperties().getProperty('KEY_NAME') メソッドを使用し、GAS エディタ上で手動設定した スクリプトプロパティ を読み取ろうとしていました。 該当のソースコード const TARGET_URL = PropertiesService . getScriptProperties () . getProperty ( 'TARGET_URL' ) ; function callUpdateMasterData () { // ...処理... // URLにアクセスしてデータを取得する const response = UrlFetchApp . fetch ( TARGET_URL ) ; // 結果をログに出力する Logger . log ( 'Response Code: ' + response . getResponseCode ()) ; } スクリプトプロパティ 原因 このエラーは、Google Workspace Marketplace で配布されるアドオンのセキュリティ仕様と、スクリプト実行環境の関係に起因しています。 Google Workspace アドオンでは、スクリプト実行ユーザーの環境で処理が実行されます。しかし、スクリプトプロパティは「スクリプトプロジェクト(ファイル)に紐づく共有ストレージ」であり、 そのファイルにアクセス権を持つユーザー間で共有 されるものです。 Marketplace 経由で配布されたアドオンを使用する場合、実行ユーザー(アドオン利用者)はスクリプトプロジェクト自体の所有者や編集者ではありません。 ユーザーには、開発者の Google ドライブ内にある GAS プロジェクトファイル自体へのアクセス権限がないため、結果としてそのファイルに付随するプロパティストアへのアクセスも拒否されます。 PropertiesService.getScriptProperties() を用いた読み取り処理が、実行時に PERMISSION_DENIED エラーとなります。 参考 : プロパティ サービス 対処法 定数としてコード内に記述する 外部サービスの URL や固定の ID など、公開されても問題ない設定値であれば、スクリプト プロパティではなくコード内の定数( const )として記述することでエラーを回避できます。 // 修正前:スクリプトプロパティから読み取る(アドオン配布時にエラーになる) // const TARGET_URL = PropertiesService.getScriptProperties().getProperty('TARGET_URL'); // 修正後:コード内に定数として定義する const TARGET_URL = 'https://blog.g-gen.co.jp/' ; function callUpdateMasterData () { // ...処理... // URLにアクセスしてデータを取得する const response = UrlFetchApp . fetch ( TARGET_URL ) ; // 結果をログに出力する Logger . log ( 'Response Code: ' + response . getResponseCode ()) ; } ただし、 API キーなどの機密情報 はソースコード内に直接記述してはいけないことに十分留意してください。 ユーザーにスクリプトファイルへの閲覧権限を付与する アドオンの実行ユーザーに対して、実体となる GAS プロジェクトファイルの 閲覧者権限 を付与します。 スクリプト プロパティはファイルに紐づくメタデータであるため、ユーザーがファイル自体へのアクセス権を持っていれば、プロパティの読み取りが可能になります。 ただし、この方法は ユーザーがソースコードを閲覧可能になる というセキュリティ上の懸念があります。社内用ツールなど、ソースコードの内容が利用者に公開されても問題ない場合にのみ採用してください。 佐々木 愛美 (min) (記事一覧) クラウドソリューション部 データアナリティクス課。2024年7月 G-gen にジョイン。G-gen 最南端、沖縄県在住。最近覚えた島言葉は、「マヤー(猫)」。
G-gen の三浦です。当記事では、Gemini CLI から Google SecOps MCP server を使用して、ケース確認からログ調査までを自然言語で要約した検証結果を紹介します。 前提知識 Google SecOps とは Gemini CLI とは 概要 Google SecOps MCP server とは 使用可能なツール 注意点 検証手順 事前準備 IAM 権限の付与と MCP サーバーの有効化 Customer ID の確認 Gemini CLI の設定 ケース運用 未対応のケース一覧の取得 高優先度ケースの抽出と要約 関連アラートの確認と影響範囲の確認 検索・調査 特定ユーザーの Google Workspace 操作ログ調査 AWS 特権ユーザーの操作ログ調査 前提知識 Google SecOps とは Google Security Operations (以下 Google SecOps、旧称 Chronicle)は、Google Cloud が提供する 統合セキュリティ運用プラットフォーム です。 SIEM、SOAR、脅威インテリジェンス、Gemini を利用した AI による運用支援を提供します。これらにより、脅威の検知・調査・対応を一元的に行えます。結果として、セキュリティ運用の効率化と高度化を実現できます。 参考: Google SecOps の概要 詳細は、以下の記事をご参照ください。 blog.g-gen.co.jp Gemini CLI とは Gemini CLI とは、ターミナルから直接 Gemini の機能を利用できるオープンソースのコマンドラインインターフェイスです。詳細は以下の記事をご参照ください。 blog.g-gen.co.jp 概要 Google SecOps MCP server とは Google SecOps MCP server は、Google Cloud が提供する Google Cloud MCP Servers の 1 つです。Gemini CLI などの MCP クライアントから、自然言語で Google SecOps を操作することができます。 参考 : Use the Google SecOps MCP server なお Google Cloud MCP Servers では、Google SecOps の他にも、Compute Engine や Google Kubernetes Engine(GKE)、Google Maps などのための MCP サーバーが提供されています。 参考 : Supported products Google Cloud MCP Servers の詳細は、以下の記事や公式ドキュメントを参照してください。 blog.g-gen.co.jp 使用可能なツール Google SecOps MCP server で使用可能な主なツールとユースケースは以下のとおりです。以下は一部抜粋であり、他にも多数のツールがあります。詳細は公式ドキュメントをご確認ください。 カテゴリ ツール ユースケース ケース運用 list_cases , get_case , update_case 未対応ケースの棚卸し、ケース詳細の確認、担当者の更新 検索・調査 translate_udm_query , udm_search , search_entity 検索条件(UDM クエリ)の作成・変換を行い、ログ/イベントを検索して、関連するユーザー/端末/IP などのエンティティを特定 ルール運用 create_rule , list_rules , list_rule_errors 検知ルールの作成と棚卸し、適用・運用上のエラーの把握 取り込み/整備 create_feed , create_parser , list_parsers ログ取り込み設定(フィード)の作成、ログ整形のためのパーサー作成、パーサーの一覧取得 参考 : Google SecOps MCP Reference 注意点 Google SecOps MCP server は、2026年2月現在、 Preview 版 です。当記事で解説する内容は一般提供(GA)の際に変更される可能性があることを予めご了承ください。 Preview 版のサービスや機能を使うに当たっての注意点は、以下の記事も参考にしてください。 blog.g-gen.co.jp 検証手順 検証の流れは以下のとおりです。 項番 項目 内容 1 事前準備 MCP サーバーの有効化、IAM 権限の付与、Customer ID の確認、Gemini CLI の設定 2 ケース運用 未対応ケースの一覧取得、高優先度ケースの確認、関連アラートと 関与したユーザー/IP の確認 3 検索・調査 ケース/アラートで得たユーザーや IP などの手がかりを起点に、Google SecOps に取り込まれたログ(例:Google Workspace / AWS)を検索し、重要な操作を時系列で整理 事前準備 IAM 権限の付与と MCP サーバーの有効化 Google SecOps MCP を実行するプリンシパル(Google アカウント/サービスアカウント)に、SecOps インスタンスが紐付くプロジェクトで以下の IAM ロールを付与します。 MCP ツールのユーザー(ベータ版)( roles/mcp.toolUser ) Chronicle API 管理者( roles/chronicle.admin ) Chronicle SOAR 管理者(ベータ版)( roles/chronicle.soarAdmin ) ※ roles/chronicle.admin と roles/chronicle.soarAdmin は管理者権限相当です。SecOps 運用に必要なメンバーのみに付与することを推奨します。 参考 : Google SecOps MCP Reference SecOps インスタンスが紐付くプロジェクトで、Google SecOps MCP を有効化します。 # SecOps が紐付くプロジェクト ID export PROJECT_ID = " YOUR_PROJECT_ID "   gcloud beta services mcp enable chronicle.googleapis.com --project =" $PROJECT_ID " ※ gcloud beta services mcp コマンドが「Invalid choice: 'mcp'」等のエラーで使用できない場合は、gcloud CLI が古い可能性があります。最新バージョンに更新してから再試行してください。 参考 : gcloud CLI のコンポーネントの管理 MCP サーバーを利用できるアカウントでログインし、アプリケーションのデフォルト認証情報(ADC)を設定します。 gcloud auth application-default login Customer ID の確認 本記事で利用する MCP ツールには、Google SecOps の Customer ID が必要なものがあります。Customer ID は Google SecOps コンソールの設定画面から確認できます。 確認手順の詳細は、以下の記事の 「Google SecOps 転送用のパラメータと認証情報の取得」 をご参照ください。 blog.g-gen.co.jp Gemini CLI の設定 Google(Google Cloud)のリモート MCP サーバーは、Gemini CLI では拡張機能として ~/.gemini/extensions/ 配下に設定します。本記事では拡張機能名を secops (任意)とします。 参考 : Configure MCP in an AI application 設定用のディレクトリと設定ファイル( ~/.gemini/extensions/secops/gemini-extension.json )を作成します。 mkdir -p ~/.gemini/extensions/secops   touch ~/.gemini/extensions/secops/gemini-extension.json 作成した設定ファイルに以下を記述します。 PROJECT_ID と httpUrl のリージョン(例: asia-northeast1 )は環境に合わせて置き換えてください。 { " name ": " secops ", " version ": " 1.0.0 ", " mcpServers ": { " secops ": { " httpUrl ": " https://chronicle.asia-northeast1.rep.googleapis.com/mcp ", " authProviderType ": " google_credentials ", " oauth ": { " scopes ": [ " https://www.googleapis.com/auth/chronicle " ] } , " headers ": { " x-goog-user-project ": " PROJECT_ID " } } } } Gemini CLI を起動し、 /mcp コマンドで MCP サーバーへの接続を確認します。ツール一覧が表示されれば、接続は成功です。 > /mcp Configured MCP servers:   🟢 secops ( from secops ) - Ready ( 57 tools ) Tools: - list_cases - get_case - list_case_alerts - list_case_comments - update_case ...(省略) ケース運用 未対応のケース一覧の取得 以下のようなプロンプトで未対応(OPENED)のケースを直近 10 件取得し、優先度と作成日時の傾向を確認します。 Project ID PROJECT_ID 、Customer ID CUSTOMER_ID 、Region REGION を使用して 未対応のケースを作成日時の新しい順に 10 件表示してください。 # 出力例   ✦ 最新の未対応ケース 10 件を取得しました。     ┌─────────┬──────────────────────────────────────────┬──────────┬────────┬────────┬────────────────────┐ │ Case ID │ Display Name │ Priority │ Stage │ Status │ Created Time ( UTC ) │ ├─────────┼──────────────────────────────────────────┼──────────┼────────┼────────┼────────────────────┤ │ 399 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-30 09:33 │ │ 398 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-30 01:33 │ │ 397 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-29 19:33 │ │ 396 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-29 13:33 │ │ 395 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-29 07:34 │ │ 394 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-28 23:34 │ │ 393 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-28 15:34 │ │ 392 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-28 11:33 │ │ 391 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-28 05:34 │ │ 390 │ Replacement of Existing Compute Snapshot │ LOW │ Triage │ OPENED │ 2026-01-27 23:34 │ └─────────┴──────────────────────────────────────────┴──────────┴────────┴────────┴────────────────────┘     すべてのケースが Replacement of Existing Compute Snapshot(既存のスナップショットの置換)という名称で、優先度は LOW です。 高優先度ケースの抽出と要約 以下のようなプロンプトで優先度が高いケースを抽出し、内容を要約して「先に見るべきケース」を絞り込みます。 Project ID PROJECT_ID 、Customer ID CUSTOMER_ID 、Region REGION を使用して、優先度が高いケースを検索し、最新の3件の内容を要約してください。 # 出力例   ✦ 優先度が高いケースの最新 3 件を取得し、要約しました。   高優先度ケースの要約(最新 3 件)   検出されたケースはすべて、Workspace 管理者による 2 要素認証(2FA)の強制設定解除に関するもので、内容は以下の通りです。   1 . Two Factor Authentication Enforcement Removal by a Workspace Admin User ( Case ID: 137 ) * 優先度: PRIORITY_HIGH * 作成日時: 2025 / 11 / 27 19:06:23 ( UTC ) * 概要: 管理者ユーザーによって 2 要素認証の強制設定が解除されました。セキュリティポリシー違反の可能性があるため、意図した変更か確認が必要です。   2 . Two Factor Authentication Enforcement Removal by a Workspace Admin User ( Case ID: 135 ) * 優先度: PRIORITY_HIGH * 作成日時: 2025 / 11 / 27 10:18:07 ( UTC ) * 概要: 管理者による 2FA 強制解除が検知されました。アラートが 2 件紐付いており、繰り返しのアクションや関連操作があった可能性があります。   3 . Two Factor Authentication Enforcement Removal by a Workspace Admin User ( Case ID: 131 ) * 優先度: PRIORITY_HIGH * 作成日時: 2025 / 11 / 26 13:33:44 ( UTC ) * 概要: 同様の 2FA 解除検知です。短期間に複数発生しているため、アカウント侵害や誤設定の影響範囲を確認してください。   管理者権限に関わる重要な変更であるため、早急な確認を推奨します。 関連アラートの確認と影響範囲の確認 以下のようなプロンプトで、前項で確認した Case ID 137 に紐づくアラートを取得し、 「誰が/どこから/何に対して」 の観点で影響対象を整理します。 Project ID PROJECT_ID 、Customer ID CUSTOMER_ID 、Region REGION を使用して、Case ID 137 に関連するアラートを取得し、影響対象と影響範囲を整理してください。 # 出力例   ✦ Case ID 137 に関連するアラート情報、および影響対象と影響範囲を整理しました。   1 . ケース概要 * Case ID: 137 * ケース名: Two Factor Authentication Enforcement Removal by a Workspace Admin User * 優先度: HIGH * ステータス: OPENED   2 . 関連アラート * アラート名: TWO FACTOR AUTHENTICATION ENFORCEMENT REMOVAL BY A WORKSPACE ADMIN USER * 発生日時: 2025-11-26 10:03:52 UTC ( 1764151432245 ) * 内容: Workspace管理者権限を持つユーザーによって、二要素認証(2FA)の強制設定が解除されました。   3 . 影響対象と関与エンティティ アラートに関連するエンティティ情報から、以下の事実が確認されました。   * 実行ユーザー ( Principal ) : * EXAMPLE@DEV.G-GEN.CO.JP * 接続元IPアドレス: * 0000:0000:0000:0000:0000:0000:0000:0000 ( IPv6 ) * 変更対象リソース ( Target ) : * ORGANIZATIONS/ 1234567890 /SECURITYSETTINGS * 組織レベルのセキュリティ設定オブジェクトです。   4 . 影響範囲の整理 このアラートは、特定のユーザーに対する操作ではなく、組織レベルのセキュリティ設定に対する変更を示唆しています。   * 直接的な影響: 組織ID 1234567890 (DEV.G-GEN.CO.JP 組織全体、または該当する組織部門)において、二要素認証の強制ポリシーが無効化された可能性があります。 * セキュリティリスク: 2FA強制が解除されると、組織内のユーザーアカウントがパスワード漏洩などの攻撃に対して脆弱になります。全ユーザー、または特定の組織部門(OU)配下の全ユーザーが影響を受ける可能性があります。   推奨される次のステップ: * 実行ユーザー ( EXAMPLE@DEV.G-GEN.CO.JP ) に連絡を取り、この設定変更が意図的かつ承認されたものか確認してください。 * 意図しない変更であれば、直ちに設定を元に戻し、該当ユーザーのアカウントが侵害されていないか調査する必要があります。 検索・調査 特定ユーザーの Google Workspace 操作ログ調査 以下のようなプロンプトで前項で確認した Case ID 137 に関連する特定ユーザーの Google Workspace 操作ログの抽出と整理を実施します。 Project ID PROJECT_ID 、Customer ID CUSTOMER_ID 、Region REGION を使用して、Case ID 137 で特定した関与ユーザー EXAMPLE@DEV.G-GEN.CO.JP(接続元 IP:0000:0000:0000:0000:0000:0000:0000:0000) が 2025-11-27(UTC) に行った操作をログから抽出し、重要な操作を時系列で整理してください。 ※ メールアドレスでヒットしない場合は、ケースで得たユーザーID(@ 前)や接続元 IP で再検索します。 # 出力例   ✦ 指定された条件(Case ID 137 、ユーザー EXAMPLE@DEV.G-GEN.CO.JP、日付 2025-11-27 UTC)に基づき、Chronicle SIEM のログを調査しました。   該当ユーザーによる操作ログが複数確認されました。特に「 2 段階認証プロセス導入ガイド」の作成や「パスキーの登録」など、認証セキュリティに関連する重要な操作が時系列で確認されています。   以下に、 2025 年 11 月 27 日(UTC)の重要な操作を時系列でまとめます。   ユーザー操作タイムライン ( 2025-11-27 UTC )   1 . OAuth アプリケーションの認可とスクリプト実行 ( 01:31 - 01:45 UTC ) * 01:31:08 - 01:45:34: XXXX というアプリケーションに対し、OAuth トークンを認可・取得しました。 * スコープ: Calendar, Drive, Presentations, Script Deployments 等の権限が含まれています。 * 操作: USER_RESOURCE_ACCESS ( authorize, activity ) * 詳細: Google Apps Script や Calendar API ( calendar.events.list, calendar.events.insert ) の呼び出しが記録されています。   2 . ドライブ コンテンツの作成と共有 ( 05:36 - 05:44 UTC ) * 05:36:14 - 05:38:05: Google ドライブ上で「XXXX プロジェクト」および「 2 段階認証プロセス導入ガイド」というファイルを編集・更新しました。 * 05:38:06: 新規ファイル 「 2 段階認証プロセス導入ガイド」(プレゼンテーション)を作成しました。 * 05:41:03: 上記ファイルの権限(ACL)を変更し、共有設定を行いました(USER_CHANGE_PERMISSIONS)。 * 05:41:11: Gmail にて、件名 【GAS自動送信】スライドURLのお知らせ: 2 段階認証プロセス導入ガイド」 のメールを送信しました。 * 接続元IP: 0000:0000:0000:0000:0000:0000:0000:0000 ※提示されたIPと同じサブネット   3 . セキュリティ設定の変更 ( 07:10 UTC ) * 07:10:03: ユーザー自身の認証設定として、パスキー ( Passkey ) を登録しました。 * 操作: STATUS_UPDATE ( product_event_type: passkey_enrolled ) * 接続元IP: 0000:0000:0000:0000:0000:0000:0000:0000   4 . デバイス管理 ( 07:46 UTC ) * 07:46:49: デバイスの同期/更新イベント ( DEVICE_REGISTER_UNREGISTER_EVENT ) が記録されています。   考察 Case ID 137 のアラート名は「Two Factor Authentication Enforcement Removal( 2 要素認証の強制解除)」ですが、ログからは解除操作そのものではなく、逆に「 2 段階認証プロセス導入ガイド」の作成・配布や、ユーザー自身の「パスキー登録」といった、セキュリティ強化に向けた準備やテストを行っていた動きが顕著に見られます。アラートはこれらの試行錯誤や設定変更の過程でトリガーされた可能性があります。 AWS 特権ユーザーの操作ログ調査 以下のようなプロンプトで、AWS 環境における特権ユーザーの重要な操作(権限変更やリソース削除など)を抽出します。   Project ID PROJECT_ID 、Customer ID CUSTOMER_ID 、Region REGION を使用して、 ユーザー XXX@g-gen.co.jp が 2026年1月26日から1月30日の間に AWS で行った操作の中でセキュリティに影響を与える操作を抽出して要約してください。     # 出力例   ✦ ユーザー XXX@g-gen.co.jp の 2026 年 1 月 26 日から 1 月 30 日の間の AWS 操作ログを分析しました。 主に既存の監視設定の削除と、Google SecOps と連携するための新規 IAM 設定が行われています。   以下にセキュリティに影響を与える主な操作を時系列で要約します。   1 . 監視・ログ収集リソースの削除 ( 1 月 28 日 07:52 - 07:57 ) 以前設定されていたと思われる監視用のリソースが一括して削除されました。これにより、一時的に対象環境のログ収集が停止した可能性があります。 * CloudTrail: トレイル XXXX の削除 * VPC: VPC フローログの削除 * S3: バケット XXXX の削除 * SNS/SQS: 通知用トピックおよびキューの削除 * CloudWatch Logs: ロググループの削除   2 . IAM 権限の操作 ( 1 月 28 日 04:44 - 09:56 ) 特定のユーザーやポリシーに対する権限変更が行われました。 * ポリシー更新: XXXX ポリシーのバージョン更新(S3バケットやSQSへのアクセス許可設定)。 * ユーザー権限変更: ユーザー XXXX に対して AdministratorAccess ( 管理者権限 ) の付与 ( AttachUserPolicy ) と、その直後の剥奪 ( DetachUserPolicy ) が行われました。   3 . Google SecOps 連携設定の構築 ( 1 月 29 日 01:59 - 06:01 ) Google SecOps ( Chronicle ) から AWS 環境を監視・操作するための信頼関係が構築されました。 * IAM ロール作成: XXXX の作成。 * OIDC プロバイダ作成: accounts.google.com を信頼する OpenID Connect プロバイダの作成。 * 信頼ポリシー設定: 作成したロールに対し、Google アカウントからの AssumeRole を許可する設定 ( UpdateAssumeRolePolicy ) 。   結論 このユーザーは、古いサンドボックス環境の監視設定をクリーンアップし、新たに Google SecOps を用いた監視体制を構築するためのセットアップ作業を行っていたと推測されます。 三浦 健斗 (記事一覧) クラウドソリューション部 2023年10月よりG-genにジョイン。元オンプレ中心のネットワークエンジニア。 ネットワーク・セキュリティ・唐揚げ・辛いものが好き。 Google Cloud Partner All Certification Holders 2025 / Google Cloud Partner Top Engineer 2026
G-gen の高宮です。Google 公式の技術ドキュメントを検索するための Developer Knowledge API を、Gemini CLI から MCP サーバー経由で使用した検証結果を紹介します。 はじめに Developer Knowledge API とは MCP サーバーで使用可能なツール 注意事項 事前準備 Google Cloud の設定 Gemini CLI の設定 search_documents での検索 質問の投入 検索と回答の流れ get_document での検索 質問の投入 検索と回答の流れ AI 開発におけるドキュメント参照 はじめに Developer Knowledge API とは Developer Knowledge API は、Google Cloud 製品や Google 製品(Android、Firebase など)の公式ドキュメントを検索するための API です。この API を使用すると、独自のアプリケーションやワークフローに、Google のナレッジベースを統合できます。 また当 API では、Google から リモート MCP サーバー (Developer Knowledge MCP server)も提供されており、ローカル環境の CLI ツールや IDE から、自然言語で Google の公式ドキュメントを検索して取得することができます。また、エージェンティックな開発の中で、AI が正確な API 仕様等をもとに開発を進めるためにも寄与します。 参考 : Developer Knowledge API 参考 : Connect to the Developer Knowledge MCP server Google Cloud MCP Servers では、Compute Engine や BigQuery、Google Maps などのための MCP サーバーが提供されています。詳細は以下の記事を参照してください。 blog.g-gen.co.jp blog.g-gen.co.jp MCP サーバーで使用可能なツール Developer Knowledge MCP server で使用可能なツールは以下のとおりです。 ツール名 説明 batch_get_documents search_documents で取得した結果から、複数のドキュメントの全ての内容を取得します。 get_document search_documents で取得した結果から、単一のドキュメントの全ての内容を取得します。 search_documents 入力したクエリに関連する Google の公式ドキュメントを検索します。検索結果で、 get_document または batch_get_documents を使用することで、ドキュメントの全ての内容を取得します。 参考 : MCP Reference: developerknowledge.googleapis.com 注意事項 Developer Knowledge API は、2026年2月現在、Public Preview です。当記事で解説する内容は一般提供(GA)の際に変更される可能性があることを予めご了承ください。 Preview 版のサービスや機能を使うに当たっての注意点は、以下の記事も参考にしてください。 blog.g-gen.co.jp 事前準備 Google Cloud の設定 使用する Google Cloud プロジェクトで以下の API を有効化します。 Developer Knowledge API gcloud services enable developerknowledge.googleapis.com 同じプロジェクトで、API キーを作成し、Developer Knowledge API 呼び出し時のみに使用できるように API キーを制限し保護します。 gcloud services api-keys create --display-name =" Developer Knowledge API Key " ※ Developer Knowledge API を有効化してすぐの場合は、「Select APIs」リストに表示されないことがあります。 以下のコマンドで Developer Knowledge MCP server を有効化します。 gcloud beta services mcp enable developerknowledge.googleapis.com 以下のメッセージが返却されたら、Developer Knowledge MCP server が有効化されます。 The MCP endpoint for service developerknowledge.googleapis.com has been enabled for the resource projects/プロジェクト名. ※ gcloud コマンドの実行中にエラーが発生した場合は、 gcloud components update beta コマンドでコンポーネントのアップデート後に再試行してください。 Gemini CLI の設定 作成した API キーを表示します。 Gemini CLI の構成ファイル( .gemini/settings.json )に MCP サーバーの設定を追加します。 { " mcpServers ": { " google-developer-knowledge ": { " httpUrl ": " https://developerknowledge.googleapis.com/mcp ", " headers ": { " X-Goog-Api-Key ": " 作成した API キー " } } } } MCP サーバーに接続できていれば、構成ファイルに記述した MCP サーバーと、使用できるツールの一覧が表示されます。 # Gemini CLI を起動 $ gemini # > /mcp Configured MCP servers: 🟢 google-developer-knowledge - Ready ( 3 tools ) Tools: - batch_get_documents - get_document - search_documents なお、AI アシスタントが gcloud CLI を使用したアプリケーションのデフォルト認証情報(ADC)をサポートしている場合、 gcloud auth application-default login --project=${PROJECT_ID} コマンドで認証を行い (※ ${PROJECT_ID} は対象の Google Cloud プロジェクト ID に置き換えてください)、 構成ファイル( .gemini/settings.json )に以下のように設定することで接続ができます。 { " mcpServers ": { " google-developer-knowledge ": { " httpUrl ": " https://developerknowledge.googleapis.com/mcp ", " authProviderType ": " google_credentials ", " oauth ": { " scopes ": [ " https://www.googleapis.com/auth/cloud-platform " ] } , " timeout ": 30000 , " headers ": { " X-goog-user-project ": " ${PROJECT_ID} " } } } } ※ ${PROJECT_ID} の部分には、使用する Google Cloud プロジェクト ID を指定してください。 search_documents での検索 質問の投入 Gemini CLI に対して、以下のようなクエリを自然言語で投入します。 Google Cloud の API を有効化する Terraform のソースコードを Google の公式ドキュメントから検索してください。 入力したクエリに対して、Developer Knowledge MCP server の search_documents ツールを使用するか確認されます。 3. Allow all server tools for this session を選択すると、現在のセッション内では、Developer Knowledge MCP server の全てのツールの使用が許可されます。 検索と回答の流れ 入力した自然言語のクエリが、MCP サーバーへリクエストを送信するために JSON 形式に変換されます。 {"query":"Terraform enable Google Cloud API"} MCP サーバーから返却されたレスポンスに複数のドキュメントが格納されています。 レスポンスの JSON の構造は以下のとおりです。 { " results ": [ { " parent ":" 参照しているドキュメントのリソース名 ", " id ":" ドキュメント内のチャンク ID ", " content ":" チャンクしたドキュメントの内容 " } , ... } 取得した内容を元に、回答が生成されます。 get_document での検索 質問の投入 さらに詳細な情報が必要な場合は、以下のようなクエリを自然言語で投入します。 関連度の一番高いドキュメントを使用して、より詳細な情報を検索してください。 検索と回答の流れ 入力した自然言語のクエリに従って、 search_documents の検索結果から、関連度の高いドキュメントを判断し、MCP サーバーへリクエストを送信するために JSON 形式に変換します。 {"name":"documents/docs.cloud.google.com/docs/terraform/understanding-apis-and-terraform"} MCP サーバーから返却されたレスポンスに単一のドキュメントの詳細情報が格納されています。 レスポンスの JSON の構造は以下のとおりです。 { " name ":" 参照しているドキュメントのリソース名 ", " uri ":" 参照しているドキュメントの URI ", " content ":" Markdown 形式のドキュメントの内容 ", " description ":" ドキュメントの説明 " } 取得した内容を元に、より詳細な回答が生成されます。 AI 開発におけるドキュメント参照 例えば、以下のようなプロンプトを Gemini CLI に与えます。 組織 g-gen.co.jp の組織直下にある Google Cloud プロジェクトの一覧を取得する Python プログラムを記述して。 Google Cloud の Resource Manager API の情報を、公式ドキュメントから調べて確認してからプログラムの開発を始めて。 Gemini CLI は、必要なドキュメントを検索・取得して、コンテキストとして使いつつ、プログラムを記述します。 エージェンティックな開発の中で、適宜 Developer Knowledge MCP server を参照することで、開発の精度が向上することが期待できます。 また、必要なときには Developer Knowledge MCP server を参照するよう、 GEMINI.md などのコンテキストファイルに予めルールを記述することで、プロンプトで毎回記述する必要がなくなります。 参考 : Provide context with GEMINI.md files - Gemini CLI 参考 : Use the Gemini Code Assist agent mode - Gemini for Google Cloud 高宮 怜 (記事一覧) クラウドソリューション部ソリューションアーキテクト課 2025年6月より、G-genにジョイン。前職は四国のSIerで電力、製造業系のお客様に対して、PM/APエンジニアとして、要件定義から運用保守まで全工程を担当。現在はGoogle Cloudを学びながら、フルスタックエンジニアを目指してクラウドエンジニアとしてのスキルを習得中。 Follow @Ggen_RTakamiya
G-gen の三浦です。当記事では Google Antigravity を使用し、バイブコーディングで目標管理アプリを開発する手順と、Browser Agent によるデバッグの流れを紹介します。 概要 Google Antigravity とは リリースステージ 使用可能なモデル データの保護 検証手順 検証 インストール 初期設定 日本語化とルール設定 自然言語による開発 Browser Agent によるデバッグ 概要 Google Antigravity とは Google Antigravity は、AI を使用して開発作業ができる IDE(統合開発環境)です。Google Antigravity を使うことで、自然言語でやりたいことを伝えて AI がコードの生成や修正を進める開発スタイルである バイブコーディング (vibe coding)を実現できます。 自然言語を使ってチャットで Google Antigravity に作業を依頼すると、AI エージェントがエディタ、ターミナル、ブラウザを使って、実装や修正を段階的に実行します。 参考 : Google Antigravity 参考 : vibe コーディングとは Google Antigravity の主な特徴は以下のとおりです。 特徴 説明 AI-powered IDE エディタ内で AI と対話しながら、作成・修正・調査を一連の流れで実行 Asynchronous Agents 複数の作業を同時に依頼でき、複数タスクを並行して実行可 Agent Manager エージェントとの会話、進捗、成果物を1つの画面でまとめて管理 Multi-window 編集、管理、ブラウザ確認を分けて表示して効率的に並行作業 Browser Agent エージェントがブラウザを操作し、画面確認や情報収集を行う リリースステージ Google Antigravity は、2026年2月現在、 パブリックプレビュー です。当記事で解説する内容は一般提供(GA)の際に変更される可能性があることをあらかじめご了承ください。プレビュー版のサービスや機能を使うに当たっての注意点は、以下の記事も参考にしてください。 blog.g-gen.co.jp 使用可能なモデル Google Antigravity で使用するバックエンドの AI モデルとしては、Google が提供する Gemini シリーズに加えて、Anthropic の Claude など他社モデルも使用可能です。 2026年2月現在、Google Antigravity では以下の生成 AI モデルを選択できます。 提供元 モデル Google Gemini 3 Pro(high) Google Gemini 3 Pro(low) Google Gemini 3 Flash Anthropic Claude Sonnet 4.5 Anthropic Claude Sonnet 4.5(thinking) Anthropic Claude Opus 4.5(thinking) OpenAI GPT-OSS 参考 : Models データの保護 Google Antigravity は Google 製品であり、以下のような規約が適用されます。 Google Terms of Service Google Cloud - Service Specific Terms Google Workspace AI Ultra for Business で認証する場合に適用 Google Antigravity Additional Terms of Service Google Privacy Policy Generative AI Additional Terms of Service Google Antigravity 自体は無償で利用できますが、その場合、Google Antigravity Additional Terms of Service に記載のとおり、ユーザーデータやメタデータ、AI とのやりとりなどが記録され、保存されます。また、それらの情報はサービス改善に使用される可能性があります。ただし、Google Workspace AI Ultra for Business サブスクリプションを使用して認証する場合は、「当社はお客様のプロンプト、コンテンツ、またはモデル応答を収集しません。」とされています。 上記のような記載があるものの、Google Antigravity の企業による利用に際して、データがモデルのトレーニングに使用されないためにはどうすればよいか、という公式のガイダンスは、2026年2月現在、Google から発表されていません。 2026年2月現在、Google Antigravity のリリースステージがパブリックプレビュー段階であることからも、企業が当サービスを使うにあたりどのようにすべきかは明確になっていません。なお公式料金ページには、 Organization plan が近日中に発表されることが示唆されており、このプランは Google Cloud と連携することでデータの保護を提供するような内容となることが想定されます。 参考 : Choose the perfect plan for your journey 検証手順 検証手順は以下のとおりです。インストールとアプリ開発に加え、意図的にエラーが発生する状況を作り、Browser Agent で原因特定から修正までできるか確認します。 項番 内容 説明 1 インストールと初期設定 インストール後、初回起動〜サインインまでを実施し、エージェントの実行ポリシー(コマンド実行や変更適用のレビュー要否など)を設定します。 2 日本語化とルール設定 画面表示を日本語化し、「回答・計画は日本語で実施する」などのルールを設定します。 3 自然言語によるアプリ作成 チャットに要望を入力し、計画の提示 → レビュー → 実装 → 起動確認までを行います。 4 Browser Agent によるデバッグ検証 わざと不具合を入れ、Browser Agent(ブラウザ操作)でエラー画面を確認し、原因特定〜修正までできるかを確認します。 本検証時の端末と Antigravity のバージョンは以下のとおりです。 OS : Windows 11 Pro 実行環境 : WSL2(Ubuntu) Antigravity : 1.13.3 検証 インストール 公式サイトから、利用する OS に合わせたインストーラーをダウンロードして実行します。対応 OS と要件の詳細は公式ドキュメントをご確認ください。 対応 OS macOS Windows Linux 参考 : Download Google Antigravity 使用許諾契約書を確認して問題がない場合は「同意する」を選択し、「次へ」を選択します。 使用許諾契約書の同意 インストール先を指定し、「次へ」を選択します。 インストール先の指定 ショートカットの作成場所を指定し、「次へ」を選択します。 ショートカットの指定 その他で必要な項目があれば選択し、「次へ」を選択します。 追加タスクの選択 内容を確認し、「インストール」を選択します。 インストールの選択 インストールが完了したので、「完了」を選択します。 完了を選択 初期設定 Antigravity を起動し、「Next」を選択します。 起動と Next の選択 Visual Studio Code (以下、 VS Code )を使用している場合、設定をインポートできます。不要な場合は「Start fresh」を選択します。 VS Code 設定をインポートするかの選択 次に IDE のテーマ(配色などの見た目)を選択し、「Next」を選択します。 テーマの選択 Antigravity のエージェントをどのように動かすかを選択します。選択したモードに応じて、エージェントの動きが変わります。本検証では Review-driven development を選択します。 エージェントの設定 利用モード(左側)の違い モード 特徴 Secure Mode すべての操作を 都度確認 してから実行します。加えて、より厳格な保護設定が適用されます(詳細は公式ドキュメント参照)。 Review-driven development(推奨) 要所で 人間の確認を挟みながら 作業を実行します。 Agent-driven development エージェントが 自律的に反復 して作業を実行します(確認なしで進む場合があります)。 Custom configuration 実行ポリシー(例 : コマンド実行やレビュー要否)を 細かく設定 できます。 実行ポリシー(右側)の項目 項目 制御項目 選択肢 影響 Terminal execution policy ターミナル(コマンド)実行の扱い Always Proceed / Request Review コマンド 自動実行するか 、 都度確認するか を制御します。 Review policy 変更の適用・進行時の人間の確認の要否 Always Proceed / Agent Decides / Request Review 変更を 即適用するか 、 都度確認するか 、 状況に応じて自動判断するか を制御します。 JavaScript execution policy ブラウザ等での JS 実行 Always Proceed / Request Review / Disabled JavaScript を 自動実行するか 、 都度確認するか 、 無効化するか(Disabled) を制御します。 参考 : Secure Mode 参考 : Agent Modes / Settings エディタの初期設定を行い、「Next」を選択します。 Keybindings(キー割り当て) :通常は Normal を選択します。 Vim 操作に慣れている場合は Vim を選択します。 Extensions(拡張機能) :Python や Go などの言語拡張機能をインストールするかを選択します。 エディタの設定 「Sign in with Google」を選択し、Google アカウントで認証を実施します。 Google 認証の実施 認証が完了すると、以下画面に切り替わります。注意事項の確認と必要に応じてチェックボックスを有効化します。チェックボックスを有効化した場合、利用状況データの送信を許可することを指します。 利用規約の確認 初期設定は以上です。これらの設定は後から変更できます。 エディタの表示 日本語化とルール設定 左サイドバーの「Extensions」を選択し、 日本語 と入力して表示された Japanese Language Pack for Visual Studio Code の「Install」を選択します。 画面の日本語化 左下にポップアップが表示されるので、「Change Language and Restart」を選択します。 Antigravity の再起動 日本語表記になっていることを確認し、右上の三点リーダーから「Customizations」を選択します。 Customizations を選択 Rules タブで「Global」を選択し、以下を入力して保存します。Global ルールは全体の共通仕様です。 回答及び計画などの各種ドキュメントはすべて日本語にすること Rules の設定 参考 : Rules 自然言語による開発 右上の「Open Agent Manager」を選択します。 Open Agent Manager を選択 「Open Workspace」 > 「Open New Workspace」 を選択し、作業用フォルダ( Workspace )を開きます。 Open Workspace を選択 参考 : Workspaces 作業用のフォルダを選択します。 フォルダの選択 「Next」を選択します。 Next を選択 会話画面が表示されます。モデル( Gemini 3 など)の選択に加え、会話モードとして以下 2 つを選択できます。 モード 説明 Planning 実行前に計画(手順)を提示してから進めるモードです。調査や設計、複雑な作業を慎重に進めたいケースに適しています。 Fast 計画より実行を優先して、直接タスクを進めるモードです。軽い修正や試行をすぐに動かして確認したいケースに適しています。 モードの選択 モデルの選択 本検証時は以下の設定で、以下プロンプトを入力し、Enter キーを押下します。 モード : Planning モデル : Gemini 3 Pro(high) 社員の目標を管理するシステムを作りたい プロンプトの入力 エージェントから実装計画の確認依頼が来たので、内容を確認します。 実装計画の確認1 実装計画の確認2 実装計画の確認3 計画が問題ない場合、「Review」を選択してコメントを入力し、「Submit」を選択します。 計画の承認 エージェントから、 Next.js のプロジェクト作成コマンドの実行確認依頼が届きます。内容を確認して「Accept」を選択します。 エージェントによるコマンド実行の承認 エージェントから実装(ダッシュボードと社員一覧画面)の完了連絡が届いたら、コマンドを実行して確認します。 エージェントからの動作確認依頼 コマンドの実行 表示された URL にアクセスし、画面が表示されることを確認します。 アプリの表示確認1 アプリの表示確認2 Browser Agent によるデバッグ コードを意図的に改修し、アクセス時にエラーが出るようにします。 エラーが出るように改修 エージェントに対し、エラー内容をブラウザで確認するよう指示します。エージェントから Browser Agent を使用したデバッグの実行許可を求められるため、「Setup」を選択します。 エージェントによる Browser Agent のセットアップ確認 参考 : Browser Agent ブラウザが起動し、Antigravity 用の拡張機能のインストールが求められるため、確認してインストールを実施します。 拡張機能のインストール1 拡張機能のインストール2 拡張機能のインストール3 インストールすると、Antigravity によりエラーページへのアクセスとデバッグ情報の収集が開始されます。 エージェントによるデバッグ情報の収集 エージェントから修正完了連絡が来たので、再度アクセスしてエラーが表示されずに画面が表示されていることを確認します。 エージェントからの修正完了連絡 アクセスの確認 三浦 健斗 (記事一覧) クラウドソリューション部 2023年10月よりG-genにジョイン。元オンプレ中心のネットワークエンジニア。 ネットワーク・セキュリティ・唐揚げ・辛いものが好き。 Google Cloud Partner All Certification Holders 2025 / Google Cloud Partner Top Engineer 2026
G-gen の武井です。当記事では、Google が提供する SIEM/SOAR 製品である Google SecOps と AWS のログ連携をキーレス認証で実現する方法について解説します。 前提知識 Google SecOps データフィード キーレス認証 過去記事との相違 AWS の設定 カスタム IAM ロール カスタム IAM ロール(信頼ポリシー) ID プロバイダー データフィードの設定 動作確認 関連記事 前提知識 Google SecOps Google Security Operations (以下 Google SecOps、旧称 Chronicle)は、Google Cloud が提供する 統合セキュリティ運用プラットフォーム です。 SIEM、SOAR、脅威インテリジェンス、Gemini を利用した AI による運用支援を提供します。これらにより、脅威の検知・調査・対応を一元的に行えます。結果として、セキュリティ運用の効率化と高度化を実現できます。 参考: Google SecOps の概要 詳細は、以下の記事をご参照ください。 blog.g-gen.co.jp データフィード Google SecOps では、AWS、Azure、その他 SaaS など、Google Cloud 以外の環境のログデータを取り込む仕組みとして データフィード機能 があります。 SecOps UI もしくは Feed Management API を用いて、ログソース(Amazon S3、Cloud Storage、Pub/Sub、Webhook など)を指定し、各種ログを SecOps に取り込む設定を行います。 ソースタイプ 概要 ストレージ Google Cloud、AWS、Azure のクラウドストレージバケットに保存されたログデータを定期的に取得 Amazon SQS S3 バケットの通知をキュー経由で受信し、ログデータを取得(リアルタイムかつ安定的に取り込み) ストリーミング Amazon Data Firehose、Cloud Pub/Sub、Webhook などを経由し、SIEM の HTTPS エンドポイントにログデータをストリーミングでプッシュ サードパーティ API CrowdStrike、SentinelOne、Palo Alto など、外部 SaaS から API 経由でログデータを取得 参考: フィード管理の概要 キーレス認証 データフィードで AWS のログを取り込む際のデータソースに Amazon S3 や SQS を選択した場合、従来は アクセスキー と シークレットアクセスキー が必要でした。 しかし2025年5月26日のアップデートにより、 AWS IAM Role for Identity Federation を選択することで キーレス認証 (キーを使用しない認証)が可能となりました。 従来のキー認証方式(データフィードの設定画面より) キーレス認証方式(データフィードの設定画面より) これは、Google SecOps と AWS の間に 信頼関係 (ID フェデレーション)を結ぶことで、固定のアクセスキーを使わずに認証を行う仕組みです。 Google SecOps が発行する OIDC トークンを AWS に提示し、AWS Security Token Service(STS)の AssumeRoleWithWebIdentity という API を介して一時的なアクセス権限を取得しています。 キーの流出リスクを根本的に排除でき、管理の手間も削減できるため、一般的にはよりセキュアな認証方式といえます。 参考: Google Security Operations release notes(May 26, 2025) 参考: AssumeRoleWithWebIdentity 参考: STSの一時的な認証情報取得APIコールについてまとめてみる 過去記事との相違 当記事では以下の構成のもと、S3 バケットに格納した CloudTrail ログを、データフィード機能を使って Google SecOps に取り込みます。 以下の記事でも同様の構成でログ取り込み検証を行っていますので、当記事ではキーレス認証への変更点のみ詳しく解説します。 # 設定項目 設定箇所 過去記事との手順差異 1 S3 バケットの設定 AWS なし 2 SQS の設定 AWS なし 3 SQS アクセスポリシーの設定 AWS なし 4 S3 イベント通知の設定 AWS なし 5 CloudTrail の設定 AWS なし 6 IAM の設定 AWS あり 7 データフィードの設定 Google SecOps あり blog.g-gen.co.jp AWS の設定 カスタム IAM ロール キー認証方式ではキーを発行したマシンアカウントに紐づけていた許可ポリシーを カスタム IAM ロール に紐づけます。 そのため、今回の例では SecOpsFederationRole という名前で新規作成します。 # 設定項目 設定値 1 信頼されたエンティティタイプ ウェブアイデンティティ 2 アイデンティティプロバイダー Google 3 Audience サブジェクト ID なお サブジェクト ID はデータフィードの設定画面から取得可能で、後述する信頼ポリシーや ID プロバイダーの設定でも使用します。 データフィードの設定画面からサブジェクトIDを取得 次に、S3 と SQS に関する最小権限をもつ許可ポリシー(今回の例では secops-s3-access )をロールに紐づけます。 # secops - s3 - access { " Version ": " 2012-10-17 ", " Statement ": [ { " Sid ": " ListAllowedBuckets ", " Effect ": " Allow ", " Action ": " s3:ListBucket ", " Resource ": [ " arn:aws:s3:::yutakei-secops-cloudtrail-test " ] } , { " Sid ": " ReadObjectsFromAllowedBuckets ", " Effect ": " Allow ", " Action ": " s3:GetObject ", " Resource ": [ " arn:aws:s3:::yutakei-secops-cloudtrail-test/* " ] } , { " Sid ": " ReadFromSQSForCloudTrailFeed ", " Effect ": " Allow ", " Action ": [ " sqs:ReceiveMessage ", " sqs:DeleteMessage ", " sqs:GetQueueAttributes ", " sqs:GetQueueUrl " ] , " Resource ": [ " arn:aws:sqs:ap-northeast-1:945008193730:yutakei-secops-cloudtrail-queue " ] } ] } カスタム IAM ロール(信頼ポリシー) ロールを作成後、Google SecOps が OIDC トークンを用いてこのロールを一時的に引き受けられるようにするため(Assume Role するため)、 信頼ポリシー を以下のように定義します。 Principal には OIDC プロバイダ ( Google )を、Condition 句には サブジェクト ID ( accounts.google.com:sub )を明示することで、指定した SecOps インスタンスのアクセスのみを許可します。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Effect ": " Allow ", " Principal ": { " Federated ": " arn:aws:iam::945008193730:oidc-provider/accounts.google.com " } , " Action ": " sts:AssumeRoleWithWebIdentity ", " Condition ": { " StringEquals ": { " accounts.google.com:sub ": " 1234567890987654321 " } } } ] } ID プロバイダー IAM ロールの設定に加え、AWS アカウント全体の設定として ID プロバイダー (OIDC プロバイダー)の設定が必要です。 Google の認証基盤( https://accounts.google.com )を信頼済みプロバイダーとして登録し、Google SecOps の サブジェクト ID を追加します。 これにより、Google SecOps が発行するトークンを、AWS 側が正当なリクエストとして受け入れられるようになります。 # 設定項目 設定値 1 プロバイダのタイプ OpenID Connect 2 プロバイダの URL https://accounts.google.com 3 対象者 サブジェクト ID データフィードの設定 認証方式を キーレス認証 (AWS IAM Role for Identity Federation)に変更し、先ほど作成したロール ARN を入力し変更を反映させます。(サブジェクト ID は自動入力されます) これによりキー認証によるログ取り込みからキーレス認証のログ取り込みに切り替わります。 なお、前述の ID プロバイダーの設定が未完了の場合、以下のようにエラーが発生します。 ID プロバイダー未設定による設定エラー 動作確認 キーレス認証に切り替えた後も問題なくログが取り込めていることを確認できました。 関連記事 blog.g-gen.co.jp 武井 祐介 (記事一覧) クラウドソリューション部クラウドエンジニアリング課。 Google Cloud Partner Top Engineer 2026 選出。 趣味はロードレースやサッカー観戦、ゴルフ、筋トレ。 Follow @ggenyutakei
G-gen の武井です。当記事では、Google が提供する SIEM/SOAR 製品である Google SecOps に、AWS CloudTrail ログを取り込む方法について解説します。 はじめに Google SecOps とは データフィードとは 設定の流れ AWS の設定 S3 バケット SQS(Simple Queue Service) SQS アクセスポリシー S3 イベント通知 CloudTrail IAM データフィードの設定 動作確認 関連記事 はじめに Google SecOps とは Google Security Operations (以下 Google SecOps、旧称 Chronicle)は、Google Cloud が提供する 統合セキュリティ運用プラットフォーム です。 SIEM、SOAR、脅威インテリジェンス、Gemini を利用した AI による運用支援を提供します。これらにより、脅威の検知・調査・対応を一元的に行えます。結果として、セキュリティ運用の効率化と高度化を実現できます。 参考: Google SecOps の概要 詳細は、以下の記事をご参照ください。 blog.g-gen.co.jp データフィードとは Google SecOps では、AWS、Azure、その他 SaaS など、Google Cloud 以外の環境のログデータを取り込む仕組みとして データフィード機能 があります。 SecOps UI もしくは Feed Management API を用いて、ログソース(Amazon S3、Cloud Storage、Pub/Sub、Webhook など)を指定し、各種ログを SecOps に取り込む設定を行います。 ソースタイプ 概要 ストレージ Google Cloud、AWS、Azure のクラウドストレージバケットに保存されたログデータを定期的に取得 Amazon SQS S3 バケットの通知をキュー経由で受信し、ログデータを取得(リアルタイムかつ安定的に取り込み) ストリーミング Amazon Data Firehose、Cloud Pub/Sub、Webhook などを経由し、SIEM の HTTPS エンドポイントにログデータをストリーミングでプッシュ サードパーティ API CrowdStrike、SentinelOne、Palo Alto など、外部 SaaS から API 経由でログデータを取得 参考: フィード管理の概要 設定の流れ 当記事では以下の構成のもと、S3 バケットに格納した CloudTrail ログを、データフィード機能を使って Google SecOps に取り込みます。 その際、 Amazon SQS を用いることで、S3 バケットへのログ格納通知をキュー経由で受信し、ログデータを リアルタイムかつ安定的 に取り込みます。 大まかな設定手順は、以下のとおりです。 順序 設定項目 設定箇所 1 S3 バケットの設定 AWS 2 SQS の設定 AWS 3 SQS アクセスポリシーの設定 AWS 4 S3 イベント通知の設定 AWS 5 CloudTrail の設定 AWS 6 IAM の設定 AWS 7 データフィードの設定 Google SecOps 8 動作確認 Google SecOps 参考: AWS CloudTrail ログを収集する AWS の設定 S3 バケット S3 バケットは以下の手順に従い作成します。 参考: 汎用バケットの作成 SQS(Simple Queue Service) 今回の構成では、バケット全体を定期スキャンするのではなく、 ログ生成をトリガーにリアルタイムで取り込み を行います。 そのため、以下の手順に従い 標準タイプ でキューを作成します。 参考: Amazon SQS コンソールを使用した標準キューの作成 SQS アクセスポリシー S3 バケットから SQS キューにメッセージを送信するため、キューのアクセスポリシーを編集し、 S3 サービスプリンシパル ( s3.amazonaws.com )に対して、キューへのメッセージ送信( SQS:SendMessage )を許可します。 また、意図しないバケットからの書き込みを防ぐため、ポリシー内の Condition 句で「特定の AWS アカウント」かつ「特定の S3 バケット」からのリクエストのみを許可するように制限を行います。 今回の例では、以下のアクセスポリシーを定義しました。 { " Version ": " 2012-10-17 ", " Id ": " S3ToSQS ", " Statement ": [ { " Sid ": " AllowS3ToSendMessage ", " Effect ": " Allow ", " Principal ": { " Service ": " s3.amazonaws.com " } , " Action ": " SQS:SendMessage ", " Resource ": " arn:aws:sqs:ap-northeast-1:945008193730:yutakei-secops-cloudtrail-queue ", " Condition ": { " StringEquals ": { " aws:SourceAccount ": " 945008193730 " } , " ArnLike ": { " aws:SourceArn ": " arn:aws:s3:::yutakei-secops-cloudtrail-test " } } } ] } 参考: Amazon SQS でのポリシーの使用 S3 イベント通知 続けて、S3 バケットから SQS キューにメッセージを送信するため、S3 バケットのプロパティからイベント通知を設定します。 すべてのオブジェクト作成イベントを先ほどのキューに送信 できるよう、以下の手順に従い作成します。 参考: Amazon S3 イベント通知 CloudTrail 以下の手順に従い、先ほど作成した S3 バケットを CloudTrail ログの格納先とする 証跡 を作成します。 今回の構成では AWS KMS や SNS を使用しないため、 ログファイルの SSE-KMS 暗号化 ならびに SNS 通信の配信 については有効化しません。 なお、ログとして取り込むイベントタイプや管理イベントの API アクティビティは任意です。 参考: AWS CloudTrail と S3 を構成する 参考: CloudTrail コンソールで証跡を作成する IAM Google SecOps のデータフィードで CloudTrail ログを取り込むには、 アクセスキー と シークレットアクセスキー が必要です。 そのため、以下の公式ドキュメントに従い Google SecOps 用のマシンユーザー(AWS マネジメントコンソールへのユーザーアクセス不可)を作成してキーを発行します。 公式ドキュメントには、作成したマシンユーザーに AmazonS3FullAccess を付与する旨の記述がありますが、今回の例では S3 と SQS に関する 最小権限のカスタム IAM ポリシー を以下のとおり作成して付与しました。 { " Version ": " 2012-10-17 ", " Statement ": [ { " Sid ": " ListAllowedBuckets ", " Effect ": " Allow ", " Action ": " s3:ListBucket ", " Resource ": [ " arn:aws:s3:::yutakei-secops-cloudtrail-test " ] } , { " Sid ": " ReadObjectsFromAllowedBuckets ", " Effect ": " Allow ", " Action ": " s3:GetObject ", " Resource ": [ " arn:aws:s3:::yutakei-secops-cloudtrail-test/* " ] } , { " Sid ": " ReadFromSQSForCloudTrailFeed ", " Effect ": " Allow ", " Action ": [ " sqs:ReceiveMessage ", " sqs:DeleteMessage ", " sqs:GetQueueAttributes ", " sqs:GetQueueUrl " ] , " Resource ": [ " arn:aws:sqs:ap-northeast-1:945008193730:yutakei-secops-cloudtrail-queue " ] } ] } 参考: AWS IAM ユーザーを構成する データフィードの設定 CloudTrail ログが格納された S3 バケットの URI、SQS キューの ARN、そしてキー情報を用いて Google SecOps との連携を行い、ログの取り込みを行います。 その他にも、ログの種別や取り込み先環境を識別するために Ingestion Labels と Namespace も設定します。 設定が適切に行われると STATUS 列の値が Active と表示されます。なお、ログが取り込めている場合でも、LAST SUCCEDED ON 列に ログの最終取り込み日時 (UTC)が表示されないこともあります。 参考: AWS CloudTrail フィードを設定する方法 参考: Supported log types with a default parser 参考: アセットの名前空間を使用する 動作確認 AWS はデフォルトパーサーが用意されているため、Google SecOps にログが取り込まれると自動的に UDM イベントにパースされます。 SIEM Search (UDM 検索)メニューから以下のクエリを入力して実行すると、ログが取り込まれていることを確認できました。 metadata.log_type = "AWS_CLOUDTRAIL" 選択した UDM イベントを展開すると、筆者が S3 API をコールした際の記録が残されていました。 Event Viewer を Event Fields(UDM)から Raw Log に切り替えると、パースされる前の生ログを確認することも可能です。 Data Ingestion and Health (ネイティブダッシュボードの1つ)からも、CloudTrail のログ( AWS_CLOUDTRAIL )がエラーなく取り込めていることも確認できました。 関連記事 blog.g-gen.co.jp 武井 祐介 (記事一覧) クラウドソリューション部クラウドエンジニアリング課。 Google Cloud Partner Top Engineer 2026 選出。 趣味はロードレースやサッカー観戦、ゴルフ、筋トレ。 Follow @ggenyutakei
G-gen の杉村です。2026年1月に発表された、Google Cloud や Google Workspace のイチオシアップデートをまとめてご紹介します。記載は全て、記事公開当時のものですのでご留意ください。 はじめに Google Cloud のアップデート LOAD DATA/CREATE EXTERNAL TABLE のフォーマット指定オプションが GA Cloud Run functions で Direct VPC egress が使用可能に(Preview) Gemini CLI 利用状況を Cloud Monitoring にエクスポート Gemini Enterprise の Agent Designer が一般公開(GA) Cloud Run(functions)で pyproject.toml を使ったデプロイに対応 Cloud Load Balancing に Managed Workload Identity が登場(Preview) Cloud DNS で「DNS Armor」が一般公開(GA) Looker Studio で異なるデータソースの図表に同じフィルタを適用できるように Google Cloud にバンコクリージョン(asia-southeast3)が登場 Gemini Cloud Assist を使って BigQuery のジョブ履歴を解析できるように Compute Engine で N4A インスタンスが Preview → 一般公開(GA) Spanner でカラムナエンジンが Preview 公開 AlloyDB for PostgreSQL が PostgreSQL 18 に対応(Preview) BigQuery で Conversational Analytics 機能が Preview 公開 割り当て(Quota)の自動調整機能が組織やフォルダレベルにも対応 Google Workspace のアップデート Dropbox から Google ドライブへの移行ツールが一般公開(GA) Google Meet 音声翻訳がベータ版で利用可能になる予定(2026-01-27) Google フォームで締切日や集まった回答数に応じた自動的な受付停止が可能に Microsoft Office のパスワード保護付きファイルが編集できるように Google Workspace ユーザー向けに動画生成ツール Flow が使えるように Google チャットでメッセージの転送が可能に Google Meet の Ask Gemini 機能が2月上旬から日本語に対応 Google カレンダーで予定作成時に Gemini が会議参加者の空き時間を提案 Gemini アプリで Gemini Notebook をデータソースとして追加可能に Google フォームで回答者を細かく制御できるようになった はじめに 当記事では、毎月の Google Cloud(旧称 GCP)や Google Workspace(旧称 GSuite)のアップデートのうち、特に重要なものをまとめます。 また当記事は、Google Cloud に関するある程度の知識を前提に記載されています。前提知識を得るには、ぜひ以下の記事もご参照ください。 blog.g-gen.co.jp リンク先の公式ガイドは、英語版で表示しないと最新情報が反映されていない場合がありますためご注意ください。 Google Cloud のアップデート LOAD DATA/CREATE EXTERNAL TABLE のフォーマット指定オプションが GA BigQuery release notes - January 06, 2026 (2026-01-06) BigQueryの「LOAD DATA」「CREATE EXTERNAL TABLE」の際の以下オプションが Preview → 一般公開(GA)。これまで必要だったデータ取り込み前のいくつかの前処理が不要になり運用が簡素化される。 time_zone date_format、datetime_format、time_format、timestamp_format null_markers source_column_match BigQuery のロード時や外部テーブル作成時のオプション Cloud Run functions で Direct VPC egress が使用可能に(Preview) Configure Direct VPC egress for 2nd gen functions (2026-01-06) Cloud Run functions(2nd gen)で Direct VPC egress が使用可能に(Preview)。 サーバーレス関数から VPC にアクセスする手段の1つ。従来手法である Serverless VPC Access connector よりも安価で低レイテンシのため、GA 後はこちらが推奨。 Cloud Run functions で Direct Vpc Egress が使用可能に Gemini CLI 利用状況を Cloud Monitoring にエクスポート Instant insights: Gemini CLI's New Pre-Configured Monitoring Dashboards (2026-01-08) Gemini CLI 利用状況を Cloud Monitoring にエクスポートできるように。 OpenTelemetry によりメトリクスとログを送信。 Gemini Enterprise の Agent Designer が一般公開(GA) Agent Designer overview (2026-01-13) Gemini Enterprise の Agent Designer が一般公開(GA)。ノーコードエージェントを開発するための Web UI。 Gemini Enterprise の Agent Designer でノーコードエージェントを開発 以下の記事も参照。 blog.g-gen.co.jp Cloud Run(functions)で pyproject.toml を使ったデプロイに対応 Deploy Python applications with a pyproject.toml file (2026-01-13) Cloud Run(ソースコードからのデプロイ)と Cloud Run functions の Python ランタイムで、pyproject.toml を使ったデプロイに対応。 これまで主流だった requirements.txt に加え、PEP 518 や PEP 621 で標準化された pyproject.toml を直接利用できる。これにより、Poetry や Hatch といったモダンなツールを用いたプロジェクト構成をそのままデプロイに活用可能。 Google Cloud の Buildpacks がこのファイルを自動検出し、必要なライブラリをインストールしてコンテナをビルドする。ビルド設定や依存関係、メタデータを一つのファイルに集約できるため、プロジェクトの管理効率が向上する。 Cloud Load Balancing に Managed Workload Identity が登場(Preview) Backend mTLS with managed workload identity overview (2026-01-16) Cloud Load Balancing に Managed Workload Identity が登場(Preview)。 LB とバックエンド間の mTLS の構築がシンプルに。証明書の自動管理で運用負荷を下げつつ通信中のデータのセキュリティを強化。 Cloud DNS で「DNS Armor」が一般公開(GA) Advanced threat detection with DNS Armor (2026-01-16) Google Cloud の Cloud DNS で「DNS Armor」が一般公開(GA)。 VM 等からの DNS クエリを検査して悪意あるアクティビティを検知してログ記録する。Infoblox 社が提供する脅威情報に基づく。 Looker Studio で異なるデータソースの図表に同じフィルタを適用できるように Use controls across data sources (2026-01-18) Looker Studio で、異なるデータソースを参照しているチャート(図表)を単一のフィルタ(コントロール)で制御できるようになった。 フィールド ID を上書きして共通にすることでフィルタリングを共通化できる。 Google Cloud にバンコクリージョン(asia-southeast3)が登場 Cloud locations (2026-01-20) Google Cloud にバンコクリージョン(asia-southeast3)が登場。 タイ国内や周辺地域からのレイテンシなどが最適。東アジアではシンガポール、ジャカルタ、香港、台湾、東京、大阪、ソウルに次いで8個目。 これにより、2026年1月現在の Google Cloud リージョンの総数は43、ゾーンは130になった。 Google Cloud のリージョン・ゾーンの総数 Gemini Cloud Assist を使って BigQuery のジョブ履歴を解析できるように Analyze jobs (2026-01-21) Gemini Cloud Assist を使って BigQuery のジョブ履歴を解析できるようになった。 長時間クエリの原因を調べたりジョブ失敗の原因などを Gemini に質問できる。Gemini Cloud Assist を使うには現在、Google Cloud コンソールの言語設定を英語に変更する必要あり。 Compute Engine で N4A インスタンスが Preview → 一般公開(GA) N4A machine series (2026-01-26) Google Cloud の Compute Engine で N4A インスタンスが Preview → 一般公開(GA)。 Google が開発した Arm ベースプロセッサである Axion を搭載。費用対効果に優れる。ただし2026年1月末現在では、東京・大阪リージョンは未対応。 Spanner でカラムナエンジンが Preview 公開 Spanner columnar engine overview (2026-01-26) Spanner でカラムナエンジンが Preview 公開。 database でポリシーを有効にするとバックグラウンドで列指向形式でもデータを保持するようになり、適切なときに自動でそちらを使うようになる。分析系クエリの性能が最大200倍向上とされている。 AlloyDB for PostgreSQL が PostgreSQL 18 に対応(Preview) Create a new cluster and primary instance (2026-01-27) AlloyDB for PostgreSQL が PostgreSQL 18 に対応(Preview)。 PostgreSQL 18 は 2025-09-25 にリリースされた最新メジャーバージョン。 BigQuery で Conversational Analytics 機能が Preview 公開 Conversational analytics overview (2026-01-29) BigQuery で Conversational Analytics 機能が Preview 公開。 生成 AI に自然言語で質問すると AI が自動でクエリを作成して質問に回答してくれる。データソースとなるテーブルを指定してエージェントを作成。 詳細は、以下の記事も参照。 blog.g-gen.co.jp 割り当て(Quota)の自動調整機能が組織やフォルダレベルにも対応 Use the quota adjuster (2026-01-30) 割り当て(Quota)の自動調整機能が、組織やフォルダレベルにも対応。 これまではプロジェクトレベルのみ。ピーク使用量が割り当てに近づいたとき、自動で引き上げリクエストが試みられる。以下の記事も参照。 blog.g-gen.co.jp Google Workspace のアップデート Dropbox から Google ドライブへの移行ツールが一般公開(GA) Now generally available: Migrate files from Dropbox to Google Drive (2026-01-05) Dropbox から Google ドライブへの移行ツールが一般公開(GA)。昨年11月にオープンベータ公開されていた。 Google 管理コンソールから利用。Google Workspace 各種エディションで利用可能。 Google Meet 音声翻訳がベータ版で利用可能になる予定(2026-01-27) Control Speech Translation in Google Meet for your users (2026-01-07) Google Meet 音声翻訳は現在、アルファ版で利用可能。同機能が、2026-01-27 にベータ版としてより多くの人が利用可能になる予定。 Business Plus、Enterprise Plus など一部の Google Workspace エディションのみのためドキュメントを要確認。 Google フォームで締切日や集まった回答数に応じた自動的な受付停止が可能に Set Google Forms to automatically stop accepting responses based on date and time or response count (2026-01-12) Google フォームで、締め切り日や集まった回答数に応じて、自動的に受付停止できるように。 イベント登録フォームなどで、手動で受付停止しなくても済むようになる。Google Workspace、個人アカウント等などで 2026-01-12 から順次ロールアウト。 Microsoft Office のパスワード保護付きファイルが編集できるように Editing password-protected Microsoft Office files directly in Google Drive (2026-01-14) Google Workspaceで、Microsoft Office のパスワード保護付きファイルが編集できるように。 Word、Excel、PowerPoint に対応。全エディションで、順次ロールアウトされて使用可能になる。 Google Workspace ユーザー向けに動画生成ツール Flow が使えるように Flow now available as an additional Google service for Workspace customers (2026-01-16) Google Workspace ユーザー向けに動画生成ツール Flow が使えるように。 「AI-powered filmmaking tool」とされており、文章から動画や画像を生成できる。プロンプトの調整機能など、動画編集に関する機能が充実。 Google Workspace においては「additional Google service(その他の Google サービス)」の扱いであり、以下のような条件が適用される。 サービスは予告なく変更される場合があります。 地域によってはご利用いただけないサービスがあります。 現在のところ、これらのサービスは、サポートおよびサービスレベル契約の対象外です。サービスに関してご不明な点がある場合は、Google ヘルプセンターとヘルプ フォーラムをご確認ください。その他のサービスに対するサポートの拡充は、今後の検討事項となっています。 Google チャットでメッセージの転送が可能に Forward messages in Google Chat (2026-01-20) Google チャットで、メッセージの転送ができるようになった。 全ユーザーに順次ロールアウト。 Google Meet の Ask Gemini 機能が2月上旬から日本語に対応 Ask Gemini in Google Meet is expanding to Workspace Business Standard customers, additional languages, and mobile usage (2026-01-21) Google Meet の Ask Gemini 機能が2月上旬から日本語に対応。 会議に遅れて参加しても会議内のチャットで Gemini に質問してキャッチアップしたり、要点やアクションアイテムをまとめたりできる。 また、対応エディションが拡充し、Business Standard エディションでも利用可能になった。 Google カレンダーで予定作成時に Gemini が会議参加者の空き時間を提案 Better time suggestions for meeting with your colleagues using Gemini in Google Calendar (2026-01-26) Google カレンダーで予定作成時に Gemini が会議参加者の空き時間を提案してくれるようになった。 全員の空きスロットを探して自動でスロットを提案する。即時リリースドメインではすでに使用可能になっている。 Gemini アプリで Gemini Notebook をデータソースとして追加可能に Take your notebooks further by adding NotebookLM as a source in the Gemini app (2026-01-27) Google Workspace ユーザーの Gemini アプリで、Gemini Notebook をデータソースとして追加可能になった。個人アカウントでは以前から使えた機能が、Google Workspace にも展開された。 2026-01-20から順次ロールアウトが始まっている。 データソースとして NotebookLM を追加 Google フォームで回答者を細かく制御できるようになった All Google Forms will now have granular controls over who can respond (2026-01-29) Google フォームで回答者を細かく制御できるようになった。 ユーザー、グループなどに限定して回答者を制限できる。以前は回答者は「組織内」「リンクを知っている全員」しか選べなかった。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
G-gen の杉村です。BigQuery には Conversational Analytics (対話型分析)機能が備わっており、データに関する質問を生成 AI に対してチャット形式で投げかけることができます。この機能を使うことで、SQL の知識がなくても、自然言語でデータをクエリすることができます。 概要 Conversational Analytics とは 使用イメージ 料金 他の手法 データポータルとの統合 データエージェント データエージェントとは 設定項目 公開とアクセス制御 データインサイトの自動生成 BigQuery ML 対応 精度向上のために ビジネスロジックの組み込み メタデータの整備 参考記事 運用、セキュリティ、コスト 割り当て(Quota) データのアクセス制御 コストのガードレール 概要 Conversational Analytics とは BigQuery の Conversational Analytics (対話型分析)、あるいは データエージェント (data agents)とは、日本語や英語などの 自然言語で BigQuery のデータを抽出 できる、生成 AI 機能です。 チャット形式で生成 AI に自然言語で質問をすることで、SQL が自動生成され、テキストや図表による回答が得られます。 参考 : Conversational analytics overview BigQuery の Conversational Analytics Conversational Analytics は、以下のような質問に答えることができます。 「〇年〇月の〇〇カテゴリの商品の売上金額を集計して」 「〇年〇月から〇年〇月までの間の、〇〇の在庫量の変動をチャートにして」 当機能は Google Cloud の Web コンソール画面に組み込まれており、追加ライセンス等は不要です。 当機能は、管理者側で データエージェント と呼ばれる設定を事前に作成し、利用者向けに権限を付与して公開することで使用できます。このように、エージェントの機能や特性を管理する側と、それを利用する側で役割の分担ができることも特徴です。 データエージェントの動作 使用イメージ 架空の文房具販売店の「注文履歴」「商品マスタ」「顧客マスタ」テーブルを登録したデータエージェントを使って、当機能の使用例を紹介します。 データエージェントとのチャット画面で、 2026年2月の、売れ行きトップ10の商品をリストしてください。 と質問します。 質問を入力 データエージェントは、テキストや図表を交えて質問に回答します。バックエンドでは、生成 AI が日本語による質問を SQL に変換して BigQuery に実行していますが、利用者はそれを意識する必要はありません。 データエージェントによる回答 チャットでは、前の回答を踏まえて、続けて質問ができます。 追加の質問にも回答できる この例では事前にデータエージェントに複数のテーブルを登録してあるため、バックエンドではそれらのテーブルが結合(join)されています。この例では、1つのトランザクションテーブル( orders )と2つのマスタテーブル( customers 、 items )が結合されています。 エージェントに登録されているテーブル 組織における使用イメージは、例えば以下のようなものとなります。 管理者側(クラウド管理者やデータエンジニア、データスチュアードなど)がデータエージェントを作成し、ソースデータやアクセス制御を定義する 使用者はデータエージェント選択画面の URL( https://console.cloud.google.com/bigquery/agents_hub )へアクセス。エージェントを選択して対話型分析を使用開始する エージェント選択画面 なお、データエージェントとのチャット画面は Google Cloud コンソールの一部ですので、Google Cloud コンソールにログインして「BigQuery > エージェント」と遷移することでもアクセスできます。 料金 BigQuery の Conversational Analytics 機能は、2026年6月現在、無料で使用できます。ただし2026年6月現在、ドキュメントには、2026年9月30日以降には追加料金が発生する可能性が示唆されています。 なお Conversational Analytics 機能自体の課金の有無に関わらず、 BigQuery へのクエリ料金 は通常どおり発生します。後述のとおり、意図しない大規模スキャンによる突発課金を防ぐために、事前にエージェントに最大バイト数を指定することができます。 参考 : Conversational analytics overview - Pricing 他の手法 BigQuery に対して、自然言語によってクエリを行う手法は、当記事で紹介する Conversational Analytics 以外にも複数あります。以下の記事も参照してください。 blog.g-gen.co.jp データポータルとの統合 Google が無償で提供する BI ダッシュボードツールである データポータル (英名 Data Studio、旧称 Looker Studio)からは、BigQuery の Conversational Analytics を呼び出すことができます。 データ管理者が BigQuery でデータエージェント(後述)を定義し、それを全社の従業員がデータポータルの会話型分析画面から参照する、といった利用方法が可能です。全従業員が自然言語で BigQuery のデータをクエリできる状態を容易に作り上げることができます。 なおこの利用にあたり、データポータル Pro ライセンスは不要です。 参考 : データポータルの会話型分析の概要 データポータルから呼び出した Conversational Analytics データエージェント データエージェントとは BigQuery の Conversational Analytics 機能を使用するには、まず管理者が データエージェント を作成します。データエージェントは AI チャットの管理単位です。 データソースとなるテーブルの登録やカスタムメタデータの定義、利用者への権限付与などを、データエージェントの単位で行います。 参考 : Create data agents 使用者が Google Cloud コンソールのデータエージェント一覧画面にアクセスし、一覧からエージェントを選択することで、チャットが開始されます。 設定項目 データエージェントには、以下のような設定項目があります。 名称 説明 ナレッジソース データソースとなるテーブル、ビュー、UDF(ユーザー定義関数)。複数選択できる 手順 (Instructions) エージェントに組み込むプロンプト(システムインストラクション)。守らせる手順やルールなどを自然言語で記述する 検証済みクエリ AI が参考にするための、ビジネスロジックを反映したゴールデンクエリ。想定質問とそれに対する SQL を記述する 用語集 ユーザープロンプト理解のため AI が参考にする Dataplex 用語集 課金される最大バイト数 BigQuery の費用スパイクを防止するため、最大バイト数を設定できる エージェント編集画面 公開とアクセス制御 エージェントを作成したり編集したあと、エージェントを 公開 することで、設定が使用者に反映されます。公開せずに 保存 のみを行い、管理者のみに反映された状態にしておくこともできます。 参考 : Create data agents - Preview and publish the agent エージェントには IAM によるアクセス制御が適用されるため、特定の従業員にだけ公開できます。エージェントに質問するユーザーは、エージェントに対する権限に加え、データソースとなるテーブルやビュー等に対する閲覧権限も必要です。 参考 : Analyze data with conversations - Required roles データインサイトの自動生成 データエージェントのナレッジソースとしてテーブルを追加すると、自動的に データインサイト (data insight)が生成されます。このメタデータは、AI によってデータの理解に利用されます。 参考 : Create data agents - Generate insights なおデータインサイトは Dataplex Universal Catalog の機能であり、Conversational Analytics 機能を使わない場合でも、単独で使用できます。 参考 : Dataplex Universal Catalog でデータ分析情報にアクセスする BigQuery ML 対応 BigQuery の Conversational Analytics 機能は、 BigQuery ML にも対応しています。データエージェントの回答に BigQuery ML 関数の結果を含ませられるほか、検証済みクエリに含ませることもできます。これによって、データエージェントと生成 AI やベクトル検索を組み合わせることができます。 以下は、使用可能な BigQuery ML 関数の一部抜粋です。 AI.FORECAST AI.DETECT_ANOMALIES AI.KEY_DRIVERS AI.GENERATE AI.SCORE AI.SEARCH AI.AGG データエージェントの検証済みクエリに BigQuery ML 関数を使ったクエリを記述しておくことで、AI が関数を使った回答を生成しやすくなります。 参考 : Conversational analytics overview - BigQuery ML support 精度向上のために ビジネスロジックの組み込み データエージェントの精度を向上するには、管理者がエージェントを作成する際に、適切な 手順 (Instructions)や 検証済みクエリ 、 Dataplex 用語集 などをエージェントに登録します。 これにより、組織のビジネスロジックが AI エージェントに組み込まれ、利用者のプロンプト(質問文)が正確に SQL に反映されるようになるほか、質問があいまいでもある程度カバーすることができます。 ただし公式ドキュメントには「カスタムテーブルメタデータやフィールドのメタデータ、検証済みクエリなど、他のコンテキスト機能でサポートされていない方法でコンテキストを改善したりする必要がある場合にのみ、エージェント向けのカスタム指示を作成してください。」と記載されており、 まずはメタデータ付与や検証済みクエリの登録を試すべき である、と示唆されています。 参考 : Create data agents - Create agent instructions メタデータの整備 BigQuery の標準機能として、テーブルやそのフィールドには、テキスト形式の 説明 (description)を付与できます。テーブルや列のビジネスメタデータを自然言語で付与しておくことで、AI がテーブルやデータを理解することの助けになります。これらのメタデータが正確に付与されていれば、生成される SQL の精度が向上します。 参考 : テーブルを管理する - テーブルの説明を更新する 参考 : テーブル スキーマの変更 - 列の説明を変更する また、データエージェントの設定で、 カスタムテーブルメタデータ や カスタムフィールドメタデータ を付与できます。これらはエージェントが使うためにのみ定義されます。ここにメタデータを設定しても、元のテーブルやビュー等のメタデータ設定には影響しません。カスタムメタデータを設定する画面では、どのようなテキストを付与したらよいか、生成 AI(Gemini)による提案も表示されます。 カスタムメタデータの編集画面 参考記事 BigQuery Conversational Analytics の精度向上については、以下の記事で詳細に考察しています。こちらも参照してください。 blog.g-gen.co.jp 運用、セキュリティ、コスト 割り当て(Quota) 当機能はバックエンドで生成 AI モデルの Gemini を使用しています。通常の API 経由の Gemini 呼び出しと同じく、当機能による Gemini 呼び出しも、 動的共有割り当て (Dynamic Shared Quota、 DSQ )を採用しています。 多くの Google Cloud プロダクトは、Google Cloud プロジェクトごと、あるいはリージョンごとに割り当て(クォータ)が設定されていますが、Gemini API が採用する DSQ では、他のユーザーと共有するプールからリソースが割り当てられ、需要と共有の変動に応じて割り当てが変動します。 これにより、Google 側でリソースが不足すると 429 Resource Exhausted エラーが発生し、一時的に機能が利用できなくなる可能性があります。このエラーメッセージが表示された場合は、需要と共有のバランスが変動するまで待つ必要があります。 参考 : Conversational analytics overview ‐ Dynamic shared quota データのアクセス制御 データエージェントは、操作するユーザーが権限を持つデータにしかアクセスしません。また、ナレッジソースとして明示的に選んだテーブルや View 以外は参照しません。そのため、BigQuery 側で設定したアクセス制御がそのまま効果を発揮します。 さらに、データエージェントの動作はデータの読み取りに限られ、書き込みや DML による更新、リモート関数の実行は行いません。 個人の使用履歴という観点だと、ユーザーがデータエージェントと行った会話は、個々人の画面にのみ表示され、他のユーザーに共有されません。ただし、BigQuery のジョブ発行履歴は残るため、実行された SQL は記録されます。 参考 : Conversational analytics overview ‐ Security コストのガードレール データエージェントは、質問に応じて自動でクエリを実行します。大きなテーブルの読み込みや、テーブルの結合、AI 関数の頻繁な呼び出しは、クエリのコストを押し上げる要因です。 想定外の高額なクエリを防ぐため、データエージェントには1回のクエリで処理できるデータ量の上限を設定できます。この値は 10,485,760 バイト(10 MB)以上で指定します。ここで設定する上限は、 1回のクエリあたり に処理するデータ量に働きます。データエージェントはクエリの実行前に処理量を見積もり、上限を超えるクエリは課金される前にブロックします。 設定した上限を超えると、データエージェントの回答には、次のようなメッセージが表示されます。 Request cannot be completed at this time. Try again later. Error: Resource has been exhausted (e.g. check quota). また、BigQuery のジョブの詳細では、設定した上限値を含む次のエラーを確認できます。 Query exceeded limit for bytes billed: 10485760. 190840832 or higher required. データエージェントに上限値を指定しない場合は、1回あたりの上限ではなく、プロジェクトの「1日あたりのクエリ使用量(Query usage per day)」が上限として働きます。これは BigQuery のカスタムクォータで、1日に処理したデータ量の累計を制限します。たとえば1日あたりの上限を 100 MB に設定した場合、50 MB と 40 MB のクエリは続けて実行できますが、累計がこの上限を超える次のクエリはエラーになります。なお、カスタムクォータを設定していない場合、このクエリ使用量に既定の上限はありません。 日次の上限を超えると、データエージェントの回答には、次のようなメッセージが表示されます。 Request cannot be completed at this time. Try again later. Error: Resource has been exhausted (e.g. check quota). また、BigQuery のジョブの詳細では、超過したクォータ名を含む次のエラーを確認できます。 Custom quota exceeded: Your usage exceeded the custom quota for QueryUsagePerDay, which is set by your administrator. 想定外のコストを避けるため、1回のクエリあたりの上限を明示的に設定するか、プロジェクトに「1日あたりのクエリ使用量」のカスタムクォータを設定しておくことを推奨します。 参考 : Create data agents - Configure settings 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
Google Cloud のオブジェクトストレージサービスである Cloud Storage において、見落とされがちなのが レプリケーション料金 です。当記事では、ロケーションタイプの選択による料金スパイクの事象と、リージョン間レプリケーション料金の仕組み、ロケーションタイプを決めるポイントについて解説します。 事象 原因 ロケーションタイプ ロケーションタイプと可用性 リージョン間レプリケーション料金とは 料金の算出方法 ターボレプリケーション ロケーションタイプ決定の判断基準 可用性と堅牢性 コストとレイテンシの最適化 事象 Cloud Storage バケットを新規に作成し、大容量(全体で約12.4TiB)のオブジェクトをアップロードしました。すると、想定よりも大きな Cloud Storage 料金が発生しました。 オブジェクト数は1,000個以内であり、オペレーション料金は大きく発生しない想定でした。 料金がスパイクした SKU を確認すると、 Network Data Transfer GCP Replication within Asia ( CA61-E18A-B2D6 )でした。 なお、当記事で扱うこの事象は、以下の SKU でも発生する可能性があります。 Network Data Transfer GCP Replication within Europe( CB83-3C2D-160D ) Network Data Transfer GCP Replication within Latin America( AFC0-C8B7-9708 ) Network Data Transfer GCP Replication within Northern America( AED0-3315-7B11 ) Network Data Transfer GCP Replication within Oceania( 1193-6316-413E ) 原因 当該のバケットを作成する際、ロケーションタイプの設定において、コンソールのバケット作成画面におけるデフォルト設定である マルチリージョン を選択していました。 マルチリージョンまたはデュアルリージョンでは、オブジェクトの作成や更新を行うと、データが地理的に離れた場所にレプリケーション(コピー)されるため、 リージョン間レプリケーション料金 が発生していました。この仕様を認識していなかったため、レプリケーション料金は想定外のものとなりました。 ロケーションタイプ ロケーションタイプと可用性 Cloud Storage では、バケット作成時に ロケーションタイプ 、すなわちデータの保存場所を、以下の3つのうちいずれかから選択します。 ロケーションタイプ 説明 リージョン(Region) 東京( asia-northeast1 )などの特定の1地点に保存 デュアルリージョン(Dual-region) 東京と大阪( asia1 )などの特定の2リージョンに保存 マルチリージョン(Multi-region) アジア( asia )などの広大な地理的エリア内の複数リージョンに保存 上記のうち、デュアルリージョンとマルチリージョンは、リージョン障害に対する耐性を持ちますが、内部的にリージョンをまたいでデータをコピーするため、リージョン間レプリケーション料金が発生します。 参考 : バケットのロケーション リージョン間レプリケーション料金とは リージョン間レプリケーション料金 とは、デュアルリージョンまたはマルチリージョンバケットにオブジェクトを作成したり、更新したりする際に発生する、データ転送費用のことです。 Cloud Storage の下り(Egress)料金は外部に読み出すときにだけ発生すると誤解しがちです。しかし実際には上記のように、デュアルリージョンまたはマルチリージョンバケットのように冗長化構成をとっているバケットで、書き込み時にもネットワーク費用が発生するという点に注意が必要です。 料金の算出方法 リージョン間レプリケーション料金は、書き込んだデータのサイズに応じて発生します。2026年1月現在の主要なロケーションでの料金例は以下の通りです。 ロケーション 料金 (1 GiB あたり) 北アメリカ(US など) $0.02 ヨーロッパ(EU など) $0.02 アジア(ASIA など) $0.08 最新の正確な料金単価は、以下の公式料金ページをご確認ください。 参考 : Cloud Storage の料金 - リージョン間レプリケーション ターボレプリケーション デュアルリージョンのバケットでは、オプション機能として ターボレプリケーション (Turbo Replication)を有効にできます。この機能が有効になっていると、通常より料金が多く発生します。 まず、ターボレプリケーションがオフの場合、リージョン間のコピーは以下の仕様で行われます。 新しく書き込まれたオブジェクトの 99.9% に対しては1時間以内を目標にリージョン間でコピーを完了させる 残りのオブジェクトに対しては12時間以内を目標にコピーを完了させる 一方でターボレプリケーションを有効にすると、オブジェクトの100% が、15分以内にコピー完了するように SLA が設定されます。 参考 : データの可用性と耐久性 - 複数のリージョンにわたる冗長性 参考 : データの可用性と耐久性 - ターボ レプリケーション 参考 : Cloud Storage Service Level Agreement (SLA) その代わり、ターボレプリケーションを有効にすると、リージョン間レプリケーション料金の単価が割増になります。高頻度で大容量の書き込みが発生するワークロードでターボレプリケーションを有効化すると、コストが大幅に上昇する可能性があるため、RPO 要件に基づいた適切な判断が必要です。 参考 : Cloud Storage の料金 - リージョン間レプリケーション ロケーションタイプ決定の判断基準 可用性と堅牢性 単一リージョンのバケットを使用することで、レプリケーション料金を排除できます。分析用の一時ファイルや頻繁に更新されるログなどは、単一リージョンのバケットを選ぶことで、コストを最適化できます。 単一リージョンのバケットであっても、データは複数のゾーンに冗長化されており、十分に高い冗長性と堅牢性(年間99.999999999%)を持っています。 一方で、リージョンレベルの障害が許容できないほどの高い可用性が必要なデータは、その性質によっては、データ転送のコストをかけてでもデュアルリージョンやマルチリージョンを検討します。 コストとレイテンシの最適化 マルチリージョンバケットに保存されるオブジェクトを読み取る際は、読み取り元のコンピューティングリソース(Compute Engine など)が存在するリージョンにかかわらず、常にネットワーク下り料金が発生します。 そのため、特定のリージョンのコンピューティングリソースから頻繁にオブジェクトを読み取る場合は、デュアルリージョンまたは単一リージョンを選択することで、コストを最適化できます。 また、デュアルリージョンまたは単一リージョンは、読み取り側のコンピューティングリソースと同一リージョンであれば、レイテンシも最適化されます。 G-gen 編集部 (記事一覧) 株式会社G-genは、サーバーワークスグループとして「クラウドで、世界を、もっと、はたらきやすく」をビジョンに掲げ、クラウドの導入から最適化までを支援している Google Cloud 専業のクラウドインテグレーターです。
G-gen の min です。BigQuery に統合された AI アシスタント機能である BigQuery データキャンバス について、より実践的な活用方法と、技術的な制約事項について解説します。 はじめに BigQuery データキャンバスとは Conversational Analytics API とは 効果的な質問のテクニック コンテキストを具体的に提示する 複雑な分析は複数のステップに分割する データ条件と集計方法を明示する フォローアップ質問で深掘りする 出力形式を指定するキーワード サンプルデータによる検証 データの準備 実行例 制限事項 概要 可視化の制限 データ処理の制限 サポートされる質問の種類 はじめに BigQuery データキャンバスとは BigQuery データキャンバス (BigQuery data canvas)は自然言語による指示と、グラフィカルなユーザーインターフェイスによってデータの検索、変換、クエリ、可視化を行う機能です。 参考 : BigQuery data canvas でデータを分析する Gemini in BigQuery の全体像や、データキャンバスの基本的な使い方については、以下の記事をご参照ください。 blog.g-gen.co.jp Conversational Analytics API とは BigQuery データキャンバスの裏側では、 Conversational Analytics API という API が動作しています。この API は、ユーザーからの自然言語による質問を受け取り、Gemini モデルを使用して SQL クエリを生成し、データを取得して可視化を行う役割を担っています。 当記事では、Conversational Analytics API の仕様に基づいて、データキャンバスを効果的に利用するための質問テクニックと、考慮すべき制限事項について解説します。 参考 : Conversational Analytics API を使ってみる 効果的な質問のテクニック コンテキストを具体的に提示する 漠然とした質問は、AI の解釈の幅を広げすぎてしまい、期待しない回答につながります。日付、カテゴリ、数値フィルタ、計算ロジックなどの詳細なコンテキストを含めることで、回答の精度が向上します。 改善前 「手動とシステムの請求書はいくつですか?」 改善後 「 毎月 手動で作成される請求書とシステムで作成される請求書の数を教えてください。手動の請求書を1通作成するのに 15分かかると仮定して 、すべての手動の請求書を処理するのにかかる合計時間を 時間単位で計算して 、概要を提示してください。」 このように、具体的な計算要件(「15分かかると仮定」)や出力形式(「概要を提示」)を含めることが重要です。 複雑な分析は複数のステップに分割する 人間と同様に、AI も一度に複数のタスクを依頼されると混乱することがあります。複雑な分析を行いたい場合は、質問を複数のステップに分割し、データキャンバス上でノードをつなげていくアプローチが有効です。 例えば、「各売掛金タイプの平均決済日数と、手動決済の割合と、それにかかった年間時間は?」と一度に聞くのではなく、以下のように分割します。 「2025年5月5日から2025年6月1日までの各売掛金タイプの平均所要日数は何日ですか?」 その結果に対して、「手動決済の割合はどれくらいですか?」 さらにその結果に対して、「手動決済に1つあたり15分かかると仮定した場合、年間でどれくらいの時間を費やしていますか?」 このように段階を追うことで、各ステップで適切なフィルタや集計が適用され、正確な結果が得やすくなります。 データ条件と集計方法を明示する SQL の WHERE 句や GROUP BY 句に相当する条件を、自然言語で明確に指示します。 フィルタ条件 「2025年5月2日から2025年6月3日までの請求書」「未払い残高で結果を最大5件に制限」など 集計条件 「顧客名ごとの未払い残高の合計」「平均経過日数」など フォローアップ質問で深掘りする 一度の質問で完結させる必要はありません。前の質問の結果(コンテキスト)を踏まえて、条件を変更したり追加したりする「フォローアップ質問」が可能です。 元の質問 「46 日を超えて経過したレコードについて、顧客名と未払い残高を教えてください」 フォローアップ 「90 日を超えたレコードに条件を変更し、上位10件に制限してください」 出力形式を指定するキーワード プロンプトに含めるキーワードによって、データキャンバスが提案する可視化形式(グラフの種類)をコントロールできます。 期待する形式 プロンプトに含めるキーワードの例 テーブル (表) 列名を具体的に列挙する(例 : 「顧客名、未払い残高、平均経過日数、売掛金タイプを教えてください」) テキスト (文章) 「概要」「要約」「簡単な回答」 折れ線グラフ 「傾向」「推移」「変化」「変化率」 棒グラフ / 比較表 「比較」「分散」「違い」「上位の業種」 参考 : Conversational Analytics API: 効果的な質問をする サンプルデータによる検証 データの準備 以下の SQL を BigQuery クエリエディタで実行すると、約 1,000 件のダミーデータ(請求書データ)を含むテーブル invoices_sample が作成されます。 このデータセットは、手動(Manual)とシステム(System)作成の偏りや、ランダムな滞留日数を含むデータセットです。 ※ project_id.dataset_id の部分は、ご自身の検証環境に合わせて変更してください。 CREATE OR REPLACE TABLE `project_id.dataset_id.invoices_sample` AS WITH generator AS ( -- 1から1000までの数字を生成(1000行のデータを作成) SELECT x FROM UNNEST(GENERATE_ARRAY( 1 , 1000 )) AS x ) SELECT -- 請求書ID: INV-00001 の形式 CONCAT ( ' INV- ' , LPAD ( CAST (x AS STRING), 5 , ' 0 ' )) AS invoice_id, -- 顧客名: Client_1 〜 Client_50 をランダムに割り当て CONCAT ( ' Client_ ' , CAST ( FLOOR ( 1 + RAND() * 50 ) AS INT64)) AS customer_name, -- 請求日: 2024年1月1日から約1年半の範囲でランダムに生成(記事内の2025年5月も含む) DATE_ADD( DATE ( ' 2024-01-01 ' ), INTERVAL CAST ( FLOOR (RAND() * 550 ) AS INT64) DAY) AS invoice_date, -- 作成タイプ: 70%を System、30%を Manual に偏らせる CASE WHEN RAND() < 0.3 THEN ' Manual ' ELSE ' System ' END AS creation_type, -- 売掛金タイプ: 3種類をランダムに分布 CASE WHEN RAND() < 0.5 THEN ' Product ' WHEN RAND() < 0.8 THEN ' Service ' ELSE ' Consulting ' END AS ar_type, -- 金額: 1,000 〜 100,000 の間でランダム CAST ( FLOOR ( 1000 + RAND() * 99000 ) AS INT64) AS amount, -- 経過日数: 0日のもの(正常)と、長期滞留(異常値)を混ぜる CAST ( FLOOR ( CASE WHEN RAND() < 0.5 THEN 0 -- 50%は未経過(0日) WHEN RAND() < 0.8 THEN RAND() * 30 -- 30%は30日以内 ELSE 30 + RAND() * 100 -- 20%は長期滞留(30〜130日) END ) AS INT64) AS days_overdue FROM generator; 実行例 作成したテーブルをデータキャンバスで開き、先ほど紹介した「コンテキストの提示」を意識したプロンプトを入力してみます。単純な集計だけでなく、 仮定に基づいた計算 を依頼します。 プロンプト creation_type が Manual の請求書と System の請求書の数を教えてください。Manual の請求書 1 通作成するのに 15 分かかると仮定して 、すべての Manual 請求書を処理するのにかかる合計時間を 時間単位で計算して 、概要を提示してください。 実行結果 「Manual の請求書は 306 件、System の請求書は 694 件です。 Manual の請求書をすべて処理するのにかかる合計時間は、306 件 * 15 分/件 = 4590 分、つまり 76.5 時間です。 以下に、作成タイプ別の請求書数を示すグラフを添付します。 ご不明な点がございましたら、お気軽にお尋ねください。」 このデータセットでは、約 30% が Manual (手動)作成として生成されます。AI は単純にレコード数を数えるだけでなく、指示通り「件数 × 15分 ÷ 60分」の計算を行い、 「手動処理に合計で約 76.5 時間かかっています」 といった洞察を返します。 制限事項 概要 Conversational Analytics API の制限事項についてのドキュメントを確認することで、BigQuery データキャンバスの制約事項を理解することができます。当記事では2026年1月現在のドキュメントの記載に基づき、重要なものをピックアップして紹介します。最新情報は、以下のドキュメントを参照してください。 参考 : Conversational Analytics API known limitations 可視化の制限 チャート(図表)の種類によってサポート状況が異なります。 サポート対象 : 折れ線グラフ、面グラフ、棒グラフ(横、縦、積み上げ)、散布図、円グラフ 部分的にサポート対象 (予期しない動作の可能性あり) : マップ、ヒートマップ、ツールチップ付きのグラフ データ処理の制限 大量データを扱う場合、以下の制限に注意が必要です。 BigQuery スキャン制限 : 処理バイト数は 500 GB まで。パーティション分割などを利用し、スキャン量を抑える工夫が必要 結果サイズ : システムが返すデータ結果( DataResult )は、最大 3,000,000バイト (約3MB)。超過分は切り捨て サポートされる質問の種類 現時点では、主にデータの「集計」「可視化」を得意としています。 サポート対象 : 指標の推移、ディメンション別の内訳・分布、ランキング、一意の値の抽出など サポート対象外 : 将来の予測、相関分析・異常検出などの高度な統計分析 佐々木 愛美 (min) (記事一覧) クラウドソリューション部 データアナリティクス課。2024年7月 G-gen にジョイン。G-gen 最南端、沖縄県在住。最近覚えた島言葉は、「マヤー(猫)」。
G-gen の川村です。この記事では、Google の画像生成 AI モデルである Gemini 3 Pro Image、通称 Nano Banana Pro について紹介します。 はじめに 当記事について Nano Banana Pro とは Nano Banana と Nano Banana Pro Nano Banana Pro の利用 概要 Google Workspace での利用 API 経由での利用 特徴 解像度と画質 日本語テキスト描写 思考モード Google 検索との連携 利用手順 Gemini アプリ Gemini Notebook その他 プロンプトのコツ 概要 被写体のシーン変更 対話による段階的編集 複数画像の統合 文字の挿入 高解像度出力 活用事例 広告・マーケティング分野の高速化 コンテンツ制作 留意点 法的・倫理的リスク(著作権と利用規約) 技術的制約・品質管理 はじめに 当記事について 2025年8月26日、Google は画像生成 AI モデル Gemini 2.5 Flash Image、通称 Nano Banana (ナノバナナ)を発表しました。その後、2025年11月20日に後継モデルである Gemini 3 Pro Image、通称 Nano Banana Pro (ナノバナナプロ)がリリースされました。 当記事では、Nano Banana Pro の基本機能、開始方法、プロンプトのコツ、および実務でのユースケースについて解説します。なお、モデルの正式名称は Gemini 2.5 Flash Image や Gemini 3 Pro Image ですが、当記事ではより広く知られている通称である Nano Banana や Nano Banana Pro を呼称として使用します。 参考 : Nano Banana: Image editing in Google Gemini gets a major upgrade 参考 : Nano Banana Pro: Gemini 3 Pro Image model from Google DeepMind Nano Banana Pro とは Nano Banana Pro とは、Google が提供する画像生成・編集 AI モデルです。 前身の Nano Banana は、LM Arena(AI モデルを評価する公開ウェブサイト)の提出時に仮の名前としてつけられたものが、その精度の高さから話題となり、現在では Google 公式の通称として定着しています。 参考 : Why It Accidentally Got Called Nano Banana 🍌 | Made by Google Podcast S8E8 - YouTube (12:34〜) Nano Banana Pro は以下のような特徴により、従来の画像生成 AI の弱点を克服しています。 特徴 説明 被写体の一貫性 生成した人物やオブジェクトの特徴を保持したまま、異なるシーンやポーズで展開 対話型編集 自然言語(プロンプト)での指示により、画像の特定部分を段階的に修正・変更可能 高速処理 通常の画像生成 AI が30秒〜1秒程度かかるのに対し、数秒〜30秒程で生成を完了できる高速性 Nano Banana と Nano Banana Pro Nano Banana Pro が高性能を発揮する一方で、Nano Banana は 速度と効率性 を重視して設計されており、大容量かつ低レイテンシ(低遅延)のタスクに最適化されています。また API 経由での利用時は、利用料金も Nano Banana のほうが安価に設定されています。 なお Gemini アプリ内では、Nano Banana が「高速モード」に割り当てられており、手軽に画像生成したい時や、試行錯誤を繰り返したい場合に適しています。一方で Nano Banana Pro は「思考モード」「Pro」に割り当てられています。 参考 : Gemini アプリで画像を生成、編集する - パソコン - Gemini アプリ ヘルプ Nano Banana と Nano Banana Pro のスペックの違いについては、以下の表を参照してください。 機能 Nano Banana Nano Banana Pro 解像度 最大 1024×1024px(1K) 2K/4K対応(最大4096×4096px) テキスト描写 一部歪みが発生する場合あり 高精度、多言語対応(日本語含む) 参照画像合成 最大3枚を推奨 最大14枚(人物 5 名、オブジェクト6個を含む) 推奨タスク 高速な試行錯誤、低レイテンシの環境 プロ仕様の制作、複雑な対話型編集 参考 : Gemini API  |  Google AI for Developers 参考 : Gemini 3 Pro Image(Nano Banana Pro)  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation 参考 : Gemini 2.5 Flash Image  |  Gemini Enterprise Agent Platform  |  Google Cloud Documentation Nano Banana Pro の利用 概要 Nano Banana Pro は、Gemini アプリ、Gemini Notebook(旧 NotebookLM)、Google スライド、Google Vids など、 Google Workspace に付属のアプリ で使用できます。また、個人向けの Gemini アプリでも利用可能です。 また、Google Cloud や Google AI Studio を使うことで、API 経由での呼び出しも可能なことから、 独自開発のアプリ に組み込むことも可能です。 Google Workspace での利用 Nano Banana Pro は多くの Google Workspace エディションで利用可能ですが、一部機能は Business Standard 以上のプランに限定されています。 Google Workspace エディション Gemini アプリ / Gemini Notebook Google スライド Google Vids 1日の画像生成上限 Business Starter / Enterprise Starter ○ ✕ △ (注1) 3枚 Business Standard / Plus ○ ○ ○ 100枚 Enterprise Standard / Plus ○ ○ ○ 100枚 Google AI Ultra for Business ○ ○ ○ 1,000枚 (注1) Google Vids では、Business Starter 等の下位プランでも 2026 年 5 月末まで期間限定で利用可能です。ただし、それ以降はAI機能の使用に制限が設けられる可能性があります。 その他のエディションや詳細については、以下公式ドキュメントを参照してください。 参考 : Use Gemini Apps with a work or school Google Account - Business / Enterprise - Gemini Apps Help 参考 : Google Vids での Gemini 機能の提供状況について - Google ドキュメント エディタ ヘルプ API 経由での利用 Google Cloud の AI プラットフォームサービス Vertex AI や、個人向けの生成 AI プラットフォームサービス Google AI Studio を使うことで、Nano Banana Pro を API 経由で呼び出すことができます。 これにより、自組織で独自開発したアプリケーションに、Nano Banana Pro による画像生成機能を組み込むことが可能です。 参考 : Vertex AI で Gemini API を使用してコンテンツを生成する Vertex AI と Google AI Studio の違いについては、以下の記事を参照してください。 blog.g-gen.co.jp 特徴 解像度と画質 従来の Nano Banana の解像度上限は 1024 × 1024 ピクセル(1K)でしたが、Nano Banana Pro は 最大 4K(4096 × 4096ピクセル)でのネイティブ生成 に対応しています。 このネイティブ生成とは、単に小さな画像を引き伸ばすではなく、最初から高解像度で画像を生成することを意味しています。高解像度のため、印刷物や大型ディスプレイでの利用時に優位性があります。ただし、現時点では 4K での生成は API 経由での呼び出し時のみとなっている点には注意が必要です。 日本語テキスト描写 AI 画像生成における「文字崩れ」や「日本語に弱い」といった課題が、Nano Banana Pro で劇的に改善されました。 ロゴや看板、ポスターなどの画像内に、ひらがな、カタカナ、漢字を正しく、かつデザインに馴染んだ形で挿入できます。 思考モード Nano Banana Pro では、画像生成する前に、「思考モード」という推論プロセスを踏みます。 この思考モードにより、ユーザーの指示の背景にある「意図」や「文脈」まで整理してから画像を生成します。よって、複雑な指示でも乖離が少ない結果が得られます。 Google 検索との連携 Nano Banana Pro は Google 検索ツールと連携し、リアルタイムの情報を画像に反映できます。 これにより、最新のニュースや天気、株価などのデータに基づいた視覚資料の作成が可能です。 利用手順 Gemini アプリ Gemini アプリ( https://gemini.google.com/app )にアクセス 「画像を作成」(画像①)を選択 モデルメニューから「思考モード」(画像②)を選択(「高速モード」は Nano Banana ( gemini-2.5-flash-image ) を使用) プロンプトを送信 Gemini Notebook Gemini Notebook( https://notebooklm.google.com )にアクセス ノートブックを開いて「ソースを追加」を選択し、ソースをアップロード 「インフォグラフィック」をクリック その他 以下のサービスからも、Nano Banana Pro を使用できます。詳細な手順は省略します。 Google スライド Google Vids Vertex AI Google AI Studio プロンプトのコツ 概要 Nano Banana Pro の性能を引き出すには、以下のような要素を組み合わせることが有効です。 要素 説明 例 被写体 誰、何が 小さな柴犬、キャップを被った男性 場所 / 背景 どんな場面、環境か 雪が舞っている森林、夕暮れのビーチ アクション 何をしているか、状態 勢いよく走っている、座っている スタイル 表現手法 アニメ風、80年代風 被写体のシーン変更 最大 5 人までの人物やキャラクターを一貫して維持しつつ、異なるポーズやシーン、表情の画像を複数生成できます。 プロンプト例 この人物が、おしゃれなカフェでノートPCを開いて作業している様子 対話による段階的編集 被写体を維持したまま自然言語で画像を編集できます。また、会話形式で段階的にリッチな画像を作り上げていくことができます。 プロンプト例(初回) 背景を夜景にして プロンプト例(2回目) 空に大きな花火を打ち上げて 複数画像の統合 最大 14 枚の異なる参照画像(人物、商品、背景など)の要素を組み合わせて、新しい画像を生成します。例えば、自社商品画像と背景画像を組み合わせて広告写真を作成できます。 プロンプト例 このスニーカーが、森の岩の上に自然に置かれている広告写真を作って 文字の挿入 ロゴやポスター、インフォグラフィックなどに、日本語(漢字・ひらがな・カタカナ)を含む正確なテキストを組み込むことができます。 プロンプト例 レトロな喫茶店の木製看板に、『純喫茶 ジージェン』と手書き風の日本語フォントで描いて 高解像度出力 Nano Banana Pro は最大 4K 解像度での画像生成をサポートし、印刷物や大型ディスプレイ向けのプロフェッショナルで高画質な画像も作成できます。 プロンプト例 (古い白黒写真)この写真を、自然な色彩でカラー化し、現代の高画質写真のように修復して 活用事例 広告・マーケティング分野の高速化 広告やマーケティン部分野では、以下のような用途が考えられます。 用途名 概要 商品広告画像の生成 自社商品とモデル画像を合成し、着用イメージを即座に作成 シミュレーション 家具レイアウトや試着イメージなど、様々なシミュレーションのイメージ作成 サムネイル量産 広告バナー、 YouTube やブログのサムネイルを短時間で生成 グローバル展開 日本語ポスターを、レイアウトを維持したまま多言語化 商品広告画像の生成の例を紹介します。 例えば、コスメなどの自社商品画像と、モデルの画像を 2 つ準備します。今回はサンプルとして、Nano Banana Pro を使って 架空の商品と人物 を作成しています。 参考画像① : 架空の化粧水 参考画像② : 架空のモデル この2つの画像をアップロードしたうえで、以下のようなプロンプトを送信します。 この女性がこの化粧水を片手に持ちながら、床に座り込んでいる。 グレー背景のクールなイメージで、ブランド「G-gen」宣伝用のポスターを作って。 このままでも広告として利用できますが、少し雰囲気を変えていきます。続けて、以下のようなプロンプトを送信して修正していきます。 この女性が立った状態で壁にもたれかかっている。 また、化粧水が魅力的に見えるポーズを取っている。 この女性が自然の中で太陽を浴びながら、化粧水を額に寄せている このように自社商品の広告を作成したり、背景や被写体のポーズ、文字の配置も修正できます。光の入り方や影、顔の表情までリアルな写真のように再現できます。 コンテンツ制作 コンテンツ制作の背景では、以下のような用途が考えられます。 用途名 概要 図解の高速化 複雑な情報を視覚的に分かりやすい図解化し、外部公開資料やプレゼン資料の作成を効率化 ストーリーボード制作 被写体の一貫性を保ちつつ、SNS 投稿用の4コマ漫画を内製 キャラクター運用 企業キャラクターを季節イベントや商品紹介などの複数シーンで利用し、企業ブランディングを強化 以下は、インフォグラフィックとしての利用例です。 政府が発表している総合経済対策の PDF 資料は、以下のように複雑な情報がテキストでまとめられており、理解するには隅々まで読む必要があります。 参考 : https://www5.cao.go.jp/keizai1/keizaitaisaku/1121_taisaku_gaiyo.pdf この公開 URL を Gemini Notebook のソースに追加した後、「インフォグラフィック」をクリックします。 数分後、作成された画像がこちらです。 複雑な情報を AI で要約し、わかりやすくインフォグラフィックで図解してくれます。Nano Banana Pro が使われているため、Nano Banana で発生していた文字化けも少なくなり、日本語対応が進化しています。 注意点としては、現時点(2026年1月現在)の Gemini Notebook では、インフォグラフィック画像の修正は実装されていません。Gemini Notebook で生成した画像を編集したい場合は、画像ファイルをダウンロードして Gemini アプリにアップロードしなおし、以下のようなプロンプトを送信します。 この画像を縦型 9:16 にして 続けて、以下のようなプロンプトも送信してみます。 女性がこの画像の内容を、カラーの 4 コマ漫画で説明している 上記のように、一度生成した画像は、Gemini アプリを使うことで会話形式で段階的な修正が可能です。 留意点 法的・倫理的リスク(著作権と利用規約) 著作権・肖像権の侵害 既存のアニメキャラクターや有名人、実在の人物の写真をモデルにして画像を生成・公開する行為は、 著作権や肖像権の侵害 にあたる可能性があります。 名誉毀損 実在の人物の姿を使って不適切な合成画像を公開した場合、名誉毀損にあたる可能性があり、注意が必要です。 技術的制約・品質管理 商用利用時の推奨モデル 広告利用を含む商業利用を行う場合、Google Workspace with Gemini または Vertex AI の利用が推奨されています。 利用上限 Business Standard 以上の場合、1日あたり最大100〜1,000枚の画像生成が可能です。 Business Standard 以下の場合、1日3枚の画像生成が可能です。詳細は以下のドキュメントを参照してください。 参考 : 仕事用または学校用の Google アカウントで Gemini アプリを利用する SynthID(電子透かし)の埋め込み Gemini で生成されたすべての画像には、AI による生成物であることを識別するための目に見えるロゴと、編集を行っても保持される見えない SynthID デジタル透かしが自動的に埋め込まれます。 参考 : AI 生成の画像、動画、音声を検証する - パソコン - Gemini アプリ ヘルプ 川村真理 (記事一覧) クラウドソリューション部 クラウドサポート課 美容業界からITへ転身。Google Workspace 専任サポートから Google Cloud にも興味が湧き日々奮闘中。海外旅行が大好きで11カ国突破、これからも更新予定
G-gen の佐々木です。当記事では、Google Cloud が提供する データサイエンスエージェント (Data Science Agent)について解説します。データサイエンスエージェントは、Colab Enterprise ノートブック上で、AI エージェントがデータクレンジングや分析などのタスクを自動的に行う機能です。 概要 データサイエンスエージェントとは Google Colab のデータサイエンスエージェント 制限事項 料金 開始方法 IAM ロールの設定 Gemini in Colab Enterprise の起動 読み取り可能なデータソース CSV ファイル BigQuery テーブル 使用例 概要 データサイエンスエージェントとは Google Cloud の データサイエンスエージェント (Data Science Agent)とは、データエンジニア、データサイエンティスト、データアナリストのタスクを支援するマネージド AI エージェントです。このエージェントにより、Colab Enterprise ノートブック上で 自然言語によるデータ分析 が実現できます。 データサイエンスエージェントは、 Colab Enterprise ノートブック (IPYNB ファイル)を使用して、ユーザーの入力したプロンプトに従って以下のようなタスクを自律的に行います。 実行計画の生成 データクレンジングの実行 探索的データ分析の実行、データ可視化 機械学習モデルのトレーニング、評価 データサイエンスエージェントは、Google Cloud コンソールの Colab Enterprise もしくは BigQuery Studio から使用することができます。 エージェントが自動的にコードを実行する場合は、コンピュートリソースとして Colab Enterprise の ランタイム が使用されます。 参考 : データ サイエンス エージェントを使用する 参考 : BigQuery で Colab Enterprise データ サイエンス エージェントを使用する 参考 : ランタイムとランタイム テンプレート Google Colab のデータサイエンスエージェント データサイエンスエージェントは、無料のクラウドホスト型ノートブック環境である Google Colab でも使用することができます。Google Cloud のサービスである Colab Enterprise や BigQuery と異なり、Google Cloud の契約が不要であるため、手軽にエージェントを使用することができます。 個人での使用など、Google Cloud が提供する企業・組織向けの高度なアクセス管理やサポート等が不要な場合は、まずはこちらでエージェントを試してみるのもよいでしょう。 Google Colab と Colab Enterprise の比較については、以下の記事をご一読ください。 blog.g-gen.co.jp 参考 : Colab のデータ サイエンス エージェント: Gemini によるデータ分析の未来 制限事項 データサイエンスエージェントには、データソースの制限のほか、以下のような制限事項があります。 初回実行時に5~10分程度のレイテンシーが発生することがある(プロジェクト単位)。 VPC Service Controls が有効化されているプロジェクトでは使用できない。 PySpark を使用する場合、2026年1月現在は Serverless for Apache Spark 4.0 のみ生成できる。古いバージョンの Apache Spark コードは生成できない。 制限事項に関する最新の情報については以下のドキュメントを参照してください。 参考 : データ サイエンス エージェントを使用する - 制限事項 参考 : BigQuery で Colab Enterprise データ サイエンス エージェントを使用する - 制限事項 料金 データサイエンスエージェントは無料で利用することができます。 ただし、エージェントがノートブック上でコードを実行する場合、Colab Enterprise のランタイムが使用されるため、ランタイムの構成(マシンタイプ + ディスク容量)に応じた料金が発生します。 Colab Enterprise の料金に関しては以下の記事をご一読ください。 blog.g-gen.co.jp また、データソースとなる BigQuery にクエリを実行する場合など、他の Google Cloud のサービスを操作する場合、そのサービスの料金が別途発生する可能性がある点には注意が必要です。 開始方法 IAM ロールの設定 データサイエンスエージェントを使用するには、操作するユーザーに対して、プロジェクト単位で以下のロールを付与します。 Colab Enterprise ユーザー (roles/aiplatform.colabEnterpriseUser) Gemini in Colab Enterprise の起動 Colab Enterprise もしくは BigQuery Studio で Colab Enterprise ノートブックを開きます。画面下部にある青いボタンを押下することで、Gemini(Gemini in Colab Enterprise)のプロンプト入力を行い、データサイエンスエージェントに対して指示を与えることができます。 Gemini in Colab Enterprise からプロンプトを入力する 読み取り可能なデータソース CSV ファイル CSV ファイルをデータソースとする場合、プロンプト入力ウィンドウにある + マークからファイルをアップロードし、エージェントが参照するファイルとして指定することができます。 エージェントが参照する CSV ファイルをアップロードする アップロードしたファイルのパスは /content/<ファイル名> となります。 BigQuery テーブル BigQuery テーブルをデータソースとする場合、以下の方法でエージェントからテーブル内のデータを参照できます。 テーブルセレクタを使用する。 プロンプトに <プロジェクトID>:<データセット名>.<テーブル名> の形式で記述する。 プロンプトに @ を記述して BigQuery テーブルを検索する。 テーブルセレクタは、プロンプト入力ウィンドウにある + マークから使用することができます。検索フィルタを設定することで、他のプロジェクトや一般公開データセットのテーブルも参照できます。 エージェントが参照する BigQuery テーブルを選択する 検索フィルタを設定して他のプロジェクトのテーブルを参照する プロンプト内でテーブルを指定する場合は、以下の例のように、プロンプトに <プロジェクトID>.<データセット名>.<テーブル名> の形式で記述することで、対象のテーブルのデータを参照することができます。こちらの方法でも、他のプロジェクトや一般公開データセットのテーブルが参照できます。 `bigquery-public-data.ml_datasets.iris` を使い、アヤメの種類を分類するロジスティック回帰モデルを構築してください また、プロンプトに @<プロジェクトID>.<データセット名>.<テーブル名> のように記述することで BigQuery テーブルを検索することもできます。検索結果として他のプロジェクトのテーブルも表示されますが、実際に参照できるのは同じプロジェクトに存在するテーブルのみです。なお、他のプロジェクトのテーブルを指定すると無視されます。 "@"を使用してテーブルを検索する 使用例 BigQuery Studio でデータサイエンスエージェントを使用し、機械学習モデルの構築を試してみます。 まず、BigQuery Studio で新しいノートブックを開きます。 BigQuery Studio から Colab Enterprise ノートブックを開く 以下のプロンプトを送信して、BigQuery の一般公開データセットにある iris テーブルを使用した機械学習モデルの構築を指示します。 `bigquery-public-data.ml_datasets.iris` を使い、アヤメの種類を分類するロジスティック回帰モデルを構築してください プロンプトを送信すると、タスクの実行計画が表示されます。内容を確認し、[承認して実行] を押下します。 タスクの実行計画 実行計画に従い、エージェントによる自律的なコード生成、実行が行われます。 自律的なコード生成、実行が行われる 2026年1月時点では、タスクの各段階の実行前にユーザーによる承認が必要となっています。都度、前のタスクの実行結果と生成されたコードをレビューし、[承認して実行] を押下します。 タスクの各段階でユーザーによる承認を行う すべてのタスクが完了すると、エージェントが実行したタスクのサマリーが出力されます。 実行結果のサマリーが出力される なお、今回は出力が英語になってしまったので、プロンプトで指示を与えて日本語に翻訳します。 タスクのサマリーを日本語に翻訳したもの 構築したモデルの評価のため、混同行列を用いた可視化を指示してみます。以下のプロンプトを送信します。 構築したモデルに対して、混同行列を作成して モデル評価のための可視化をプロンプトで指示する 別の分類アルゴリズムでモデルを作成し、最初のモデルと比較してみます。以下のプロンプトを送信します。 ランダムフォレストを使用したモデルを構築し、最初のモデルと性能を比較してください。 エージェントによって新たなタスクの計画、実行がされ、サマリーとして以下の出力が得られました。今回の検証では、ランダムフォレストを使用するモデルよりも、最初に構築したロジスティック回帰モデルのほうが良い成績を出しているようです。 新旧モデルの性能比較を含むサマリー出力 このように、データサイエンスエージェントを使用することで、コード生成における Vibe Coding のように、自然言語によるデータ分析を行うことができます。 佐々木 駿太 (記事一覧) クラウドソリューション部 クラウドエンジニアリング1課 北海道在住 大学院まで社会心理学を専攻し、AI に興味を持ち IT 業界へ。2022年6月に G-gen にジョイン。Google Cloud Partner Top Engineer に選出(2024 / 2025 Fellow / 2026)。好きな Google Cloud プロダクトは Cloud Run。 趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。最近は法律の勉強にも目覚め、2級知的財産管理技能士を取得。 Follow @sasashun0805
G-gen の武井です。当記事では Google SecOps に AWS の VPC Flow Logs を取り込む方法について解説します。 はじめに Google SecOps とは データフィードとは 設定の流れ AWS の設定 S3 バケット VPC VPC Flow Logs EC2 インスタンス IAM データフィードの設定 動作確認 関連記事 はじめに Google SecOps とは Google Security Operations (以下 Google SecOps、旧称 Chronicle)は、Google Cloud が提供する 統合セキュリティ運用プラットフォーム です。 SIEM、SOAR、脅威インテリジェンス、Gemini を利用した AI による運用支援を提供します。これらにより、脅威の検知・調査・対応を一元的に行えます。結果として、セキュリティ運用の効率化と高度化を実現できます。 参考: Google SecOps の概要 詳細は、以下の記事をご参照ください。 blog.g-gen.co.jp データフィードとは Google SecOps では、AWS、Azure、その他 SaaS など、Google Cloud 以外の環境のログデータを取り込む仕組みとして データフィード機能 があります。 SecOps UI もしくは Feed Management API を用いて、ログソース(Amazon S3、Cloud Storage、Pub/Sub、Webhook など)を指定し、各種ログを SecOps に取り込む設定を行います。 ソースタイプ 概要 ストレージ Google Cloud、AWS、Azure のクラウドストレージバケットに保存されたログデータを定期的に取得 Amazon SQS S3 バケットの通知をキュー経由で受信し、ログデータを取得(リアルタイムかつ安定的に取り込み) ストリーミング Amazon Data Firehose、Cloud Pub/Sub、Webhook などを経由し、SIEM の HTTPS エンドポイントにログデータをストリーミングでプッシュ サードパーティ API CrowdStrike、SentinelOne、Palo Alto など、外部 SaaS から API 経由でログデータを取得 参考: フィード管理の概要 設定の流れ 当記事では以下の構成のもと、S3 バケットに格納した VPC Flow Logs を、データフィード機能を使って Google SecOps に取り込みます。 大まかな設定手順は、以下のとおりです。 順序 設定項目 設定箇所 1 S3 バケットの設定 AWS 2 VPC および VPC Flow Logs の設定 AWS 3 EC2 インスタンスの設定 AWS 4 IAM の設定 AWS 5 データフィードの設定 Google SecOps 6 動作確認 Google SecOps 参考: AWS VPC Flow Logs を収集する AWS の設定 S3 バケット S3 バケットは以下の手順に従い作成します。 参考: 汎用バケットの作成 VPC VPC ならびにサブネット等の関連リソースは以下の手順に従い作成します。 参考: VPC と他の VPC リソースを作成する VPC Flow Logs S3 バケットを介して Google SecOps に VPC Flow Logs を取り込む場合、VPC Flow Logs の構成についてはいくつか指定の値があるため、公式ドキュメントに従い設定します。 # 設定項目 設定値 1 最大集計間隔 1分 (推奨) 2 ログレコードの形式 AWS のデフォルト形式 3 ログファイル形式 テキスト 設定後しばらくすると、以下のように VPC Flow Logs が連携されます。 今回の例では、 s3://secops-sandbox-ggen-vpc-flow-logs/AWSLogs/945008193730/vpcflowlogs/ap-northeast-1/ 配下にログが格納されたことを確認しました。 後述のデータフィード設定では、上記 S3 URI を指定して VPC Flow Logs を取り込みます。 参考: VPC Flow Logs を作成する(宛先: Amazon S3、テキスト形式) EC2 インスタンス EC2 インスタンスは以下の手順に従い作成します。 なお、EC2 インスタンスへの SSH や HTTPS アクセスログを生成させるため、特定の IP からのアクセスを許可するようセキュリティグループを設定しています。 参考: Amazon EC2 の使用を開始する IAM 後述のデータフィードで VPC Flow Logs を取り込むには、 アクセスキーとシークレットアクセスキー が必要です。 そのため、以下の公式ドキュメントに従い Google SecOps 用のマシンユーザー(AWS マネジメントコンソールへのユーザーアクセス不可)を作成してキーを発行します。 公式ドキュメントには、作成したマシンユーザーに AmazonS3FullAccess を付与する旨の記述がありますが、当記事では最小権限のカスタム IAM ポリシー(今回の例では secops-s3-acccess )を付与しています。 # secops - s3 - acccess { " Version ": " 2012-10-17 ", " Statement ": [ { " Sid ": " ListAllowedBuckets ", " Effect ": " Allow ", " Action ": " s3:ListBucket ", " Resource ": [ " arn:aws:s3:::secops-sandbox-ggen-vpc-flow-logs " ] } , { " Sid ": " ReadObjectsFromAllowedBuckets ", " Effect ": " Allow ", " Action ": " s3:GetObject ", " Resource ": [ " arn:aws:s3:::secops-sandbox-ggen-vpc-flow-logs/* " ] } ] } 参考: オプション 1: AWS S3 を使用して AWS VPC Flow Logs のエクスポートを構成する(テキスト形式) データフィードの設定 VPC フローログが格納された S3 バケットの URI やキー情報を用いて Google SecOps との連携を行い、ログの取り込みを行います。 その他にも、ログの種別や取り込み先環境を識別するために Ingestion Labels と Namespace も設定します。 設定が適切に完了すると、STATUS 列の値が Completed として表示され、LAST SUCCEDED ON 列には ログの最終取り込み日時(UTC) が表示されます。 参考: AWS VPC Flow Logs(S3 テキスト)を取り込むように Google SecOps でフィードを構成する 参考: Supported log types with a default parser 参考: アセットの名前空間を使用する 動作確認 AWS はデフォルトパーサーが用意されているため、Google SecOps にログが取り込まれると自動的に UDM イベントにパースされます。 SIEM Search (UDM 検索)メニューから以下のクエリを入力して実行すると、ログが取り込まれていることを確認できました。 metadata.log_type = "AWS_VPC_FLOW" その他にも、送信元の IP や宛先のポートをクエリに追加することで、EC2 インスタンスに HTTPS でアクセスした際のログも取り込まれていることが確認できました。 metadata.log_type = "AWS_VPC_FLOW" target.ip = "126.38.167.22" principal.port = 443 また、先ほどの画面右側にある Event Viewer を Event Fields(UDM)から Raw Log に切り替えると、パースされる前の生ログを確認することも可能です。 関連記事 blog.g-gen.co.jp blog.g-gen.co.jp 武井 祐介 (記事一覧) クラウドソリューション部クラウドエンジニアリング課。 Google Cloud Partner Top Engineer 2026 選出。 趣味はロードレースやサッカー観戦、ゴルフ、筋トレ。 Follow @ggenyutakei
G-gen の武井です。当記事では Workforce Identity 連携を構成し、Google Cloud にアクセスする方法を解説します。IdP として Okta を、連携方法として SAML 2.0 を選択したケースの手順を紹介します。 はじめに Workforce Identity 連携とは 設定の流れ ユーザーとグループの設定 Workforce Identity プールの作成 Okta アプリ統合の作成 概要 認証方式 SAML 設定 全体像 シングルサインオン URL オーディエンス URI デフォルトの​ RelayState グループ属性ステートメント Workforce Identity プロバイダの作成 IAM ポリシーの設定 動作確認 はじめに Workforce Identity 連携とは Workforce Identity 連携とは、 OIDC や SAML 2.0 に対応した IdP(Microsoft Entra ID や Okta 等)を利用するユーザーに、Google Cloud コンソールや Google Cloud リソースへのアクセスを提供する機能です。 外部 IdP 経由でシングル サインオン(SSO)を行い、Google Cloud コンソールにアクセスできるため、Google アカウントの作成は不要です。 この連携方法では、 Workforce Identity プール と プロバイダ というリソースを設定し、Google Cloud と外部 IdP との間の連携を実現して、必要な権限を付与します。 詳細は以下の公式ドキュメントをご確認ください。 参考: Workforce Identity の連携 設定の流れ 当記事では外部 IdP として Okta を用います。また、連携方式として SAML 2.0 を選択します。 大まかな設定手順は、以下のとおりです。 順序 設定項目 設定箇所 1 ユーザーとグループの設定 Okta 2 Workforce Identity プールの作成 Google Cloud 3 Okta アプリ統合の作成 Okta 4 Workforce Identity プロバイダの作成 Google Cloud 5 IAM ポリシーの設定 Google Cloud 6 動作確認 Okta / Google Cloud 参考: Okta との Workforce Identity 連携を構成してユーザー ログインを行う ユーザーとグループの設定 Okta のユーザーアカウントをグループに登録します。グループ名(今回の例では okta-google-cloud )は後ほどの属性マッピングで使用します。 手順については以下の公式ドキュメントをご確認ください。 参考: ユーザーの作成 参考: グループの作成 参考: ユーザーをグループに追加する Workforce Identity プールの作成 次に、Google Cloud 側で Workforce Identity プールを作成します。 プール ID(今回の例では okta-wif-pool )は後ほどアプリ統合や Workforce Identity プロバイダで使用します。 # コマンド例 gcloud iam workforce-pools create okta-wif-pool \ --organization = 1234567890 \ --display-name =" okta-wif-pool " \ --description =" OktaをIdpとしたGoogle Cloudログイン " \ --session-duration = 900s \ --location = global 参考: Workforce Identity プールを作成する 参考: gcloud iam workforce-pools create Okta アプリ統合の作成 概要 次に、Okta のユーザーアカウントで Google Cloud にアクセスするため、Okta アプリ統合を作成します。 本手順は Google Cloud 公式ドキュメントとしても用意がありますので、そちらに従い設定を行いつつ、重要な設定項目について補足します。 参考: Okta アプリ統合を作成する 認証方式 認証方式は SAML 2.0 を選択します。 SAML 設定 全体像 最終的に以下となるよう設定します。 シングルサインオン URL Workforce Identity プロバイダの ID を必要としますが、現時点ではまだ未設定です。今回の例では、 okta-wif-provider という ID で作成する前提で設定します。 https://auth.cloud.google/signin-callback/locations/global/workforcePools/okta-wif-pool/providers/okta-wif-provider オーディエンス URI 上記同様、Workforce Identity プロバイダ ID は okta-wif-provider とします。 https://iam.googleapis.com/locations/global/workforcePools/okta-wif-pool/providers/okta-wif-provider デフォルトの​ RelayState ログイン完了後の転送先のページにあたるため、 https://console.cloud.google.com/ とします。 参考: ログイン グループ属性ステートメント 今回の例では okta-google-cloud というグループのみを対象とするため、グループ名に対するフィルターは 等しい (=) とします。 Workforce Identity プロバイダの作成 次に、Google Cloud 側で Workforce Identity プロバイダを作成します。 作成した SAML アプリからメタデータを取得し、gcloud コマンド実行環境にファイル(今回の例では idp-metadata.xml )として配置します。 ファイル配置が完了したのち、以下のコマンドで Workforce Identity プロバイダを作成します。 # コマンド例 gcloud iam workforce-pools providers create-saml okta-wif-provider \ --display-name =" okta-wif-provider " \ --description =" OktaをIdpとしたGoogle Cloudログイン " \ --workforce-pool =" okta-wif-pool " \ --attribute-mapping =" google.subject=assertion.subject,google.groups=assertion.attributes.groups " \ --attribute-condition =" 'okta-google-cloud' in assertion.attributes.groups " \ --idp-metadata-path =" ./idp-metadata.xml " \ --detailed-audit-logging \ --location =" global " 実行後、Cloud コンソールから Workforce Identity プロバイダが作成されたこと(Workforce Identity プールに紐づいたこと)を確認します。 参考: SAML Workforce Identity プール プロバイダを作成する 参考: gcloud iam workforce-pools providers create-saml IAM ポリシーの設定 Google Cloud 側で、Workforce Identity に対して Google Cloud リソースへのアクセス件を付与します。 今回の例では、Workforce Identtity プロバイダーに紐づけた okta-google-cloud という Okta グループに対し、プロジェクトレベルで閲覧者ロール( roles/viewer )を付与します。 # コマンド例 gcloud projects add-iam-policy-binding sandbox-ggen \ --role =" roles/viewer " \ --member =" principalSet://iam.googleapis.com/locations/global/workforcePools/okta-wif-pool/group/okta-google-cloud " 参考: Google Cloud リソースへのアクセスを管理する 動作確認 以下のログインページから Google Cloud にアクセスできることを確認します。 https://auth.cloud.google/signin? continueUrl =https%3A%2F%2Fconsole.cloud.google%2F& hl =ja ログイン画面に遷移したらプロバイダ名を入力して次に進みます。今回の例では locations/global/workforcePools/okta-wif-pool/providers/okta-wif-provider と入力します。 Okta のユーザー名を入力して次に進みます。 認証方法を選択し次に進みます。 認証に成功すると、Cloud コンソールに遷移します。Workforce Identity に閲覧者ロールを付与しているため、Cloud Storage バケットの作成はできませんが、閲覧はできました。 参考: ログインしてアクセスをテストする 武井 祐介 (記事一覧) クラウドソリューション部クラウドエンジニアリング課。 Google Cloud Partner Top Engineer 2026 選出。 趣味はロードレースやサッカー観戦、ゴルフ、筋トレ。 Follow @ggenyutakei
G-gen の齊間です。Looker Studio で作成したレポートにおいて、閲覧ユーザーに応じて表示するデータを制御したい(出し分けたい)場合があります。当記事では、そのための主要な3つの方法と、それぞれの設定手順や注意点を解説します。 概要 手法1. メールアドレスでフィルタ 手法2. BigQuery で行レベルのアクセスポリシーを設定 概要 手順 行レベルのアクセスポリシー設定例 手法3. カスタムクエリでパラメータを使用 概要 手順 概要 Looker Studio で閲覧ユーザーごとに表示データを制御する方法として、主に以下の3つがあります。 メールアドレスでフィルタ BigQuery で行レベルのアクセスポリシーを設定 カスタムクエリでパラメータを使用 それぞれの方法について、設定方法と特徴を解説します。 手法1. メールアドレスでフィルタ データソースの設定にある「メールアドレスでフィルタ」機能を使用する方法です。詳細な手順は、以下の記事を参照してください。 blog.g-gen.co.jp この方法は、Looker Studio の標準機能だけで完結するため、最も簡単に設定できる点がメリットです。 一方で、1レコードにつき1つのメールアドレスしか制御に使用できない点がデメリットです。 例えば、レコード A を「ユーザー X」と「ユーザー Y」の両方に表示させたい場合、データソース側でレコード A を2行作成し、メールアドレスを格納するカラムにそれぞれのアドレスを登録する必要があります。 メールアドレスを格納しているカラムに複数アドレス登録している場合、表示されない 複数アドレスに閲覧させたい場合、メールアドレスごとにレコード作成する必要がある 複数ユーザーに同一レコードを表示させたい場合や、より柔軟な権限管理を行いたい場合は、後述する手法2または手法3を検討します。 手法2. BigQuery で行レベルのアクセスポリシーを設定 概要 データソースに BigQuery を使用している場合に利用できる方法です。BigQuery 側で CREATE ROW ACCESS POLICY 文を使用し、行レベルのアクセスポリシー(Row-Level Security)を設定します。 この機能では、許可対象として個人のメールアドレスだけでなく、 Google グループ も指定できます。 行レベルのアクセスポリシーについては、以下の記事を参照してください。 blog.g-gen.co.jp 手順 この方法を用いて、Looker Studio のログインユーザーに応じたデータ制御を行う手順は以下のとおりです。 1. カラムの作成 Looker Studio で参照する BigQuery テーブルに、閲覧を許可するメールアドレス(または Google グループ)を格納するカラムを作成します。このとき、1レコードに対して複数の閲覧許可ユーザーを設定する場合は、カラムのデータ型は STRING の配列(ARRAY ) とすることで、1レコードに対して複数データを登録できます。 STRING の配列(ARRAY<STRING>)の場合、1レコードに複数データ登録可能 BigQuery の STRING の配列( ARRAY<STRING> )については、以下の記事を参照してください。 blog.g-gen.co.jp 2. 行レベルのアクセスポリシーの設定 BigQuery の対象テーブルに対し、行レベルのアクセスポリシーを設定します。 CREATE ROW ACCESS POLICY 文で設定 3. Looker Studio データソースへの認証情報設定 Looker Studio のデータソース設定において、データの認証情報を 閲覧者の認証情報 に設定します。 オーナーの認証情報 のままでは、閲覧ユーザーごとの制御が効かないため、注意してください。 データソース編集画面にて、データの認証情報を「閲覧者」に設定 BigQuery テーブルの STRING の配列( ARRAY<STRING> )をLooker Studio レポートで参照する際は、カスタムクエリで ARRAY_TO_STRING 関数を利用し、配列を文字列に変換します。 STRING の配列を参照する場合、ARRAY_TO_STRING 関数で文字列に変換する 4. 動作確認 Looker Studio レポートにアクセスすると、BigQuery 側でポリシーが評価され、ログインユーザーに応じたデータのみが表示されます。 閲覧ユーザに応じて表示データが制御される 行レベルのアクセスポリシー設定例 例えば、売上テーブル( sales_table )に対し、閲覧許可リストのカラム( allowed_viewers / ARRAY 型)に含まれるユーザーだけに表示を許可する場合のクエリは以下のとおりです。 CREATE ROW ACCESS POLICY ap_sales_filter ON `my_project.my_dataset.sales_table` GRANT TO ( ' allAuthenticatedUsers ' ) FILTER USING ( SESSION_USER() IN UNNEST(allowed_viewers) ); GRANT TO 句には、ポリシーを適用する対象(権限を制限する対象)を指定します。Looker Studio を利用するすべてのユーザーに適用するため、ここでは allAuthenticatedUsers としています(特定のグループやドメインに限定することも可能です)。 FILTER USING 句には、閲覧を許可する条件(True になる条件)を記述します。 SESSION_USER() : クエリを実行している(レポートを閲覧している)ユーザーのメールアドレスを取得します。 IN UNNEST(...) : 配列カラムを展開し、その中にユーザーのメールアドレスが含まれているかを完全一致で判定します。 LIKE 演算子などを用いた文字列の部分一致による判定は、意図しないユーザーへの権限付与につながるリスクがあるため、上記のような完全一致による判定を推奨します。 参考 : 行レベルのセキュリティの概要 手法3. カスタムクエリでパラメータを使用 概要 こちらもデータソースに BigQuery を使用している場合に可能な方法です。 データソース設定のカスタムクエリ内で、閲覧ユーザーのメールアドレスをパラメータとして動的に指定します。 参考 : カスタムクエリでパラメータを使用する 手順 手順は以下のとおりです。 1. カスタムクエリの定義 Looker Studio のデータソース設定で、カスタムクエリを定義します。 パラメータ設定で「閲覧者のメールアドレスパラメータ」を有効化 カスタムクエリの WHERE 句で、閲覧者のメールアドレスパラメータ( @DS_USER_EMAIL )を使用した条件を記述 @DS_USER_EMAIL をWHERE句で指定する 2. 動作確認 Looker Studio レポートにアクセスすると、パラメータにログインユーザーのメールアドレスが渡され、それに応じたクエリ結果が表示されます。 閲覧ユーザに応じて表示データが制御される 齊間 陽史 (記事一覧) 開発部プロジェクトマネジメント課 狩猟免許を持つ ハンター兼 IT エンジニア。2025年7月より、G-genにジョイン。前職は SIerで DX化案件を数多く担当。平日はデジタルの世界で、休日は山で奮闘中。
G-gen の杉村です。当記事では、Google の生成 AI サービスである Gemini アプリ や Gemini Enterprise 、 Gemini Notebook (旧称 NotebookLM)、 Gemini for Google Workspace 、 Vertex AI などについて、それぞれの違いや使い分けなど、組織へ導入する際の検討に役立つ情報を解説します。 はじめに サービス全体像 当記事で紹介する AI サービス 概要図 比較表 AI 機能別比較表 管理機能別比較表 Gemini Enterprise Gemini Enterprise とは 関連記事 Gemini Enterprise と Gemini アプリの違い Gemini アプリ Gemini アプリとは 関連記事 個人向け・無償版 個人向け・有償版 Google Workspace 付属版 Gemini Notebook Gemini Notebook とは 関連記事 Gemini Notebook と Gemini アプリの違い 個人向け・無償版 個人向け・有償版 Google Workspace 付属版(Gemini Notebook in Pro) Gemini Notebook Enterprise Gemini for Google Workspace Vertex AI Vertex AI とは Google AI Studio との比較 企業従業員向けの Vertex AI はじめに Google の生成 AI サービスは、急速な進化とともに名称変更や新サービスの追加が行われており、全体像を把握するのが難しくなっています。 「 Gemini 」という言葉は、Google の 生成 AI のブランド名 です。同時に、AI モデルの名称(Gemini 3 Pro 等)としても、サービス名称(Gemini アプリ、Gemini for Google Workspace)としても使われており、混同しやすいポイントです。 当記事では、企業における導入検討の視点から、これらのサービスを整理・比較します。特に、データの保護(AI の学習に利用されるか否か)やアカウント管理(会社が管理できるか否か)の観点も含めて考察します。 Gemini はブランド名 当記事は、Google の生成 AI サービスを導入することを検討している方や、また Gemini アプリ、Gemini Enterprise、Gemini Notebook(旧称 NotebookLM)等の違いを知りたい方、それらのデータの取り扱い(データがモデルの再学習に使われるか等)を知りたい方向けの情報を記載します。 サービス全体像 当記事で紹介する AI サービス 当記事では、企業向けの生成 AI サービスという観点で、以下の Google の生成 AI サービスを中心に紹介します。 Gemini Enterprise (対話型 AI エージェントプラットフォーム) Gemini アプリ (対話型 AI サービス) Gemini Notebook (AI ノートブック) Gemini for Google Workspace (Google Workspace の生成 AI 機能) Vertex AI (開発者向けプラットフォーム) また Gemini アプリと Gemini Notebook には、個人向けや Google Workspace 付属版などいくつかのバリエーションがあるため、それらの違いも紹介します。 概要図 前述のサービス一覧を、プランの違い(無償版、有償版、Google Workspace 付属版等)も考慮に入れて図で表現すると、以下のようになります。 プロダクト概要図 上図の「 データ保護あり 」とは、ここでは入出力データが Google によってモデルの再トレーニング等に使用されないことを指します。Google はこれを エンタープライズグレードのデータ保護 と呼称しています。 参考 : Google Workspace の生成 AI に関するプライバシー ハブ 参考 : Google Workspace with Gemini に関するよくある質問 - Business / Enterprise また上図の「 組織によるアカウント管理が可能 」とは、管理者によりユーザーアカウントが管理できることを指します。利用状況をある程度把握したり、アカウントが侵害されたときにはアカウントを停止したり、また組織部門ごとにサービスの使用を禁止したり、許可したりできます。 比較表 AI 機能別比較表 各プロダクトの、AI 関連機能の観点での比較表は以下のとおりです。 プロダクト名 チャット 画像・動画生成 GWS ファイル読込 ノーコードエージェント フルコードエージェント Deep Research BigQuery 問い合わせ 外部 IdP 統合 Gemini Enterprise ◯ ◯ ◯ ◯ ◯ ◯ ◯ ◯ Gemini アプリ ◯ ◯ ◯ ◯ (※1) ◯ Gemini Notebook ◯ ◯ (※2) ◯ (※3) Gemini Notebook Enterprise ◯ ◯ ◯ ◯ Gemini for Google Workspace ◯ ◯ ◯ Vertex AI 要開発 同左 同左 同左 同左 同左 同左 同左 ※1 - Gems と呼ばれる簡易的なノーコードエージェント ※2 - スライド、解説動画等 ※3 - データソースをインターネットから検索する機能名として Deep Research が存在 実際には微妙な機能の違いや、無償版と有償版での制限の違い等がありますが、上の表では簡潔に表現するために省略しています。詳細は後述します。 なお上の表の各列の機能の説明は、以下のとおりです。 機能名 概要 チャット 生成 AI とテキストベースのチャットを行う機能 画像・動画生成 画像や動画の生成機能 GWS ファイル読込 Google ドライブ、ドキュメント、スライドなどを読み込ませて背景情報として扱う機能 ノーコードエージェント コーディングなしで簡単に AI エージェントを構築する機能 フルコードエージェント 独自開発した AI エージェントを統合する機能 Deep Research 詳細な調査をもとにリッチなレポートを生成する機能 BigQuery 問い合わせ BigQuery に自然言語で問い合わせをする機能 外部 IdP 統合 Entra ID など外部の IdP の ID でログインする機能 管理機能別比較表 次に、各プロダクトを、提供形態、データ保護の有無、アカウント管理の可否の観点での比較表にまとめました。企業として生成 AI を導入する際は、リスクを排除するため、「データ保護あり」 かつ 「企業によるアカウント管理が可能」 なプロダクトを選択することが望ましいです。 なお、表内の GWS とは Google Workspace の略称です。 プロダクト名 提供形態 対象ユーザー データ保護 アカウント管理 Gemini Enterprise Google Cloud 組織 ◯ ◯ Gemini アプリ (個人向け・無償版) 個人アカウント 個人 Gemini アプリ (個人向け・有償版) 個人アカウント (月額サブスク) 個人 ◯ Gemini アプリ (GWS 付属版) GWS に付属 組織 ◯ ◯ Gemini Notebook (個人向け・無償版) 個人アカウント 個人 Gemini Notebook (個人向け・有償版) 個人アカウント (月額サブスク) 個人 ◯ Gemini Notebook in Pro (GWS 付属版) GWS に付属 組織 ◯ ◯ Gemini Notebook Enterprise Google Cloud 組織 ◯ ◯ Gemini for Google Workspace GWS に付属 組織 ◯ ◯ Vertex AI Google Cloud 組織 ◯ ◯ Gemini Enterprise Gemini Enterprise とは Gemini Enterprise とは、ブラウザ上で生成 AI とチャットができる Web サービスです。ノーコードエージェントを自然言語だけで構築したり、組織が独自に開発した AI エージェントを統合して呼び出すことで、AI エージェントのプラットフォームとして使用できます。Nano Banana や Veo と呼ばれる生成モデルを用いた動画・画像の生成や、ファイルを読み込ませてのタスク実行、BigQuery への自然言語問い合わせを実現する機能など、組織向けの豊富な機能が備わっています。 Gemini Enterprise のトップ画面 ノーコードエージェント編集画面 また、Microsoft Entra ID など外部 IdP とも統合できるため、Google Workspace を使っていなくても、組織に Gemini Enterprise を導入することができます。Gemini Enterprise は Google Cloud 上で管理されるため、Google Cloud プロジェクトが必須です。 Gemini Enterprise の最大の特徴は、Microsoft SharePoint や Slack などのサードパーティデータソースを接続できる点です。これらの外部データソースに横断検索を実行し、それを AI に読み込ませて、質問に対する回答の生成や要約、レポートの作成など、様々なタスクを実行できます。 AI 機能 チャット 画像・動画生成 GWS ファイル読込 ノーコードエージェント フルコードエージェント Deep Research BigQuery 問い合わせ 外部 IdP 統合 ◯ ◯ ◯ ◯ ◯ ◯ ◯ ◯ 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 Google Cloud 組織 ◯ ◯ 関連記事 以下の記事では、機能や料金など、Gemini Enterprise を詳細に解説しています。 blog.g-gen.co.jp Gemini Enterprise と Gemini アプリの違い Gemini Enterprise は、後述する Gemini アプリとも多くの機能が共通しています。Gemini Enterprise と Gemini アプリには、以下のような違いがあります。 項目 Gemini アプリ Gemini Enterprise 認証 Google アカウント Google アカウントのほか Entra ID 等外部 IdP データソース ファイルアップロードや Google Workspace ファイル 左記に加えて Microsoft SharePoint、Jira などのサードパーティ エージェント機能 簡易的なノーコードエージェントである Gems ノーコードエージェントや組織が独自に開発したフルコードエージェントを統合可能 料金 Google Workspace 等のサブスクリプションに含まれる(追加料金なし) ユーザーごとのライセンス料金 セキュリティ Google Workspace 等と統合 VPC Service Controls、CMEK、IAM 等、Google Cloud と統合されたセキュリティ Gemini Enterprise は、セキュリティ・統制機能が強化されているほか、サードパーティのデータソースと統合できるため、より組織向けの使用が想定されているプロダクトであるといえます。 Gemini アプリ Gemini アプリとは Gemini アプリ (英名 Gemini Apps)は、ブラウザ上で生成 AI とチャットができる Web サービスです。質問への回答、文章の要約、アイデア出し、コーディング、汎用的な用途に使用できます。また、Nano Banana や Veo を用いた画像や動画の生成も行わせることができます。 Gemini アプリは、Google アカウントにログインした状態で以下の URL にアクセスするだけで使用できます。 https://gemini.google.com/ Gemini アプリでは、利用するプランによって、データ保護のレベルや管理機能が大きく異なります。また、機能の利用回数制限なども、無償版に比べて有償版や Google Workspace 付属版のほうが大きく設定されています。 AI 機能 チャット 画像・動画生成 GWS ファイル読込 ノーコードエージェント フルコードエージェント Deep Research BigQuery 問い合わせ 外部 IdP 統合 ◯ ◯ ◯ ◯ (※1) ◯ ※1 - Gems と呼ばれる簡易的なノーコードエージェント チャット画面 スライドの生成 関連記事 Gemini アプリの利用方法や関連記事については、以下のカテゴリページを参照してください。 blog.g-gen.co.jp 個人向け・無償版 個人向け・無償版の Gemini アプリ は、Google アカウント( @gmail.com 等)があれば誰でも無料で利用できます。 ただし無償版では、動画生成ができないほか、画像生成や Deep Research などの実行可能回数や、コンテキストサイズ(背景情報として AI に与えられる情報量)などに制限が加わっています。 無償版では、入力したデータや出力されたコンテンツが Google によってモデルの再トレーニングやサービス改善に使われたり、人間のレビュワーに閲覧される場合があります。 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 個人アカウント 個人 個人向け・有償版 個人向け・有償版の Gemini アプリ は、Google AI Pro 等の個人向けの有償サブスクリプションに付属しています。有償版の Gemini アプリでは、データが保護されます。しかし、組織でアカウントを管理することはできません。 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 個人アカウント (月額サブスク) 個人 ◯ Google Workspace 付属版 Gemini アプリは、 Google Workspace に付属 しています。 この Gemini アプリを含め、Google Workspace に付属する AI 関連機能には、データ保護( エンタープライズグレードのデータ保護 )が適用されます。入出力データがモデルのトレーニング等に使用されることはありません。また、アカウント管理機能があるため、利用実態を確認したり、アカウントの停止、個別のサービスへのアクセス許可/禁止を制御できます。 Google Workspace 付属版の Gemini アプリでは、Google ドライブや Google ドキュメント、Google スライド等のファイルを読み込んでコンテキストとして使用することができます。データ保護のもとで、業務データを Gemini に読み込ませて、様々なタスクを行わせることができます。 企業で Gemiin アプリを利用する場合は、統制や機密情報保護等の観点で、Google Workspace アカウント(組織管理下のアカウント) での利用が強く推奨されます。 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 Google Workspace 付属 組織 ◯ ◯ Gemini Notebook Gemini Notebook とは Gemini Notebook (旧称 NotebookLM)は、ユーザーがアップロードしたドキュメント(PDF、Google ドキュメント、Google スライド、テキスト等)に基づいて、AI が回答や要約、スライド作成、解説動画の生成などを行う「AI ノートブック」サービスです。 独自のデータソースに基づいて AI がタスクを行うため、正確な回答が得られやすく、また社内規程の検索や大量の資料の分析、資料の作成などに適しています。 Gemini Notebook は、Google アカウントにログインした状態で以下の URL にアクセスするだけで使用できます。 https://notebook.google.com/ AI 機能 チャット 画像・動画生成 GWS ファイル読込 ノーコードエージェント フルコードエージェント Deep Research BigQuery 問い合わせ 外部 IdP 統合 ◯ ◯ (※2) ◯ (※3) ◯ (※4) ※2 - スライド、解説動画等 ※3 - データソースをインターネットから検索する機能名として Deep Research が存在 ※4 - Gemini Notebook Enterprise のみ トップ画面 関連記事 Gemini Notebook の利用方法や関連記事については、以下のカテゴリページも参照してください。 blog.g-gen.co.jp Gemini Notebook と Gemini アプリの違い Gemini Notebook と Gemini アプリはどちらも生成 AI モデル Gemini を使用したウェブサービスですが、データ参照範囲や用途に違いがあります。Gemini Notebook は、指定したデータソース(ファイルや Web サイト)をソースとして固定し、それに基づいた AI タスクを実行します。一方で Gemini アプリは、インターネット上の知識を含めたより広範で汎用的なタスクを実行します。Gemini Notebook は、データを固定したより狭い範囲の用途に使われる一方、Gemini アプリはアイデア創出や形式が自由な企画支援、コーディングなど、より広い範囲のタスクに対応しています。 Gemini Notebook と Gemini アプリの違いについては、以下の記事も参照してください。 blog.g-gen.co.jp 個人向け・無償版 個人向け・無償版の Gemini Notebook は、Google アカウント( @gmail.com 等)があれば誰でも無料で利用できます。 しかし、入力したデータや出力されたコンテンツは、Google によってモデルの再トレーニングやサービス改善に使われたり、人間のレビュワーに閲覧される場合があります。 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 個人アカウント 個人 個人向け・有償版 Google AI Pro 等の個人向けの有償サブスクリプションに付属する 個人向け・有償版の Gemini Notebook では、データが保護されます。しかし、組織でアカウントを管理することはできません。 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 個人アカウント (月額サブスク) 個人 ◯ Google Workspace 付属版(Gemini Notebook in Pro) Gemini Notebook は、 Google Workspace に付属 しています。この Google Workspace 付属版の Gemini Notebook は、 Gemini Notebook in Pro と呼称される場合もあります。 データ保護が提供されるため、入出力データがモデルのトレーニング等に使用されることはありません。また、アカウント管理機能も提供されます。 Gemini アプリと同じく、Google Workspace 付属版の Gemini Notebook では、Google ドライブや Google ドキュメント等を読み込んでコンテキストとして使用して様々なタスクを AI に行わせることができます。 企業で Gemini Notebook を利用する場合は、統制や機密情報保護等の観点で、この Gemini Notebook in Pro を使用するか、後続の Gemini Notebook Enterprise を使用することが推奨されます。 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 Google Workspace 付属 組織 ◯ ◯ Gemini Notebook Enterprise Gemini Notebook Enterprise は、Google Cloud 環境上で管理される企業向け Gemini Notebook です。同じく企業向けである Gemini Notebook in Pro(Google Workspace 付属版)との大きな違いは、Entra ID 等の 外部 ID でログインできる 点です。そのため、Gemini Notebook Enterprise の利用にあたっては Google Workspace は必須ではありません。 Gemini Notebook Enterprise は、VPC Service Controls や CMEK など、Google Cloud の高度なセキュリティ・統制機能に対応しています。 ここまで、Gemini Notebook には、大きく分けて「Gemini Notebook(個人向け)」「Gemini Notebook in Pro(Google Workspace 付属版)」「Gemini Notebook Enterprise」の3種類があることを紹介しました。これらの比較については、以下の記事で詳細に解説しています。 blog.g-gen.co.jp 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 Google Cloud 組織 ◯ ◯ Gemini for Google Workspace Gemini for Google Workspace は、Gmail、Google ドライブ、ドキュメント、スプレッドシート、スライドなどの Google Workspace アプリケーション内に組み込まれた生成 AI 機能の総称です。 各 Google Workspace アプリの中に様々な AI 機能が組み込まれているほか、サイドパネルと呼ばれるチャット画面から、表示中のメールやファイルの要約、返信の作成、スライドの画像生成などを指示できます。 なお公式ドキュメントの中では「Gemini in Google Workspace」という呼称が使われたり、Google Workspace が AI とネイティブに統合されていることを表して Google Workspace with Gemini という呼び名が使われることもあります。 AI 機能 チャット 画像・動画生成 GWS ファイル読込 ノーコードエージェント フルコードエージェント Deep Research BigQuery 問い合わせ 外部 IdP 統合 ◯ ◯ ◯ 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 Google Workspace 付属 組織 ◯ ◯ Gemini による文章の校正 Gemini によるドキュメントの概要説明 Vertex AI Vertex AI とは Vertex AI は、Google Cloud 上で提供される開発者向けの AI プラットフォームです。 Gemini アプリや Gemini Notebook が「完成された SaaS(Software as a Service)」であるのに対し、Vertex AI は「自社アプリに AI を組み込むための PaaS(Platform as a Service)」や「API」です。 Vertex AI API 経由で、Gemini 3 Pro や Gemini 2.5 Flash などの生成 AI モデルを呼び出せるほか、学習データを用意することで独自モデルをトレーニングしたり、機械学習用のインフラ(GPU、TPU 等)を準備したり、機械学習パイプラインを構築することができます。 Vertex AI ブランドの中には、自社データに対するセマンティック検索や RAG を構築するためのプロダクトである Vertex AI Search など、多くの派生プロダクトも存在します。 AI 機能 チャット 画像・動画生成 GWS ファイル読込 ノーコードエージェント フルコードエージェント Deep Research BigQuery 問い合わせ 外部 IdP 統合 要開発 同左 同左 同左 同左 同左 同左 同左 管理機能 提供形態 対象ユーザー データ保護 アカウント管理 Google Cloud 組織 ◯ ◯ Vertex AI Search の実装例 Google AI Studio との比較 Gemini モデルを API 経由で呼び出すためのサービスとして、Vertex AI の他にも Google AI Studio が存在します。 Google AI Studio は Google Cloud プロダクトではなく Google サービスであり、個人開発者やプロトタイプ向けです。Google AI Studio と Vertex AI の違いについては以下も参照してください。 blog.g-gen.co.jp 企業従業員向けの Vertex AI よくある質問として、「Google Workspace のライセンスを購入せず、Vertex AI を使えば金銭コストが安価に済むのではないか?」 というものがあります。 結論から言うと、Vertex AI は一般社員向けの利用には適していません。理由は以下のとおりです。 概要 説明 UI(画面)がない Vertex AI は API やプラットフォームであり、チャット画面などのユーザーインターフェース(フロントエンド)は提供されない。利用するには、自社でチャットアプリを開発・運用する必要がある。ただし、開発者向けのプレイグラウンドとして Vertex AI Studio と呼ばれる簡易的な UI は用意されている。 開発・運用コスト アプリの開発工数やメンテナンス工数が発生する。AI モデルのアップデートに従い、古いモデルは廃止されていくため、アプリも更新する必要がある。 連携機能 Google ドキュメントや Gmail とのシームレスな連携(サイドパネル等)は、Vertex AI 単体では実現できない(独自実装が必要)。 したがって、全社員がすぐに使えるチャットツールや業務効率化ツールとしては Gemini Enterprise や Gemini for Google Workspace、Gemini アプリ(Google Workspace 付属版)、Gemini Notebook(in Pro / Enterprise) が適しています。一方で、自社独自の業務アプリや顧客向けサービスを開発する際に Vertex AI を選択するのが適切な使い分けです。 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
G-gen の杉村です。Google Cloud や Google Workspace の、2025年12月に発表されたイチオシアップデートをまとめてご紹介します。記載は全て、記事公開当時のものですのでご留意ください。 はじめに Google Cloud のアップデート Cloud Run コンソールで GitHub、GitLab、Bitbucket からの継続的デプロイ BigQuery に自動エンベディング生成が登場(Preview) Looker の Explore アクションメニューに Connected Sheets オプション Looker に Self-service Explore 機能が登場(Preview) A2A エージェントが Google Cloud Marketplace で購入可能に(Preview) カスタムエージェント(ADK、A2A、Dialogflow)の権限設定が可能に Dataplex Universal Catalog で自然言語検索が一般公開(GA) Compute Engine に VM Extension Manager が登場(Preview) 動画生成モデル Veo 3.1 で動画の拡張(続きを生成する)機能が Preview 公開 BigQuery remote MCP Server が Preview 公開 Google Cloud 公式 remote MCP Server が複数公開 新サービス「Cloud API Registry」が Preview 公開 Looker Studio Pro で Slack へのスケジュール配信機能が Preview → GA Cloud SQL for SQL Server で Entra ID との統合が可能に(Preview) Security Command Center - AI Protection が Premium tier で使用可能に Vertex AI Agent Engine で Sessions と Memory Bank が一般公開(GA) Cloud SQL で Enhanced backups(拡張バックアップ)が使用可能に BigQuery Data Transfer Service で Oracle からの転送が一般公開(GA) Gemini 3 Flash が Preview 公開 複数データベースサービスで「データエージェント」が Private Preview 開始 AlloyDB for PostgreSQL で Managed connection pooling が一般公開(GA) 古い Gemini モデルの廃止予告 BigQuery DTS で BigLake Iceberg tables へデータ転送が可能に(Preview) BigQuery Data Transfer Service の転送元として SQL Server が追加 GKE の Standard クラスタで Autopilot 機能が利用可能に Gemini Enterprise でノーコードエージェントのスケジュール実行が可能に Vertex AI の Agent Designer で AI エージェントの試験的構築が可能に Google Workspace のアップデート Gmail のメールを Google Chat に共有可能に Flows が Google Workspace Studio として一般公開 Google Meet で組織外ユーザーをライブストリーミングに招待できるように Gemini Notebook で docx ファイルをソースとして追加可能に Google Chat の URL が変更 Google Chat でメッセージのスケジュール送信が可能に Google Chat で RSS フィードと Atom フィードを購読できるように Google Meet で全画面共有のときもデバイス音声が共有されるように Gemini アプリで Gemini 3 Flash が使用可能に はじめに 当記事では、毎月の Google Cloud(旧称 GCP)や Google Workspace(旧称 GSuite)のアップデートのうち、特に重要なものをまとめます。 また当記事は、Google Cloud に関するある程度の知識を前提に記載されています。前提知識を得るには、ぜひ以下の記事もご参照ください。 blog.g-gen.co.jp リンク先の公式ガイドは、英語版で表示しないと最新情報が反映されていない場合がありますためご注意ください。 Google Cloud のアップデート Cloud Run コンソールで GitHub、GitLab、Bitbucket からの継続的デプロイ Continuously deploy from a repository (2025-12-01) Cloud Run コンソールに GitHub、GitLab、Bitbucket からの継続的デプロイ設定機能が登場(Preview)。 特定ブランチへの Push をトリガにして Cloud Build が起動して自動的にビルドとデプロイが行われる。 BigQuery に自動エンベディング生成が登場(Preview) Autonomous embedding generation (2025-12-02) BigQuery に自動エンベディング生成が登場(Preview)。 テーブルの特定列をベクトル化した列を生成して常時最新化。セマンティック検索や RAG に利用できる。パイプライン管理の工数やリードタイムが不要になり管理が簡素化できる。 Gemini 3 Pro Image(Nano Banana Pro)による解説画像 Looker の Explore アクションメニューに Connected Sheets オプション Connected Sheets quick link (2025-12-02) Looker の Explore アクションメニューに Connected Sheets オプションが登場(Preview)。 Google スプレッドシートと Looker Explore の接続をクイックにできる。 Looker に Self-service Explore 機能が登場(Preview) Creating self-service Explores (2025-12-03) Looker に Self-service Explore 機能が登場(Preview)。 CSV、XLS、XLSX ファイルをアップロードすると LookML を記述しなくてもクエリ・可視化できる。ユーザー主体の簡易的なデータ可視化・分析がクイックにできるようになる。 A2A エージェントが Google Cloud Marketplace で購入可能に(Preview) Add and manage A2A agents from Google Cloud Marketplace (2025-12-05) Gemini Enterprise で A2A プロトコルを使うエージェントが Google Cloud Marketplace で購入可能に(Preview)。 管理者がマーケットプレイスでエージェントを購入して Gemini Enterprise アプリに追加することで、ユーザーが使用可能になる。 カスタムエージェント(ADK、A2A、Dialogflow)の権限設定が可能に Share custom agents (2025-12-08) Gemini Enterprise でカスタムエージェント(Vertex AI Agent Engine - ADK エージェント、A2A エージェント、Dialogflow エージェント、Google Cloud Marketplace で購入したエージェント)の権限設定が可能になった。 これで、エージェントを使用可能なユーザーを制限できるようになる。ユーザー、グループ、Workforce identity pool、All users に対して権限付与が可能。 Dataplex Universal Catalog で自然言語検索が一般公開(GA) Search for resources in Dataplex Universal Catalog (2025-12-08) Dataplex Universal Catalog(旧 Dataplex Catalog)で自然言語検索が Preview → 一般公開(GA)。 BigQueryやCloud Storageなどのアセットを自然言語でセマンティック検索できる。通常のキーワード検索と切り替えて使用可能。 Compute Engine に VM Extension Manager が登場(Preview) About VM Extension Manager (2025-12-08) Compute Engine に VM Extension Manager が登場(Preview)。 Ops Agent 等の VM 用エージェントをログイン不要で一括インストール。ポリシー定義により条件に一致した VM 群にのみ適用できる。 動画生成モデル Veo 3.1 で動画の拡張(続きを生成する)機能が Preview 公開 Extend Veo on Vertex AI-generated videos (2025-12-08) 動画生成モデル Veo 3.1 で動画の拡張(続きを生成する)機能が Preview 公開。 動画の最後のフレームをもとに1〜30秒の続きを生成できる。 BigQuery remote MCP Server が Preview 公開 Use the BigQuery remote MCP server (2025-12-10) BigQuery remote MCP Server が Preview 公開。 AI を介してデータの読み書きが自然言語で実行できる。Google がホストして HTTPS エンドポイントとして公開するリモート MCP server なので、ローカルへのセットアップが不要。 BigQuery remote MCP Server Google Cloud 公式 remote MCP Server が複数公開 Announcing Model Context Protocol (MCP) support for Google services (2025-12-11) BigQuery 以外にも、以下の remote MCP server が公開された。 Google Maps : Google Maps に対するグラウンディング Google Compute Engine : 運用自動化 Google Kubernetes Engine : 運用自動化 さらに関連して、Apigee が remote MCP server サポートを開始。既存 API を MCP server としてホストできる。 参考 : Announcing MCP support in Apigee: Turn existing APIs into secure and governed agentic tools 新サービス「Cloud API Registry」が Preview 公開 Cloud API Registry overview (2025-12-10) Google Cloud が新サービス「Cloud API Registry」を Preview 公開。組織内で MCP server を管理・検索しやすくするための中央レジストリ。以下の MCP server を管理、監視、検索できる。 Google Cloud 公式の Remote MCP server(BigQuery等) Apigee API hub で公開される組織の独自 MCP server Cloud API Registry Looker Studio Pro で Slack へのスケジュール配信機能が Preview → GA Share and schedule reports with Slack (2025-12-11) Looker Studio Pro で Slack へのレポート共有のスケジュール送信機能が Preview → GA。 Looker Studio Pro ではこういった生成 AI 機能のほか、様々なレポート管理機能や自然言語でのデータソースへのクエリ機能などが $9/user/月で利用可能。 blog.g-gen.co.jp Cloud SQL for SQL Server で Entra ID との統合が可能に(Preview) Integration with Microsoft Entra ID (2025-12-11) Cloud SQL for SQL Server で Microsoft Entra ID との統合が可能に(Preview)。 アプリケーションから SQL Server に Entra ID の認証情報で認証できる。ユーザー管理・ID・パスワードが不要になる。Cloud SQLからEntra IDのパブリック認証エンドポイントに通信。 Security Command Center - AI Protection が Premium tier で使用可能に AI Protection overview (2025-12-12) Security Command Center - AI Protection が Premium tier で使用可能になった(Preview)。Google Cloud 組織内の生成 AI ワークロードの可視化と脅威検知。 Enterprise(最上位)ティア : Preview → 一般公開(GA) Premium ティア : 使用不可 → Preview Vertex AI Agent Engine で Sessions と Memory Bank が一般公開(GA) Vertex AI release notes - December 16, 2025 (2025-12-16) フルマネージドなAIエージェントプラットフォーム Vertex AI Agent Engine で、Sessions 機能と Memory Bank 機能が Preview → 一般公開(GA)。ユーザーとエージェントの間の履歴を保持してパーソナライズや履歴管理。 Sessions : セッション履歴管理 Memory Bank : 長期メモリ Cloud SQL で Enhanced backups(拡張バックアップ)が使用可能に Choose your backup option - Enhanced backups (2025-12-16) Cloud SQL で Enhanced backups(拡張バックアップ)が使用可能に。 Backup and DR サービスを使って中央プロジェクトにバックアップを保持。バックアップボールトに最大10年間、保持可能。 BigQuery Data Transfer Service で Oracle からの転送が一般公開(GA) Load Oracle data into BigQuery (2025-12-16) BigQuery Data Transfer Service で Oracle からのデータ転送が Preview → 一般公開(GA)。 Oracle データベースから BigQuery へのデータ転送がフルマネージドで可能。ネットワークアタッチメント経由でプライベート接続も実現できる。 Gemini 3 Flash が Preview 公開 Gemini 3 Flash: frontier intelligence built for speed (2025-12-17) Gemini 3 Flash が登場(Preview)。Gemini 3 Pro よりも軽量、低コスト、低遅延。 以下で利用可能。 API 経由 Vertex AI Google AI Studio Gemini CLI Google Antigravity アプリ経由 Gemini アプリ Gemini Enterprise 複数データベースサービスで「データエージェント」が Private Preview 開始 Data agents overview (2025-12-17) Google Cloud の 複数データベースサービスで「データエージェント」が Private Preview 開始。使用には申請が必要。 アプリから所定の JSON 形式で自然言語による質問を投入すると、DB 側で SQL が自動生成されて結果を返答。Cloud SQL(for PostgreSQL/MySQL)、AlloyDB、Spanner で使用可能。 データエージェント AlloyDB for PostgreSQL で Managed connection pooling が一般公開(GA) AlloyDB for PostgreSQL で Managed connection pooling が Preview から一般公開(GA)に。 データベースクライアントとのコネクションがプールの中から動的に割り当てられ、リソース効率とレイテンシが最適化。 Managed connection pooling(AlloyDB for PostgreSQL) 古い Gemini モデルの廃止予告 Model versions and lifecycle (2025-12-18) 以下のモデルは、廃止期限が近づいている。 gemini-2.0-flash-001 : 2026-03-03 に廃止 gemini-2.0-flash-lite-001 : 2026-03-03 に廃止 gemini-2.5-flash-preview-09-25 : 2026-01-15 に廃止 これらのモデルは、Gemini 2.5 Flash、Gemini 2.5 Flash Lite、Gemini 3 Flash などへの移行を検討する必要がある。 BigQuery DTS で BigLake Iceberg tables へデータ転送が可能に(Preview) Transfer data into BigLake Iceberg table in BigQuery (2025-12-18) BigQuery Data Transfer Service で Amazon S3、Azure Blob Storage、Cloud Storage からBigLake Iceberg tables へデータ転送が可能に(Preview)。 BigLake Iceberg tables は、標準テーブルと同じく読み書き可能だがデータは Apache Iceberg 形式で Cloud Storage に保存される。 BigQuery Data Transfer Service の転送元として SQL Server が追加 Load Microsoft SQL Server data into BigQuery (2025-12-19) BigQuery Data Transfer Service の転送元として Microsoft SQL Server が追加(Preview)。 オンプレミスやクラウド上の SQL Server から BigQuery へ定期的なデータ転送を自動化。BigQuery Data Transfer Service はフルマネージドでサーバーレス。 GKE の Standard クラスタで Autopilot 機能が利用可能に Run workloads in Autopilot mode in Standard clusters (2025-12-18) Google Kubernetes Engine(GKE)の Standard クラスタで Autopilot 機能が利用可能に。 ComputeClass を使い1つのクラスタ内で柔軟な Standard とマネージドな Autopilot のミックス運用が可能。柔軟な構成とコスト最適化を両立できる。 GKE の Standard クラスタで Autopilot 機能が利用可能 Gemini Enterprise でノーコードエージェントのスケジュール実行が可能に Schedule agent executions (2025-12-19) Gemini Enterprise でノーコードエージェントのスケジュール実行が可能に(Preview)。 月、週、日、時間単位などでノーコードエージェントを自動実行できる。 Vertex AI の Agent Designer で AI エージェントの試験的構築が可能に Agent Designer overview (2025-12-19) Vertex AIで、Agent Designer で AI エージェントを試験的に構築できるように(Preview)。 Get Code を押下すると Python + ADK(Agent Development Kit)のソースコードを取得。AI エージェントの PoC や開発を短縮できる。 Agent Designer 画面 取得されたコード Google Workspace のアップデート Gmail のメールを Google Chat に共有可能に New to Gmail: share emails in Google Chat (2025-12-02) Gmail のメールを Google Chat に共有できるようになった。 メールとチャットを横断したコミュニケーションを円滑にできる。2025年12月2日から15日程度かけて順次リリース。 Flows が Google Workspace Studio として一般公開 Now available: Create AI agents to automate work with Google Workspace Studio (2025-12-03) アルファ版だった Google Workspace Flows が Google Workspace Studio と改名して一般公開。 AI エージェントをノーコードで構築し様々なタスクを自動化できるサービス。Gmail や Google ドライブなどの Google Workspace アプリと統合されているほか、Webhookも利用できる。 Gemini 3 Pro Image(Nano Banana Pro)による解説画像 Google Workspace Studio の機能詳細は以下の記事で解説している。 blog.g-gen.co.jp Google Meet で組織外ユーザーをライブストリーミングに招待できるように Invite external guests to Google Meet live streams or limit access for targeted internal live streaming (2025-12-08) Google Meet で、組織外部のユーザーをライブストリーミングに招待できるようになった。 大規模な一方向配信が可能になる。また組織内部向けでも、参加可能な対象者を特定のユーザーやグループのみに制限できるようになった。 Gemini Notebook で docx ファイルをソースとして追加可能に Add or discover new sources for your notebook (2025-12-08) Gemini Notebook で docx ファイル(Microsoft Word ファイル)がソースとして追加可能になった。 Google Workspace バンドル版、Google AI Pro 版で確認。 Google Chat の URL が変更 A new web address for Google Chat (2025-12-11) Google Chat の URL が変更される。 旧 : mail.google.com/chat 新 : chat.google.com これにより、起動時間の短縮が見込まれる。既存 URL も引き続き使用可能だが拡張機能はアップデートが必要な可能性がある。 2025-12-11から順次ロールアウト。 Google Chat でメッセージのスケジュール送信が可能に Schedule messages to be sent at a later time in Google Chat (2025-12-11) Google Chat でメッセージのスケジュール送信が可能に。事前に送信予約日時を指定するとその時刻にメッセージが送信される。Slack 等にもある機能。 2025-12-11から順次ロールアウト。 Google Chat で RSS フィードと Atom フィードを購読できるように Keep your team informed: Introducing the Feeds app for Google Chat (2025-12-17) Google Chat で RSS フィードと Atom フィードを購読できるようになった。 RSS/Atom フィードの更新が Chat スペースに自動投稿される。 Google Meet で全画面共有のときもデバイス音声が共有されるように Share your device’s audio when presenting in Google Meet (2025-12-17) Google Meet で全画面共有のときもデバイス音声(動画の再生時の音声等)が共有されるように。これまでタブ共有にしないと共有されなかった。 Chromeブラウザのみ対応。即時リリース/計画的リリースの設定により機能のロールアウト時期は異なる。 Gemini アプリで Gemini 3 Flash が使用可能に Introducing Gemini 3 Flash for the Gemini app (2025-12-19) Gemini アプリで Gemini 3 Flash が使用可能になった。Gemini アプリでは、モードを3種類から選択可能。 高速モード -> Gemini 3 Flash 思考モード -> Gemini 3 Flash Pro -> Gemini 3 Pro 杉村 勇馬 (記事一覧) 執行役員 CTO 元警察官という経歴を持つ IT エンジニア。クラウド管理・運用やネットワークに知見。AWS 認定資格および Google Cloud 認定資格はすべて取得。X(旧 Twitter)では Google Cloud や Google Workspace のアップデート情報をつぶやいています。 Follow @y_sugi_it
G-gen の min です。Google Cloud のデータ変換パイプラインツールである Dataform で、データ品質テストを実装するための アサーション (assertion)機能について解説します。 概要 Dataform とは アサーションとは アサーションの種類 組み込みアサーションの詳細 nonNull uniqueKey / uniqueKeys rowConditions 手動アサーションの詳細 定義方法 参照整合性のチェック例 集計値のチェック例 アサーションの依存関係の制御 すべての依存先アサーションを待機 特定の依存アクションのアサーションのみ待機 特定のアサーションのみを依存先に指定 実行結果の確認と通知 実行結果の確認 アサーション失敗時の通知 概要 Dataform とは Dataform は、BigQuery 内で SQL を用いたデータ変換パイプラインを開発、テスト、デプロイ、実行するためのフルマネージドなサービスです。 Dataform の基本的な概念や使い方については、以下の記事を参照してください。 blog.g-gen.co.jp アサーションとは Dataform の アサーション は、データ品質テストをパイプラインに組み込むための機能です。アサーションは、内部的には「指定した条件に違反する行を検出する SELECT クエリ」として実装されます。このクエリが 1 行でもデータを返した場合、つまり条件違反のデータが1件でも存在した場合、そのアサーションは 失敗 となります。 Dataform はワークフローを実行するたびにアサーションを実行します。アサーションが失敗すると、実行ログに失敗が記録され、後続の処理を停止させたり、アラートを送信したりできます。 参考 : アサーションを使用してテーブルをテストする アサーションの種類 Dataform のアサーションは、大きく 2種類 に分けられます。 種別 説明 用途 組み込みアサーション テーブル定義ファイル( .sqlx )の config ブロック内で宣言的に指定 一般的なデータ品質チェック 手動アサーション 独立した .sqlx に任意の SQL を記述 複雑なチェック、複数テーブルの整合性 前者の 組み込みアサーション は、Dataform に組み込みで用意されたアサーションです。簡単な記述で呼び出すことができます。Dataform には以下の組み込みアサーションが用意されています。 名称 説明 nonNull 指定された列に null の行がないことを確認 rowConditions すべての行が指定した条件を満たすことを確認 uniqueKey 指定した列で、すべての行の値が一意である(重複した値がない)ことを確認 uniqueKeys 指定した列の組み合わせで、すべての行の値が一意である(重複した値がない)ことを確認 後者の 手動アサーション は、ユーザーが独自の SQL クエリを記述することによって定義できるアサーションです。記述した SQL が1行でも値を返すと、アサーションは失敗します。 組み込みアサーションの詳細 nonNull 指定したカラムに NULL 値が含まれていないことを検証します。主キーや必須項目など、 NULL であってはならないカラムに対して使用します。 以下の例では、 user_id と email カラムに NULL 値が存在しないことをテストします。 config { type : " table " , assertions: { nonNull: [ " user_id " , " email " ] } } SELECT 1 AS user_id, " test@example.com " AS email なお、BigQuery テーブルには NOT NULL 制約を指定できますが、この制約と nonNull アサーションを混同しないよう注意が必要です。 nonNull アサーションは、データパイプラインの実行時に NULL 値がないかを テスト する機能です。このアサーションを定義しても、Dataform が作成する BigQuery テーブルのスキーマ自体に NOT NULL 制約が付与されるわけではありません。 Dataform で自動作成されたテーブルのカラムは、デフォルトですべて NULL を許容する( NULLABLE )モードです。スキーマレベルで NULL 値を確実に禁止したい場合は、Dataform の operations を使用して明示的に設定するなど、追加の対応が必要です。 参考 : カスタム SQL オペレーションを定義する uniqueKey / uniqueKeys uniqueKey は、指定した単一カラムの値がテーブル内で一意である(重複がない)ことを検証します。 uniqueKeys は、指定した複数カラムの組み合わせがテーブル内で一意であることを検証します。 uniqueKeys では複数のカラムセットをテストできます。以下の例では、「 user_id の一意性」と「 signup_date と customer_id の組み合わせの一意性」の2つの条件をテストします。 config { type : " table " , assertions: { uniqueKeys: [ [ " user_id " ], [ " signup_date " , " customer_id " ] ] } } SELECT ... rowConditions 独自の SQL 条件式を記述して、すべての行がその条件を満たすことを検証します。各条件式は文字列として記述し、テーブルのいずれかの行で条件式が false または NULL を返すと、アサーションは失敗します。 以下の例では、「 signup_date が NULL でない場合は 2025-10-01 より後である」かつ「 email がメールアドレス形式である」という2つの条件をテストします。 config { type : " incremental " , assertions: { rowConditions: [ ' signup_date is null or signup_date > "2025-10-01" ' , ' REGEXP_CONTAINS(email, r"^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$") ' ] } } SELECT ... 手動アサーションの詳細 定義方法 手動アサーションは、組み込みアサーションで表現しにくい複雑なロジックや、複数テーブルをまたぐテストに使用します。 手動アサーションを定義するには、 config ブロックの type として assertion を指定し、その下にテストしたい条件(違反する行を見つける)の SQL クエリを記述します。 参照整合性のチェック例 例えば、 users テーブルと orders テーブルで、存在しない user_id が orders テーブルに含まれていないか(参照整合性)をテストする手動アサーションは以下のようになります。このクエリは、 orders テーブルに存在する user_id が users テーブルに存在しない行を検出します。 -- definitions/assertions/check_order_user_id.sqlx config { type : " assertion " } SELECT o.order_id FROM ${ref( " orders " )} AS o LEFT JOIN ${ref( " users " )} AS u ON o.user_id = u.user_id WHERE u.user_id IS NULL 集計値のチェック例 手動アサーションは、集計値に対するテストも定義できます。例えば、日別の売上データ( daily_sales )に、マイナスの売上日が存在しないことを確認するアサーションは以下のように記述できます。 -- definitions/assertions/check_negative_revenue.sqlx config { type : " assertion " } SELECT sale_date FROM ${ref( " daily_sales " )} WHERE total_revenue < 0 アサーションの依存関係の制御 すべての依存先アサーションを待機 アサーション失敗時に後続処理を止めたい場合は、依存関係を制御します。 デフォルト設定では、アサーションが失敗しても、そのテーブルを参照する後続の処理は実行されます。 config ブロックで dependOnDependencyAssertions: true を設定すると、このアクション(テーブル作成などの処理)が依存するすべてのアクションに定義されたアサーションが成功するまで、処理の実行は開始されません。 -- table_B.sqlx config { type : " table " , dependOnDependencyAssertions: true } -- table_A のアサーションがすべて成功しないと、table_B の作成は開始されない SELECT * FROM ${ref( " table_A " )} 特定の依存アクションのアサーションのみ待機 dependencies パラメータで依存アクションを指定する際に includeDependentAssertions: true を設定することで、特定の依存アクションのアサーションのみを待機させることができます。 以下の例では、 table_C は table_A と table_B に依存していますが、 table_B のアサーションが成功した場合にのみ、処理が実行されます( table_A のアサーション成否は問いません)。 -- table_C.sqlx config { type : " table " , dependencies: [ " table_A " , {name: " table_B " , includeDependentAssertions: true } ] } SELECT * FROM ${ref( " table_A " )} LEFT JOIN ${ref( " table_B " )} ON ... 特定のアサーションのみを依存先に指定 さらに細かく、特定のアクションの特定の組み込みアサーションや手動アサーションのみを依存関係に設定することもできます。アサーション名は アクション名_assertions_アサーション種別_インデックス という命名規則で付けられています。手動アサーションの場合は、ファイル名がそのままアサーション名になります。 -- table_B.sqlx config { type : " table " , dependencies: [ " table_A_assertions_uniqueKey_0 " , -- table_A の uniqueKey アサーション " check_order_user_id " -- 手動アサーション ] } SELECT * FROM ${ref( " table_A " )} 実行結果の確認と通知 実行結果の確認 Dataform のワークフロー実行ログから、各アサーションが成功したか失敗したかを確認できます。 アサーション失敗時の通知 アサーションが失敗した場合、Dataform は Cloud Logging にログを自動的に出力します。このログをトリガーとして、Cloud Monitoring で ログベースのアラート を設定することで、アサーション失敗時に通知を送信できます。 失敗したワークフロー呼び出しに対するアラート設定の詳細は、公式ドキュメントをご参照ください。 参考 : 失敗したワークフロー呼び出しに対するアラートを構成する 佐々木 愛美 (min) (記事一覧) クラウドソリューション部 データアナリティクス課。2024年7月 G-gen にジョイン。G-gen 最南端、沖縄県在住。最近覚えた島言葉は、「マヤー(猫)」。
G-gen の高宮です。 Google Calendar API と Google Meet REST API を組み合わせた実装時に、いくつかのエラーが発生しました。その内容と原因の考察を紹介します。 はじめに 会議スペース作成時にエラー 実装 エラー 原因 回避策 Meet 会議の設定編集時にエラー 実装 エラー 原因 回避策 はじめに 以前の記事「API経由でGoogle Meetの成果物作成を有効化したカレンダー予定を作成する」では、Google Calendar API と Google Meet REST API を利用し、Google Meet の成果物作成を有効化したカレンダーの予定を作成する方法を紹介しました。 blog.g-gen.co.jp Google Meet の成果物(アーティファクト)作成を有効化したカレンダー予定を API で作成するために、以下の3つのアプローチを検証しました。 Calendar API でイベントを作成する。次に、Meet REST API( google-apps-meet ライブラリ経由)でアーティファクト生成を有効化したスペースを作成する。次に、イベントとスペースを紐づける。 Calendar API でイベントとスペースを作成する。次に、Meet REST API( google-api-python-client ライブラリ経由)でスペースのアーティファクト生成を有効化する。 Calendar API でイベントを作成する。次に、Meet REST API( google-api-python-client ライブラリ経由)でアーティファクト生成を有効化したスペースを作成する。次に、イベントとスペースを紐づける。 それぞれのアプローチの実装方法の違いと動作結果は、以下の表の通りです。 No. 使用ライブラリ(Meet) スペースの作成 アーティファクト設定 イベントとの紐づけ 動作結果 1 google-apps-meet ライブラリ Meet REST API スペース作成時に指定 Calendar API で作成したイベントを更新し、紐づけ 会議スペース作成時にエラー 2 google-api-python-client ライブラリ Calendar API Meet REST API で作成されたスペースの設定を更新 Calendar API でイベント作成時に自動で紐づけ Meet 会議の設定編集時にエラー 3 google-api-python-client ライブラリ Meet REST API スペース作成時に指定 Calendar API で作成したイベントを更新し、紐づけ 期待した動作(以前の記事) 当記事では、上記のうちエラーが発生した ケース1 と ケース2 について、エラーの詳細、原因、および回避策を解説します。 会議スペース作成時にエラー 実装 以下のコマンドを実行して、 google-apps-meet ライブラリを追加でインストールします。 uv add google-apps-meet == 0 . 2 . 0 2025年11月時点でベータ版で公開されている機能を使用して、 main.py に以下のコードを実装します。 import os import datetime from google.auth.transport import requests from google.oauth2.credentials import Credentials from google_auth_oauthlib.flow import InstalledAppFlow from google.apps.meet_v2beta import SpacesServiceClient from google.apps.meet_v2beta.types import Space, SpaceConfig, CreateSpaceRequest 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 () -> Space: """Meet API を使用して アーティファクト生成を有効化した Space リソースを作成する""" # クライアントを作成し、 Space を作成 client = SpacesServiceClient(credentials=USER_CREDENTIALS) request = CreateSpaceRequest() space = client.create_space(request=request) # artifact の自動生成を有効化 space.config = SpaceConfig( artifactConfig=SpaceConfig.ArtifactConfig( recordingConfig=SpaceConfig.ArtifactConfig.RecordingConfig( autoRecordingGeneration=SpaceConfig.ArtifactConfig.RecordingConfig.AutoRecordingGeneration.ON ), transcriptionConfig=SpaceConfig.ArtifactConfig.TranscriptionConfig( autoTranscriptionGeneration=SpaceConfig.ArtifactConfig.TranscriptionConfig.AutoTranscriptionGeneration.ON, ), smartNotesConfig=SpaceConfig.ArtifactConfig.SmartNotesConfig( autoSmartNotesGeneration=SpaceConfig.ArtifactConfig.SmartNotesConfig.AutoSmartNotesGeneration.ON, ), ), ) return space 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() if __name__ == "__main__" : main() 以下の関数は以前の記事と同様です。 authorize create_event update_event 以前の記事と異なるのは、 create_space 関数における以下の処理の実装です。 認証情報を使用して、 SpacesServiceClient クラスのインスタンスを作成します。 CreateSpaceRequest クラスのインスタンスを引数に設定し、 create_space メソッドを呼び出しスペースを作成するリクエストを送信します。 処理 2. で作成したスペースに対して、以下のクラスを使用して Google Meet の成果物作成を有効化します。 クラス名 説明 SpaceConfig 会議スペース全般の構成 ArtifactConfig 会議でサポートされている自動生成アーティファクトに関する構成 RecordingConfig 録画の構成 TranscriptionConfig 自動文字起こしの構成 SmartNotesConfig 自動スマートメモの構成 参考 : REST Resource: spaces エラー 処理 2. の実行時(80行目)に、以下の例外が発生します。 例外が発生しました: MethodNotImplemented 501 Method not found. grpc. channel. InactiveRpcError: <_InactiveRpcError of RPC that terminated with: status = StatusCode.UNIMPLEMENTED details = "Method not found." debug_error_string = "UNKNOWN:Error received from peer ipv4:{IPアドレス}:443 {grpc_message:"Method not found.", grpc_status:12}" 原因 エラーメッセージに、gRPC の標準的なステータスコードである StatusCode.UNIMPLEMENTED (エラーコード 12)が返却されており、「リクエストされた操作が実装されていない、または API によってサポートされていない」ことがわかります。 ベータ版の機能であるため、サーバー側で当該メソッドがまだ実装されていない、あるいは公開されていないことが原因と推測され、本番環境での使用には十分な注意が必要です。 回避策 処理 2. を google-api-python-client ライブラリ経由で Meet REST API を呼び出す実装に変更することで期待した動作になります。 Meet 会議の設定編集時にエラー 実装 main.py に以下のコードを実装します。本実装では、API の呼び出しは、 google-api-python-client ライブラリを使用して行っています。 import os import datetime import uuid 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" , "https://www.googleapis.com/auth/meetings.space.settings" , ], ) 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" , }, "conferenceData" : { "createRequest" : { "requestId" : str (uuid.uuid4()), "conferenceSolutionKey" : { "type" : "hangoutsMeet" }, } }, } # 自身のカレンダーに予定を追加 event = service.events().insert(calendarId= "primary" , body=event, conferenceDataVersion= 1 ).execute() return event def update_space (meetUri: str = None ): """Meet API を使用して 既存の Meet 会議をアーティファクト生成を有効化した Space リソースに更新する""" # google-api-python-client での実装 service = build( "meet" , "v2" , credentials=USER_CREDENTIALS) # meetUri から Space 名を抽出 name = f "spaces/{meetUri.split('/')[-1]}" # 変更する Space リソースのボディ定義 space_body = { "config" : { "artifactConfig" : { "recordingConfig" : { "autoRecordingGeneration" : "ON" , }, "transcriptionConfig" : { "autoTranscriptionGeneration" : "ON" , }, "smartNotesConfig" : { "autoSmartNotesGeneration" : "ON" , }, } } } # 更新する対象の定義 update_mask = "config.artifactConfig.recordingConfig,config.artifactConfig.transcriptionConfig,config.artifactConfig.smartNotesConfig" # Space リソースの更新 return service.spaces().patch(name=name, body=space_body, updateMask=update_mask).execute() def main (): """メイン処理""" # Meet 会議 を含んだイベントの作成 event = create_event() print (f "Google Calendar URL {event.get('htmlLink')}" ) meet_uri = event[ "conferenceData" ][ "entryPoints" ][ 0 ][ "uri" ] print (f "Meet URL {meet_uri}" ) # Space の設定を更新 update_space(meetUri=meet_uri) if __name__ == "__main__" : main() 以前の記事との相違点は以下です。 authorize 関数の scopes で、 https://www.googleapis.com/auth/meetings.space.settings を指定しています。このスコープを指定することで、Google Meet 通話すべての設定の表示および編集が可能です。 create_event 関数で conferenceData フィールドを使用して、Meet 会議の設定を追加します。 insert メソッド呼び出し時の引数として、 conferenceDataVersion=1 を追加し、Meet 会議を含むイベントを作成します。 以前の記事と異なるのは、 update_space 関数における以下の実装です。 イベントに紐づく Meet 会議の URI を引数に取得し、 https://meet.google.com/{meetingCode} を spaces/{meetingCode} の形式に変換します。 Google Meet の成果物作成を有効化する設定を JSON 形式で定義します。 更新するフィールド情報を文字列で定義します。JSON のネストはドット( . )区切り、複数のフィールドを指定したい場合は、カンマ( , )区切りで表現します。 処理 1. 、 2. 、 3. で定義した変数を引数に patch メソッドを実行することで、Meet 会議の設定を更新します。 エラー 処理 3. の実行時(110行目)に、以下の例外が発生します。 例外が発生しました: HttpError <HttpError 403 when requesting https://meet.googleapis.com/v2/spaces/ {meetingCode}?updateMask=config.artifactConfig.recordingConfig%2Cconfig.artifactConfig.transcriptionConfig%2Cconfig.artifactConfig.smartNotesConfig&alt=json returned "Permission denied on resource Space (or it might not exist)". Details: "Permission denied on resource Space (or it might not exist)"> 原因 エラーメッセージに、HTTP のレスポンスステータスコードの 403 が返却されており、「リクエストした操作を行う権限がない」ことがわかります。 Meet REST API の仕様として、自身で作成したスペースに対する更新のみを許容しており、カレンダーなどの外部の操作で作成されたスペースを更新できないことが原因と推測されます。 参考 : REST API スコープについて 参考 : Google Meet API . spaces 回避策 以下の実装に変更することで、期待した動作になります。 create_event 関数 では、イベント作成時に Meet 会議が作成されないように設定します。 google-api-python-client ライブラリ経由で Meet REST API を呼び出し、アーティファクト生成が有効化されたスペースを作成します。 Calendar API を使用して、作成したイベントとスペースを紐づけします。 高宮 怜 (記事一覧) クラウドソリューション部クラウドエクスプローラ課 2025年6月より、G-genにジョイン。前職は四国のSIerで電力、製造業系のお客様に対して、PM/APエンジニアとして、要件定義から運用保守まで全工程を担当。現在はGoogle Cloudを学びながら、フルスタックエンジニアを目指してクラウドエンジニアとしてのスキルを習得中。 Follow @Ggen_RTakamiya
G-gen の松尾です。当記事では、Google Cloud の Identity and Access Management(IAM)において、Gemini の支援のもと自然言語によって最適なロールを提案する IAM ロール選択ツール について紹介します。 はじめに IAM ロール選択ツールとは 最小権限の原則とは 注意点 前提事項 料金 必要な IAM ロール 制限事項 操作手順 ベストプラクティス はじめに IAM ロール選択ツールとは 当記事で紹介する IAM ロール選択ツール とは、Google Cloud の Identity and Access Management(以下、IAM)において、プリンシパルに付与したい権限の概要を自然言語で入力するだけで、Gemini が適切と判断した最も制限の厳しい事前定義ロールを提案する機能です。 入力された内容を生成 AI モデル Gemini が解釈して、タスクの実行に必要かつ最小限と判断される事前定義ロールの候補を提案します。候補を承認すると、提案された事前定義ロールがプリンシパルに付与されます。 この機能により、ロールの選定にかかる時間を短縮し、最小権限の原則に基づいた適切な運用を行いやすくなります。 参考 : Gemini のアシスト機能を使用して事前定義ロールの候補を取得する 2025年12月現在、当機能を使用するには、Google Cloud コンソールの言語設定を英語にする必要があります。言語設定が日本語だと、機能を使用するためのボタンが表示されません。 最小権限の原則とは IAM は、誰(プリンシパル)がどのリソースに対して何をできるか(ロール、権限)を管理する重要なサービスです。 IAM の運用において、セキュリティを担保するために最も重要な考え方が 最小権限の原則 です。これは、ユーザーやサービスアカウントに対し、業務に必要な最小限の権限のみを付与し、過剰な権限を持たせないという原則です。 詳細は、以下の記事を参考にしてください。 blog.g-gen.co.jp この原則を遵守しようとすると、多数存在する 事前定義ロール の中から、業務に必要かつ過不足のない最適なロールを見つけ出す必要がありますが、これには IAM に関する知識が必要になり、時間もかかります。これを解消するのが、IAM ロール選択ツールです。 注意点 2025年12月現在、IAM ロール選択ツールは 英語にのみ対応している ため、Google Cloud コンソールの言語設定を英語にする必要があります。言語設定が日本語だと、機能を使用するためのボタンが表示されません。 前提事項 料金 IAM ロール選択ツールは、 Gemini Cloud Assist の一部として提供されます。2025年12月現在、無料で使用できます。 参考 : Gemini Cloud Assist 必要な IAM ロール IAM ロール選択ツールを使用するには、操作者の Google アカウントが、Google Cloud プロジェクトに対して以下の IAM ロールを事前に持っている必要があります。 操作 IAM ロール Gemini にロールの候補を質問する Gemini for Google Cloud ユーザー( roles/cloudaicompanion.user ) 推奨されるロールを付与する プロジェクト IAM 管理者( roles/resourcemanager.projectIamAdmin ) 制限事項 IAM ロール選択ツールには、以下の制限があります。 項目 内容 対応言語 ・Google Cloud コンソールの言語設定を英語にする必要がある 提案内容の対象範囲 ・カスタムロールの作成や提案には対応していない ・複数のプリンシパルに対するロールの提案には対応していない 権限付与の対象範囲 ・ロール付与の対象はプロジェクトレベルのみ ・組織レベル、フォルダレベル、リソースレベルでは、ロール候補の提案のみ。提案された候補をメモして手動で付与する必要あり 操作手順 Google Cloud コンソールで Gemini を使用してロールを提案させる手順を解説します。 1. Google Cloud コンソールで [IAM] ページに移動します。 2. 新しいプリンシパルにロールを付与したい場合は [Grant access] をクリックします。既にロールを持っているプリンシパルにロールを付与したい場合は [Edit principal] をクリックします。 3. [Help me choose roles] をクリックします。 4. テキストボックスにプリンシパルに許可したい内容のプロンプトを入力して [Suggest roles] をクリックします。 5. Gemini が適切と判断したロールを提案します。理由を確認するには、[Show reasoning] をクリックします。 6. 提案されたロールや理由を確認して適切だと判断した場合は、[Add roles] をクリックします。 7. 承認したロールが割り当てられていることを確認します。 ベストプラクティス 以下のようなベストプラクティスに沿ったプロンプトを入力することで、Gemini から正確なロールの提案を得やすくなります。 ベストプラクティス アンチパターン 理由 「操作(動詞)」と「対象」を具体的にする。 例 : Compute Engine 仮想マシンインスタンスの起動、停止、再起動を行うロールが必要です。 「管理」「アクセス」等の曖昧な言葉。「仮想マシン」のような汎用的すぎる言葉を使う。 例 : 仮想マシンを管理する必要があります。 「管理」や「アクセス」などの言葉が指す範囲は曖昧であり、閲覧のみか、削除も含むか等を AI が判断できない。また「仮想マシン」は汎用的な言葉であり、どのサービスのリソースを指すのかが曖昧。 正式なサービス名やリソース名を使う。 例 : プロジェクトで Cloud Storage バケットを作成するには、どのロールが必要ですか? 曖昧なリソース名を使う。 例 : プロジェクトでバケットを作成するには、どのロールが必要ですか? バケットは Cloud Storage の他にも、Firebase や Cloud Logging などでも使用される言葉であることから曖昧。 参考 : Gemini のアシスト機能を使用して事前定義ロールの候補を取得する - ベスト プラクティス 松尾 和哉 (記事一覧) クラウドソリューション部 これまで主にAWSを活用する企業でインフラエンジニアとして従事していました。Google Cloudに魅力を感じてG-genにジョイン。アウトプットを経てコミュニティへの還元や自己研鑽をしたいと思っています。