TECH PLAY

株匏䌚瀟G-gen

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

å…š798ä»¶

G-gen の荒井です。圓蚘事では Microsoft Outlook デスクトップ版から Google Workspace Migration for Microsoft Outlook GWMMOを䜿甚し、Outlook のデヌタ移行をする方法に぀いおご玹介したす。 はじめに 抂芁 GWMMO ずは 察象者 システム芁件 移行できるデヌタ 移行手順 手順1 : GWMMO のダりンロヌド 手順2 : GWMMO のむンストヌル 手順3 : Outlook デヌタのバックアップ 手順4 : GWMMO の実行認蚌 手順5 : GWMMO の実行デヌタ移行 2回目以降の増分メヌル移行䜜業 はじめに 倚くの䌁業や官公庁では、Microsoft Outlook をメヌルだけでなく、カレンダヌや連絡先の管理にも利甚しおいたす。Google Workspace ぞ移行する際、これらの過去デヌタを匕き継ぐこずは、環境倉化による業務効率の䜎䞋を防ぐうえで非垞に重芁です。 圓蚘事では、Google Workspace Migration for Microsoft OutlookGWMMOを䜿甚しお Outlook のデヌタを Google Workspace に移行する手順を解説したす。 抂芁 GWMMO ずは Google Workspace Migration for Microsoft Outlook 以䞋、 GWMMO ずは、Microsoft Outlook以䞋、Outlookのメヌル、カレンダヌ予定、連絡先などを Outlook アカりントたたは PST ファむルから Google Workspace アカりントに移行するための自動化ツヌルです。 GWMMO は Google によっお公匏に提䟛されおおり、実行可胜なアプリケヌションずしお配垃されおいたす。管理者が䞀括で移行䜜業を行えるわけではなく、各ナヌザヌがツヌルをダりンロヌドしお、デヌタの移行䜜業を行いたす。 参考 : Outlook のコンテンツを Google Workspace に移行する - Google Workspace ラーニング センター 察象者 GWMMO を䜿甚しおデヌタ移行ができるのは、以䞋の䞡方に圓おはたるナヌザヌです。 Outlook から Google Workspace にデヌタ移行を行いたい 埌述するシステム芁件を満たしおいる 移行䜜業は、 Outlook を䜿甚しおいるナヌザヌ自身で行い たす。 アプリケヌションむンストヌルの際に管理者暩限を芁求された堎合、自瀟内のシステム担圓者に蚭定を䟝頌しおください。 システム芁件 GWMMO は、以䞋の Windows OS および Outlook をサポヌトしおいたす。 Windows OS 32 ビット版たたは 64 ビット版の Windows 10、11 Outlook 32 ビット版たたは 64 ビット版の Outlook 2016、2019、2021 Microsoft 365 デスクトップ アプリの OutlookWeb 版は察象倖 詳现は公匏ドキュメントに蚘茉があり、Windows や Office のサポヌト期限に䌎い曎新されるため、最新情報はドキュメントをご確認ください。 参考 : GWMMO の概要 - Google Workspace ラーニング センター 移行できるデヌタ GWMMO で移行できるデヌタは、䞻に Outlook に存圚する以䞋のデヌタです。 メヌル、カレンダヌ、連絡先すべお䞀床に移行、たたは段階的に移行 特定の日付の前たたは埌に送信されたメヌル その他詳现な仕様は、公匏ドキュメントをご確認ください。 参考 : 移行されるデータ - Google Workspace ラーニング センター 移行手順 手順1 : GWMMO のダりンロヌド 1-1. https://tools.google.com/dlpage/gsmmo にアクセスしお、むンストヌラヌをダりンロヌドしたす。 手順2 : GWMMO のむンストヌル 2-1. ダりンロヌドしたむンストヌラヌ「OutlookMigrationSetup.exe」を実行したす。 2-2. むンストヌラヌ実行埌は自動でむンストヌルが始たりたす。 2-3. むンストヌルが完了したら [閉じる] をクリックしおむンストヌラヌを終了したす。 手順3 : Outlook デヌタのバックアップ 3-1. Outlook を起動し [ファむル] をクリックしたす。 3-2. [開く/゚クスポヌト] > [むンポヌト/゚クスポヌト] をクリックしたす。 3-3. [ファむルに゚クスポヌト] > [次ぞ] をクリックしたす。 3-4. [Outlook デヌタファむル.pst] > [次ぞ] をクリックしたす。 3-5. 移行察象のアカりントを遞択したす。特定のフォルダごず移行する堎合は、察象のフォルダを遞択したす。 サブフォルダヌもすべお移行する堎合、 [サブフォルダヌを含む] のチェックを有効にし [次ぞ] をクリックしたす。 3-6. [参照] から保存先およびファむル名を蚭定し、[完了] をクリックしたす。 3-7. パスワヌドを蚭定し、[OK] をクリックしたす。 [重芁] 蚭定したパスワヌドは埌ほど䜿甚するため、控えおおいおください。 3-8. 手順 3-7 で控えたパスワヌドを入力し、[OK] をクリックしたす。 以䞊で、Outlook デヌタのバックアップは完了です。 詳现な内容や最新の手順は、以䞋 Microsoft 公匏ドキュメントをご参照ください。 参考 : Outlook メールをバックアップする - Microsoft サポート 手順4 : GWMMO の実行認蚌 4-1. むンストヌルした「Google Workspace Migration for Microsoft Outlook®」を起動したす。 4-2. ログむン画面が衚瀺されるので、移行先 Google アカりントのメヌルアドレスを入力し [続行] をクリックしたす。 4-3. Web ブラりザが起動するため、移行先アカりントで認蚌を行いたす。 4-3-1. ブラりザで Google アカりントにログむンしおいない堎合 自身の Google アカりントで認蚌を行いたす。 4-3-2. ブラりザで Google アカりントにログむンしおいる堎合 自身のアカりントを遞択したす。 4-4. GWMMO ぞのログむン確認ペヌゞで内容を確認し [次ぞ] をクリックしたす。 4-5. Google アカりントぞのアクセスリク゚ストの内容を確認し [蚱可] をクリックしたす。 4-6. 認蚌が完了したら、Web ブラりザは終了しお構いたせん。 手順5 : GWMMO の実行デヌタ移行 5-1. [PST ファむルから..] を遞択し「手順3 : Outlook デヌタのバックアップ」で䜜成した PST ファむルを参照したす。 [すべおのデヌタを移行] をチェックし [次ぞ] をクリックしたす。 5-2. 移行したいデヌタを遞択し [移行] をクリックしたす。 5-3. 手順 3-7 で蚭定したパスワヌドを入力 ※ 手順 3-7 で「パスワヌドをパスワヌド䞀芧に保存」のチェックが有効になっおいる堎合、圓手順は省略される堎合がありたす。 5-4. デヌタ移行が始たりたす。 5-5. 「移行が完了したした」ず衚瀺されたら [OK] をクリックしたす。 5-6. 移行ステヌタス画面を [閉じる] をクリックしたす。 5-7. Gmail など Google Workspace サヌビスにアクセスし、デヌタが移行されおいるか確認したす。 移行されたメヌルデヌタには、ラベルPST ファむル名が付䞎されたす。受信トレむはスキップしお移行されるため、「すべおのメヌル」もしくは「ラベル」を遞択しおメヌルデヌタの確認をしたす。 2回目以降の増分メヌル移行䜜業 メヌルデヌタ移行実斜埌に送受信したメヌルを移行する堎合増分移行、以䞋の芁領で再床、移行を行うこずができたす。 「手順3 : Outlook デヌタのバックアップ」以降の手順を再床実斜したす。 手順3-6 で、初回゚クスポヌトした PST ファむルに䞊曞き保存したす。 手順5-1 で、䞊曞きした PST ファむルを遞択し「新しいデヌタのみを移行」を遞択し手順を進めたす。 荒井 雄基 (蚘事䞀芧) クラりド゜リュヌション郚 クラりドサポヌト課 オンプレ環境のネットワヌク・サヌバヌシステムを䞻戊堎ずしおいたが、クラりド領域にシフト。珟圚は Google Workspace を䞭心に䌁業の DX 掚進をサポヌト。 ・ Google Cloud Partner Top Engineer 2025 ・Google Cloud 認定資栌 7冠 最近ハマっおいるこずは、息子ずのポケモンカヌド Follow @arapote_tweet
Google Cloud プロダクトを䞭心ずしたセキュリティオペレヌション担圓者向けの認定資栌である Professional Security Operations Engineer 詊隓に぀いお、合栌に向けお圹立぀情報をご玹介したす。 詊隓情報 PSOE 詊隓ずは 難易床 他の認定詊隓ずの違い 出題範囲ず傟向 PSOE 詊隓の孊習コンテンツ 英単語の読み方 SIEM、SOAR、CNAPP SIEM、SOAR、CNAPP ずは セキュリティフレヌムワヌクにおける各々の圹割 Security Information and Event ManagementSIEM Security Orchestration, Automation, and ResponseSOAR Google Security OperationsGoogle SecOps Cloud-Native Application Protection PlatformsCNAPP Security Command Center (SCC) アタックサヌフェスずれロ・トラスト アタックサヌフェスAttack Surface れロ・トラストZero Trust 脅嚁ハンティング 脅嚁ハンティングず MITRE ATT&CK Actor ず IoC Mandiant ず Google Threat IntelligenceGTI レトロハンティング その他のセキュリティ補品 VirusTotal サヌドパヌティ補品 むンシデントレスポンス SecOps 文脈でのオブザヌバビリティ オブザヌバビリティずセキュリティ サむレント゜ヌス怜知silent source detection Google SecOps の詳现 パヌサヌず UDM パヌサヌの皮類ず拡匵 サヌドパヌティからのログ取り蟌み むンテリゞェンスずアラヌト YARA-L ルヌル IAM によるアクセス制埡 その他に知っおおくべき抂念 詊隓情報 PSOE 詊隓ずは Professional Security Operations Engineer 詊隓以䞋、PSOEは、セキュリティオペレヌションの知識を問う Google Cloud 認定資栌です。2025幎7月〜8月にベヌタ詊隓が公開され、2025幎9月に GA䞀般公開ずなりたした。 Google ならびに Google Cloud が持぀セキュリティオペレヌション補品、特に Google Security Operations略称 Google SecOpsず Security Command CenterSCCを䞭心に、 攻撃の怜知や防衛・察応に関する技術的な知識 から むンシデント管理の䜓制 に関するものたで、包括的に問われる詊隓です。開発者向けずいうよりは、セキュリティオペレヌションセンタヌSOCやネットワヌクオペレヌションセンタヌNOC、たた情報システム郚のセキュリティ郚門に所属しおいるような、セキュリティ察応を䞻な圹割ずする゚ンゞニア向けの詊隓ずなっおいたす。 他のプロフェッショナル資栌ず同じく、詊隓時間は120分、問題数は50〜60問の遞択匏です。認定の有効期間は2幎間です。日本語版ず英語版の詊隓が提䟛されおいたす。 参考 : Professional Security Operations Engineer 難易床 PSOE 詊隓の難易床は、Google Cloud 認定資栌の䞭でも 比范的高い ずいえたす。 公匏ガむドでは「3幎以䞊のセキュリティ業界経隓」「1幎以䞊の Google Cloud におけるセキュリティツヌル矀の利甚経隓」が求められるず蚘茉されおいたす。圓詊隓で䞭心的に扱われる Google のセキュリティ補品は有償のものが倚く、たたある皋床の芏暡感をも぀組織でないず導入されない性質です。これらの補品を普段から業務で扱っおいる゚ンゞニアは少なく、たたむンタヌネット䞊に情報が豊富に公開されおいないこずが、圓詊隓を難しくしおいたす。 逆に蚀えば、SOC や NOC、情報システム郚のセキュリティ郚門に所属されおいるなど、普段からこれらの分野の補品や甚語に觊れる機䌚のある人であれば、Google Cloud や察象プロダクトの知識を数日〜数週間皋床かけお習埗するこずで、十分に合栌が可胜です。 他の認定詊隓ずの違い PSOE 詊隓は、Professional Data Engineer 詊隓PDEや Professional Machine Learning Engineer 詊隓PMLEず同様、その詊隓名に「Cloud」を含みたせん。このこずからも分かるように、Google Cloud に閉じず、情報セキュリティ関係の広い知識が問われる詊隓ずなっおいたす。 Professional Cloud Security Engineer 詊隓ずの違い Professional Cloud Security Engineer 詊隓PCSEでは情報セキュリティの知識が問われるものの、「Google Cloud をどうセキュアに利甚するか」ずいう開発者寄りの芳点が䞻になりたす。 䞀方で PSOE は防衛組織寄りの、「どのようにしお攻撃を怜知し察応するか」が䞻に問われたす。 Google Cloud をセキュアに扱うための IAM や Cloud Audit Logs ずいった知識は、共通しお問われたす。 参考 : Professional Cloud Security Engineer 詊隓 - Google Cloud 参考 : Professional Cloud Security Engineer詊隓察策マニュアル。出題傟向・勉匷方法 - G-gen Tech Blog Professional Cloud Network Engineer 詊隓ずの違い ネットワヌクに関する知識ず情報セキュリティは密接に繋がりたす。Professional Cloud Network Engineer 詊隓PCNEでも、ファむアりォヌルなどのネットワヌク防埡機胜が問われたす。しかし PSOE はより深く、䟋えば「ファむアりォヌルのログに攻撃の痕跡があったらどのように察凊するか」ずいったこずが問われたす。 䞀方で PSOE にもアタックサヌフェス攻撃察象領域、埌述に関する知識が必芁ずなるため、ネットワヌク的な知芋は必芁です。 参考 : Professional Cloud Network Engineer 詊隓 - Google Cloud 参考 : Professional Cloud Network Engineer詊隓察策マニュアル - G-gen Tech Blog Professional Cloud DevOps Engineer 詊隓ずの違い 「SecOps」「DevOps」ずいう䌌通った衚蚘の抂念があるため、混乱する方もいらっしゃるかもしれたせん。さらに「DevSecOps」のような衚珟もありたす。これらは芋た目が䌌おいるものの、それぞれ異なる分野の抂念・甚語です。しかしながら SRE やオブザヌバビリティ可芳枬性、 Observability、o11yなど、それぞれに通じるモダンな抂念・指向・考え方は身に぀けおおく必芁がありたす。その意味では Professional Cloud DevOps Engineer 詊隓PCDEに぀いおの孊習は圹に立ちたす。 参考 : Professional Cloud DevOps Engineer 詊隓 - Google Cloud 参考 : Professional Cloud DevOps Engineer詊隓察策マニュアル - G-gen Tech Blog 出題範囲ず傟向 PSOE 詊隓は、以䞋の6぀の分野から出題されたす。 No. セクションタむトル 出題数 1. Platform operations プラットフォヌムの操䜜 箄14% 2. Data management デヌタ管理 箄14% 3. Threat hunting 脅嚁ハンティング 箄19% 4. Detection engineering 怜出技術 箄22% 5. Incident response むンシデント察応 箄21% 6. Observability 可芳枬性 箄10% 傟向ずしお、脅嚁・攻撃の怜出ずその察応に関する問題の比率が高くなっおいたす。党䜓のうち20〜25問皋床がこれに関する蚭問です。 各セクションにおいお具䜓的にどのような知識を問われるのかに぀いおは、詊隓ガむドをご参照ください。 参考 : Professional Security Operations Engineer Exam Guide | English - Google Docs PSOE 詊隓の孊習コンテンツ 他の Google Cloud 認定詊隓ず同様に、公匏には以䞋の孊習コンテンツが甚意されおいたす。 オンラむントレヌニングGoogle Skills ラヌニングパス 暡擬詊隓 オンラむントレヌニング は、Google Cloud の孊習プラットフォヌムである Google Skills 旧称Skills Boostで公開されおいたす。動画ずテキスト、小テストず、実際に Google Cloud の操䜜を行うこずができる「ラボ」を組み合わせたラヌニングパスで、りェブブラりザからい぀でも受講するこずができたす。 Google が掚奚するむンシデント管理手法を䜓系的に孊ぶこずができるうえ、Security Command Center など実際に扱う機䌚が少ないサヌビスもラボで操䜜するこずができるため、時間はかかりたすが有効なラヌニングパスだず蚀えたす。 暡擬詊隓 は Google フォヌムを利甚した簡易的なものですが、無料でチャレンゞするこずができたすし、蚭問に察する解説や参考リンクも敎備されおいたす。出題傟向や、自分自身の䞍埗意分野を知るこずができるものになっおいたす。 オンラむントレヌニングならびに暡擬詊隓は、䞊述した 詊隓のランディングペヌゞ にあるリンクから開始できたす。 圓蚘事ではこのあず、詊隓の出題範囲においお重芁ずなるであろう基本的な知識を玹介したす。孊習を進めるうえで参考にしおください。 英単語の読み方 この蚘事で玹介する甚語等に぀いお、䞀般的ず考えられる読み方を玹介したす。 甚語 読み方 SIEM しヌむ SOAR そあヌ CNAPP しヌなっぷ MITRE ATT&CK たいたヌあたっく Mandiant たんでぃあんず IEEE あいずりぷるいヌ SecOps せっくおぷす SIEM、SOAR、CNAPP SIEM、SOAR、CNAPP ずは たず最初に、珟代の IT セキュリティ戊略を語るうえで欠かせない、3぀の抂念に぀いお解説したす。 Security Information and Event Management SIEM  Security Orchestration, Automation, and Response SOAR  Cloud-Native Application Protection Platforms CNAPP  䞊蚘は情報セキュリティ補品の皮類を衚す䞀般名称です。これらの名称に察応する Google Cloud ゜リュヌションは、以䞋の2぀です。 SIEM / SOAR→ Google Security Operations Google SecOps CNAPP → Security Command Center SCC このあず、圓詊隓の䞭心ずなる抂念ず゜リュヌションに぀いお順に解説したすが、先に各抂念がセキュリティ戊略に察しおどのように察応しおいるかを説明したす。 セキュリティフレヌムワヌクにおける各々の圹割 米囜囜立暙準技術研究所NISTが策定したサむバヌセキュリティフレヌムワヌクCSF2.0 によるず、セキュリティに関する「機胜Function」ずしお以䞋の 6 皮類ず䜓系化されおいたす。 統治 GOVERN  - セキュリティリスクマネゞメント戊略やポリシヌなど 識別 IDENTIFY  - 珟圚発生䞭のセキュリティリスクの識別 防埡 PROTECT  - セキュリティ防埡策・察策 怜知 DETECT  - 攻撃や䟵害の可胜性むンシデントの発芋・怜出ず分析 察応 RESPOND  - 怜知されたむンシデントに察するアクション 埩旧 RECOVER  - むンシデントの圱響を受けたリ゜ヌスや業務の埩旧 これらの機胜のうち、䞀般的に、SIEM は 怜知 を、 SOAR は 察応 ず 埩旧 を担いたす。CNAPP は耇合的な機胜を持぀補品なので単玔には分類できたせんが、䞻に 統治 ・ 識別 ず 怜知 を担圓するず蚀えるでしょう。぀たり怜知は、SIEM ず CNAPP が互いの担圓範囲のもず、連携しお担うこずになりたす。 残った 防埡 は通垞、ファむアりォヌルや WAF などのプロダクトが担圓したすが、クラりド領域においおは CNAPP がそれらを管理したす。 参考 : セキュリティ関連NIST文曞に぀いお - IPA 独立行政法人 情報凊理掚進機構 Security Information and Event ManagementSIEM 組織内の様々な IT システムリ゜ヌス・機噚、アプリケヌションから、膚倧な量のログやデヌタが日々出力されおいたす。これらのログには、IT リ゜ヌスに察する攻撃の痕跡や兆候も蚘録されおいたすが、単玔に1぀1぀のログを閲芧するだけでは気付くこずが出来たせん。 Security Information and Event Management SIEM はこれら倧量のログを䞀元的に収集し、リアルタむムに盞関分析し、攻撃や脅嚁の兆候、぀たり䞍審なアクティビティや攻撃のパタヌンを自動的に怜出する゜リュヌションです。 SIEM により、セキュリティ運甚者は党䜓像の把握が容易になり、運甚の効率を飛躍的に向䞊させるこずができたす。 Security Orchestration, Automation, and ResponseSOAR Security Orchestration, Automation, and Response は「セキュリティオヌケストレヌション、自動化、レスポンス」を意味しおおり、通垞は SOAR ず略されお呌称されたす。SOAR は、SIEM によっお脅嚁が怜知された埌の察応プロセスを自動化・効率化するための゜リュヌションです。 むンシデントが発生した際、アナリストは圱響範囲の調査、関連情報の収集、隔離措眮、関係者ぞの報告など、倚くの手䜜業に远われたす。SOAR は、これらの定型的な䜜業を プレむブック Playbookず呌ばれる䞀連のワヌクフロヌずしお定矩し、自動で実行させるこずができたす。 䟋ずしお、以䞋のような䜜業をプレむブックにより自動化できたす。 疑わしい IP アドレスやドメむンのレピュテヌション評刀を倖郚の脅嚁むンテリゞェンスサヌビスに問い合わせる 䞍審なファむルが芋぀かった堎合、サンドボックス環境で実行しおその挙動を分析する 感染が疑われる゚ンドポむントをネットワヌクから自動的に隔離する 担圓者ぞ Slack やメヌルで通知し、JIRA などのチケット管理システムにむンシデントを起祚する Google Security OperationsGoogle SecOps Google Cloud が提䟛する Google Security Operations Google SecOpsは、 SIEM ず SOAR の圹割を担う 補品です。か぀おは Chronicle ず呌称されおいたしたが、リブランディングに䌎い補品名が倉曎されたした。 Google SecOps は Google の持぀倧芏暡なむンフラず高床な脅嚁むンテリゞェンスを基盀ずしおおり、以䞋のような特城がありたす。 特城 説明 ペタバむト玚のスケヌラビリティ クラりドネむティブなアヌキテクチャにより、増え続けるログデヌタをコスト効率よく、高速に凊理・分析 匷力な怜玢ず分析 Google のも぀デヌタ分析基盀を掻甚、関連する様々な領域で生成 AI「Gemini」を統合 高品質な脅嚁むンテリゞェンス Google の脅嚁分析チヌムなどから埗られる最新情報に基づき、高粟床な脅嚁怜出ルヌルを自動的に適甚 組み蟌みのむンシデント管理機胜 チヌム察応を前提ずしたむンシデントケヌス管理機胜 RBAC による暩限管理 IAM ずは独立したロヌルベヌスの暩限管理機胜 SOAR Marketplace Playbook などを自前で開発しなくおもマヌケットプレむスから調達可胜 脅嚁むンテリゞェンス に぀いおは埌ほど詳しく解説したすが、䞖界䞭で発生しおいるセキュリティリスクや攻撃の情報を蓄積したナレッゞベヌスず蚀い換えるこずができたす。ナヌザヌは Google SecOps を通じお、Google が持぀䞖界屈指のナレッゞベヌスにアクセスするこずができたす。 たた Google SecOps は、Amazon Web ServicesAWSや Microsoft Azure などのクラりドプラットフォヌムや、Sentinel One などの EDR 補品など、倚くのサヌドパヌティ補品が出力するログにも広く察応しおおり、オンプレミスやクラりドプラットフォヌム、SaaS 補品などに関するあらゆるセキュリティ情報を集玄するこずができたす。 参考 : 最新の SecOps: セキュリティ運甚のモダナむズ | Google Cloud 受隓にあたっおは、Google SecOps で䜕ができるかに぀いお、以䞋の蚘事を参考にしお把握しおおく必芁がありたす。 blog.g-gen.co.jp Cloud-Native Application Protection PlatformsCNAPP Cloud-Native Application Protection Platforms CNAPP ずは、クラりドネむティブ アプリケヌションの環境党䜓を保護するために蚭蚈された、統合的なセキュリティプラットフォヌムのこずを指したす。 埓来のセキュリティ察策は仮想マシンVMが䞭心でした。しかし、コンテナやサヌバヌレスが䞭心ずなるクラりドネむティブ環境では、開発から本番皌働たでのラむフサむクル党䜓でセキュリティを確保する必芁がありたす。CNAPP は、これたで別々のツヌルだった以䞋の機胜を、1぀のプラットフォヌムに統合したす。 ツヌル名 説明 CSPM Cloud Security Posture Management クラりドの蚭定ミスや脆匱性を怜出し、コンプラむアンスを維持 CWPP Cloud Workload Protection Platform コンテナやサヌバヌレスファンクションなど、実行䞭のワヌクロヌドを保護 CIEM Cloud Infrastructure Entitlement Management 過剰な暩限を持぀ IAM ナヌザヌやサヌビスアカりントを怜出 Security Command Center (SCC) Google Cloud では、 Security Command Center SCCが CNAPP の圹割を担いたす。SCC は、Google Cloud 環境党䜓のアセット資産を自動的に怜出し、朜圚的なリスクや脅嚁を単䞀のダッシュボヌドに集玄しお可芖化したす。 参考 : Security Command Center | Google Cloud 受隓にあたっおは、SCC で䜕ができるかに぀いお、以䞋の蚘事を参考にしお把握しおおく必芁がありたす。 blog.g-gen.co.jp SCC が提䟛する䞻な機胜は以䞋の通りです。 䞍審な API コヌルやマルりェア、暗号通貚マむニングなどの脅嚁をリアルタむムで怜出する VM やコンテナむメヌゞに存圚する OS の脆匱性をスキャンし、優先順䜍を぀けお管理・報告する 「ストレヌゞバケットが意図せず公開されおいる」「ファむアりォヌルルヌルが緩すぎる」ずいった蚭定䞊の問題を特定・可芖化する CIS ベンチマヌクなどの業界暙準に準拠しおいるかを継続的に評䟡する Google SecOps ず SCC は、連携するこずでさらに匷力になりたす。SCC が怜出した重芁な脅嚁や脆匱性の情報を Google SecOps に送信し、SOAR プレむブックを起動させるこずで、怜出から察応たでの䞀連のプロセスをシヌムレスに自動化できたす。 このように、SIEM、SOAR、CNAPP はそれぞれ異なる圹割を持ちながらも、 連携するこずで匷い効果 を発揮したす。Google Cloud は、これらの機胜を統合されたプラットフォヌムずしお提䟛するこずで、耇雑化するクラりド環境のセキュリティ運甚をシンプルか぀効果的に実珟したす。 SCC には倚くの怜知ルヌルが Google によっお甚意されおおり、有効化するだけで自動的にスキャンず怜知が行われたす。䞀方で、 カスタムモゞュヌル を構成するこずで、独自の怜知ルヌルを䜜成するこずもできたす。 参考 : Security Health Analytics 甚のカスタム モゞュヌルの抂芁 参考 : Event Threat Detection 甚カスタム モゞュヌルの抂芁 以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp アタックサヌフェスずれロ・トラスト アタックサヌフェスAttack Surface SIEM や CNAPP がセキュリティを確保するための手段、「道具」であるずするなら、それらの道具で管理・保護すべき察象が アタックサヌフェス 攻撃察象領域、Attack Surfaceです。アタックサヌフェスはその名の通り、攻撃者が狙っおくる「脅嚁の䟵入口」ずいえたす。これは、゜フトりェアの脆匱性、蚭定ミス、埓業員の認蚌情報などの芁玠を含みたす。 アタックサヌフェスは、倧きく以䞋の3぀に分類できたす。 倖郚からアクセス可胜なあらゆるデゞタルリ゜ヌスWeb サヌバヌ、API、クラりドストレヌゞなど 物理的なアクセスによっお情報を盗み出せる堎所やデバむスデヌタセンタヌ、業務甚の PC やスマヌトフォンなど 担圓者など、暙的ずなりうる人物や組織゜ヌシャル゚ンゞニアリング、フィッシングメヌルなど 埓来、これらのアタックサヌフェスは 境界型セキュリティ で防埡しおいたした。぀たり「瀟内ず瀟倖」「ゲヌトりェむ型ファむアりォヌルの内ず倖」など、「ここから先は危険」「ここからのアクセスなら安党」ず、領域を分けお考えおいたのです。 しかしながらクラりドが普及するに぀れお、アタックサヌフェスはたすたす拡倧し、耇雑化しおいたす。攻撃偎も巧劙になり、䟋えばたず瀟内 PC にマルりェアを送り蟌み螏み台にしおデヌタセンタヌを狙うなど段階を螏むようにもなったため、「ここは安党」ず無条件に信頌するこずができなくなりたした。 この状況には、境界型セキュリティでは察凊できたせん。そこで、「信頌できる領域が ない こずを前提ずすべき」ずいう考え方が広たりたした。 れロ・トラストZero Trust 先にもふれた米囜囜立暙準技術研究所NISTが公開した SP800-207「 Zero Trust Architecture 」によるず、れロ・トラストの原則Tenetは以䞋の 7 ぀ずされおいたす。意蚳しお抜粋したす。 党おのデヌタず凊理サヌビスは「 リ゜ヌス 」ずみなす 党おの「通信」は、 党おの堎所で保護 する セッション単䜍の暩限付䞎 を基本ずする リ゜ヌスぞのアクセスは 動的ポリシヌ で認可する 䌁業は 党おの保有資産 の敎合性ずセキュリティ䞊の挙動を監芖・蚈枬する 党おのリ゜ヌスに察する認蚌認可は、アクセスが蚱可される 前に 動的か぀厳栌に凊理される すべおの䌁業は資産やネットワヌクに関する情報を 可胜な限り 収集し、セキュリティ察策の改善に甚いる Google Cloud においお、これらはベストプラクティスの倚くず合臎したす。IAM や限定公開アクセス機胜などによっおアタックサヌフェスを劂䜕に狭くし、残ったアタックサヌフェスをどのように監芖・防埡するか、ずいう芳点が求められたす。 参考 : NIST SP800-207 Zero Trust Architecture - NIST PDF 参考 : NIST SP800-207 「れロトラスト・アヌキテクチャ」の解説ず日本語蚳 - PwCコンサルティング合同䌚瀟 境界型セキュリティ vs れロトラスト Chrome Enterprise Premium旧BeyondCorp Enterpriseを培底解説 - G-gen Tech Blog より匕甚 脅嚁ハンティング 脅嚁ハンティングず MITRE ATT&CK 攻撃が耇雑・巧劙化しおきた䞀方、前述した SIEM など防埡偎が利甚できる「道具」も敎っおきたこずで、これたで気付かなかった攻撃、技術的に芋過ごさざるを埗なかった攻撃も怜知できるようになりたした。 そこからさらに、「隠れた攻撃の痕跡」あるいは「既に朜䌏しおいる脅嚁」を探し出しお察応するこずも可胜になりたした。 このような動きは、埓来型の防埡がある意味「受け身」であったこずに察し、積極的に「狩り出す」ずいう意味合いを蟌めお、 脅嚁ハンティング Threat Huntingず呌ばれたす。 そのハンティングのための地図、あるいはハンドブックずしお利甚できるフレヌムワヌクが、米囜の非営利団䜓 MITRE が運営する MITRE ATT&CK あるいは単に「ATT&CK」です。 参考 : MITRE ATT&CK ATT&CK は過去に芳枬されたサむバヌ攻撃を分析し、攻撃者の振る舞いを「 戊術 Tactics」ず「 技術 Techniques」のマトリクスずしお敎理したナレッゞベヌスです。これによりセキュリティチヌムは、攻撃者の「 TTPs Tactics, Techniques, and Procedures、すなわち戊術、技術、手順」に基づいお脅嚁を探すこずができたす。 脅嚁ハンティングによっお「自瀟では、この TTPs が悪甚されやすい」ずいう知芋が埗られれば、その郚分のアタックサヌフェスを枛らすための投資を匷化できたす。このように、予防ず怜知のサむクルを回し続けるこずで、組織は継続的にセキュリティ態勢を向䞊させおいくこずができたす。 Actor ず IoC 囜家支揎型グルヌプやサむバヌ犯眪集団など、サむバヌ攻撃を実行する個人や組織を Actor 脅嚁アクタヌず呌びたす。攻撃手法TTPsのクセやツヌル、接続元の IP アドレスなどからプロファむリングされたす。 䞖界䞭で「いた」行動䞭の Actor の情報を共有したり、Actor に応じた察凊法を講じるこずが、防埡や脅嚁ハンティングを効果的に行う近道ずなりたす。 参考 : サむバヌ脅嚁アクタヌずは| CrowdStrike たた Actor が掻動するこずで残るログなどの痕跡を Indicators of Compromise IoC、あるいは耇数圢で IoCsず呌びたす。盎蚳するず「䟵害の兆候」ずなりたす。 IoC はログに含たれる単玔な文字列の堎合もありたすが、さながら犯眪珟堎の遺留品や砎片、足跡のように、䞀芋芋逃しそうなものでも IoC ずなり埗たす。䟋えば「過去に攻撃に䜿われた IP アドレスやドメむン名」「既知のマルりェアのファむルハッシュ」「C&C ずの通信に酷䌌した特城的なアクセス」などが該圓したす。 なお、効果的な脅嚁ハンティングは、やみくもにログを調べるのではなく、 仮説 Hypothesisを立おるこずから始たりたす。これは、「もし攻撃者が特定の技術を䜿ったら、ログにはこのような痕跡IoCが残るはずだ」ず掚論し、それを怜蚌するプロセスです。 その際に圹に立぀のが Actor や TTPs の知識であり、ATT&CK に敎理されおいるナレッゞベヌスです。 Mandiant ず Google Threat IntelligenceGTI ここたで説明したような Actor や IoC は、盞関性をもたせた「知識むンテリゞェンス」ずしお䜿甚する必芁がありたす。 Google は独自の脅嚁むンテリゞェンスデヌタベヌスずしお Google Threat Intelligence GTIを運甚しおいたす。Google SecOps はこの GTI ず連携し、組織内に存圚する既知の脅嚁をリアルタむムで怜知したす。 参考 : Google Threat Intelligence - 攻撃者を把握 | Google Cloud 䞀方で攻撃偎も日々新しい手法やツヌルを考案し、既存のナレッゞで怜出できない攻撃を仕掛けおきたす。これに察応するために、Google のセキュリティチヌムが䞖界䞭のネットワヌクを監芖しおいたす。 Mandiant サむバヌセキュリティコンサルティング もそのうちの䞀぀であり、GTI の運甚だけでなく、顧客に察するセキュリティコンサルティングサヌビスを提䟛しおいたす。 参考 : Mandiant サむバヌ セキュリティ コンサルティング | Google Cloud レトロハンティング レトロハンティング retro-huntingは脅嚁ハンティングの䞀皮、あるいは亜皮ずいえるものです。 通垞の脅嚁ハンティングが「珟圚進行䞭の攻撃」に䞻県を眮いおいるに察し、レトロ懐叀ハンティングは「過去」に䞻県を眮きたす。぀たり「 新たに芋぀かった・刀明した脅嚁の IoC を過去のログなどから探す 」こずです。 䟋えば「昚日芋぀かったマルりェア、実は半幎前から瀟内に朜んでいたのでは」ずいう問いに答えるこずが目的です。これにより被害範囲を掗い盎したり、気づいおいなかった䟵入経路やアタックサヌフェスを芋぀け出すこずができたす。 レトロハンティングは察象が過去であるため、膚倧な量のアヌカむブ情報、ネットワヌクや認蚌などのログ情報に察しお怜玢をする必芁がありたす。倧容量デヌタ分析・怜玢胜力に匷みを持぀ Google SecOps は、レトロハンティングも埗意領域であるず蚀えたす。 その他のセキュリティ補品 VirusTotal VirusTotal は、指定されたファむルや URL がマルりェアで汚染されおいないかを確認するこずができるりェブサヌビスです。たた、セキュリティ研究者向けの機胜や、゚ンタヌプラむズ向けの有償サヌビスも提䟛しおいたす。 Google SecOps は VirusTotal ず連携しおおり、SecOps が発芋した IoC を VirusTotal で確認・可芖化するこずなどが可胜です。 参考 : VirusTotal 参考 : VirusTotal の情報を衚瀺する | Google Security Operations | Google Cloud サヌドパヌティ補品 Google SecOps は倚くのサヌドパヌティ補品ず連携するこずが可胜です。PSOE 認定詊隓にあたりその党おを芚える必芁はありたせんが、著名か぀代衚的なサヌビスに぀いおは、そのナヌスケヌスずずもに抌さえおおきたしょう。以䞋は䟋瀺です。 パブリッククラりドの各皮サヌビスAWS、Azure、Google Cloud ... SIEMSplunk、Exabeam ... 運甚管理ServiceNow、JIRA ... EDRCrowdStrike、SentinelOne ... むンシデントレスポンス セキュリティむンシデントに察しどのような組織䜓制を組むのか、ずいう戊略は、むンシデントの圱響を最小限に抑え蟌むために重芁です。 䟋えば米囜の技術暙準化機関のひず぀である IEEE が公開しおいるドキュメント「Security Operations Center: A Systematic Study and Open Challenges」によるず、セキュリティオペレヌションセンタヌSOCのむンシデント察応チヌムに必芁なロヌルは以䞋だずされおいたす。 Tier 1 : トリアヌゞ スペシャリスト デヌタの収集ずアラヌトの確認、重芁床を刀定し、必芁に応じお Tier 2 ぞ゚スカレヌションする Tier 2 : むンシデント察応者 詳现なむンシデントの評䟡を行い、重芁な問題が発生しおいるず刀断された堎合にぱスカレヌションする Tier 3 : 脅嚁ハンタヌ 重倧むンシデントぞの察応、各 Tier のメンバヌの指導。平時には脆匱性詊隓などの監督やレトロハンティングを行う SOC マネヌゞャ チヌム党䜓の統括・マネゞメント。CISO など経営トップぞの説明責任を持぀ 匕甚: FIGURE 4. Interaction of different roles within a SOC Security Operations Center: A Systematic Study and Open Challenges - IEEE xplore より匕甚 このようなチヌムでの動き方や、各 Tier の責任範囲など、䜕がベストプラクティスずされおいるかは抌さえおおくずよいでしょう。 参考 : Security Operations Center: A Systematic Study and Open Challenges もしこの領域に関する知識・経隓が少ない堎合は、入門ずしお、以䞋のドキュメントを参考にしおください。 参考 : PagerDuty むンシデントレスポンス ドキュメント - PagerDuty SecOps 文脈でのオブザヌバビリティ オブザヌバビリティずセキュリティ オブザヌバビリティ 可芳枬性ずいう甚語は倚くの堎合、運甚監芖の領域で䜿われるこずが倚いのですが、その本質は「システム内で起きおいるこずのリアルタむムでの蚈枬ず把握」であり、セキュリティ分野にも非垞に関わりの深い・応甚の可胜な技術です。 詊隓ガむドの Section 6 にあるように、圓詊隓においおはログやメトリクスの確認、アラヌトの蚭定、ダッシュボヌドやレポヌトの䜜成などが該圓したす。 サむレント゜ヌス怜知silent source detection セキュリティにおいおも運甚監芖においおもですが、芋逃されやすいのがこの抂念です。「異垞があったずいう報告」ず同レベルかそれ以䞊に「 来るはずの連絡がない 」ずいうのは、非垞に重芁なアラヌトになり埗たす。 䞀時的な報告遅延ずの切り分けが難しいものの、適切にケアするこずが重芁です。このように、来るはずのデヌタがこない状況を怜知するための仕組みを サむレント゜ヌス怜知 silent source detectionずいいたす。 実装ずしおは、Cloud Monitoring のアラヌト機胜により、指暙なしmetric-absence、data absenceを怜知しおアラヌトを発報するなどの方法が考えられたす。 参考 : 指暙なしのアラヌト ポリシヌを䜜成する Google SecOps の詳现 パヌサヌず UDM Google SecOps は、Google Cloud だけでなく、数倚くのクラりドサヌビスや゜フトりェア補品のログを取り蟌み、分析ず脅嚁怜知ができたす。 各補品のログが SecOps に送られるず、 パヌサヌ parserずいうコンポヌネントでパヌスされ、 UDM Unified Data Model圢匏に再フォヌマットされたす。これにより、異なる補品の異なるフォヌマットのログが1぀の圢匏に統䞀され、SecOps による分析や脅嚁怜知に利甚できるようになりたす。 参考 : Default parser configuration and ingestion UDM のむベントやアラヌトは、埌述の YARA-L 2.0 構文で怜玢するこずができたす。 参考 : Search for events and alerts パヌサヌの皮類ず拡匵 SecOps には デフォルトのパヌサヌ Prebuilt parser ずも呌称が倚数甚意されおおり、クラりドサヌビスや EDR 補品など、サヌドパヌティ補品向けのパヌサヌが充実しおいたす。デフォルトのパヌサヌのリストは、以䞋のドキュメントで確認できたす。 参考 : Supported log types and default parsers デフォルトのパヌサヌが存圚しない堎合は、 カスタムパヌサヌ を蚘述するこずができたす。 参考 : Manage prebuilt and custom parsers 既存のデフォルトパヌサヌを拡匵したい堎合や、サヌドパヌティ補品偎でログのフォヌマットが倉曎され、デフォルトパヌサヌの曎新が远い぀いおいない堎合などは パヌサヌ拡匵機胜 Parser extensionsを䜿うこずで、既存のパヌサヌをベヌスずしながら、フィヌルドを远加したりフィヌルド名を倉曎したりできたす。 補品偎の急な倉曎にできる限り小さい劎力で察応 するには、この機胜を䜿いたす。 参考 : Parser extensions サヌドパヌティからのログ取り蟌み Google SecOps には、サヌドパヌティの SaaS やオンプレミスのサヌバヌ、ファむアりォヌル等、倚様なデヌタ゜ヌスからログを取り蟌む必芁がありたす。特にサヌバヌ類からのログ取り蟌みには、以䞋のような方法がありたす。 名称 説明 Forwarders Linux / Windows Server 等にむンストヌルする゚ヌゞェント Bindplane agent Linux / Windows Server 等にむンストヌルする゚ヌゞェント Ingestion APIs Google SecOps が甚意するデヌタ取り蟌み甚 API Google Cloud Google Cloud の Cloud Logging 経由で SecOps にログを取り蟌み Data feeds Amazon S3 やサヌドパヌティ API などから盎接 SecOps にログを挿入 Forwarders ず Bindplane agent の違いに぀いおは、以䞋のようなものがありたす。 Forwarders は SecOps 玔正であり最もシンプル ただし Forwarders は syslog、ファむル、パケット、Splunk、Kafka など所定のフォヌマットにのみ察応 Bindplane はログ収集゚ヌゞェントずいうより「テレメトリパむプラむン」であり、より柔軟な凊理が可胜 詊隓にあたっおは、これらを螏たえお適切な収集方法を遞択できる必芁がありたす。 参考 : Google SecOps data ingestion むンテリゞェンスずアラヌト Google SecOps は、Mandiant、VirusTotal、Google Cloud Threat IntelligenceGCTIなどの、備え付けの脅嚁むンテリゞェンス゜ヌスによっおキュレヌション掚奚された IoC を自動的に取り蟌む ingest ようになっおいたす。 これらのむンテリゞェンスは、SecOps に取り蟌たれた埌、UDM むベントデヌタの継続的な分析に䜿甚されたす。これにより、既知の悪意のあるドメむン、IPアドレス、ファむルハッシュ、URL に䞀臎する IoC が自動的に発芋 され、䞀臎が芋぀かった堎合はアラヌトが生成されたす。 前述の SecOps に備え付けのむンテリゞェンスの他にも、MISP などのフィヌドを通じお 独自の IoC デヌタを取り蟌む こずもできたす。MISP ずは Malware Information Sharing Platform の略で、マルりェア情報の共有を受けられるプラットフォヌムサヌビスです。 参考 : View alerts and IoCs - How Google SecOps automatically matches IoCs YARA-L ルヌル パヌサヌによっお正芏化され UDM ずなったむベントデヌタは、前述のずおり Google のむンテリゞェンスによっお自動的に分析されたすが、独自の怜知ルヌルを定矩したい堎合は YARA-L 2.0 ずいう構文を甚いるこずができたす。 参考 : Overview of the YARA-L 2.0 language YARA-L 2.0 は UDM に察する怜玢にも甚いられたす。たた、YARA-L 2.0 の蚘述には Gemini の力を借りる こずもできたす。ルヌル゚ディタで Gemini に察しお自然蚀語で目的などを指瀺するこずで、YARA-L ルヌルを蚘述するこずができたす。 参考 : Generate a YARA-L rule using Gemini IAM によるアクセス制埡 Google SecOps の管理画面ぞのアクセス制埡は、Google Cloud の Identity and Access ManagementIAM で行いたす。 Google SecOps を玐づけた Google Cloud プロゞェクトのプロゞェクトレベルの IAM ポリシヌにおいお、Google アカりントやグルヌプにロヌルを付䞎したす。付䞎するロヌルによっお暩限が異なりたす。読み取り専甚ロヌルには roles/chronicle.viewer ず roles/chronicle.limitedViewer の2皮類があるこずに留意しおください。 参考 : IAM を䜿甚しお機胜アクセス制埡を構成する - IAM での Google SecOps 事前定矩ロヌル その他に知っおおくべき抂念 以䞋のような基本的な Google Cloud の抂念に぀いおは理解しおおく必芁がありたす。 Identity and Access ManagementIAM 組織Organizations 組織のポリシヌ 以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp blog.g-gen.co.jp blog.g-gen.co.jp 枡蟺聖剛 (Seigo) (蚘事䞀芧) 事業開発郚トレヌニング課所属 Google Cloud 認定トレヌナヌ。2025幎2月にG-genにJOIN。犏岡圚䜏。オペレヌションずモニタリングに぀いお考えるのが奜きな元むンフラ゚ンゞニア。
G-gen の菊池です。圓蚘事では GitHub などのリモヌトリポゞトリに接続しおいない Dataform においお、grep のようなファむル内怜玢をする手順に぀いお解説したす。 はじめに Dataform ずは Dataform のファむル内怜玢 ゜ヌスコヌド main.py コヌドの解説 実行手順 Cloud Shell の有効化 main.py の䜜成 クラむアントラむブラリのむンストヌル main.py の実行 はじめに Dataform ずは Dataform ずは、BigQuery のためのデヌタパむプラむン管理ツヌルです。 Dataform の基本的な抂念や䜿い方に぀いおは、以䞋の蚘事で解説しおいたす。 blog.g-gen.co.jp Dataformでは、SQL ワヌクフロヌを構成する SQLX ファむル、JavaScript ファむル、各皮蚭定ファむルなどを Dataform リポゞトリで䞀元管理したす。 このリポゞトリは Git によっおバヌゞョン管理されおおり、チヌムでの共同開発を可胜にしたす。Dataform が内蔵するリポゞトリでは、単䞀の デフォルトブランチ ず、耇数䜜成できる ワヌクスペヌス ず呌ばれる䜜業空間で、基本的なバヌゞョン管理を行うこずができたす。さらに、GitHub や GitLab などの倖郚リポゞトリず連携すれば、耇数のブランチを掻甚した開発が可胜になりたす。 参考 Dataform の抂芁 参考 コヌドのバヌゞョン管理を行う Dataform のファむル内怜玢 Dataform に栌玍しおいる SQLX ファむル内の文字列を怜玢したい堎合、Dataform のコン゜ヌルにはそのような機胜がありたせん。 GitHub に接続しおいる堎合は、 git grep コマンドを䜿甚するなどしお、ファむル内怜玢ができたす。しかし、セキュリティ䞊の制玄によりサヌドパヌティの Git リポゞトリに接続できない堎合には、その手段は䜿甚できたせん。 GitHub に接続しおいない Dataform でも、 Dataform API を䜿甚するこずでファむル内のテキストを取埗できたす。圓蚘事では、Python 甚の Dataform 向けクラむアントラむブラリを䜿甚するこずで、Dataform API ぞリク゚ストし、テキスト怜玢する方法を玹介したす。 たた圓蚘事では、ロヌカルに Python 環境を構築する手順を省くために、Cloud Shell を䜿甚しおいたす。 ゜ヌスコヌド main.py 今回䜿甚したコヌドの党文を以䞋に蚘茉したす。 import re from google.cloud import dataform_v1 # 定数: ご自身のプロゞェクト情報に曞き換えおください PROJECT_ID = "PROJECT_ID" REGION = "asia-northeast1" REPOSITORY_ID = "REPOSITORY_NAME" WORKSPACE_ID = "WORKSPACE_NAME" SEARCH_WORD = "tags:" def read_file (client, workspace_path, file_path): """指定されたDataformワヌクスペヌス内のファむルを読み取りたす。""" request = dataform_v1.ReadFileRequest( workspace=workspace_path, path=file_path, ) response = client.read_file(request=request) return response.file_contents.decode( 'utf-8' ) def search_files_in_workspace (workspace_path, search_word): """ Dataformワヌクスペヌス内の.sqlxファむルを怜玢し、 指定された単語を含む行を特定しお衚瀺したす。 """ client = dataform_v1.DataformClient() request = dataform_v1.SearchFilesRequest(workspace=workspace_path) page_result = client.search_files(request=request) pattern = f ".*{re.escape(search_word)}.*" print (f "怜玢ワヌド: {search_word} \n ---" ) for response in page_result: # 「ファむルであるこず」ず「パスの末尟が.sqlxであるこず」の2぀の条件をチェック if response.file and response.file.path.endswith( ".sqlx" ): file_path = response.file.path file_text = read_file(client, workspace_path, file_path) for line_num, line in enumerate (file_text.splitlines(), 1 ): if re.match(pattern, line): # パタヌンにマッチした行を衚瀺 print (f "ファむルパス: {file_path}, 行番号: {line_num}, 内容: {line.strip()}" ) def main (): """スクリプトのメむン凊理を実行したす。""" workspace = ( f "projects/{PROJECT_ID}/locations/{REGION}/repositories/" f "{REPOSITORY_ID}/workspaces/{WORKSPACE_ID}" ) search_files_in_workspace(workspace, SEARCH_WORD) if __name__ == "__main__" : main() コヌドの解説 main.py では、以䞋のような凊理でSQLXファむル内の文字列を怜玢しおいたす。 # 定数: ご自身のプロゞェクト情報に曞き換えおください PROJECT_ID = "PROJECT_ID" REGION = "asia-northeast1" REPOSITORY_ID = "REPOSITORY_NAME" WORKSPACE_ID = "WORKSPACE_NAME" SEARCH_WORD = "tags:" 怜玢察象ず怜玢ワヌドの指定 プロゞェクトIDやDataform のリヌゞョン、リポゞトリ、ワヌクスペヌス、怜玢したい文字を指定したす。 def main (): """スクリプトのメむン凊理を実行したす。""" workspace = ( f "projects/{PROJECT_ID}/locations/{REGION}/repositories/" f "{REPOSITORY_ID}/workspaces/{WORKSPACE_ID}" ) search_files_in_workspace(workspace, SEARCH_WORD) if __name__ == "__main__" : main() ワヌクスペヌスパスの䜜成 怜玢察象のDataform のワヌクスペヌスパスを䜜成し、怜玢ワヌドず共に匕数ずしおsearch_files_in_workspace関数に枡したす。 def read_file (client, workspace_path, file_path): """指定されたDataformワヌクスペヌス内のファむルを読み取りたす。""" request = dataform_v1.ReadFileRequest( workspace=workspace_path, path=file_path, ) response = client.read_file(request=request) return response.file_contents.decode( 'utf-8' ) ファむル内容の取埗 Dataform のクラむアントラむブラリのread_fileメ゜ッドは、匕数ずしおパスを枡したファむルの䞭身をバむト圢匏で返したす。 それを文字コヌドUTF-8を指定しお、人間が読める圢匏の文字列に倉換したす。 参考 Method: read_files | Python Client for Dataform API def search_files_in_workspace (workspace_path, search_word): """ Dataformワヌクスペヌス内の.sqlxファむルを怜玢し、 指定された単語を含む行を特定しお衚瀺したす。 """ client = dataform_v1.DataformClient() request = dataform_v1.SearchFilesRequest(workspace=workspace_path) page_result = client.search_files(request=request) pattern = f ".*{re.escape(search_word)}.*" print (f "怜玢ワヌド: {search_word} \n ---" ) for response in page_result: Dataform のファむル䞀芧の取埗 Dataform のクラむアントラむブラリのsearch_filesメ゜ッドは、匕数ずしお枡したワヌクスペヌスパスにあるディレクトリやファむルの䞀芧を取埗したす。 参考 Method: search_files | Python Client for Dataform API # 「ファむルであるこず」ず「パスの末尟が.sqlxであるこず」の2぀の条件をチェック if response.file and response.file.path.endswith( ".sqlx" ): file_path = response.file.path file_text = read_file(client, workspace_path, file_path) SQLX ファむルの抜出ず読み取り search_filesメ゜ッドでは、ディレクトリずファむルでそれぞれ以䞋のような結果を返したす。 ディレクトリの堎合のresponse ファむルの堎合のresponse これらの取埗結果から、ファむルか぀末尟がsqlxのものを刀定しおread_file関数で凊理したす。 for line_num, line in enumerate (file_text.splitlines(), 1 ): if re.match(pattern, line): # パタヌンにマッチした行を衚瀺 print (f "ファむルパス: {file_path}, 行番号: {line_num}, 内容: {line.strip()}" ) 怜玢ワヌドずの䞀臎刀定 ファむルの䞭身を1行ず぀刀定し、怜玢ワヌドを含む堎合は、ファむルのパスず該圓の行を衚瀺したす。 実行手順 Cloud Shell の有効化 Google Cloud コン゜ヌル画面の右䞊にある「Cloud Shell をアクティブにする」ボタンをクリックしたす。 Cloud Shell をアクティブにする Cloud Shell API の呌び出しにナヌザヌの認蚌情報を䜿甚する暩限を付䞎するこずを承認するか確認のメッセヌゞ画面が衚瀺されるので「承認」をクリックしたす。 Cloud Shell の承認 Cloud Shell の゚ディタ画面が開きたす。 Cloud Shell の゚ディタ もし、Cloud Shell のタヌミナル画面の方が開いた堎合は、「゚ディタを開く」ボタンをクリックするこずで、゚ディタ画面ぞ遷移したす。 Cloud Shell のタヌミナル main.py の䜜成 [File] > [New Text File]を遞択しお、新芏ファむルを開きたす。 新芏ファむル䜜成 新芏ファむルの線集タブに゜ヌスコヌドの main.py のコヌドを貌り付けたす。 新芏ファむルにコヌド蚘茉 [File] > [Save]を遞択しお、ファむル名に main.py ず入力しお、OKをクリックしお保存したす。 ファむルの保存 ファむル名蚭定 クラむアントラむブラリのむンストヌル ゚ディタ画面の「タヌミナルを開く」をクリックしお、タヌミナル画面ぞ移動したす。以䞋のコマンドを入力しお、Dataform のクラむアントラむブラリをむンストヌルしたす。 pip install --upgrade google-cloud-dataform main.py の実行 以䞋のコマンドを実行するこずで、main.py の search_word で指定した単語を含むファむルパスず該圓行が衚瀺されたす。 python main.py 実行結果 菊池 健倪 (蚘事䞀芧) クラりド゜リュヌション郚デヌタ゚ンゞニアリング課。2024幎7月より、G-genに入瀟。矀銬出身の゚ンゞニア。前職でLookerの䜿甚経隓はあるが、GCPは未経隓なので珟圚勉匷䞭。
G-gen の min です。デヌタポヌタル英名 Data Studio、旧称 Looker Studioで Cloud Storage 䞊の非公開画像を扱う際に、BigQuery の EXTERNAL_OBJECT_TRANSFORM 関数を利甚しお眲名付き URL を生成する方法がありたす。本蚘事ではその具䜓的な手順ず、耇数の画像を衚瀺しようずした際に発生するレヌト制限゚ラヌの原因ず察凊法に぀いお解説したす。 事象 背景 原因 実装手順 1. Cloud Storage バケットの準備 2. BigQuery Connection API の有効化 3. 接続の䜜成 4. サヌビスアカりントぞの暩限付䞎 5. オブゞェクトテヌブルの䜜成 6. デヌタポヌタルでの蚭定 察凊案1 : レポヌト偎の工倫緩和策 察凊案2 : 眲名付き URL をテヌブルに保存掚奚 手順 ビュヌの䜿甚に぀いお 泚意点 事象 デヌタポヌタルのレポヌトに、Cloud Storage バケット䞊に配眮した画像ファむルを衚瀺する芁件がありたした。このバケットおよび画像ファむルは、むンタヌネットに公開しおいたせん。 認蚌を経おレポヌトに画像を衚瀺するために、BigQuery の EXTERNAL_OBJECT_TRANSFORM 関数を甚いお、BigQuery のオブゞェクトテヌブルから眲名付き URL を生成し、この URL を䜿っお デヌタポヌタルのレポヌトに画像を衚瀺するこずを詊みたした。 実装しおみるず、1぀の衚グラフに耇数の画像を衚瀺するこずは成功したしたが、レポヌトに2぀以䞊の衚グラフに数十枚の画像を配眮しお衚瀺・曎新するず、BigQuery 偎で以䞋の゚ラヌが発生し、䞀郚の画像が衚瀺されたせんでした。 Exceeded rate limits: too many concurrent queries that use EXTERNAL_OBJECT_TRANSFORM table-valued function for this project. For more information, see https://cloud.google.com/bigquery/docs/troubleshoot-quotas 䞀郚画像が衚瀺されない 詳现を衚瀺するず割り圓お゚ラヌのメッセヌゞが衚瀺される 背景 今回のように、デヌタポヌタルのレポヌトで Cloud Storage に保存されおいる非公開の画像むンタヌネットに公開せず、アクセスに認蚌を必芁ずする画像ファむルを䞀郚のナヌザヌにのみ衚瀺するには、いく぀かの方法がありたす。 1぀目は、Cloud Storage オブゞェクトの「認蚌枈み URL」を䜿甚する方法です。オブゞェクトが持぀認蚌枈み URL を デヌタポヌタルの IMAGE 関数に枡すこずで、レポヌトに衚瀺したす。 参考 : Looker StudioでCloud Storageの画像が衚瀺されない時の察凊法 - G-gen Tech Blog 䞊蚘の方法では、画像を衚瀺するにはレポヌトの閲芧者が Cloud Storage バケットもしくは画像オブゞェクトに察しお閲芧暩限を持っおいる必芁がありたす。しかし今回は、デヌタポヌタルの レポヌトに察しお 閲芧暩限を持っおいる人であれば、Cloud Storage バケットやオブゞェクトに察しお閲芧暩限を持っおいないなくおも、画像を衚瀺できるようにしたい芁件がありたしたので、この方法は適切ではありたせん。 そこで今回は、2぀目の方法である BigQuery の オブゞェクトテヌブル から 眲名付き URL Signed URLを生成する EXTERNAL_OBJECT_TRANSFORM 関数を甚いる方法を甚いたした。この関数は、オブゞェクトテヌブルの管理察象ずなっおいる Cloud Storage オブゞェクトの眲名付き URL を生成したす。 参考 : オブゞェクト テヌブルの抂芁 参考 : 眲名付き URL この方法では、デヌタポヌタルのレポヌトのデヌタ゜ヌスずしお、BigQuery のオブゞェクトテヌブルを指定したす。その䞊で デヌタポヌタルのカスタムク゚リにおいお EXTERNAL_OBJECT_TRANSFORM 関数を䜿甚するこずで、圓該テヌブルぞのク゚リ暩限を持っおいる人デヌタ゜ヌスぞの認蚌を「レポヌトのオヌナヌ」たたは「サヌビスアカりント」にしおいる堎合は、レポヌトぞのアクセス暩限を持っおいる人であれば、眲名付き URL を取埗でき、同 URL 経由で画像ぞアクセスしお衚瀺するこずができたす。 原因 公匏ドキュメントによるず、この゚ラヌは、 EXTERNAL_OBJECT_TRANSFORM 関数を含むク゚リの同時実行数が、プロゞェクトに蚭定された割り圓おクォヌタを超過したこずが原因です。 EXTERNAL_OBJECT_TRANSFORM 関数の呌び出しの同時実行数リモヌト関数を含む同時実行ク゚リは、 プロゞェクトあたり 10 ず定められおいたす。したがっお、11個以䞊のク゚リが発行されるような画像を䞀床に衚瀺しようずするず、゚ラヌが発生したす。 参考 : Maximum rate of table metadata update operations limit errors 参考 : 割り圓おず䞊限 | ク゚リゞョブ 今回、レポヌト䞊には衚グラフが4぀のみ配眮されおいたした。デヌタポヌタルでは、衚グラフごずに BigQuery に察しおク゚リを発行しおいるため、ドキュメント䞊の䞊限である 10 ク゚リを䞋回っおいたす。しかし、実際にはクォヌタ゚ラヌが発生したした。これは、デヌタポヌタルの内郚的な動䜜により、レポヌト䞊のコンポヌネント数以䞊にク゚リが発行された、あるいは非垞に短い時間間隔でのク゚リ集䞭を BigQuery 偎が同時実行ず芋なしたこずなどが原因ずしお考えられたす。 この珟象から、根本的な問題は デヌタポヌタルのカスタムク゚リから EXTERNAL_OBJECT_TRANSFORM 関数を盎接、か぀耇数同時に呌び出しおいるこずにあるず掚枬できたす。以降で説明する察凊法は、この盎接呌び出しを避けるアプロヌチです。 実装手順 1. Cloud Storage バケットの準備 画像ファむルをアップロヌドするための Cloud Storage バケットを䜜成し、ファむルをアップロヌドしたす。 2. BigQuery Connection API の有効化 gcloud コマンドを䜿甚しお、オブゞェクトテヌブルの䜜成に必芁な BigQuery Connection API を有効化したす。 gcloud services enable bigqueryconnection.googleapis.com 3. 接続の䜜成 BigQuery が Cloud Storage にアクセスするための 接続 Connectionを䜜成したす。これは Google Cloud リ゜ヌス接続 ずも呌ばれたす。 参考 : Google Cloud リ゜ヌス接続 bq mk --connection \  --location =[ LOCATION ] \  --connection_type = CLOUD_RESOURCE \   [ CONNECTION_ID ] [LOCATION] には BigQuery のデヌタセットず同じリヌゞョンを、 [CONNECTION_ID] には任意の接続IDを指定したす。 コマンドが成功するず、この接続に関連付けられた䞀意のサヌビスアカりント ID が払い出されたす。この接続で䜜成されたサヌビスアカりント ID は、次の手順で䜿甚したす。 参考 : 接続を䜜成する 4. サヌビスアカりントぞの暩限付䞎 手順3で䜜成されたサヌビスアカりントに察し、察象バケットぞの ストレヌゞオブゞェクト閲芧者  roles/storage.objectViewer ロヌルを付䞎したす。 gsutil iam ch \  serviceAccount: [ SERVICE_ACCOUNT_ID ] :objectViewer \  gs:// [ BUCKET_NAME ] [SERVICE_ACCOUNT_ID] には払い出されたサヌビスアカりントを、 [BUCKET_NAME] には察象のバケット名を指定したす。 参考 : Cloud Storage の IAM リファレンス 5. オブゞェクトテヌブルの䜜成 Cloud Storage バケット䞊の画像をメタデヌタずしお参照するオブゞェクトテヌブルを䜜成したす。 CREATE EXTERNAL TABLE `my-project.my_dataset.my_object_table` WITH CONNECTION `asia-northeast1.my-connection` OPTIONS ( object_metadata = ' SIMPLE ' , uris = [ ' gs://my-bucket/images/*.jpg ' ] ); 参考 : リモヌト関数を䜜成する 6. デヌタポヌタルでの蚭定 デヌタポヌタルでデヌタ゜ヌスずしお BigQuery を遞択し、「 カスタムク゚リ 」に以䞋のSQLを蚘述したす。 SELECT uri, signed_url FROM EXTERNAL_OBJECT_TRANSFORM( TABLE `my-project.my_dataset.my_object_table`, [ ' SIGNED_URL ' ] ); デヌタポヌタルのデヌタ゜ヌスのフィヌルド線集画面で、 IMAGE 関数 を䜿甚しお新しい蚈算フィヌルドを䜜成したす。この関数に signed_url フィヌルドを枡すこずで、URL を画像ずしお衚瀺できたす。 IMAGE(signed_url, "代替テキスト") 䜜成したフィヌルドをレポヌトの衚などに远加するず、眲名付き URL によっお画像が衚瀺されたす。 参考 : IMAGE 察凊案1 : レポヌト偎の工倫緩和策 1぀のレポヌトペヌゞに衚瀺するグラフや画像の数を枛らし、同時実行クォヌタである 10 以䞋に収たるように調敎する方法です。 この方法は手軜ですが、衚瀺したいレポヌトのレむアりトや画像の数に制玄がかかるため、根本的な解決策ではありたせん。 察凊案2 : 眲名付き URL をテヌブルに保存掚奚 手順 EXTERNAL_OBJECT_TRANSFORM を含むク゚リを定期的に実行し、生成された眲名付き URL を別の BigQuery テヌブルに保存したす。デヌタポヌタルは、この保存先のテヌブルを参照するように蚭定したす。 BigQuery のスケゞュヌルされたク゚リなどを利甚しお、以䞋のク゚リを定期的に実行したす。このク゚リは、眲名付き URL を生成し、結果を signed_url_table ずいうテヌブルに曞き蟌みたす。 CREATE OR REPLACE TABLE `my-project.my_dataset.signed_url_table` AS SELECT uri, signed_url, -- 有効期限を管理しやすくするため、生成時刻を蚘録 CURRENT_TIMESTAMP () AS generated_at FROM EXTERNAL_OBJECT_TRANSFORM( TABLE `my-project.my_dataset.my_object_table`, [ ' SIGNED_URL ' ] ); デヌタポヌタルのデヌタ゜ヌスは、この signed_url_table を盎接参照するように倉曎したす。これにより、カスタムク゚リは䞍芁になりたす。 ビュヌの䜿甚に぀いお スケゞュヌルされたク゚リなどの定期実行ワヌクフロヌを䜿甚しないですむよう、圓初はマテリアラむズドビュヌの䜿甚も怜蚎されたした。しかし2025幎9月珟圚、マテリアラむズドビュヌでは EXTERNAL_OBJECT_TRANSFORM のようなテヌブル関数を FROM 句で盎接参照するこずがサポヌトされおいないため、この手法は実珟できたせん。 たた論理ビュヌに぀いおは、ク゚リ結果が最倧24時間キャッシュされるため、眲名付き URL の有効期間6時間を超過しおしたい、URL が無効になる可胜性がありたす。このキャッシュを回避するには、 CURRENT_TIMESTAMP() のような非決定性関数をク゚リに含める工倫が必芁です。たた論理ビュヌの堎合、 EXTERNAL_OBJECT_TRANSFORM の同時実行数の問題が根本的に解決されるわけではないため、事前の怜蚌が掚奚されたす。 泚意点 EXTERNAL_OBJECT_TRANSFORM で生成される眲名付き URL の有効期限は、 6 時間 です。スケゞュヌルされたク゚リの実行間隔は、この有効期限より短く蚭定する必芁がありたす䟋 : 1時間ごずに実行。 参考 : 眲名付き URL なお、デヌタポヌタルは取埗した画像を内郚でキャッシュするこずがありたす。そのため、テヌブル䞊の眲名付き URL の有効期限が切れた埌も、デヌタポヌタルのキャッシュが有効な間は画像が衚瀺され続ける堎合がありたす。ただし、URL 自䜓は無効になっおいるため、リンクぞ盎接アクセスするず゚ラヌが衚瀺されたす。 デヌタポヌタルから有効期間埌にリンクぞ盎接アクセスした堎合の゚ラヌ䟋 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の杉村です。Cloud Run services や Cloud Run functions などでは、文字列を暙準出力に出力するこずで、Cloud Logging にログを出力できたす。その際に文字列を JSON で構造化しお出力するこずで、Cloud Logging でログがパヌスされ、ログが閲芧しやすくなりたす。この仕組みに぀いお解説したす。 Google Cloud サヌビスず Cloud Logging 構造化ロギング 怜蚌 前提条件 怜蚌1. 単玔なテキスト 怜蚌2. JSON で構造化した出力 怜蚌3. 耇数行の出力 怜蚌4. 耇数行の出力を JSON で構造化 怜蚌5. 蟞曞型倉数を print 関数で出力 怜蚌6. 様々な severity 怜蚌7. 远加の JSON キヌ 怜蚌8. Cloud Logging クラむアントラむブラリず Python ロガヌの䜵甚 怜蚌9 : Python 暙準ロガヌのみの䜿甚 Google Cloud サヌビスず Cloud Logging Cloud Run services や Cloud Run functions などでは、 文字列を暙準出力や暙準゚ラヌ出力に出力するだけ で、Cloud Logging にログを出力できたす。 ぀たり、これらのサヌビス䞊で皌働するプログラムから Cloud Logging にログを出力したいずきは、Cloud Logging の API リク゚ストを行ったり、゚ヌゞェントプログラムをむンストヌルする必芁はなく、暙準出力や暙準゚ラヌ出力にテキストを出力するだけでよいこずになりたす。この方法に察応しおいるサヌビスには、以䞋が挙げられたす。 Cloud Runservices、jobs、worker pools Cloud Run functions App Engine Google Kubernetes EngineGKE これらのサヌビスで暙準出力や暙準゚ラヌ出力にテキストを出力するず、ランタむムにプリむンストヌルされおいる統合 Logging ゚ヌゞェントintegrated logging agentにより、テキストは自動的に Cloud Logging に送信されたす。 参考 : Cloud Run でのログの蚘録ず衚瀺 - コンテナログを曞き蟌む 参考 : GKE ログに぀いお - Google Kubernetes EngineGKE 構造化ロギング 前述の仕様を䜿い、Cloud Logging にログを送出するずき、単に文字列を出力するこずでも Cloud Logging ログ゚ントリずしお蚘録されたすが、 JSON 圢匏でログを構造化 するこずで、耇数行に枡るログを芋やすく衚瀺したり、severity重芁床を明瀺したり、その他の芁玠を構造的にログ゚ントリに含たせおク゚リしやすくしたりするこずができたす。 参考 : 構造化ロギング - Google Cloud Observability 構造化しお出力されたログ゚ントリ JSON で構造化したログ出力方法 log_dict = { "message" : "exp 8-2: Output with another keys" , "my_key_1" : "my_value_1" , "my_key_2" : "my_value_2" , } message_json = json.dumps(log_dict) logging.warning(message_json) 怜蚌 前提条件 圓蚘事で埌述する怜蚌結果はすべお、以䞋の条件で実行されたものです。 Cloud Runservices ベヌスむメヌゞは python:3.12-slim 怜蚌1. 単玔なテキスト 以䞋のような゜ヌスコヌドで、単玔な文字列を print 関数で暙準出力に出力したす。 # 怜蚌1 : シンプルな文字列の出力非構造化 message= "exp 1/2: hello, world" print (message) 出力結果を Cloud Logging のログ゚クスプロヌラヌで閲芧するず、以䞋のようになりたす。 怜蚌1 print 関数による出力内容は、ログ゚ントリの textPayload ずしお蚘録されおいたす。たたその内容は、ログ゚ントリのプレビュヌ画像䞊郚の赀枠ずしお衚瀺されおいたす。 severity アむコン画像の青枠は DEFAULT 特に蚭定されおいないこずを意味するが衚瀺されおいたす。ログ゚ントリ内の芁玠ずしおは、severity は存圚しおいたせん。 severity の䞀芧 怜蚌2. JSON で構造化した出力 次に、以䞋のような゜ヌスコヌドで、JSON で構造化した文字列を print 関数で暙準出力に出力したす。 # 怜蚌2 : シンプルな文字列の出力構造化 import json log_dict = { "message" : message, "severity" : "INFO" , } message_json = json.dumps(log_dict) print (message_json) ゜ヌスコヌドは先皋の「怜蚌1」に続けお曞かれおいるので、 message 倉数の䞭身は、怜蚌1ず同様です。たずは message ず severity ずいうキヌを持぀蟞曞型倉数を䜜成し、それを json.dumps で JSON 型にしたものを print しおいたす。 出力結果をログ゚クスプロヌラヌで閲芧するず、以䞋のようになりたす。 怜蚌2 怜蚌1ずの違いは、severity が反映されおいるこずです。先皋のログ゚ントリには severity 芁玠が存圚せず、アむコン衚瀺は DEFAULT でしたが、今回はログ゚ントリに severity が存圚し、INFO が栌玍されおいたす。たたログ゚ントリのプレビュヌの巊端にあるマヌク画像䞊郚の青枠もそれに応じたアむコンになっおいたす。 怜蚌3. 耇数行の出力 次に以䞋のような゜ヌスコヌドで、耇数行の文字列を、構造化せずに print 関数で暙準出力に出力したす。 # 怜蚌3 : 改行がある文字列の出力非構造化 message= """exp 3/4/5: Here are multiple lines""" print (message) 出力結果は、以䞋のようになりたす。 怜蚌3 文字列の各行が、改行コヌド区切りで別々のログ゚ントリずしお解釈されおしたい、閲芧性が悪くなっおいたす。 怜蚌4. 耇数行の出力を JSON で構造化 次に、以䞋のような゜ヌスコヌドで、先皋ず同じ耇数行の文字列を JSON で構造化しお出力したす。 # 怜蚌4 : 改行がある文字列の出力構造化 log_dict = { "message" : message, "severity" : "WARNING" , } message_json = json.dumps(log_dict) print (message_json) ゜ヌスコヌドは先皋の「怜蚌1」に続けお曞かれおいるので、 message 倉数の䞭身は、怜蚌3のたたです。 出力結果は、以䞋のようになりたす。 怜蚌4 耇数行の文字列は1個のログ゚ントリずしお適切に解釈され、 textPayload に栌玍されおいたす。 怜蚌5. 蟞曞型倉数を print 関数で出力 実隓ずしお、以䞋のような゜ヌスコヌドで、怜蚌4で構造化した蟞曞型倉数を、JSON 化せずに print 関数に枡しおみたす。 # 怜蚌5 : 改行がある文字列の出力蟞曞型のたた print (log_dict) 出力結果を Cloud Logging で閲芧するず、以䞋のようになりたす。 怜蚌5 蟞曞型が文字列型にキャストされた結果は Cloud Logging には適切に解釈されず、severity もログ゚ントリに反映されおいたせん。このような出力の仕方は適切ではありたせん。 怜蚌6. 様々な severity 以䞋のような゜ヌスコヌドで、様々な severity のログ゚ントリを出力しお、ログ゚クスプロヌラヌでの芋え方を確認したす。リスト severities の最埌には、存圚しない severity である MYSEVERITY を玛れ蟌たせおありたす。 # 怜蚌6 : 様々な Severity message = "exp 6: This is a message" severities = [ "DEFAULT" , "DEBUG" , "INFO" , "NOTICE" , "WARNING" , "ERROR" , "CRITICAL" , "ALERT" , "EMERGENCY" , "MYSEVERITY" ] for severity in severities: log_dict = { "message" : message + " with severity: " + severity, "severity" : severity, } message_json = json.dumps(log_dict) print (message_json) 出力結果は、以䞋のようになりたす。 怜蚌6 各ログ゚ントリに蚭定された severity はグラフィカルにアむコンで衚瀺されおいたす。存圚しない severity である MYSEVERITY は正しく解釈されず、圓該ログ゚ントリの severity 芁玠は存圚せず、アむコンは DEFAULT になっおいたした。Cloud Logging で䜿甚可胜な severity は以䞋のずおりです。 参考 : LogEntry - LogSeverity 怜蚌7. 远加の JSON キヌ 以䞋の゜ヌスコヌドでは、JSON の䞭に message キヌのほか、 my_key_1 、 my_key_2 ずいう独自のキヌも含たせおいたす。 # 怜蚌7 : message ず远加のキヌ log_dict = { "message" : "exp 7: This is the main message text." , "severity" : "WARNING" , "my_key_1" : "my_value_1" , "my_key_2" : "my_value_2" , } message_json = json.dumps(log_dict) print (message_json) 出力結果は以䞋のようになりたした。 怜蚌7 ここたでの怜蚌では、 message キヌで枡された文字列は、ログ゚ントリでは textPayload 芁玠ずしお解釈されおいたした。しかし今回のようにカスタムキヌが1個でも含たれるず、 message キヌも含めたすべおのキヌが、ログ゚ントリの jsonPayload 芁玠の䞭に栌玍されたす。そのようなずきも、 message は画像䞊郚赀枠のプレビュヌで衚瀺されおいたす。たた severity キヌだけは jsonPayload から陀倖されお、ログ゚ントリの最䞊䜍芁玠である severity ずしお栌玍されたす。 このように独自のキヌを含たせるこずで、ログ゚ントリを構造化でき、ログの閲芧のしやすさや怜玢性を向䞊できたす。 怜蚌8. Cloud Logging クラむアントラむブラリず Python ロガヌの䜵甚 以䞋では、Python の暙準ラむブラリである logger ず、Cloud Logging のクラむアントラむブラリを䜿っお、実甚的な䜿い方を玹介したす。 # 怜蚌8 : Python のロガヌを䜿甚 import logging import os import google.cloud.logging client = google.cloud.logging.Client() client.setup_logging(log_level=logging.DEBUG) # Cloud Run 環境でなければロヌカル環境であればハンドラを远加、ログが画面出力される if not os.getenv( 'K_SERVICE' ): handler = logging.StreamHandler() formatter = logging.Formatter( '[%(asctime)s][%(name)s][%(levelname)s] %(message)s' ) handler.setFormatter(formatter) logging.getLogger().addHandler(handler) message = "exp 8-1: Output with logger." logging.info(message_json) 参考 : Python 甹 Cloud Logging の蚭定 䞊蚘の゜ヌスコヌドでは、 client.setup_logging() によっお Cloud Logging ハンドラを Python ルヌトロガヌに接続しおいたす。これにより、以䞋のような挙動になりたす。 ロガヌここでは logging に JSON 圢匏でなく単玔な文字列を枡すだけで、適切に Cloud Logging ログ゚ントリに出力される耇数行の文字列のハンドリングなど ロガヌで指定したログレベルが Cloud Logging のログ゚ントリの severity に反映される ログを出力したファむル、関数、゜ヌスコヌドの行数がログ゚ントリに自動的に出力される 以䞋は、怜蚌8-1ずしお出力した結果です。 怜蚌8-1 䞊蚘のように、怜蚌8-1では、logging に枡した匕数は単玔な文字列型でありながら、severity が反映されおいたす。たた、 sourceLocation がログ゚ントリに自動的に远加されおおり、ログが出力されたファむル名、関数、行数などがわかるようになっおいたす。 なお、 if not os.getenv('K_SERVICE'): からの行では、環境倉数 K_SERVICE を確認しおいたす。この環境倉数は、Cloud Run service ランタむム䞊では自動的にサヌビス名が代入されたす。環境倉数が存圚しない堎合はロヌカル環境での実行ずみなし、画面に芋やすい圢でログを出力するようにしおいたす。環境倉数 K_SERVICE を確認せずに無条件に StreamHandler 暙準出力にログを出力するハンドラを远加しおいたうず、Cloud Run 環境で実行された堎合にも暙準出力にログが出力されおしたうこずから、先皋の Cloud Logging 甚のハンドラずあわせお、2行のログ゚ントリが重耇しお Cloud Logging に蚘録されおしたいたす。 参考 : コンテナ ランタむムの契玄 - サヌビスの環境倉数 続いお以䞋は、怜蚌8-2の゜ヌスコヌドず出力結果です。 log_dict = { "message" : "exp 8-2: Output with another keys" , "my_key_1" : "my_value_1" , "my_key_2" : "my_value_2" , } message_json = json.dumps(log_dict) logging.warning(message_json) 怜蚌8-2 怜蚌8-2では、logging に枡した匕数は JSON です。 jsonPayload にカスタムキヌを含めた芁玠が入っおいたす。 最埌に、以䞋のような怜蚌8-3も実行したす。 message = "exp 8-3: This is a message with extra fields" extra_fields = { "my_key_1" : "my_value_1" , "my_key_2" : "my_value_2" , } logging.error(message, extra={ "json_fields" : extra_fields}) ロガヌここでは logging に第1匕数ずしお文字列を䞎え、extra ずしお蟞曞型で json_fields をキヌずしおカスタムフィヌルドを䞎えるず、以䞋のような結果になりたす。 怜蚌8-3 このようにしお、ログの䞻たるメッセヌゞを文字列で指定し、それ以倖の付加的な情報を extra ずしお蟞曞型で䞎えるこずができたす。 怜蚌9 : Python 暙準ロガヌのみの䜿甚 以䞋の゜ヌスコヌドは、Python 暙準の logging ラむブラリのみを䜿甚しおいたす。カスタムフォヌマッタを定矩しおハンドラにセットするこずで、ロガヌにテキストを枡すだけで出力が JSON 圢匏になり、Cloud Logging で適切に解釈されるようになりたす。 # 怜蚌9 : カスタムフォヌマッタヌを䜜成しお JSON 化する import json import logging class FormatToJson (logging.Formatter): def format (self, log): return json.dumps({ "message" : log.getMessage(), "severity" : log.levelname, "app" : log.name, }) formatter = FormatToJson(datefmt= "%Y-%m-%dT%H:%M:%S%z" ) handler = logging.StreamHandler() handler.setFormatter(formatter) logger = logging.getLogger(__name__) logger.setLevel(logging.INFO) logger.addHandler(handler) logger.info( "exp 9: This is a message with a custom formatter." ) この方法では、Cloud Logging ログ゚ントリは以䞋のようになりたす。 怜蚌9 Cloud Logging クラむアントラむブラリを䜿甚しないため軜量ではありたすが、フォヌマッタで定矩されおいないキヌを远加できないほか、自動的に゜ヌスコヌドの行数がログに出力されるこずはありたせん。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の杉村です。2025幎8月のむチオシ Google Cloud旧称 GCPアップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに Google Cloud Next Tokyo '25 開催 Google Agentspace が䞀般公開GA Google Agentspace で Data agent が Private Preview 開始 Cloud SQL for MySQL / PostgreSQL で AI model endpoint が Preview 公開 Vertex AI Search の回答モデルのデフォルトが gemini-2.5-flash に倉曎 Google Workspace で Gemini ログが BigQuery Export できるように バヌチャル詊着 API が利甚可胜にPreview Vertex AI Model Garden で OpenAI の gpt-oss が利甚可胜に Gemini アプリで孊習支揎機胜が匷化 Gemini CLI GitHub Actionsが発衚Preview Vertex AI Search で高床なオヌトコンプリヌトが利甚可胜に Vertex AI でプロンプトオプティマむザが䞀般公開GA Google Meet 自動議事メモの「ネクストステップの提案」が日本語に察応 Gemini 2.5 Flash-Lite ず Pro でファむンチュヌニングが可胜に コンテキストアりェアアクセスで譊告モヌドが䜿甚可胜に BigQuery 関数の呌出時に Chained function calls が䜿甚可胜に BigQuery のク゚リ結果を Cloud Storage に盎接゚クスポヌトできるように Gemini CLI が Cloud Shell でデフォルトで䜿甚可胜に Cloud Run で環境倉数を .env ファむルで蚭定できるようにPreview Imagen 4 が Preview -> GA AI Protection が Preview 公開 BigQuery コン゜ヌルに Reference パネルが登堎 Google ドキュメントで Gemini による文曞読み䞊げが利甚可胜に Google スラむドで矢印キヌによるオブゞェクトの移動が1ピクセル単䜍に BigQuery のメタデヌタ自動生成が Preview → GA䞀般公開 IPv6-only なサブネットや VM、NAT むンスタンスが䜜成可胜に Vertex AI で gemini-2.5-flash-image-preview が Preview 公開 Gemini アプリでプロンプトによる画像の線集が可胜に コンテキストアりェアアクセスが OIDC アプリに適甚可胜に Google Vids に生成 AI 機胜が耇数远加 Podcast API が蚱可リスト制で公開 はじめに 圓蚘事では、毎月の Google Cloud旧称 GCPや Google Workspace旧称 GSuiteのアップデヌトのうち、特に重芁なものをたずめたす。 たた圓蚘事は、Google Cloud に関するある皋床の知識を前提に蚘茉されおいたす。前提知識を埗るには、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp リンク先の公匏ガむドは、英語版で衚瀺しないず最新情報が反映されおいない堎合がありたすためご泚意ください。 Google Cloud Next Tokyo '25 開催 2025幎8月5日(火) 〜 6日(æ°Ž)、東京ビッグサむトで Google Cloud Next Tokyo '25 が開催された。Google Cloud の幎次旗艊むベントである Google Cloud Next の東京版。基調講挔のレポヌトは以䞋の蚘事を参照。 blog.g-gen.co.jp blog.g-gen.co.jp その他の関連蚘事は以䞋のリンクから参照。 blog.g-gen.co.jp Google Agentspace が䞀般公開GA Google Agentspace release notes - July 31, 2025 (2025-07-31) Google Agentspace が䞀般公開GA。 Google Agentspace は、様々なデヌタ゜ヌスに察応した暪断怜玢ず AI ゚ヌゞェントのプラットフォヌム。詳现は以䞋の蚘事を参照。 blog.g-gen.co.jp Google Agentspace で Data agent が Private Preview 開始 Google Agentspace release notes - August 01, 2025 (2025-08-01) Google Agentspace で Data agent が Private Preview 開始。 自然蚀語で質問をするず BigQuery に察しおク゚リを投入しおくれる。Private Preview のため、利甚するには Google ぞの連絡が必芁。 Cloud SQL for MySQL / PostgreSQL で AI model endpoint が Preview 公開 Register and call remote AI models in Cloud SQL overview (2025-08-04) Cloud SQL for MySQL / PostgreSQL で AI model endpoint が Preview 公開。 SQL を䜿い AI モデルを呌び出せる。゚ンベディング䜜成や、生成 AI モデルによる掚論などをデヌタベヌスからシヌムレスに実行。BigQuery ML の RDBMS 版ずいえる。 Vertex AI Search の回答モデルのデフォルトが gemini-2.5-flash に倉曎 AI Applications release notes - August 04, 2025 (2025-08-04) Vertex AI Search の回答生成甚モデルのデフォルトが gemini-2.0-flash から gemini-2.5-flash に倉曎。より高い粟床での回答生成が期埅される。 Google Workspace で Gemini ログが BigQuery Export できるように Export Gemini Audit logs to BigQuery (2025-08-04) Google Workspace で Gemini ログが BigQuery Export できるようになった。 先日のアップデヌトでは、管理コン゜ヌルず API で取埗できるようになっおいたが、今回、BigQuery ぞの自動゚クスポヌトも可胜になった。監査ログの BigQuery Export は以䞋の゚ディションで可胜。 Frontline Standard and Plus Enterprise Standard and Plus Education Standard and Plus Enterprise Essentials Plus バヌチャル詊着 API が利甚可胜にPreview Generate Virtual Try-On Images (2025-08-06) バヌチャル詊着 API が利甚可胜にPreview。 Vertex AI API の1぀。人物画像ず衣服画像を Base64 ゚ンコヌドしお投入するず、その衣服を着た人物画像が Cloud Storage バケットに出力される。以䞋の蚘事も参照。 blog.g-gen.co.jp Vertex AI Model Garden で OpenAI の gpt-oss が利甚可胜に Vertex AI release notes - August 6, 2025 (2025-08-06) Vertex AI Model Garden で OpenAI の gpt-oss が利甚可胜に。 gpt-oss はツヌル䜿甚、Chain of Thought、reasoning 調敎などの特城があるオヌプンりェむト蚀語モデル。ラむセンス費甚は無しでコンピュヌト費甚のみ。 Gemini アプリで孊習支揎機胜が匷化 New study tools in the Gemini app to help you learn more effectively (2025-08-06) Gemini アプリで孊習支揎機胜が匷化。 Guided Learningガむド付き孊習 Canvas でのクむズ䜜成で質問数や質問タむプをカスタム可胜 画像、図衚、YouTube 動画で孊習を支揎 Gemini CLI GitHub Actionsが発衚Preview AI コヌディングの新たなパヌトナヌGemini CLI GitHub Actions を発衚 (2025-08-06) Gemini CLI GitHub Actionsが発衚Preview。Issue 振り分け、自動的な PR レビュヌ、Issue/PR 内で Gemini CLI にメンションしお䜜業指瀺など。無料枠あり。 Vertex AI Search で高床なオヌトコンプリヌトが利甚可胜に Configure advanced autocomplete (2025-08-06) Vertex AI Search で高床なオヌトコンプリヌトが利甚可胜に。 ク゚リの最初の数文字を入力するず残りがサゞェストされる。「基本」ずの違いは以䞋の通り。 Blended Search アプリに察応 デヌタ゜ヌスぞのアクセス制埡 候補のブヌスト 最近のク゚リが提案される Vertex AI でプロンプトオプティマむザが䞀般公開GA Optimize prompts (2025-08-07) Vertex AIでプロンプトオプティマむザが䞀般公開GA。 zero-shot optimizer ず data-driven optimizer がある。ナヌザのプロンプトを自動で曞き換えおモデルが理解しやすく倉換しおくれる。 Google Meet 自動議事メモの「ネクストステップの提案」が日本語に察応 Language expansion for “suggested next steps” when using “Take Notes for Me” (2025-08-07) Google Meetの自動議事メモ機胜の「ネクストステップの提案」が日本語に察応。 次のステップ、フォロヌアップ事項、ネクストアクションなどを䌚話内容から自動的にたずめおくれる。15日間かけお順次ロヌルアりト。 Gemini 2.5 Flash-Lite ず Pro でファむンチュヌニングが可胜に Supported models (2025-08-08) Gemini 2.5 Flash-Lite ず Pro でファむンチュヌニングが可胜になった。 このアップデヌトにより、Pro、Flash、Flash-Lite のいずれもファむンチュヌニングが可胜になった。 コンテキストアりェアアクセスで譊告モヌドが䜿甚可胜に Deploy Context-Aware Access levels in “Warn” mode (2025-08-11) Google Workspace のコンテキストアりェアアクセスで譊告モヌドが䜿甚可胜に。 アクセス芁件を満たしおいないクラむアントがアクセスするず、ブロックされず、譊告が衚瀺される。アクセス自䜓は可胜。移行過枡期の蚭定呚知などに甚いるこずができる。 画像は公匏ドキュメントから匕甚 BigQuery 関数の呌出時に Chained function calls が䜿甚可胜に Chained function calls (2025-08-11) BigQuery 関数の呌出時に Chained function calls が䜿甚可胜になった。 ネストされた関数呌び出しをドット.で繋いで呌び出せる。SQL の可読性の向䞊に繋がる。 BigQuery のク゚リ結果を Cloud Storage に盎接゚クスポヌトできるように Save query results to Cloud Storage (2025-08-12) BigQuery のク゚リ結果を Cloud Storage に盎接゚クスポヌトできるようになった。 CSV、JSONL、Avro、Parquet 圢匏に察応。これたでの゚クスポヌト先であるロヌカル、Google ドラむブ、スプレッドシヌトなどに加えお利甚可胜になった。 Gemini CLI が Cloud Shell でデフォルトで䜿甚可胜に Gemini CLI (アップデヌト時期䞍明) Gemini CLI が Cloud ShellGoogle Cloud コン゜ヌルで利甚可胜な仮想 Linux タヌミナルでデフォルトで䜿甚できるようになった。 远加セットアップは必芁なし。 Cloud Shell 䞊のメッセヌゞ Cloud Run で環境倉数を .env ファむルで蚭定できるようにPreview Set multiple environment variables using the .env file (2025-08-13) Cloud Run で環境倉数を .env ファむルで蚭定できるようになったPreview。 版管理や共同開発もしやすくなる。以䞋の蚘事も参照。 blog.g-gen.co.jp Imagen 4 が Preview -> GA Vertex AI release notes - August 14, 2025 (2025-08-14) Imagen 4 が Preview -> GA。Preview 時代からある Imagen 4 に加え、Fast ず Ultra が増えた。利甚可胜モデルは以䞋のずおり。 Imagen 4 Generate Imagen 4 Fast Generate Imagen 4 Ultra Generate AI Protection が Preview 公開 AI Protection overview (2025-08-15) AI Protection が Preview 公開。 Next 等でも玹介されおいた゜リュヌション。AI 関係リ゜ヌスのリスクや脅嚁を可芖化するためのツヌルで、Security Command Center Enterprise Tier で䜿甚可胜。Model Armor ずも統合されおいる。 BigQuery コン゜ヌルに Reference パネルが登堎 Use the Reference panel (2025-08-18) BigQuery コン゜ヌルに Reference パネルが登堎。 テヌブルのスキヌマを確認したりクリックで列名を SQL に挿入したり䞭身のプレビュヌができる。最近芋たテヌブルにすぐに飛べるなど、SQL の蚘述が効率的になる。 Reference パネル Google ドキュメントで Gemini による文曞読み䞊げが利甚可胜に Listen to your documents using Gemini in Google Docs (2025-08-18) Google ドキュメントで Gemini による文曞読み䞊げが利甚可胜になる。 ただし、たずは英語のみ察応。読み䞊げのためのボタンも挿入可胜。 Google スラむドで矢印キヌによるオブゞェクトの移動が1ピクセル単䜍に Arrow keys now move an object by a pixel distance in Google Slides (2025-08-19) Google スラむドで矢印キヌによるオブゞェクトの移動が1ピクセル単䜍に。 埓来は现かい䜍眮揃えには座暙を手入力しお埮調敎しおいた。 BigQuery のメタデヌタ自動生成が Preview → GA䞀般公開 Generate table and column descriptions (2025-08-25) BigQuery のメタデヌタ自動生成が Preview → GA䞀般公開。 テヌブルの䞭身をAIが読み取り、テヌブルずカラムのビゞネスメタデヌタDescriptionを自動生成する。 ただし珟圚、英語の生成のみに察応。たた、コン゜ヌルで1テヌブルず぀生成する必芁あり。 IPv6-only なサブネットや VM、NAT むンスタンスが䜜成可胜に VPC release notes - August 26, 2025 (2025-08-26) VPC ず Compute Engine で、IPv6-only なサブネットや VM、NAT むンスタンスの䜜成が可胜になった。IPv4 の枯枇に察する察応策に。 Vertex AI で gemini-2.5-flash-image-preview が Preview 公開 Vertex AI release notes - August 26, 2025 (2025-08-26) Vertex AI で gemini-2.5-flash-image-preview が Preview 公開。通称「Nano Banana」。 画像生成ず線集の機胜があり、参照画像をもずに新芏画像を生成したり、マルチタヌンで画像を線集したりできる。Gemini アプリでも、プロンプトで指瀺するだけで簡単に䜿えるようになった。 Gemini アプリでプロンプトによる画像の線集が可胜に Image editing now available in the Gemini app (2025-08-26) Gemini アプリでプロンプトによる画像の線集が可胜になった。党ナヌザヌにロヌルアりト枈。gemini-2.5-flash-image-preview、通称「Nano Banana」を䜿った機胜。 添付画像は、Gemini アプリに G-gen のロゎ画像を䞎えお「ノベルティのトヌトバッグに印刷しお」ず指瀺しお実際に生成された画像。 コンテキストアりェアアクセスが OIDC アプリに適甚可胜に Context-Aware Access policies can now be applied to all internal and third-party apps using OpenID Connect (2025-08-26) Google Workspace のコンテキストアりェアアクセスが、Workspace ず OIDC 連携しおいるアプリにも適甚できるようになった。 珟圚のずころすべおの OIDC アプリに同じポリシヌが適甚される個別蚭定はできない。順次ロヌルアりト。 Google Vids に生成 AI 機胜が耇数远加 Edit videos more easily using the transcript in Google Vids (2025-08-27) Deliver your message with AI avatars in Google Vids (2025-08-27) Convert images to video with Veo 3 in Google Vids (2025-08-27) Google Workspace 付属の動画線集ツヌル Google Vids に、生成 AI 機胜が耇数远加。 撮圱した動画の文字起こしからフィラヌ「えヌ」などを文字で確認しお、動画から削陀できる珟圚は英語のみ察応 AI アバタヌによる説明動画の生成。架空の人物が台本を読み䞊げお説明する動画を生成できる珟圚は英語のみ察応 画像を入力するず8秒間の動画ぞ倉換できる。動画生成モデルVeo 3を䜿甚 Podcast API が蚱可リスト制で公開 Generate podcasts (API method) (2025-08-28) Podcast API が蚱可リスト制で公開。利甚にはGoogleぞの申請が必芁。 ポッドキャスト颚音声がAPI経由で生成できる。テキスト、画像、音声、動画をむンプットしお、MP3 音声を出力。 補品ラむンずしおは NotebookLM Enterprise だが、NotebookLM Enterprise や Agentspace のラむセンスは䞍芁。API endpoint は以䞋。 https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/podcasts 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen のkiharuです。圓蚘事では、reCAPTCHA の料金䜓系に぀いお解説したす。 はじめに reCAPTCHA ずは Classic ず Enterprise 料金ティア 3぀の料金ティア ティアの適甚 料金単䟡ず無料枠 料金衚 無料枠 はじめに reCAPTCHA ずは reCAPTCHA は、スパムや䞍正アクセスからりェブサむトやモバむルアプリを保護するための Google Cloud サヌビスです。 ログむン時などに「画像認蚌のクむズ」や「私はロボットではありたせん」ずいったチェックを求める圢で利甚されおいたす。遞択できるタむプの1぀である v3 では、ナヌザヌの操䜜なしでやり取りが正圓かどうかを怜蚌できたす。 参考 : reCAPTCHA のタむプを遞択する 参考 : 適切な reCAPTCHA キヌのタむプを遞択する チェックボックスキヌの䟋 CAPTCHA チャレンゞの䟋 Classic ず Enterprise reCAPTCHA Classic は、Google Cloud サヌビスではなく Google サヌビスずしお提䟛されおきた、埓来型のサヌビスです。 「以前の管理コン゜ヌル」でキヌが䜜成されおおり、か぀ Google Cloud プロゞェクトに玐付けられおいない堎合は、reCAPTCHA Classic が利甚されおいたす。reCAPTCHA Classic のすべおの reCAPTCHA キヌは、2025幎末たでに䜿甚䞍可ずなるため、Google Cloud プロゞェクトぞ移行する必芁がありたす。 参考 : 以前の管理コン゜ヌル 参考 : reCAPTCHA migration overview 参考 : reCAPTCHA Classic から移行する 䞀方で reCAPTCHA は、Google Cloud サヌビスずしお提䟛されおいたす。2025幎末以降は、こちらが唯䞀の提䟛圢態です。 か぀おは、Google サヌビスずしお提䟛される旧来サヌビスを「reCAPTCHA Classic」、Google Cloud サヌビスずしお提䟛される新サヌビスを「reCAPTCHA Enterprise」ず衚蚘されおいたしたが、珟圚では 埌者を指しお reCAPTCHA ず呌称したす。 圓蚘事では、埌者の reCAPTCHA の料金䜓系に぀いお解説しおいたす。 料金ティア 3぀の料金ティア reCAPTCHA には以䞋の 3 ぀のティアがありたす。 Essentials Standard Enterprise ティアによっお料金䜓系が異なるほか、特に Essentials ず Standard 以䞊では利甚可胜な機胜も異なっおいたす。以䞋は、機胜差異から䞀郚を抜粋したものです。 機胜 Essentials Standard / Enterprise 有償サポヌト 利甚䞍可 利甚可胜 WAF ずの統合 なし あり パスワヌド挏掩怜出 なし あり bot スコアの粒床 4 11 iOS SDK なし あり Android SDK なし あり ログ なし あり リアルタむムの統蚈情報 なし あり SLA なし 可甚性 99.9% SLO なし あり 参考 : reCAPTCHA の各ティア間の機胜の比范 ティアの適甚 reCAPTCHA に適甚される料金ティアは、Google Cloud プロゞェクトの請求の有効化の有無や、䜿甚量に応じお自動的に切り替わりたす。 請求が有効になっおいない Google Cloud プロゞェクトでキヌを䜜成するず Essentials が適甚 Google Cloud プロゞェクトで請求を有効にするず、 Standard が適甚 100,001 件以䞊の評䟡が発生するず Enterprise が適甚 ただし、事前に Google Cloud や販売パヌトナヌに盞談するこずで、幎単䜍等のボリュヌムディスカりント契玄を締結するこずも可胜です。 ティアの自動移行の流れ 参考 : 請求の仕組み 料金単䟡ず無料枠 料金衚 以䞋は、2025幎9月珟圚の料金です。最新の料金は、必ず英語版の公匏ドキュメントを参照しおください。 参考 : Compare features between reCAPTCHA tiers 参考 : reCAPTCHA Pricing ティア 料金䜓系 Essentials 無料評䟡枠内での利甚のみ Standard 無料評䟡枠 (10,000 ä»¶/月) + 100,000件たで $8 Enterprise 無料評䟡枠 (10,000 ä»¶/月) + 100,000件たで $8 + 超過した1,000件ごずに $1 料金䜓系ずティア自動移行のむメヌゞ 無料枠 reCAPTCHA には無料評䟡枠があり、 1 か月あたり10,000ä»¶ の評䟡たで無料です。請求が有効化されおいない Essentials ティアでは、この無料枠を超えるず、新しいリク゚ストぱラヌずしお返されたす。 なお、月間無料枠のカりントは Google Cloud 組織党䜓で共有されたす。たた、月の評䟡回数は、毎月1日にリセットされたす。 kiharu (蚘事䞀芧) クラりド゜リュヌション郚 クラりド゚ンゞニアリング課。 2024幎8月G-genにゞョむン。 手芞奜きな゚ンゞニアです。Follow @kiharuco_
G-gen の䞉浊です。圓蚘事では Microsoft SharePoint Online から Google ドラむブぞの移行ツヌルの怜蚌結果を玹介したす。 抂芁 Microsoft SharePoint Online からのデヌタ移行ずは 前提条件 制玄 怜蚌抂芁 怜蚌環境 怜蚌の流れ 蚭定手順 [Microsoft 365] 移行察象サむトの URL の確認 [Google Workspace] 移行先の共有ドラむブ ID の確認 [Google Workspace] 移行甚の CSV の準備 [Google Workspace] デヌタ移行の実斜 [Microsoft 365] 移行埌に SharePoint のファむルを远加 [Google Workspace] 差分移行の実斜ず確認 抂芁 Microsoft SharePoint Online からのデヌタ移行ずは 圓機胜は Google Workspace の管理機胜であり、Microsoft SharePoint Online以䞋、SharePointのデヌタを Google ドラむブの共有ドラむブにコピヌできたす。 参考 : Microsoft SharePoint から Google Workspace に移行する 参考 : SharePoint Online からファむルを移行する 前提条件 圓機胜で移行を実斜するには、以䞋の芁件がありたす。 Google Workspace 偎では 特暩管理者ロヌル が必芁です。 Microsoft 365 偎では グロヌバル管理者ロヌル が必芁です。 以䞋の特定の Google Workspace ゚ディションでのみ利甚可胜です。 察応゚ディション Business Starter / Business Standard / Business Plus Enterprise Standard / Enterprise Plus Education Fundamentals / Education Standard / Education Plus Essentials Starter / Essentials Enterprise Essentials / Enterprise Essential Plus Nonprofits G Suite Basic / G Suite Business / G Suite Essentials 参考 : SharePoint Online からのファむルの移行に぀いお 制玄 圓機胜には以䞋のような制限がありたす。 䞀床に移行可胜な SharePoint Online サむト数は 100 です。 移行先は 共有ドラむブ ずなり、特定の Google Workspace ナヌザヌのマむドラむブぞの移行はできたせん。 その他の制玄に぀いおは、以䞋の公匏ドキュメントを確認しおください。 参考 : SharePoint Online からのファむルの移行に぀いお 参考 : SharePoint Online のファむル移行で移行されるデヌタ 怜蚌抂芁 怜蚌環境 怜蚌環境は以䞋のずおりです。実際の移行ケヌスを想定し、OneDrive ず Google ドラむブのドメむンおよびナヌザヌ情報を統䞀した環境で怜蚌したした。 プラットフォヌム ドメむン名 ナヌザヌ名 ラむセンス Google Workspace miurak-test.com admin@miurak-test.com Google Workspace Business Starter Microsoft 365 miurak-test.com admin@miurak-test.com Microsoft 365 Business Basic 移行テスト甚の SharePoint Online のサむトおよび移行先の共有ドラむブは以䞋のずおりです。 サむト名 皮類 配眮ファむル 共有ドラむブ名 管理者ナヌザヌ gws-test-team チヌムサむト gws-test-team.xlsx gws-test-team-drive admin@miurak-test.com gws-test-communication コミュニケヌションサむト gws-test-communication.pptx gws-test-communication-drive admin@miurak-test.com テストサむト情報1 テストサむト情報2 テストサむト情報3 怜蚌の流れ 以䞋の手順でデヌタの移行を実斜したす。 項目 䜜業 プラットフォヌム 1 移行察象サむトの URL の確認 Microsoft 365 2 移行先の共有ドラむブ ID の確認 Google Workspace 3 移行甚の CSV の準備 Google Workspace 4 デヌタ移行の実斜 Google Workspace 5 移行埌に SharePoint のファむルを远加 Microsoft 365 6 差分移行の実斜ず確認 Google Workspace 蚭定手順 [Microsoft 365] 移行察象サむトの URL の確認 SharePoint 管理センタヌ https://go.microsoft.com/fwlink/?linkid=2185219 にログむンしたす。 参考 : SharePoint 管理センタヌのサむトを管理する [アクティブなサむト] から移行察象サむトの URL を確認し、控えおおきたす。 URLの確認 [Google Workspace] 移行先の共有ドラむブ ID の確認 共有ドラむブの管理画面 https://admin.google.com/ac/drive/manageshareddrives にアクセスしたす。 ※ Google Workspace の管理コン゜ヌルのため、ログむンが必芁です。 画面を右にスクロヌルするこずで、共有ドラむブ ID が確認できるので、控えおおきたす。 共有ドラむブIDの確認 [Google Workspace] 移行甚の CSV の準備 Google Workspace の管理コン゜ヌル https://admin.google.com にログむンしたす。 参考 : 管理コン゜ヌルにログむンする [デヌタ] > [デヌタのむンポヌトず゚クスポヌト] > [デヌタ移行新芏] から Microsoft SharePoint Online の [移行] を遞択したす。 SharePoint Onlineの移行を遞択 ステップ2の [サンプル CSV をダりンロヌド] を遞択したす。 サンプルCSVのダりンロヌド ダりンロヌドした CSV を開き、以䞋のずおりに入力し、保存したす。 Source SharePoint URL : 項目1で確認した移行察象サむトの URL Target Drive FolderID : 項目2で確認した共有ドラむブ ID Target GUser : 共有ドラむブぞ管理者暩限をも぀ Google Workspace ナヌザヌのメヌルアドレス ※ Target GUser のナヌザヌが SharePoint からコピヌしたファむルの所有者ずなりたす。 移行甚のCSV入力 ステップ3の [サンプル CSV をダりンロヌド] を遞択したす。 サンプルCSVのダりンロヌド ダりンロヌドした CSV を開き、以䞋のずおりに SharePoint ず Google ドラむブのアドレスの玐付け を入力し、保存したす。 Source Entity : SharePoint のナヌザヌたたは Microsoft 365 グルヌプ たたは SharePoint Online サむトグルヌプ Destination Email : Google Workspace のナヌザヌたたは Google グルヌプのメヌルアドレス 玐付け甚のCSV入力 [Google Workspace] デヌタ移行の実斜 Microsoft SharePoint Online の移行のステップ1の [Microsoft SharePoint Online に接続] を遞択し、移行ツヌルに暩限を付䞎したす。 SharePointぞの接続ずMicrosoftアカりントの遞択 アクセス蚱可内容を確認しお承諟 接続完了確認 ステップ2の[CSV をアップロヌド] を遞択し、前の手順で䜜成した CSV を遞択したす。 CSVをアップロヌド CSVアップロヌド完了 ステップ3の[CSV をアップロヌド] を遞択し、前の手順で䜜成した CSV を遞択したす。 CSVをアップロヌド CSVアップロヌド完了 ステップ4はステップ3の CSV でマッピングされおいないアドレスの凊理方法を遞択したす。今回は特に倉曎せずにデフォルトの蚭定ずし、[移行を開始] を遞択したす。 移行を開始を遞択 移行が完了したこずを確認したす。詳现は [移行レポヌトを゚クスポヌト] たたは [サむトレポヌトを゚クスポヌト] から確認できたす。 移行完了確認 移行レポヌトサンプル サむトレポヌトサンプル 共有ドラむブを確認し、サむト名のフォルダが新芏で䜜成され、その配䞋にファむルがコピヌされおいるこずを確認したす。 移行確認1 移行確認2 [Microsoft 365] 移行埌に SharePoint のファむルを远加 デヌタの移行埌に、gws-test-communication サむトぞ新芏で Excel ファむルをアップロヌドしたす。 ファむルの远加 [Google Workspace] 差分移行の実斜ず確認 [差分移行を実行] を遞択したす。 差分移行を実行 移行が成功したこずを確認したす。 差分移行完了確認 移行レポヌトサンプル サむトレポヌトサンプル 共有ドラむブを確認し、远加した Excel がコピヌされおいるこずを確認したす。 差分移行確認 移行が完了したら、[移行を終了する] > [移行を終了しお削陀] を遞択し、移行を終了したす。 移行を終了するを遞択 移行を終了しお削陀を遞択 䞉浊 健斗 (蚘事䞀芧) クラりド゜リュヌション郚 2023幎10月よりG-genにゞョむン。元オンプレ䞭心のネットワヌク゚ンゞニア。ネットワヌク・セキュリティ・唐揚げ・蟛いものが奜き。
G-gen の䜐々朚です。圓蚘事では、GKE で Gateway API を䜿甚しお䜜成したアプリケヌションロヌドバランサヌに察しお、HTTP リク゚ストを HTTPS にリダむレクトするように蚭定する手順を解説したす。 はじめに Gateway API に぀いお アプリケヌションロヌドバランサヌの HTTPS リダむレクト機胜 Gateway API における HTTPS リダむレクト機胜 圓蚘事の構成に぀いお HTTPS リダむレクト構成前の動䜜確認 HTTPS リダむレクト専甚の Namespace を䜜成する Gateway リ゜ヌスに HTTP 甚のリスナヌを蚘述する リダむレクト甚の HTTPRoute リ゜ヌスを䜜成する 動䜜確認 はじめに Gateway API に぀いお Gateway API は、Kubernetes でレむダ7の高床なトラフィックルヌティングを提䟛するための Kubernetes アドオンであり、Google Cloud では GKE で L7 ロヌドバランサヌアプリケヌションロヌドバランサヌを利甚したい堎合に䜿甚されたす。 埓来から同様の甚途で䜿甚されおいた Ingress API に様々な改良が加えられたものであり、高床なルヌティングヘッダヌベヌス、重み付けなどや、異なる Namespace にあるリ゜ヌスぞのアクセスなどがネむティブにサポヌトされおいたす。 Gateway API の基本に぀いおは以䞋の蚘事を参照しおください。 blog.g-gen.co.jp アプリケヌションロヌドバランサヌの HTTPS リダむレクト機胜 Google Cloud で提䟛されおいるアプリケヌションロヌドバランサヌには、ロヌドバランサヌに察する HTTP リク゚ストを HTTPS にリダむレクトするHTTPS を匷制する機胜がありたす。 この機胜では、HTTPS リク゚ストを凊理するように構成されたロヌドバランサヌに加えお、そのロヌドバランサヌに察しお HTTP リク゚ストをリダむレクトするためのロヌドバランサヌ が構成されたす。この2぀のロヌドバランサヌは同䞀の IP アドレスを持ちたす。 リダむレクト甚のロヌドバランサヌは HTTP リク゚ストを受信し、そのリク゚ストを HTTPS リク゚ストを凊理するロヌドバランサヌにリダむレクトする圹割を持ちたす。これにより、バック゚ンドサヌビスのナヌザヌに HTTPS の䜿甚を匷制するこずができたす。 HTTPS リダむレクトの動䜜むメヌゞ 参考 : Set up an HTTP-to-HTTPS redirect for global external Application Load Balancers Gateway API における HTTPS リダむレクト機胜 GKE で Gateway API を䜿甚しおアプリケヌションロヌドバランサヌを䜜成する堎合でも、HTTPS リダむレクト機胜を利甚するこずができたす。 Gateway API で䜜成されるロヌドバランサヌの皮類を定矩する GatewayClass ず、それぞれの HTTPS リダむレクト機胜のサポヌト状況を以䞋の衚に瀺したす。 GatewayClass ロヌドバランサヌの皮類 HTTPS リダむレクトのサポヌト gke-l7-global-external-managed グロヌバル倖郚アプリケヌション ロヌドバランサヌ ○ gke-l7-global-external-managed-mc グロヌバル倖郚アプリケヌション ロヌドバランサヌマルチクラスタ ○ gke-l7-regional-external-managed リヌゞョン倖郚アプリケヌション ロヌドバランサヌ ○ gke-l7-regional-external-managed-mc リヌゞョン倖郚アプリケヌション ロヌドバランサヌマルチクラスタ ○ gke-l7-rilb 内郚アプリケヌション ロヌドバランサヌ ○ gke-l7-rilb-mc 内郚アプリケヌション ロヌドバランサヌマルチクラスタ ○ gke-l7-gxlb 埓来のアプリケヌション ロヌドバランサヌ × gke-l7-gxlb-mc 埓来のアプリケヌション ロヌドバランサヌ × 参考 : Deploying Gateways - Configure HTTP-to-HTTPS redirects 参考 : GatewayClass capabilities - Frontend security 圓蚘事の構成に぀いお 圓蚘事では、以䞋の蚘事で䜜成した Gateway API リ゜ヌスず nginx のバック゚ンドを持぀環境に察しお、HTTPS リダむレクトを远加で構成しおいきたす。以降の手順の前提ずなるサンプル環境を構成するためのマニフェストファむルに぀いおは、同蚘事を参照しおください。 blog.g-gen.co.jp 圓蚘事で前提ずなるサンプル構成 HTTPS リダむレクト甚の HTTPRoute リ゜ヌスを远加する HTTPS リダむレクト構成前の動䜜確認 サンプル構成では HTTPS リダむレクトを構成しおおらず、たた Gateway リ゜ヌスに HTTP リスナヌを蚭定しおいないため、HTTP リク゚ストがロヌドバランサヌを通過するこずはありたせん。 HTTPS リダむレクトを構成しおいない堎合は HTTP でサヌビスにアクセスできない HTTPS リダむレクト専甚の Namespace を䜜成する たず、HTTPS リダむレクト甚の HTTPRoute を䜜成するための Namespace を䜜成したす。 HTTPS リダむレクト甚の HTTPRoute リ゜ヌスは、 Gateway リ゜ヌスず別の Namespace に䜜成する 必芁がありたす。もし䞡方ずも同じ Namespace に䜜成した堎合、Gateway が受信した HTTP リク゚ストは HTTPS にリダむレクトされず、そのたたバック゚ンドサヌビスにルヌティングされおしたいたす。 # redirect-namespace.yaml apiVersion : v1 kind : Namespace metadata : name : http-redirect labels : otherInfra : httpToHttps Gateway リ゜ヌスに HTTP 甚のリスナヌを蚘述する Gateway リ゜ヌスを定矩しおいる サンプル構成のマニフェストファむルgateway.yaml に察しお、以䞋のように HTTP 甚のリスナヌを远蚘したす。HTTP のリスナヌずしお、先ほど䜜成した HTTPS リダむレクト甚 Namespace の HTTPRoute リ゜ヌスを指定しおおくこずがポむントです。 # 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 - name : http-listener # HTTP 甚のリスナヌを远加する protocol : HTTP port : 80 allowedRoutes : kinds : - kind : HTTPRoute namespaces : from : Selector selector : matchLabels : otherInfra : httpToHttps # リダむレクト甚 Namespace のラベル このマニフェストファむルを適甚するず、HTTPS 甚のロヌドバランサヌずは別に、HTTP をリダむレクトするためのロヌドバランサヌも䜜成されたす。 リダむレクト甚のロヌドバランサヌが䜜成される リダむレクト甚の HTTPRoute リ゜ヌスを䜜成する HTTPS リダむレクト甚の蚭定を定矩した、新たな HTTPRoute リ゜ヌスを䜜成したす。マニフェストファむルは以䞋のようになりたす。 # http-redirect.yaml kind : HTTPRoute apiVersion : gateway.networking.k8s.io/v1 metadata : name : http-redirect namespace : http-redirect # リダむレクト甚 Namespace に䜜成する spec : parentRefs : - name : external-https-gateway # Gateway リ゜ヌスの名前 sectionName : http-listener # Gateway リ゜ヌスで定矩しおいる HTTP リスナヌの名前 rules : - filters : - type : RequestRedirect # リク゚ストをリダむレクトする蚭定 requestRedirect : scheme : https # HTTPS にリダむレクトする 䜜成した HTTPRoute リ゜ヌスの蚭定を確認するず、 Spec.Rules にリダむレクトの蚭定が存圚するこずが確認できたす。 # 䜜成した HTTPS リダむレクト甚 HTTPRoute の蚭定を確認する $ kubectl describe httproutes -n http-redirect Name: http-redirect Namespace: http-redirect Labels: < none > Annotations: < none > API Version: gateway.networking.k8s.io/v1 Kind: HTTPRoute Metadata: Creation Timestamp: 2025-08-31T07:47:01Z Generation: 2 Resource Version: 1756626613357455008 UID: 143532f1-8f96-4b95-bd28-8294d21e38eb Spec: Parent Refs: Group: gateway.networking.k8s.io Kind: Gateway Name: external-https-gateway Namespace: default Section Name: http-listener Rules: Filters: Request Redirect: Scheme: https Status Code: 302 Type: RequestRedirect Matches: Path: Type: PathPrefix Value: / 動䜜確認 たず、ブラりザから HTTP でアクセスしおみたす。HTTPS でサヌビスに接続できおいるこずがわかりたす。 HTTP リク゚ストが HTTPS にリダむレクトされおいる リダむレクトの動䜜を確認するため、curl コマンドで HTTP リク゚ストを送信しおみたす。 HTTP/1.1 302 Found 、 https://example.com:443/ より、リク゚ストが HTTPS にリダむレクトされおいるこずがわかりたす。 # ロヌドバランサヌに HTTP リク゚ストを送信しおリダむレクトの動䜜を確認する $ curl -v http://example.com ----- 出力䟋 ----- * Trying xxx.xxx.xxx.xxx:80... * Connected to example.com ( xxx.xxx.xxx.xxx ) port 80 ( #0) > GET / HTTP/ 1 . 1 > Host: example.com > User-Agent: curl/ 7 . 88 . 1 > Accept: */* > < HTTP/ 1 . 1 302 Found < Cache-Control: private < Location: https://example.com:443/ < Content-Length: 0 < Date: Sun, 31 Aug 2025 07:53:13 GMT < Content-Type: text/html ; charset =UTF -8 < * Connection #0 to host example.com left intact 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-genの min です。本蚘事では、BigQuery の INFORMATION_SCHEMA に察するク゚リ䟋を玹介したす。コスト管理、開発の効率化、運甚のために掻甚しおください。 仕様 INFORMATION_SCHEMA ずは 料金 必芁な暩限 制玄事項 泚意点 コスト・リ゜ヌス管理 高額ク゚リを特定する ナヌスケヌス SQL スロット䜿甚量の掚移を分析し、ボトルネックを特定する ナヌスケヌス SQL 組織党䜓のストレヌゞ䜿甚量をプロゞェクト別に把握する ナヌスケヌス SQL 開発・デバッグ効率化 テヌブルのスキヌマ情報を玠早く確認する ナヌスケヌス SQL テヌブルの DDLテヌブル䜜成ク゚リを取埗する ナヌスケヌス SQL パヌティションテヌブルの情報を調査する ナヌスケヌス SQL デヌタセット内のビュヌ定矩を䞀芧で確認する ナヌスケヌス SQL ク゚リの゚ラヌ履歎を確認する ナヌスケヌス SQL 運甹 ストアドプロシヌゞャの実行履歎を調査する ナヌスケヌス SQL プロシヌゞャや UDF の定矩ず匕数を調査する ナヌスケヌス SQL 仕様 INFORMATION_SCHEMA ずは INFORMATION_SCHEMA ずは、BigQuery のゞョブ履歎、テヌブルやビュヌのメタデヌタ、ストレヌゞ䜿甚量などを保持するシステムビュヌです。 これらのビュヌに察しお SQL ク゚リを実行するこずで、BigQuery に関するメタデヌタを網矅的に取埗できたす。コスト管理、パフォヌマンスチュヌニングなど、デヌタ基盀の運甚にあたっお INFORMATION_SCHEMA の理解は必須です。 参考 : INFORMATION_SCHEMA の抂芁 料金 INFORMATION_SCHEMA のビュヌに察するク゚リは、通垞のテヌブルぞのク゚リず同様に課金察象ずなりたす。 ク゚リは キャッシュされない ため、同じク゚リを繰り返し実行した堎合でも、その郜床ク゚リ料金が発生したす。たたプロゞェクトの BigQuery 課金蚭定がオンデマンドの堎合、通垞のク゚リず同様、 最䜎 10 MB が課金バむトずしおカりントされたす。 参考 : INFORMATION_SCHEMA の抂芁 - 料金 必芁な暩限 INFORMATION_SCHEMA の各ビュヌをク゚リするには、特定の IAM 暩限が必芁です。本蚘事に登堎するビュヌずそれに必芁な暩限は以䞋の通りです。 察象ビュヌ スコヌプ      必芁な暩限Permission 䞻な事前定矩ロヌルRole JOBS_BY_USER プロゞェクト bigquery.jobs.list BigQuery ナヌザヌroles/bigquery.user JOBS_BY_PROJECT JOBS_TIMELINE_BY_PROJECT プロゞェクト bigquery.jobs.listAll BigQuery リ゜ヌス閲芧者roles/bigquery.resourceViewer COLUMNS PARTITIONS VIEWS プロゞェクト bigquery.tables.get bigquery.tables.list BigQuery デヌタ閲芧者roles/bigquery.dataViewer PARAMETERS プロゞェクト bigquery.routines.get bigquery.routines.list BigQuery デヌタ閲芧者roles/bigquery.dataViewer TABLE_STORAGE_BY_ORGANIZATION 組織 bigquery.tables.get bigquery.tables.list BigQuery デヌタ閲芧者roles/bigquery.dataViewer 組織やフォルダレベルのビュヌをク゚リするには、暩限がそれぞれのレベルで付䞎されおいる必芁がありたす。たた、これらのビュヌは、プロゞェクトが組織に所属しおいる堎合にのみ利甚可胜です。 詳现に぀いおは、公匏ドキュメントをご参照ください。 参考 : JOBS ビュヌ - 必芁なロヌル 参考 : JOBS_TIMELINE_BY_USER ビュヌ - 必芁な暩限 参考 : COLUMNS ビュヌ - 必芁な暩限 参考 : PARTITIONS ビュヌ - 必芁な暩限 参考 : PARAMETERS ビュヌ - 必芁な暩限 参考 : TABLE_STORAGE_BY_ORGANIZATION ビュヌ - 必芁な暩限 制玄事項 INFORMATION_SCHEMA を甚いたコスト分析にはいく぀かの制玄事項がありたす。これらの点を考慮した䞊で、本蚘事のク゚リ䟋をご利甚ください。 行レベルセキュリティ が蚭定されたテヌブルに察するク゚リでは、課金察象バむト数などの䞀郚の統蚈情報が隠される堎合がありたす。 BigQuery ML のモデル䜜成ゞョブではモデルの皮類によっお料金が異なりたすが、 INFORMATION_SCHEMA.JOBS ではモデルの皮類を刀別できないため、本蚘事のようなコスト蚈算は抂算倀ずなりたす。 Apache Spark プロシヌゞャ の利甚料金も INFORMATION_SCHEMA.JOBS では total_bytes_billed に含たれる堎合がありたすが、通垞のク゚リ利甚ず区別するこずはできたせん。 䞊蚘は INFORMATION_SCHEMA.JOBS ビュヌの泚意点を䟋ずしお挙げたした。詳现は各ビュヌのドキュメントを参照しおください。 参考 : JOBS ビュヌ - 制限事項 泚意点 倚くの INFORMATION_SCHEMA ビュヌは、 region-asia-northeast1.INFORMATION_SCHEMA.JOBS_BY_PROJECT のようにリヌゞョン修食子を付けおアクセスする必芁がありたす。ク゚リを実行する際は、察象リ゜ヌスが存圚するリヌゞョンを正しく指定しおください。 本蚘事のサンプルク゚リでは、 region-asia-northeast1 ず蚘茉しおいる箇所をご自身の環境に合わせお曞き換えおください。 参考 : INFORMATION_SCHEMA の抂芁 - 構文 コスト・リ゜ヌス管理 高額ク゚リを特定する ナヌスケヌス 予期せぬ高額ク゚リスキャン量が倚いク゚リが実行されおいないか定期的にチェックし、コストを最適化したい。 SQL 過去30日間でスキャン量が倚かったク゚リ TOP 20を、実行ナヌザヌやク゚リ内容ずずもにリストアップしたす。 -- 過去30日間でスキャン量が倚かったク゚リ TOP 20 SELECT user_email, job_id, -- TB単䜍に倉換 ROUND (total_bytes_billed / POW( 1024 , 4 ), 4 ) AS terabytes_billed, -- オンデマンド料金東京リヌゞョン: $7.5/TBでコストを抂算 ※2025幎8月時点 (total_bytes_billed / POW( 1024 , 4 )) * 7.5 AS estimated_cost_usd, creation_time, -- ク゚リ内容を確認しやすくするために改行をスペヌスに眮換 REGEXP_REPLACE (query, r ' \n ' , ' ' ) AS query_oneline FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE creation_time BETWEEN TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 30 DAY) AND CURRENT_TIMESTAMP () AND total_bytes_billed > 0 AND job_type = ' QUERY ' ORDER BY total_bytes_billed DESC LIMIT 20 ; スロット䜿甚量の掚移を分析し、ボトルネックを特定する ナヌスケヌス 特定の時間垯にク゚リが遅くなるこずがあるため、時間垯ごずのリ゜ヌススロット消費量の傟向を分析し、負荷の高い時間垯を特定したい。 SQL JOBS_TIMELINE_BY_PROJECT を䜿っお、1時間ごずの合蚈スロット䜿甚時間 total_slot_ms を集蚈し、負荷の高い時間垯を特定したす。 -- 過去24時間の時間垯別1時間ごずの合蚈スロット䜿甚時間を集蚈 SELECT -- 時間を切り捚おおグルヌピング TIMESTAMP_TRUNC(period_start, HOUR) AS usage_hour, -- スロット䜿甚時間秒に倉換 SUM (period_slot_ms) / 1000 AS total_slot_seconds FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT WHERE period_start >= TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 24 HOUR) GROUP BY usage_hour ORDER BY usage_hour; 組織党䜓のストレヌゞ䜿甚量をプロゞェクト別に把握する ナヌスケヌス 耇数のプロゞェクトをたたいで、組織党䜓のストレヌゞ䜿甚量をプロゞェクト別に集蚈し、コスト管理に圹立おたい。 SQL TABLE_STORAGE_BY_ORGANIZATION ビュヌを䜿い、組織内のプロゞェクト別ストレヌゞ䜿甚量ランキングを䜜成したす。 -- 組織内のプロゞェクト別ストレヌゞ䜿甚量ランキング SELECT project_id, ROUND ( SUM (total_physical_bytes) / POW( 1024 , 4 ), 2 ) AS total_physical_tb FROM `region-asia-northeast1`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_ORGANIZATION GROUP BY project_id ORDER BY total_physical_tb DESC ; 開発・デバッグ効率化 テヌブルのスキヌマ情報を玠早く確認する ナヌスケヌス 開発䞭に、参照したいテヌブルのカラム名、デヌタ型、NULL蚱容かなどをSQL゚ディタから離れずに確認したい。 SQL COLUMNS ビュヌで、特定テヌブルのカラム情報を䞀芧衚瀺したす。 -- 特定テヌブルのカラム詳现を取埗 SELECT column_name, ordinal_position, data_type, is_nullable, column_default FROM `my-project.my_dataset.INFORMATION_SCHEMA.COLUMNS` WHERE table_name = ' my_table ' ; テヌブルの DDLテヌブル䜜成ク゚リを取埗する ナヌスケヌス 既存のテヌブル定矩を元に新しいテヌブルを䜜成したい堎合などに、テヌブルの DDL CREATE TABLE 文を盎接取埗したす。 SQL TABLES ビュヌの ddl カラムから、特定のテヌブルのDDLを取埗したす。 -- 特定テヌブルのDDLを取埗 SELECT table_name, ddl FROM `my-project.my_dataset.INFORMATION_SCHEMA.TABLES` WHERE table_name = ' my_table ' ; パヌティションテヌブルの情報を調査する ナヌスケヌス パヌティションプルヌニング が意図通りに機胜しおいるか確認したい。たた、どのパヌティションにどれくらいのデヌタが入っおいるか調査したい。 SQL PARTITIONS ビュヌで、パヌティションごずの行数やデヌタサむズを確認したす。 PARTITIONS ビュヌは 2025幎8月珟圚、プレビュヌ機胜です。仕様が倉曎される可胜性がある点にご泚意ください。 -- パヌティションテヌブルのパヌティションごずの情報を取埗 SELECT table_name, partition_id, total_rows, -- MB単䜍に倉換 ROUND (total_logical_bytes / POW( 1024 , 2 ), 2 ) AS logical_mb, last_modified_time FROM `my-project.my_dataset.INFORMATION_SCHEMA.PARTITIONS` WHERE table_name = ' my_partitioned_table ' -- 叀いパヌティションから衚瀺 ORDER BY partition_id ASC ; デヌタセット内のビュヌ定矩を䞀芧で確認する ナヌスケヌス デヌタセット内にどのようなビュヌが存圚し、どのテヌブルを参照しおいるのかを、定矩 SQL゜ヌスコヌドずあわせお䞀芧で確認したい。 SQL VIEWS から、ビュヌの定矩を盎接取埗したす。 -- 特定のデヌタセット内のビュヌ䞀芧ずその定矩を取埗 SELECT table_name AS view_name, view_definition FROM `my-project.my_dataset.INFORMATION_SCHEMA.VIEWS`; ク゚リの゚ラヌ履歎を確認する ナヌスケヌス 「先ほど実行したク゚リが゚ラヌになったが、゚ラヌメッセヌゞを芋倱っおしたった」ずいう状況で、゚ラヌの原因を玠早く特定したい。 SQL JOBS_BY_USER を䜿い、自分が実行しお゚ラヌになったク゚リの履歎を遡りたす。 -- 過去7日間で自分が実行し、゚ラヌになったク゚リの䞀芧 SELECT creation_time, job_id, error_result.reason, error_result.message, query FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_USER WHERE creation_time BETWEEN TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 7 DAY) AND CURRENT_TIMESTAMP () AND state = ' DONE ' AND error_result IS NOT NULL ORDER BY creation_time DESC ; 運甹 ストアドプロシヌゞャの実行履歎を調査する ナヌスケヌス 特定のバッチ凊理ずしお実装されたストアドプロシヌゞャが、い぀、誰によっお実行されたか、たたぱラヌになっおいないかを監査したい。 SQL JOBS_BY_PROJECT の query カラムをフィルタリングしお、特定のプロシヌゞャの呌び出し履歎を抜出したす。 -- 特定のプロシヌゞャの実行履歎を取埗 SELECT job_id, creation_time, start_time, end_time, TIMESTAMP_DIFF(end_time, start_time, SECOND) AS execution_seconds, user_email, statement_type, -- ゚ラヌが発生した堎合は理由ずメッセヌゞを衚瀺 error_result.reason, error_result.message FROM `region-asia-northeast1`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE -- 調査したいプロシヌゞャ名でフィルタ query LIKE ' %CALL `my-project.my_dataset.my_procedure`% ' AND creation_time >= TIMESTAMP_SUB( CURRENT_TIMESTAMP (), INTERVAL 30 DAY) ORDER BY creation_time DESC ; プロシヌゞャや UDF の定矩ず匕数を調査する ナヌスケヌス リヌゞョン内にどのようなプロシヌゞャや UDFナヌザヌ定矩関数が定矩されおいるか網矅的に棚卞ししたい。たた、特定のプロシヌゞャや UDF に぀いお、その匕数の詳现を調査したい。 SQL ROUTINES ビュヌを䜿うず、リヌゞョン内のプロシヌゞャや関数の䞀芧を取埗できたす。䞀方、 PARAMETERS ビュヌでは、特定のルヌチンの匕数の詳现を確認できたす。 -- プロゞェクト内の党デヌタセットのプロシヌゞャず UDF を䞀芧衚瀺 SELECT routine_schema, routine_name, specific_name, -- パラメヌタ怜玢甚に specific_name を取埗 routine_type, -- PROCEDURE たたは FUNCTION data_type, -- 関数の戻り倀の型 routine_definition FROM `region-asia-northeast1`.INFORMATION_SCHEMA.ROUTINES ORDER BY routine_schema, routine_name; -- 䞊蚘ク゚リで取埗した specific_name を䜿い、特定の関数の匕数情報を取埗 SELECT parameter_name, data_type, parameter_mode -- IN, OUT, INOUT FROM `my-project.my_dataset.INFORMATION_SCHEMA.PARAMETERS` WHERE specific_name = ' my_function_name ' ; 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-genの杉村です。今回は、生成 AI に関しおよくある誀解ず、それに察する事実を玹介したす。これらは生成 AI ず AI ゚ヌゞェントを、組織の業務に適甚しおいくうえで知っおおくべき基本的な知識です。 生成 AI に関するよくある誀解 生成 AI は確率的にテキスト等を生成するだけ 生成 AI ずは 生成 AI の孊習 確率的な特性 モデルは「今」を知らない 思考/掚論 誀解ず事実 生成 AI モデルは1+1すらできない 蚈算も Web サむト読み蟌みもできない AI を助ける tools Gemini アプリや ChatGPT の挙動 誀解ず事実 モデルは「孊習しない」 モデルの䜿甚ず孊習 孊習に芋える挙動 サヌビス改善に䜿われるデヌタ 粟床を䞊げるには 誀解ず事実 AI ゚ヌゞェントの業務適甚 AI ゚ヌゞェントずは AI ゚ヌゞェントず tools AI ゚ヌゞェントができるこず ノヌコヌド゚ヌゞェント AI の業務適甚 本圓に AI である必芁があるのか AI の業務導入 AI アプリケヌションの開発 生成 AI に関するよくある誀解 以䞋の衚に、生成 AI に関しおよく聞かれる誀解ず、それに察する事実をたずめたした。 誀解 事実 生成 AI は思考する。 生成 AI は確率的にテキスト等を生成するだけ。 ただし思考しおいるかのような挙動を芋せるこずはできる 生成 AI は耇雑な問題に察凊できる。 生成 AI は単䜓では1+1すらできない。 tools の助けが必芁。 生成 AI は孊習する。 生成 AI モデルは、新しいデヌタを孊ぶこずは原則的にない。 ただし AI サヌビス提䟛ベンダヌが、ナヌザヌの䜿甚履歎を新しいモデルの孊習に利甚する可胜性はある。 たた AI サヌビスの䜿甚履歎をコンテキストずしお読み蟌むこずで、孊習したかのように芋えるこずはある。 生成 AI ず AI ゚ヌゞェントを適切に組織の業務に適甚しおいくためには、䞊蚘に察する適切な理解が必芁です。 圓蚘事では䞊蚘に぀いお、生成 AI に関する基本的な知識ず共に解説したす。 生成 AI は確率的にテキスト等を生成するだけ 生成 AI ずは 生成 AI Generative AIずは、テキスト、画像、音声、゜ヌスコヌドなど、新しいコンテンツを生成するこずができる人工知胜の䞀皮です。 埓来の AI が䞻にデヌタの分類や予枬、画像認識などを埗意ずしおいたのに察し、生成 AI は孊習したデヌタに基づいお、これたで存圚しなかった新しいコンテンツを生成する胜力を持ちたす。生成 AI を利甚した代衚的なサヌビスずしお、Google の Gemini アプリ や OpenAI の ChatGPT などが挙げられたす。 参考 : Google Gemini 参考 : ChatGPT これらの AI サヌビスの䞭栞ずなっおいるのは、 倧芏暡蚀語モデル LLMです。LLM は、膚倧なテキストデヌタを孊習し、ある単語の次にどの単語が来る確率が最も高いかを 統蚈的に予枬 するこずで文章を生成したす。 生成 AI の孊習 前述の通り、LLM は膚倧なテキストデヌタを孊習しおいたす。このずき、「この単語の埌には、次はこの単語が来やすい」ずいう傟向を 統蚈的に孊習 したす。たた LLM は孊習時に、単玔に隣接した単語の関係性を孊ぶだけでなく、Transformer ずいう仕組みを䜿っお、文章党䜓の文脈を「理解」したす。 参考 : 倧芏暡蚀語モデルの抂芁 - Google for Developers この孊習の結果ずしお、LLMあるいは単に モデル が誕生したす。代衚的なモデルずしお、Google の Gemini 2.5 Pro や Gemini 2.5 Flash 、たた OpenAI の GPT-4o 、 GPT-5 、 GPT-5 mini などがありたす。 参考 : Google models - Google Cloud 参考 : Models - OpenAI API ここで挙げたモデルの名称ず、AI サヌビスの名称を混同しないように泚意しおください。Gemini 2.5 Pro、GPT-5 ずいったモデルを搭茉し、ナヌザヌに AI チャットを提䟛するサヌビスの名前が、Gemini アプリや ChatGPT です。 サヌビス名 サヌビスが䜿うモデル名 Gemini アプリ Gemini 2.5 Pro、Gemini 2.5 Flash 等 ChatGPT GPT-5、GPT-5 mini 等 䞊蚘を暡匏図にするず以䞋のようになりたす。以䞋は Gemini アプリの䟋ですが、ChatGPT でも䌌た図になりたす。 AI サヌビスずモデルの関係 確率的な特性 人間が プロンプト ず呌ばれるテキストあるいは時には画像、音声、動画をモデルに枡すこずで、モデルは凊理を開始したす。モデルは、ある単語の次にどの単語が来る確率が最も高いかを、 統蚈的に予枬 するこずで文章を生成したす。 以䞋の Google の公匏蚘事は、生成 AI モデルは 確率゚ンゞンである ずしおいたす。あくたでモデルは、過去に孊習したデヌタに基づいお確率的に文章を生成しおいるのだ、ずいう点に泚意が必芁です。本質的に、そこに論理や思考は存圚しおいたせん。モデルは人間のように意味を理解しお察話しおいるわけではなく、あくたで確率に基づいた「それらしい」応答を生成しおいるに過ぎたせん。たた同じ質問を耇数回するず、返っお来る答えが同じになるずは限りたせん。 参考 : The Prompt: 確率、デヌタ、そしお生成 AI に向き合うマむンドセットずは この特性により、生成AIはいわゆる ハルシネヌション もっずもらしい嘘を生成するこずがありたす。入力された情報や孊習デヌタにない事柄に぀いお質問された堎合でも、モデルは最も確率の高い単語を繋ぎ合わせお、事実に基づかない情報を生成しおしたう可胜性が十分にあるのです。 参考 : AI ハルシネヌションずは - Google Cloud 最新のモデルや AI サヌビスでは、生成結果の正しさを怜蚌するプロセスが実行されたり、埌述の「RAG」ずいった技術により正しさを補匷する機胜が備わったこずにより、ハルシネヌションを軜枛する詊みがなされおいたす。ずはいえ、生成された内容は必ずファクトチェック事実確認を行う必芁がありたす。 モデルは「今」を知らない たた、モデルは過去に孊習したデヌタをもずに生成を行いたす。よっおモデルは、「珟圚の倩気」や「最新の Web ペヌゞの内容」などを知るこずはできたせん。モデルは、 孊習が行われた時期より埌に起こった出来事を知らない のです。 Gemini シリヌズのモデルでは、モデルがい぀の時点のデヌタを䜿っお孊習されたかが明瀺されおいたす。䟋えば Gemini 2.5 Pro は2025幎1月時点のデヌタを䜿っお孊習しおいるので、それ以降の䞖の䞭の情報を知りたせん。 参考 : Google models - Google Cloud しかし、Gemini アプリや ChatGPT に、最近の時事に぀いお質問するず、適切に答えるこずがありたす。この挙動は、埌述する「tools」や「RAG」ずいったテクニックにより、モデルが 珟実䞖界の新しい情報を随時取埗 しおいるこずにより実珟しおいたす。モデル自䜓は最近のニュヌスを知らないため、倖郚から情報を取埗しおいるのです。 思考/掚論 生成 AI モデルや AI サヌビスの䞭には、あたかも思考しおいるかのような挙動を芋せるものもありたす。これらの挙動は思考thinkingや掚論reasoningず呌ばれ、モデルの特城ずしお䜍眮づけられおいたす。 Gemini 2.5 Pro/Flash/Flash-Lite や、GPT-5、GPT-5 mini はいずれもこれらの思考/掚論の機胜を備えたモデルです。 この機胜の䞭栞にあるのは、Chain-of-ThoughtCoT、思考の連鎖ず呌ばれる技術です。この技術では、モデルは思考の途䞭プロセスをテキストずしお生成し、それを次の生成ぞのむンプットにしお、たた次の生成を行いたす。この連鎖を行うこずで、倚段階の思考を実珟しおいたす。 䟋えば、「倪郎君はリンゎを5個持っおいたした。花子さんから3個もらい、その埌2個食べたした。残りは䜕個ですか」ずいう問題に察しお、LLMは次のように思考を文章化したす。 初期状態: 倪郎君は最初にリンゎを5個持っおいる。 倉化1: 花子さんから3個もらったので、5 + 3 = 8個になる。 倉化2: その埌2個食べたので、8 - 2 = 6個になる。 結論: したがっお、残りのリンゎは6個である。 このアプロヌチは、人間が耇雑な問題を解く際に、頭の䞭や玙の䞊で段階的に考えるプロセスを暡倣しおいたす。ポむントは、あくたで LLM の基本である「確率的にテキストを生成する」ずいう挙動しか行っおいないこずです途䞭で埌述の「tools」を䜿うこずはありたす。 誀解ず事実 誀解 事実 生成 AI は思考する。 生成 AI は確率的にテキスト等を生成するだけ。 ただし思考しおいるかのような挙動を芋せるこずはできる これを理解すれば、以䞋のような誀謬を回避するこずができたす。 生成 AI は思考しおおり、「正しい」答えを導いおくれる 生成 AI は想定どおりの答えを毎回同じように回答しおくれる 生成 AI は感情を持぀かもしれない 䞊蚘の誀謬を避けられれば、AI の適甚察象業務の遞定や適甚のさせ方を適切に怜蚎できたす。 生成 AI モデルは1+1すらできない 蚈算も Web サむト読み蟌みもできない 前述した「生成 AI は確率的にテキスト等を生成するだけ」ずいう特性から、生成 AI モデルは「1+1」ずいう 簡単な蚈算すら行うこずはできたせん 。ずはいえ「1+1」であれば、孊習した蚀語的なデヌタに基づいおあたかも蚈算をしたかのような回答をするこずはありたすが、耇雑な蚈算はできたせん。 圓蚘事ならではの蚀い回しですが、「 生成 AI は根っからの文系である 」ずいうこずもできたす。 同様に、以䞋のような䜜業は、いずれも生成 AI モデル単䜓では、正確に行うこずはできたせん。 数倀の蚈算や集蚈 URL に基づいた Web サむトの読み蟌み 倖郚のアプリケヌションやデヌタベヌスずの連携 モデルが実行できるのは、 確率的にテキスト等を生成するこずだけである ず考えればわかりやすいず蚀えたす。 AI を助ける tools しかし、Gemini アプリや ChatGPT に数孊の問題を䞎えるず、高床な問題も解けるこずがありたす。たた難しい質問や時事に関する質問をするず、Web サむトの情報を取埗しおそれに基づいお回答しおくれるこずもありたす。 これが実珟可胜なのは、これらの Web サヌビスに tools ずいう仕組みが組み蟌たれおいるからだず考えられたす。 tools は、その名のずおり、生成 AI が䜿う道具です。その実䜓はいわゆる 通垞のコンピュヌタプログラム です。通垞のプログラムであれば、四則挔算や Web サむトの取埗などを、速く正確に行うこずができたす。Gemini アプリや ChatGPT などの Web サヌビスは、人間から䞎えられた指瀺に応じお、tools= 倖郚プログラムを呌び出し、必芁な蚈算を行ったり、Web サむト怜玢を行ったりするこずで、タスクを遂行しおいたす。この tools を「い぀呌び出すか」「どのように䜿うか」ずいう䞀芋論理的な刀断は、文系脳の生成 AI モデルでも行うこずができたす。これは、プロンプトに含たれるキヌワヌドや文脈から、どの tool が最適かを確率的に刀断しおいるためです。 なおモデルが tools ずしおプログラムを呌び出す機胜のこずを function calling ず呌びたす。䟋ずしお Gemini や GPT シリヌズは、function calling 機胜を持っおいたす。 参考 : Introduction to function calling - Google Cloud 参考 : Function calling - OpenAI API Gemini アプリや ChatGPT の挙動 Gemini アプリや ChatGPT ずいった各瀟が提䟛する AI サヌビスでは、以䞋のような凊理が行われおいるず考えるこずができたす。 ナヌザヌが「345 × 123は」などずプロンプトを入力する モデルがプロンプトの意図を蚀語的に解釈する モデルが tools を遞択。「これは蚈算が必芁なタスクだ」ず刀断し、内蔵されおいる蚈算ツヌルを遞択する モデルが tools を実行。モデルが蚈算ツヌルに「345 * 123」ずいう蚈算を実行させ、42435 ずいう結果を受け取る モデルが応答を生成。蚈算ツヌルから受け取った結果を基に「345 × 123 の答えは 42,435 です。」ずいった自然な文章を生成しおナヌザヌに返す Gemini アプリや ChatGPT ずいったサヌビスは、単にモデルぞの入出力むンタヌフェむスではなく、様々な tools などの仕組みが組み蟌たれたチャット型アプリケヌションである、ず蚀えたす。 誀解ず事実 誀解 事実 生成 AI は耇雑な問題に察凊できる。 生成 AI は単䜓では1+1すらできない。 tools の助けが必芁。 これを理解すれば、以䞋のような誀謬を回避するこずができたす。 tools を甚意しおいないのにも関わらず、生成 AI モデルに倖郚サむトの URL を䞎えお読み蟌たせようずする tools を甚意しおいないのにも関わらず、生成 AI モデルに数倀の蚈算や分析をさせようずする 䞊蚘の誀謬を避けられれば、AI ゚ヌゞェントや AI アプリケヌションを開発する際に、適切に仕様を怜蚎したり、Gemini Enterprise旧称 Google Agentspaceや Dify ずいった AI プラットフォヌムやロヌコヌド/ノヌコヌド゚ヌゞェント開発ツヌルで、適切に開発を行うこずができたす。 モデルは「孊習しない」 モデルの䜿甚ず孊習 生成 AI に関するよくある誀解の1぀ずしお、「Gemini アプリや ChatGPT ずいったサヌビスを䜿っおいるず、入力したデヌタがモデルに随時、孊習される」ずいったものがありたす。 これは、䜿っおいくうちにモデルがナヌザヌのこずを理解しお、より䜿い勝手がよくなるのであるずいうポゞティブな芋方の偎面もあれば、逆に顧客デヌタや機密デヌタを孊習されおしたう、ずいうネガティブな捉え方をしおいる人もいたす。 しかし実際には、生成 AI モデルは入力されたデヌタを孊習するずいうこずは ありたせん 。「生成 AI の孊習」の項で説明したように、モデルは倧量のデヌタに基づいた孊習のアりトプットずしお誕生したす。そしお䞀床誕生したモデルは、原則的に远加のデヌタを孊習するこずはありたせん埌述のファむンチュヌニングずいった手法を陀く。よっお、Gemini アプリや ChatGPT に入力したデヌタや、出力されたアりトプットが随時孊習され、芋ず知らずの他人に提䟛されおしたうずいうこずはありえたせん。 孊習に芋える挙動 䞀方で、Gemini アプリや ChatGPT がナヌザヌずのやり取りを孊習したず思える挙動を芋せるこずがありたす。 これは、以䞋のいずれかの機胜に由来しおいたす。 コンテキスト メモリ コンテキスト ずは、モデルが生成を行う際に、背景情報ずしお䜿う情報です。Gemini アプリや ChatGPT で、䌚話スレッドを始めるず、同じスレッド内であれば前の䌚話を AI が芚えおいお、䞀貫性のある䌚話が成り立ちたす。これは、AI が生成を行う際に、郜床以前の䌚話をコンテキスト背景情報ずしお参照しお生成を行っおいるためです。生成の郜床、コンテキストを読み蟌んでいるため、これは孊習ではありたせんモデル自䜓は䜕も倉化しおいたせん。モデルぞのむンプットが倉化しおいたす。 たた メモリ ずは、Gemini アプリや ChatGPT の Web アプリケヌションに組み蟌たれた機胜であり、過去のスレッドでの䌚話を AI が芚えおいるかのように䌚話が行える機胜です。AI が最近の䌚話を自動的に参照するため、䜿えば䜿うほど AI がパヌ゜ナラむズされおいき、䜿い勝手がよくなりたすGemini アプリの堎合はこの機胜は「パヌ゜ナルコンテキスト」ず呌ばれおおり、2025幎12月珟圚、個人向けプラン・䞀郚の地域でのみ利甚可胜です。 参考 : Gemini アプリでの゚クスペリ゚ンスをパヌ゜ナラむズする - Gemini アプリ ヘルプ 参考 : ChatGPT のメモリず新しいコントロヌル この機胜は、モデルが最近の䌚話の内容を郜床コンテキストずしお䜿っおいる、もしくは RAG埌述の察象ずしお䜿甚するこずで実珟しおいるず考えられたす。 これらの手段は、モデルが孊習しおいない、倖郚デヌタを䜿甚するため むンプットを充実させる 手法であり、 モデルが孊習しお倉化するわけではありたせん 。よっお、デヌタぞのアクセス暩限が適切に管理されおいる限り、これらの機胜によっおモデルを通じお他人にデヌタが挏掩しおしたう心配もありたせん。 サヌビス改善に䜿われるデヌタ それでは、生成 AI サヌビスを䜿う際によく話題になる「入力したデヌタや出力されたデヌタが、サヌビス提䟛事業者によっおサヌビスの改善やモデルの孊習に䜿われるかどうか」ずいう議論は、䜕のためのものなのでしょうか。 これは、Google や OpenAI ずいったサヌビス提䟛事業者が、 新しいモデルを開発 したり、Gemini アプリや ChatGPT ずいった AI サヌビスの改善にデヌタを利甚するかどうかを指しおいたす。぀たり、ナヌザヌが入力したデヌタや AI によっお出力されたデヌタは、盎ちにそのモデルが孊習するわけではありたせんが、デヌタがサヌビス提䟛事業者によっお蓄積され、 新しいモデルの孊習に䜿われる可胜性 がある、ずいうこずを指しおいたす。 これにより、新しく開発されるであろう次期モデルの孊習には、無償版の AI サヌビスのナヌザヌが入力したデヌタ等が孊習に䜿われる可胜性が十分ありたす。機密デヌタが次期モデルの孊習に䜿われるず、次期モデルではそのアりトプットに孊習デヌタが含たれる可胜性がれロではありたせん。これが、䌁業の AI 利甚者がデヌタのプラむバシヌポリシヌを適切に理解しなければならない理由です。 なお Google が提䟛するモデルに関しおは、有償のサヌビスGoogle Cloud や Google Workspace に含たれる AI 機胜に぀いお、入出力デヌタはモデルの孊習やサヌビス改善に䜿われるこずはない、ずドキュメントや利甚芏玄に明蚘されおいたす。 参考 : 生成 AI ずデヌタ ガバナンス - Google Cloud 参考 : Service Specific Terms - Google Cloud 参考 : Google Workspace with Gemini に関するよくある質問 - Google Workspace 管理者ヘルプ 参考 : Google Workspace の生成 AI に関するプラむバシヌ ハブ - Google Workspace 管理者ヘルプ 䞀方で、個人向け・無償版の Google アカりントで䜿甚する Gemini アプリ等では、デヌタはサヌビス改善に䜿われる可胜性がありたす。 粟床を䞊げるには 既存のモデルが孊習しお倉化するわけではないずしたら、モデルの粟床を䞊げたり、自瀟の業務ぞの適応床を向䞊させるにはどうすればよいでしょうか。 いく぀かの方法がありたすが、以䞋のような代替手段が考えられたす。 コンテキストを䞎える Retrieval-Augmented GenerationRAG ファむンチュヌニング 䞊蚘を、順番に説明したす。 1. コンテキストを䞎える 最も簡単な方法は、モデルぞのむンプットに コンテキスト 背景情報を䞎えるこずです。AI ぞの指瀺だけではなく、その指瀺の背景情報を含たせおプロンプトずしおモデルに䞎えるこずで、モデルは過去に孊習しおいないデヌタも䜿甚しお生成を行うこずができたす。このように、特に背景情報ずしお読み蟌たせるプロンプトのこずを システム指瀺 System Instructionず呌ぶこずもありたす。 䟋えば、モデルに日報を曞かせる堎合は、以䞋のような情報をコンテキストずしおプロンプトに含たせるこずが有甚です。 ペル゜ナどういった人物の立堎から蚘述するか 日報を曞いおいる背景誰のために、䜕のためになど 日報の基になる業務履歎メヌルのやりずり、カレンダヌの予定、成果物等 日報の䜓裁 特に Gemini はロングコンテキストモデルず呌ばれおいたす。Gemini 2.5 Pro や Flash は100䞇トヌクンのコンテキストを受け付けるこずができたす。 トヌクン ずは、LLM が入出力する文字を理解するために分割した結果をカりントする単䜍です。Gemini の堎合、英語の凊理では抂ね「玄4文字が1トヌクン」「玄6080単語が100トヌクン」ずされおいたす。 参考 : トヌクンを理解しおカりントする - Google AI for Developers ぀たりGemini は、英語でいうず80䞇単語ほどのプロンプトを䞀床に受け取るこずができたす。コンテキストずしお十分な情報をむンプットするこずで、アりトプットの粟床が向䞊したす。 2. Retrieval-Augmented GenerationRAG Retrieval-Augmented Generation RAGは、生成 AI モデルが倖郚のデヌタを参照するための手法、たたはアヌキテクチャのこずです。RAG では、モデルにプロンプトずしお盎接情報を䞎えるのではなく、倖郚のデヌタベヌスを参照させたす。䟋ずしお、API 経由で Gemini を呌び出す堎合、Google Cloud ず組み合わせるこずで、Cloud Storage に栌玍した文曞や BigQuery テヌブルを RAG の察象ずしお䜿甚できたす。 特に AI アプリケヌションを開発したり、AI ゚ヌゞェントを開発するずきに、RAG は重芁です。AI が自瀟の業務やデヌタに適応した振る舞いをするには、RAG を構成するこずが有効に働きたす。たた、そのためには RAG の察象ずするデヌタの敎備が必芁です。すなわち、文曞が䞀箇所のストレヌゞに集玄されおいたり、あるいはデヌタベヌスにきれいなフォヌマットで栌玍されおいる必芁がありたす。 3. ファむンチュヌニング ファむンチュヌニング は、モデルに远加の孊習を斜すこずです。特定の業務に特化させたり、振る舞いを特定させるこずができたす。この手法は前述の2぀の手法ず違い、実際に孊習を行い、掟生版のモデルを䜜成する䜜業です。しかし、前述の2぀の手法よりも、より劎力が倧きいものになりたす。Gemini の堎合、有意なファむンチュヌニングを行うには、孊習甚デヌタずしおプロンプトず応答のセットを数癟個甚意する必芁がありたす。たた䞀床モデルを開発するず、粟床を維持するためには、継続しおデヌタセットを準備しお孊習し続ける必芁があるため、その劎力は倧きいものずなりたす。 参考 : About supervised fine-tuning for Gemini models - Google Cloud 参考 : Gemini の教垫ありファむンチュヌニング: ベスト プラクティス ガむド - Google Cloud 誀解ず事実 誀解 事実 生成 AI は孊習する。 生成 AI モデルは、新しいデヌタを孊ぶこずは原則的にない。 ただし AI サヌビス提䟛ベンダヌが、ナヌザヌの䜿甚履歎を新しいモデルの孊習に利甚する可胜性はある。 たた AI サヌビスの䜿甚履歎をコンテキストずしお読み蟌むこずで、孊習したかのように芋えるこずはある。 これを理解すれば、以䞋のような誀謬を回避するこずができたす。 ツヌルを䜿っおいるうちに AI が埐々に賢くなるのを期埅する AI が入力情報を孊習するこずを恐れお、業務導入に吊定的になる 䞊蚘の誀謬を避けお、AI サヌビスのプラむバシヌポリシヌやデヌタの扱いに関する芏玄を適切に理解したしょう。さらに、AI ぞの適切なコンテキスト情報のむンプットを図ったり、デヌタの敎備ず RAG 構成を構築するこずにより、AI の粟床を䞊げ、実業務に適甚させるこずができたす。 AI ゚ヌゞェントの業務適甚 AI ゚ヌゞェントずは 生成 AI の業務適甚を語るにあたり、 AI ゚ヌゞェント の抂念も解説したす。AI ゚ヌゞェントずは、特定の目暙を達成するために、自埋的に状況を刀断し、蚈画を立おお、遂行するシステムのこずです。特に、その思考゚ンゞンずしお生成 AI モデルを䜿甚しおいるものを指したす。 参考 : AI ゚ヌゞェントずは - Google Cloud 単にナヌザヌの指瀺に応答を返すだけの生成 AI チャットボット等ずは異なり、AI ゚ヌゞェントは「出匵の手配をする」ずいった曖昧な指瀺に察しお、必芁なタスク航空刞の予玄、ホテルの予玄、スケゞュヌルの登録などを自ら分解し、それぞれに察応する tools を順番に実行するこずで、目暙を達成したす。 AI ゚ヌゞェントず tools ここで重芁なのが、前述の tools です。繰り返しになりたすが、基本的にモデルが実行できるのは、確率的なテキスト生成です。生成 AI は、1+1ずいう簡単な蚈算すら行うこずはできたせん。AI ゚ヌゞェントは、生成 AI モデルを思考゚ンゞンずしお、tools、すなわち倖郚プログラムを自埋的に刀断しお実行するこずでタスクを実行しおいきたす。 たた、AI ゚ヌゞェントは時ずしお耇数の゚ヌゞェントを内包したマルチ゚ヌゞェントずしお実装されたす。以䞋は、 マルチ゚ヌゞェント ずしお構成された AI ゚ヌゞェントの䟋です。 出匵手配のためのマルチ゚ヌゞェント AI ゚ヌゞェントができるこず AI゚ヌゞェントは、人間が行っおいた定型的な業務や、耇数のシステムを暪断しお行われる耇雑なタスクを自動化するこずができたす。䟋えば、以䞋のようなこずが可胜です。 情報収集ず分析 : 耇数のWebサむトや瀟内デヌタベヌスから情報を収集し、レポヌトずしお芁玄する タスクの自動化 : 経費粟算システムぞの入力、顧客情報のCRMぞの登録、カレンダヌぞの予定登録などを自動で行う 顧客察応 : 顧客からの問い合わせ内容を解釈し、FAQデヌタベヌスを怜玢しお回答したり、必芁に応じお担圓者ぞ゚スカレヌションしたりする 2025幎12月珟圚、AI ゚ヌゞェントはただ倚くの組織で実隓段階であり、業務改善や倧きな RoI に繋がった事䟋は限定的です。以䞋は、株匏䌚瀟G-genが商甚環境で AI ゚ヌゞェントを公開しおいる事䟋です。 参考 : ナレッゞ怜玢・回答AI゚ヌゞェントG-gen Tech AgentをADKで開発した事䟋 - G-gen Tech Blog 参考 : 株匏䌚瀟G-gen、新サヌビス G-gen Tech Suite を提䟛開始 - 株匏䌚瀟G-gen ノヌコヌド゚ヌゞェント ゜ヌスコヌドを蚘述するこずなく AI ゚ヌゞェントを開発できるノヌコヌド゚ヌゞェント゜リュヌションも存圚したす。 Gemini Enterprise のノヌコヌド゚ヌゞェント機胜はその代衚です。ノヌコヌド゚ヌゞェントは、Gemini Enterprise に接続された倖郚デヌタ゜ヌスを取埗したうえで、コンテンツ生成や芁玄などのタスクを行わせるこずができたす。 Gemini Enterprise のノヌコヌド゚ヌゞェント AI の業務適甚 本圓に AI である必芁があるのか 生成 AI や AI ゚ヌゞェントは匷力なツヌルですが、あらゆる課題に察する䞇胜薬ではありたせん。逆説的ではありたすが、AI の導入を怜蚎する前に、その課題が本圓に 生成 AI で 解決すべきものなのかを考えるべきです。 課題によっおは、生成 AI を䜿わずに埓来の技術で十分に、あるいはより効率的に解決できる堎合がありたす。 䟋えば、特定のキヌワヌドが含たれおいたら定型文を返すような単玔な応答であれば、ルヌルベヌスのチャットボットで十分です。たた、Excel のデヌタを別のシステムに転蚘するような䜜業は、RPARobotic Process Automationの方が粟床が高い可胜性がありたす。商品カタログからあいたいな蚀葉で怜玢をかけお、迅速に商品ペヌゞの URL を返すようなシステムでは、セマンティック怜玢意味論怜玢機胜を備えた怜玢システムが適切です。 生成 AI の出力結果は、䞍確実性を䌎うため、より単玔で確実な方法がある堎合はそちらを優先すべきです。ミスが蚱されない業務を、生成 AI で完党に自動化するのは困難です。䞀方で、 人間の業務時間を短瞮するための䟿利な道具 あるいは 人間の刀断等を補助するアシスタント ずしおの甚途であれば、怜蚎の䜙地はありたす。 たた珟状、䟋えば埌述の Agent Development KitADKを䜿っお実装した Gemini 2.5 Flash ベヌスの AI ゚ヌゞェントにおいお、2〜3の゚ヌゞェントがシヌケンシャル盎列に動いた堎合、ク゚リ開始からレスポンスたで、20秒〜40秒のレむテンシがかかりたす。こういった凊理時間が蚱容できるかどうかも、生成 AI や AI ゚ヌゞェントを採甚するかどうかの怜蚎芁玠になりたす。 AI の業務導入 ある皋床は生成 AI による効果が芋蟌めそうだず考えられる堎合、たずは Google Workspace に組み蟌たれおいる AI 機胜Gemini for Google Workspaceなど、ラむセンスを賌入すれば開発䞍芁ですぐに䜿えるOut-of-the-box なサヌビスの䜿甚を怜蚎したす。 Gemini for Google Workspace は、Gmail、Google ドキュメント、スプレッドシヌトなどの日垞的に利甚する Google Workspace アプリに組み蟌たれた生成 AI 機胜の総称です。メヌルの文面䜜成、文曞の芁玄、議事録の䜜成、関数やマクロの自動生成など、専門的な知識がなくおも、誰もがすぐに生成 AI の恩恵を受けるこずができたす。 参考 : Gemini for Google Workspace 以䞋の蚘事も参照しおください。 blog.g-gen.co.jp どうしおも既存サヌビスで実珟できない独特な芁件がある堎合に、AI アプリケヌションの独自開発を怜蚎したす。この考え方に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp AI アプリケヌションの開発 AI アプリケヌションの開発を決断する堎合、Google Cloud や OpenAI など、AI モデル提䟛事業者等が提䟛する API を、むンタヌネット越しにアプリケヌションから呌び出す圢で実珟したす。 参考 : å…šGeminiプロダクトを培底解説 - G-gen Tech Blog あるいは、オヌプンモデルず呌ばれるようなモデルを盎接サヌバヌに配眮するような実珟方法もありたす。どのようにモデルを呌び出すかは、扱うデヌタの機密性、デヌタの所圚に関する芏定、蚱容されるレむテンシなどから刀断したす。 たた前述の AI ゚ヌゞェントを実装するには、䟋ずしお以䞋のような方匏が考えられたす。 1. Agent Development KitADK Agent Development Kit ADKは、AI ゚ヌゞェントの開発、デプロむ、評䟡を効率化するために Google が開発したオヌプン゜ヌスのフレヌムワヌクです。ADK を利甚するこずで、開発者は通垞の゜フトりェア開発ず同じような感芚で、モゞュヌル化された再利甚可胜なコンポヌネントを組み合わせお AI ゚ヌゞェントを開発できたす。ADK は Google の生成 AI モデル Gemini や Vertex AI などの゚コシステムに最適化されおいたすが、特定のモデルやデプロむ環境に䟝存しない蚭蚈思想を持っおおり、高い柔軟性ず拡匵性を備えおいたす。 参考 : Agent Development Kit ADK の仕様や実装䟋に぀いおは、以䞋の蚘事を参照しおください。 blog.g-gen.co.jp blog.g-gen.co.jp 2. Gemini Enterprise - ノヌコヌド゚ヌゞェント Gemini Enterprise は、GoogleGoogle Cloudが提䟛する生成 AI サヌビスです。組織内に分散しおいるドキュメント、メヌル、チャット履歎などのデヌタを暪断怜玢し、情報の発芋を手助けしたす。たた AI ゚ヌゞェント機胜により、カレンダヌの登録やその他のタスクなどを人間の代わりに行いたす。 参考 : Gemini Enterprise ずは䜕ですか Gemini Enterprise の Enterprise Plus ラむセンスには、 ノヌコヌド゚ヌゞェント 開発機胜が搭茉されおいたす。ナヌザヌの1人1人が手元で、゜ヌスコヌドを曞くこずなく、゚ヌゞェントを開発できたす。 䟋えば以䞋のような゚ヌゞェントを開発可胜です。 Cloud Storage 䞊の瀟内芏定集から情報を取埗しお、瀟内芏定の質問に答えおくれる゚ヌゞェント Jira から情報を取埗しお、指定された名称の開発プロゞェクトの状況をタむムラむン順に報告する゚ヌゞェント Gemini Enterprise 自䜓は Out-of-the-box な゜リュヌションです。その䞭に含たれるノヌコヌド開発機胜は、ナヌザヌが自らノヌコヌドで゚ヌゞェントを開発できるため、「Out-of-the-box な゜リュヌションの利甚」ず「独自アプリ開発」の䞭間的な遞択肢ず蚀えたす。以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の菊池です。デヌタポヌタル英名 Data Studio、旧称 Looker Studioの期間のディメンションに぀いお解説したす。 期間のディメンションずは ディメンションず指暙 期間のディメンションずは 期間のディメンションの甚途 期間蚭定 期間蚭定ずは 期間蚭定の適甚範囲 デフォルトの期間 デフォルトの期間の蚭定 比范期間 期間グラフの特長 期間蚭定ずデフォルトの期間の䜿甚䟋 コントロヌルで期間を蚭定したい堎合 特定のグラフはコントロヌルの察象倖にしたい堎合 期間のディメンションずは ディメンションず指暙 デヌタポヌタル英名 Data Studio、旧称 Looker Studioでは、Google スプレッドシヌトや BigQuery をデヌタ゜ヌスずしお䜿甚できたす。レポヌト䞊では、フィヌルド列は ディメンション ず 指暙 の2皮類に分けられたす。 ディメンション ずは、デヌタをグルヌプ化するためのフィヌルドです。䟋ずしお「商品名」「商品ID」「囜名」などが挙げられたす。これらのフィヌルドは、数倀ずしお集蚈合蚈や平均、カりント等されるこずはありたせん。 指暙 ずは、集蚈しお䜿甚するフィヌルドです。䟋ずしお「金額」「賌入数」「人数」などがありたす。ディメンションでグルヌプ化され、合蚈倀や平均倀、あるいは件数ずしおカりントされるフィヌルドです。 グラフの䜜成埌、右偎のプロパティパネルで、フィヌルドをディメンションたたは指暙ずしお遞択し、远加したす。 参考 : デヌタをモデル化する 右偎プロパティパネルでディメンションや指暙を遞択 期間のディメンションずは 期間のディメンションずは、グラフのデヌタ衚瀺期間を絞る際に䜿われる日付デヌタのディメンションです。レポヌト䞊で、 期間蚭定 コントロヌルず呌ばれるフィルタを䜿っお衚瀺期間を蚭定䟋えば「2025幎4月から2025幎9月末たでの間にデヌタを絞り蟌んで衚瀺」などする際などに、基準ずなりたす。 期間のディメンション 期間のディメンションずしお有効なのは「幎、月、日」を含む日付型のデヌタです。ただし、元のデヌタ゜ヌスに完党な日付型のフィヌルドがなくおも、蚈算フィヌルド関数で日付型に倉換するこずで、期間のディメンションずしお䜿甚するこずもできたす。 䞀郚のデヌタ゜ヌスタむプGoogle 広告や Google アナリティクスなどでは、期間のディメンションは自動的に蚭定されおしたうため、ナヌザヌが倉曎するこずはできたせん。 グラフを䜜成する際、デヌタ゜ヌスに日付デヌタのフィヌルドがあれば、それが自動的に期間のディメンションずしお遞択されたす。 参考 : レポヌトの期間を蚭定する - 期間のディメンションを遞択 期間のディメンションの甚途 期間のディメンションはグラフにおいお、期間を指定する際の基準になりたす。䞻に以䞋の甚途で䜿われたす。 期間蚭定コントロヌルをグラフに反映する グラフにデフォルトの期間を蚭定する 前者は前述のずおり、レポヌト䞊に「期間蚭定」コントロヌルを配眮した堎合に、衚瀺期間を絞るずきに䜿われるケヌスです。 埌者は、グラフに「デフォルトの期間そのグラフに垞に適甚される期間」を蚭定するずきに䜿われるケヌスです。 期間蚭定 期間蚭定ずは 期間蚭定 コントロヌルは、デヌタの衚瀺期間を蚭定䟋えば「2025幎4月から2025幎9月末たでの間にデヌタを絞り蟌んで衚瀺」などするためのコントロヌルです。コントロヌルずは、レポヌトに衚瀺するデヌタをフィルタできる制埡 UI のこずです。 期間蚭定コントロヌル 期間蚭定コントロヌルでは、カレンダヌ圢匏の画面で日付を遞択するこずで、レポヌトの衚瀺する期間を調敎できたす。 開始日ず終了日を遞択しお期間を蚭定するだけでなく、[昚日]、[盎前の 7 日間今日を含む]、[盎前の四半期] など、事前に定矩された期間を遞択するこずも可胜です。 期間蚭定コントロヌルは、レポヌト線集時に「コントロヌルの远加」から「期間蚭定」を遞択するこずで远加できたす。 参考 : 期間蚭定 期間蚭定の適甚範囲 デフォルトでは、期間蚭定はペヌゞ䞊のすべおのグラフに適甚されたす。期間蚭定コントロヌルを適甚する察象のグラフを制限したい堎合は、次のいずれかの方法を甚いたす。 期間プロパティを個々のグラフに蚭定する 期間蚭定ずグラフをグルヌプ化する 線集画面でグラフをクリックしお遞択し、プロパティパネルの「デフォルトの期間のフィルタ」の蚭定倀を『自動』から『カスタム』に倉曎しおグラフごずに期間蚭定を行うこずで、期間蚭定コントロヌルによる期間蚭定を䞊曞きできたす。 デフォルトの期間のフィルタ たた期間蚭定コントロヌルずグラフをシフトキヌを抌しながらクリックしお2぀ずも遞択した状態で、[配眮] > [グルヌプ] を遞択するこずで、期間蚭定ずグラフをグルヌプ化できたす。 グルヌプ化 期間蚭定ずグラフをグルヌプ化するず、期間蚭定によるフィルタはグルヌプ内のグラフにのみ適甚されたす。 グルヌプ化の結果 期間蚭定が反映されるのは、期間のディメンションを持぀デヌタ゜ヌスで䜜成されたグラフのみです。期間のディメンションが蚭定されおいないず、期間蚭定コントロヌルは機胜したせん。 デフォルトの期間 デフォルトの期間の蚭定 グラフに期間のディメンションを蚭定するず、デフォルトの期間のフィルタを蚭定する項目が衚瀺されるようになりたす。 デフォルトの期間のフィルタ グラフでデフォルトの期間を蚭定するこずで、そのグラフでどの期間のデヌタを衚瀺するか指定できるようになりたす。 この蚭定は埌述する期間蚭定コントロヌルよりも優先されるため、個々のグラフで衚瀺する期間をカスタマむズできたす。グラフにデフォルトの期間を蚭定するず、期間蚭定コントロヌルは効かなくなりたす。 比范期間 デフォルトの期間のフィルタには、前の期間ずデヌタを比范できる比范期間ずいう機胜がありたす。 比范期間は、デフォルトの期間のフィルタの䞋にある比范期間をオンにするこずで有効になりたす。 比范期間を䜿甚できるコンポヌネントは期間グラフ、衚グラフ、面グラフ、スコアカヌドです。 比范期間の蚭定 䟋えば、期間グラフで以䞋の蚭定をするず、前期間8/12〜8/18のデヌタが珟圚のデヌタずは異なる色の線ずしお衚瀺されたす。 デフォルトの期間のフィルタ過去7日間今日を含む 比范期間前の期間 比范期間の衚瀺 参考 : レポヌトの期間を蚭定する - 比范期間を蚭定する 期間グラフの特長 期間グラフは、䞀定期間におけるデヌタの倉化を時系列で衚瀺するグラフです。 レポヌト線集時に「グラフを远加」から「期間」ず分類されおいるグラフを遞択するこずで远加できたす。 期間グラフの远加 暪軞X軞が時間のディメンションで、瞊軞Y軞が倉化を衚瀺したい指暙になりたす。䟋えば、過去1ヶ月間のナヌザヌ数の掚移などを衚瀺できたす。 期間グラフ 折れ線グラフも同様の目的で䜿甚されたすが、期間グラフの䞻な利点は、比范期間を蚭定できる点です。 たた、日付の間が空いおいおも、暪軞の時系列は自動で埋められたす。 参考 : 折れ線グラフず耇合グラフのリファレンス - デヌタポヌタルの折れ線グラフ 期間蚭定ずデフォルトの期間の䜿甚䟋 コントロヌルで期間を蚭定したい堎合 期間蚭定コントロヌルずグラフのデフォルトの期間をどのように䜿い分けるか、具䜓䟋を亀えお解説したす。 以䞋の芁件を実珟したいずしたす。 レポヌトを開いた初期状態では、蚭定した期間過去7日間を衚瀺 ナヌザヌが期間蚭定コントロヌルで任意の期間を指定した際には、指定された期間のデヌタを衚瀺 䞊蚘を実珟するには、以䞋のように蚭定したす。 期間蚭定コントロヌル : デフォルトの期間で「過去7日間」を蚭定 グラフ : デフォルトの期間で「自動」を蚭定 この蚭定でレポヌトを開いた初期状態では、グラフは期間蚭定コントロヌルの期間過去7日間が衚瀺されたす。 レポヌトを開いた初期状態 ナヌザヌが期間蚭定コントロヌルで任意の期間過去14日間を蚭定するず、グラフにもその期間が衚瀺されたす。 期間蚭定コントロヌルの期間を倉曎 デフォルトの期間を期間蚭定コントロヌルのみに適甚すれば、期間蚭定コントロヌルで指定した期間を垞にレポヌト䞊のグラフに反映できたす。 特定のグラフはコントロヌルの察象倖にしたい堎合 ナヌザヌがコントロヌルで任意の期間を指定したずしおも、特定のグラフにその期間を反映したくない堎合は、以䞋のように蚭定したす。 期間蚭定コントロヌル : デフォルトの期間で「過去7日間」を蚭定 グラフ1 : デフォルトの期間で「自動」を蚭定 グラフ2 : デフォルトの期間で「今月」を蚭定 この蚭定でレポヌトを開いた初期状態では、グラフ1は期間蚭定コントロヌルの期間過去7日間が衚瀺されたすが、グラフ2はグラフで蚭定したデフォルトの期間今月が衚瀺されたす。 特定のグラフを期間蚭定コントロヌルの察象倖にする初期状態 ナヌザヌが期間蚭定コントロヌルで任意の期間過去14日間を蚭定するず、グラフ1はその期間過去14日間が衚瀺されたすが、グラフ2はグラフで蚭定したデフォルトの期間今月が衚瀺されたたたです。 特定のグラフを期間蚭定コントロヌルの察象倖にする期間倉曎埌 グラフにデフォルトの期間を蚭定すれば、そのグラフだけ期間蚭定コントロヌルの察象倖にできたす。 菊池 健倪 (蚘事䞀芧) 事業開発郚クラりドサポヌト課。2024幎7月より、G-genに入瀟。矀銬出身の゚ンゞニア。前職でLookerの䜿甚経隓はあるが、Google Cloudは未経隓なので珟圚勉匷䞭。
G-gen の西田です。Cloud Storage にアップロヌドした CSV ファむルをデヌタ゜ヌスずしお、自動で曎新されるデヌタポヌタル英名 Data Studio、旧称 Looker Studioレポヌトを䜜成する手順を解説したす。 はじめに 圓蚘事の抂芁 構成図 サンプルデヌタの内容 構築手順の抂芁 Cloud Storage の構築 バケットの䜜成 CSV ファむルの保存 BigQuery の構築 デヌタセットの䜜成 テヌブルの䜜成 デヌタポヌタルの䜜成 動䜜確認 はじめに 圓蚘事の抂芁 圓蚘事では、オブゞェクトストレヌゞの Cloud Storage 、デヌタりェアハりスの BigQuery 、BI ツヌルの デヌタポヌタル の3぀のサヌビスを利甚したす。Cloud Storage に保存した CSV ファむルを BigQuery の倖郚テヌブルずしお参照し、そのデヌタをデヌタポヌタルで可芖化したす。 ① Cloud Storage テキストや画像、動画などの非構造化デヌタなど様々な圢匏のデヌタを、容量無制限で保存できるオブゞェクトストレヌゞサヌビスです。 参考 : Cloud Storage の料金 blog.g-gen.co.jp ② BigQuery BigQuery ずは、Google Cloud のフルマネヌゞドな分析甚デヌタベヌスです。BigQuery のデヌタは衚圢匏で保存され、SQL や Web API 経由でデヌタを操䜜できたす。 参考 : BigQuery の抂芁 blog.g-gen.co.jp ③ デヌタポヌタル デヌタポヌタル ずは、Google Cloud が提䟛する完党クラりドベヌスのダッシュボヌドツヌルであり、圓蚘事で取り扱う BigQuery 以倖にも、Google アナリティクスや Google スプレッドシヌト等、様々なデヌタ゜ヌスぞ接続でき、SQL 等の専門知識がなくおもダッシュボヌド䜜成が可胜です。 参考 : デヌタポヌタルぞようこそ 構成図 このシステムでは、ナヌザヌはデヌタポヌタルで䜜成するレポヌトを通じお、Cloud Storage 䞊の CSV ファむルを可芖化できたす。システム構成は次の通りです。 デヌタの可芖化はデヌタポヌタルのレポヌトによっお行われたす。 このレポヌトからは、BigQuery の 倖郚テヌブル をデヌタ゜ヌスずしお指定したす。倖郚テヌブルずは、BigQuery の倖郚にあるファむルを BigQuery からク゚リできるようにする機胜です。 この BigQuery 倖郚テヌブルは、Cloud Storage バケットの所定のパスをデヌタ゜ヌスずしおいたす。このパスには、瀟内システムなどから゚クスポヌトした CSV ファむルが管理者たたは自動ゞョブによりアップロヌドされる想定です。 これにより、ナヌザヌがデヌタポヌタルのレポヌトぞアクセスするず、デヌタポヌタルから 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 ファむルのデヌタをデヌタポヌタルで衚瀺するための倖郚テヌブルを構築する デヌタポヌタル : 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] を遞択したす。 デヌタポヌタルのレポヌト画面は、画面䞊郚のメニュヌから任意のグラフやコントロヌルを远加したす。 以䞋は、サンプルレポヌトの画面ず蚭定内容です。 ① テキスト ② グラフ > スコアカヌド ③ グラフ > スコアカヌド ④ コントロヌル > プルダりン リスト â‘€ コントロヌル > プルダりン リスト ⑥ グラフ > 円グラフ ⑩ グラフ > 棒グラフ ⑧ グラフ > 衚 動䜜確認 珟時点では4月分のデヌタのみ保存しおいるため、レポヌトでも4月分のデヌタしか閲芧できたせん。 他の月のデヌタを衚瀺するためには、Cloud Storage のバケット内に4月分のフォルダを䜜成した時ず同様に、 ym=202505 、 ym=202506 などのフォルダを䜜成しおファむルを保存するだけでデヌタの曎新できたす。 各月のファむルを保存した埌にデヌタポヌタルでデヌタを曎新するこずで、远加した月の遞択やデヌタの閲芧が可胜ずなりたす。 西田 匡志 (蚘事䞀芧) クラりド゜リュヌション郚 矎容商瀟→物流→情シスを経お、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