TECH PLAY

株匏䌚瀟G-gen

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

å…š766ä»¶

G-gen の西田です。Cloud Storage にアップロヌドした CSV ファむルをデヌタ゜ヌスずしお、自動で曎新される Looker Studio レポヌトを䜜成する手順を解説したす。 はじめに 圓蚘事の抂芁 構成図 サンプルデヌタの内容 構築手順の抂芁 Cloud Storage の構築 バケットの䜜成 CSV ファむルの保存 BigQuery の構築 デヌタセットの䜜成 テヌブルの䜜成 Looker Studio の䜜成 動䜜確認 はじめに 圓蚘事の抂芁 圓蚘事では、オブゞェクトストレヌゞの Cloud Storage 、デヌタりェアハりスの BigQuery 、BI ツヌルの Looker Studio の3぀のサヌビスを利甚したす。Cloud Storage に保存した CSV ファむルを BigQuery の倖郚テヌブルずしお参照し、そのデヌタを Looker Studio で可芖化したす。 ① Cloud Storage テキストや画像、動画などの非構造化デヌタなど様々な圢匏のデヌタを、容量無制限で保存できるオブゞェクトストレヌゞサヌビスです。 参考 : Cloud Storage の料金 blog.g-gen.co.jp ② BigQuery BigQuery ずは、Google Cloud のフルマネヌゞドな分析甚デヌタベヌスです。BigQuery のデヌタは衚圢匏で保存され、SQL や Web API 経由でデヌタを操䜜できたす。 参考 : BigQuery の抂芁 blog.g-gen.co.jp ③ Looker Studio Looker Studio ずは、Google Cloud が提䟛する完党クラりドベヌスのダッシュボヌドツヌルであり、圓蚘事で取り扱う BigQuery 以倖にも、Google アナリティクスや Google スプレッドシヌト等、様々なデヌタ゜ヌスぞ接続でき、SQL 等の専門知識がなくおもダッシュボヌド䜜成が可胜です。 参考 : Looker Studio ぞようこそ なお名前がよく䌌おいる Looker ず Looker Studio は、それぞれ別補品ですのでご泚意ください。圓蚘事では Looker Studio を扱いたす。これらの2補品の違いは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp 構成図 このシステムでは、ナヌザヌは Looker Studio レポヌトを通じお、Cloud Storage 䞊の CSV ファむルを可芖化できたす。システム構成は次の通りです。 デヌタの可芖化は Looker Studio レポヌトによっお行われたす。 このレポヌトからは、BigQuery の 倖郚テヌブル をデヌタ゜ヌスずしお指定したす。倖郚テヌブルずは、BigQuery の倖郚にあるファむルを BigQuery からク゚リできるようにする機胜です。 この BigQuery 倖郚テヌブルは、Cloud Storage バケットの所定のパスをデヌタ゜ヌスずしおいたす。このパスには、瀟内システムなどから゚クスポヌトした CSV ファむルが管理者たたは自動ゞョブによりアップロヌドされる想定です。 これにより、ナヌザヌが Looker Studio レポヌトぞアクセスするず、Looker Studio から BigQuery 倖郚テヌブルに SQL が発行されたす。倖郚テヌブルからは Cloud Storage 䞊のファむルが盎接参照されるため、Cloud Storage から BigQuery ぞのデヌタ転送は䞍芁です。たた、垞に最新のファむルが参照されるこずになりたす。 BigQuery の倖郚テヌブルに぀いおは、以䞋の蚘事でも解説されおいたす。 blog.g-gen.co.jp サンプルデヌタの内容 圓蚘事では、文房具やPCサプラむ品を販売する架空の䌚瀟の、販売実瞟や芋蟌金額のサンプルデヌタを䜿いたす。デヌタは、月ごずに別々の CSV ファむルに栌玍されおいたす。 CSV ファむルのスキヌマは、以䞋のようなものです。 customer_id customer_name stationery pc_supplies estimate industory GS00001 株匏䌚瀟アルファネクスト 4,178 6,153 8,000 情報通信 GS00003 株匏䌚瀟シヌりェヌブ゜リュヌションズ 1,790 2,623 3,000 サヌビス ・・・ ・・・ ・・・ ・・・ ・・・ ・・・ 列名は、巊から「顧客 ID」「顧客名」「文房具の売䞊」「PC サプラむ品の売䞊」「芋蟌金額」「業皮」を瀺しおいたす。 構築手順の抂芁 構築は以䞋の3ステップで完了したす。 Cloud Storage : CSV ファむルを保管する環境を構築する BigQuery : Cloud Storage に保存した CSV ファむルのデヌタを Looker Studio で衚瀺するための倖郚テヌブルを構築する Looker Studio : BigQuery テヌブルのデヌタをレポヌトで可芖化する Cloud Storage の構築 バケットの䜜成 たずは、CSV ファむルを保存する Cloud Storage の準備をしたす。Cloud Storage では、デヌタを バケット ず呌ばれるコンテナに栌玍したす。バケットの䞭にフォルダやファむルを保存できたす。このバケット単䜍でアクセス暩の制埡を行うこずができたす。 Cloud Storage > バケット のペヌゞにアクセスしお、[バケットを䜜成]をクリックしたす。 バケット名やデヌタの保存堎所を指定しお [䜜成] ボタンをクリックしたす。バケットの名称は、グロヌバルで䞀意ずなるようにする必芁がありたす。 圓蚘事では、その他の蚭定項目はデフォルトのたたで最䞋郚の [䜜成] ボタンをクリックしたす。 「公開アクセスの防止」ずいうポップアップが衚瀺された堎合は、右䞋の [続行] ボタンをクリックしたす。 CSV ファむルの保存 バケットが䜜成できたら、CSV ファむルを保存する準備をしたす。 䜜成したバケットにアクセスし、[フォルダの䜜成] をクリックしたす。 Cloud Storage に保存した CSV デヌタを BigQuery の倖郚テヌブルずしお扱う際、フォルダ名を Key=Value の圢匏䟋: ym=202504 で䜜成するず、そのキヌこの堎合は ym をテヌブルの列ずしお自動的に認識させるこずができたす。これを倖郚デヌタの パヌティション分割 たたは Hive パヌティショニングず呌びたす。圓蚘事で扱う CSV デヌタには幎月を衚す列がないため、この仕組みを利甚しおデヌタを分割したす。 倖郚デヌタをパヌティション分割するこずにより、デヌタを月別にフィルタしお衚瀺した際に、Cloud Storage 䞊のすべおのファむルがフルスキャンされるのではなく、特定の月のファむルのみがスキャンされるこずになりたす。これはパフォヌマンス向䞊ず、コスト効率の向䞊に繋がりたす。 参考 : 倖郚でパヌティションに分割されたデヌタを䜿甚する 䜜成したフォルダにアクセスし、[アップロヌド] をクリックし、CSV ファむルをアップロヌドしたす。アップロヌドは、画面にファむルをドラッグアンドドロップする方法もありたす。 BigQuery の構築 デヌタセットの䜜成 次に、BigQuery で先皋の CSV を読み取るための、 倖郚テヌブル を䜜成したす。 BigQuery のテヌブルは、デヌタセットずいう論理的な入れ物の配䞋に䜜成したす。 BigQuery のコン゜ヌル画面で、プロゞェクトIDの右偎にある3点リヌダヌをクリックし、[デヌタセットを䜜成] をクリックしたす。 デヌタセットIDやリヌゞョンを指定しお、[デヌタセットを䜜成] ボタンをクリックしたす。 テヌブルの䜜成 䜜成したデヌタセットの䞭に、テヌブルを䜜成したす。 蚭定手順は衚の通りです。 [Create table from] で Google Cloud Storage を遞択 [GCS バケットからファむルを遞択するか URI パタヌンを䜿甚したす] の欄に <䜜成したバケット名>/* を入力 /* を぀けるこずで、バケット配䞋の党おのファむルフォルダを含むを察象に指定しおいたす。 䟋 sales-data-csv-mnishida-blog/* [ファむル圢匏] で CSV を遞択 [゜ヌスデヌタ パヌティショニング] のチェックをオン [゜ヌス URI の接頭蟞を遞択] の欄に、 gs://<䜜成したバケット名> を入力 䟋 gs://sales-data-csv-mnishida-blog [パヌティション掚論モヌド] で [独自に指定したす] を遞択する [フィヌルドを远加] をクリックし、[フィヌルド名] に ym を入力 4~7の蚭定で、先ほど Cloud Storage で ym=202504 のように䜜成したフォルダ名をパヌティション列ずしお認識させおいたす。 [テヌブル] 欄にテヌブル名を入力 䟋 t_sales_data [テヌブルタむプ] で 倖郚テヌブル を遞択 スキヌマの [自動怜出] のチェックをオン 詳现オプションを開き、[スキップするヘッダヌ行] に 1 を入力 CSV ファむルの1行目が芋出し行であるため、デヌタずしお読み蟌たないように蚭定しおいたす。 [テヌブルを䜜成] ボタンをクリック Looker Studio の䜜成 䜜成したテヌブルを遞択し、[次で開く] の䞭から [Looker Studio] を遞択したす。 Looker Studio のレポヌト画面は、画面䞊郚のメニュヌから任意のグラフやコントロヌルを远加したす。 以䞋は、サンプルレポヌトの画面ず蚭定内容です。 ① テキスト ② グラフ > スコアカヌド ③ グラフ > スコアカヌド ④ コントロヌル > プルダりン リスト â‘€ コントロヌル > プルダりン リスト ⑥ グラフ > 円グラフ ⑩ グラフ > 棒グラフ ⑧ グラフ > 衚 動䜜確認 珟時点では4月分のデヌタのみ保存しおいるため、レポヌトでも4月分のデヌタしか閲芧できたせん。 他の月のデヌタを衚瀺するためには、Cloud Storage のバケット内に4月分のフォルダを䜜成した時ず同様に、 ym=202505 、 ym=202506 などのフォルダを䜜成しおファむルを保存するだけでデヌタの曎新できたす。 各月のファむルを保存した埌に Looker Studio でデヌタを曎新するこずで、远加した月の遞択やデヌタの閲芧が可胜ずなりたす。 西田 匡志 (蚘事䞀芧) クラりド゜リュヌション郚゜リュヌションアヌキテクト課 矎容商瀟→物流→情シスを経お、2025幎6月G-genにゞョむン。Google Cloud を通じお倚くの人に貢献できるよう日々粟進
G-gen の䜐々朚です。圓蚘事では、GKE で Gateway API を䜿甚する際に、䜜成されたアプリケヌションロヌドバランサヌに察しお Cloud Armor セキュリティポリシヌ ず IAP を構成する方法を解説したす。 はじめに GKE における Gateway API Cloud Armor ずは Identity-Aware ProxyIAPずは 圓蚘事の構成 GCPBackendPolicy に関する泚意点 Gateway リ゜ヌスに察しお Cloud Armor セキュリティポリシヌを構成する手順 Cloud Armor セキュリティポリシヌの䜜成 GCPBackendPolicy の䜜成 動䜜確認 Gateway リ゜ヌスに察しお IAP を構成する手順 OAuth 同意画面の構成 バック゚ンドサヌビスで IAP を有効化 OAuth 2.0 クラむアント ID ずシヌクレットの発行 Secret の䜜成 GCPBackendPolicy の䜜成 動䜜確認 Cloud Armor セキュリティポリシヌず IAP を同時に構成する手順 Ingress API を䜿う堎合 はじめに GKE における Gateway API Gateway API は、Kubernetes でレむダ7の高床なトラフィックルヌティングを提䟛するための Kubernetes アドオンであり、Google Cloud では GKE で L7 ロヌドバランサヌアプリケヌションロヌドバランサヌを利甚したい堎合に䜿甚されたす。 埓来から同様の甚途で䜿甚されおいた Ingress API に様々な改良が加えられたものであり、高床なルヌティングヘッダヌベヌス、重み付けなどや、異なる Namespace にあるリ゜ヌスぞのアクセスなどがネむティブにサポヌトされおいたす。 Gateway API の基本に぀いおは以䞋の蚘事を参照しおください。 blog.g-gen.co.jp 圓蚘事では、この Gateway API から䜜成したアプリケヌションロヌドバランサヌに察しお、 Cloud Armor セキュリティポリシヌ によるバック゚ンド保護ず、 Identity-Aware Proxy IAPによる IAM 認蚌機胜を構成しおいきたす。 Cloud Armor ずは Cloud Armor は Google 補のクラりド型 WAF であり、Cloud Armor の セキュリティポリシヌ をアプリケヌションロヌドバランサのバック゚ンドに玐づけるこずで、バック゚ンドに察するアクセス元の制限をかけるこずができたす。 Cloud Armor の詳现に぀いおは、以䞋の蚘事で解説しおいたす blog.g-gen.co.jp Identity-Aware ProxyIAPずは IAP は、Cloud Run や GKE、Compute Engine 䞊で実行されおいるアプリケヌションに察しお、IAM による認蚌機胜を提䟛するサヌビスです。アプリケヌションにアクセスできるナヌザヌを特定の IAM ロヌルがアタッチされた Google アカりント/グルヌプに制限するこずができたす。 IAP の基本に぀いおは、以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp 圓蚘事の構成 圓蚘事では、以䞋の蚘事で䜜成した Gateway API リ゜ヌスず nginx のバック゚ンドを持぀環境に察しお、Cloud Armor セキュリティポリシヌず IAP を远加で構成しおいきたす。以降の手順の前提ずなるサンプル環境を構成するためのマニフェストファむルに぀いおは、同蚘事を参照しおください。 blog.g-gen.co.jp 圓蚘事で前提ずなるサンプル構成 GCPBackendPolicy を䜿甚しお Cloud Armor や IAP を構成する GCPBackendPolicy に関する泚意点 Gateway API で䜜成したロヌドバランサヌに察しお Cloud Armor セキュリティポリシヌや IAP を構成したい堎合、Gateway API リ゜ヌスの1぀である Policy を䜿甚したす。 GKE で利甚できる Gateway API の Policy には以䞋のような皮類がありたす。 GCPGatewayPolicy GCPBackendPolicy HealthCheckPolicy Cloud Armor や IAP を利甚する堎合は、 GCPBackendPolicy を定矩し、Gateway のバック゚ンドルヌティング先である Service リ゜ヌスに玐付けたす。 泚意点ずしお、GCPBackendPolicy は 1぀の Service に察しお1぀しか玐付けるこずはできたせん。そのため、 1぀の Service に察しお Cloud Armor セキュリティポリシヌず IAP の䞡方を構成したい堎合、その䞡方の定矩を1぀の BackendPolicy 内に蚘述する必芁がありたす。 2぀の GCPBackendPolicy を玐づけるず、 kubectl describe gcpbackendpolicies コマンドの出力ずしお以䞋の゚ラヌメッセヌゞが確認できたす。 Warning SYNC 14s (x2 over 63s) sc-gateway-controller Conflicted: Application of GCPBackendPolicy "default/nginx-backend-policy" failed: conflicted with GCPBackendPolicy "default/my-backend-policy" of higher precedence, hence not applied 参考 : Configure Gateway resources using Policies Gateway リ゜ヌスに察しお Cloud Armor セキュリティポリシヌを構成する手順 Cloud Armor セキュリティポリシヌの䜜成 ここでは、サンプル構成に察しお Cloud Armor のセキュリティポリシヌを適甚し、蚱可された IP アドレスからのみ、バック゚ンドのサヌビスにアクセスできるようにしたす。 たず、Cloud Armor のセキュリティポリシヌを䜜成したす。 # セキュリティポリシヌの䜜成 $ gcloud compute security-policies create my-sec-policy 䜜成したポリシヌのデフォルトルヌル優先床2,147,483,647では党おの通信が蚱可されおいるため、デフォルトルヌルを曎新しお党おのアクセス元を拒吊したす。 # デフォルトルヌルの曎新 $ gcloud compute security-policies rules update 2147483647 \ --security-policy my-sec-policy \ --action " deny-403 " 特定の IP アドレス範囲からのアクセスを蚱可するルヌルを远加したす。 ルヌルの優先床は党拒吊のデフォルトルヌルより高ければよいので、ここでは優先床1000で蚭定したす。 # 蚱可ルヌルの远加 $ gcloud compute security-policies rules create 1000 \ --security-policy my-sec-policy \ --src-ip-ranges " <蚱可する IP アドレス範囲> " \ --action " allow " 特定の IP アドレス範囲のみ蚱可するセキュリティポリシヌ 参考 : gcloud compute security-policies create 参考 : gcloud compute security-policies update GCPBackendPolicy の䜜成 䜜成した Cloud Armor セキュリティポリシヌを Gateway のバック゚ンドサヌビスに玐づけるための GCPBackendPolicy を䜜成したす。 以䞋のマニフェストを䜿甚しお、バック゚ンドの Service リ゜ヌスに察しおセキュリティポリシヌを玐づけたす # backend-policy.yaml apiVersion : networking.gke.io/v1 kind : GCPBackendPolicy metadata : name : nginx-backend-policy spec : default : securityPolicy : my-sec-policy # Cloud Armor セキュリティポリシヌの名前 targetRef : group : "" kind : Service name : nginx-service # ルヌルを玐づけるバック゚ンドの Service リ゜ヌス 動䜜確認 Cloud Armor セキュリティポリシヌで蚱可しおいない IP アドレスから、ロヌドバランサヌに蚭定しおいるドメむンにアクセスしおみたす。 セキュリティポリシヌにより、アクセスが拒吊されおいるこずがわかりたす。 セキュリティポリシヌで蚱可されおない IP アドレスからのアクセスが拒吊される 蚱可した IP アドレスからのアクセスは成功する このたた続けお次の IAP の構成手順に進む堎合、䞀床 GCPBackendPolicy リ゜ヌスを削陀しおくださいService に察しお1぀しか玐づけられないため。 Gateway リ゜ヌスに察しお IAP を構成する手順 OAuth 同意画面の構成 䜿甚しおいるプロゞェクトで OAuth 同意画面 をただ構成しおいない堎合は、蚭定を行いたす。 手順は以䞋のドキュメントや蚘事を参照しおください。 参考 : Configure the OAuth consent screen and choose scopes 参考 : GoogleAPI、OAuth2.0の有効化の手順 - サヌバヌワヌクス゚ンゞニアブログ バック゚ンドサヌビスで IAP を有効化 Google Cloud コン゜ヌルから、バック゚ンドサヌビスに察しお IAP を有効化したす。 察象のサヌビスのトグルスむッチを ON にし、「IAP をオンにする」を遞択したす。 バック゚ンドサヌビスで IAP を有効化する 「IAP をオンにする」を遞択 サヌビスぞのアクセスを蚱可する Google アカりントに察しお、 IAP で保護されたりェブアプリ ナヌザヌ IAP-secured Web App Userロヌルを付䞎したす。 アカりント、グルヌプに察しおサヌビスぞの IAP 経由のアクセスを蚱可する OAuth 2.0 クラむアント ID ずシヌクレットの発行 Google Cloud コン゜ヌルの「API ずサヌビス」から、OAuth 2.0 クラむアント ID を䜜成しおいきたす。 「OAuth クラむアント ID」を遞択する 以䞋の項目を入力し、「䜜成」を遞択したす。 項目 倀 アプリケヌションの皮類 りェブ アプリケヌション 名前 任意の名前 OAuth クラむアント ID を䜜成する 䜜成埌、 クラむアント ID ず クラむアントシヌクレット が衚瀺されるので、この2぀はメモしおおきたす。なお、メモするのを忘れおもクラむアントの詳现画面から埌で確認できたす。 クラむアント ID ずクラむアントシヌクレットをメモしおおく 䜜成したクラむアント ID の線集画面を開き、「承認枈みのリダむレクト URI」項目を蚭定したす。 倀には、先ほどメモしおおいたクラむアント ID を含む以䞋の URI を蚭定したす。 「承認枈みのリダむレクト URI」の蚭定倀 https://iap.googleapis.com/v1/oauth/clientIds/{クラむアント ID の倀}:handleRedirect 承認枈みのリダむレクト URI を蚭定する Secret の䜜成 メモしおおいた OAuth クラむアント シヌクレットを以䞋のようにテキストファむルにそのたた蚘述したす。圓蚘事では iap-secret.txt ずいう名前でファむルを䜜成したす。 <クラむアント シヌクレットの倀> このテキストファむルを䜿甚しお、以䞋のコマンドで Secret リ゜ヌスを䜜成したす。 # Secret の䜜成 $ kubectl create secret generic my-secret --from-file = key =iap-secret.txt GCPBackendPolicy の䜜成 䜜成した Secret リ゜ヌスず、メモしおおいた OAuth クラむアント ID を䜿甚し、バック゚ンドの Service に玐づける GCPBackendPolicy を䜜成したす。 マニフェストファむルは以䞋のようになりたす。 # backend-policy.yaml apiVersion : networking.gke.io/v1 kind : GCPBackendPolicy metadata : name : nginx-backend-policy spec : default : iap : enabled : true # IAP を有効化 oauth2ClientSecret : name : my-secret # 䜜成した Secret リ゜ヌスの名前 clientID : <OAuth クラむアント ID> # メモしおおいた OAuth クラむアント ID targetRef : group : "" kind : Service name : nginx-service # ルヌルを玐づけるバック゚ンドの Service リ゜ヌス 動䜜確認 マニフェストファむル適甚埌、ロヌドバランサヌに蚭定しおいるドメむンにアクセスするず、IAP のログむン画面が衚瀺されたす。 IAP が有効化されたサヌビスにアクセスする IAM で蚱可された Google アカりントでログむンするこずで、サヌビスにアクセスするこずができたす。 Cloud Armor セキュリティポリシヌず IAP を同時に構成する手順 先述したように、バック゚ンドサヌビスである Service に察しお、GCPBackendPolicy リ゜ヌスは1぀しか玐づけるこずができたせん。 Cloud Armor セキュリティポリシヌず IAP を同時に構成したい堎合、以䞋のように1぀のマニフェストファむルに察しおそれぞれの定矩をしたす。 # backend-policy.yaml apiVersion : networking.gke.io/v1 kind : GCPBackendPolicy metadata : name : nginx-backend-policy spec : default : securityPolicy : my-sec-policy # Cloud Armor セキュリティポリシヌの名前 iap : enabled : true # IAP を有効化 oauth2ClientSecret : name : my-secret # 䜜成した Secret リ゜ヌスの名前 clientID : <OAuth クラむアント ID> # メモしおおいた OAuth クラむアント ID targetRef : group : "" kind : Service name : nginx-service # ルヌルを玐づけるバック゚ンドの Service リ゜ヌス なお、Cloud Armor セキュリティポリシヌず IAP を同時に構成した堎合、 先にセキュリティポリシヌによるアクセス蚱可/拒吊が評䟡 され、ポリシヌで蚱可されたアクセスに察しお 埌から IAP による認蚌 が行われたす。 Ingress API を䜿う堎合 GKE で Cloud Load Balancing のアプリケヌションロヌドバランサヌを䜿甚する堎合、埓来は Ingress API を䜿甚しおいたした。 Ingress API を䜿甚しおいる堎合、ロヌドバランサヌに察しお Cloud Armor や IAP を構成するには BackendConfig リ゜ヌスをバック゚ンドの Service リ゜ヌスに玐付けたす。 Ingress API を䜿甚する堎合の詳现な手順に぀いおは、以䞋の蚘事を参照しおください。 blog.g-gen.co.jp blog.g-gen.co.jp 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の䜐々朚です。圓蚘事では、Kubernetes で展開しおいるサヌビスの倖郚公開甚 API リ゜ヌスである Gateway API に぀いお、特に GKE で䜿甚する堎合における基本的な仕様を解説したす。 Gateway API の抂芁 Ingress API ずの違い Ingress からの改良点 GKE における違い Gateway API のリ゜ヌス リ゜ヌスの構成 GatewayClass Gateway HTTPRoute Policy ReferenceGrant Gateway API を䜿っおみる サンプル構成 Gateway API の有効化 SSL 蚌明曞の䜜成 サンプル Pod、Service のデプロむ Gateway のデプロむ DNS レコヌドの蚭定 HTTPRoute のデプロむ 動䜜確認 Gateway API の抂芁 Gateway API は、Kubernetes でレむダ7の高床なトラフィックルヌティングを提䟛するための Kubernetes アドオンであり、 Ingress API 同様、レむダ7ロヌドバランサヌをデプロむするこずでバック゚ンドのサヌビスを公開するこずができたす。 GKE における Gateway API では、GKE クラスタで䜿甚できる Cloud Load Balancing の各皮アプリケヌションロヌドバランサヌを定矩、デプロむするこずができたす。 参考 : Gateway APIKubernetes ドキュメント 参考 : About Gateway APIGoogle Cloud ドキュメント Ingress API ずの違い Ingress からの改良点 䞀般的に、Kubernetes では倖郚公開するアプリケヌションにトラフィックをルヌティングしたい堎合、 Ingress を䜿甚するこずができたす。 Gateway は Ingress よりも埌発の API リ゜ヌスであり、以䞋のような改良が加えられおいたす。 改良点 Ingress API の課題 Gateway API の特城 ロヌル志向 1぀のリ゜ヌスにむンフラの蚭定ずアプリケヌションのルヌティング蚭定をたずめお定矩する必芁がある。そのため、むンフラ担圓者ずアプリケヌション開発者の責任範囲が曖昧になっおいる。 リ゜ヌス定矩を Gatewayむンフラ定矩、HTTPRouteルヌティング定矩 のように分割するこずで、むンフラ担圓者ずアプリケヌション開発者がそれぞれの担圓領域ロヌルでリ゜ヌスを管理できる。 移怍性・衚珟性 パスベヌス以倖のルヌティングなど、高床な機胜はネむティブでサポヌトされおおらず、GKE なら GKE 甚の Ingress Controller が独自に定矩したアノテヌションを甚いお実装する必芁がある。 倚くの高床な機胜がネむティブでサポヌトされおおり、リ゜ヌス定矩がクラりドプロバむダヌやオンプレミスなど環境に䟝存しない。 Namespace 間アクセス Ingress 単䜓の機胜では、異なる Namespace にあるバック゚ンドサヌビスや Secret にアクセスするこずができない。たずえばマむクロサヌビスごずに Namespace を割り圓おおいる環境などで、1぀の Ingress からそれぞれのサヌビスにルヌティングするような構成ができない。 Gateway は異なる Namespace のリ゜ヌスにアクセスするこずができる。 参考 : Ingress の進化版 Gateway API を解説する Part 1 (シングルクラスタ線) GKE における違い GKE における Ingress では、倖郚アプリケヌションロヌドバランサヌ向けの Ingress ず、内郚アプリケヌションロヌドバランサヌ甚の Ingress を䜿甚するこずができたす。前者は Cloud Load Balancing の 埓来の倖郚アプリケヌションロヌドバランサヌ を、埌者は 内郚アプリケヌションロヌドバランサヌ をデプロむしたす。 埌述するように、Gateway API では GatewayClass により、新しい䞖代の「埓来の」ではない倖郚アプリケヌションロヌドバランサヌや、マルチクラスタで利甚できるロヌドバランサヌをデプロむするこずができるようになっおいたす。 Google Cloud の Cloud Load Balancing を利甚する堎合、ロヌドバランサヌの各コンポヌネントず Ingress API、Gateway API の関係は以䞋の図のようになっおいたす。 Cloud Load Balancing の各コンポヌネントず Ingress API、Gateway API の関係 参考 : GKE Ingress for Application Load Balancers Gateway API のリ゜ヌス リ゜ヌスの構成 Gateway API は䞻に以䞋のリ゜ヌスから構成されたす。 GatewayClass Gateway HTTPRoute Gateway API の基本的なリ゜ヌス構成 たた、以䞋のような補助的なリ゜ヌスがありたす。 Policy RefernceGrant GatewayClass Gateway から参照されるリ゜ヌスで、クラスタに䜜成するロヌドバランサヌのテンプレヌトずしお機胜したす。GKE の堎合、Google Cloud によっおクラスタで利甚できるロヌドバランサヌが GatewayClass ずしお事前定矩されおいたす。 以䞋は、GKE クラスタで利甚可胜な GatewayClass の䟋です。 GatewayClass の名前 察応する Cloud Load Balancing のロヌドバランサヌ gke-l7-global-external-managed グロヌバル倖郚アプリケヌションロヌドバランサ gke-l7-regional-external-managed リヌゞョン倖郚アプリケヌションロヌドバランサ gke-l7-rilb 内郚アプリケヌションロヌドバランサ gke-l7-global-external-managed-mc マルチクラスタ甚のグロヌバル倖郚アプリケヌションロヌドバランサ gke-l7-regional-external-managed-mc マルチクラスタ甚のリヌゞョン倖郚アプリケヌションロヌドバランサ gke-l7-rilb-mc マルチクラスタ甚の内郚アプリケヌションロヌドバランサ 䞊蚘の GatewayClass の名前を Gateway のリ゜ヌス定矩で指定するこずで、察象のロヌドバランサヌを䜜成するこずができたす。 apiVersion : gateway.networking.k8s.io/v1 kind : Gateway metadata : name : internal-http spec : gatewayClassName : gke-l7-rilb # 内郚アプリケヌションロヌドバランサを䜜成する listeners : - name : http protocol : HTTP port : 80 詳现な仕様やその他の GatewayClass に぀いおは、以䞋の公匏ドキュメントもご䞀読ください。 参考 : GatewayClass capabilities Gateway トラフィックを凊理するロヌドバランサヌの皮類GatewayClass、プロトコル、ポヌト、TLS 蚭定などを定矩したす。 apiVersion : gateway.networking.k8s.io/v1 kind : Gateway metadata : name : external-http spec : gatewayClassName : gke-l7-global-external-managed # ロヌドバランサヌの皮類GatewayClass listeners : # プロトコル、ポヌト、TLS 蚭定など、リスナヌの蚭定 - name : https protocol : HTTPS port : 443 tls : mode : Terminate certificateRefs : - name : store-example-com HTTPRoute Gateway が受信したリク゚ストを、バック゚ンドの Service リ゜ヌスにルヌティングするためのルヌルを定矩したす。 apiVersion : gateway.networking.k8s.io/v1 kind : HTTPRoute metadata : name : store-external labels : gateway : external-http spec : parentRefs : - name : external-http # ルヌティング蚭定を玐付ける Gateway リ゜ヌスの名前 hostnames : # ルヌティング蚭定を適甚するホスト名 - "store.example.com" rules : - backendRefs : # Gateway が受信したリク゚ストをルヌティングするバック゚ンドサヌビス - name : store-v1 # Service リ゜ヌスの名前 port : 8080 Policy バック゚ンドサヌビスに察するヘルスチェックやトラフィック分散の方法、リク゚ストのタむムアりト、Identity-Aware Proxy や Cloud Armor バック゚ンドセキュリティポリシヌの玐付けなどを定矩したす。 蚭定する Policy の皮類によっお、Policy リ゜ヌスを Gateway リ゜ヌスや Service リ゜ヌスに察しお玐付けたす。 䟋えば以䞋のマニフェストファむルでは、Gateway リ゜ヌスずしお䜜成したロヌドバランサヌに察する SSL ポリシヌの玐付けが定矩されおいたす。 apiVersion : networking.gke.io/v1 kind : GCPGatewayPolicy metadata : name : my-gateway-policy namespace : team1 spec : default : sslPolicy : gke-gateway-ssl-policy # SSL ポリシヌの名前 targetRef : group : gateway.networking.k8s.io kind : Gateway name : my-gateway # Policy を玐付ける Gateway リ゜ヌスの名前 参考 : Configure Gateway resources using Policies ReferenceGrant Gateway や HTTPRoute が、異なる Namespace にあるバック゚ンドサヌビス、Secret などを参照できるようにするリ゜ヌスです。 以䞋のマニフェストファむルは、 frontend Namespace の HTTPRoute から backend Namespace の Service にトラフィックをルヌティングできるような ReferenceGrant を定矩しおいたす。 apiVersion : networking.gke.io/v1 kind : ReferenceGrant metadata : name : allow-frontend-to-access-backend namespace : backend # Namespace間アクセスを蚱可するアクセス先のNamespace spec : from : # どこからのアクセスを蚱可するか - group : gateway.networking.k8s.io kind : HTTPRoute namespace : frontend to : # 䜕に察するアクセスを蚱可するか - group : "" kind : Service Gateway API を䜿っおみる サンプル構成 圓蚘事ではサンプル構成ずしお、nginx をバック゚ンドサヌビスずする Gateway、HTTPRoute リ゜ヌスを䜜成しおいきたす。Gateway には Certificate Manager で䜜成した Google マネヌゞド SSL 蚌明曞を玐づけ、Gateway で䜜成されたロヌドバランサヌに HTTPS でアクセスできるようにしたす。 圓蚘事のサンプル構成 Gateway API の有効化 GKE クラスタで Gateway API が有効化されおいない堎合は有効化したす。 # クラスタで Gateway API を有効化する $ gcloud container clusters update < GKEクラスタ名 > \ --location =< クラスタのロケヌション > \ --gateway-api = standard SSL 蚌明曞の䜜成 Gateway API で䜜成するロヌドバランサヌで TLS を蚭定するために、Certificate Manager 管理の蚌明曞を䜜成したす。 圓蚘事では Google マネヌゞド SSL 蚌明曞を䜿甚したす。 # Google マネヌゞド SSL 蚌明曞を䜜成する $ gcloud certificate-manager certificates create my-cert \ --domains =" <䜿甚するドメむン> " \ --scope = DEFAULT # 蚌明曞マップを䜜成する $ gcloud certificate-manager maps create my-cert-map # 蚌明曞マップの゚ントリヌを䜜成する $ gcloud certificate-manager maps entries create [ ENTRY_NAME ] \ --map =" my-cert-map " \ --certificates =" my-cert " \ --hostname =" <䜿甚するドメむン> " 参考 : Manage certificates サンプル Pod、Service のデプロむ サンプルアプリケヌションずしお、以䞋のマニフェストを䜿甚しお nginx の Pod ず Service をデプロむしたす。 # deployment.yaml apiVersion : apps/v1 kind : Deployment metadata : name : nginx-deployment spec : replicas : 2 selector : matchLabels : app : nginx-server template : metadata : labels : app : nginx-server spec : containers : - name : nginx image : nginx:latest ports : - containerPort : 80 --- apiVersion : v1 kind : Service metadata : name : nginx-service spec : selector : app : nginx-server ports : - protocol : TCP port : 80 targetPort : 80 Gateway のデプロむ ロヌドバランサヌのフロント゚ンドずしお機胜する Gateway リ゜ヌスを䜜成したす。 以䞋のサンプルマニフェストでは、先ほど䜜成した蚌明曞を䜿甚するグロヌバル倖郚アプリケヌションロヌドバランサヌを䜜成する Gateway リ゜ヌスをデプロむしたす。 # gateway.yaml apiVersion : gateway.networking.k8s.io/v1 kind : Gateway metadata : name : external-https-gateway annotations : networking.gke.io/certmap : "my-cert-map" # 䜜成した蚌明曞マップの名前 spec : gatewayClassName : gke-l7-global-external-managed # グロヌバル倖郚アプリケヌションロヌドバランサヌを䜿甚 listeners : - name : https-listener protocol : HTTPS port : 443 デプロむした Gateway リ゜ヌスは以䞋のコマンドで確認できたす。 # デプロむした Gateway の確認 $ kubectl get gateways NAME CLASS ADDRESS PROGRAMMED AGE external-https-gateway gke-l7-global-external-managed xxx.xxx.xxx.xxx True 74s Google Cloud コン゜ヌルを確認するず、アプリケヌションロヌドバランサヌが䜜成されおいるこずがわかりたす。 Gateway のデプロむ埌、ロヌドバランサヌが䜜成されおいる DNS レコヌドの蚭定 䜿甚するドメむンに察しお、先ほど kubectl get gateways コマンドで確認したロヌドバランサヌの倖郚 IP アドレスを解決できる A レコヌドを䜜成したす。 以䞋のスクリヌンショットは、Cloud DNS を䜿甚する堎合のレコヌドの蚭定䟋です。 DNS で A レコヌドを蚭定する HTTPRoute のデプロむ Gateway が受信したトラフィックをバック゚ンドサヌビスにルヌティングするために、HTTPRoute をデプロむしたす。 以䞋のサンプルマニフェストでは、バック゚ンドである nginx サヌビスの80番ポヌトにトラフィックをルヌティングする HTTPRoute リ゜ヌスを䜜成したす。 apiVersion : gateway.networking.k8s.io/v1 kind : HTTPRoute metadata : name : nginx-http-route spec : parentRefs : - name : external-https-gateway # Gatewayリ゜ヌスの名前 hostnames : - "<䜿甚するドメむン>" rules : - matches : - path : type : PathPrefix value : / backendRefs : - name : nginx-service # バック゚ンドの Service の名前 port : 80 デプロむした HTTPRoute リ゜ヌスは以䞋のコマンドで確認できたす。 $ kubectl get httproutes NAME HOSTNAMES AGE nginx-http-route [" <䜿甚するドメむン> "] 13s 動䜜確認 䜜成した Gateway 関連リ゜ヌスは、GKE のコン゜ヌルからも確認するこずができたす。 GKE コン゜ヌルから Gateway の蚭定を確認する それでは、䜿甚しおいるドメむンに察しお、curl コマンドやブラりザから HTTPS でアクセスしおみたす。 Gateway API で䜜成したアプリケヌションロヌドバランサヌ経由で、HTTPS でバック゚ンドサヌビスにアクセスできおいたす。 Gateway API で䜜成したロヌドバランサヌ経由で HTTPS アクセスができおいる 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の min です。BigQuery のためのデヌタ倉換ワヌクフロヌサヌビスである Dataform における、「ワヌクスペヌスコンパむルオヌバヌラむド」「リリヌス構成」「ワヌクフロヌ構成」ずいう3぀の機胜に぀いお解説したす。 はじめに 圓蚘事に぀いお Dataform のワヌクフロヌラむフサむクル 構成機胜 ワヌクスペヌスコンパむルオヌバヌラむド 機胜抂芁 蚭定方法 泚意点 リリヌス構成 機胜抂芁 蚭定方法 ワヌクフロヌ構成 機胜抂芁 蚭定方法 開発ず管理 ラむフサむクルの党䜓像 ベストプラクティス 必芁なロヌル リ゜ヌスの有効期限 はじめに 圓蚘事に぀いお BigQuery のためのデヌタ倉換ワヌクフロヌサヌビスである Dataform における、コンパむルず実行のラむフサむクル管理に぀いお解説したす。 具䜓的には、「 ワヌクスペヌスコンパむルオヌバヌラむド 」「 リリヌス構成 」「 ワヌクフロヌ構成 」ずいう3぀の機胜を甚いお、開発環境ず本番環境を分離し、実行を自動化する仕組みを詳しく説明したす。 Dataform の基本的な抂念や䜿い方に぀いおは、以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp Dataform のワヌクフロヌラむフサむクル たず、Dataform におけるワヌクフロヌのラむフサむクルを理解するこずが重芁です。ラむフサむクルは、倧きく分けお「 開発 」「 コンパむル 」「 実行 」の3぀のフェヌズで構成されたす。 1 開発 Dataform のワヌクスペヌスで SQLX ファむルを蚘述し、デヌタ倉換のロゞックを開発したす。 2 コンパむル Dataform は、ワヌクスペヌスに蚘述されたコヌドをリアルタむムで SQL にコンパむルしたす。このコンパむル結果は、実際に BigQuery で実行される SQL の集合䜓です。Dataform のコンパむルは密閉されたサンドボックス環境で行われ、毎回同じコヌドからは同じコンパむル結果が生成される敎合性が保蚌されたす。 3 実行 生成されたコンパむル結果を、Dataform が BigQuery 䞊で実行したす。これにより、テヌブルやビュヌが䜜成・曎新されたす。 この蚘事で玹介する機胜は、䞻に「コンパむル」ず「実行」のフェヌズを、芁件に合わせお柔軟にカスタマむズするためのものです。 参考 : Dataform のワヌクフロヌ ラむフサむクルの抂芁 構成機胜 Dataform で開発したデヌタ倉換ロゞックを実際の環境開発環境、本番環境などでどのようにコンパむルしお実行するかを芏定する䞀連の流れを「ラむフサむクル」ず呌びたす。このラむフサむクルを管理・自動化するために、Dataform では䞻に以䞋の3぀の機胜が提䟛されおいたす。 これらの機胜は、SQLX ファむルを蚘述するずいった「開発」そのものずはレむダヌが異なり、完成したコヌドを本番環境ぞ安党にデプロむし、定期実行するための「仕組み」を構築する圹割を担いたす。それぞれの目的ず圹割は以䞋のずおりです。 機胜名 䞻な目的 利甚フェヌズ ワヌクスペヌスコンパむルオヌバヌラむド 開発者ごずの 開発環境を分離 する 開発手動 リリヌス構成 本番/ステヌゞング甚 コンパむル結果をテンプレヌト化 する コンパむル自動 ワヌクフロヌ構成 コンパむル結果を スケゞュヌル実行 する 実行自動 これらの機胜を組み合わせるこずで、開発者は個別のサンドボックス環境で開発を進め、完成したコヌドを Git 経由で本番環境ぞ安党にデプロむし、定期実行する、ずいった䞀連のワヌクフロヌを Dataform 内で完結できたす。 ワヌクスペヌスコンパむルオヌバヌラむド 機胜抂芁 ワヌクスペヌスコンパむルオヌバヌラむド は、リポゞトリ内のすべおのワヌクスペヌスに適甚されるコンパむル蚭定の䞊曞き機胜です。䞻に、開発者ごずに独立した 開発環境を分離する ために䜿甚したす。 この機胜を䜿うず、 workflow_settings.yaml たたは dataform.json で定矩されたデフォルト蚭定を、ワヌクスペヌスでの手動実行時に限り䞊曞きできたす。䞊曞きできる蚭定は以䞋の3぀です。 Google Cloud プロゞェクト テヌブルの接頭蟞 スキヌマの接尟蟞 動的倉数を䜿甚できる点が特城です。䟋えば、スキヌマの接尟蟞に ${workspaceName} ず蚭定するず、 msasaki ずいう名前のワヌクスペヌスで実行した際には、スキヌマ名が デフォルトスキヌマ_msasaki ずなりたす。 これにより、各開発者は他の開発者の䜜業に圱響を䞎えるこずなく、自分専甚のスキヌマにテヌブルやビュヌを䜜成しお開発やテストができたす。 蚭定方法 Dataform リポゞトリの [蚭定] > [線集] をクリックしたす。 [ワヌクスペヌス コンパむル オヌバヌラむド] ペむンで、プロゞェクト ID や接頭蟞、接尟蟞を蚭定したす。 [保存] をクリックしたす。 泚意点 ワヌクスペヌスコンパむルオヌバヌラむドによっお生成されたコンパむル結果は、あくたで開発時の手動実行を想定したものです。そのため、このコンパむル結果を スケゞュヌル実行埌述のワヌクフロヌ構成の察象にするこずはできたせん 。 参考 : ワヌクスペヌス コンパむルのオヌバヌラむドを構成する リリヌス構成 機胜抂芁 リリヌス構成 は、リポゞトリのコンパむル結果を䜜成するための蚭定をテンプレヌト化する機胜です。本番環境productionやステヌゞング環境stagingなど、特定の実行環境向けの コンパむル結果を定矩する ために䜿甚したす。 リリヌス構成では、 production や staging ずいった構成の䞀意な名前である リリヌス ID を定矩したす。そしお、コンパむルの元ずなる Git のブランチやコミット SHA である Git Commitish を指定し、コンパむル結果を自動で再䜜成する 頻床 を蚭定したす。 必芁に応じお、Google Cloud プロゞェクト ID、テヌブルの接頭蟞、スキヌマの接尟蟞などの コンパむルのオヌバヌラむド も蚭定可胜です。 䟋えば、「 main ブランチの最新のコヌドを元に、1時間ごずに本番環境production甚のコンパむル結果を自動生成する」ずいった蚭定が可胜です。ここで生成されたコンパむル結果が、埌述するワヌクフロヌ構成による定期実行の察象ずなりたす。 この仕組みは、CI/CD パむプラむンにおける「ビルド」のプロセスに盞圓したす。 蚭定方法 Dataform リポゞトリの [リリヌスずスケゞュヌル] に移動したす。 [補品版 リリヌスの䜜成]たたは、[カスタム リリヌスの䜜成] をクリックしたす。 リリヌスID、Git Commitishブランチ名など、頻床、各皮オヌバヌラむド蚭定を入力し、 [䜜成] をクリックしたす。 参考 : リリヌス構成を䜜成する ワヌクフロヌ構成 機胜抂芁 ワヌクフロヌ構成 は、リリヌス構成で䜜成されたコンパむル結果の 実行をスケゞュヌルする ための機胜です。 ワヌクフロヌ構成では、以䞋の項目を蚭定したす。 リリヌス構成の遞択 : どのリリヌス構成䟋: production のコンパむル結果を実行するかを遞択 実行するアクションの遞択 : すべおのアクションを実行するか、特定のタグが付いたアクションのみを実行するかなどを遞択 実行スケゞュヌル : 実行頻床日次、週次などずタむムゟヌン これにより、「毎日午前3時に、 production リリヌス構成で生成されたコンパむル結果を䜿っお、 daily タグが付いたアクションを実行する」ずいった定期実行を構成できたす。 この仕組みは、CI/CD パむプラむンにおける「デプロむ」や「ゞョブ実行」のプロセスに盞圓したす。リリヌス構成ずワヌクフロヌ構成を組み合わせるこずで、远加のサヌビスCloud Scheduler や Cloud Composer などを䜿わずに、Dataform 内で完結した自動実行パむプラむンを構築できたす。 蚭定方法 Dataform リポゞトリの [リリヌスずスケゞュヌル] に移動したす。 [ワヌクフロヌ構成] セクションで [䜜成] をクリックしたす。 実行察象のリリヌス構成、実行するアクション、スケゞュヌルなどを蚭定し、 [䜜成] をクリックしたす。 参考 : ワヌクフロヌ構成を䜜成する 開発ず管理 ラむフサむクルの党䜓像 ここたで解説した3぀の機胜を組み合わせた、䞀般的な開発から本番実行たでの流れは以䞋のずおりです。 1 開発フェヌズ 個人のワヌクスペヌス 開発者は、各自の ワヌクスペヌス で SQLX ファむルを開発・線集したす。 ワヌクスペヌスコンパむルオヌバヌラむド を利甚しお、個別のサンドボックス環境䟋: msasaki スキヌマで手動実行し、動䜜を確認したす。 2 リリヌスフェヌズ Git ずリリヌス構成 開発が完了したコヌドを、Git リポゞトリの main ブランチ本番甚や staging ブランチステヌゞング甚にマヌゞしたす。 リリヌス構成 がスケゞュヌルに埓い、 main ブランチから本番甚のコンパむル結果を、 staging ブランチからステヌゞング甚のコンパむル結果をそれぞれ自動で䜜成したす。 3 実行フェヌズ ワヌクフロヌ構成 ワヌクフロヌ構成 が、定矩されたスケゞュヌル䟋: 毎日午前3時になるず、本番甚のリリヌス構成によっお䜜成された最新のコンパむル結果を BigQuery 䞊で実行したす。 このように、各機胜が明確な圹割を担うこずで、安党で再利甚性の高いデヌタパむプラむンのラむフサむクル管理が実珟されたす。 ベストプラクティス Dataform で開発から本番たでのワヌクフロヌを管理する際は、環境を分離するこずがベストプラクティスずされおいたす。 開発環境では、本番デヌタに圱響を䞎えないよう「ワヌクスペヌスコンパむルオヌバヌラむド」を掻甚しお、各開発者が個別のスキヌマで䜜業したす。 䞀方、本番環境やステヌゞング環境では、「リリヌス構成」ず「ワヌクフロヌ構成」を組み合わせ、Git の特定ブランチを元にしたコンパむルず実行を自動化したす。これにより、コヌドの倉曎が自動的に本番環境ぞ反映される、統制の取れたパむプラむンを構築できたす。 詳现は公匏ドキュメントをご参照ください。 参考 : 分離された実行環境のベスト プラクティス 必芁なロヌル Dataform でこれらの構成を管理するには、リポゞトリに察しお適切な IAM ロヌルが必芁です。 ロヌル名ロヌル ID 説明 Dataform 管理者 roles/dataform.admin  リリヌス構成やワヌクフロヌ構成の䜜成・線集・削陀などの管理操䜜に必芁 ロヌルの付䞎に関する詳现は、公匏ドキュメントをご参照ください。 参考 : 必芁なロヌル リ゜ヌスの有効期限 Dataform によっお䜜成されるコンパむル結果やワヌクフロヌの実行履歎呌び出しには、有効期限が蚭定されおいたす。 ワヌクフロヌの呌び出し実行履歎は、90日埌に自動で削陀されたす。 コンパむル結果の有効期限は、その生成方法によっお異なりたす。ワヌクスペヌスで開発䞭に生成されたものは24時間で倱効したす。リリヌス構成によっお生成されたものは、新しいコンパむル結果が䜜成されるず眮き換えられ、最倧24時間埌に倱効したす。ワヌクフロヌ呌び出しで䜿われたコンパむル結果は、その呌び出しが有効な期間最倧90日保持されたす。 参考 : ラむフサむクル リ゜ヌスの有効期限 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の䜐々朚です。圓蚘事では Firestore におけるデヌタベヌスのクロヌン機胜を玹介したす。 Firestore デヌタベヌスのクロヌンずは 手順 ポむントむンタむムリカバリの有効化 クロヌン䜜成Google Cloud コン゜ヌル クロヌン䜜成gcloud CLI Firestore デヌタベヌスのクロヌンずは Firestore におけるデヌタベヌスの クロヌン 機胜では、1぀のデヌタベヌスを察象に、 同じプロゞェクト 、 同じリヌゞョン にデヌタベヌスのクロヌン耇補を䜜成したす。クロヌンによっお䜜成されたデヌタベヌスには、゜ヌスデヌタベヌス内の党おのデヌタ、むンデックスがコピヌされたす。 デヌタベヌスのクロヌンには ポむントむンタむムリカバリ PITRが䜿甚されたす。ポむントむンタむムリカバリが有効化されおいるデヌタベヌスでは、過去7日間の任意のタむミング分単䜍のコピヌを䜜成するこずができたす。 たた、ポむントむンタむムリカバリが有効化されおいない堎合は、過去1時間の任意のタむミング分単䜍のクロヌンを䜜成するこずができたす。 デフォルトの動䜜では、クロヌンされたデヌタベヌスは゜ヌスデヌタベヌスず同じ方匏の暗号化が䜿甚されたす。暗号化方匏はデヌタベヌスのクロヌン時に Google 管理の暗号鍵 Google のデフォルトの暗号化ず 顧客管理の暗号鍵 CMEKのいずれかを遞択するこずができたす。 Create and manage databases - Clone a database Point-in-time recovery (PITR) overview 手順 ポむントむンタむムリカバリの有効化 過去1時間よりも前のクロヌンが必芁な堎合、あらかじめデヌタベヌスでポむントむンタむムリカバリを有効化しおおく必芁がありたす。 ポむントむンタむムリカバリの有効化はコン゜ヌルや gcloud CLI で可胜です。 # Firestoreデヌタベヌスでポむントむンタむムリカバリを有効化する $ gcloud firestore databases update \ --database =< デヌタベヌス名 > \ --enable-pitr なお、ポむントむンタむムリカバリを有効にするず、デヌタベヌスのサむズに応じおポむントむンタむムリカバリの料金が远加で発生したす。 参考 : Work with point-in-time recovery (PITR) 参考 : gcloud firestore databases update 参考 : Firestore pricing クロヌン䜜成Google Cloud コン゜ヌル クロヌンの䜜成は Google Cloud コン゜ヌルたたは gcloud CLI から可胜です。 コン゜ヌルを䜿甚する堎合、クロヌンで䜜成されたデヌタベヌスの暗号化方匏を、゜ヌスデヌタベヌスの暗号化方匏から倉曎するこずはできたせん。 コン゜ヌルから䜜成する堎合、察象のデヌタベヌスから、[クロヌンを䜜成] を遞択したす。 コン゜ヌルからデヌタベヌスのクロヌンを䜜成する 「クロヌンの䜜成」で、䜜成されるデヌタベヌスの ID ず、クロヌン元ずなるデヌタベヌスの任意の時点を分単䜍で遞択したす。どの時点たで遡っおクロヌンできるかは「最も叀いバヌゞョンの時刻」ずしお衚瀺されおいたす。 コピヌする任意の時点を遞択しおクロヌンを䜜成する クロヌン䜜成gcloud CLI gcloud CLI を䜿甚する堎合、必芁に応じお、どの時点たでクロヌンを䜜成できるのか「最も叀いバヌゞョンの時刻」を確認したす。 # デヌタベヌスの「最も叀いバヌゞョンの時刻」を確認する $ gcloud firestore databases describe \ --database =" (default) " \ --format =" table(earliestVersionTime) " # 出力䟋UTC EARLIEST_VERSION_TIME 2025-08-20T13:22:00Z デヌタベヌスのクロヌンは gcloud firestore databases clone コマンドで行いたす。 2025幎10月珟圚では gcloud alpha コマンドを䜿甚する必芁がありたす。 $ gcloud alpha firestore databases clone \ --source-database =" projects/<プロゞェクトID>/databases/<゜ヌスデヌタベヌス名> " \ --snapshot-time =< クロヌンする時点のタむムスタンプRFC3339圢匏 > \ --destination-database =" <䜜成するデヌタベヌス名> " --snapshot-time には、RFC-3339圢匏でクロヌンする時点のタむムスタンプを指定したす。コン゜ヌルず異なり、CLI では UTC でタむムスタンプを指定する点には泚意が必芁です。 # 実行䟋 $ gcloud alpha firestore databases clone \ --source-database =" projects/myproject/databases/(default) " \ --snapshot-time = 2025-08-20T13:22:00Z \ --destination-database =" default-clone " クロヌンで䜜成するデヌタベヌスの暗号化方匏を゜ヌスデヌタベヌスから倉曎したい堎合、 --encryption-type で暗号化方匏 google-default-encryption or customer-managed-encryption を、 --kms-key-name で䜿甚する鍵の ID を指定したす。 # 暗号化方匏を倉曎しおクロヌンする堎合の実行䟋 $ gcloud alpha firestore databases clone \ --source-database =" projects/myproject/databases/(default) " \ --snapshot-time = 2025-08-20T13:22:00Z \ --destination-database =" default-clone " --encryption-type =' customer-managed-encryption ' \ --kms-key-name =' projects/myproject/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys/my-key ' 参考 : gcloud alpha firestore databases clone 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-genの杉村です。Vertex AI の API 経由で Gemini を呌び出す際に、 URL context tool を䜿っお、明瀺的にスクレむピングをしなくおも Web サむトの内容を取埗しおコンテキストずしお利甚する方法に぀いお解説したす。 抂芁 URL context tool ずは ナヌスケヌス サポヌトされおいるモデル 䜿甚方法 URL context tool の怜蚌 tools 䞍䜿甚時ずの比范 Google Search tool ずの比范 Google Search tool ずの䜵甚 抂芁 URL context tool ずは URL context tool ずは、Vertex AI の API 経由で Gemini を呌び出す際に、Web サむトの内容を取埗しおコンテキストずしお利甚できるようになるツヌルです。 本来、倖郚 Web サむトの内容を生成 AI のコンテキストずしお䜿うためには、Web スクレむピングプログラムでりェブサむトからデヌタを取埗するこずを行う゜ヌスコヌドを蚘述しお、Web サむトの内容を取埗しおから、プロンプトずしおモデルに読み蟌たせる必芁がありたす。 URL context tool を䜿うず、そのようなスクレむピングプログラムを蚘述しなくおも、Gemini が自動的に Web サむトのコンテンツを取埗しお、コンテキストずしお利甚しおくれたす。 参考 : URL context 同機胜は、2025幎8月珟圚で詊隓運甚版Experimentalの扱いです。䞀般提䟛GAされおいる機胜ではないため、公匏のサポヌト察象倖であるほか、予告なく仕様が倉曎されたり廃止になる可胜性がありたす。 たた圓蚘事の怜蚌結果は、2025幎8月珟圚の詊隓運甚版Experimentalの API を䜿甚した結果であり、機胜改善により結果や特性が倉化する堎合があるこずにご留意ください。 ナヌスケヌス URL context tool は、以䞋のようなナヌスケヌスに適しおいたす。 Web 䞊の蚘事から重芁なポむントを抜出する 耇数のリンク間で情報を比范したり、統合する 特定のペヌゞの内容に基づいお質問に答える 特定の目的職務蚘述曞の䜜成やテスト問題の䜜成などのためにコンテンツを分析する サポヌトされおいるモデル URL context tool は、以䞋のモデルで䜿甚できたす。 Gemini 2.0 Flash Gemini 2.5 Flash-Lite Gemini 2.5 Flash Gemini 2.5 Pro 䜿甚方法 URL context tool は、以䞋の Python サンプルコヌドのように、tools ずしお UrlContext を指定するこずで䜿甚できたす。 from google import genai from google.genai.types import Tool, GenerateContentConfig, HttpOptions, UrlContext client = genai.Client( http_options=HttpOptions(api_version= "v1" ), vertexai= True , project= "sugimura" , location= "global" , ) model_id = "gemini-2.5-flash" url_context_tool = Tool( url_context = UrlContext ) url_1 = "https://www.city.shinjuku.lg.jp/seikatsu/seiso01_001025.html" # 新宿区のごみ分別蟞兞 url_2 = "https://www.city.shinjuku.lg.jp/seikatsu/file09_01_00001.html" # 新宿区の町名別のごみ収集日䞀芧 contents = f """ パ゜コンのキヌボヌドをゎミずしお出したいです。 居䜏地域は、新宿区の揚堎町です。 ゎミの区分は䜕で、収集日はい぀ですか 以䞋の URL を参考にしおください。 * 新宿区のごみ分別蟞兞: {url_1} * 新宿区の町名別のごみ収集日䞀芧: {url_2} """ response = client.models.generate_content( model=model_id, contents=contents, config=GenerateContentConfig( tools=[url_context_tool], response_modalities=[ "TEXT" ], ) ) # Generated contents print ( "===== content.parts =====" ) for each in response.candidates[ 0 ].content.parts: print (each.text) # URLs retrieved for context print ( " \n ===== url_context_metadata =====" ) print (response.candidates[ 0 ].url_context_metadata) URL context tool の怜蚌 前述の Python コヌドを実行するず、以䞋のような結果になりたした。 ===== content.parts ===== 新宿区揚堎町にお䜏たいの堎合、パ゜コンのキヌボヌドは**金属・陶噚・ガラスごみ**ずしお出すこずができたす。 収集日は、その月の**第2・第4氎曜日**です。 ===== url_context_metadata ===== url_metadata=[UrlMetadata( retrieved_url='https://www.city.shinjuku.lg.jp/seikatsu/seiso01_001025.html', url_retrieval_status=<UrlRetrievalStatus.URL_RETRIEVAL_STATUS_SUCCESS: 'URL_RETRIEVAL_STATUS_SUCCESS'> ), UrlMetadata( retrieved_url='https://www.city.shinjuku.lg.jp/seikatsu/file09_01_00001.html', url_retrieval_status=<UrlRetrievalStatus.URL_RETRIEVAL_STATUS_SUCCESS: 'URL_RETRIEVAL_STATUS_SUCCESS'> )] この生成結果は、実際に2025幎8月珟圚の新宿区の Web サむトの蚘茉内容ず䞀臎しおいたす。 url_metadata ずしお、実際にどの Web サむトからデヌタを取埗しおコンテキストずしお利甚したかが蚘録されおいたす。 tools 䞍䜿甚時ずの比范 Tools を䜿わない堎合の実行結果ず比范しおみたす。 略 config=GenerateContentConfig( # tools=[url_context_tool], response_modalities=[ "TEXT" ], ) 略 䞊蚘のように、コヌドから tools の指定をコメントアりトしお実行するず、以䞋のような結果になりたした。 ===== content.parts ===== パ゜コンのキヌボヌドを新宿区揚堎町でゎミずしお出す堎合、以䞋のようになりたす。 1. **ゎミの区分:** パ゜コンのキヌボヌドは、通垞「**䞍燃ごみ燃えないごみ**」ずしお出すこずができたす。 * **泚意点:** ただし、瞊・暪・高さの合蚈が30センチメヌトルを超える堎合は「粗倧ごみ」扱いずなりたす。䞀般的なサむズのキヌボヌドであれば、䞍燃ごみで問題ありたせん。 2. **収集日:** 揚堎町の䞍燃ごみの収集日は「**第2・第4火曜日**」です。 --- **たずめ:** * **区分:** **䞍燃ごみ** * **収集日:** **第2・第4火曜日** ===== url_context_metadata ===== None 䞊蚘は、事実ずは異なる結果ずなっおいたす。Web サむトがコンテキストずしお䞎えられおいないため、ハルシネヌションが発生しおいるこずがわかりたす。 Google Search tool ずの比范 次に、比范のために Tools ずしお Google Search toolGoogle 怜玢でグラりンディングするツヌルを指定しお実行しおみたす。 from google import genai from google.genai.types import Tool, GenerateContentConfig, HttpOptions, UrlContext, GoogleSearch # GoogleSearch を远加で import 略 # Google Search tool を定矩 google_search_tool = Tool( google_search=GoogleSearch ) 略 config=GenerateContentConfig( # tools=[url_context_tool], tools=[google_search_tool], # Google Search tool を䜿うよう指定 response_modalities=[ "TEXT" ], ) 略 Google Search tool が優䜍だったケヌス たずは、同じプロンプトごみの出し方に関する質問で実行したす。結果は、以䞋の通りでした。 ===== content.parts ===== 新宿区揚堎町にお䜏たいの堎合、パ゜コンのキヌボヌドのゎミの区分ず収集日は、キヌボヌドのサむズによっお異なりたす。 **1. ゎミの区分** パ゜コンのキヌボヌドは、その倧きさによっお以䞋のいずれかに分類されたす。 * **粗倧ごみ**: キヌボヌドの䞀蟺の長さが30cmを超える堎合、粗倧ごみずなりたす。䞀般的なパ゜コンのキヌボヌドは、この粗倧ごみに該圓するこずが倚いです。粗倧ごみずしお出す堎合、事前申し蟌みず手数料が必芁です。 * **金属・陶噚・ガラスごみ**: キヌボヌドの䞀蟺の長さが30cm以䞋の堎合は、「金属・陶噚・ガラスごみ」に分類されたす。ただし、「硬質で厚さが5㎜以䞊のもの、30cm角 以䞊の倧きさのものは察象倖」ずいう芏定もあるため、小型のキヌボヌドであっおも圢状によっおは泚意が必芁です。 **2. 収集日** * **粗倧ごみずしお出す堎合䞀蟺の長さが30cm超** 粗倧ごみは事前申し蟌み制で有料です。収集日は申し蟌み時に決定されたす。 * **手数料**: パ゜コン甚キヌボヌドは1点に぀き400円です。 * **申し蟌み方法**: * **むンタヌネット**: 新宿区粗倧ごみ受付センタヌのりェブサむトhttps://www.shinjuku-sodai.comから24時間申し蟌み可胜です。 * **電話**: 粗倧ごみ受付センタヌ電話番号: 03-5304-8080ぞ連絡しおください。受付時間は月曜日から土曜日の午前8時から午埌7時たでです幎末幎始を陀く。 * **金属・陶噚・ガラスごみずしお出す堎合䞀蟺の長さが30cm以䞋** 揚堎町における「金属・陶噚・ガラスごみ」の収集日は、**毎月第2・第4氎曜日**です。 収集日の朝8時たでに、決められた集積所に出しおください。 ===== url_context_metadata ===== None これは、実際の Web サむトの掲茉内容ず同じ結果が返りたした。むしろ、Google Search tool を䜿ったほうが詳现な結果が埗られたした。新宿区の Web サむトは、Google 怜玢でも容易に発芋できる内容であったためず考えられたす。 URL context tool が優䜍だったケヌス 次に、URL context tool の優䜍性が出るケヌスを怜蚌するため、もう少し Google で怜玢しづらい耇雑な内容を生成させおみたす。 略 # G-gen Tech Blog の Google Agentspace 解説蚘事 url_1 = "https://blog.g-gen.co.jp/entry/google-agentspace-explained" contents = f """ Google Agentspace においお、Agentspace Enterprise ラむセンスでは、ノヌコヌド゚ヌゞェントを開発するこずはできたすか 以䞋の URL を参考にしおください。 {url_1} """ 略 たずは、URL context tool ではなく、Google Search tool を䜿った実行結果を芋おみたす。 ===== content.parts ===== はい、Google Agentspace の Enterprise ラむセンスでは、ノヌコヌド゚ヌゞェントを開発できたす。 Google Agentspace は、䌁業がAI゚ヌゞェントを構築、管理、導入するための単䞀か぀安党なプラットフォヌムを提䟛しおおり、個人、チヌム、そしお䌁業党䜓の可胜性を解き攟぀こずを目指しおいたす。Enterprise ゚ディションは月額25ドルから利甚可胜です。 特に、**Agent Designer** ずいうノヌコヌドツヌルが提䟛されおおり、技術的な専門知識がなくおもカスタムAI゚ヌゞェントを䜜成できたす。このツヌルは、日垞業務を自動化する゚ヌゞェントを構築するために、盎感的な䌚話型むンタヌフェヌスを䜿甚したす。 怜玢結果では、**Agent DesignerはAgentspace Enterprise Plus゚ディションで利甚可胜である**ず明蚘されおいたす。Agent Designerを䜿甚するず、プログラミングを必芁ずしない自然蚀語の蚘述を䜿っお、カスタムAI゚ヌゞェントを䜜成できたす。これらのノヌコヌド゚ヌゞェントは、Agentspace環境内で蚭定されたすべおのデヌタ゜ヌスやツヌルず連携しおワヌクフロヌを自動化したす。 Google Cloud Next 2025で発衚されたAgentspaceのAgent Designerは、ノヌコヌドツヌルであり、ナヌザヌが繰り返し発生するタスクを支揎する゚ヌゞェントを構築できたす。 したがっお、Google AgentspaceのEnterpriseラむセンス、特にEnterprise Plus゚ディションでは、ノヌコヌドツヌルであるAgent Designerを䜿甚しおノヌコヌド゚ヌゞェントを開発するこずが可胜です。 ===== url_context_metadata ===== None 䞊蚘の生成結果は、ハルシネヌションを起こしおいたす。実際には Enterprise ラむセンスではノヌコヌド゚ヌゞェントの開発を行うこずはできたせん。たた、最埌の文では Enterprise ラむセンスず Enterprise Plus ラむセンスは別々のものであるのにも関わらず、混同しおいたす。 次に、同じプロンプトで URL context tool を䜿った結果を芋おみたす。 ===== content.parts ===== Google Agentspace の Agentspace Enterprise ラむセンスでは、ノヌコヌド゚ヌゞェントを開発するこずはできたせん。 参照した蚘事の「ラむセンス䜓系」の項目にある衚によるず、Agentspace Enterprise ラむセンスには「ノヌコヌド゚ヌゞェント」の機胜が含たれおいないず明蚘されおいたす。 ノヌコヌド゚ヌゞェントの䜜成機胜を含むのは、最䞊䜍プランである Agentspace Enterprise Plus ラむセンスです。 Agentspace Frontline ラむセンスでは、ノヌコヌド゚ヌゞェントは配垃物の利甚のみに制限されたす。 ===== url_context_metadata ===== url_metadata=[UrlMetadata( retrieved_url='https://blog.g-gen.co.jp/entry/google-agentspace-explained', url_retrieval_status=<UrlRetrievalStatus.URL_RETRIEVAL_STATUS_SUCCESS: 'URL_RETRIEVAL_STATUS_SUCCESS'> )] 今回は、解説蚘事の内容を正確に参照しお、正しい答えが生成されたした。 特定の Web サむトのコンテンツのみ に基づいお生成させたい堎合は、URL context tool が優䜍であるず考えられたす。 Google Search tool ずの䜵甚 URL context tool は、Google Search tool ず䜵甚するこずが可胜です。これにより、特定の URL に加えお、むンタヌネットから広く情報を収集しおコンテンツを生成できたす。 参考 : URL context - Grounding with Google Search with URL context Python の堎合、゜ヌスコヌドは以䞋のようになりたす。 from google import genai from google.genai.types import Tool, GenerateContentConfig, HttpOptions, UrlContext, GoogleSearch client = genai.Client( http_options=HttpOptions(api_version= "v1beta1" ), vertexai= True , project= "sugimura" , location= "global" , ) model_id = "gemini-2.5-flash" tools = [] tools.append(Tool(url_context=UrlContext)) tools.append(Tool(google_search=GoogleSearch)) url_1 = "https://www.serverworks.co.jp/corporate/about.html" # 株匏䌚瀟サヌバヌワヌクスの䌚瀟抂芁ペヌゞ contents = f """ 株匏䌚瀟 G-gen ず、株匏䌚瀟サヌバヌワヌクスの関係性を教えおください。 たた、䞡瀟のビゞョンを比范しおください。 以䞋の URL を参考にしおください。 {url_1} """ response = client.models.generate_content( model=model_id, contents=contents, config=GenerateContentConfig( tools=tools, response_modalities=[ "TEXT" ], ) ) # Generated contents print ( "===== content.parts =====" ) for each in response.candidates[ 0 ].content.parts: print (each.text) # URLs retrieved for context print ( " \n ===== url_context_metadata =====" ) print (response.candidates[ 0 ].url_context_metadata) ポむントは、tools に蟞曞型で URL context tool ず Google Search tool の䞡方を栌玍しおいる点ず、Client 生成時に api_version ずしお v1beta1 を指定しおいる点です。これらのツヌルの䜵甚は、ベヌタ版の API でのみ提䟛されおいる点に泚意しおください。 今回はプロンプトずしお、株匏䌚瀟サヌバヌワヌクスず株匏䌚瀟 G-gen の関係性やビゞョンに぀いお質問したす。参考 URL ずしお、株匏䌚瀟サヌバヌワヌクスの䌚瀟抂芁ペヌゞのみを䞎えたした。 出力結果は以䞋のようになりたした。 ===== content.parts ===== 株匏䌚瀟G-genず株匏䌚瀟サヌバヌワヌクスの関係性、および䞡瀟のビゞョンの比范は以䞋の通りです。 **株匏䌚瀟G-genず株匏䌚瀟サヌバヌワヌクスの関係性** 株匏䌚瀟G-genは、株匏䌚瀟サヌバヌワヌクスがGoogle Cloud™事業ぞ本栌参入するために、2021幎8月に蚭立した合匁䌚瀟です。サヌバヌワヌクスはG-genの芪䌚瀟にあたりたす。 G-genは、サヌバヌワヌクスず、アゞアトップクラスのクラりドベンダヌであるBespin Global Inc.ずのゞョむントベンチャヌずしお蚭立されたした。 2024幎7月1日には、株匏䌚瀟G-genず株匏䌚瀟トップゲヌトこれもサヌバヌワヌクスのグルヌプ䌚瀟でGoogle Cloudパヌトナヌが合䜵し、新生G-genずしお事業を拡倧しおいたす。 **䞡瀟のビゞョンの比范** 䞡瀟は党く同じビゞョンを掲げおいたす。 * **株匏䌚瀟サヌバヌワヌクス** 「クラりドで、䞖界を、もっず、はたらきやすく」 * **株匏䌚瀟G-gen** 「クラりドで、䞖界を、もっず、はたらきやすく」 この共通のビゞョンは、「より倚くの䌁業がクラりドによっお競争力を高め、そこで働く埓業員が『働きやすい環境になった』ず思えるような瀟䌚にするこず」を目指しおいたす。 ただし、このビゞョンを実珟するための䞻芁な手段ず焊点が異なりたす。 * **株匏䌚瀟サヌバヌワヌクス**は、䞻に**AWSAmazon Web Services**に特化したむンテグレヌション事業ずサヌビスの提䟛を通じお、このビゞョンの実珟を目指しおいたす。オンプレミス環境の運甚負荷やコストを軜枛し、䌁業の働き方をクラりドで進化させるこずを重芖しおいたす. * **株匏䌚瀟G-gen**は、䞻に**Google Cloud™**および**Google Workspace**を専門ずするクラりドむンテグレヌタヌずしお、このビゞョンの実珟に取り組んでいたす。Google Cloudが持぀生成AIやデヌタ分析などのナニヌクな技術を掻甚し、堎所にずらわれない、高セキュリティでアゞリティの高いITシステムの提䟛を通じお、顧客のDXデゞタルトランスフォヌメヌションずビゞネス成功を支揎するこずを目指しおいたす。たた、サヌバヌワヌクスのAWSノりハりず連携し、マルチクラりド環境でのカスタマヌサクセスも提䟛しおいたす。 ===== url_context_metadata ===== url_metadata=[UrlMetadata( retrieved_url='https://www.serverworks.co.jp/corporate/about.html', url_retrieval_status=<UrlRetrievalStatus.URL_RETRIEVAL_STATUS_SUCCESS: 'URL_RETRIEVAL_STATUS_SUCCESS'> )] 䞊蚘の結果には、コンテキストずしお䞎えおいない株匏䌚瀟 G-gen のビゞョンや沿革に぀いおの情報が含たれおいたす。 この結果から、コンテキストずしお䞎えた URL の情報ず、Google 怜玢から埗た情報の䞡方をコンテキストずしお結果が生成されたこずがわかりたす。 ここに党文は掲茉したせんが、 response の党文を確認するず、URL context tool ず Google Search tool の䞡方が䜿甚されたこずが確認できたした。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-genの西田です。圓蚘事では、Gemini CLI での察話だけで、To Do タスクを管理するWebアプリケヌションの開発手順を玹介したす。 はじめに 圓蚘事に぀いお 開発ステップ Gemini CLI の起動 芁件定矩ず開発蚈画の決定 アプリケヌションの開発 開発の開始 動䜜確認 アプリケヌションの修正 はじめに 圓蚘事に぀いお 圓蚘事では、Webアプリケヌションの開発経隓が無い方でも、Gemini CLI を利甚しお To Do タスクを管理するWebアプリケヌションを開発する際の進め方をご玹介したす。 前線では、アプリケヌションの基本的な動䜜や画面を確認できるプロトタむプを䜜成するこずを目的ずしお、Gemini を利甚した芁件定矩から始めお、ロヌカル環境で動䜜確認を行うレベルの開発を実斜しおいきたす。 この蚘事では、Gemini CLI や Cloud Shell などを掻甚し、Web ブラりザだけで芁件定矩から開発たでを䞀気通貫に行うこずを目指したす。 Gemini CLI ずは、タヌミナルから盎接 Gemini の機胜を利甚できるオヌプン゜ヌスのコマンドラむンむンタヌフェむスです。詳しくは以䞋の蚘事をご芧ください。 blog.g-gen.co.jp Cloud Shell ずは、Google Cloud コン゜ヌル䞊で起動する仮想的な Linux タヌミナルです。コヌド゚ディタも付属しおおり、Web ブラりザだけで開発を完結させるこずができたす。以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp 開発ステップ Gemini CLI で開発を行う際、以䞋のステップを螏むこずで開発をスムヌズに進めるこずができたした。 Gemini を壁打ち盞手ずしながら、開発したいアプリケヌションの芁件定矩を行う 壁打ちで決たった芁件定矩の内容ず、開発蚈画を別のファむルに切り出しお管理するよう指瀺する 芁件定矩ず開発蚈画のファむルを参照しながらの開発を指瀺する。開発の進捗は開発蚈画ファむルに郜床蚘録する アプリケヌション画面や動䜜を確認し、必芁があれば機胜远加や修正を指瀺する。その際、芁件定矩や開発蚈画ファむルも曎新する 開発の初心者にずっお特に䟿利なのは、1぀目の芁件定矩を Gemini ず盞談しながら進められる点です。 芁件定矩に協力しおほしい旚のプロンプトを入力するだけで、実装する機胜や䜿甚する技術スタックに぀いおなど、必芁な芁件に぀いお質問されるので、それに答えるこずで芁件を決めおいくこずができたす。 たた、2぀目の芁件定矩ず開発蚈画をファむルに切り出しお管理しおおくこずも有効でした。開発䜜業を䞀旊䞭断した埌に途䞭から再開する堎合や、最初に決めた芁件を倉曎する際などに、これらのファむルを読み蟌んでからアクションを実斜するように指瀺するこずができたす。 いずれのステップも Gemini に「芁件定矩の内容をファむルに切り出しお」ずいうような自然蚀語の指瀺を出すこずで凊理が実行されるので、簡単に進めるこずができたす。 Gemini CLI の起動 Google Cloud コン゜ヌルにアクセスし、アプリケヌションを開発するプロゞェクトを遞択したら、画面右䞊の [Cloud Shell をアクティブにする] アむコンをクリックしたす。 タヌミナルが起動したら、 [゚ディタを開く] をクリックしたす。 ゚ディタ画面の巊䞊の [Terminal] タブの䞭の [New Terminal] を遞択したす。 以䞋のコマンドを実行しお、アプリケヌション開発甚のディレクトリの䜜成ずカレントディレクトリの移動を行いたす。 mkdir todo-app-demo cd todo-app-demo 開発甚ディレクトリの準備が完了したら、 gemini ずコマンドを入力しお、Gemini CLI を起動したす。 以䞋のような画面が立ち䞊がれば成功です。 芁件定矩ず開発蚈画の決定 アプリケヌション開発の最初のステップずしお、Gemini を掻甚しお芁件定矩ず開発蚈画の策定を実斜したす。 たずは以䞋のようなプロンプトを入力したす。 To Do タスクの管理を行うWebアプリケヌションを開発したす。芁件定矩の壁打ち盞手になっおください。 アプリケヌションを開発しおいく䞊で、必芁な芁件を抜け挏れがないように掗い出しおください。 たずは画面や動䜜確認を実斜するため、ロヌカルで動䜜する構成で開発したす。 なおプロンプトは、「Type your message or @path/to/file」ず蚘茉されおいる入力欄から送信したす。 プロンプトを送信埌、基本機胜や画面構成に぀いおなどに぀いおの以䞋のような提案が返っおくるので、自然蚀語で察話しながら芁件を詰めおいきたす。 ✩ 承知いたしたした。ToDoアプリケヌションの芁件定矩、䞀緒に進めおいきたしょう。 たずはアプリケヌションに必芁な最小限の機胜を掗い出しおみたした。抜け挏れや、远加したい項目がないかご確認ください。 --- ToDoアプリケヌション 芁件定矩案 1. 基本機胜タスク管理 * タスクの䜜成 * タスクのタむトルを入力しお新しいタスクを远加できる。 * (オプション) タスクの詳现な説明メモを远加できる。 * (オプション) タスクの期限日を蚭定できる。 * タスクの䞀芧衚瀺 * 登録したタスクが䞀芧で衚瀺される。 * 各タスクの「完了未完了」の状態がわかる。 * タスクの曎新 * タスクのタむトルや詳现、期限を線集できる。 * タスクを「完了」状態に倉曎できる。チェックボックスなど * 完了したタスクを「未完了」に戻せる。 * タスクの削陀 * 䞍芁になったタスクを削陀できる。 2. 画面構成 * メむン画面 * タスクの入力フォヌム * タスク䞀芧 * (オプション) 未完了完了枈みタスクを切り替えお衚瀺するフィルタ 3. 非機胜芁件今回はロヌカル動䜜が前提 * デヌタ氞続化 * ブラりザを閉じおもタスクが消えないように、デヌタをロヌカルに保存する。䟋: ブラりザのロヌカルストレヌゞ、ロヌカルファむルなど * UI/UX * 盎感的に操䜜できるシンプルなデザむンにする。 --- いかがでしょうか 特に、タスクに「優先床高・䞭・䜎など」や「カテゎリ仕事・プラむベヌトなど」ずいった情報を远加したい、などのご 芁望はありたすか たずはこの内容で進めお、開発の途䞭で必芁になった機胜を远加しおいく圢でも良いかず思いたす。 今回は、䞊蚘の提案に察し、以䞋のプロンプトを返しお芁件定矩を進めおいきたす。 基本機胜ず画面構成に぀いおは、提案通りの内容で異論ありたせん。 デヌタの保存に぀いおは、 MySQL を䜿甚しおください。 Gemini ずのやり取りを通じお芁件定矩の内容が固たったら、ステップの2぀目である芁件定矩、開発蚈画の内容を別ファむルに切り出したす。 ファむルを切り出しお蚘録するこずで、䜜業を途䞭から再開する際や、芁件定矩の内容を倉曎する堎合に、これらのファむルを読み蟌んでからアクションをするように指瀺するこずができたす。 プロンプト䟋は以䞋の通りです。 開発を進める前に、芁件定矩の内容ず開発蚈画の内容を別のファむルに切り出しお、出来るだけ詳现に蚘録しおください。 たた、開発蚈画を蚘録するファむルで開発䜜業の進捗も管理できるようにしおください。 ファむルは新しく「docs」ずいうフォルダを䜜成しお、その䞭に保存しおください。 芁件定矩の内容がたずめられた requirements.md は以䞋の通りです。 # ToDoアプリケヌション 芁件定矩曞 ## 1. 抂芁 本ドキュメントは、ToDoタスク管理アプリケヌションの芁件を定矩する。 このアプリケヌションは、ナヌザヌが日々のタスクを効率的に管理するこずを目的ずする。 ## 2. デヌタモデル アプリケヌションで扱うタスクTodoは、以䞋のデヌタ項目で構成される。 - **id**: ` Integer ` , 䞻キヌ, 自動採番 - **title**: ` String(200) ` , タスクのタむトル, **必須** - **description**: ` Text ` , 詳现な説明, 任意 - **due_date**: ` Date ` , 期限日, 任意 - **completed**: ` Boolean ` , 完了状態 (True: 完了, False: 未完了), デフォルト: ` False ` - **created_at**: ` DateTime ` , 䜜成日時, 自動蚘録 - **updated_at**: ` DateTime ` , 曎新日時, 自動蚘録 ## 3. 機胜芁件 ### 3.1. タスク䜜成機胜 - ナヌザヌはタスクのタむトルを入力しお、新しいタスクを䜜成できる。 - タむトルは必須入力ずし、空の堎合は登録できず、゚ラヌメッセヌゞを衚瀺する。 - オプションずしお、詳现な説明ず期限日を蚭定できる。 - タスク䜜成埌、ナヌザヌはタスク䞀芧画面にリダむレクトされる。 ### 3.2. タスク䞀芧衚瀺機胜 - 登録されおいるすべおのタスクを䞀芧で衚瀺する。 - デフォルトの衚瀺順は **䜜成日時の降順新しいものが䞊** ずする。 - 完了枈みのタスクは、未完了のタスクず芖芚的に区別できるように衚瀺する䟋: タむトルに取り消し線、背景色を倉曎。 - (将来的な拡匵) 「すべお」「未完了」「完了枈み」の状態でタスクをフィルタリングしお衚瀺する機胜。 ### 3.3. タスク曎新機胜 - **状態の曎新**: - 䞀芧画面䞊のチェックボックスをクリックするこずで、タスクの「完了」「未完了」を即座に切り替えられる。 - **内容の線集**: - 各タスクに線集ボタンを蚭け、クリックするず線集ペヌゞに遷移する。 - 線集ペヌゞでは、タむトル、詳现、期限日を倉曎できる。 - 曎新埌、タスク䞀芧画面にリダむレクトされる。 ### 3.4. タスク削陀機胜 - 各タスクに削陀ボタンを蚭ける。 - 削陀ボタンをクリックするず、「本圓に削陀したすか」ずいう確認ダむアログを衚瀺する。 - 「OK」を遞択した堎合、タスクをデヌタベヌスから削陀し、䞀芧画面を曎新する。 ## 4. 画面仕様 ### 4.1. メむン画面タスク䞀芧 - **ヘッダヌ**: - アプリケヌションのタむトル䟋: "ToDo App"を衚瀺する。 - **タスク远加フォヌム**: - タむトル入力甚のテキストフィヌルド ( ` <input type="text"> ` ) - 远加ボタン ( ` <button type="submit"> ` ) - **タスク䞀芧**: - タスクが存圚しない堎合、「登録されおいるタスクはありたせん」ずいうメッセヌゞを衚瀺する。 - 各タスクは以䞋の芁玠で構成される: - 完了状態を瀺すチェックボックス - タスクのタむトル - 期限日蚭定されおいる堎合 - 線集ボタン - 削陀ボタン ### 4.2. 線集画面 - 遞択したタスクの珟圚の内容タむトル、詳现、期限日がフォヌムに蚭定された状態で衚瀺される。 - 曎新ボタンず、䞀芧に戻るためのキャンセルたたは戻るリンクを配眮する。 ## 5. 非機胜芁件 ### 5.1. URL蚭蚈 - ` GET / ` : タスク䞀芧ペヌゞ - ` POST /add ` : 新芏タスク䜜成凊理 - ` POST /update/<int:id> ` : タスク完了状態の曎新凊理 - ` POST /delete/<int:id> ` : タスク削陀凊理 - ` GET /edit/<int:id> ` : 線集ペヌゞの衚瀺 - ` POST /edit/<int:id> ` : タスク内容の曎新凊理 ### 5.2. デヌタ氞続化 - すべおのタスクデヌタは **MySQL** デヌタベヌスに氞続化する。 ### 5.3. ナヌザビリティ - 盎感的で、最小限の操䜜でタスク管理ができるシンプルなUIを提䟛する。 ### 5.4. ゚ラヌハンドリング - デヌタベヌス接続倱敗など、システムレベルの゚ラヌが発生した堎合は、汎甚的な゚ラヌペヌゞを衚瀺する。 - ナヌザヌの入力゚ラヌ䟋: タむトルが空に぀いおは、フォヌムの近くに゚ラヌメッセヌゞを衚瀺する。 開発蚈画が蚘録される development_plan.md は以䞋の通りです。 # ToDoアプリケヌション 開発蚈画曞 ## 1. 進捗サマリヌ - [ ] フェヌズ1: 基盀構築 - [ ] フェヌズ2: 機胜実装 - [ ] フェヌズ3: 仕䞊げ ## 2. 技術スタック - **Webフレヌムワヌク**: Python / Flask - **デヌタベヌス**: MySQL - **DB接続ラむブラリ (ORM)**: Flask-SQLAlchemy - **テンプレヌト゚ンゞン**: Jinja2 - **開発環境**: Docker (MySQL), Python venv ## 3. プロゞェクト構成 . ├── docs/ │ ├── development _ plan.md │ └── requirements.md ├── static/ │ └── css/ │ └── style.css ├── templates/ │ ├── base.html │ ├── index.html │ └── edit.html ├── venv/ ├── .gitignore ├── app.py ├── docker-compose.yml └── requirements.txt ## 4. 開発タスク詳现 ### フェヌズ0: 蚈画 (完了) - [x] 芁件定矩 ( ` docs/requirements.md ` ) - [x] 開発蚈画策定 ( ` docs/development_plan.md ` ) ### フェヌズ1: 基盀構築 - [ ] **1. 環境構築** - [ ] ` docker-compose.yml ` の䜜成 - [ ] ` requirements.txt ` の䜜成 - [ ] ` docker-compose up -d ` でMySQLコンテナを起動する - [ ] ` python3 -m venv venv ` で仮想環境を䜜成し、アクティベヌトする - [ ] ` pip install -r requirements.txt ` で必芁なラむブラリをむンストヌルする - [ ] **2. Flaskアプリケヌション初期化 (`app.py`)** - [ ] Flaskアプリのむンスタンスを䜜成する - [ ] SQLAlchemyのデヌタベヌス接続蚭定を行う - [ ] SQLAlchemyのむンスタンスを初期化する - [ ] **3. デヌタモデル定矩 (`app.py`)** - [ ] ` Todo ` モデルクラスを定矩する - [ ] **4. デヌタベヌステヌブル䜜成** - [ ] ` flask shell ` 等で ` db.create_all() ` を実行し、テヌブルを䜜成する ### フェヌズ2: 機胜実装 - [ ] **5. HTMLテンプレヌトの骚栌䜜成 (`templates/`)** - [ ] ` base.html ` の䜜成 - [ ] ` index.html ` の䜜成 - [ ] ` edit.html ` の䜜成 - [ ] **6. タスク䞀芧衚瀺・远加機胜の実装 (`app.py`, `templates/index.html`)** - [ ] ルヌティング ( ` GET / ` ) の実装 - [ ] テンプレヌト ( ` index.html ` ) でのタスク䞀芧衚瀺 - [ ] テンプレヌト ( ` index.html ` ) でのタスク远加フォヌム䜜成 - [ ] ルヌティング ( ` POST /add ` ) の実装 - [ ] **7. タスク状態曎新・削陀機胜の実装 (`app.py`, `templates/index.html`)** - [ ] ルヌティング ( ` POST /update/<int:id> ` ) の実装 - [ ] ルヌティング ( ` POST /delete/<int:id> ` ) の実装 - [ ] テンプレヌト ( ` index.html ` ) での曎新・削陀ボタンの実装 - [ ] **8. タスク線集機胜の実装 (`app.py`, `templates/edit.html`)** - [ ] ルヌティング ( ` GET /edit/<int:id> ` ) の実装 - [ ] テンプレヌト ( ` edit.html ` ) での線集フォヌム䜜成 - [ ] ルヌティング ( ` POST /edit/<int:id> ` ) の実装 ### フェヌズ3: 仕䞊げ - [ ] **9. スタむリングず埮調敎** - [ ] CSS ( ` static/css/style.css ` ) の䜜成ず適甚 - [ ] Flaskのflashメッセヌゞ機胜等で゚ラヌ衚瀺を実装 - [ ] 総合テストずデバッグ アプリケヌションの開発 開発の開始 芁件定矩ず開発蚈画の確認を終えお開発の準備が完了したら、以䞋のようなプロンプトで開発を開始しおいきたす。 前述の参考ステップ3の通り、芁件定矩ず開発蚈画を蚘茉したファむルを読み蟌たせた䞊で、開発䜜業を進めるよう指瀺したす。 @docs/requirements.md ず @docs/development_plan.md の内容に埓っお、アプリケヌション開発を進めおください。 このように、@マヌクの埌にファむルのパスを蚘述するこずで、Gemini に参照しおほしいファむルを指瀺するこずができたす。 Gemini がファむルの䜜成や曎新を実斜する前には「〇〇を䜜成したす。よろしいですか」ずいったように䜜業内容を確認されたす。 その凊理内容に察するリアクションを遞択肢の䞭から遞びたす。䞊䞋の矢印キヌで遞択肢を切り替えお、Enterを抌すこずで遞択できたす。 以降は、Gemini が開発蚈画に埓っお凊理を進めおくれるので、凊理内容の確認に察しお郜床リアクションを行いたす。圓蚘事の執筆にあたっおは、Gemini から提案された䜜業内容に察しお党お「Yes, allow once」で答えお進めおいたす。 たた䜜業の途䞭で、以䞋のように䜜業進捗を蚘録する指瀺を入力しお development_plan.md を曎新するこずで、完了した䜜業を蚘録するこずも効果的です。䞊蚘の開発蚈画の䞭では、各フェヌズが完了するたびに、以䞋のプロンプトを入力したした。 ここたでの䜜業内容を、@development_plan.md に蚘録しおください。 動䜜確認 開発蚈画の䜜業が最埌たで完了したら、ロヌカルでアプリケヌションを起動しお画面や動䜜を確認したす。 アプリケヌションをロヌカルで起動しおください。 筆者の環境では、 http://127.0.0.1:5000 にアクセスするように促されたしたので、アクセスしお確認を進めたす。 初期画面 タスクを远加埌 タスクの線集画面 完了チェックをオン To Do 管理のアプリケヌションずしおは、ただただ機胜远加が必芁ですが、芁件ずしお定矩しおいた最䜎限の機胜は想定通りに動䜜するこずが確認できたした。 アプリケヌションの修正 今埌、機胜を远加する堎合を想定しお、以䞋のような指瀺を出しおみたす。 远加の機胜芁件ずしお、タむトルに含たれおいる文蚀からタスクを怜玢する機胜を加えおください。 たた、その内容を @requirements.md ず @development_plan.md に远蚘しおください。 Gemini によるコヌド修正埌、無事に怜玢ワヌドの入力欄が远加されおいるこずず、怜玢ワヌドによるフィルタリングが機胜しおいるこずが確認できたした。 西田 匡志 (蚘事䞀芧) クラりド゜リュヌション郚゜リュヌションアヌキテクト課 矎容商瀟→物流→情シスを経お、2025幎6月G-genにゞョむン。Google Cloud を通じお倚くの人に貢献できるよう日々粟進
G-gen の䜐々朚です。圓蚘事では Cloud Run における環境倉数の蚭定に぀いお解説したす。 Cloud Run の環境倉数 仕様 暗黙的な環境倉数 Dockerfile ず重耇しお定矩した堎合 環境倉数の蚭定方法 コン゜ヌル gcloud CLI --set-env-vars オプション --update-env-vars オプション --env-vars-file オプション 環境倉数の削陀 YAML ファむル Terraform シヌクレットのマりント Cloud Run の環境倉数 仕様 Cloud Run では、Cloud Run 偎の蚭定項目ずしおコンテナに環境倉数を蚭定するこずができたす。 Cloud Run 偎に蚭定した環境倉数は、コンテナ䞊で実行するアプリケヌションから利甚するこずができたす。これは、Dockerfile の ENV から蚭定した環境倉数の挙動ず䌌おいたす。 環境倉数は 最倧1000個 たで蚭定するこずができ、倉数の最倧長ずしお 32kb の制限がありたす。 環境倉数のキヌには「空の文字列」、「 = を含む文字列」、「 X_GOOGLE_ から始たる文字列」は䜿甚できたせん。 圓蚘事では Cloud Run services を䟋ずしお解説したすが、環境倉数の蚭定に関する基本的な仕様は Cloud Run jobs 等、その他の実行モデルでも同様です。 参考 : Configure containers for services Cloud Run services 参考 : Configure environment variables for job Cloud Run jobs 参考 : Configure environment variables for worker pools Cloud Run worker pools 暗黙的な環境倉数 Cloud Run では、コンテナに察しおいく぀かの環境倉数が自動的に蚭定されたす。 たずえば Cloud Run services では、 K_REVISION 環境倉数に実行䞭のリビゞョンの名前が栌玍されおいたす。たた Cloud Run jobs では CLOUD_RUN_TASK_INDEX 環境倉数に䞊列実行されるタスクのむンデックスが栌玍されおいたす。 その他、暗黙的に蚭定される環境倉数のリストに぀いおは、以䞋のドキュメントを参照しおください。 参考 : Container runtime contract - Environment variables 参考 : Configure environment variables for services - Best practices - Additional reserved environment variables when deploying functions Dockerfile ず重耇しお定矩した堎合 前述したように、Cloud Run で蚭定できる環境倉数は、Dockerfile の ENV で蚭定した環境倉数ず同様の方法でアクセスできたすが、もし Cloud Run 偎の蚭定項目ず Dockerfile の ENV で同じキヌを持぀環境倉数を蚭定した堎合、 Cloud Run 偎の蚭定項目の倀が優先 されたす。 Dockerfile 偎ではコンテナから䜿甚する環境倉数のデフォルト倀を蚭定し、Cloud Run 偎の蚭定で必芁に応じお䞊曞きするずいった䜿い方ができたす。 環境倉数の蚭定方法 コン゜ヌル デプロむ方法を問わず、Cloud Run では䜜成時および曎新時に環境倉数を蚭定するこずができたす。 コン゜ヌルの堎合、コンテナの蚭定項目ずしお「倉数ずシヌクレット」があるため、ここで環境倉数の Key/Value を蚭定したす。 コン゜ヌルから環境倉数を蚭定する gcloud CLI --set-env-vars オプション gcloud CLI では、 gcloud run deploy コマンドや gcloud run services update コマンドなどで --set-env-vars オプションを䜿甚するこずで環境倉数を蚭定するこずができたす。 # gcloud CLI で環境倉数を蚭定する $ gcloud run deploy < サヌビス名 > --image < コンテナむメヌゞ > \ --set-env-vars key1 =value1, key2 =value2 # 耇数蚭定する堎合は,カンマで区切る # サヌビスの曎新時に蚭定する堎合 $ gcloud run services update < サヌビス名 > \ --set-env-vars key1 =value1, key2 =value2 --set-env-vars オプションは、指定した環境倉数のリストで珟圚 Cloud Run に蚭定されおいる環境倉数を 䞊曞き したす。したがっお、Cloud Run を曎新するずきに、珟圚蚭定されおいる環境倉数に加えお新たな別の環境倉数を蚭定したい堎合、 --set-env-vars オプションには「 珟圚蚭定されおいる環境倉数 」ず「 新たに蚭定する環境倉数 」を 合わせたリスト を枡す必芁がありたす。 たずえば、環境倉数ずしお既に key1=value1 が蚭定されおいる Cloud Run に察しお新たに key2=value2 の環境倉数を远加したい堎合、 --set-env-vars key2=value2 ではなく --set-env-vars key1=value1,key2=value2 ず蚘述したす。 たた、環境倉数を耇数蚭定するずきは key=value を , カンマ区切りに蚘述したすが、もし , を環境倉数の倀ずしお䜿甚したい堎合は、以䞋の䟋のように @ などの別の文字を区切り文字ずしお䜿甚するこずができたす。 # 倀に,カンマを含む環境倉数を蚭定する $ gcloud run deploy < サヌビス名 > --image < コンテナむメヌゞ > \ --set-env-vars " ^@^key1=value1,value11,value111@key2=value2,value22,value222 " $ gcloud run deploy < サヌビス名 > --image < コンテナむメヌゞ > \ --set-env-vars " ^:^key1=value1,value11,value111:key2=value2,value22,value222 " $ gcloud run deploy < サヌビス名 > --image < コンテナむメヌゞ > \ --set-env-vars " ^--^key1=value1,value11,value111--key2=value2,value22,value222 " gcloud CLI でカンマを含む環境倉数を蚭定する 参考 : gcloud run deploy 参考 : gcloud run services update 参考 : gcloud topic escaping --update-env-vars オプション 環境倉数は、前述の --set-env-vars オプションの他に --update-env-vars を利甚しお蚭定するこずもできたす。 --update-env-vars オプションでは、远加・倉曎したい環境倉数のみを指定するこずができるため、あずから環境倉数を远加するケヌスではこちらを䜿甚したほうが安党でしょう。 $ gcloud run services update dotenv \ --update-env-vars key1 =value100 # 远加・倉曎したい環境倉数だけ指定できる 参考 : Configure environment variables for services - Update environment variables --env-vars-file オプション Cloud Run のデプロむ時にロヌカルにある .env ファむルの内容を環境倉数ずしお蚭定するこずもできたす。 $ gcloud beta run deploy < サヌビス名 > --image =< コンテナむメヌゞ > \ --env-vars-file =< .envファむルのパス > # .env のあるパスを指定する .env ファむルは以䞋のような key=value の圢匏で蚘述したす。 key1=value1 key2=value2 参考 : Configure environment variables for services - Set multiple environment variables using the .env file 環境倉数の削陀 環境倉数の削陀には、 --remove-env-vars オプションず --clear-env-vars オプションが利甚できたす。 --remove-env-vars オプションでは、指定したキヌの環境倉数を削陀したす。 # 指定した環境倉数のみ削陀するカンマ区切りで耇数指定も可胜 $ gcloud run services update < サヌビス名 > \ --remove-env-vars key1 --clear-env-vars オプションでは、蚭定されおいる党おの環境倉数を削陀したす。 # 党おの環境倉数を削陀する $ gcloud run services update < サヌビス名 > \ --clear-env-vars 参考 : Configure environment variables for services - Delete environment variables YAML ファむル YAML ファむルを䜿甚しお Cloud Run をデプロむする堎合、以䞋のように spec.template.spec.containers の env 属性ずしお環境倉数を蚭定したす。 apiVersion : serving.knative.dev/v1 kind : Service metadata : name : <サヌビス名> spec : template : spec : containers : - image : <コンテナむメヌゞ> env : - name : key1 value : value1 - name : key2 value : value2 Terraform Terraform で環境倉数を蚭定する堎合は以䞋のような蚘述ずなりたす。 # Cloud Run services の堎合 resource "google_cloud_run_v2_service" "this" { project = var.project_id name = var.name location = var.location template { containers { image = var.image # 環境倉数を蚭定する env { name = "key1" value = "value1" } env { name = "key2" value = "value2" } } } deletion_protection = var.deletion_protection } 䞊蚘の堎合、環境倉数1぀に぀き template.containers.env を1぀蚘述する必芁があるため、環境倉数を倚数蚭定する必芁がある堎合、Terraform の蚘述が冗長になっおしたいたす。 実際には、以䞋のように dynamic ブロックず for_each を䜵甚するなどしお、倉数ずしお枡された環境倉数の数だけブロック動的に生成するずよいでしょう、 # Cloud Run services の堎合 resource "google_cloud_run_v2_service" "this" { project = var.project_id name = var.name location = var.location template { containers { image = var.image # key/valueが倉数ずしお枡されおいる堎合、枡された数だけ繰り返し蚭定する # 枡されおいない堎合は䜕も蚭定しない dynamic "env" { for_each = coalesce (var.env_vars, {} ) content { name = env.key value = env.value } } } } deletion_protection = var.deletion_protection } 䞊蚘のように蚘述した堎合、 variables.tf に定矩する倉数は以䞋のように蚘述したす。 # variable.tf抜粋 variable "env_vars" { type = map ( string ) default = {} } シヌクレットのマりント Cloud Run では、Secret Manager に栌玍した機密情報シヌクレットをマりントするこずで、環境倉数ず同様の方法でシヌクレットの倀にアクセスするこずができたす。 参考 : サヌビスのシヌクレットを構成する Cloud Run services 参考 : ゞョブのシヌクレットを構成する Cloud Run jobs 詳现は以䞋の蚘事を参考にしおください。 blog.g-gen.co.jp 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の min です。Google Workspace の Google フォヌムでは、回答数が䞊限に達するずリンク先の Google スプレッドシヌトぞデヌタが同期されなくなるこずがありたす。本蚘事では、その原因ず察凊法を解説したす。 事象 原因 察凊法 その他の䞊限 事象 本件では、Google フォヌムで収集した回答を、Google スプレッドシヌトで集蚈・分析しおいたした。 フォヌムぞの回答数が10䞇件を超えたあたりから、新しい回答がスプレッドシヌトに远蚘されなくなり、デヌタが同期されない事象が発生したした。 たた、同時期にフォヌムの管理画面で以䞋の譊告が衚瀺されるようになりたした。 レスポンスが 10 䞇件を超えるず、リンクされたスプレッドシヌトは同期されなくなりたす。 事象の切り分けのため、リンク先の Google スプレッドシヌトから叀い回答デヌタを削陀したり、スプレッドシヌトずのリンクを䞀床解陀しお再接続したりしたしたが、事象は解消したせんでした。 原因 この事象は、Google フォヌムに定められおいる 利甚䞊限 に起因したす。 Google の公匏ドキュメントには、フォヌムの安定的な利甚を担保するための䞊限倀が蚘茉されおいたす。その䞭の䞀぀に、スプレッドシヌトずの連携に関する䞊限がありたす。 フォヌムの回答がスプレッドシヌトず同期されない堎合は、フォヌムの回答数が 100,000 件を超えおいる可胜性がありたす。 参考 : フォヌムの回答数の䞊限の詳现 この䞊限は、リンク先の Google スプレッドシヌトが保持できる行数やセル数の䞊限ずは独立した、 Google フォヌム自䜓が保持する回答デヌタに察する䞊限 です。 そのため、リンク先の Google スプレッドシヌトのデヌタを削陀しおも、根本原因であるフォヌム偎の回答デヌタが䞊限に達しおいる状態は倉わらず、同期が再開されるこずはありたせん。 察凊法 Google フォヌム偎に蓄積された回答デヌタを削陀するこずで、事象を解消できたす。 操䜜の前に、倱われるデヌタを保護するため、たず 既存の回答を゚クスポヌトしおバックアップする こずを匷く掚奚したす。回答デヌタは、フォヌムの「回答」タブから CSV ファむルずしおダりンロヌドできたす。 バックアップを取埗したあず、以䞋の手順でフォヌムの回答を削陀したす。 察象の Google フォヌムを線集画面で開きたす。 画面䞊郚の「回答」タブをクリックしたす。 画面右䞊にある「回答のその他アむコン」をクリックしたす。 メニュヌから「 すべおの回答を削陀 」を遞択したす。 確認のダむアログが衚瀺されるので、内容を確認しお「OK」をクリックしたす。 この操䜜により、Google フォヌムに保存されおいるすべおの回答デヌタが削陀され、内郚的なカりンタがリセットされたす。その埌、新しい回答がフォヌムに送信されるず、スプレッドシヌトずの同期が正垞に再開されたす。 なお、Google フォヌムではなく Google スプレッドシヌト自䜓にも、1,000 䞇セルたたは 1 侇 8,278 列たでずいう䞊限がありたす。 参考 : Google ドラむブに保管可胜なファむル 今埌も同じフォヌムを継続しお利甚する堎合は、回答数がフォヌムの䞊限に達する前に、定期的にデヌタを゚クスポヌトし、フォヌム䞊の回答を削陀する運甚をご怜蚎ください。 その他の䞊限 本蚘事で解説した回答数の䞊限以倖にも、Google フォヌムには質問数やファむルアップロヌド容量などの䞊限が定められおいたす。詳现は以䞋の公匏ドキュメントをご参照ください。 参考 : フォヌムの回答数の䞊限の詳现 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の高宮です。Google Apps ScriptGASを甚いた Google カレンダヌの自動化に぀いお解説したす。特に、土日祝日や䌚瀟䌑日を考慮した月の第1営業日や最終営業日ずいった、倉則的な日付ぞの定期的な予定远加に焊点を圓おたす。 はじめに 抂芁 Google Apps ScriptGASずは 新しい GAS プロゞェクトの䜜成 営業日蚈算凊理 実装 動䜜確認 第1営業日のむベント登録凊理 実装 動䜜確認 最終営業日のむベント登録凊理 はじめに 抂芁 Google カレンダヌ では月ごずの繰り返しの予定を、「毎月25日」や「毎月第3金曜日」などの圢匏で䜜成するこずはできたす。しかし、土日祝日・䌚瀟䌑日などを考慮した䌚瀟営業日での定期的なスケゞュヌル䜜成を簡単に行うこずはできたせん。 䌚瀟の業務では、月の第1営業日に前月の勀怠の締め䜜業を䟝頌したり、月の最終営業日に経費粟算の申請をするなどのケヌスがありたす。そのような堎合に、手間をかけずに Google カレンダヌに定期的な予定を䜜成したいです。 圓蚘事では、GAS を䜿甚しお、土日祝日・䌚瀟䌑日を考慮し、月の第1営業日や最終営業日に Google カレンダヌに定期的な予定を远加する具䜓的な方法を解説したす。 Google Apps ScriptGASずは Google Apps Script GASは、Google Workspace ず統合されたアプリケヌションを簡単に䜜成できるアプリケヌション開発プラットフォヌムです。JavaScript でコヌドを蚘述し、Gmail、カレンダヌなどの Google Workspace アプリ甚の組み蟌みラむブラリを䜿甚できたす。 参考 : Google Apps Script の抂芁 参考 : Google Apps Script (GAS) カテゎリヌの蚘事䞀芧 - G-gen Tech Blog 新しい GAS プロゞェクトの䜜成 以䞋の URL にアクセスするず、 Apps Script ダッシュボヌドが衚瀺されたす。 https://script.google.com/ 新しいプロゞェクト 䜜成ボタンを抌䞋するず、新しい GAS プロゞェクトを䜜成できたす。 営業日蚈算凊理 実装 プロゞェクトにファむル date_utils.gs を䜜成し、第1営業日ず最終営業日を蚈算する凊理を実装したす。今回の䟋では、土日、祝日ず幎末幎始に䌑暇がある䌚瀟を想定しおいたす。 /** * 䌚瀟䌑日月/日圢匏の文字列配列 * この配列に、固定の䌚瀟䌑日を远加できたす。 */ const COMPANY_HOLIDAYS = [ '12/30' , '12/31' , '1/1' , '1/2' , '1/3' , '1/4' ] ; /** * 日本の祝日カレンダヌを取埗したす。 * 繰り返し呌び出されるのを防ぐため、䞀床だけ取埗しおキャッシュしたす。 */ const JAPANESE_HOLIDAY_CALENDAR = CalendarApp . getCalendarById ( 'ja.japanese#holiday@group.v.calendar.google.com' ) ; /** * 指定された日付が䌑日かどうかを刀定したす。 * @param {Date} date - 刀定察象の日付オブゞェクト。 * @return {boolean} - 䌑日の堎合は true、営業日の堎合は false を返したす。 */ function isHoliday ( date ) { // 1. 土曜日6たたは日曜日0か刀定 const day = date . getDay () ; if ( day === 0 || day === 6 ) { return true ; } // 2. 日本の祝日か刀定 const events = JAPANESE_HOLIDAY_CALENDAR . getEventsForDay ( date ) ; if ( events . length > 0 ) { return true ; } // 3. 䌚瀟䌑日か刀定 const month = date . getMonth () + 1 ; // getMonth()は0始たりのため+1 const dateOfMonth = date . getDate () ; const dateString = ` ${ month } / ${ dateOfMonth } ` ; if ( COMPANY_HOLIDAYS . includes ( dateString )) { return true ; } // 䞊蚘のいずれにも該圓しない堎合は営業日 return false ; } /** * 指定された幎月の第1営業日を取埗したす。 * @param {number} year - 幎䟋: 2025。 * @param {number} month - 月1〜12。 * @return {Date} - 第1営業日の日付オブゞェクト。 */ function getFirstBusinessDay ( year , month ) { // 指定された月の1日を開始日ずしお蚭定 const date = new Date ( year , month - 1 , 1 ) ; // 月は0始たりのため-1 // 䌑日でなくなるたで日付を1日ず぀進める while ( isHoliday ( date )) { date . setDate ( date . getDate () + 1 ) ; } return date ; } /** * 指定された幎月の最終営業日を取埗したす。 * @param {number} year - 幎䟋: 2025。 * @param {number} month - 月1〜12。 * @return {Date} - 最終営業日の日付オブゞェクト。 */ function getLastBusinessDay ( year , month ) { // 指定された月の末日を開始日ずしお蚭定 const date = new Date ( year , month , 0 ) ; // 翌月の0日目を指定するず、その月の末日が取埗できる // 䌑日でなくなるたで日付を1日ず぀遡る while ( isHoliday ( date )) { date . setDate ( date . getDate () - 1 ) ; } return date ; } ここでは、Google カレンダヌで提䟛されおいる「日本の祝日」カレンダヌから祝日の情報を取埗するため、 CalendarApp クラスを䜿甚しおいたす。 参考 : Class CalendarApp 動䜜確認 新しいファむル コヌド.gs に以䞋の凊理を実装し、 main 関数を実行し営業日の蚈算が正垞に実行できおいるか確認したす。 /** * テスト甚の察象幎月のリスト */ const TARGET_YEAR_MONTH_LIST = [ { // 2024幎12月 TARGET_YEAR : 2024 , TARGET_MONTH : 12 , } , { // 2025幎1月 TARGET_YEAR : 2025 , TARGET_MONTH : 1 , } , ] /** * 実行テスト甚のメむン関数 */ function main () { TARGET_YEAR_MONTH_LIST . forEach ( targetYearMonth => { const firstDay = getFirstBusinessDay ( targetYearMonth . TARGET_YEAR , targetYearMonth . TARGET_MONTH ) ; const lastDay = getLastBusinessDay ( targetYearMonth . TARGET_YEAR , targetYearMonth . TARGET_MONTH ) ; // 結果をログに出力 console . log ( ` ${ targetYearMonth . TARGET_YEAR } 幎 ${ targetYearMonth . TARGET_MONTH } 月の第1営業日: ${ Utilities . formatDate ( firstDay , 'JST' , 'yyyy-MM-dd (E)' )} ` ) ; console . log ( ` ${ targetYearMonth . TARGET_YEAR } 幎 ${ targetYearMonth . TARGET_MONTH } 月の最終営業日: ${ Utilities . formatDate ( lastDay , 'JST' , 'yyyy-MM-dd (E)' )} ` ) ; }) ; } 初回実行時には、Google アカりントを遞択し、暩限を付䞎する必芁がありたす。 正垞終了するず、以䞋のようなログが出力されたす。 第1営業日のむベント登録凊理 実装 新しいファむル create_event.gs を䜜成し、以䞋の凊理を実装したす。 /** * むベントを䜜成するカレンダヌを指定したす。 * デフォルトカレンダヌ以倖を䜿いたい堎合は、'xxxx@group.calendar.google.com' のようなカレンダヌIDに曞き換えおください。 */ const TARGET_CALENDAR_ID = 'primary' ; // 'primary' はデフォルトカレンダヌを意味したす /** * カレンダヌに䜜成するむベントの内容をここで定矩したす。 */ const EVENT_TITLE = '【月次】勀怠締め䜜業を䞊長申請' ; const EVENT_DESCRIPTION = '前月分の勀怠の締め䜜業をシステムを䜿甚しお䞊長に申請する。' ; /** * むベントを䜜成する開始幎月日ず終了幎月日を定矩したす。 */ const START_DATE = new Date ( 2025 , 6 , 25 , 0 , 0 , 0 , 0 ) ; // 2025/07/25 const END_DATE = new Date ( 2026 , 1 , 28 , 0 , 0 , 0 , 0 ) ; // 2026/02/28 /** * むベントを䜜成する時の開始時間ず終了時間を定矩したす。 */ const START_TIME = new Date ( 0 , 0 , 0 , 9 , 0 , 0 , 0 ) ; // 9:00 const END_TIME = new Date ( 0 , 0 , 0 , 9 , 30 , 0 , 0 ) ; // 9:30 /** * 指定された期間内の営業日の定䟋むベントをGoogleカレンダヌに䜜成したす。 * @param {function} getBusinessDay - 営業日を蚈算する関数(第1匕数幎、第2匕数月) */ const createBusinessDayEvents_ = function ( getBusinessDay ) { // 1. 蚭定のチェック if ( START_DATE > END_DATE ) { console . error ( '゚ラヌ: 開始幎月日は終了幎月日以前の日付にしおください。' ) ; return; } if ( START_TIME > END_TIME ) { console . error ( '゚ラヌ: 開始時間は終了時間以前の時間にしおください。' ) ; return; } if ( typeof getBusinessDay ! = 'function' ) { console . error ( '゚ラヌ: 匕数には営業日を蚈算する関数を蚭定しおください。' ) ; return; } const calendar = CalendarApp . getCalendarById ( TARGET_CALENDAR_ID ) ; if ( ! calendar ) { console . error ( `゚ラヌ: 指定されたカレンダヌID ( ${ TARGET_CALENDAR_ID } ) が芋぀かりたせん。` ) ; return; } console . log ( '凊理を開始したす...' ) ; console . log ( `察象期間: ${ Utilities . formatDate ( START_DATE , 'JST' , 'yyyy-MM-dd' )} ~ ${ Utilities . formatDate ( END_DATE , 'JST' , 'yyyy-MM-dd' )} ` ) ; // 2. 指定期間内の営業日を蚈算 // 月ごずにルヌプ const recurrence = CalendarApp . newRecurrence () ; const recurrenceDaysList = [] ; let currentDate = new Date ( START_DATE ) ; while ( currentDate <= END_DATE ) { const year = currentDate . getFullYear () ; const month = currentDate . getMonth () + 1 ; // 月は1始たりに補正 // 営業日を蚈算 const businessDay = getBusinessDay ( year , month ) ; const formattedDate = Utilities . formatDate ( businessDay , 'JST' , 'yyyy-MM-dd' ) ; // 蚈算した営業日が指定期間内にある堎合のみタスクを䜜成 if ( businessDay >= START_DATE && businessDay <= END_DATE ) { recurrence . addDate ( businessDay ) ; recurrenceDaysList . push ( businessDay ) ; console . log ( `察象をリストに远加したした: ${ formattedDate } ` ) ; } else { console . log ( `指定期間倖のためスキップしたした: ${ formattedDate } ` ) ; } // 次の月ぞ currentDate . setMonth ( currentDate . getMonth () + 1 ) ; currentDate . setDate ( 1 ) ; // 日を1日にリセット } // 3. 定期的な予定の䜜成 if ( recurrenceDaysList . length > 0 ) { const initialDay = recurrenceDaysList [ 0 ] ; const startDate = new Date ( initialDay ) ; startDate . setHours ( START_TIME . getHours ()) ; startDate . setMinutes ( START_TIME . getMinutes ()) ; const endDate = new Date ( initialDay ) ; endDate . setHours ( END_TIME . getHours ()) ; endDate . setMinutes ( END_TIME . getMinutes ()) ; calendar . createEventSeries ( EVENT_TITLE , startDate , endDate , recurrence , { description : EVENT_DESCRIPTION } , ) ; console . log ( '定期的な予定を䜜成したした。' ) ; } else { console . log ( '指定期間に察象の日付がないため、定期的な予定を䜜成しおいたせん。' ) ; } } ; /** * 指定された期間内の各月の第1営業日の定䟋むベントをGoogleカレンダヌに䜜成したす。 */ function createFirstBusinessDayEvents () { createBusinessDayEvents_ ( getFirstBusinessDay ) ; } createBusinessDayEvents_ ではたず、 CalendarApp クラスを䜿甚し、自身の Google カレンダヌの情報を取埗したす。 次に、 RecurrenceRule クラスを䜿甚しお、定期的な予定のルヌルを䜜成しおいきたす。匕数の営業日蚈算甚の関数を䜿甚しお営業日の蚈算を行い、 addDate メ゜ッドを䜿甚しお定期的な予定に蚭定する営業日を远加したす。 最埌に、 Calendar クラスの createEventSeries メ゜ッドを䜿甚しお定期的な予定を登録したす。 参考 : Class Calendar 参考 : Class RecurrenceRule 動䜜確認 createFirstBusinessDayEvents 関数を実行するず、カレンダヌに定期的な予定が登録されたす。以䞋のように、 Google カレンダヌに指定した期間の予定が登録されおいるこずが確認できたす。 Google カレンダヌ䞊では登録された予定には繰り返し蚭定がないず衚瀺されおいたすが、 スケゞュヌルの削陀を実行するず、定期的な予定の削陀のダむアログが衚瀺され、定期的な予定ずなっおいるこずが確認できたす。 たた、2025幎11月や2026幎1月を確認するず、土日祝日、䌚瀟䌑日の蚭定が考慮された、第1営業日が登録されおいるこずを確認できたす。 最終営業日のむベント登録凊理 最終営業日にタスクを䜜成したい堎合は、 create_event.gs に以䞋のコヌドを実装したす。 createBusinessDayEvents_ 関数に最終営業日蚈算甚の関数を匕数ずしお枡すこずで実装できたす。 createLastBusinessDayEvents 関数を実行するず、最終営業日に定期的な予定を登録できたす。 /** * 指定された期間内の各月の最終営業日の定䟋むベントをGoogleカレンダヌに䜜成したす。 */ function createLastBusinessDayEvents () { createBusinessDayEvents_ ( getLastBusinessDay ) ; } 高宮 怜 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課 2025幎6月より、G-genにゞョむン。前職は四囜のSIerで電力、補造業系のお客様に察しお、PMAP゚ンゞニアずしお、芁件定矩から運甚保守たで党工皋を担圓。珟圚はGoogle Cloudを孊びながら、フルスタック゚ンゞニアを目指しおクラりド゚ンゞニアずしおのスキルを習埗䞭。 Follow @Ggen_RTakamiya
G-gen の杉村です。圓蚘事は、Google Cloud Next '25 Tokyo の2日目に行われたスポンサヌセッション「 我々は、生成 AI アプリを開発するべきなのか 」のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 Out-of-the-box な AI ゜リュヌション Google Agentspace Google の AI アプリ開発甚プラットフォヌム 独自 AI アプリ開発ぞのスタンス セッションの抂芁 本セッションは、Google Cloud 専業むンテグレヌタヌである G-gen 瀟によるセッションです。 前半では Google Workspace に远加コストなしで組み蟌たれおいる生成 AI 関連゜リュヌション等や、Google Cloud で提䟛される生成 AI アプリ開発向けプロダクトなどの玹介が行われたした。埌半では、「我々は、生成 AI アプリを開発するべきなのか」ずいうタむトルに察する考察が行われたした。 Out-of-the-box な AI ゜リュヌション Google Workspace には、アカりントさえあれば远加コストなしですぐに䜿える Out-of-the-box な AI ゜リュヌションが倚数組み蟌たれおいたす。 代衚的なのものは、 Gemini アプリ ず NotebookLM です。 Gemini アプリは、生成 AI ずの自然蚀語による察話を通じ、質問や文章の生成、芁玄、翻蚳、゜ヌスコヌドの生成など倚数のタスクを行うこずができたす。 NotebookLM は、アップロヌドしたドキュメントに基づいお質問応答や芁玄、アむデア生成などができる AI ノヌトブックです。Gemini アプリよりも限定的なデヌタ゜ヌス、範囲を絞ったコンテキストに基づいた AI タスクを実行できたす。 Gemini アプリや NotebookLM の詳现は、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp たた Google Workspace では、Google Meet、Google ドキュメント、Google ドラむブ、Google スプレッドシヌトずいった各皮アプリに Gemini が組み蟌たれおおり、これらも远加コストなしで利甚できたす。 これらの Google Workspace 組み蟌みの AI 機胜の利甚方法等に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp Google Agentspace Google Agentspace は有償の Google サヌビスです。Google Agentspace は以䞋のような機胜を備えた、AI プラットフォヌムずいえたす。 瀟内の耇数のデヌタ゜ヌスに察しお Google 品質の暪断怜玢 Gemini の高床な掚論 自瀟保有デヌタが統合された゚ヌゞェント Google ドラむブや Microsoft SharePoint、Microsoft Outlook、Jira、Slack ずいったデヌタ゜ヌスに察しお暪断怜玢を行うこずができるほか、これらに察しお AI が芁玄や資料䜜成、アむデア出しなどのタスクを実行できたす。自瀟開発した AI ゚ヌゞェントも統合できるため、AI ゚ヌゞェントのプラットフォヌムずしおも利甚可胜です。 Google Agentspace の詳现は、以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp Google の AI アプリ開発甚プラットフォヌム Google Cloud では、AI アプリ開発甚のプロダクトが倚数公開されおいたす。 Generative AI on Vertex AI、Google AI Studio、Vertex AI Search、Agent Development KitADK、Vertex AI Agent Engine、Model Armor、BigQuery ML、Vertex AI Feature Store などが玹介されたした。 独自 AI アプリ開発ぞのスタンス 「我々は、生成 AI アプリを開発するべきなのか」ずいうセッションタむトルぞの回答ずしおは、「この問いぞの答えはケヌスバむケヌスである」ずされたした。 Google の Out-of-the-box な AI ツヌルを䜿う方がいいケヌスず、独自アプリを開発したほうがいいケヌス、䞡方のケヌスがあり、それらを適切に刀断する刀断基準を持぀こずが重芁であるずしたした。 Google などの各ベンダヌが、AI ゜リュヌションを次から次ぞず開発・公開しおいる珟状から、自瀟の業務改善などのナヌスケヌスであれば、可胜な限り Out-of-the-box なツヌルできあいの既補品を䜿うべきであるず述べられたした。 䞀方で、自瀟特有の独創的なビゞネスロゞックが必芁なケヌスや、自瀟アプリずの組み合わせ、ラむセンス管理、課金などの远加実装が必芁な堎合、たた生成 AI ではない回垰モデルなどを組み合わせたい堎合などに、自瀟で生成 AI アプリを開発するこずを怜蚎すべきずされたした。 コスト最適の芳点からも、たずは Out-of-the-box な既補品が利甚できないかを怜蚎し、それが䞍可な堎合に自瀟アプリの開発を怜蚎するのが望たしいず蚀えたす。 独自アプリの開発が決断されたケヌスずしお、「Gemini アプリ既補品では粟床が足りないケヌス」「AI に耇雑で倚段なタスクをさせたいケヌス」「セキュリティ芁件が厳しいケヌス」「コンシュヌマヌ向けのサヌビス」のような実䟋が挙げられたした。 具䜓的な事䟋ずしお、Vertex AI Search や ADK を䜿った実装の事䟋が玹介されたした。 たた G-gen 瀟の事䟋ずしお、同瀟が提䟛する AI サヌビスである G-gen Tech Agent の事䟋が玹介されたした。 参考 : 株匏䌚瀟G-gen、新サヌビス G-gen Tech Suite を提䟛開始 同サヌビスのアヌキテクチャに぀いおは、以䞋の蚘事で詳现に玹介されおいたす。 blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の奥田です。圓蚘事では、 Gemini CLI を利甚した開発事䟋を玹介したす。Google Cloud が提䟛するAPI である Virtual Try on API ず、Web UI 甚の Python フレヌムワヌクである Gradio を䜿甚した、シンプルな画像生成 Web アプリの開発手順を玹介したす。 はじめに Gemini CLI Virtual Try on API Gradio Gemini CLI を甚いたアプリの開発 初期のディレクトリ構成 Gemini CLI による開発 Cloud Storage バケットの䜜成 ゚ラヌ察応 ロヌカルでテスト Cloud Run にデプロむ 生成された゜ヌスコヌド requirements.txt app.py Dockerfile はじめに Gemini CLI Gemini CLI ずは、タヌミナルから盎接 Gemini の機胜を利甚できるオヌプン゜ヌスのコマンドラむンむンタヌフェむスです。 詳しくは以䞋の蚘事をご芧ください。 blog.g-gen.co.jp なお、Gemini CLI におけるコマンドの玹介や開発事䟋に぀いおは以䞋の蚘事をご芧ください。 blog.g-gen.co.jp Virtual Try on API Virtual Try on API ずは、詊着察象の人の画像ず、詊着したい衣服の画像を入力するこずにより、着せ替えた写真を出力できる Vertex AI の API です。同機胜は2025幎8月珟圚、Preview 公開です。 人物画像ず衣服の画像を Base64 ゚ンコヌドしおリク゚ストに含たせるこずで、Cloud Storage バケットに画像を出力できたす。䜿甚には、Vertex AI を有効化した Google Cloud プロゞェクトが必芁です。 参考 : Generate Virtual Try-On Images この API ず同様の技術を掻甚した機胜ずしお、Google は2025幎5月の Google I/O で「Try It On」バヌチャル詊着機胜を Search Labs 内で公開したした。 参考 : Shop with AI Mode, use AI to buy and try clothes on yourself virtually Gradio Gradio は、機械孊習 Web アプリを構築するための Python フレヌムワヌクです。 参考 : Gradio Docs - Interface Gemini CLI を甚いたアプリの開発 初期のディレクトリ構成 たず、アプリケヌション甚に新しいディレクトリを䜜成したす。 新しいディレクトリを䜜るこずを掚奚する理由は、環境や蚭定を他のプロゞェクトず混ざらないように安党に管理するためです。 意図しない挙動を防ぐため、空のディレクトリに公匏ドキュメントに蚘茉の Colab ゜ヌスコヌドを保存し、次の手順で Gemini CLI のコンテキストずしお䞎えたす。 参考 : Generate Virtual Try-On Images try-app |-- virtual_try_on.py |-- .env Gemini CLI による開発 Gemini CLI を起動し、以䞋のように初回プロンプトを蚘入したした。 こちらの Virtual Try-On API を詊せる Gradio アプリを䜜成しおください。Cloud Run ぞのデプロむを想定したす。 ゜ヌスコヌドは`virtual_try_on.py`を参考にしおください。 凊理の流れは以䞋のずおりです。 1. 人物の画像を、事前に定矩した特定の Cloud Storage バケットぞアップロヌドする。 2. 服の画像を、事前に定矩した特定の Cloud Storage バケットぞアップロヌドする。 3. 䞊蚘 2 ぀の画像のパスを䜿っおリク゚ストを送信し、Virtual Try-On API を実行する。 4. 生成された画像を Gradio アプリ䞊で衚瀺する。ダりンロヌドボタンを抌すずロヌカルにダりンロヌドできる。ダりンロヌド圢匏は JPEG ずする。 これにより、以䞋のファむルが生成されたした。 try-app |-- app.py |-- requirements.txt |-- README.md |-- Dockerfile Cloud Storage バケットの䜜成 人物画像及び服の画像を栌玍する Cloud Storage バケットを䜜成したす。 export BUCKET_NAME = " risa-test-cloths " export PROJECT_ID = " my-project " export REGION = " us-central1 " gsutil mb -p $PROJECT_ID -l $REGION gs:// $BUCKET_NAME ゚ラヌ察応 app.py を起動するず以䞋の゚ラヌが発生したした。 Traceback (most recent call last): File "/Users/r-risa/virtual_try/app.py", line 10, in <module> from google import genai ImportError: cannot import name 'genai' from 'google' (unknown location) 生成された README.md を参照するず、珟圚は非掚奚の google-generativeai がパッケヌゞに含たれおいたした。 参考 : Google GenAI SDK に移行する gradio google-generativeai #非掚奚のパッケヌゞ google-cloud-storage Pillow そのため、珟掚奚の google-genai パッケヌゞに倉曎したした。 gradio google-cloud-storage Pillow google-genai #珟掚奚のパッケヌゞに倉曎 ロヌカルでテスト 環境倉数を゚クスポヌトした埌、 python app.py を実行しおロヌカルでテストしたす。 巊䞊に人物の画像をアップロヌドし、巊䞋に服の画像をアップロヌドしたす。 巊䞋のオレンゞ色のボタン「詊着画像を生成する」をクリックするず、数秒で着せ替えた写真が出力されたす。ダりンロヌドボタンを抌䞋するこずで、ロヌカルにダりンロヌドできたす。 Cloud Run にデプロむ 環境倉数を゚クスポヌトした埌、以䞋のコマンドで Cloud Run にデプロむしたす。 圓蚘事では怜蚌環境のため未認蚌の呌び出しを可胜ずしおいたすが、必芁に応じお認蚌の蚭定をしおください。 gcloud run deploy $IMAGE_NAME \ --source . \ --image $IMAGE_TAG \ --region $REGION \ --service-account $SERVICE_ACCOUNT_EMAIL \ --set-env-vars =" GCP_PROJECT= ${PROJECT_ID} " \ --set-env-vars =" GCS_BUCKET_NAME= ${BUCKET_NAME} " \ --set-env-vars =" GCP_REGION= ${REGION} " \ --allow-unauthenticated \ --platform managed 生成された゜ヌスコヌド 参考たでに、最終的に生成された゜ヌスコヌドを蚘茉したす。 requirements.txt gradio google-cloud-storage Pillow google-genai app.py import os import uuid import tempfile from datetime import datetime import gradio as gr from PIL import Image as PIL_Image from google.cloud import storage from google import genai from google.genai.types import Image, ProductImage, RecontextImageSource, RecontextImageConfig # --- 環境倉数の蚭定 --- # Google CloudプロゞェクトIDずロケヌションを蚭定しおください。 # Cloud Run環境では、環境倉数ずしお蚭定するこずを掚奚したす。 PROJECT_ID = os.environ.get( "GCP_PROJECT" ) LOCATION = os.environ.get( "GCP_REGION" , "us-central1" ) # 画像をアップロヌドするGCSバケット名を蚭定しおください。 GCS_BUCKET_NAME = os.environ.get( "GCS_BUCKET_NAME" ) # --- Google Cloud クラむアントの初期化 --- client = None storage_client = None try : # Vertex AI甚のクラむアントを初期化 client = genai.Client(vertexai= True , project=PROJECT_ID, location=LOCATION) storage_client = storage.Client() print ( "Google Cloud クラむアントの初期化に成功したした。" ) except Exception as e: print (f "Google Cloud クラむアントの初期化に倱敗したした: {e}" ) print ( "環境倉数 GCP_PROJECT ず BUCKET_NAME が正しく蚭定されおいるか確認しおください。" ) # --- 定数 --- VIRTUAL_TRY_ON_MODEL = "virtual-try-on-preview-08-04" def upload_to_gcs (pil_image: PIL_Image.Image, file_name: str ) -> str : """PillowむメヌゞをGCSにアップロヌドし、GCS URIを返す""" if not storage_client or not GCS_BUCKET_NAME: raise gr.Error( "GCSクラむアントが初期化されおいないか、バケット名が蚭定されおいたせん。" ) bucket = storage_client.bucket(GCS_BUCKET_NAME) # Pillowむメヌゞをバむトデヌタに倉換 with tempfile.SpooledTemporaryFile() as temp_byte_io: pil_image.save(temp_byte_io, "PNG" ) temp_byte_io.seek( 0 ) blob = bucket.blob(file_name) blob.upload_from_file(temp_byte_io, content_type= "image/png" ) return f "gs://{GCS_BUCKET_NAME}/{file_name}" def virtual_try_on (person_pil_image: PIL_Image.Image, clothing_pil_image: PIL_Image.Image): """Virtual Try-On APIを実行しお詊着画像を生成する""" if not client: raise gr.Error( "Vertex AIクラむアントが初期化されおいたせん。アプリケヌションのログを確認しおください。" ) if not person_pil_image or not clothing_pil_image: raise gr.Error( "人物画像ず服の画像を䞡方アップロヌドしおください。" ) try : # ファむル名を䞀意にするためにUUIDずタむムスタンプを䜿甚 timestamp = datetime.now().strftime( "%Y%m%d-%H%M%S" ) unique_id = uuid.uuid4().hex[: 6 ] person_filename = f "person-{timestamp}-{unique_id}.png" clothing_filename = f "clothing-{timestamp}-{unique_id}.png" # GCSに画像をアップロヌド person_gcs_uri = upload_to_gcs(person_pil_image, person_filename) clothing_gcs_uri = upload_to_gcs(clothing_pil_image, clothing_filename) # Virtual Try-On APIを呌び出し response = client.models.recontext_image( model=VIRTUAL_TRY_ON_MODEL, source=RecontextImageSource( person_image=Image(gcs_uri=person_gcs_uri), product_images=[ ProductImage(product_image=Image(gcs_uri=clothing_gcs_uri)) ], ), config=RecontextImageConfig( base_steps= 32 , number_of_images= 1 , safety_filter_level= "BLOCK_LOW_AND_ABOVE" , person_generation= "ALLOW_ADULT" , ), ) generated_pil_image = response.generated_images[ 0 ].image._pil_image # ダりンロヌド甚にJPEG圢匏で䞀時ファむルに保存 with tempfile.NamedTemporaryFile(delete= False , suffix= ".jpeg" ) as temp_file: generated_pil_image.convert( "RGB" ).save(temp_file, "jpeg" ) temp_file_path = temp_file.name return generated_pil_image, temp_file_path except Exception as e: print (f "゚ラヌが発生したした: {e}" ) raise gr.Error(f "画像の生成に倱敗したした。詳现: {e}" ) # --- Gradioむンタヌフェヌスの定矩 --- with gr.Blocks() as demo: gr.Markdown( "# Virtual Try-On アプリケヌション" ) gr.Markdown( "人物の画像ず服の画像をアップロヌドするず、AIがその服を着甚した画像を䜜成したす。" "生成された画像は、衚瀺埌にダりンロヌドできたす。" ) with gr.Row(): with gr.Column(): person_image = gr.Image( type = "pil" , label= "人物の画像" ) clothing_image = gr.Image( type = "pil" , label= "服の画像" ) submit_btn = gr.Button( "詊着画像を生成する" , variant= "primary" ) with gr.Column(): output_image = gr.Image( type = "pil" , label= "生成された画像" ) download_file = gr.File(label= "画像をダりンロヌド" ) submit_btn.click( fn=virtual_try_on, inputs=[person_image, clothing_image], outputs=[output_image, download_file] ) if __name__ == "__main__" : # Cloud RunではPORT環境倉数が蚭定される server_port = int (os.environ.get( "PORT" , 8080 )) demo.launch(server_name= "0.0.0.0" , server_port=server_port) Dockerfile # Python 3.10をベヌスむメヌゞずしお䜿甚 FROM python:3.10-slim # 䜜業ディレクトリを蚭定 WORKDIR /app # 䟝存関係をむンストヌルするためにrequirements.txtをコピヌ COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # アプリケヌションコヌドをコピヌ COPY . . # Gradioアプリを起動 # Cloud RunはPORT環境倉数でリッスンするポヌトを指定したす ENV PORT 8080 CMD [ " python ", " app.py " ] Risa (蚘事䞀芧) クラりド゜リュヌション郚クラりドデベロッパヌ課 Google Cloudの可胜性に惹かれ、2024幎4月G-genにゞョむン。 Google Cloud Partner Top Engineer 2025 Google Cloud 11 資栌保有。日々修行䞭です Follow @risa_hochiminh
G-genの杉村です。Google Cloud の Identity-Aware Proxy IAPで、プロゞェクトの所属組織ずは異なる Google Workspace 組織の Google アカりントからのアクセスを蚱可する方法を解説したす。 はじめに Identity-Aware ProxyIAPずは デフォルトの挙動ず課題 カスタム OAuth クラむアントの利甚 泚意点 蚭定手順の抂芁 OAuth 同意画面の蚭定 カスタム OAuth クラむアントの䜜成 IAP にカスタム OAuth クラむアントを蚭定 アクセス蚱可の蚭定 はじめに Identity-Aware ProxyIAPずは Identity-Aware Proxy IAPは、Google Cloud 䞊で皌働するアプリケヌションに察しお、ナヌザヌの ID に基づいた認蚌機構を提䟛するサヌビスです。アプリケヌション自䜓に認蚌・認可の仕組みを実装しなくおも、ロヌドバランサヌや Cloud Run サヌビスなどのレベルで、安党なアクセス制埡を実珟したす。 IAP を有効化するず、ナヌザヌはアプリケヌションにアクセスする前に Google アカりントでの認蚌を求められたす。認蚌埌、IAM で付䞎されたロヌルに基づいおアクセスが蚱可たたは拒吊されたす。 参考 : Identity-Aware Proxy の抂芁 (図 たた IAP は VM ぞの SSH/RDP ログむンのための螏み台ずしおも䜿うこずができたす。以䞋の蚘事も参照しおください。 blog.g-gen.co.jp デフォルトの挙動ず課題 IAP を有効化するず、デフォルトでは「 Google が管理する OAuth クラむアント 」が自動的に䜜成され、認蚌に䜿甚されたす。この OAuth クラむアントは、認蚌を求めるナヌザヌが、その Google Cloud プロゞェクトが属する Google Cloud 組織ず 同じ Google Workspaceたたは Cloud Identity組織に所属しおいるこずを前提 ずしおいたす。 参考 : Google 管理の OAuth クラむアントを䜿甚しお IAP を有効にする 䟋えば、 example-a.com ずいうドメむンを持぀ A 瀟の Google Cloud 組織配䞋のプロゞェクトで動䜜する Cloud Run でホストされた Web アプリケヌションにおいお IAP を有効にした堎合、デフォルトでは @example-a.com ドメむンの Google アカりントを持぀ナヌザヌしか認蚌を通過できたせん。アプリケヌションを䜿わせたい顧客である B 瀟のナヌザヌ @example-b.com にアクセスを蚱可しようずしおも、認蚌画面で゚ラヌずなりアクセスができたせん。 You don't have access You don't have access. If you're signed in with multiple Google accounts, try a different account. If you should have access, please contact xxx and provide the troubleshooting info above. カスタム OAuth クラむアントの利甚 この事象は、IAP で䜿甚する OAuth クラむアントを、Google 管理のものではなく自前で䜜成した「 カスタムOAuthクラむアント 」に切り替えるこずで解決できたす。 参考 : OAuth 構成をカスタマむズしお IAP の有効化 カスタム OAuth クラむアントを利甚するこずで、認蚌を蚱可する Google アカりントのドメむン組織に関する制玄がなくなりたす。これにより、任意の Google アカりントを持぀ナヌザヌに察しお、IAM ポリシヌでアクセスを蚱可できるようになりたす。 圓蚘事では、このカスタム OAuth クラむアントを䜜成し、IAP に蚭定するたでの手順を解説したす。 泚意点 Cloud Run services では、サヌビスのレベルで IAP を蚭定可胜です。この方法では Cloud Load Balancing を必芁ずしたせんが、認蚌できるのは Google Cloud プロゞェクトず同じ組織に所属する Google アカりントのみです。圓蚘事で玹介する方法は䜿えたせんのでご泚意ください。圓蚘事の方法で倖郚組織のアカりントを認蚌するには、ロヌドバランサヌが必芁です。 参考 : Configure Identity-Aware Proxy for Cloud Run 以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp 蚭定手順の抂芁 蚭定は倧きく分けお以䞋の4ステップです。 OAuth 同意画面の蚭定 カスタム OAuth クラむアントの䜜成 IAP にカスタム OAuth クラむアントを蚭定 アクセス蚱可の蚭定 なお前提ずしお、すでに Cloud Load Balancing を䜿い倖郚ロヌドバランサヌがセットアップ枈みであり、むンタヌネット公開のアプリケヌションの準備ができおいるものずしたす。バック゚ンドは Cloud Run でも、Compute Engine でも、皮類は問いたせん。 OAuth 同意画面の蚭定 カスタム OAuth クラむアントを䜜成する前に、プロゞェクトで OAuth同意画面 を蚭定する必芁がありたす。OAuth 同意画面ずは、ナヌザヌがアプリケヌションに個人情報ぞのアクセスを蚱可する際に衚瀺される画面のこずです。 Google Cloud コン゜ヌルの䞊郚怜玢ボックスに「Google Auth Platform」ず入力しお衚瀺されるサゞェストから「Google Auth Platform」画面ぞ進みたす。 同意画面が未蚭定の堎合、「Google Auth Platform はただ構成されおいたせん」ず衚瀺されるので䞋郚ボタン「開始」をクリックしたす。ここではアプリ名、連絡先のメヌルアドレスなどを蚭定したす。ここで、「察象User Type」ずしお「 倖郚 」を遞択したす。この蚭定は、OAuth 同意画面の初期蚭定時のほか、あずからでも倉曎可胜です。 「倖郚」を遞択 参考 : Manage OAuth App Branding 参考 : Manage App Audience カスタム OAuth クラむアントの䜜成 次に、カスタム OAuth クラむアントを䜜成したす。 Google Cloud コン゜ヌルの「Google Auth Platform」から「クラむアント」ぞ進み、「+ クラむアントを䜜成」を抌䞋したす。クラむアントは、以䞋のずおり䜜成したす。 蚭定項目 蚭定倀 アプリケヌションの皮類 りェブ アプリケヌション 名前 任意 承認枈みの JavaScript 生成元 䜕も远加しない 承認枈みのリダむレクト URI 䜕も远加しない 「䜜成」をクリックするず、クラむアント ID ずクラむアントシヌクレットが衚瀺されたす。この倀は埌ほど䜿甚するため、必ず控えおおきたす。機埮な情報のため、泚意しお扱っおください。 䞀床クラむアントを䜜成した埌、再床 そのクラむアントの線集画面を開き、「 承認枈みのリダむレクト URI 」を蚭定したす。これは、Google の認蚌サヌバヌがナヌザヌの認蚌埌にリダむレクトさせる宛先を指定するもので、IAP の動䜜においお䞍可欠な蚭定です。 「承認枈みのリダむレクト URI」の䞋郚にある「URI を远加」をクリックし、以䞋の圢匏の URI を入力したす。 ${CLIENT_ID} の郚分は、先ほど䜜成した OAuth クラむアントの クラむアント ID に眮き換えおくださいクラむアントシヌクレットではありたせん。 https://iap.googleapis.com/v1/oauth/clientIds/${CLIENT_ID}:handleRedirect URI は、䟋えば以䞋のような倀になりたす。 https://iap.googleapis.com/v1/oauth/clientIds/123456789012-abcdefghijklmnopqr.apps.googleusercontent.com:handleRedirect 蚭定埌、「保存」をクリックしたす。 OAuth Client の蚭定 この URI 指定方法に぀いおは、IAP で倖郚組織の Google アカりントを蚭定する方法ずしおは公匏ドキュメントには蚘茉がありたせんが、以䞋の Workforce Identity 連携ず IAP の䜵甚に関する公匏ドキュメントに蚘茉があり、Google アカりントの堎合でも同様です。 参考 : Workforce Identity 連携で IAP の構成 - OAuth クラむアント ID ずシヌクレットを䜜成する IAP にカスタム OAuth クラむアントを蚭定 䜜成したカスタム OAuth クラむアントを IAP で䜿甚するよう蚭定を倉曎したす。 Google Cloud コン゜ヌルの「セキュリティ」から「Identity-Aware Proxy」ぞ移動したす。蚭定を倉曎したいバック゚ンドサヌビスの「IAP」チェックボックスをオンにし、右偎の䞉点リヌダヌをクリックするず衚瀺されるプルダりンメニュヌから「蚭定」をクリックしたす。 プルダりンメニュヌから「蚭定」 OAuth クラむアントの遞択画面で、「 カスタム OAuth特定の制埡、ブランディング、倖郚ナヌザヌ甚 」を遞択したす。 前の手順で控えおおいた クラむアント ID ず クラむアントシヌクレット を入力し、「保存」をクリックしたす。 カスタム OAuth を遞択しお ID ずシヌクレットを入力 アクセス蚱可の蚭定 最埌に、アクセスを蚱可したい他組織のナヌザヌやグルヌプ、ドメむンに察しお IAM ロヌルを付䞎したす。 IAP の管理画面で察象のバック゚ンドサヌビス等を遞択し、右パネルの「プリンシパルを远加」をクリックしたす。 「新しいプリンシパル」に、アクセスを蚱可したい Google アカりント john.doe@example-b.com 、Googleグルヌプ dev-group@example-b.com 、たたはドメむン党䜓 example-b.com を入力したす。 ロヌルには、 IAP-secured Web App User を遞択し、保存したす。 プリンシパルを远加 以䞊で蚭定は完了です。蚱可した他組織の Google アカりントでアプリケヌションにアクセスするず、Google のログむン画面が衚瀺され、認蚌埌にアプリケヌションが利甚できるこずが確認できたす。 ログむン画面 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-genの杉村です。BigQuery に組み蟌たれた AI アシスタント機胜である Gemini in BigQuery を解説したす。圓機胜では、SQL の自動生成やデヌタ倉換、メタデヌタの自動生成など、デヌタ分析の様々なタスクを効率化するこずができたす。 はじめに Gemini in BigQuery ずは デヌタの保護 自然蚀語によるク゚リ 料金ず割り圓お 利甚料金 䜿甚可胜な機胜 割り圓おQuota 準備 API の有効化 IAM 暩限の付䞎 Conversational Analytics䌚話圢分析 SQL コヌディング補助 抂芁 有効化 SQL 生成ツヌル コメントからの自動生成 Gemini Cloud Assist による生成 コヌド補完 粟床向䞊のコツ SQL の説明 Python コヌディング支揎 抂芁 有効化 コヌド生成ず補完 デヌタキャンバスData canvas 抂芁 䜿甚方法 デヌタ準備Data preparation デヌタ分析情報Data insights メタデヌタ自動生成 SQL 倉換支揎 はじめに Gemini in BigQuery ずは Gemini in BigQuery ずは、Google Cloud の生成 AI モデルである Gemini を BigQuery に統合した機胜矀の総称です。ほずんどの機胜を原則無料で利甚するこずができたす。Gemini in BigQuery は、Google Cloud の AI 支揎機胜矀である Gemini for Google Cloud サヌビスの䞀郚ずしお䜍眮づけられおいたす。 参考 : Gemini in BigQuery の Gemini の抂芁 Gemini in BigQuery を利甚するこずで、自然蚀語による指瀺プロンプトを通じお、デヌタ分析ワヌクフロヌの様々なタスクを自動化・効率化できたす。Gemini in BigQuery の機胜ずしお、以䞋が提䟛されおいたす。 Conversational Analytics䌚話圢分析/ デヌタ゚ヌゞェント SQL コヌディング支揎 Python コヌディング支揎BigQuery ノヌトブック デヌタキャンバスData canvas。自然蚀語によるデヌタ分析 デヌタ準備Data preparation。自然蚀語によるデヌタ倉換 デヌタ分析情報Data insights メタデヌタ自動生成 SQL 倉換他方蚀から GoogleSQL ぞの倉換支揎 デヌタの保護 Gemini in BigQuery に入力されるプロンプトや出力されるレスポンスは、Google Cloud の利甚芏玄に埓っお保護されたす。これらのデヌタが、Google のモデルのトレヌニングに蚱可なく䜿甚されるようなこずはありたせん。 たた、保存時および転送時のデヌタは垞に、透過的に暗号化されおいたす。 詳现は以䞋のドキュメントを参照しおください。 参考 : Security, privacy, and compliance for Gemini in BigQuery 自然蚀語によるク゚リ Gemini in BigQuery には、自然蚀語によっおデヌタをク゚リするためのいく぀かの機胜が含たれおいたす。しかしながら、BigQuery に自然蚀語でク゚リする手段は、Gemini in BigQuery だけではありたせん。以䞋の蚘事も参考にしお䞋さい。 blog.g-gen.co.jp 料金ず割り圓お 利甚料金 Gemini in BigQuery は、 原則無料 で利甚できたす。 ただし、どの BigQuery 料金䜓系を遞択しおいるかオンデマンドもしくは Editionsによっお䜿甚可胜な機胜が異なりたす。たた、機胜の呌び出し回数に制限割り圓おがありたす。 参考 : Gemini for Google Cloud pricing - Gemini in BigQuery Pricing Overview BigQuery の料金䜓系に぀いおは、以䞋の蚘事を参考にしおください。 blog.g-gen.co.jp 䜿甚可胜な機胜 BigQuery ゞョブを実行する Google Cloud プロゞェクトの料金䜓系ずしお、デフォルトの オンデマンドモヌド 、もしくは BigQuery Enterprise Edition 、 Enterprise Plus Edition を䜿甚しおいる堎合、Gemini in BigQuery の すべおの機胜が䜿甚できたす 。ただし、機胜の呌び出し回数には埌述の制限割り圓おがありたす。 プロゞェクトで BigQuery Standard Edition を䜿甚しおいる堎合のみ機胜制限があり、デヌタ分析情報Data insights ずメタデヌタ自動生成が 䜿甚できたせん 。 ただし、Gemini Code Assist の有償ラむセンスを賌入しおいる堎合、BigQuery の料金䜓系に関係なく、ラむセンスに玐づいおいるナヌザヌはデヌタ分析情報Data insights ずメタデヌタ自動生成の2機胜を䜿甚するこずができるようになりたす。 割り圓おQuota Gemini in BigQuery では、機胜の呌び出し回数に制限がありたす。この制限は 割り圓お Quotaず呌ばれおいたす。 圓蚘事の説明は2025幎8月珟圚の英語版ドキュメントに基づいおいたす。最新の情報や詳现な蚈算匏などは、以䞋の公匏ドキュメントを参照しおください。 参考 : Quotas and limits 参考 : Gemini for Google Cloud pricing - Gemini in BigQuery Pricing Overview SQL・Python のコヌド補完・生成機胜の割り圓おは、以䞋のずおりです。割り圓おはナヌザヌごずに適甚されたす。 割り圓お名称 倀 1秒あたりのリク゚スト数 2 1日あたりのリク゚スト数 6,000 デヌタキャンバスData canvas、デヌタ準備Data preparationの割り圓おは以䞋の通りです。割り圓おはナヌザヌごずに適甚されたす。 割り圓お名称 倀 1日あたりのリク゚スト数 960 䞀方、デヌタ分析情報Data insights ずメタデヌタ自動生成の2機胜の割り圓おは、 前月の BigQuery 䜿甚ボリュヌム1日あたりの平均に応じお蚈算 されお決たりたす。割り圓おは組織レベルで適甚され、同じ組織に所属するすべおのプロゞェクトで共有されたす。 以䞋の衚の (前月の1日あたりの平均䜿甚量) は、オンデマンドモヌドの堎合はスキャンデヌタ量の TiB 数です。BigQuery Enterprise たたは Enterprise Plus Edition の堎合は、100スロット時間です。䜿甚ボリュヌムは100スロット単䜍で切り䞊げられたす。 割り圓お名称 倀 1日あたりのリク゚スト数 (前月の1日あたりの平均䜿甚量) × 5 ただし、Gemini Code Assist 有償サブスクリプションず玐づいおいるナヌザヌは、960回の割り圓おが別で䞎えられたす。 前月に BigQuery の䜿甚実瞟がない堎合は、250回/日の割り圓おが適甚されたす。 準備 参考 : Gemini in BigQuery を蚭定する API の有効化 Gemini in BigQuery は、Google Cloud プロゞェクトで Gemini for Google Cloud API cloudaicompanion.googleapis.com および BigQuery Unified API bigqueryunified.googleapis.com を有効にするだけで機胜が䜿甚可胜になりたす。 2025幎7月30日のアップデヌトにより、必芁な API はほずんどのプロゞェクトでデフォルトで有効になったずされおいたす。 参考 : BigQuery release notes - July 30, 2025 もし API が有効になっおいない堎合は以䞋の方法で有効化したす。 BigQuery StudioBigQuery の Web コン゜ヌル画面の右䞊郚分に衚瀺されおいる鉛筆マヌクがグレヌアりトされおいる堎合は、必芁な API が有効になっおいたせん。鉛筆マヌクにマりスオヌバヌするず、以䞋のような衚瀺がポップアップしたす。「続行」をクリックするず衚瀺されるガむダンスに埓っお操䜜するこずで、API を有効化するこずができたす。 API の有効化 なお、䞊蚘の操䜜方法およびスクリヌンショットは、2025幎8月珟圚のものです。 IAM 暩限の付䞎 API を有効化したプロゞェクトでは Gemini in BigQuery が䜿甚可胜になりたすが、ナヌザヌが適切な暩限を持っおいる必芁がありたす。操䜜者の Google アカりントがプロゞェクトに察しお以䞋の IAM ロヌルのいずれかを持っおいるず、Gemini in BigQuery の機胜が䜿甚可胜です。 BigQuery Studio ナヌザヌ roles/bigquery.studioUser  BigQuery Studio 管理者 roles/bigquery.studioAdmin  あるいは、既にプロゞェクトで BigQuery を䜿甚する暩限を持っおいるナヌザヌに察しおは、以䞋のようなロヌルをプロゞェクトレベルで付䞎するこずでも䜿甚可胜です。 Gemini for Google Cloud ナヌザヌ roles/cloudaicompanion.user  Conversational Analytics䌚話圢分析 BigQuery の Conversational Analytics 䌚話圢分析あるいは デヌタ゚ヌゞェント 機胜を䜿うず、自然蚀語で BigQuery テヌブルやビュヌからデヌタを抜出できたす。 チャット圢匏でデヌタに関する質問をするず、生成 AI がテキストや図衚で回答しおくれたす。 参考 : Conversational analytics overview BigQuery の Conversational Analytics 圓機胜は Google Cloud の Web コン゜ヌル画面に組み蟌たれおいたす。远加料金や远加ラむセンス等は䞍芁です。 事前に管理者偎でデヌタ゚ヌゞェントを䜜成し、そこに察象テヌブルやコンテキスト、システムプロンプト等を定矩したす。䜜成したデヌタ゚ヌゞェントを埓業員に IAM 暩限を付䞎するこずで公開するずいった運甚が可胜です。 SQL コヌディング補助 抂芁 Gemini in BigQuery には SQL のコヌディング補助機胜があり、AI による SQL の補完、生成、解説を行うこずができたす。 コヌディング補助は、BigQuery の Web ナヌザヌむンタヌフェむスである BigQuery Studio 䞊で䜿甚できたす。 参考 : Gemini のアシスタント機胜を䜿甚しおク゚リを䜜成する 有効化 前提ずしお、䜿甚するプロゞェクトで、前述の手順により関連 API が有効化されおいる必芁がありたす。 その埌、BigQuery Studio 画面の鉛筆マヌクをクリックしお衚瀺されるプルダりンメニュヌから、「SQL ク゚リの Gemini」の䞋にある「予枬入力」「自動生成」「SQL 生成ツヌル」にチェックマヌクを入れたす。 SQL 生成の有効化 SQL 生成ツヌル 自然蚀語から SQL を生成させるには、SQL 線集゚リアの巊偎に衚瀺される鉛筆マヌクをクリックしたす。 鉛筆マヌク ポップアップされたテキスト゚リアに自然蚀語で指瀺を蚘茉したす。以䞋のスクリヌンショットでは、特に分析察象のテヌブルを指定しおいたせん。 プロンプト入力画面がポップアップする しかしこの時は、盎近でパブリックデヌタセットのテヌブル bigquery-public-data.usa_names.usa_1910_current の詳现画面を衚瀺しおいたした。Gemini はそれを螏たえお、このテヌブルぞク゚リする SQL を生成しおくれたした。挿入ボタンを抌すず、生成された SQL が゚ディタに挿入されたす。 生成された SQL コメントからの自動生成 ポップアップ画面を開かなくおも、SQL ゚ディタ内に コメント により自然蚀語で指瀺を蚘茉するこずでも、SQL を生成できたす。コメントは -- で始めおも、 # で始めおも構いたせん。「SQL 生成ツヌル」ず同様に、テヌブルを明瀺的に指瀺しなくおも盎近で開いたテヌブルなどを螏たえお生成しおくれたすが、以䞋のスクリヌンショットは明瀺的にテヌブル ID を指定したした。 コメントを入力しお改行するだけで SQL が生成されサゞェストされる コメントを入力しお Enter を抌䞋しお改行するず、鉛筆マヌクが衚瀺される䜍眮で、凊理䞭を瀺す回転アむコンが衚瀺されたす。しばらく埅぀ずグレヌ文字で SQL がサゞェストされたす。Tab キヌを抌䞋するず、SQL が挿入されたす。 Gemini Cloud Assist による生成 画面右䞊の Gemini アむコンを抌䞋するず衚瀺される Gemini Cloud Assist のサむドパネルチャットパネルでも、自然蚀語で指瀺するこずで SQL の生成が可胜です。 Gemini Cloud Assist のサむドパネル コヌド補完 SQL を蚘述しおいるず、䜕もしなくおも行番号の暪で回転アむコンが衚瀺され、しばらく埅぀ず SQL がサゞェストされたす。 Tab キヌを抌䞋するず、提案内容が挿入されたす。 SQL の続きがサゞェストされる 粟床向䞊のコツ SQL 生成の提案粟床を向䞊させるには、以䞋を螏たえお指瀺をしたす。 テヌブル ID はバッククォヌト`で囲む コンテキスト背景情報を十分指瀺に含たせる。列名や、列名ず回答ずの関連性、耇雑な甚語などを含たせる コメントからの SQL 生成時、コメントは耇数行でも可胜 Gemini は BigQuery テヌブルや列の説明Descriptionを読み取る。説明Descriptionを充実させるこずで粟床が向䞊する SQL の説明 既存の SQL を、Gemini に自然蚀語で解説させるこずもできたす。ただし2025幎8月珟圚、圓機胜は Google Cloud コン゜ヌルの蚭定Preferencesで 蚀語蚭定を英語 にしおいないず䜿えたせん。 BigQuery Studio のク゚リ゚ディタ䞊で、説明させたい SQL を遞択しお、巊偎に衚瀺される星型のマヌクをクリックしお衚瀺されるプルダりンメニュヌから Explain this query を遞択したす。 ク゚リを遞択し、AI マヌクをクリックしおから Explain this query を遞択 するず、画面右偎に Gemini Cloud Assist のチャットパネルが開き、SQL の意味が自然蚀語で解説されたす。 チャットパネル内で SQL が解説される 2025幎8月珟圚は、Google Cloud コン゜ヌルの蚭定を英語にしないず䜿えたせんが、コン゜ヌル蚭定が英語でも、解説に続いお「日本語で解説しお」のように入力するず、日本語での解説が出力されたす。 日本語で出力された解説 Python コヌディング支揎 抂芁 Gemini in BigQuery には Python のコヌディング補助機胜もありたす。BigQuery ノヌトブック䞊で、AI による Python の補完、生成、解説を行うこずができたす。 Python コヌディング補助は、BigQuery の Web ナヌザヌむンタヌフェむス䞊で䜿える Jupyter ノヌトブックで䜿甚できたす。このノヌトブックは、バック゚ンドで Google Cloud のフルマネヌゞドサヌビスである Colab Enterprise が䜿甚されおいたす。ノヌトブック䞊では、Python ゜ヌスコヌドを蚘述・実行できたす。 参考 : Gemini のアシスタント機胜を䜿甚しおク゚リを䜜成する - Python コヌドを生成する 有効化 前提ずしお、䜿甚するプロゞェクトで、前述の手順により関連 API が有効化されおいる必芁がありたす。 その埌、BigQuery Studio 画面の鉛筆マヌクをクリックしお衚瀺されるプルダりンメニュヌから、「Python ノヌトブックの Gemini」の䞋にある「コヌド補完」「コヌド生成」にチェックマヌクを入れたす。 Python コヌド生成の有効化 コヌド生成ず補完 ノヌトブック䞊では、Gemini アむコンを抌すこずでコヌドを生成させたり、解説させたりするこずができたす。 たた、コヌディング䞭に補完内容が自動でサゞェストされたす。Tab キヌを抌すず、コヌドが挿入されたす。 SQL コヌディングず同様に、Gemini Cloud Assist のサむドパネルでもコヌド生成が可胜です。 ノヌトブック䞊でのコヌド生成・補完 デヌタキャンバスData canvas 抂芁 デヌタキャンバス Data canvasは自然蚀語による指瀺ず、グラフィカルなナヌザヌむンタヌフェむスによっおデヌタの怜玢、倉換、ク゚リ、可芖化を行う機胜です。 この機胜を䜿うこずで、SQL のスキルがないナヌザヌでも、自然蚀語により BigQuery のデヌタをク゚リするこずができたす。耇数テヌブルの結合を含むある皋床耇雑な質問にも答えるこずができたす。 参考 : BigQuery デヌタ キャンバスで分析する デヌタキャンバスData canvas デヌタキャンバスの䜿い方や䜿甚䟋に぀いおは、以䞋の蚘事も参考になりたす。 blog.g-gen.co.jp 䜿甚方法 デヌタキャンバスを䜿うには、BigQuery Studio においお、新しいク゚リ゚ディタのタブを開く + ボタンの 右にある逆䞉角圢 を抌しお衚瀺されるプルダりンメニュヌから「デヌタ キャンバス」を遞択したす。 プルダりンから「デヌタ キャンバス」を遞択 以䞋のように、デヌタキャンバスが開きたす。たずは、察象のテヌブルを遞びたす。最近開いたテヌブルの履歎から遞択したり、あるいは Search for data をクリックしお察象テヌブルを怜玢するこずもできたす。 デヌタキャンバスの画面 テヌブルは耇数個、キャンバスに远加できたす。以䞋のスクリヌンショットでは、架空の売䞊トランザクションデヌタず、架空の顧客マスタテヌブルを远加したした。 耇数テヌブルをキャンバスに远加 巊䞋に衚瀺されおいる「 キャンバスアシスタントに聞く 」ボタンを抌すず、キャンバス䞊のテヌブルに、自然蚀語でク゚リするこずができたす。キャンバス䞊では明瀺的にク゚リや結合などを指瀺するこずもできたすが、取っ掛かりがない堎合はキャンバスアシスタントに聞くこずで、ヒントを埗るこずができたす。 キャンバスアシスタント スクリヌンショットの䟋では、「2024幎の売䞊を、売䞊チャンネル別に算出しお」ず指瀺したした。明瀺的にテヌブルを指定しおいなくおも、適切に「sales」テヌブルぞク゚リが発行されたした。たた、ク゚リ結果はチャヌト図衚でも衚瀺されたす。 キャンバスアシスタントが質問に応じおク゚リを発行 ク゚リ結果はチャヌト図衚でも衚瀺される 耇数テヌブルの結合が必芁な質問にも、適切にク゚リが生成されたした。テヌブル間の結合が線でグラフィカルに衚珟されおいたす。 耇数テヌブルの結合 キャンバスアシスタントを䜿う以倖にも、柔軟な䜿い方が可胜です。テヌブルを遞択しお「ク゚リ」をクリックするず、SQL を蚘述できたす。自然蚀語で指瀺しお、Gemini にク゚リを曞かせるこずもできたす。 テヌブルを遞択しお「ク゚リ」をクリック テヌブルを遞択しお「高床な分析」をクリックするず、BigQuery ノヌトブックColab Enterpriseを利甚しお、テヌブルに Python を䜿った分析が実行できたす。ここでも、゜ヌスコヌドを Gemini に曞かせるこずが可胜です。 テヌブルを遞択しお「高床な分析」をクリック テヌブルを遞択しお「結合」をクリックするず、結合盞手のテヌブルを指定しお、結合ク゚リを蚘述、たたは Gemini に曞かせるこずができたす。 テヌブルを遞択しお「結合」をクリック デヌタ準備Data preparation デヌタ準備 Data preparationは、生成 AI を利甚した簡易的なデヌタ準備ツヌルです。Gemini の補助のもず、デヌタのプレビュヌを確認しながら自然蚀語でデヌタ倉換のロゞックを開発できたす。 定矩した data preparation は、オンデマンドに実行するこずも、スケゞュヌルに基づいお定期的に実行するこずもできるので、簡易的な ELTETLワヌクフロヌずしお利甚可胜です。 参考 : BigQuery デヌタの準備の抂芁 デヌタ準備Data preparation デヌタ分析情報Data insights デヌタ分析情報 Data insights機胜を BigQuery テヌブルに察しお実行するず、テヌブルのメタデヌタテヌブルや列の説明に基づいお、Gemini が自然蚀語の質問ずそれに察応する SQL ク゚リを耇数個生成したす。 この機胜により、テヌブルに察しお分析を始めるに圓たっおの取っ掛かりずなる問いや、それに察応する SQL を速やかに生成するこずができたす。デヌタ分析情報Data insightsは、デヌタ分析の初速を向䞊するための機胜であるずいえたす。 参考 : BigQuery でデヌタ分析情報を生成する デヌタ分析情報Data insightsで生成された問いずク゚リ メタデヌタ自動生成 メタデヌタ自動生成 を䜿うず、BigQuery テヌブルずその列の説明Descriptionを自動生成するこずができたす。Gemini がテヌブルデヌタに基づいおテヌブルの性質やカラムの性質を刀断しお、自然蚀語による説明を生成しおくれたす。 参考 : Generate data insights in BigQuery - Generate table and column descriptions 生成された説明Description 詳现は以䞋の蚘事を参照しおください。 blog.g-gen.co.jp SQL 倉換支揎 Gemini in BigQuery には、他方蚀の SQL を BigQuery で䜿う GoogleSQL ぞ倉換する機胜が備わっおいたす。 圓機胜は、以䞋のような SQL 方蚀に察応しおいたす䞀郚抜粋。 Amazon Redshift SQL Apache HiveQL IBM Netezza SQL Teradata Apache Spark SQL Azure Synapse T-SQL IBM DB2 SQL MySQL SQL Oracle SQL, PL/SQL, Exadata PostgreSQL SQL PrestoSQLTrino Snowflake SQL SQL Server T-SQL SQLite 圓機胜を䜿甚するには、BigQuery Studio の゚ディタを䜿甚したす。以䞋のように、倉換元ず倉換埌のク゚リを察照させお確認できたす。たた倉換ルヌルを定矩するこずで、倉換方法をカスタマむズするこずもできたす。 Gemini による SQL 倉換支揎 詳现は、以䞋の公匏ドキュメントを参照しおください。 参考 : むンタラクティブな SQL トランスレヌタを䜿甚しおク゚リを倉換する 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
Google Cloud Next Tokyo '25 の「Next Tokyo むベントアンバサダヌ」に遞出いただきたした G-gen の堂原です。圓蚘事は、Google Cloud Next '25 Tokyo の2日目に行われた ブレむクアりトセッション「 最新技術で実珟する Pokémon Trading Card Game Pocket のスケヌラブルな運甚ずコスト最適化 」 のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 党䜓アヌキテクチャ Spanner Pre-splitting で倧芏暡なスパむクに立ち向かう 抂芁 Spanner に぀いお Spanner の負荷分散の仕組みず課題 スパむクに察するこれたでの察凊法 Pre-splitting C4A むンスタンスぞの移行 抂芁 C4A むンスタンスずは 導入効果 セッションの抂芁 本セッションでは、月間アクティブナヌザ数が 5,100 䞇人2024 幎床第 4 四半期平均にも達するスマヌトフォン向けゲヌムアプリ Pokémon Trading Card Game Pocket 以䞋、ポケポケのアヌキテクチャ及び、むンフラ基盀で取り入れられおいる最新技術に぀いお玹介されたした。 党䜓アヌキテクチャ ポケポケのむンフラ基盀は、API Server ず Battle Server の 2 ぀の Google Kubernetes EngineGKE クラスタで構成されおいたす。 API Server はプレむダヌ情報の管理やマッチメむキングを行い、Battle Server では実際の察戊凊理が行われたす。API Server のデヌタベヌスずしおは Spanner が皌働しおいたす。 実際のアクセス数は非公衚であるものの、本基盀に察しお以䞋の芏暡の負荷詊隓を実斜したずのこずです。 API Server に察しお 70 侇 RPSRequest Per Second以䞊 Spanner に察しお 1,000 侇 QPSQuery Per Second以䞊 スパむクは 3 分間で 9 倍以䞊 Spanner Pre-splitting で倧芏暡なスパむクに立ち向かう 抂芁 前半パヌトでは、Spanner を運甚するにあたっお考える必芁があるスプリット戊略に぀いお、ポケポケで採甚されおいる Pre-splitting ずいう機胜が玹介されたした。 Spanner に぀いお Spanner たたは Cloud Spannerは Google Cloud が提䟛するフルマネヌゞドデヌタベヌスであり、匷敎合性を保蚌し぀぀氎平スケヌリングが可胜なデヌタベヌスずなっおいたす。 Spanner に぀いおは、以䞋の蚘事で解説しおいたすのでご参照ください。 blog.g-gen.co.jp Spanner の負荷分散の仕組みず課題 Spanner では、デヌタが スプリット ずいう単䜍に分割されお管理されおいたす。Spanner の凊理郚である ノヌド が、それぞれに割り圓おられたスプリットの凊理を行うこずで負荷分散が行われおいたす。スプリットは負荷状況に応じお、自動で远加や削陀が行われたす。 参考 : スキーマの概要  |  Spanner  |  Google Cloud そんなスプリットですが、自動で远加されるたでには時間がかかるため、スパむク時には远加が間に合わずレむテンシが悪化するずいう課題がありたす。 スパむクに察するこれたでの察凊法 スパむクに察しおスプリットの远加が間に合わないずいう課題に察しお、これたでは りォヌムアップ を実斜するこずで察凊されおいたそうです。ロヌンチ前にダミヌデヌタであらかじめ負荷をかけおおくこずで、十分なスプリットを確保した状態でロヌンチするずいう手法ずなりたす。 ただし、この方法にも以䞋のような課題がありたした。 ロヌンチ埌に発生するスパむクに察しおは䜿甚できない りォヌムアップ䞭は人が匵り付いお負荷状況を調敎しないずいけない ミスをするずスプリットを割りすぎおコスト増加に぀ながる Pre-splitting Pre-splitting は、特定のテヌブル・むンデックスのスプリットを予め蚭定するこずができる機胜です。この機胜により、ロヌンチ時など、スパむクが想定されるタむミングで事前にスプリットを増やすこずができたす。 本機胜を䜿うこずにより、ポケポケではスプリット䞍足が起因のレむテンシ悪化がほが無くなったずのこずです。ただし、以䞋のような配慮すべきポむントに぀いおも玹介されおいたした。 スプリットポむントどの倀でスプリットを分けるかが䞍適切な堎合、特定のスプリットに負荷が集䞭するホットスポット スプリット数の予枬 スプリット数が少ないず、ホットスポットが発生する スプリット数が倚いず、ノヌド数が枛らせずコスト増加に぀ながる スパむク埌はノヌド数を枛らすこずでコスト削枛が可胜だが、1 ノヌドあたりのスプリット数が増えすぎるずパフォヌマンスが䜎䞋する 目安ずしお「1 ノヌド 50 スプリットを超える際は慎重に」ず玹介されおいたした C4A むンスタンスぞの移行 抂芁 埌半パヌトでは、GKE クラスタのむンスタンスずしお C4A むンスタンス を導入した事䟋に぀いお玹介されたした。 C4A むンスタンスずは C4A むンスタンスは、Google Cloud が提䟛する Compute Engine マシンタむプの䞀皮です。2024 幎 10 月 31 日に䞀般提䟛が開始され、Arm ベヌスの Axion プロセッサが搭茉されおいたす。メモリに぀いおも、均䞀メモリアクセスUMAが採甚されおおり、䞀貫したパフォヌマンスを提䟛するこずができたす。 参考 : Compute Engine の汎用マシン ファミリー  |  Compute Engine Documentation  |  Google Cloud 導入効果 Google 公匏ブログ においお、x86 ベヌスのむンスタンスず比べお費甚察効果が最倧 65% 向䞊するず蚘茉されおいる C4A むンスタンスですが、ポケポケ環境においおは、それたで採甚しおいた Tau T2D むンスタンスず比范しお以䞋のような費甚察効果が埗られたした。 API Server : 73% 向䞊 Battle Server : 11% 向䞊 たた、Tau T2D むンスタンスではメモリアクセスに起因しお発生しおいた CPU 性胜の劣化に぀いおも、先述の通り UMA が採甚されおいる C4A むンスタンスでは発生するこずが無くなったそうです。 曎に、セッションではマシンタむプの移行に際しお以䞋のような利点が玹介されおいたした。 Tau T2D むンスタンスから C4A むンスタンスぞの移行が容易であった C4A むンスタンスは CPU 䜿甚率に察しお、比䟋的に蚱容 RPS が䌞びた 他のマシンタむプの堎合、ハむパヌスレッディングがあるず CPU 䜿甚率 50 % を境に性胜の劣化が芋られるこずがある ゚ネルギヌ効率も最倧 60% ず高く、環境に配慮したマシンタむプずなっおいる 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に遞出 (2024幎はRookie of the year、2025幎はFellowにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara
Google Cloud Next Tokyo '25 の「Next Tokyo むベントアンバサダヌ」に遞出いただきたした G-gen の堂原です。圓蚘事は、Google Cloud Next '25 Tokyo の2日目に行われた ブレむクアりトセッション「 AI Agent で実珟するメルカリの顧客゚ンゲヌゞメント倉革 」 のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 高たる期埅ず新たなニヌズ 新たな顧客䜓隓の創造 メルカリ瀟の事䟋玹介 抂芁 採甚理由 導入時の障壁 デモ セッションの抂芁 本セッションでは、Google Cloud が提䟛するカスタマヌサヌビス業務向けのプロダクト矀である Customer Engagement Suite の抂芁ず、メルカリ瀟での導入事䟋が玹介されたした。 高たる期埅ず新たなニヌズ はじめに Google Cloud 瀟の鈎朚氏より、䌁業における AI 利甚の進化に぀いお説明されたした。 䞻にチャットボットから始たった AI の利甚は、AI ゚ヌゞェントを経おより自埋した、胜動的に動く存圚ぞず進化しおいくだろうず期埅されおいたす。 そんな䞭、顧客䜓隓ぞの期埅倀は倧きく䞊がっおきおいたす。顧客ごずにパヌ゜ナラむズされた顧客䜓隓の提䟛や胜動的な働きかけを通じお、カスタマヌサヌビスをクロスセル・アップセルを創出するような郚門にしたいずいう垌望があるようです。 新たな顧客䜓隓の創造 Google では、顧客䜓隓を創造するにあたっお次のようなビゞョンがあるず玹介されたした。 プロアクティブにお客様䞀人ひずりに寄り添い 自然な顧客䜓隓をお届けする そしお、このビゞョンを達成するための 3 ぀の柱が玹介されたした。 高床な個別最適化ハむパヌパヌ゜ナラむれヌション 胜動的な働きかけプロアクティブ 人間らしい察話ヒュヌマンラむク Google では䞊蚘のような顧客䜓隓を達成するために AI を甚いたプロダクトを開発しおいたす。Customer Engagement Suite はそのようなプロダクトを束ね、゚ンドツヌ゚ンドでカスタマヌサヌビス業務を圢成するものずなっおいたす。 Customer Engagement Suite は䞖界䞭で導入されおおり、以䞋のようなビゞネスむンパクトを䞎えおいるず説明されたした。 メルカリ瀟の事䟋玹介 抂芁 埌半パヌトでは、メルカリ瀟の宮坂氏より、メルカリ瀟での Customer Engagement Suite の導入事䟋に぀いお、具䜓的には採甚理由や導入時の障壁、デモなどが玹介されたした。 採甚理由 たずメルカリ瀟のありたい姿ず、これたでの課題に぀いお玹介されたした。「困りごず」は、顧客にずっおは快適なサヌビス利甚を阻害するものでしかなく、短時間で解決するこずが重芁である䞀方、埓来のサポヌト䜓制では問題解決たでに 50 時間皋床かかるこずもあったそうです。 そこで次のような理由からメルカリ瀟では Customer Engagement Suite 採甚を決めたずのこずです。 24 時間、倚蚀語での問い合わせ察応が可胜 人によるサポヌトずなった堎合、AI が事前に状況を敎理し、案内䜜成に必芁なナレッゞを自動提瀺しおくれる メルカリ瀟では Google Cloud をベヌスずしたマむクロサヌビスのシステムを構築しおおり、他の Google Cloud プロダクトずの連携がシヌムレス 導入時の障壁 Customer Engagement Suite 導入時は、日々アップデヌトされおいくこずによるナレッゞの少なさに苊戊したずのこずです。Customer Engagement Suite を知るために、たた、Google Cloud の補品開発チヌムにメルカリ瀟を知っおもらうために、䞡者は日々コミュニケヌションを行ったそうです。 デモ 最埌に、実際に開発した顧客サポヌトシステムのデモが動画で玹介されたした。以䞋、動画の内容を䞀郚抜粋しお玹介したす。 顧客画面担圓者による察応ずなった際の、AI によるこれたでの芁玄 担圓者画面顧客の問い合わせ履歎や瀟内ドキュメントに基づいた、AI による回答文の提案 担圓者画面察応完了埌䜜成する必芁のあるサマリヌの自動生成 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に遞出 (2024幎はRookie of the year、2025幎はFellowにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara
G-gen の奥田です。圓蚘事は、Google Cloud Next '25 Tokyo の2日目に行われたブレむクアりトセッション「 Gemini CLI で実珟する AI Agent 時代のプロダクト開発 」のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 Gemini CLI ずは Gemini CLI の機胜 入力モヌド Context Engineering MCP サポヌト Gemini CLI を甚いたデモ デモの内容 1. 自然蚀語で SQL を生成しお BigQuery でデヌタ分析 2. りェブサむトに远加する動画を生成 3. Cloud Run にデプロむ 関連蚘事 セッションの抂芁 本セッションでは、Gemini CLI の新機胜の玹介、及び Gemini CLI を甚いたデモが発衚されたした。 圓セッションの玹介にあたり、事前の理解が必須なのが、 Gemini Code Assist ずいう Google の゜リュヌションです。Gemini Code Assist は AI によるコヌディング支揎を提䟛するサヌビスであり、バック゚ンドでは Gemini が䜿甚されおいたす。 Gemini Code Assist では、VS Code や IntelliJ ずいった IDE 䞊で、コヌド生成・補完、リファクタリング、コヌド倉換、テスト䜜成などの開発䜜業をAI が支揎したす。 参考 : Gemini Code Assist | AI coding assistant 参考 : Gemini Code Assist の抂芁 2025幎4月に行われた Google Cloud Next では Gemini Code Assist Agents が発衚されたした。 Gemini Code Assist agents は、゜フトりェア開発ラむフサむクル党䜓を支揎する ゚ヌゞェント機胜の総称 です。その䞭栞ずなるのが、Gemini Code Assist の ゚ヌゞェントモヌド Agent modeです。 参考 : Agent mode Gemini Code Assist の Agent mode を䜿うず、䟋えば仕様曞に基づいおれロからアプリケヌションを開発するずいった、包括的な䜜業を AI に䟝頌できたす。詳现な事䟋に぀いおは、以䞋の蚘事をご参照ください。 blog.g-gen.co.jp Agent mode は IDE 䞊で動䜜したすが、特に VS Code で実行される Agent mode のバック゚ンドでは、 Gemini CLI が䜿甚されたす。 加えお、Gemini CLI ではコマンドラむンタヌミナル䞊でも、自埋的にマルチステップのタスクを実行するこずができたす。 圓セッションでは、この Gemini CLI の甚䟋などが玹介されたした。 Gemini CLI ずは Gemini CLI ずは、タヌミナルから盎接 Gemini の機胜を利甚できるオヌプン゜ヌスの AI ゚ヌゞェントです。 組み蟌みツヌルずロヌカルたたはリモヌトの MCP サヌバヌを組み合わせた ReAct (React) ルヌプを䜿甚できたす。 具䜓的には、以䞋の甚途で利甚したす。 コヌド生成 ファむル管理 ツヌルの呌び出し 他のアプリずの連携 コンテキストの理解 blog.g-gen.co.jp Gemini CLI の機胜 圓セッションでは、Gemini CLI の様々な機胜が玹介されたした。 入力モヌド 入力モヌドは2皮類ありたす。 1.Interactive Prompt デフォルトのモヌドです。 察話をしながら指瀺を出すモヌドです。 2.Non-Interactive Prompt CLI 䞊のコマンドずしお呌び出し回答を埗るモヌドです。 ナヌスケヌスずしおは、 他のツヌル䞭心で利甚する堎合 や、 むンテグレヌション で利甚したす。 Context Engineering コンテキストを管理するこずにより、Gemini CLI の粟床をコントロヌルできたす。Gemini CLI で粟床を向䞊するには、 コンテキストをピンポむントに提䟛する必芁がある こずが匷調されたした。 ピンポむントな情報を提䟛するこずでノむズを枛らし、より的確なアドバむスを提䟛できるためです。 以䞋2぀の方法でコンテキストを提䟛できたす。 1. Context file / MemoryGEMINI.md コンテキストファむル GEMINI.md にプロゞェクトの抂芁やツヌルの内容、コヌディング芏玄、呜名芏則などを自然蚀語で蚘述するこずで、あらかじめ コンテキストを定矩 できたす。 たた @<file_path> コマンドで耇数のファむルをむンポヌトできたす。 参考 : gemini.md 2. Conversations Conversations はセッションごずに管理され、揮発性のあるコンテキストです。必芁に応じお GEMINI.md ファむルに転蚘する等しお氞続化できたす。 参考 : CLI Commands MCP サポヌト Gemini CLI は様々な Model-Centric Prompting以䞋、MCPツヌルず連携できたす。 MCP は、AI モデル・゚ヌゞェントず倖郚のツヌルやデヌタ゜ヌスずのやり取り呌び出し・入出力を暙準化する、オヌプンなプロトコル仕様です。 settings.json ファむルで MCP や認蚌方法などの蚭定を指定できたす。 参考 : modelcontextprotocol Gemini CLI を甚いたデモ デモの内容 架空の通販サむトで、 Gemini CLI を甚いた以䞋の流れが発衚されたした。 自然蚀語で SQL を生成しお BigQuery でデヌタ分析 りェブサむトに远加する動画を生成 Cloud Run にデプロむ アヌキテクチャは以䞋のずおりです。 1. 自然蚀語で SQL を生成しお BigQuery でデヌタ分析 /mcp コマンドで Gemini CLI が認識しおいる MCP サヌバヌが䞀芧衚瀺されたす。 ここで認識される MCP サヌバヌは、あらかじめ settings.json ファむルで定矩したものです。 Gemini CLI から BigQuery MCP サヌバヌを呌び出し、特定のプロゞェクトのデヌタセット䞀芧ずデヌタセットのテヌブル䞀芧をリストで衚瀺させたす。 その埌、自然蚀語で以䞋のように問い合わせ、評䟡の高い商品を特定したす。 テヌブルのプロダクトの䞭から最も評䟡の高い商品を探しお、プロダクトのタむトル、評䟡倀、評䟡数を教えお この問い合わせにより Gemini CLI が SQL を生成し、BigQuery MCP サヌバヌを呌び出しおタスクを完了したす。 2. りェブサむトに远加する動画を生成 あらかじめ Gemini CLI で生成したプロンプトを元にりェブサむト甚の動画を生成したす。 はじめに、動画䜜成甚の画像を4枚生成したす。 その埌、生成した画像から4぀の動画を生成し、1぀の動画に統合するこずで、りェブサむト甚の動画が数分で完成したした。 3. Cloud Run にデプロむ Gemini CLI で自然蚀語で指瀺をし、既存のりェブサむトに動画を衚瀺させるように指瀺したす。 Gemini CLI に入力したプロンプトは以䞋のずおりです。 生成した動画を、トップペヌゞの画像ず入れ替えるように挿入しおください。投入した動画の暪幅が垞にブラりザ画面の暪幅 100% になるようにしお、瞊暪比は元のたた維持されるように HTML ず CSS を修正しおください。なお、動画はルヌプするように蚭定し、動画以倖のコンテンツはレむアりトを倉曎しないようにしおください その埌、既存の Cloud Run のリビゞョンずしおデプロむするように指瀺したす。 Artifact Registry のパスも指定し、他の蚭定は倉曎しないように指瀺したす。 その結果、生成した動画が衚瀺されたりェブサむトが Cloud Run にデプロむされたした。 関連蚘事 blog.g-gen.co.jp Risa (蚘事䞀芧) クラりド゜リュヌション郚クラりドデベロッパヌ課 Google Cloudの可胜性に惹かれ、2024幎4月G-genにゞョむン。 Google Cloud Partner Top Engineer 2025 Google Cloud 11 資栌保有。日々修行䞭です Follow @risa_hochiminh
G-gen の杉村です。圓蚘事では、Google Cloud Next Tokyo '25 の、2日目のキヌノヌトに関する速報レポヌトをお届けしたす。 Google Cloud Next Tokyo '25 むベント抂芁 キヌノヌトの抂芁 AI 時代の倉革 GKE ず Cloud Run における GPU 新たな野球䜓隓 たったく新しいデゞタルバンクの蚭立 Gemini CLI デヌタず AI セブン&アむ・ホヌルディングス セキュリティず AI Google Cloud Next Tokyo 26 関連蚘事 Google Cloud Next Tokyo '25 むベント抂芁 Google Cloud の旗艊むベントである Google Cloud Next の東京版である Google Cloud Next Tokyo '25 は、2025幎8月5日(火)ず6日(æ°Ž)の2日間で開催されたす。本幎は、東京ビッグサむトで開催されたした。 2日目のキヌノヌト䌚堎の様子 2日目のキヌノヌト基調講挔では䟋幎、開発者向けの技術的な内容にフォヌカスした発衚が行われたす。本投皿では、Google Cloud Next Tokyo '25 の第2日目のキヌノヌトの抂芁をお䌝えしたす。 G-gen Tech Blog では、Google Cloud Next Tokyo '25 に関連する蚘事を随時発信しおいたす。 blog.g-gen.co.jp なお、初日のキヌノヌトのレポヌトは以䞋の蚘事を参照しおください。 blog.g-gen.co.jp キヌノヌトの抂芁 Google Cloud Next の2日目のキヌノヌトでは、開発者やデヌタ゚ンゞニア、デヌタサむ゚ンティスト向けの様々な Google Cloud ゜リュヌションが玹介されたした。 1日目ず同じく、AI にフォヌカスし、Google Cloud の AI 系プロダクトが、開発者䜓隓やデヌタ゚ンゞニアリング、デヌタ分析などを効率化するこずができるこずが瀺されたした。たたセキュリティの領域に぀いおも、AI ずの関連性が「AI で守る」「AI を守る」の2぀の芖点で語られたした。 たた株匏䌚瀟 NPB ゚ンタヌプラむズ、゜ニヌ株匏䌚瀟、株匏䌚瀟䞉菱 UFJ フィナンシャル・グルヌプ、株匏䌚瀟セブン&アむ・ホヌルディングスが登壇し、Google Cloud を䜿った事䟋が玹介されたした。 技術的な新発衚ずしおは、 Gemini CLI GitHub Actions が発衚されたしたPreview。Gemini CLI GitHub Actions では、Issue の振り分け、自動的な PR レビュヌ、Issue や PR 内で Gemini CLI にメンションしお䜜業を指瀺するなど、Gemini CLI ず GitHub が高床に統合され、開発ワヌクフロヌを自動化するこずができたす。 参考 : AI コヌディングの新たなパヌトナヌGemini CLI GitHub Actions を発衚 AI 時代の倉革 Google Cloud カスタマヌ゚ンゞニアリング 技術本郚長 枕野 倧茔氏 Google Cloud カスタマヌ゚ンゞニアリング 技術本郚長 枕野 倧茔氏が登壇し、圓講挔では「AI 時代の倉革」をテヌマに、以䞋を玹介するこずが述べられたした。 AI むンフラ アプリのモダナむズ デヌタずセキュリティ Google Cloud は AI に最適化されたプラットフォヌムであり、むンフラからアプリ開発たで、゚ンドツヌ゚ンドの䞀気通貫した AI ゞャヌニヌを提䟛できるこずが「 明確な差別化ポむントである 」ず述べられたした。 AI 時代の倉革 これを裏付けるように、2025幎4月にラスベガスで開催された Google Cloud Next '25 でも発衚された、新型 TPU である Ironwood や、GB200 GPU を搭茉した Compute Engine マシンタむプの提䟛など、Google Cloud の AI 向けむンフラサヌビスが玹介されたした。 GKE ず Cloud Run における GPU Google Cloud VP & GM ブラッド カルダヌ氏 続けお、Google Cloud の VP & GM であるブラッド カルダヌ氏が登壇し、GKE ず Cloud Run における GPU 提䟛機胜などに぀いお蚀及したした。 AI ワヌクロヌドにおける GKE の匷み Cloud Run with GPU 新たな野球䜓隓 株匏䌚瀟 NPB ゚ンタヌプラむズ 執行圹員デゞタル事業郚長 䞹矜倧介氏 株匏䌚瀟 NPB ゚ンタヌプラむズの執行圹員デゞタル事業郚長、䞹矜倧介氏が登壇し、日本プロ野球の芳戊に AI を䜿った新たな䜓隓を導入しようずしおいるこずが発衚されたした。 同瀟は2024に党12球団の球堎に、HAWK-EYE ず呌ばれるトラッキングカメラを導入し、その映像をもずに AI によっお動画像を描画。新たな野球芳戊䜓隓を提䟛するこずを玹介したした。 AI で描画された打球軌跡 続けおこの取り組みを支揎した゜ニヌ株匏䌚瀟の執行圹員、平䜍文淳氏が登壇し、技術的な背景を玹介したした。 ゜ニヌ株匏䌚瀟 執行圹員 平䜍文淳氏 このシステムは Google Cloud 䞊に構築されおいたす。たた開発に圓たっおは、Google による TAPTech Acceleration Programによる支揎があったず述べ、匷力なパヌトナヌシップがあったこずを玹介したした。 将来的には API 経由で詳现デヌタや自動生成コンテンツぞのアクセスを、攟送事業者や消費者ぞ提䟛するこずも芖野に入れおいたす。 アヌキテクチャ コンテンツ提䟛 たったく新しいデゞタルバンクの蚭立 株匏䌚瀟䞉菱 UFJ フィナンシャル・グルヌプ 執行圹垞務 山本忠叞氏 株匏䌚瀟䞉菱 UFJ フィナンシャル・グルヌプの執行圹垞務 リテヌル・デゞタル事業本郚長 å…Œ グルヌプ CDTO の山本忠叞氏が登壇し、新サヌビスブランドである゚ムットの事䟋を玹介したした。 ゚ムットは「お金のあれこれ、たるっず」をテヌマにした同行の新サヌビスです。 ゚ムット 金融を取り巻く倉化ず倚様化 同氏は、同サヌビスの開発にあたり、同行の店舗網ずプロのアドバむスずいう、デゞタルずリアルの「いいずこ取り」を図るべく、「たったく新しいデゞタルバンクの蚭立」を意図したず述べたす。同サヌビスでは、勘定系システムのフルクラりド開発を Google Cloud で行っおいたす。 参考 : Google Cloud 、䞉菱  銀行が新蚭するデゞタルバンクの勘定系システム基盀に採甚 同氏は Google Cloud が採甚された理由ずしお、信頌性堅牢なセキュリティ、スケヌラビリティず柔軟性、高可甚性ずデヌタの䞀貫性などを挙げたした。たたデヌタベヌスずしお、リヌゞョンレベルの障害があっおもサヌビスが止たらないこずず、デヌタの䞍敎合が発生しないこずの2点を重芖したポむントずしお挙げ、これを満たす Spanner を採甚したこずを明らかにしたした。 加えおコンテナ技術の成熟や、AI ず機械孊習の高床な゚コシステムも採甚にあたっおプラス芁玠になったず述べたす。 Gemini CLI 続けお、Gemini CLI に぀いおも改めお玹介されたした。 Gemini CLI はコヌド生成やコヌディング補助だけでなく、様々な甚途に䜿うこずができたす。そういった甚䟋の1぀ずしお、Kubernetes のトラブルシュヌティングが挙げられたした。 Gemini CLI の甚䟋 Gemini CLI は yaml 定矩ファむルから環境情報を理解し、クラスタに接続。ログを取埗しお状況を把握するず、関連゜ヌスコヌドを特定しお修正案を提瀺したす。Gemini CLI が単なるコヌディング補助ツヌルではなく、クラりド環境の運甚にも甚いるこずができるこずが瀺されたした。 たた、Gemini CLI が MCP サヌバヌ経由で GitHub から issue を取埗しお修正したり、「過去1週間の Cloud Logging のログ情報をもずに Cloud Run の最適化をしお」ずいった指瀺に基づいお、Cloud Run の最倧・最小むンスタンス数やリ゜ヌス割り圓おの提案などを行う様子もデモされたした。 Gemini CLI の画面 さらに、新機胜である Gemini CLI GitHub Actions が発衚されたした。Gemini CLI GitHub Actions では、Issue の振り分け、自動的な PR レビュヌ、Issue や PR 内で Gemini CLI にメンションしお䜜業を指瀺するなど、Gemini CLI ず GitHub が高床に統合され、開発ワヌクフロヌを自動化するこずができたす。 参考 : AI コヌディングの新たなパヌトナヌGemini CLI GitHub Actions を発衚 Gemini CLI GitHub Actions の発衚 デヌタず AI Google Cloud GM & VP アンディ ガットマンズ氏 Google Cloud の GM & VP であるアンディ ガットマンズ氏が登壇し、Google Cloud におけるデヌタず AI に぀いお玹介したした。 Google Cloud におけるデヌタず AI MCP Toolbox 経由で AI ゚ヌゞェントが BigQuery、AlloyDB、Cloud SQL、Spanner などの各デヌタベヌスサヌビスに接続できるこずや、Spanner や AlloyDB に搭茉された高床な怜玢機胜などが瀺されたした。 BigQuery のデヌタ゚ンゞニアリング゚ヌゞェントやデヌタサむ゚ンス゚ヌゞェントに぀いおもデモが行われたした。Colab Enterprise や BigQuery Studio のノヌトブック䞊で、自然蚀語による指瀺に基づき、AI が Python ゜ヌスコヌドを生成し、高床な分析を行うこずができたす。 デヌタサむ゚ンス゚ヌゞェント たた Looker や Looker Studio に搭茉された䌚話型分析Conversational Analytics゚ヌゞェントず、高床な分析を実珟する Code Interpreter に぀いおも玹介されたした。察話型分析 API を経由するこずで、自瀟アプリケヌションにこういった機胜を組み蟌むこずもできたす。 Conversational Analytics セブン&アむ・ホヌルディングス 株匏䌚瀟セブン&アむ・ホヌルディングス 垞務執行圹員 グルヌプ DX 本郚長 西村出氏 株匏䌚瀟セブン&アむ・ホヌルディングスの垞務執行圹員 グルヌプ DX 本郚長である西村出氏が登壇し、党囜 21,756 店舗の POS レゞ情報を統合する基盀であるセブンセントラルに぀いお玹介したした。 セブンセントラル 次䞖代店舗システム セブンセントラルはデヌタベヌスずしお BigQuery や Spanner、AlloyDB を採甚ずしおおり、1日52億件のレコヌドを凊理し、たた店舗で発生した最新デヌタぞのアクセスを1分以内に実珟したす。 たた次䞖代店舗システムでは、ストアコンピュヌタヌ1店1台をなくし、党面クラりド化を行うずいう野心的な蚈画も瀺されたした。その実珟のため、「ハヌドず゜フトの分離」「疎結合システムで改修スピヌドアップ」「クラりド䞊のデヌタを有効掻甚」ずいう方針が瀺されたした。 次䞖代店舗システムの方針 Google Cloud 採甚の理由ずしお、「圧倒的な信頌性」「高い柔軟性」が挙げれらたした。 セキュリティず AI Google は次に、AI ずセキュリティの関連性を「AI で守る」「AI を守る」の2぀の芖点で玹介したした。 攻撃者による AI の悪甚は進んでおり、自然な日本語によるフィッシングサむトなども倚く芳枬されおいたす。 攻撃者による AI 悪甚 これに察しお、Google Cloud は「AI で守る」ずいう芖点で、セキュリティ向䞊に AI を利甚したす。Google の SIEM/SOAR 補品である Google SecOps には Gemini が組み蟌たれおおり、怜出事項を AI がトリアヌゞしたり、詳现な分析や次のステップの提案を行いたす。 Google Cloud のセキュリティ関連スむヌト Google SecOps ず AI 将来的な開発蚈画ずしお、AI ゚ヌゞェント同士が連携しおセキュリティ関連タスクをこなすこずを芖野に入れおいるこずが述べられたした。 AI ゚ヌゞェント同士の連携 次に、「AI を守る」ずいう芖点では、Google Cloud の AI Protection が玹介されたした。AI Protection は Security Command Center ず Model Armor に統合されおおり、Google Cloud 環境内で「AI アセットの発芋」「AI アセット保護」「AI ぞの脅嚁察応」などを行い、それらの統合ダッシュボヌドも提䟛したす。 AI Protection グラフィカルに AI アセットを衚瀺しお察凊を提案する Gemini 以倖のモデルにも察応 Google Cloud Next Tokyo 26 最埌に、次回の Google Cloud Next Tokyo '26 の予告が行われたした。 Google Cloud Next Tokyo '26 の日皋は2026幎7月30日朚〜31日金で、䌚堎は2025幎ず同じ、東京ビッグサむトの南展瀺棟です。 関連蚘事 Google Cloud Next Tokyo '25 の関連蚘事は、以䞋の蚘事䞀芧をご参照ください。開催期間䞭は、蚘事が随時公開されたす。 blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の高宮です。圓蚘事は、Google Cloud Next '25 Tokyo の1日目に行われた スポンサヌセッション「 Google Cloud + GitLab で䜜る最高の゜フトりェア開発環境の䜜り方 」 のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 GitLab合同䌚瀟の抂芁 なぜ開発環境は敎備すべきか 迅速に開発環境を展開 人ずAIによるレビュヌで品質の向䞊 セキュリティスキャンの必須化ず脆匱性ぞの察応 快適な開発環境の構築䟋 開発環境の構成 チヌムワヌクを健康に保おるレビュヌ環境 DevSecOpsのアヌキテクチャ 関連蚘事 セッションの抂芁 本セッションでは、 GitLab合同䌚瀟の小束原぀かさ氏から GitLab ず Cloud WorkStations を䜿甚した快適な゜フトりェア開発環境が玹介されたした。 GitLab合同䌚瀟の抂芁 GitLab合同䌚瀟は、開発ラむフサむクル党䜓を単䞀のアプリケヌションで提䟛するDevOpsプラットフォヌム GitLab の日本法人です。 GitLab は2幎連続で『2024 Gartner® Magic Quadrant™ for DevOps Platforms』においおリヌダヌの1瀟ずしお評䟡され、さらに「実行胜力」ず「ビゞョンの完党性」で最䞊䜍の評䟡を獲埗しおいたす。 たた、Google Cloud パヌトナヌ アワヌドの「2025 テクノロゞヌ パヌトナヌ オブ ザ むダヌ - アプリケヌション開発 - DevOps」を受賞しおいたす。 参考 GitLab named a Leader in the Gartner® Magic Quadrant™ 参考 GitLabのパヌトナヌプロフィヌル なぜ開発環境は敎備すべきか 以䞋の3぀の芳点で開発環境を敎備する必芁があり、これらを満たすこずで、 品質ずアゞリティ の向䞊が期埅できるず発衚されたした。 迅速に開発環境を展開 ゜フトりェア開発においお各開発者がロヌカルPCに開発環境を構築しお開発をするこずが倚いです。その際、手順曞に沿っお環境を構築するケヌスでは、開発者のスキルによっおは、独力では環境構築が完結しない堎合がありたす。 たた、耇数の開発を同䞀の端末で行っおいる堎合、ツヌルのバヌゞョンを誀っおアップ・ダりングレヌドする堎合がありたす。 環境構築がうたくいかない堎合や、ツヌルのバヌゞョン差異が発生した堎合、開発者本人だけではなく、他の開発者の時間も奪われおしたうので、 迅速に展開可胜な開発環境 の敎備は重芁です。 人ずAIによるレビュヌで品質の向䞊 ゜フトりェア開発においお生成AIの利甚に䌎い、成果物が完成する速床は飛躍的に向䞊しおいたす。そうした状況の䞭では、レビュワヌには日々倧量のレビュヌ䟝頌があり、パンクしおいる状況で、レビュヌが圢骞化するこずがありたす。たた、レビュヌの指摘内容によっおは、チヌムワヌクが悪化する可胜性もありたす。 このような課題に察凊するために、人だけでなく、 AIも掻甚する こずで 高速に必ずレビュヌを実斜できる環境 を構築するこずが重芁です。たた、コヌドだけでなく 実際に動䜜する環境 でのレビュヌを実斜できる環境の構築も品質向䞊のためには必芁です。 セキュリティスキャンの必須化ず脆匱性ぞの察応 セキュリティスキャンずは、アプリケヌションの゜ヌスコヌドや実行環境を自動的に分析し、朜圚的な脆匱性を怜出するプロセスです。脆匱性は、攻撃者にずっお栌奜の䟵入経路ずなり、脆匱性を攟眮するこずは、䞍正アクセス、デヌタ挏掩、サヌビス停止などのサむバヌ攻撃を招く倧きなリスクずなりたす。セキュリティむンシデントが発生するず、䌁業のブランドむメヌゞや顧客からの信頌は倧きく損なわれる可胜性がありたす。たた、蚎蚟や倚額の賠償金など、法的なリスクや経枈的な損倱を䌎う可胜性がありたす。 このようなリスクを未然に防ぐためにも、 セキュリティスキャンゞョブをスキップできない環境 ず、進化する 生成AIでのコヌディング支揎 を䜿甚しお、脆匱性に適切に察応し修正するこずが重芁です。 快適な開発環境の構築䟋 開発環境の構成 本セッションでは、快適な開発環境ずしお、 Cloud WorkStations ず GitLab を䜿甚した構成が玹介されたした。 Cloud WorkStations クラりド䞊で動䜜するフルマネヌゞドの仮想開発環境を提䟛するサヌビスです。開発者は、ロヌカルPCに耇雑な開発環境を構築するこずなく、ブラりザやロヌカルのIDE統合開発環境から、セキュアで䞀貫性のある開発環境にアクセスできたす。 参考 Cloud Workstations の抂芁 Cloud WorkStations を䜿甚し、環境をむメヌゞ化し展開するこずで、党開発者で迅速に同䞀のセキュアな環境で開発を行うこずが可胜です。 たた Cloud WorkStations に぀いおは、以䞋の圓瀟蚘事で詳しく解説しおいたす。 blog.g-gen.co.jp GitLabは、Gitリポゞトリ管理、CI/CD、セキュリティ、プロゞェクト管理など、゜フトりェア開発のラむフサむクル党䜓をカバヌする統合DevSecOpsプラットフォヌムです。 GitLab を䜿甚するこずで゜ヌスコヌド管理だけでなく、ビルド、テストずセキュリティスキャンの実斜、実際に動䜜する環境ぞのデプロむも行うこずが可胜です。たた、開発における工皋管理も゜ヌスコヌドず連動させお行うこずができたす。 参考 GitLab チヌムワヌクを健康に保おるレビュヌ環境 チヌムワヌクを健康に保おるレビュヌのために、 GitLab Duo のコヌドレビュヌ機胜を䜿甚したす。マヌゞリク゚ストで Duo をアサむンし、レビュヌを実斜したす。AI がレビュヌするこずで、以䞋のメリットがありたす。 必ずレビュヌが実斜される 開発者が指摘の内容を受け入れやすい たた、事前に Duo にコヌドレビュヌの芳点を指瀺するこずで、人がレビュヌする時ず近いレベルでレビュヌが可胜になりたす。そうするこずで、人は芁件が網矅されおいるかなど、本質的な郚分の確認に泚力するこずが可胜です。 参考 GitLab Duo 参考 Have GitLab Duo review your code DevSecOpsのアヌキテクチャ 䞋図に瀺すアヌキテクチャで、DevSecOps を実珟したす。 GKE でのアヌキテクチャ Cloud Run でのアヌキテクチャ ゜ヌスコヌドのビルド時にSASTStatic Application Security Testing、Google Cloud ぞのアプリデプロむ埌にDAST Dynamic Application Security Testingを行うこずで、開発の早期の段階で脆匱性を怜出し、察凊するこずが可胜です。 GitLab では、公匏 CI/CD テンプレヌトが提䟛されおおり、特別な蚭定をするこずなくセキュリティスキャンを有効にできたす。 参考 Static Application Security Testing (SAST) 参考 Dynamic Application Security Testing (DAST) このようにしお怜出した脆匱性に察しお、 GitLab Duo などの AI を掻甚し修正を行うこずで、圢骞化を回避し、確実に脆匱性に察凊する環境を構築するこずができたす。 関連蚘事 blog.g-gen.co.jp 高宮 怜 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課 2025幎6月より、G-genにゞョむン。前職は四囜のSIerで電力、補造業系のお客様に察しお、PMAP゚ンゞニアずしお、芁件定矩から運甚保守たで党工皋を担圓。珟圚はGoogle Cloudを孊びながら、フルスタック゚ンゞニアを目指しおクラりド゚ンゞニアずしおのスキルを習埗䞭。
Google Cloud Next Tokyo '25 の「Next Tokyo むベントアンバサダヌ」に遞出いただきたした G-gen の堂原です。圓蚘事は、Google Cloud Next '25 Tokyo の2日目に行われた ブレむクアりトセッション「 もう手攟せないGemini の NotebookLM、Deep Research、Canvas で思考を加速 」 のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 思考を倉革する、新しい情報掻甚ワヌクフロヌ 抂芁 Deep Research NotebookLM Canvas AbemaTV のナヌスケヌスご玹介 抂芁 文章䜜成 調査業務 瀟内デヌタ掻甚 関連蚘事 セッションの抂芁 本セッションでは、 Google の AI ツヌルである Deep Research 、 NotebookLM 及び Canvas の掻甚方法ず、株匏䌚瀟 AbemaTV 瀟での実際の掻甚䟋に぀いお玹介されたした。 思考を倉革する、新しい情報掻甚ワヌクフロヌ 抂芁 前半パヌトでは、Google Cloud 瀟の服郚氏より、Deep Research、NotebookLM 及び Canvas を掻甚した新しい情報掻甚ワヌクフロヌが玹介されたした。 業務においお情報を掻甚するための倧きなフロヌである 情報の収集 集玄・敎理・分析 アりトプット それぞれのフェヌズにおける、Deep Research、NotebookLM、Canvas の有甚性が玹介されたした。 Deep Research Deep Research は、以䞋のような情報収集における必芁なフロヌを数分で完結させるこずができたす。 Deep Research は䞎えられたプロンプトをただ文字通りに怜玢するのではなく、その目的を理解し、調査を耇数のステップに萜ずし蟌みたす。そしお最倧 100 皮類のりェブサむトを自動的に怜玢し、埗られたデヌタを統合し、敎合性が取れるように適宜修正したす。調査結果は最終的に匕甚元ぞのリンクを含んだレポヌトずしお出力されたす。 NotebookLM NotebookLM では、議事録等ずいった瀟内デヌタや Deep Research が出力したレポヌトなどの情報の集玄・敎理・分析をするこずができたす。 NotebookLM は Google Docs や Google Slide、YouTube、PDF 等ずいった耇数のデヌタ圢匏に察応しおいたす。たた、党おの回答には適切な匕甚元ぞのリンクが付いおいるため、ハルシネヌションが起きにくいです。曎に、音声ずしおの出力も可胜ずいう特城も持っおいたす。 Canvas Canvas は䞎えられた情報の敎理を行いアりトプットずしたす。文章ずしおのアりトプットはもちろん、HTML・CSV・JavaScript によるペヌゞを䜜成するこずも可胜です。 AbemaTV のナヌスケヌスご玹介 抂芁 埌半パヌトでは、AbemaTV 瀟の䞊田氏より、AbemaTV 瀟における Google の生成 AI ツヌルの具䜓的な掻甚䟋が玹介されたした。 AbemaTV 瀟では、文章䜜成や調査業務、瀟内デヌタ掻甚ずいった業務においお Gemini が掻甚されおいたす。 文章䜜成 文章䜜成においおは、メヌルや議事録、䌁画の提案資料などずいった様々な文章䜜成を Gemini が支揎しおいたす。Gemini は資料のたたき台を瞬時に䜜成し、メヌル䜜成や芁玄・議事録䜜成を倧幅に効率化したす。たた䌁画創案のアむデア出しも支揎しおくれたす。 具䜓䟋ずしお、Gmail でのメヌル䜜成支揎や Gem をプレれンテヌション䜜成アドバむザヌずしお掻甚しおいるケヌスが玹介されたした。 Gmail でのメヌル䜜成支揎 Gem による、プレれンテヌション䜜成アドバむザヌ 調査業務 調査業務においおは Deep Research が掻甚されおいたす。垂堎調査や競合分析を Gemini が代行し、膚倧な情報からレポヌトの䜜成を行っおくれたす。 瀟内デヌタ掻甚 瀟内デヌタ掻甚においおは NotebookLM が甚いられおいたす。 具䜓䟋ずしお、瀟員の自己玹介スラむドをデヌタ゜ヌスずしたオンボヌディング甚 NotebookLM や、文章化されたデザむンポリシヌに関する FAQ システムずしお NotebookLM を掻甚するケヌスが玹介されたした。 オンボヌディング NotebookLM デザむンポリシヌ NotebookLM 関連蚘事 blog.g-gen.co.jp 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に遞出 (2024幎はRookie of the year、2025幎はFellowにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara