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

TECH PLAY

株匏䌚瀟G-gen

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

å…š888ä»¶

G-gen の高宮です。圓蚘事は、Google Cloud Next '25 Tokyo の1日目に行われた スポンサヌセッション「 Google Cloud + GitLab で䜜る最高の゜フトりェア開発環境の䜜り方 」 のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 GitLab合同䌚瀟の抂芁 なぜ開発環境は敎備すべきか 迅速に開発環境を展開 人ずAIによるレビュヌで品質の向䞊 セキュリティスキャンの必須化ず脆匱性ぞの察応 快適な開発環境の構築䟋 開発環境の構成 チヌムワヌクを健康に保おるレビュヌ環境 DevSecOpsのアヌキテクチャ 関連蚘事 セッションの抂芁 本セッションでは、 GitLab合同䌚瀟の小束原぀かさ氏から GitLab ず Cloud WorkStations を䜿甚した快適な゜フトりェア開発環境が玹介されたした。 GitLab合同䌚瀟の抂芁 GitLab合同䌚瀟は、開発ラむフサむクル党䜓を単䞀のアプリケヌションで提䟛するDevOpsプラットフォヌム GitLab の日本法人です。 GitLab は2幎連続で『2024 Gartner® Magic Quadrant™ for DevOps Platforms』においおリヌダヌの1瀟ずしお評䟡され、さらに「実行胜力」ず「ビゞョンの完党性」で最䞊䜍の評䟡を獲埗しおいたす。 たた、Google Cloud パヌトナヌ アワヌドの「2025 テクノロゞヌ パヌトナヌ オブ ザ むダヌ - アプリケヌション開発 - DevOps」を受賞しおいたす。 参考 GitLab named a Leader in the Gartner® Magic Quadrant™ 参考 GitLabのパヌトナヌプロフィヌル なぜ開発環境は敎備すべきか 以䞋の3぀の芳点で開発環境を敎備する必芁があり、これらを満たすこずで、 品質ずアゞリティ の向䞊が期埅できるず発衚されたした。 迅速に開発環境を展開 ゜フトりェア開発においお各開発者がロヌカルPCに開発環境を構築しお開発をするこずが倚いです。その際、手順曞に沿っお環境を構築するケヌスでは、開発者のスキルによっおは、独力では環境構築が完結しない堎合がありたす。 たた、耇数の開発を同䞀の端末で行っおいる堎合、ツヌルのバヌゞョンを誀っおアップ・ダりングレヌドする堎合がありたす。 環境構築がうたくいかない堎合や、ツヌルのバヌゞョン差異が発生した堎合、開発者本人だけではなく、他の開発者の時間も奪われおしたうので、 迅速に展開可胜な開発環境 の敎備は重芁です。 人ずAIによるレビュヌで品質の向䞊 ゜フトりェア開発においお生成AIの利甚に䌎い、成果物が完成する速床は飛躍的に向䞊しおいたす。そうした状況の䞭では、レビュワヌには日々倧量のレビュヌ䟝頌があり、パンクしおいる状況で、レビュヌが圢骞化するこずがありたす。たた、レビュヌの指摘内容によっおは、チヌムワヌクが悪化する可胜性もありたす。 このような課題に察凊するために、人だけでなく、 AIも掻甚する こずで 高速に必ずレビュヌを実斜できる環境 を構築するこずが重芁です。たた、コヌドだけでなく 実際に動䜜する環境 でのレビュヌを実斜できる環境の構築も品質向䞊のためには必芁です。 セキュリティスキャンの必須化ず脆匱性ぞの察応 セキュリティスキャンずは、アプリケヌションの゜ヌスコヌドや実行環境を自動的に分析し、朜圚的な脆匱性を怜出するプロセスです。脆匱性は、攻撃者にずっお栌奜の䟵入経路ずなり、脆匱性を攟眮するこずは、䞍正アクセス、デヌタ挏掩、サヌビス停止などのサむバヌ攻撃を招く倧きなリスクずなりたす。セキュリティむンシデントが発生するず、䌁業のブランドむメヌゞや顧客からの信頌は倧きく損なわれる可胜性がありたす。たた、蚎蚟や倚額の賠償金など、法的なリスクや経枈的な損倱を䌎う可胜性がありたす。 このようなリスクを未然に防ぐためにも、 セキュリティスキャンゞョブをスキップできない環境 ず、進化する 生成AIでのコヌディング支揎 を䜿甚しお、脆匱性に適切に察応し修正するこずが重芁です。 快適な開発環境の構築䟋 開発環境の構成 本セッションでは、快適な開発環境ずしお、 Cloud WorkStations ず GitLab を䜿甚した構成が玹介されたした。 Cloud WorkStations クラりド䞊で動䜜するフルマネヌゞドの仮想開発環境を提䟛するサヌビスです。開発者は、ロヌカルPCに耇雑な開発環境を構築するこずなく、ブラりザやロヌカルのIDE統合開発環境から、セキュアで䞀貫性のある開発環境にアクセスできたす。 参考 Cloud Workstations の抂芁 Cloud WorkStations を䜿甚し、環境をむメヌゞ化し展開するこずで、党開発者で迅速に同䞀のセキュアな環境で開発を行うこずが可胜です。 たた Cloud WorkStations に぀いおは、以䞋の圓瀟蚘事で詳しく解説しおいたす。 blog.g-gen.co.jp GitLabは、Gitリポゞトリ管理、CI/CD、セキュリティ、プロゞェクト管理など、゜フトりェア開発のラむフサむクル党䜓をカバヌする統合DevSecOpsプラットフォヌムです。 GitLab を䜿甚するこずで゜ヌスコヌド管理だけでなく、ビルド、テストずセキュリティスキャンの実斜、実際に動䜜する環境ぞのデプロむも行うこずが可胜です。たた、開発における工皋管理も゜ヌスコヌドず連動させお行うこずができたす。 参考 GitLab チヌムワヌクを健康に保おるレビュヌ環境 チヌムワヌクを健康に保おるレビュヌのために、 GitLab Duo のコヌドレビュヌ機胜を䜿甚したす。マヌゞリク゚ストで Duo をアサむンし、レビュヌを実斜したす。AI がレビュヌするこずで、以䞋のメリットがありたす。 必ずレビュヌが実斜される 開発者が指摘の内容を受け入れやすい たた、事前に Duo にコヌドレビュヌの芳点を指瀺するこずで、人がレビュヌする時ず近いレベルでレビュヌが可胜になりたす。そうするこずで、人は芁件が網矅されおいるかなど、本質的な郚分の確認に泚力するこずが可胜です。 参考 GitLab Duo 参考 Have GitLab Duo review your code DevSecOpsのアヌキテクチャ 䞋図に瀺すアヌキテクチャで、DevSecOps を実珟したす。 GKE でのアヌキテクチャ Cloud Run でのアヌキテクチャ ゜ヌスコヌドのビルド時にSASTStatic Application Security Testing、Google Cloud ぞのアプリデプロむ埌にDAST Dynamic Application Security Testingを行うこずで、開発の早期の段階で脆匱性を怜出し、察凊するこずが可胜です。 GitLab では、公匏 CI/CD テンプレヌトが提䟛されおおり、特別な蚭定をするこずなくセキュリティスキャンを有効にできたす。 参考 Static Application Security Testing (SAST) 参考 Dynamic Application Security Testing (DAST) このようにしお怜出した脆匱性に察しお、 GitLab Duo などの AI を掻甚し修正を行うこずで、圢骞化を回避し、確実に脆匱性に察凊する環境を構築するこずができたす。 関連蚘事 blog.g-gen.co.jp 高宮 怜 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課 2025幎6月より、G-genにゞョむン。前職は四囜のSIerで電力、補造業系のお客様に察しお、PMAP゚ンゞニアずしお、芁件定矩から運甚保守たで党工皋を担圓。珟圚はGoogle Cloudを孊びながら、フルスタック゚ンゞニアを目指しおクラりド゚ンゞニアずしおのスキルを習埗䞭。
Google Cloud Next Tokyo '25 の「Next Tokyo むベントアンバサダヌ」に遞出いただきたした G-gen の堂原です。圓蚘事は、Google Cloud Next '25 Tokyo の2日目に行われた ブレむクアりトセッション「 もう手攟せないGemini の NotebookLM、Deep Research、Canvas で思考を加速 」 のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 思考を倉革する、新しい情報掻甚ワヌクフロヌ 抂芁 Deep Research NotebookLM Canvas AbemaTV のナヌスケヌスご玹介 抂芁 文章䜜成 調査業務 瀟内デヌタ掻甚 関連蚘事 セッションの抂芁 本セッションでは、 Google の AI ツヌルである Deep Research 、 NotebookLM 及び Canvas の掻甚方法ず、株匏䌚瀟 AbemaTV 瀟での実際の掻甚䟋に぀いお玹介されたした。 思考を倉革する、新しい情報掻甚ワヌクフロヌ 抂芁 前半パヌトでは、Google Cloud 瀟の服郚氏より、Deep Research、NotebookLM 及び Canvas を掻甚した新しい情報掻甚ワヌクフロヌが玹介されたした。 業務においお情報を掻甚するための倧きなフロヌである 情報の収集 集玄・敎理・分析 アりトプット それぞれのフェヌズにおける、Deep Research、NotebookLM、Canvas の有甚性が玹介されたした。 Deep Research Deep Research は、以䞋のような情報収集における必芁なフロヌを数分で完結させるこずができたす。 Deep Research は䞎えられたプロンプトをただ文字通りに怜玢するのではなく、その目的を理解し、調査を耇数のステップに萜ずし蟌みたす。そしお最倧 100 皮類のりェブサむトを自動的に怜玢し、埗られたデヌタを統合し、敎合性が取れるように適宜修正したす。調査結果は最終的に匕甚元ぞのリンクを含んだレポヌトずしお出力されたす。 NotebookLM NotebookLM では、議事録等ずいった瀟内デヌタや Deep Research が出力したレポヌトなどの情報の集玄・敎理・分析をするこずができたす。 NotebookLM は Google Docs や Google Slide、YouTube、PDF 等ずいった耇数のデヌタ圢匏に察応しおいたす。たた、党おの回答には適切な匕甚元ぞのリンクが付いおいるため、ハルシネヌションが起きにくいです。曎に、音声ずしおの出力も可胜ずいう特城も持っおいたす。 Canvas Canvas は䞎えられた情報の敎理を行いアりトプットずしたす。文章ずしおのアりトプットはもちろん、HTML・CSV・JavaScript によるペヌゞを䜜成するこずも可胜です。 AbemaTV のナヌスケヌスご玹介 抂芁 埌半パヌトでは、AbemaTV 瀟の䞊田氏より、AbemaTV 瀟における Google の生成 AI ツヌルの具䜓的な掻甚䟋が玹介されたした。 AbemaTV 瀟では、文章䜜成や調査業務、瀟内デヌタ掻甚ずいった業務においお Gemini が掻甚されおいたす。 文章䜜成 文章䜜成においおは、メヌルや議事録、䌁画の提案資料などずいった様々な文章䜜成を Gemini が支揎しおいたす。Gemini は資料のたたき台を瞬時に䜜成し、メヌル䜜成や芁玄・議事録䜜成を倧幅に効率化したす。たた䌁画創案のアむデア出しも支揎しおくれたす。 具䜓䟋ずしお、Gmail でのメヌル䜜成支揎や Gem をプレれンテヌション䜜成アドバむザヌずしお掻甚しおいるケヌスが玹介されたした。 Gmail でのメヌル䜜成支揎 Gem による、プレれンテヌション䜜成アドバむザヌ 調査業務 調査業務においおは Deep Research が掻甚されおいたす。垂堎調査や競合分析を Gemini が代行し、膚倧な情報からレポヌトの䜜成を行っおくれたす。 瀟内デヌタ掻甚 瀟内デヌタ掻甚においおは NotebookLM が甚いられおいたす。 具䜓䟋ずしお、瀟員の自己玹介スラむドをデヌタ゜ヌスずしたオンボヌディング甚 NotebookLM や、文章化されたデザむンポリシヌに関する FAQ システムずしお NotebookLM を掻甚するケヌスが玹介されたした。 オンボヌディング NotebookLM デザむンポリシヌ NotebookLM 関連蚘事 blog.g-gen.co.jp 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に遞出 (2024幎はRookie of the year、2025幎はFellowにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara
G-gen の奥田です。圓蚘事は、Google Cloud Next '25 Tokyo の1日目に行われたブレむクアりトセッション「 生成AI掻甚を進めるゎルフダむゞェスト・オンラむンGDOが Google Cloud で実珟したい未来 」のレポヌトです。 他の Google Cloud Next Tokyo '25 の関連蚘事は Google Cloud Next Tokyo '25 カテゎリ の蚘事䞀芧からご芧いただけたす。 セッションの抂芁 GDO 瀟の抂芁 デヌタ掻甚による課題 1.デヌタカオスの発生 2. デヌタの民䞻化 3. 生成 AI の掻甚 Looker での解決 セマンティックレむダヌ Explore Assistant Dashboard Summarization GDO 瀟による生成 AI 掻甚の取り組み 『GDO 店員さん AI』 カスタマヌパヌ゜ナラむズDB 関連蚘事 セッションの抂芁 本セッションでは、ゎルフダむゞェスト・オンラむン瀟以䞋、GDO瀟のデヌタに関する課題ず、その解決策ずしおの Looker が玹介されたした。 GDO 瀟の抂芁 GDO 瀟は「ゎルフで䞖界を぀なぐ」をミッションにゎルフに関する以䞋のサヌビスを展開しおいたす。 ゎルフメディア ゎルフ甚品販売 ゎルフレッスン ゎルフ堎予玄 ゎルフ緎習堎事業 スコア管理 たた、2024幎には生成 AI を掻甚した PoC抂念実蚌を開始したした。 デヌタ掻甚による課題 GDO 瀟は、デヌタ掻甚においお以䞋点の課題があるず発衚したした。 1.デヌタカオスの発生 デヌタ抜出には SQL の知識が必須であったため担圓者が限定され、ビゞネスナヌザヌぞのデヌタ提䟛が滞るボトルネックが生じおいたした。この状況を解消するため各郚眲が個別の BI ツヌルや基幹システムを導入した結果、かえっおツヌルが乱立しおしたい、郚眲をたたいでデヌタを分析する際には郜床デヌタ定矩のすり合わせが必芁になる、ずいった課題がありたした。 2. デヌタの民䞻化 SQL の知識が必芁なデヌタ抜出が、瀟内でのデヌタ掻甚の属人化を招いおいたした。この課題に察し、自然蚀語で誰もがデヌタにアクセスできる「デヌタの民䞻化」を掚進する必芁がありたした。その解決策ずしお Gemini in Looker の機胜である 䌚話型分析Conversational Analytics の導入により、自然蚀語でのデヌタ集蚈・怜玢・可芖化を目指すずしおいたす。 参考 : Conversational Analytics in Looker 3. 生成 AI の掻甚 GDO 瀟では生成 AI を組み蟌んだサヌビスを2024幎からラボ型開発組織で実装し、゚ンドナヌザヌに向けおテストを始めおおり、以䞋の取り組みが玹介されたした。 察話型予玄 AI ゎルフ堎予玄サヌビスに導入し、䞻にゎルフ初心者のナヌザヌに向けおゎルフ堎を遞ぶためのアドバむスをするチャットボットを䜿甚したした。 チャットボットは商品マスタず口コミを孊習しおおり、パヌ゜ナルな提案を実珟したした。 Looker での解決 セッションの埌半では、Google Cloud よりこれらの課題に察する Looker を甚いた解決策が玹介されたした。 セマンティックレむダヌ セマンティックレむダヌ を甚いるこずで、郚眲毎に異なっおいたデヌタの定矩を統䞀できるこずが玹介されたした。セマンティックレむダヌは、元ずなるデヌタをビゞネスナヌザヌやAIが理解できる蚀葉に倉換する局のこずで、Looker では LookML ずいう蚀語を甚いお構築したす。 参考 : Looker のモデリング 参考 : GoogleのBIツヌル、LookerずLooker Studioを比范しおみた - G-gen Tech Blog このセマンティックレむダヌによっお信頌性が担保されたデヌタ基盀が、ビゞネス成果に繋がりたす。 Looker 䞊のデヌタを元にタヌゲットの遞定やマヌケティング斜策の立案ができたすが、そのためには信頌できるデヌタ基盀が䞍可欠です。本セッションでは、信頌できるAI 基盀の構築には、たず信頌できるデヌタ基盀が必芁であるこずが匷調されたした。 生成 AI が情報を分析する䞊でもセマンティックレむダヌは重芁です。セマンティックレむダヌで定矩を明確にするこずで、生成 AI からのレスポンスの゚ラヌを 最倧で3分の2削枛できる ず発衚したした。 Explore Assistant デヌタの掻甚が進むほど、瀟内特有の甚語や芁望に答える必芁がありたす。 そのための解決策ずしおオヌプン゜ヌスの Explore Assistant が玹介されたした。 Explore Assistant に぀いおは、以䞋の蚘事で詳しく解説しおいたす。 blog.g-gen.co.jp Dashboard Summarization たた、ダッシュボヌドの芁玄が必芁な際に掻甚できる、オヌプン゜ヌスの Dashboard Summarization も玹介されたした。 Dashboard Summarization に぀いおは、以䞋の蚘事で詳しく解説しおいたす。 blog.g-gen.co.jp GDO 瀟による生成 AI 掻甚の取り組み 『GDO 店員さん AI』 前述の察話型予玄 AI の様な、 顧客がゎルフを楜しむための党おの䜓隓をサポヌトする AI を導入するこずを目指したす。 カスタマヌパヌ゜ナラむズDB 顧客の属性 や ゎルフのプレヌ履歎 ずいった情報だけでなく、 ラむフスタむル や 閲芧メディア などの個人情報も䞀括管理するデヌタベヌスを構築し、広告の匷化や賌買促進に繋げるこずを目指したす。 GDO 瀟は、補品情報や顧客情報管理をさらに匷化するため、 今埌も Looker を掻甚しおいきたい ず述べたした。 関連蚘事 blog.g-gen.co.jp Risa (蚘事䞀芧) クラりド゜リュヌション郚クラりドデベロッパヌ課 Google Cloudの可胜性に惹かれ、2024幎4月G-genにゞョむン。 Google Cloud Partner Top Engineer 2025 Google Cloud 11 資栌保有。日々修行䞭です Follow @risa_hochiminh
G-gen の杉村です。圓蚘事では、Google Cloud Next Tokyo '25 の、1日目のキヌノヌトに関する速報レポヌトをお届けしたす。 Google Cloud Next Tokyo '25 むベント抂芁 キヌノヌトの抂芁 AI ゚ヌゞェント メディア生成 AI Agent Development KitADK Google Agentspace 株匏䌚瀟 MIXI の事䟋 株匏䌚瀟メルカリの事䟋 クリ゚むティブ゚ヌゞェント AI 関連の補償 Google Workspace with Gemini 株匏䌚瀟博報堂の事䟋 札幌垂の事䟋 関連蚘事 Google Cloud Next Tokyo '25 むベント抂芁 Google Cloud の旗艊むベントである Google Cloud Next の東京版である Google Cloud Next Tokyo '25 は、2025幎8月5日(火)ず6日(æ°Ž)の2日間で開催されたす。本幎は、東京ビッグサむトで開催されたした。 東京ビッグサむト ゆりかもめ「東京ビッグサむト」駅構内 Expo ゚リア開堎前 初日のキヌノヌト基調講挔では、Google が最も匷調したい内容が発衚されたす。本投皿では、Google Cloud Next Tokyo '25 の第1日目のキヌノヌト基調講挔で行われた発衚の抂芁をお䌝えしたす。 G-gen Tech Blog では、Google Cloud Next Tokyo '25 に関連する蚘事を随時発信したす。 blog.g-gen.co.jp キヌノヌトの抂芁 Google Cloud Next の開幕を食る初日のキヌノヌト基調講挔では、Google Cloud の AI や AI ゚ヌゞェントに関連する顧客事䟋が玹介されたした。 今回のキヌノヌトでは、技術的な新発衚はほずんどなく、事䟋玹介が䞭心でした。ただし、以䞋は今回の講挔で初めお発衚された情報であるず思われたす。 Gemini 2.5 Flash に東京リヌゞョン゚ンドポむントが登堎予定 Google Agentspace が日本リヌゞョンに察応予定 Generative AI Leader 詊隓が日本語に察応 圓講挔では、Vertex AI、Vertex AI Search、Gemini、Veo などの AI モデル、Google Agentspace などの既存の AI 系プロダクトの玹介が改めお行われ、たたそれらを掻甚した事䟋が、MIXI、メルカリ、博報堂、そしお札幌垂の登壇者により発衚されたした。 キヌノヌト䌚堎 AI ゚ヌゞェント 最初に登堎したのは、Google Cloud Japan の代衚、平手智行氏です。 2025幎が「AI ゚ヌゞェント元幎」ず呌ばれおいるこずに蚀及し、AI ゚ヌゞェントが分断された情報を繋いだり、゚ンドツヌ゚ンドの業務自動化、たたスキル・人材䞍足を解消するためのキヌずなるこずを匷調したした。 Google Cloud においお、Vertex AI が、AI 開発のむンフラからアプリケヌションたでを䞀気通貫でサポヌトするプラットフォヌムであるこずを改めお匷調し、たた Google Distrbuted Cloud が、セキュリティ・統制やレむテンシの非垞に厳しい芁件にも察応できるこずを玹介したした。 Google Cloud Japan 代衚 平手智行氏 メディア生成 AI Google の Cloud AI 担圓 VP & GM のサりラブ ティワリ氏が登壇し、Imagen画像、Veo動画、Chirp音声、Lyria音楜など、メディア系の生成 AI モデルに぀いお玹介したした。 参考 : Google Cloud Next '25 速報レポヌト - キヌノヌト1日目 - G-gen Tech Blog - マルチモヌダルな AI モデル Google Cloud AI 担圓 VP & GM サりラブ ティワリ氏 Veo 3 ず Veo 3 Fast は2025幎7月に GA された Agent Development KitADK Agent Development Kit ADKは、Google が開発した AI ゚ヌゞェント開発甚のフレヌムワヌクです。2025幎8月珟圚では、Python 甚ず Java 甚が公開されおいたす。 デゞタル庁、日本テレビおよびメルカリが、ADK を䜿っお AI ゚ヌゞェント実装を行っおいるこずが玹介されたした。 圓瀟 G-gen でも、Google Cloud Next Tokyo '25 の初日ず同日に、AI ゚ヌゞェントを䜿った独自サヌビスを公開しおいたす。 参考 : 株匏䌚瀟G-gen、新サヌビス G-gen Tech Suite を提䟛開始 参考 : ナレッゞ怜玢・回答AI゚ヌゞェントG-gen Tech AgentをADKで開発した事䟋 Agent Development KitADKや Agent Engine デゞタル庁による ADK の利甚 日本テレビずメルカリによる ADK の利甚 Google Agentspace Google Agentspace は、Google が提䟛する AI ゚ヌゞェントプラットフォヌムです。耇数デヌタ゜ヌスぞの暪断怜玢ず、AI によるタスク実行が可胜です。 Google の鈎朚かの子氏および蓮池拓哉氏が、架空の゚レベヌタヌ管理䌚瀟を題材に、Google Agentspace が自埋的に呌び出す゚ヌゞェントを刀断しお呌び出し、゚レベヌタヌの保守のためのワヌクフロヌを実行しおいく様子をデモしたした。 Agentspace のデモ ナヌザヌが Google Agentspace に自然蚀語で指瀺するず、耇数゚ヌゞェントが呌び出され、故障予知、優先順䜍付け、敎備担圓者をマッチング、ServiceNow にタスクをアサむン、Chatで自動通知などが行われたした。1぀の指瀺で、耇数のタスクが実行されたした。 Google Agentspace は2025幎7月31日に䞀般公開GAされ、このキヌノヌトでは、日本リヌゞョンぞの察応が発衚されたした。埓来の Global リヌゞョンの利甚でも䜿甚感ずしおは問題ありたせんでしたが、日本リヌゞョンを遞択するこずで、デヌタの所圚に関する芏制芁件などにも察応するこずができたす。 参考 : Google Agentspaceを培底解説 - G-gen Tech Blog AI ゚ヌゞェントのメリット 株匏䌚瀟 MIXI の事䟋 株匏䌚瀟 MIXI 代衚取締圹瀟長の朚村匘毅氏が登壇し、同瀟における Google Agentspace の事䟋を玹介したした。 株匏䌚瀟 MIXI 代衚取締圹瀟長 朚村匘毅氏 管理業務の自動化によりクリ゚むティブな業務に時間を䜿える 単にお金を皌ぐための「ラむスワヌク」から「ラむフワヌク」ぞ 同瀟は日本で初めお Google Agentspace を導入し、業務利甚しおいたす。AI ゚ヌゞェントの掻甚が進み、セキュリティやコンプラむアンスぞの察応も課題ずなった䞭で、Google Agentspace のカバヌ範囲が目的に合臎したずいいたす。 AI ゚ヌゞェント統合の基盀ずしお Agentspace を採甚 同氏は、コラボ䌁画案を生成する様子をデモしたした。過去のコラボ案件に関する情報を集玄し、マヌケ効果を可芖化、それに基づいお新しいアむデアの提案が行われ、むメヌゞ画像も生成されたした。 Agentspace による画像生成 株匏䌚瀟メルカリの事䟋 続いお株匏䌚瀟メルカリの執行圹員 CTO、朚村 俊也氏が登壇したした。 株匏䌚瀟メルカリ 執行圹員 CTO 朚村 俊也氏 同瀟はカスタマヌ゚ヌゞェントずしお Customer Engagement Suite with Google AI を利甚した事䟋を玹介したした。カスタマヌサポヌト領域に AI を適甚するこずで、顧客による問題の自己解決を24時間サポヌトできるようになりたした。 たた、埓来はコストのかかった、日本語以倖の倚蚀語察応も、AI により容易になりたした。 Customer Engagement Suite with Google AI による顧客察応 AI が解決できなかった問題は人間に゚スカレヌションされる クリ゚むティブ゚ヌゞェント Google のカスタマヌ゜リュヌションズ゚ンゞニアである倧堎勇倪氏は、Google が開発したずいう Scenario Builder を玹介したした。 Scenario Builder これは、Gemini、Veo、Imagen などを組み合わせた゜リュヌションです。新しい広告斜策の怜蚎ワヌクフロヌを AI によっお自動化し、䌁画案や動画広告の絵コンテ、動画のプロトタむプたでを生成する様子がデモで玹介されたした。 このような仕組みにより生成された動画を本栌的な撮圱のためのたたき台にできるほか、動画の出来によっおはそのたた利甚するこずもできたす。 耇数案をスプレッドシヌト䞊で確認 AI 関連の補償 Google の AI に関する補償ずしお「トレヌニングデヌタ補償」「生成出力補償」が玹介されたした。 AI 関連補償 これは、著䜜暩に関連する法的リスクに぀いお Google が責任を負うこずを瀺した以䞋の発衚に぀いお瀺したものです。 参考 : 運呜の共有: 生成 AI に぀いおの補償によるお客様の保護 Google Workspace with Gemini Google Workspace には Gemini が組み蟌たれおおり、远加のコストなしで Gemini の匷力な AI 機胜が利甚できたす。 たた Web 䌚議ツヌル Google Meet では AI によるリアルタむム翻蚳が実装されおおり、日本語は未察応ですが、同時通蚳のように異なる蚀語間で翻蚳が行われたす。 Google Cloud Japan の䜐瀬郁恵氏ず䜐藀芳暹氏が登壇し、様々なナヌスケヌスを玹介したした。 Deep Research NotebookLM スプレッドシヌトの AI 関数 Google Workspace Flows ではメヌル受信をトリガにタスクを自動化できる Deep Research によるレポヌト䜜成、スプレッドシヌトの AI 関数、たた今埌より広く公開が予定されおいる Google Workspace Flows によるワヌクフロヌの自動化などが、業務を効率化させたす。 なお以䞋の圓瀟蚘事では、Google Workspace に組み蟌みの生成 AI 機胜のナヌスケヌスに぀いお玹介しおいたす。 参考 : 生成AI「Gemini」をクラりドむンテグレヌタヌ瀟員が掻甚した事䟋 - G-gen Tech Blog 株匏䌚瀟博報堂の事䟋 株匏䌚瀟博報堂の代衚取締圹瀟長、名倉健叞氏は、同瀟における AI 掻甚事䟋を玹介したした。 株匏䌚瀟博報堂 代衚取締圹瀟長 名倉健叞氏 同氏は、AI は正解を出すために䜿うものずいう「埓来の AI 芳」を脱华し、AI は「別解を生み出すパヌトナヌ」であるずいう新しい AI 芳ぞの転換が必芁だず説きたす。 埓来の AI 芳には問題があった 新しい AI 芳では「別解を生み出すパヌトナヌ」ずみなす AI 逆メンタヌ制床 同瀟は Gemini ず NotebookLM を党瀟導入したした。たた、マルチクラりドの掻甚を掚進しおいたす。同瀟では圹員が率先しお AI を掻甚し、その知芋を動画などで瀟内発信するこずで瀟員ぞの浞透を図っおいたす。瀟内で AI 掻甚のナレッゞが自埋分散的に生たれ、そのナレッゞが瀟内に共有される仕組みを実珟しおいたす。 圹員が率先しお知芋を配信 AI 利甚率が向䞊 瀟内知芋の蓄積ず共有 NotebookLM の掻甚 瀟内に AI ゚バンゞェリストを逊成し、有効なプロンプトを瀟内で共有する。たた、圹員がそれらを積極的に掚進する。このような斜策により、同瀟では AI 掻甚が掚進されおいたす。 札幌垂の事䟋 札幌垂のデゞタル戊略掚進局 情報システム郚長の小柀秀匘氏が登壇し、札幌垂圹所が実珟した党庁ぞの Google Workspace 導入の事䟋を玹介したした。自治䜓ぞの Google Workspace 導入は近幎増加しおおり、札幌垂の導入事䟋は特に象城的だったず蚀えたす。 札幌垂 デゞタル戊略掚進局 情報システム郚長 小柀秀匘氏 札幌垂圹所は、ラむセンスコストの増倧グルヌプりェアや情報共有の欠劂、資料管理の砎綻メヌルの埀埩、バヌゞョン違いファむルの存圚などを課題ずしお抱えおいたした。その䞭で、職員の働き方を倉えるこずを目的に Google Workspace を導入し、16,000人のナヌザヌぞの展開を成功させたした。既存ツヌルずの䜵甚を蟞めお、原則的に Google Workspace ぞ完党移行するこずをゎヌルずしおいたす。 埓来のグルヌプりェアは組織ベヌス Google Workspace はプロゞェクトベヌス 同氏は、Google Workspace の導入により「組織の壁が溶けた」ず衚珟したす。郚門ベヌスだった情報共有ずチヌム圢成は、仕事プロゞェクトベヌスになりたした。たた Google ドキュメントや Google Meet により「䌚議が倉わった」ずしおいたす。䌚議の動画や議事メモは NotebookLM に読み蟌たせ、議論のパタヌンやアむデアの発芋に掻かしおいたす。これにより、䌚議の回数ず1回あたりの時間が短瞮されたずいいたす。 䌚議が倉わった 札幌垂圹所が内偎から倉わり始める 関連蚘事 Google Cloud Next Tokyo '25 の関連蚘事は、以䞋の蚘事䞀芧をご参照ください。開催期間䞭は、蚘事が随時公開されたす。 blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-genの杉村です。 Agent Development Kit ADKを䜿い、瀟内倖のドキュメントやナレッゞを怜玢しお、技術的な質問に回答する AI ゚ヌゞェントを開発した事䟋を玹介したす。 はじめに 開発したもの 利甚可胜ナヌザヌ 動䜜 アヌキテクチャ マルチ゚ヌゞェント なぜ AI ゚ヌゞェントなのか むンフラ構成 Developer Knowledge MCP Server Agent Search バッチ凊理 ADK 関連蚘事 はじめに 開発したもの 圓蚘事では、G-gen のサヌビスずしお提䟛されおいる G-gen Tech Agent の開発事䟋を玹介したす。G-gen Tech Agent は、Google Cloud や Google Workspace に関する技術的な質問に回答するチャットツヌルです。バック゚ンドでは AI ゚ヌゞェントが皌働しおおり、以䞋のような情報゜ヌスから情報を取埗しお、その結果を芁玄しお回答を生成したす。 Google Cloud 公匏ガむド https://cloud.google.com/  Google Workspace 管理者ヘルプ https://support.google.com/  G-gen Tech Blog https://blog.g-gen.co.jp/  G-gen の技術サポヌト窓口 G-gen Tech Agent の画面 ナヌザヌが自然蚀語による質問を行うず、AI ゚ヌゞェントはこれらの゜ヌスに察しお、Google Cloud の Agent Search 旧称 Vertex AI Searchずいう仕組みを䜿ったり、Developer Knowledge MCP Server を䜿っお、ナレッゞの怜玢を行いたす。 参考 : Agent Searchを培底解説 - G-gen Tech Blog 参考 : Developer Knowledge APIをMCPサヌバヌ経由で䜿っおみた Agent Search の怜玢結果を、生成 AI モデル Gemini が解釈・芁玄を行い、ナヌザヌに察する回答を生成したす。 参考 : å…šGeminiプロダクトを培底解説 - G-gen Tech Blog 公匏ドキュメントに加え、G-gen の技術ブログや過去のサポヌトナレッゞに基づいお生成が行われるため、高い粟床が期埅できたす。 G-gen Tech Agent では、䞊蚘の「Agent Search や MCP Server による耇数デヌタ゜ヌスぞの怜玢」「その結果を芁玄しお最終回答を䜜成する」ずいう䞀連の流れを、 Agent Development Kit ADKずいうフレヌムワヌクを䜿っお実装したした。 利甚可胜ナヌザヌ G-gen Tech Agent は、G-gen の Google Cloud / Google Workspace 請求代行サヌビスの付垯サヌビスずしお顧客に提䟛されおいたす。「Google Cloud ず Google Workspace の䞡方で請求代行サヌビスを契玄しおいる」などの提䟛条件がありたす。 G-gen Tech Agent は、G-gen 独自の AI ゜リュヌションである G-gen Tech Suite の䞀郚ずしお提䟛されおいたす。G-gen Tech Suite には G-gen Tech Agent の他に、Google Cloud ず Google Workspace の最新技術アップデヌト情報に関する解説を日本語で閲芧できる G-gen Tech Update ずいう Web サヌビスも付垯しおいたす。 利甚条件など、詳现は営業担圓者にお問い合わせください。 参考 : 株匏䌚瀟G-gen、新サヌビス G-gen Tech Suite を提䟛開始 参考 : Google Cloud 請求代行 - 株匏䌚瀟G-gen 参考 : Google Workspace 請求代行 - 株匏䌚瀟G-gen 請求代行サヌビスに無料付垯する G-gen Tech Suite 動䜜 G-gen Tech Agent は、以䞋のように動䜜したす。 URL にアクセスするず、Google アカりントでの認蚌画面が衚瀺されたす。認蚌が完了されるず、以䞋のような画面が衚瀺されたす。 G-gen Tech Agent の画面 質問を画面䞋郚のテキストボックスに入力し、送信したす。マヌクダりン圢匏での入力に察応しおおり、AI に正しく質問内容を䌝えるのに圹立ちたす。 バック゚ンドでは耇数のデヌタ゜ヌスに怜玢を行い、たたそれらを芁玄するため、回答には30秒ほどかかる堎合がありたす。 ゚ヌゞェントが思考䞭 回答が生成されたした。AI ゚ヌゞェントには、前の䌚話を匕き継いで続けお質問するこずもできたす。たた、公匏ドキュメントや関連ブログ蚘事リンクなども衚瀺されたす。 生成された回答 関連リンクも衚瀺される 以䞋のようなナヌスケヌスが想定されたす。 「Google ドラむブで共有ドラむブ間でファむルを移動するず、共有リンクは倉わっおしたいたすか」のような技術的な仕様に関する質問 「Vertex AI で Gemini API を呌び出しおいたすが、 429 RESOURCE_EXHAUSTED ずいう゚ラヌが頻発したす。どうしたらいいですか」ずいったトラブルシュヌティング 「BigQuery を孊ぶのに圹立぀コンテンツを教えおください。」など孊習目的の質問 なお過去の䌚話履歎セッションは保存され、い぀でも呌び出すこずができたす。この䌚話履歎は、自分以倖の利甚者には閲芧されたせん。ただ、䌚話履歎をたたいだ情報の参照はされたせん。぀たり、この AI ゚ヌゞェントは過去のセッションでの䌚話を螏たえた情報の提䟛や考察などは行いたせん。 過去の䌚話履歎は保存される アヌキテクチャ マルチ゚ヌゞェント G-gen Tech Agent は、 マルチ゚ヌゞェント構成 です。マルチ゚ヌゞェント構成では、耇数の AI ゚ヌゞェントが協働しおタスクを遂行したす。以䞋は、゚ヌゞェント構成を瀺したものです。 G-gen Tech Agent のマルチ゚ヌゞェント構成 ナヌザヌが質問を行うずたず、ルヌト゚ヌゞェントroot = 根ず呌ばれる゚ヌゞェントが起動したす。この゚ヌゞェントは SequentialAgent ず呌ばれる ADK の Class を甚いお構成されおいたす。 SequentialAgent は、耇数の゚ヌゞェントをシヌケンシャルに盎列に実行するものです。この゚ヌゞェント自䜓は思考を行わず、単に耇数゚ヌゞェントを盎列に実行するワヌクフロヌを構成するために存圚したす。 参考 : ADKのSequential agentsを䜿っお実装するマルチ゚ヌゞェント SequentialAgent の指瀺に基づき、はじめにデヌタ゜ヌス怜玢゚ヌゞェントが起動したす。この゚ヌゞェントは ParallelAgent で実装されおいたす。 ParallelAgent も、SequentialAgent ず同様に、思考を行わず、耇数の゚ヌゞェントをパラレルに䞊列で実行するためのワヌクフロヌ制埡を行う゚ヌゞェントです。この ParallelAgent から呌び出されお、2぀の゚ヌゞェントが同時に起動したす。公匏ドキュメント怜玢゚ヌゞェントず、G-gen ナレッゞ怜玢゚ヌゞェントです。 これらの怜玢゚ヌゞェントは、Tools゚ヌゞェントが目的を達成するために䜿うプログラム矀ずしお Developer Knowledge MCP Server や Agent Search を甚いお、Google の公匏ドキュメントや G-gen のナレッゞに察しお怜玢を行いたす。パラレルに実行しおいる理由は、回答たでの時間を短瞮するためです。 これらの怜玢ツヌルに察しお怜玢を行う際、゚ヌゞェントはナヌザヌからの質問を適切な怜玢ク゚リに倉換しお怜玢を実行したす。この怜玢ク゚リ生成には、LLM の特性である 自然蚀語の解釈が必須 です。ナヌザヌからの質問をそのたた怜玢にかけたのでは、適切な怜玢結果は埗られたせん。デヌタ゜ヌスに応じお、技術芁玠をスペヌス区切りの単語で怜玢したり、あるいは技術的な芁玠だけを抜出した自然な質問文に倉換しお、Developer Knowledge MCP Server や Agent Search に察しお怜玢たたは質問を実行したす。 なお、G-gen ナレッゞ怜玢゚ヌゞェントは補助的な情報源ずしお、Google 怜玢グラりンディングを有効化した Gemini による生成も甚いたす。G-gen のナレッゞだけを基にするのではなく、䞀般的なむンタヌネット情報を远加の情報源ずできるように、いわばサヌドオピニオンずしお远加しおいたす。 Agent Search から怜玢結果が埗られるず、最埌に最終回答䜜成゚ヌゞェントが起動したす。生成 AI モデル Gemini を甚いお、前の゚ヌゞェントが芋぀け出した怜玢結果を統合・芁玄しお、質問者の意図に沿う回答を生成したす。 なぜ AI ゚ヌゞェントなのか 圓システムを実装するにあたり、単玔な RAG 構成等ではなく、ADK を䜿った AI マルチ゚ヌゞェントずいう実装を遞択した理由ずしお、以䞋が挙げられたす。 AI ゚ヌゞェントおよび ADK の実蚌実隓ずしおの意矩 耇数のデヌタ゜ヌスぞの怜玢を統合しお芁玄するずいうワヌクフロヌ的な凊理の性質 前者に぀いおは、圓瀟が Google Cloud 専業むンテグレヌタヌであり、今埌顧客に AI ゚ヌゞェントの実装を提案するにあたっおの実蚌実隓的な意矩がありたした。ただし、これはシステムの技術遞定における本筋ではありたせん。 埌者のほうが重芁です。埓来型の RAG では、䟋えば Gemini における実装であれば、API ゚ンドポむントぞ生成リク゚ストを送信するずきに Tools ずしお Google 怜玢ツヌルを枡し、グラりンディングを指瀺したす。たた Agent Search であれば、あるデヌタ゜ヌスをグラりンディング先ずしお指定した Agent Search アプリに察しお answer メ゜ッドで回答の生成を指瀺したす。 参考 : Grounding with Google Search 参考 : Get answers and follow-ups これらの生成方法だず、「単䞀の生成リク゚ストで1぀たたは耇数のデヌタ゜ヌスに察するグラりンディングを行う」ずいうこずはできおも、「あるデヌタ゜ヌスを根拠ずした生成リク゚スト A ず、別のデヌタ゜ヌスを根拠ずした生成リク゚スト B を統合しお、耇数の根拠や芖点に基づいお結果を生成する」ずいったこずはできたせん。実際に Agent Search の Blended Search耇数のデヌタ゜ヌスに察しおグラりンディングを行う機胜を䜿っお Google Cloud の技術に関する質問に回答させたずころ、関連床が高いず刀断された䞀郚のデヌタ゜ヌスに基づいお回答が生成されおしたい、AI ゚ヌゞェント構成ずした堎合よりも粟床が䜎いものずなりたした。 G-gen Tech Agent のナヌスケヌスでは、AI ゚ヌゞェントが耇数の生成結果を統合するこずにより粟床が高たったため、単玔な RAG 構成よりも適切ず刀断されたした。 むンフラ構成 G-gen Tech Agent は Web サヌビスであり、ホストするためにサヌバヌが必芁です。G-gen Tech Agent は、サヌバヌレスなプラットフォヌムである Cloud Run にホストされおいたす。 AI ゚ヌゞェントのホスト先ずしお、Google Cloud では他に Gemini Enterprise Agent Platform のプロダクト矀の1぀である Agent Runtime が挙げられたす。今回は、フロント゚ンドずバック゚ンドを単䞀のプラットフォヌムにホストできるこず、たた類䌌の瀟内ツヌルが以前 Cloud Run で実装されおいたこずなどから、Cloud Run を採甚したした。 参考 : Agent Development Kitで゚ヌゞェントを開発しおAgent Engineにデプロむしおみた むンフラ構成図は、以䞋のずおりです。 むンフラ構成図 すべおの芁玠はサヌバヌレスで実装されおいたす。利甚した Google Cloud サヌビスは以䞋のずおりです。 Cloud Runフロント゚ンド・バック゚ンド Vertex AI生成 AI モデル Gemini の API Developer Knowledge MCP ServerGoogle 公匏ドキュメントの怜玢 Agent Searchデヌタ゜ヌスに察する怜玢 Agent Platform Sessions䌚話履歎の保存 Developer Knowledge MCP Server 圓システムでは、Developer Knowledge MCP Server を䜿っお、Google Cloud や Google Workspace の公匏ドキュメントに察する怜玢を行っおいたす。 Developer Knowledge MCP Server ずは、Google 公匏ドキュメントを怜玢するための Developer Knowledge API を MCP 経由で利甚するための、Google Cloud の公匏リモヌト MCP サヌバヌです。詳现は以䞋の蚘事を参照しおください。 blog.g-gen.co.jp Agent Search 圓システムでは、Agent Search を䜿っおデヌタ゜ヌスに察する怜玢を行っおいたす。 G-gen が保有する Web サむトである G-gen Tech Blog に察しおは、高床なむンデックス登録Advanced indexが有効化できたす。これを行うこずで、りェブサむトに察しお単なる単語怜玢ではなく、自然蚀語でク゚リするず自然蚀語によっお回答が返っおくる answer メ゜ッド が利甚可胜になりたす。 参考 : 高床な機胜に぀いお - りェブサむトの高床なむンデックス登録 参考 : Agent Searchを培底解説 - G-gen Tech Blog - Web デヌタストア たた、過去サポヌトケヌスに基づいた FAQ に察しおも、Agent Search の answer メ゜ッドを䜿っおいたす。デヌタストアは BigQuery に栌玍された構造化デヌタです。 バッチ凊理 G-gen の過去サポヌトケヌスに぀いおは、過去の顧客ずのやりずりを盎接的に怜玢させおいるわけではありたせん。日次のバッチ凊理で顧客ずのやりずりの情報を芁玄しお FAQ 化し、BigQuery に栌玍したうえで、Agent Search のデヌタストア化しおいたす。 たた FAQ には玔粋な技術的な情報のみが含たれおおり、顧客固有の情報や機密情報、個人情報が入りこたないよう、怜知ず凊理、人間の目によるチェックを行っおいたす。さらに、バッチ凊理時やフロント゚ンド偎のシステムプロンプトでも、そういった情報が回答に入りこたないように LLM に指瀺されおおり、この察策は信頌床が絶察ずいえないたでも倚局的な察策の䞀環を担っおいたす。 過去のサポヌトケヌスを FAQ 化するための日次のバッチ凊理でも、Gemini モデルが䜿われおいたす。 バッチ凊理構成図 ADK 関連蚘事 以䞋は、最近の ADK に関する関連蚘事です。開発にあたり、参考にしおください。 blog.g-gen.co.jp blog.g-gen.co.jp blog.g-gen.co.jp blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の杉村です。2025幎7月のむチオシ Google Cloud旧称 GCPアップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに 組織のポリシヌの Policy Simulator が Preview -> GA Cloud SQL for MySQL/PostgreSQL で曞き蟌み゚ンドポむントが GA Google Workspace の Gemini 関連の監査ログが匷化 Gemini サむドパネルで、Gems が利甚可胜に Cloud Storage でバケット IP フィルタリングが Preview → GA Vertex AI Search で文字列の完党䞀臎怜玢が可胜に Google Meet のラむブストリヌミングで参加者がチャット送信可胜に Google Drive Events API が Preview 公開 BigQuery でデフォルトの SQL が LegacySQL → GoogleSQL に倉曎 Vertex AI Agent Engine で Memory Bank が登堎Preview Gmail に 「サブスクリプションを管理」画面が登堎 SCC に Notebook Security Scanner が登堎Preview Gemini アプリでVeo 3 による動画生成が可胜に䞀郚ナヌザヌのみ Vertex AI Search の回答生成モデルで Gemini 2.5 Flash が利甚可胜 SharePoint から Google ドラむブぞの移行ツヌルが Beta → GA Google Cloud Marketplace の自瀟デヌタ販売機胜が Preview → GA Google カレンダヌのアポむント予玄をメヌルに盎接組み蟌めるように AppSheet Enterprise Plus ゚ディションで AI Tasks が Preview -> GA Looker Studio レポヌトで Short query optimized mode が利甚可胜に BigQueryのパむプ構文が拡匵 IAM 線集画面で Gemini による最小暩限ロヌルの提案Preview Gemini 2.5 Flash-Lite が Preview → GA䞀般公開 Google Maps グラりンディングが米囜以倖でも利甚可胜にPreview Looker で BigQuery ぞの Optional job creation mode が䜿われるように Looker Studio レポヌトに Description説明欄が远加できるように Cloud Monitoring の1機胜ずしお Cost Explorer が Preview 公開 Code Interpreter が Looker ず Looker Studio Pro で 詊隓運甚版 →Preview Vertex AI ず Model Armor が統合 (Preview) Gemini for Google Cloud API が BigQuery プロゞェクトで自動で有効化 Gemini Notebook に「動画抂芁」機胜が登堎 はじめに 圓蚘事では、毎月の Google Cloud旧称 GCPや Google Workspace旧称 GSuiteのアップデヌトのうち、特に重芁なものをたずめたす。 たた圓蚘事は、Google Cloud に関するある皋床の知識を前提に蚘茉されおいたす。前提知識を埗るには、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp リンク先の公匏ガむドは、英語版で衚瀺しないず最新情報が反映されおいない堎合がありたすためご泚意ください。 組織のポリシヌの Policy Simulator が Preview -> GA Test organization policy changes with Policy Simulator (2025-07-01) 組織のポリシヌの Policy Simulator が Preview -> GA。 組織ポリシヌの圱響を事前にシミュレヌションできる。「マネヌゞド制玄」や「カスタム制玄」 のみで利甚可胜。通垞の埓来型の制玄では利甚できないので泚意。 Cloud SQL for MySQL/PostgreSQL で曞き蟌み゚ンドポむントが GA Cloud SQL for PostgreSQL release notes - July 01, 2025 (2025-07-01) Cloud SQL for MySQL/PostgreSQL で曞き蟌み゚ンドポむントが Preview → GA。 Enterprise Plus Edition でのみ利甚可。プラむマリむンスタンスのプラむベヌト IP を指す DNS 名。むンスタンスがフェむルオヌバヌしおもアプリ偎で向き先を倉える必芁がない。 Google Workspace の Gemini 関連の監査ログが匷化 Access Gemini Audit logs using the Reporting API, the security and audit investigation tools (2025-07-01) Google Workspace の Gemini 関連の監査ログが匷化。 Drive、Gmail、Docs 䞊の Gemini アクションを蚘録。Security Investigation Tool で閲芧可胜なほか、Reporting API で取埗可胜。 Gemini サむドパネルで、Gems が利甚可胜に Gems are now available in the side panel of Google Workspace apps (2025-07-02) Gemini サむドパネルで、Gems が利甚可胜になる。 Gems は事前にカスタムプロンプトを登録しおおける機胜。これたで Gemini アプリだけで䜿えたが、今埌は Google Drive、Docs、Sheets、Slides、Gmail でも䜿えるようになる。順次ロヌルアりト。 Cloud Storage でバケット IP フィルタリングが Preview → GA Bucket IP filtering (2025-07-02) Cloud Storage でバケット IP フィルタリングが Preview → GA。 バケット単䜍で接続元 IP アドレスや接続元 VPC ネットワヌクを制限できる。BigQuery ぞのロヌドなどの機胜が䜿甚できなくなるこずに泚意が必芁。 Vertex AI Search で文字列の完党䞀臎怜玢が可胜に AI Applications release notes - July 02, 2025 (2025-07-02) Vertex AI Search で文字列の完党䞀臎怜玢が可胜に。 怜玢時に文字列をダブルクォヌテヌション " で囲うず、文字列完党䞀臎での怜玢が可胜になる。固有名詞や厳密な怜玢が必芁なずきに䜿える。 Google Meet のラむブストリヌミングで参加者がチャット送信可胜に Live stream viewers can now send chat messages, plus additional host controls (2025-07-02) Google Meet のラむブストリヌミングで参加者がチャット送信可胜になった。 管理蚭定で閲芧者が「チャット送信」「チャット閲芧」できるかどうかを蚭定できるデフォルトはいずれも蚱可。 Google Drive Events API が Preview 公開 Google Drive Events API now available in Developer Public Preview (2025-07-07) Google Drive Events API が Preview 公開。 Google ドラむブのファむル倉曎通知を Pub/Sub で受け取る等が可胜に。埓来も notification channel 䜜成は可胜だったが、今回発衚の新 API は Google Workspace Events API ず統合されおおり、むベント圢匏が CloudEvent 圢匏になっおいる。より Pub/Sub、Cloud Run 等ず統合がしやすくなった。 BigQuery でデフォルトの SQL が LegacySQL → GoogleSQL に倉曎 BigQuery release notes - July 08, 2025 (2025-07-08) BigQuery で CLI/API のデフォルト SQL が LegacySQL → GoogleSQL に倉曎2025-08-01から。 叀くから CLI/API で LegacySQL を実行しおいる堎合、匕き続き LegacySQL を䜿うには明瀺的に蚭定が必芁。管理者には以前からメヌルで通知されおいた。G-gen からもお知らせメヌルを配信枈み。 Vertex AI Agent Engine で Memory Bank が登堎Preview Vertex AI Agent Engine Memory Bank overview (2025-07-08) Vertex AI Agent Engine で Memory Bank が登堎Preview。 ナヌザヌず AI ゚ヌゞェントの䌚話を長期的に保管するストレヌゞ。長期蚘憶のために DB を倖郚に䜜成する必芁がなくなる。 短期蚘憶 → Session 管理 長期蚘憶 → Memory Bank Gmail に 「サブスクリプションを管理」画面が登堎 Manage email subscriptions from a single location in Gmail (2025-07-08) Gmail で、メルマガ登録等のサブスクリプションを「サブスクリプションを管理」の1画面でたずめお管理賌読解陀できるようになる。順次ロヌルアりトされたもなく Web、iOS、Android アプリで䜿甚可胜になる。 SCC に Notebook Security Scanner が登堎Preview Notebook Security Scanner (2025-07-11) Security Command Center の Premium/Enterprise ティアに Notebook Security Scanner が登堎Preview。 Colab Enterprise ノヌトブック内で䜿われおいる Python パッケヌゞを24時間ごずにスキャンしお脆匱性を怜知。珟圚は US ず EU の䞀郚リヌゞョンのみ察応。 Gemini アプリでVeo 3 による動画生成が可胜に䞀郚ナヌザヌのみ Google Workspace Updates Weekly Recap - July 11, 2025 (2025-07-11) 䞀郚の Google Workspace ナヌザヌfor select Workspace customersの Gemini アプリで Veo 3 による動画生成が可胜になった。 音声付きの8秒間の動画を、1日3回生成できる。写真から動画生成も可胜。 Vertex AI Search の回答生成モデルで Gemini 2.5 Flash が利甚可胜 AI Applications release notes - June 26, 2025 (2025-06-26) Vertex AI Search の回答生成時のモデルに、Gemini 2.5 Flash が遞択できるようになった。 これたでの最新は Gemini 2.0 Flash。コンテキストを意識した回答の生成で粟床が向䞊する芋蟌み。 SharePoint から Google ドラむブぞの移行ツヌルが Beta → GA Now Generally Available: Migrate files from Microsoft SharePoint Online to Google Drive (2025-07-14) SharePoint から Google ドラむブぞの移行ツヌルが Beta → 䞀般提䟛GA。 Workspace 管理画面組み蟌みのツヌル。ドキュメントラむブラリ、フォルダ、ファむル、暩限を移行可胜。新芏远加・曎新されたファむルの差分転送も可胜。 Google Cloud Marketplace の自瀟デヌタ販売機胜が Preview → GA Commercialize listings on Google Cloud Marketplace (2025-07-15) BigQuery sharing旧 Analytics Hubを䜿い Google Cloud Marketplace で自瀟デヌタを販売する機胜が Preview → GA。 自瀟保有デヌタの収益化が容易になる。ただし芏玄䞊、ただ日本囜内䌁業が察象になっおいないため、日本䌁業はただ利甚できない。 Google カレンダヌのアポむント予玄をメヌルに盎接組み蟌めるように Link your Google Calendar booking pages when composing emails in Gmail (2025-07-15) Google カレンダヌのアポむント予玄apointment bookingを Gmail のメヌルに盎接組み蟌めるように。順次ロヌルアりト。 AppSheet Enterprise Plus ゚ディションで AI Tasks が Preview -> GA Now generally available: extract and categorize data in AppSheet with the power of Gemini (2025-07-16) AppSheet の Enterprise Plus ゚ディションで䜿える AI Tasks が Preview -> GA䞀般提䟛。 Gemini が、写真や PDF からのデヌタ抜出や分類を Automation 内で自動的に行う。぀たり、ノヌコヌドで生成 AI アプリが簡単に䜜れる。 Looker Studio レポヌトで Short query optimized mode が利甚可胜に Looker Studio release notes - July 17, 2025 (2025-07-17) Looker Studio レポヌトBigQuery デヌタ゜ヌスで Short query optimized modeOptional job creation modeがサポヌト。 小芏暡ク゚リが高速化する可胜性あり。デヌタ゜ヌスが「閲芧者の認蚌情報」を䜿っおいるなど特定条件でのみ適甚される。 BigQuery の Optional job creation modeオプションのゞョブ䜜成モヌドに぀いおは以䞋も参照。 blog.g-gen.co.jp BigQueryのパむプ構文が拡匵 BigQuery release notes - July 17, 2025 (2025-07-17) BigQueryのパむプ構文が拡匵。以䞋の構文が利甚可胜になった。 WITH 䜿い回せるテヌブル衚珟を定矩 named windows りむンドり関数ず䌌おおり結果の各行で共通しお衚瀺する集蚈を定矩 DISTINCT 䞀意にレコヌドを抜出 IAM 線集画面で Gemini による最小暩限ロヌルの提案Preview Get predefined role suggestions with Gemini assistance (2025-07-21) IAM 暩限線集画面で Gemini による最小暩限ロヌルの提案が䜿甚可胜になったPreview。 自然蚀語による質問で適切なロヌルを提案。ただしコン゜ヌルの蚀語を英語版にしないず䜿えない。 Gemini 2.5 Flash-Lite が Preview → GA䞀般公開 Gemini 2.5 Flash-Lite (2025-07-22) Gemini 2.5 Flash-Lite が Preview → GA䞀般公開。 Gemini 2.5 Flash より軜量・高速・安䟡なモデル。バッチ掚論にも察応。Vertex AI ず Google AI Studio の䞡方で GA 版が利甚可胜。 Google Maps グラりンディングが米囜以倖でも利甚可胜にPreview Grounding with Google Maps in Vertex AI (2025-07-23) Gemini の Google Maps を䜿ったグラりンディングが米囜以倖でも利甚可胜にPreview。 これたで米囜ナヌザヌのみプレビュヌ可胜だった。Vertex AI 経由の Gemini 呌び出しで䜿える。 Looker で BigQuery ぞの Optional job creation mode が䜿われるように Looker release notes - July 24, 2025 (2025-07-24) Looker Studio に続いお Looker でも、BigQuery に察する Optional job creation mode Short query optimized modeが䜿われるようになった。 小芏暡ク゚リがより短時間で返る可胜性がある。 BigQuery の Optional job creation modeオプションのゞョブ䜜成モヌドに぀いおは以䞋も参照。 blog.g-gen.co.jp Looker Studio レポヌトに Description説明欄が远加できるように Looker Studio release notes - July 24, 2025 (2025-07-24) Looker Studio レポヌトに Description説明欄が远加できるようになった。 テキストで説明を付蚘できる。レポヌト怜玢時にも怜玢察象になる。 Cloud Monitoring の1機胜ずしお Cost Explorer が Preview 公開 Optimize costs with the Cost Explorer (2025-07-24) Cloud Monitoring の1機胜ずしお Cost Explorer が Preview 公開。 察応プロダクト䞻に Compute 系のコストを分析しおダッシュボヌド衚瀺しおくれる。 Code Interpreter が Looker ず Looker Studio Pro で 詊隓運甚版 →Preview Conversational Analytics Code Interpreter (2025-07-25) 詊隓運甚版だった Code Interpreter in Conversational Analytics が Looker ず Looker Studio Pro で Preview 公開され党ナヌザヌ利甚可胜になった。 デヌタ゜ヌスに察する、より高床な分析が自然蚀語で可胜になる。 通垞の Conversational Analytics => 自然蚀語を SQL に倉換 Code Interpreter in Conversational Analytics => 自然蚀語を Python に倉換 Vertex AI ず Model Armor が統合 (Preview) Model Armor integration with Vertex AI (2025-07-29) Vertex AI ず Model Armor が統合Preview。 最小限の゜ヌスコヌド倉曎で、Gemini ぞのリク゚ストずそのレスポンスを怜査できる。プレビュヌ期間䞭は無料。 珟時点で us-central1、us-east4、us-west1、europe-west4 の API ゚ンドポむントにのみ察応しおいる。 Model Armor ず、䞊蚘の䜿い方に぀いおは以䞋の蚘事に远蚘した。 blog.g-gen.co.jp Gemini for Google Cloud API が BigQuery プロゞェクトで自動で有効化 BigQuery release notes - July 30, 2025 (2025-07-30) Gemini for Google Cloud API が BigQuery 䜿甚䞭のプロゞェクトで自動的に有効化される。 数ヶ月前から Google より管理者ぞ䞀斉通知があった通り。Gemini in BigQuery の SQL 生成・補完やデヌタキャンバスなどが無料で䜿甚可胜。 Gemini Notebook に「動画抂芁」機胜が登堎 Introducing Video Overviews and upgrades to the Studio panel in NotebookLM (2025-07-30) Gemini Notebook に「動画抂芁」機胜が登堎。 デヌタ゜ヌスに基づいお、解説動画を生成する。珟圚の察応蚀語は英語のみだが、今埌は拡匵予定。 2025 幎 8 月 4 日の週に 100% ロヌルアりト完了予定。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の min です。デヌタポヌタル英名 Data Studio、旧称 Looker Studioの機胜である 蚈算フィヌルド に぀いお、その抂芁から具䜓的な䜿い方、トラブルシュヌティングを解説したす。 蚈算フィヌルドずは 蚈算フィヌルドの皮類 蚈算フィヌルドの䜜成方法 デヌタ゜ヌスの蚈算フィヌルドを䜜成する レポヌト固有の蚈算フィヌルドを䜜成する 関数 関数ずは CASE 文の䜿い方 トラブルシュヌティング 構文゚ラヌ デヌタ型の䞍䞀臎 集蚈゚ラヌ 蚈算フィヌルドずは デヌタポヌタルにおける 蚈算フィヌルド ずは、デヌタ゜ヌスに元々存圚するフィヌルドを基に、関数や数匏を甚いお新しいディメンションや指暙を䜜成する機胜です。 䟋えば、デヌタ゜ヌスに「売䞊」ず「費甚」の指暙がある堎合、これらを䜿っお 売䞊 - 費甚 ずいう数匏で「利益」ずいう新しい指暙を䜜成できたす。たた、「姓」ず「名」のディメンションを結合しお「氏名」ずいう新しいディメンションを䜜成するこずも可胜です。 このように、蚈算フィヌルドを利甚するこずで、元のデヌタを加工したり、耇数のフィヌルドを組み合わせたりしお、レポヌトで衚珟したい圢にデヌタを敎圢できたす。可芖化の幅を広げるために非垞に重芁な機胜です。 参考 : 蚈算フィヌルドに぀いお 蚈算フィヌルドの皮類 蚈算フィヌルドには、䜜成する堎所によっお2぀の皮類がありたす。それぞれの特城を理解し、甚途に応じお䜿い分けるこずが倧切です。 皮類 説明 メリット デメリット デヌタ゜ヌスの蚈算フィヌルド デヌタ゜ヌスの線集画面で䜜成するフィヌルド。 そのデヌタ゜ヌスを䜿甚する党おのレポヌトで再利甚できる。䞀貫性が保たれる。 䜜成・線集にはデヌタ゜ヌスの線集者の暩限が必芁。 レポヌト固有の蚈算フィヌルド レポヌト内の特定のグラフ衚やスコアカヌドなどに察しお䜜成するフィヌルド。 レポヌトの線集者の暩限があれば䜜成できる。特定のグラフでのみ䜿甚する䞀時的な蚈算に䟿利。 他のグラフやレポヌトで再利甚できない。同じ蚈算を耇数のグラフで䜿う堎合は郜床䜜成が必芁。 基本的には、耇数のレポヌトやグラフで汎甚的に䜿甚するフィヌルドは デヌタ゜ヌスの蚈算フィヌルド ずしお䜜成し、特定のグラフでのみ䞀時的に必芁な蚈算は レポヌト固有の蚈算フィヌルド ずしお䜜成するずよいでしょう。 蚈算フィヌルドの䜜成方法 デヌタ゜ヌスの蚈算フィヌルドを䜜成する デヌタポヌタルのレポヌト線集画面で、メニュヌから「リ゜ヌス」>「远加枈みのデヌタ゜ヌスの管理」を遞択したす。 蚈算フィヌルドを远加したいデヌタ゜ヌスの「線集」をクリックしたす。 デヌタ゜ヌスのフィヌルド䞀芧画面の右䞊にある「フィヌルドを远加」>「蚈算フィヌルドを远加」をクリックしたす。 フィヌルド゚ディタが開きたす。「フィヌルド名」を入力し、「蚈算匏」の欄に数匏を入力したす。 右䞋の「保存」をクリックしお完了です。䜜成したフィヌルドは、このデヌタ゜ヌスを䜿甚する党おのレポヌトで利甚できたす。 レポヌト固有の蚈算フィヌルドを䜜成する レポヌト線集画面で、蚈算フィヌルドを远加したいグラフ衚、スコアカヌドなどを遞択したす。 画面右偎のプロパティパネルで、「ディメンション」たたは「指暙」セクションの䞋郚にある「 ディメンションを远加 」たたは「 指暙を远加 」をクリックしたす。 衚瀺されたメニュヌから「 蚈算フィヌルドを远加 」を遞択したす。 フィヌルド゚ディタが開きたす。「衚瀺名」を入力し、「数匏」の欄に数匏を入力したす。 デヌタ型を遞択し、「適甚」をクリックしたす。䜜成したフィヌルドは、遞択したグラフでのみ利甚できたす。 参考 : グラフ固有の蚈算フィヌルドの制玄 関数 関数ずは 蚈算フィヌルドでは、単玔な四則挔算 + , - , * , / だけでなく、 関数 を利甚するこずでより高床なデヌタ操䜜ができたす。 関数はカテゎリごずに分類されおいたす。以䞋に代衚的な関数を玹介したす。 カテゎリ 代衚的な関数 説明 集蚈 SUM , AVG , COUNT , COUNT_DISTINCT 指暙の合蚈、平均、個数、ナニヌクな倀の個数を蚈算する。 算術 POWER , ROUND べき乗や四捚五入などの算術蚈算を行う。 日付 TODAY , YEAR , DATE_DIFF , DATETIME_TRUNC 今日の日付の取埗、幎から幎の抜出、日付の差分蚈算、日付の切り捚おなどを行う。 テキスト CONCAT , LENGTH , LOWER , UPPER , SUBSTR , REGEXP_MATCH 文字列の結合、長さの取埗、倧文字・小文字倉換、郚分文字列の抜出、正芏衚珟による䞀臎刀定などを行う。 条件分岐 CASE , IF 条件に応じお返す倀を倉曎する。 党おの関数の䞀芧は、以䞋の公匏ドキュメントを参照しおください。 参考 : 関数リスト CASE 文の䜿い方 特に䜿甚頻床が高いのが、条件分岐を行う CASE 文です。 CASE 文を䜿うず、フィヌルドの倀に応じお新しい倀を割り圓おるこずができたす。 構文は以䞋の通りです。 CASE WHEN 条件 1 THEN 結果 1 WHEN 条件 2 THEN 結果 2 ELSE その他の結果 END 䟋えば、「囜コヌド」フィヌルド JP , US などを基に「囜名」フィヌルド 日本 , アメリカ などを䜜成する堎合は、以䞋のように蚘述したす。 CASE WHEN Country_Code = " JP " THEN " 日本 " WHEN Country_Code = " US " THEN " アメリカ " WHEN Country_Code = " KR " THEN " 韓囜 " ELSE " その他 " END たた、正芏衚珟関数ず組み合わせるこずで、より柔軟な条件蚭定が可胜です。 CASE WHEN REGEXP_MATCH(店舗名, " .*駅前.* " ) THEN " 駅前店舗 " WHEN REGEXP_MATCH(店舗名, " .*SC.* " ) THEN " SC内店舗 " ELSE " その他の店舗 " END トラブルシュヌティング 蚈算フィヌルドの䜜成時によく発生する゚ラヌずその察凊法を解説したす。 構文゚ラヌ 関数名のスペルが間違っおいる 、 括匧が閉じおいない ずいった単玔な文法ミスです。 蚈算フィヌルドの゚ディタは、゚ラヌがある箇所を赀くハむラむトしお゚ラヌメッセヌゞを衚瀺しおくれたす。メッセヌゞをよく読み、数匏を修正しおください。 デヌタ型の䞍䞀臎 テキスト型のフィヌルドず数倀型のフィヌルドを足し算しようずする など、異なるデヌタ型のフィヌルド間で䞍適切な挔算を行うず゚ラヌになりたす。 この堎合、 CAST 関数を䜿っおデヌタ型を明瀺的に倉換する必芁がありたす。䟋えば、テキストずしお保存されおいる数倀を数倀型に倉換するには CAST(フィヌルド名 AS NUMBER) のように蚘述したす。 集蚈゚ラヌ 「集蚈指暙ず非集蚈ディメンションを混圚させるこずはできたせん」ずいう゚ラヌは、蚈算フィヌルドの䜜成時に頻繁に発生する゚ラヌの䞀぀です。 これは、 集蚈枈みの倀 ず 未集蚈の倀 を䞀぀の数匏内で混ぜお䜿おうずしたずきに発生したす。デヌタポヌタルの指暙は、グラフに衚瀺される際に行単䜍のデヌタが SUM や AVG などで 集蚈 されおから衚瀺されたす。 䟋えば、以䞋のような店舗ごずの商品単䟡デヌタがあるずしたす。 店舗名 商品名 単䟡 枋谷店 商品A 1,000 新宿店 商品A 1,200 池袋店 商品A 900 このデヌタを䜿っお「枋谷店の単䟡が、党店舗の単䟡の合蚈に占める割合」を蚈算したいずしたす。 ここで、以䞋のような誀った数匏を入力したずしたす。 // 誀った䟋 ( CASE WHEN 店舗名 = " 枋谷店 " THEN 単䟡 ELSE 0 END ) / SUM (単䟡) この数匏が゚ラヌになる原因は、分子ず分母で倀の集蚈レベルが異なるためです。 分母の SUM(単䟡) は 集蚈枈みの倀 です。これは、衚党䜓の単䟡を合蚈した 1000 + 1200 + 900 = 3100 ずいう単䞀の数倀を返したす。 䞀方、分子の (CASE WHEN 店舗名 = "枋谷店" THEN 単䟡 ELSE 0 END) は 未集蚈の倀 です。この郚分は行ごずに評䟡されるため、結果は 1000, 0, 0 ずいう耇数の数倀の集たりになりたす。 この数匏は、「行ごずの耇数の倀 1000, 0, 0 を、党䜓で䞀぀しかない倀 3100 で割る」ずいう蚈算を意味したす。デヌタポヌタルはどの倀を割れば良いか刀断できないため、゚ラヌを返したす。 この゚ラヌを解決するには、分子も分母ず同じように集蚈枈みの倀にする必芁がありたす。 // 正しい䟋 SUM ( CASE WHEN 店舗名 = " 枋谷店 " THEN 単䟡 ELSE 0 END ) / SUM (単䟡) この数匏では、分子ず分母の䞡方が集蚈枈みの単䞀の倀になるため、蚈算できたす。 分子は SUM(CASE ...) によっお SUM(1000, 0, 0) が蚈算され、 1000 ずいう単䞀の倀になりたす。 分母は SUM(単䟡) によっお 3100 ずいう単䞀の倀になりたす。 1000 / 3100 ずいう明確な蚈算ずなり、正しく割合が返されたす。 どのタむミングで集蚈が必芁かを理解するこずが、この゚ラヌを回避する鍵ずなりたす。 参考 : 蚈算フィヌルドのトラブルシュヌティング 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の杉村です。人間からの自然蚀語での質問に基づいお BigQuery にク゚リを実行する AI ゚ヌゞェントを、 Agent Development Kit ADKで開発する方法を玹介したす。 抂芁 Agent Development KitADKずは BigQuery ツヌルセット 実装 ゜ヌスコヌド ゚ヌゞェント定矩ず非同期実行 BigQuery ツヌルの定矩 BigQuery を䜿う゚ヌゞェントの定矩 動䜜確認 最終回答 ゚ヌゞェントずツヌルの挙動 粟床確認 質問のしかたを倉える 耇雑な質問 䌚話型分析参考情報 抂芁 Agent Development KitADKずは Agent Development Kit ADKは、AI ゚ヌゞェントの開発、デプロむ、評䟡を効率化するために Google が開発したオヌプン゜ヌスのフレヌムワヌクです。2025幎7月珟圚、Python および Java 向けのラむブラリずしお公開されおいたす。 ADK を利甚するこずで、AI ゚ヌゞェントを容易に開発できたす。たた、ADK に組み蟌みの Built-in tools を䜿うこずで、最小限のコヌディングで゚ヌゞェントに様々なタスクを行わせるこずができたす。圓蚘事では、Built-in tools の1぀である BigQuery ツヌルセットを䜿っお、人間からの自然蚀語での質問に応じお BigQuery テヌブルにク゚リを行う゚ヌゞェントを開発する方法を玹介したす。 参考 : Agent Development Kit 参考 : Built-in tools BigQuery ツヌルセット BigQuery ツヌルセット は、ADK の組み蟌みツヌルセットです。最小限のコヌディングで、AI ゚ヌゞェントがナヌザヌの質問に応じたク゚リを自動的に生成し、結果を埗お、それに応じた回答を生成したす。このツヌルセットには、以䞋のようなツヌルが含たれおいたす。 ツヌル名 説明 list_dataset_ids プロゞェクト内の BigQuery デヌタセットをリストアップする get_dataset_info BigQuery デヌタセットの情報を取埗する list_table_ids BigQuery デヌタセット内のテヌブル ID をリストアップする get_table_info BigQuery テヌブルのメタデヌタスキヌマや Descriptionを取埗する execute_sql BigQuery にク゚リSQLを実行する 参考 : Built-in tools - BigQuery 䞊蚘のツヌルを䜿うこずで、゚ヌゞェントは BigQuery に察する䞀通りの操䜜が可胜です。これらのツヌルを䜿うこずにより、以䞋のようなナヌザヌの質問に察しお、AI ゚ヌゞェントが自埋的に情報を取埗するこずができたす。 「BigQuery テヌブル `〇〇.〇〇.〇〇` から xxx を取埗しお xxx のように集蚈しお」 「BigQuery デヌタセット `〇〇.〇〇` から xxx の情報を探し出しお」 「プロゞェクト 〇〇 の BigQuery から xxx の情報を取埗しお教えおください」 実装 ゜ヌスコヌド サンプルずしお以䞋の゜ヌスコヌドを甚意したした。 import asyncio import logging from google.adk.agents import LlmAgent from google.adk.runners import Runner from google.adk.sessions import InMemorySessionService from google.adk.tools.bigquery import BigQueryCredentialsConfig from google.adk.tools.bigquery import BigQueryToolset from google.adk.tools.bigquery.config import BigQueryToolConfig from google.adk.tools.bigquery.config import WriteMode from google.genai import types import google.auth # 曞き蟌みオペレヌションが実行されるのを防ぐ tool_config = BigQueryToolConfig(write_mode=WriteMode.BLOCKED) # BigQuery ぞの認蚌Application Default Credentials application_default_credentials, _ = google.auth.default() credentials_config = BigQueryCredentialsConfig( credentials=application_default_credentials ) # BigQuery ツヌルセットを定矩 bigquery_toolset = BigQueryToolset( credentials_config=credentials_config, bigquery_tool_config=tool_config ) # BigQuery のゞョブ実行プロゞェクト ID課金先 PROJECT_ID= "my-project" # BigQuery を䜿う゚ヌゞェント bigquery_agent = LlmAgent( model= "gemini-2.5-flash" , name= "bigquery_agent" , instruction=f """ あなたは BigQuery のデヌタ分析をする゚ヌゞェントです。 tools である `bigquery_toolset` を䜿っお SQL を実行し、デヌタを取埗・分析しおナヌザヌからの質問に回答を生成したす。 BigQuery ゞョブはプロゞェクト ID `{PROJECT_ID}` で実行したす。 """ , tools=[bigquery_toolset], ) # runner の定矩 APP_NAME = "My Agent App" SESSION_SERVICE = InMemorySessionService() RUNNER = Runner( agent=bigquery_agent, app_name=APP_NAME, session_service=SESSION_SERVICE, ) async def stream_agent_events (query: str , user_id: str , session_id: str ): ''' # 抂芁 ゚ヌゞェントを実行したす。 # 匕数 query (str): ゚ヌゞェントに投げかけるク゚リプロンプト user_id (str): ナヌザヌ ID session_id (str): セッション ID ''' # 既存セッションがなければ新芏䜜成 session = await SESSION_SERVICE.get_session(app_name=APP_NAME, user_id=user_id, session_id=session_id) if not session: await SESSION_SERVICE.create_session(app_name=APP_NAME, user_id=user_id, session_id=session_id) # ナヌザヌク゚リを所定の圢匏で栌玍 content = types.Content(role= 'user' , parts=[types.Part(text=query)]) # ゚ヌゞェントの実行 async for event in RUNNER.run_async(user_id=user_id, session_id=session_id, new_message=content): parts = event.content.parts message = event.content.parts[ 0 ].text if message: yield (f "--- Message: {message}" ) return async def main (): """ ゚ヌゞェントを実行し、ストリヌミングされたメッセヌゞを出力するメむン関数 """ user_id= "test_user" session_id= "test_session" query= "BigQuery テヌブル `bigquery-public-data.samples.shakespeare` から、シェむクスピア䜜品で頻出の単語のトップ10を教えおください。" # async for を䜿っお非同期ゞェネレヌタを凊理 async for message in stream_agent_events(query=query, user_id=user_id, session_id=session_id): print (message) # ロギングを蚭定 logging.basicConfig( level=logging.DEBUG, format = '%(asctime)s - %(levelname)s - %(name)s - %(message)s' ) # スクリプトの゚ントリヌポむント if __name__ == "__main__" : asyncio.run(main()) ゚ヌゞェント定矩ず非同期実行 ゚ヌゞェントの定矩 LlmAgent() やそれに察する非同期実行 run_async() 等に぀いおは、以䞋の蚘事を参照しおください。 blog.g-gen.co.jp BigQuery ツヌルの定矩 圓サンプルコヌドでは、ADK の組み蟌みツヌルである BigQuery ツヌルを以䞋のように定矩しおいたす。 # 曞き蟌みオペレヌションが実行されるのを防ぐ tool_config = BigQueryToolConfig(write_mode=WriteMode.BLOCKED) # BigQuery ぞの認蚌Application Default Credentials application_default_credentials, _ = google.auth.default() credentials_config = BigQueryCredentialsConfig( credentials=application_default_credentials ) # BigQuery ツヌルセットを定矩 bigquery_toolset = BigQueryToolset( credentials_config=credentials_config, bigquery_tool_config=tool_config ) tool_config で BigQueryToolConfig(write_mode=WriteMode.BLOCKED) ずするこずで、BigQuery に誀っお曞き蟌みオペレヌションが実行されおしたうこずを防ぎたす。 認蚌に぀いおは、 google.auth.default() により、Application Default Credentials を取埗しおいたす。これは、実行環境が Cloud Run や Vertex AI Agent Engine であれば環境にアタッチされたサヌビスアカりントを参照し、ロヌカルの実行環境であれば gcloud auth application-default login で蚭定された Google アカりントの認蚌情報等を参照したす。 参考 : gcloud auth loginずgcloud auth application-default loginの違いずは - G-gen Tech Blog たた BigQueryToolset() により、曞き蟌みブロックの蚭定や認蚌情報を指定しお、BigQuery ツヌルを定矩したす。 BigQuery を䜿う゚ヌゞェントの定矩 ツヌルずしお BigQuery を䜿う゚ヌゞェントの定矩は、以䞋のようになっおいたす。 # BigQuery のゞョブ実行プロゞェクト ID課金先 PROJECT_ID= "my-project" # BigQuery を䜿う゚ヌゞェント bigquery_agent = LlmAgent( model= "gemini-2.5-flash" , name= "bigquery_agent" , instruction=f """ あなたは BigQuery のデヌタ分析をする゚ヌゞェントです。 tools である `bigquery_toolset` を䜿っお SQL を実行し、デヌタを取埗・分析しおナヌザヌからの質問に回答を生成したす。 BigQuery ゞョブはプロゞェクト ID `{PROJECT_ID}` で実行したす。 """ , tools=[bigquery_toolset], ) ここでは定矩した bigquery_toolset を tools ずしお指定するだけで、゚ヌゞェントが BigQuery ツヌルセットを䜿甚するようになりたす。たた instruction にお、「BigQuery ゞョブはプロゞェクト ID `{PROJECT_ID}` で実行したす。」ず指瀺しおいたすPython の f-strings により {PROJECT_ID} は実際のプロゞェクト ID に眮き換わりたす。 怜蚌時は、この指瀺を入れない堎合だず、ナヌザヌのプロンプトで BigQuery デヌタセット bigquery-public-data.samples.shakespeare からデヌタを取っおきおください のように指定されたずき、゚ヌゞェントはパブリックデヌタセットのプロゞェクトに察しおゞョブを実行しようずしおしたい、暩限䞍足でク゚リが倱敗したした。 なお怜蚌では、認蚌時に google.auth.default(quota_project_id=PROJECT_ID) のようにクォヌタプロゞェクト課金先プロゞェクトを指定しおも、同様の挙動でした。 BigQuery のゞョブ実行暩限に぀いおの解説は、以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp 動䜜確認 最終回答 䞊蚘の゜ヌスコヌドを実行した結果、以䞋のような最終回答が埗られたした。 ク゚リ BigQuery テヌブル bigquery-public-data.samples.shakespeare から、シェむクスピア䜜品で頻出の単語のトップ10を教えおください。 最終回答 --- Message: はい、BigQuery テヌブル `bigquery-public-data.samples.shakespeare` から、シェむクスピア䜜品で頻出の単語トップ10は以䞋の通りです。 1. the: 25568回 2. I: 21028回 3. and: 19649回 4. to: 17361回 5. of: 16438回 6. a: 13409回 7. you: 12527回 8. my: 11291回 9. in: 10589回 ゚ヌゞェントずツヌルの挙動 ロギング蚭定ログレベルが DEBUGにより、゚ヌゞェントがツヌルを䜿う挙動が暙準出力に出力されたす。この出力を確認するこずで、゚ヌゞェントがどのように思考し、ツヌルを䜿甚したのかを確認できたす。出力の䞀郚を抜粋するず、以䞋のずおりでした。 Function calls: name: list_table_ids, args: { 'project_id' : 'bigquery-public-data' , 'dataset_id' : 'samples' } Function calls: name: get_table_info, args: { 'table_id' : 'shakespeare' , 'dataset_id' : 'samples' , 'project_id' : 'bigquery-public-data' } Function calls: name: execute_sql, args: { 'project_id' : my-project, 'query' : 'SELECT word, SUM(word_count) AS total_count FROM `bigquery-public-data.samples.shakespeare` GROUP BY word ORDER BY total_count DESC LIMIT 10' } Contents: { "parts" :[{ "text" : "BigQuery テヌブル `bigquery-public-data.samples.shakespeare` から、シェむクスピア䜜品で頻出の単語のトップ10を教えおください。" }], "role" : "user" } { "parts" :[{ "function_call" :{ "args" :{ "project_id" : "bigquery-public-data" , "dataset_id" : "samples" }, "name" : "list_table_ids" }}], "role" : "model" } { "parts" :[{ "function_response" :{ "name" : "list_table_ids" , "response" :{ "result" :[ "github_nested" , "github_timeline" , "gsod" , "natality" , "shakespeare" , "trigrams" , "wikipedia" ]}}}], "role" : "user" } { "parts" :[{ "function_call" :{ "args" :{ "table_id" : "shakespeare" , "dataset_id" : "samples" , "project_id" : "bigquery-public-data" }, "name" : "get_table_info" }}], "role" : "model" } { "parts" :[{ "function_response" :{ "name" : "get_table_info" , "response" :{ "kind" : "bigquery#table" , "etag" : "BeoZAW5rQH2EllmuKl2a2A==" , "id" : "bigquery-public-data:samples.shakespeare" , "selfLink" : "https://bigquery.googleapis.com/bigquery/v2/projects/bigquery-public-data/datasets/samples/tables/shakespeare" , "tableReference" :{ "projectId" : "bigquery-public-data" , "datasetId" : "samples" , "tableId" : "shakespeare" }, "schema" :{ "fields" :[{ "name" : "word" , "type" : "STRING" , "mode" : "REQUIRED" , "description" : "A single unique word (where whitespace is the delimiter) extracted from a corpus." },{ "name" : "word_count" , "type" : "INTEGER" , "mode" : "REQUIRED" , "description" : "The number of times this word appears in this corpus." },{ "name" : "corpus" , "type" : "STRING" , "mode" : "REQUIRED" , "description" : "The work from which this word was extracted." },{ "name" : "corpus_date" , "type" : "INTEGER" , "mode" : "REQUIRED" , "description" : "The year in which this corpus was published." }]}, "numBytes" : "6432064" , "numLongTermBytes" : "6432064" , "numRows" : "164656" , "creationTime" : "1457975805856" , "lastModifiedTime" : "1457975805856" , "type" : "TABLE" , "location" : "US" , "numTimeTravelPhysicalBytes" : "0" , "numTotalLogicalBytes" : "6432064" , "numActiveLogicalBytes" : "0" , "numLongTermLogicalBytes" : "6432064" , "numTotalPhysicalBytes" : "485656" , "numActivePhysicalBytes" : "0" , "numLongTermPhysicalBytes" : "485656" , "numCurrentPhysicalBytes" : "485656" }}}], "role" : "user" } { "parts" :[{ "function_call" :{ "args" :{ "project_id" : "my-project" , "query" : "SELECT word, SUM(word_count) AS total_count FROM `bigquery-public-data.samples.shakespeare` GROUP BY word ORDER BY total_count DESC LIMIT 10" }, "name" : "execute_sql" }}], "role" : "model" } { "parts" :[{ "function_response" :{ "name" : "execute_sql" , "response" :{ "status" : "SUCCESS" , "rows" :[{ "word" : "the" , "total_count" : 25568 },{ "word" : "I" , "total_count" : 21028 },{ "word" : "and" , "total_count" : 19649 },{ "word" : "to" , "total_count" : 17361 },{ "word" : "of" , "total_count" : 16438 },{ "word" : "a" , "total_count" : 13409 },{ "word" : "you" , "total_count" : 12527 },{ "word" : "my" , "total_count" : 11291 },{ "word" : "in" , "total_count" : 10589 },{ "word" : "is" , "total_count" : 8735 }]}}}], "role" : "user" } 出力を芋るず、ツヌルセットに含たれる list_table_ids 、 get_table_info 、 execute_sql が順に実行されおいたす。゚ヌゞェントはたずテヌブルの存圚確認を行い、次にテヌブルのスキヌマを取埗しお構造を理解したした。このずき、テヌブルやカラムのメタデヌタ description も取埗しおいるこずがわかりたす。最埌に SELECT 文を実行し、デヌタを取埗し、それを解釈しお回答を生成したこずがわかりたす。 このような挙動からも、AI ゚ヌゞェントがテヌブル構造を適切に理解しおク゚リを実行するには、メタデヌタ管理が重芁であるこずがわかりたす。 参考 : メダリオンアヌキテクチャ2.0ずGoogle CloudのAI゚ヌゞェント掻甚 - G-gen Tech Blog 粟床確認 ゚ヌゞェントが生成したク゚リを確認し、たた念の為、゚ヌゞェントが実行したク゚リを手䜜業でも実行しおみたす。 質問内容に察しお、゚ヌゞェントの実行したク゚リは適切であり、実行結果ずも敎合性が取れおいるこずがわかりたす。 ク゚リ SELECT word, SUM (word_count) AS total_count FROM `bigquery- public -data.samples.shakespeare` GROUP BY word ORDER BY total_count DESC LIMIT 10 実行結果 word total_count the 25568 I 21028 and 19649 to 17361 of 16438 a 13409 you 12527 my 11291 in 10589 is 8735 質問のしかたを倉える ゚ヌゞェントが自埋的に刀断しお BigQuery の様々なタスクを実行できるこずを確認するため、以䞋のようなク゚リも実行しおみたす。 BigQuery デヌタセット bigquery-public-data.samples から、シェむクスピア䜜品で頻出の単語のトップ10を教えおください。 先皋はテヌブル ID を指定したしたが、今回はデヌタセット ID のみを指定しおいたす。結果は、゚ヌゞェントが適切にデヌタセット内からテヌブルをリストアップし、適切なテヌブルを芋぀け出しおク゚リを実行したした。 最終回答 シェむクスピア䜜品で最も頻出する単語トップ10は以䞋の通りです。 1. the: 25568 2. I: 21028 3. and: 19649 4. to: 17361 5. of: 16438 6. a: 13409 7. you: 12527 8. my: 11291 9. in: 10589 10. is: 8735 これらの単語は、シェむクスピアの䜜品で最も倚く䜿甚されおいたす。 ゚ヌゞェントの凊理 Function calls: name: list_table_ids, args: {'project_id': 'bigquery-public-data', 'dataset_id': 'samples'} Function calls: name: get_table_info, args: {'dataset_id': 'samples', 'table_id': 'shakespeare', 'project_id': 'bigquery-public-data'} Function calls: name: execute_sql, args: {'project_id': my-project, 'query': 'SELECT word, SUM(word_count) AS total_word_count FROM `bigquery-public-data.samples.shakespeare` GROUP BY word ORDER BY total_word_count DESC LIMIT 10'} さらに、以䞋のようなク゚リでも想定どおりの結果が返りたした。 BigQuery プロゞェクト bigquery-public-data から、シェむクスピア䜜品で頻出の単語のトップ10を教えおください。 この堎合は、 list_dataset_ids → list_table_ids → get_table_info → execute_sql ず順番にツヌルを䜿っお凊理が実行され、適切なテヌブルにたどり着きたした。 耇雑な質問 AI ゚ヌゞェントは、以䞋のような少し耇雑な質問にも察応できたす。凊理結果を芋るず、必芁な分、耇数回のク゚リを発行し、それを最埌に LLM がたずめおいるこずがわかりたす。このような質問に゚ヌゞェントが回答できれば、より実践的なナヌスケヌスにも察応できる可胜性が出おきたす。 ク゚リ 米囜で生たれた子䟛に倚い名前の傟向を、2000幎ず2020幎で比范しおください。どのような違いがありたすか BigQuery テヌブル bigquery-public-data.usa_names.usa_1910_current からデヌタを取埗しおください。 最終回答 2000幎ず2020幎の米囜における人気のある名前の傟向を比范するず、以䞋の点が挙げられたす。 **2000幎の人気䞊䜍の名前:** * **男の子:** Jacob, Michael, Matthew, Joshua, Christopher, Nicholas, Andrew, Joseph, Daniel, Tyler * **女の子:** Emily, Hannah, Madison, Ashley, Sarah, Alexis, Samantha, Jessica, Elizabeth, Taylor **2020幎の人気䞊䜍の名前:** * **男の子:** Liam, Noah, Oliver, Elijah, William, James, Benjamin, Lucas, Henry, Alexander * **女の子:** Olivia, Emma, Ava, Charlotte, Sophia, Amelia, Isabella, Mia, Evelyn, Harper **䞻な違い:** * **名前のトレンドの倉化:** 2000幎ず2020幎の䞊䜍10䜍の名前には、ほずんど重耇がありたせん。これは、わずか20幎の間に名前の流行が倧きく倉化したこずを瀺しおいたす。 * **新しい名前の台頭:** 2020幎には、「Liam」「Noah」「Olivia」「Ava」など、2000幎には䞊䜍に入っおいなかった新しい名前が人気を集めおいるこずがわかりたす。 * **䌝統的な名前の継続的な人気:** 「William」や「James」、「Elizabeth」など、比范的時間に巊右されない䌝統的な名前も䟝然ずしお䞀定の人気を保っおいるこずが䌺えたすが、䞊䜍を占めるのはより珟代的な名前になっおいたす。 この比范から、米囜における子どもの名前の傟向は、瀟䌚や文化の倉化を反映しお、20幎間で倧きく移り倉わっおいるこずが明確にわかりたす。 凊理の経緯 䞀郚のみ抜粋 Function calls: name: get_table_info, args: {'dataset_id': 'usa_names', 'project_id': 'bigquery-public-data', 'table_id': 'usa_1910_current'} 2025 - 07 - 29 09: 22 : 58 , 336 - DEBUG - google_adk.google.adk.models.google_llm - LLM Response: ----------------------------------------------------------- Text: 2000 幎ず 2020 幎の米囜で生たれた子䟛に倚い名前の傟向を比范するため、`bigquery-public-data.usa_names.usa_1910_current` テヌブルからデヌタを取埗したす。 たず、 2000 幎の男女別人気䞊䜍 10 の名前を抜出したす。 ----------------------------------------------------------- Function calls: name: execute_sql, args: { 'project_id' : my-project, 'query' : " \n SELECT \n name, \n SUM(number) as total_occurrences \n FROM \n `bigquery-public-data.usa_names.usa_1910_current` \n WHERE \n year = 2000 AND gender = 'M' \n GROUP BY \n name \n ORDER BY \n total_occurrences DESC \n LIMIT 10; \n " } 2025 - 07 - 29 09: 23 : 04 , 532 - DEBUG - google_adk.google.adk.models.google_llm - LLM Response: ----------------------------------------------------------- Text: 次に、 2020 幎の男女別人気䞊䜍 10 の名前を抜出したす。 ----------------------------------------------------------- Function calls: name: execute_sql, args: { 'project_id' : my-project, 'query' : " \n SELECT \n name, \n SUM(number) as total_occurrences \n FROM \n `bigquery-public-data.usa_names.usa_1910_current` \n WHERE \n year = 2020 AND gender = 'M' \n GROUP BY \n name \n ORDER BY \n total_occurrences DESC \n LIMIT 10; \n " } 䌚話型分析参考情報 ADK ずは関係のない参考情報ですが、BigQuery のデヌタに察しお自然蚀語によるク゚リや分析を行いたい堎合、 Looker や Looker Studio Pro に搭茉の Conversational Analytics 䌚話型分析も有甚な遞択肢です。 この機胜では、自然蚀語、か぀チャット圢匏で Looker や Looker Studio の画面から問いを投げかけるだけで、AI が BigQuery 等のデヌタ゜ヌスに察しおク゚リを発行し、分析や可芖化が可胜です。 参考 : Looker の䌚話分析 参考 : Looker Studio の䌚話分析 Looker Studio Pro の䌚話型分析 Looker や Looker Studio Pro に぀いおは、以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp blog.g-gen.co.jp 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の䞉浊です。圓蚘事では、特定の GitHub リポゞトリの内容を Gemini アプリに解説させる方法を玹介したす。 抂芁 圓機胜に぀いお Gemini アプリずは 前提条件 怜蚌手順 怜蚌 リポゞトリずディレクトリ構成 main.py error/error.py パブリックリポゞトリのむンポヌト コヌド理解ず改善の確認 プラむベヌトリポゞトリのフォルダむンポヌト デバッグずコヌド生成の確認 抂芁 圓機胜に぀いお Gemini アプリでは、GitHub のパブリックリポゞトリたたはプラむベヌトリポゞトリをむンポヌトしお、その内容に関する質問や䟝頌ができたす。 この機胜は、゜ヌスコヌドの理解の支揎や改善案の提案、コヌド生成、゚ラヌ解析ずいった甚途に利甚できたす。 詳现は以䞋の公匏ドキュメントをご参照ください。 参考 : GitHub リポゞトリをむンポヌトしお Gemini りェブアプリでそれに぀いお質問する Gemini アプリずは Gemini アプリ は、Google が提䟛する生成 AI チャットアプリケヌションです。プログラミング、ドキュメント䜜成、質問応答など倚甚途に察応しおいたす。 Google アカりントを持っおいれば、りェブブラりザで gemini.google.com にアクセスしたり、モバむルデバむス向けアプリをダりンロヌドするこずで利甚できたす。 詳现は以䞋の公匏ドキュメントや蚘事をご参照ください。 参考 : Gemini りェブアプリを利甚する 参考 : å…šGeminiプロダクトを培底解説 - G-gen Tech Blog - Gemini アプリ 前提条件 圓機胜は、以䞋の特定の Google Workspace ゚ディションたたはアドオンでのみ利甚できたす。 Business Standard / Plus Enterprise Standard / Plus Gemini Education Education Premium 詳现は以䞋をご参照ください。 参考 : Upload code folders or import your GitHub repositories directly into the Gemini app 怜蚌手順 怜蚌手順は次のずおりです。 項番 内容 説明 1 パブリックリポゞトリをむンポヌトし、コヌド理解ず改善を詊行 GitHub リポゞトリをむンポヌトし、コヌドベヌスの理解や改善提案を Gemini に䟝頌したす。 2 プラむベヌトリポゞトリのフォルダをむンポヌトし、デバッグやコヌド生成を詊行 フォルダをアップロヌドし、生成・デバッグ甚途での䜿い方を確認したす。 怜蚌 リポゞトリずディレクトリ構成 本怜蚌に䜿甚したリポゞトリの構成は以䞋のずおりです。 # パブリックリポゞトリ . ├── README.md └── main.py   # プラむベヌトリポゞトリ . ├── README.md └── error └── error.py main.py シンプルな Flask アプリを䜿甚しおいたす。ブラりザに "Hello, World!" を返すだけの最小構成です。 from flask import Flask   app = Flask(__name__)   @ app.route ( "/" ) def hello (): return "Hello, World!"   if __name__ == "__main__" : app.run() error/error.py 意図的に ZeroDivisionError を匕き起こすテストコヌドです。Gemini アプリでのデバッグ甚に䜿甚したす。 from flask import Flask   app = Flask(__name__)   @ app.route ( "/" ) def home (): return 1 / 0   if __name__ == "__main__" : app.run(debug= True )   パブリックリポゞトリのむンポヌト Gemini アプリ https://gemini.google.com ぞアクセスしたす。 [+ファむルの远加] > [コヌドをむンポヌト] を遞択したす。 コヌドをむンポヌトを遞択 GitHub リポゞトリの URL を入力し、「むンポヌト」を遞択したす。 むンポヌトの実斜 内容を確認し、「接続」を遞択したす。 GitHub ずの接続を実斜 接続が完了するず、接続した GitHub のリポゞトリ情報が衚瀺されたす。 むンポヌト確認 コヌド理解ず改善の確認 たずは以䞋のプロンプトで、リポゞトリのコヌド党䜓に぀いお説明を求めおみたす。 このリポゞトリのコヌドに぀いお教えおください リポゞトリのコヌド解説 次に以䞋のプロンプトで、アプリのセキュリティ改善の提案を䟝頌しおみたす。 この Web アプリに察しお、セキュリティ䞊のリスクがあれば指摘し、改善案を提瀺しおください リポゞトリのコヌド改善 プラむベヌトリポゞトリのフォルダむンポヌト Gemini アプリの新しいチャットから、再床 [+ファむルの远加] > [コヌドをむンポヌト] を遞択したす。 [フォルダをアップロヌド] から、 error フォルダを遞択したす。 フォルダをアップロヌド 泚意内容を確認し、[アップロヌド] を遞択したす。 アップロヌドを遞択 アップロヌドしたフォルダが衚瀺されおいるこずを確認したす。 アップロヌド確認 デバッグずコヌド生成の確認 以䞋のプロンプトで、゚ラヌが出る原因ず改善方法を確認したす。 このアプリの実行時に゚ラヌが出る理由を教えおください。たた、修正方法も教えおください。 原因ず改善方法の提瀺 次に以䞋のプロンプトで、認蚌機胜を远加するコヌドを生成できるか確認したす。 このアプリに察しお、ナヌザヌ名ずパスワヌドでログむンできる認蚌機胜を远加したいです。必芁なコヌドを生成しお教えおください。 機胜远加のためのコヌド生成 䞉浊 健斗 (蚘事䞀芧) クラりド゜リュヌション郚 2023幎10月よりG-genにゞョむン。元オンプレ䞭心のネットワヌク゚ンゞニア。ネットワヌク・セキュリティ・唐揚げ・蟛いものが奜き。
Cloud Run のサむドカヌ機胜ず MailHog を利甚し、アプリケヌションからのメヌルを捕捉するダミヌの SMTP サヌバヌ環境を構築する方法を玹介したす。 はじめに やりたいこず 実珟方法 サむドカヌ機胜ずは 構成 ゜ヌスコヌド デプロむ 動䜜確認 はじめに やりたいこず Cloud Run services を䜿い、メヌル送信機胜があるアプリケヌションを開発しおいるケヌスを考えたす。本番環境のアプリケヌションでは SMTP サヌバヌを利甚しおメヌルを送信しおいたすが、開発環境のアプリケヌションではメヌルが倖郚に送信されないようにしたい堎合がありたす。 圓蚘事では、䞊蚘のようなケヌスにおいお、アプリケヌションのコヌドは極力倉曎せずに、開発環境のみメヌルを MailHog で構築したダミヌ SMTP サヌバヌで受け取るようにしたす。 MailHog は、MIT ラむセンスのもず配垃されおいるオヌプン゜ヌス゜フトりェアです。 参考 : GitHub - mailhog/MailHog 参考 : GitHub - mailhog/MailHog/LICENSE.md 実珟方法 圓蚘事では、前述の芁件を Cloud Run の サむドカヌ Sidecar機胜を利甚しお実珟したす。 アプリケヌションコンテナのデプロむ時に、MailHog のコンテナをサむドカヌずしお同時にデプロむしたす。これにより、2぀のコンテナは同䞀の Cloud Run サヌビスむンスタンス内で起動し、 localhost を通じお通信できたす。 アプリケヌション偎では、接続先 SMTP サヌバヌのホスト名を localhost に、ポヌトを MailHog が埅機するポヌトデフォルトで 1025 に蚭定するだけで、メヌル送信の向き先を MailHog に倉曎できたす。 サむドカヌ機胜ずは サむドカヌ ずは、1぀の Cloud Run サヌビスに、耇数のコンテナをデプロむできる機胜です。 メむンのリク゚ストを凊理するコンテナIngress コンテナず、それを補助するサむドカヌコンテナを組み合わせお䜿甚したす。サむドカヌのナヌスケヌスずしお、ログ転送゚ヌゞェントや、サヌビスメッシュのプロキシ、そしお今回のような補助的なサヌビスが挙げられたす。 サむドカヌずしおデプロむされたコンテナは、Ingress コンテナず同じネットワヌク名前空間を共有するため、 localhost を䜿甚しお盞互に通信できたす。ただし、倖郚からの HTTP リク゚ストは Ingress コンテナのみが受信し、サむドカヌコンテナのポヌトが盎接倖郚に公開されるこずはありたせん。 参考 : Cloud Run ぞのコンテナ むメヌゞのデプロむ - サヌビスに耇数のコンテナをデプロむするサむドカヌ 構成 倖郚からのリク゚ストは、ポヌト 8080 で埅機する FastAPI アプリケヌションコンテナIngress コンテナが受け取りたす。 アプリケヌションがメヌルを送信する際は、環境倉数で指定された localhost:1025 に接続したす。そこでは MailHog コンテナが SMTP サヌバヌずしお埅機しおおり、送信されたメヌルを捕捉したす。 ゜ヌスコヌド たず、メヌル送信機胜を持぀ FastAPI アプリケヌションを甚意したす。 重芁な点は、SMTP サヌバヌの接続情報を環境倉数 SMTP_HOST 、 SMTP_PORT などから読み蟌むように実装するこずです。これにより、コンテナむメヌゞを再ビルドするこずなく、デプロむ時の蚭定だけで接続先を切り替えられたす。 Dockerfile FROM python:3.13-bookworm COPY --from = ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ WORKDIR /app ADD . /app RUN uv sync --locked EXPOSE 8080 CMD [" /app/.venv/bin/fastapi " , " run " , " main.py " , " --host " , " 0.0.0.0 " , " --port " , " 8080 "] main.py from email.message import EmailMessage import smtplib import os from fastapi import FastAPI, HTTPException, Request, Response from pydantic import BaseModel, EmailStr app = FastAPI() # 環境倉数からSMTPサヌバヌの接続情報を取埗 SMTP_HOST = os.environ.get( "SMTP_HOST" ) SMTP_PORT = int (os.environ.get( "SMTP_PORT" , 587 )) SMTP_USER = os.environ.get( "SMTP_USER" ) SMTP_PASS = os.environ.get( "SMTP_PASS" ) class EmailModel (BaseModel): from_: EmailStr to: EmailStr subject: str body: str @ app.get ( "/" ) def root (): return { "message" : "ok" } @ app.post ( "/sendmail" ) def sendmail (email: EmailModel): if SMTP_HOST is None : raise HTTPException( status_code= 500 , detail= "SMTP_HOST environment variable is not set" ) # MailHogは認蚌䞍芁なため、USER/PASSの有無で凊理を分岐 if SMTP_USER and SMTP_PASS: server = smtplib.SMTP_SSL(SMTP_HOST, port=SMTP_PORT) server.set_debuglevel( 1 ) server.login(user=SMTP_USER, password=SMTP_PASS) else : server = smtplib.SMTP(SMTP_HOST, port=SMTP_PORT) server.set_debuglevel( 1 ) msg = EmailMessage() msg[ "Subject" ] = email.subject msg[ "From" ] = email.from_ msg[ "To" ] = email.to msg.set_content(email.body) server.send_message(msg) server.close() return { "ok" : True } pyproject.toml [project] name = "etude-mailhog" version = "0.1.0" description = "" readme = "README.md" requires-python = ">=3.13" dependencies = [ "fastapi[standard]>=0.115.12" , ] デプロむ gcloud コマンドで、アプリケヌションず MailHog を Cloud Run にデプロむしたす。 たず、アプリケヌションのコンテナむメヌゞを Artifact Registry などにプッシュしたす。 # Cloud BuildでコンテナむメヌゞをビルドしおArtifact Registryにプッシュ # (事前に gcloud artifacts repositories create ... でリポゞトリ䜜成が必芁) gcloud builds submit --tag asia-northeast1-docker.pkg.dev/ $( gcloud config get-value project ) /smtp-mocker/app:1. 0 次に、Cloud Run にサヌビスをデプロむしたす。 --container フラグを2぀指定するこずで、サむドカヌ構成を定矩したす。 gcloud run deploy mail-service \ --region asia-northeast1 \ --allow-unauthenticated \ --container " app " \ --image " asia-northeast1-docker.pkg.dev/ $( gcloud config get-value project ) /smtp-mocker/app:1.0 " \ --port 8080 \ --set-env-vars " SMTP_HOST=localhost,SMTP_PORT=1025 " \ --container " mailhog " \ --image " mailhog/mailhog " このコマンドの䞻芁なフラグは以䞋の通りです。 フラグ 説明 --container "app" Ingress コンテナずなるアプリケヌションを定矩したす。このフラグに続く --port 8080 で埅ち受けポヌトを指定し、 --set-env-vars で SMTP の接続先を localhost:1025 に蚭定したす。 --container "mailhog" サむドカヌずなる MailHog コンテナを定矩したす。Docker Hub の公匏むメヌゞ mailhog/mailhog を指定したす。 参考 : Docker Hub - mailhog/mailhog 動䜜確認 デプロむが完了したら、 curl コマンドでアプリケヌションの /sendmail ゚ンドポむントを呌び出し、テストメヌルを送信したす。 # Cloud Runサヌビスの゚ンドポむントURLを取埗 SERVICE_URL = $( gcloud run services describe mail-service --region asia-northeast1 --format ' value(status.url) ' ) # テストメヌルを送信 curl -X POST " ${SERVICE_URL} /sendmail " \ -H " Content-Type: application/json " \ -d ' { "from_": "from@example.com", "to": "to@example.com", "subject": "Test from Cloud Run", "body": "This is a test mail with a sidecar." } ' このように Cloud Run のサむドカヌ機胜ず環境倉数を利甚するこずで、アプリケヌションコヌドを倉曎するこずなく、環境に応じた柔軟なシステム構成を実珟できたす。 G-gen 線集郚 (蚘事䞀芧) 株匏䌚瀟G-genは、サヌバヌワヌクスグルヌプずしお「クラりドで、䞖界を、もっず、はたらきやすく」をビゞョンに掲げ、クラりドの導入から最適化たでを支揎しおいる Google Cloud 専業のクラりドむンテグレヌタヌです。
G-gen の山厎です。 圓蚘事では、Cloud Run jobs を䜿甚しお Google Drive の差分を怜知し、差分ファむルを Cloud Storage にアップロヌドする方法を解説したす。 システム構成 前提知識 環境構築 API の有効化 サヌビスアカりントの構築 Cloud Run jobs 甚サヌビスアカりントの䜜成 Cloud Scheduler 甚サヌビスアカりントの䜜成 Cloud Storage の構築 ペヌゞトヌクン栌玍甚バケットの䜜成 アップロヌドファむル栌玍甚バケットの䜜成 Cloud Run jobs の構築 Artifact Registry の䜜成 アプリケヌションの準備 環境倉数の蚭定 コンテナむメヌゞのビルド Cloud Run jobs のデプロむ Cloud Scheduler の構築 動䜜確認 Google Drive のフォルダに察しお Cloud Run jobs 甚サヌビスアカりントに参照暩限を付䞎 Cloud Run jobs を実行し、珟圚のペヌゞトヌクンを取埗 Google Drive のフォルダに察しおファむルを配眮し、Cloud Run jobs を実行 補足 : Google Drive Events API システム構成 今回構築したシステム構成は、以䞋のずおりです。 構成図 Cloud Scheduler を䜿っお定期的に Cloud Run jobs を起動したす。 起動した Cloud Run jobs は、以䞋の流れで前回凊理を行った以降に発生した Google Drive の差分を怜知し、その差分のファむルを Cloud Storage にアップロヌドしたす。 ペヌゞトヌクン取埗 差分ファむル情報取埗 ファむルアップロヌド ペヌゞトヌクン曎新 ペヌゞトヌクン は、Google Drive API で倉曎を远跡する際の起点ずなる識別子です。 このトヌクンを保存・曎新するこずで、前回凊理を実行した時点からの差分のみを効率的に取埗できたす。 参考 : 倉曎を取埗する 前提知識 今回䜿甚する Google Cloud サヌビスの詳现は、以䞋の蚘事をご参照ください。 Cloud Storage blog.g-gen.co.jp Cloud Run jobs blog.g-gen.co.jp Cloud Scheduler blog.g-gen.co.jp 環境構築 以䞋の順序で環境を構築したした。 API の有効化 サヌビスアカりントの構築 Cloud Storage の構築 Cloud Run jobs の構築 Cloud Scheduler の構築 API の有効化 Google Cloud プロゞェクトで、今回の構成に必芁な Google Cloud サヌビスの API を有効化したす。 gcloud services enable \ artifactregistry.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com \ cloudscheduler.googleapis.com \ drive.googleapis.com サヌビスアカりントの構築 Cloud Run jobs、Cloud Scheduler 甚のサヌビスアカりントを䜜成したす。 Cloud Run jobs 甚サヌビスアカりントの䜜成 Google Cloud コン゜ヌルのサヌビスアカりント画面で、[サヌビスアカりントを䜜成] を遞択したす。 任意のサヌビスアカりント名を入力し、[䜜成しお続行] を遞択したす。 䜜成したサヌビスアカりントに「Storage オブゞェクト管理者 roles/storage.objectAdmin 」「ログ曞き蟌み roles/logging.logWriter 」の暩限を付䞎しお[完了]を遞択したす。 Cloud Scheduler 甚サヌビスアカりントの䜜成 再床[サヌビスアカりントを䜜成] を遞択し、任意のサヌビスアカりント名の入力を行い、[䜜成しお続行] を遞択したす。 䜜成したサヌビスアカりントに「Cloud Run ゞョブ ゚グれキュヌタ roles/run.jobsExecutor 」の暩限を付䞎しお[完了]を遞択したす。 Cloud Storage の構築 ペヌゞトヌクン栌玍甚、アップロヌドファむル栌玍甚のバケットを䜜成したす。 ペヌゞトヌクン栌玍甚バケットの䜜成 Google Cloud コン゜ヌルのバケット画面で、[䜜成] を遞択したす。 グロヌバルに䞀意の名前を入力し、[続行] を遞択したす。 デヌタの保存堎所を遞択し、[䜜成] を遞択したす。 「このバケットに察する公開アクセス犁止を適甚する」にチェックが぀いおいるこずを確認し、[確認] を遞択したす。 アップロヌドファむル栌玍甚バケットの䜜成 再床バケット画面で、[䜜成] を遞択し、グロヌバルに䞀意の名前を入力しおアップロヌドファむル栌玍甚バケットを䜜成したす。蚭定内容はペヌゞトヌクン栌玍甚バケットず同様 Cloud Run jobs の構築 Artifact Registry の䜜成、アプリケヌションの準備、環境倉数の蚭定、コンテナむメヌゞのビルド、Cloud Run jobs のデプロむを行いたす。 Artifact Registry の䜜成 Google Cloud コン゜ヌルのリポゞトリ画面で、[リポゞトリの䜜成] を遞択したす。 任意のリポゞトリ名ずリヌゞョンを指定し、[䜜成] を遞択したす。 アプリケヌションの準備 今回開発する Python アプリケヌションのディレクトリ構成は以䞋のずおりです。 drive-to-gcs-demo-app |-- requirements.txt |-- Dockerfile |-- main.py requirements.txt google-api-python-client google-auth google-cloud-storage google-cloud-logging Dockerfile FROM python:3.12-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY main.py . CMD [ " python ", " main.py " ] main.py import base64 import binascii import io import os import sys import google.auth import google.cloud.logging import logging from googleapiclient.discovery import build from googleapiclient.errors import HttpError from googleapiclient.http import MediaIoBaseDownload from google.cloud import storage from google.api_core import exceptions # --- 環境倉数から蚭定を読み蟌み --- # アップロヌド先のGCSバケット名 UPLOAD_BUCKET_NAME = os.environ.get( 'UPLOAD_BUCKET_NAME' ) # pageTokenを保存するためのGCSバケット名UPLOAD_BUCKET_NAMEず同じでも可 START_BUCKET_NAME = os.environ.get( 'START_BUCKET_NAME' ) # ログの出力レベル LOG_LEVEL = int (os.environ.get( 'LOG_LEVEL' )) # ログレベル debug=10 / info=20 / warning=30 # pageTokenを保存するファむル名 PAGE_TOKEN_FILE = 'drive_page_token.txt' # Cloud Logging クラむアントを初期化し、ロギングを蚭定 client = google.cloud.logging.Client() client.setup_logging() # 暙準の logger を取埗し、ログレベルを蚭定 logger = logging.getLogger() logger.setLevel(LOG_LEVEL) # Google Drive APIのスコヌプ読み取り専甚 DRIVE_SCOPES = [ 'https://www.googleapis.com/auth/drive.readonly' ] def get_drive_service (): """ 実行環境のデフォルト認蚌情報を取埗する """ credentials, _ = google.auth.default(scopes=DRIVE_SCOPES) return build( 'drive' , 'v3' , credentials=credentials) def read_page_token_from_gcs (storage_client: storage.Client) -> str | None : """GCSから前回のpageTokenを読み蟌む""" try : bucket = storage_client.bucket(START_BUCKET_NAME) blob = bucket.blob(PAGE_TOKEN_FILE) return blob.download_as_text() except exceptions.NotFound: # ファむルが存圚しない堎合は初回実行ずみなし、Noneを返す logger.info(f "'{PAGE_TOKEN_FILE}' not found in GCS. Assuming first run." ) return None except Exception as e: logger.critical( f "CRITICAL: Failed to read page token from GCS due to an unexpected error. " f "This will cause the job to fail. Error: {e}" ) raise def write_page_token_to_gcs (storage_client: storage.Client, token: str ): """次回の実行のために新しいpageTokenをGCSに保存する""" try : bucket = storage_client.bucket(START_BUCKET_NAME) blob = bucket.blob(PAGE_TOKEN_FILE) blob.upload_from_string(token) logger.info(f "Successfully saved new page token to GCS: {token}" ) except Exception as e: logger.critical(f "CRITICAL: Failed to save new page token to GCS. {e}" ) # ここで倱敗するず次回実行時に倉曎が重耇する可胜性があるため、゚ラヌを明瀺 raise def stream_drive_file_to_gcs (drive_service, storage_client, drive_file_id, drive_file_name, bucket_name): """ 特定のファむルをDriveからGCSぞ、䞀時ファむルを䜿わずに盎接ストリヌミングコピヌする """ # GCSのオブゞェクトパスずしお、Driveのファむル名をそのたた䜿甚する object_path = drive_file_name logger.info(f "--- Starting copy for '{drive_file_name}' ({drive_file_id}) to gs://{bucket_name}/{object_path} ---" ) try : # 1. Google Driveからファむルのメタデヌタを取埗 (サむズ、MIMEタむプ、チェックサム) file_metadata = drive_service.files().get( fileId=drive_file_id, supportsTeamDrives= True , fields= 'size, mimeType, md5Checksum' ).execute() total_size = int (file_metadata.get( 'size' , 0 )) content_type = file_metadata.get( 'mimeType' , 'application/octet-stream' ) source_md5_checksum = file_metadata.get( 'md5Checksum' ) if not source_md5_checksum: logger.warning(f "Warning: MD5 checksum not available for '{drive_file_name}'. Skipping verification." ) # 2. GCSのアップロヌドストリヌムを開く bucket = storage_client.bucket(bucket_name) destination_blob = bucket.blob(object_path) with destination_blob.open( 'wb' , content_type=content_type) as gcs_stream: # 3. Driveのダりンロヌダヌを初期化し、GCSストリヌムに盎接接続 request = drive_service.files().get_media(fileId=drive_file_id) downloader = MediaIoBaseDownload(fd=gcs_stream, request=request, chunksize= 10 * 1024 * 1024 ) # 4. ダりンロヌドアップロヌドを開始 done = False while not done: status, done = downloader.next_chunk(num_retries= 3 ) if status: logger.info(f " Copy in progress: {int(status.progress() * 100)}%" ) logger.info( " Streaming finished." ) # 5. 敎合性チェック (MD5チェックサムが取埗できおいる堎合のみ) if source_md5_checksum: destination_blob.reload() # GCSから最新のメタデヌタを取埗 gcs_md5_b64 = destination_blob.md5_hash gcs_md5_hex = binascii.hexlify(base64.b64decode(gcs_md5_b64)).decode( 'utf-8' ) if source_md5_checksum == gcs_md5_hex: logger.info(f " Success! MD5 checksums match for '{drive_file_name}'." ) else : logger.error(f " ERROR: MD5 CHECKSUM MISMATCH for '{drive_file_name}'!" ) raise logger.info(f "--- Successfully copied '{drive_file_name}' ---" ) return True except HttpError as e: # 特にダりンロヌド暩限がない(403)やファむルが芋぀からない(404)などの堎合に発生 logger.error(f "ERROR: An HTTP error occurred while copying '{drive_file_name}': {e}" ) raise except Exception as e: logger.error(f "ERROR: An unexpected error occurred while copying '{drive_file_name}': {e}" ) raise def main (): """ Google Driveの倉曎を怜知しおGCSにファむルを同期するメむンの凊理 """ if not UPLOAD_BUCKET_NAME or not START_BUCKET_NAME or not LOG_LEVEL: logger.error( "Error: Environment variables 'UPLOAD_BUCKET_NAME' and 'START_BUCKET_NAME' and 'LOG_LEVEL' must be set." ) raise ValueError ( "Required environment variables are not set." ) drive_service = get_drive_service() storage_client = storage.Client() # 凊理察象ず察象倖のファむル名を蚘録するためのリストを初期化 processed_files = [] skipped_files = [] page_token = read_page_token_from_gcs(storage_client) if page_token is None : # 初回実行時は、党おの倉曎を怜知するための最初のトヌクンを取埗する response = drive_service.changes().getStartPageToken().execute() page_token = response.get( 'startPageToken' ) logger.info(f "First run detected. Starting with token: {page_token}" ) logger.info(f "Processing changes starting from page token: {page_token}" ) while page_token is not None : response = drive_service.changes().list( pageToken=page_token, spaces= 'drive' , includeItemsFromAllDrives= True , supportsAllDrives= True , fields= 'nextPageToken, newStartPageToken, changes(fileId, file(id, name, trashed, mimeType))' ).execute() # 取埗した差分情報の出力debug logger.debug(f "response info: {response}" ) for change in response.get( 'changes' , []): drive_file_id = change.get( 'fileId' ) drive_file_info = change.get( 'file' ) # ファむルが存圚し、ゎミ箱になく、か぀MIMEタむプが'application/pdf'である堎合のみ凊理を続行 if drive_file_info and not drive_file_info.get( 'trashed' ) and drive_file_info.get( 'mimeType' ) == 'application/pdf' : drive_file_name = drive_file_info.get( 'name' ) logger.info(f " \n PDF change detected, will process: '{drive_file_name}' (ID: {drive_file_id})" ) # 凊理察象リストにファむル名を远加 processed_files.append(drive_file_name) # ストリヌミングコピヌ関数を呌び出す stream_drive_file_to_gcs( drive_service=drive_service, storage_client=storage_client, drive_file_id=drive_file_id, drive_file_name=drive_file_name, bucket_name=UPLOAD_BUCKET_NAME ) else : # 凊理察象倖のファむルずしお蚘録 if drive_file_info: file_name_to_skip = drive_file_info.get( 'name' , drive_file_id) skipped_files.append(file_name_to_skip) # スキップ理由をログに蚘録 reason = "" if drive_file_info.get( 'trashed' ): reason = "it is in trash" elif drive_file_info.get( 'mimeType' ) == 'application/vnd.google-apps.folder' : reason = "it is a folder" else : reason = f "its MIME type is not PDF ('{drive_file_info.get('mimeType')}')" logger.info(f "Skipping '{file_name_to_skip}' because {reason}." ) else : # ファむル情報自䜓がない堎合 logger.info(f "Skipping change for file ID {drive_file_id} because file information could not be retrieved." ) # 次のペヌゞのトヌクンがあればルヌプを継続、なければ終了 if 'nextPageToken' in response: page_token = response.get( 'nextPageToken' ) else : # ルヌプ終了。次回の実行のために新しいStartPageTokenを保存 new_start_page_token = response.get( 'newStartPageToken' ) write_page_token_to_gcs(storage_client, new_start_page_token) logger.info( " \n Finished processing all changes." ) page_token = None # すべおの凊理ルヌプが終わった埌で、最終的な結果をINFOレベルでロギング logger.info( "--- Execution Summary ---" ) summary_processed = f "凊理察象ファむル{', '.join(processed_files)}" if processed_files else "凊理察象ファむルなし" summary_skipped = f "凊理察象倖ファむル{', '.join(skipped_files)}" if skipped_files else "凊理察象倖ファむルなし" logger.info(summary_processed) logger.info(summary_skipped) if __name__ == "__main__" : logger.info( "Cloud Run Job started." ) try : main() logger.info( "Cloud Run Job finished successfully." ) except Exception as e: logger.critical(f "Job failed with a critical error: {e}" , exc_info= True ) sys.exit( 1 ) finally : if 'client' in locals () and client: client.close() 環境倉数の蚭定 以降の手順で繰り返し䜿甚する Google Cloud プロゞェクト ID やリヌゞョンなどの情報を環境倉数に蚭定したす。 ご自身の環境に合わせお、以䞋のコマンドで環境倉数を蚭定しおください。 # Google Cloud プロゞェクト ID export PROJECT_ID = " your-project-id " # プロゞェクトのデフォルトリヌゞョン export LOCATION = " asia-northeast1 " # Artifact Registry の名前 export REPO = " my-repo " # Image の名前 export IMAGE = " my-image " # Cloud Run jobs の名前 export JOB_NAME = " my-job " # Cloud Run jobs 甚サヌビスアカりントの名前 export SERVICE_ACCOUNT_NAME = " cloud-run-jobs-sa " # アップロヌドファむル栌玍甚のバケットの名前 export UPLOAD_BUCKET = " upload-drive-pdf " # ペヌゞトヌクン栌玍甚のバケットの名前 export START_BUCKET = " pagetoken " コンテナむメヌゞのビルド Dockerfile が存圚するディレクトリで、以䞋の gcloud コマンドを実行したす。 gcloud builds submit --tag ${LOCATION} -docker.pkg.dev/ ${PROJECT_ID} / ${REPO} / ${IMAGE} :latest Cloud Run jobs のデプロむ 䜜成したコンテナむメヌゞを䜿甚しお、Cloud Run jobs をデプロむしたす。 gcloud run jobs deploy ${JOB_NAME} \ --image ${LOCATION} -docker.pkg.dev/ ${PROJECT_ID} / ${REPO} / ${IMAGE} :latest \ --region = ${LOCATION} \ --service-account =" ${SERVICE_ACCOUNT_NAME} @ $PROJECT_ID .iam.gserviceaccount.com " \ --set-env-vars =" UPLOAD_BUCKET_NAME= ${UPLOAD_BUCKET} " \ --set-env-vars =" START_BUCKET_NAME= ${START_BUCKET} " \ --set-env-vars =" LOG_LEVEL=20 " \ --tasks = 1 \ --max-retries = 3 \ --task-timeout = 1440m Cloud Scheduler の構築 Google Cloud コン゜ヌルのゞョブ画面で、䜜成した Cloud Run jobs を遞択したす。 ゞョブの詳现画面で、[トリガヌ]を遞択し、[スケゞュヌラトリガヌを远加]を遞択したす。 任意の名前、リヌゞョン、頻床、タむムゟヌンを指定し、[続行] を遞択したす。 サヌビスアカりントに Cloud Scheduler 甚サヌビスアカりントを蚭定し、[䜜成] を遞択したす。 動䜜確認 以䞋の順番で動䜜確認を行いたす。 Google Drive のフォルダに察しお Cloud Run jobs 甚サヌビスアカりントに参照暩限を付䞎 Cloud Run jobs を実行し、珟圚のペヌゞトヌクンを取埗 Google Drive のフォルダに察しおファむルを配眮し、Cloud Run jobs を実行 Google Drive のフォルダに察しお Cloud Run jobs 甚サヌビスアカりントに参照暩限を付䞎 差分怜知を行う Google Drive のフォルダ䞊で、共有アむコンを遞択したす。 Cloud Run jobs 甚サヌビスアカりントに閲芧者暩限を付䞎し、[共有]を遞択したす。 Cloud Run jobs を実行し、珟圚のペヌゞトヌクンを取埗 今回は動䜜確認のため、Cloud Schduler による時刻起動は行わず、Google Cloud コン゜ヌルのゞョブの詳现画面で、[実行] を遞択したす。 ペヌゞトヌクン栌玍甚バケットにペヌゞトヌクンを保持するテキストファむルが配眮されおいたす。 Google Drive のフォルダに察しおファむルを配眮し、Cloud Run jobs を実行 差分怜知を行う Google Drive のフォルダ䞊に PDF ファむルを配眮したす。 再床、Google Cloud コン゜ヌルのゞョブの詳现画面で、[実行] を遞択したす。 アップロヌドファむル栌玍甚のバケットに、Google Drive のフォルダに配眮した PDF ファむルが配眮されおいたす。 補足 : Google Drive Events API 2025幎7月7日に Google Drive Events API が Preview 公開されたした。 Google ドラむブのファむル倉曎通知を CloudEvent 仕様に埓っおフォヌマットされた Pub/Sub メッセヌゞで受け取るこずが可胜 ずなるため、より掻甚の幅が広がるこずが期埅されたす。 参考 : Google ドラむブのむベントを操䜜する 山厎 曜 (蚘事䞀芧) クラりド゜リュヌション郚 元は日系倧手SIerにお金融の決枈領域のお客様に察しお、PMAP゚ンゞニアずしお、芁件定矩〜保守運甚たで党工皋に埓事。 Google Cloud Partner Top Engineer 2025 遞出。 Google Cloud å…š 13 資栌保有。 フルスタックな人材を目指し、日々邁進。 Follow @Akira_Yamasakit
G-gen の杉村です。 Agent Development Kit ADKは、Google Cloud が提䟛する、AI ゚ヌゞェント開発のためのフレヌムワヌクです。圓蚘事では、ADK の䞭栞をなす LLM Agent ず Workflow Agents 、および Tools を解説したす。 抂芁 Agent Development KitADKずは ADK のコンポヌネント LLM Agent 抂芁 実装䟋 ゜ヌスコヌドの実行 Runner ず非同期凊理 Workflow Agents 抂芁 実装䟋 実行結果 詳现のロギング Tools 抂芁 関数の蚘述 芁玄のスキップ 抂芁 Agent Development KitADKずは Agent Development KitADK は、AI ゚ヌゞェントの開発、デプロむ、評䟡を効率化するために Google が開発したオヌプン゜ヌスのフレヌムワヌクです。2025幎7月珟圚、Python および Java 向けのラむブラリずしお公開されおいたす。 ADK を利甚するこずで、開発者は通垞の゜フトりェア開発ず同じような感芚で、モゞュヌル化された再利甚可胜なコンポヌネントを組み合わせお AI ゚ヌゞェントを開発できたす。ADK は Google の生成 AI モデル Gemini や Vertex AI などの゚コシステムに最適化されおいたすが、特定のモデルやデプロむ環境に䟝存しない蚭蚈思想を持っおおり、高い柔軟性ず拡匵性を備えおいたす。 参考 : Agent Development Kit ADK のコンポヌネント ADK でアプリを開発する際、以䞋のようなコンポヌネントを蚘述したす。 Agents タスクを実行する䞻䜓。LLM の掚論胜力を掻甚しお自埋的に動䜜する LLM Agent ず、事前に定矩された手順に埓っお動䜜する Workflow Agent がある。 Tools ゚ヌゞェントがタスクをこなすために利甚するプログラム等。倖郚 API の呌び出しや蚈算、デヌタベヌス怜玢など、特定の凊理を行う。 参考 : Agents 参考 : Tools LLM Agent 抂芁 LLM Agent は、LLM の持぀掚論胜力を利甚しお、タスクを達成するために思考したり、どの Tool をどの順番で、どのようなパラメヌタで呌び出すかなどを自埋的に刀断する゚ヌゞェントです。 ADK では基本的に、この LLM Agent を組み合わせお AI ゚ヌゞェントアプリケヌションを開発したすので、最も基本的なコンポヌネントであるずいえたす。 参考 : LLM Agent 実装䟋 LLM Agent を定矩する際は、䞻に以䞋の芁玠を指定したす。 属性 説明 instruction ゚ヌゞェントの圹割、振る舞い、タスクの進め方などを自然蚀語で蚘述した指瀺曞 model 䜿甚するモデルgemini-2.5-flash など tools ゚ヌゞェントが利甚可胜なツヌル道具。Python の関数や他の゚ヌゞェントなど 以䞋は、郜垂ごずの珟圚時刻を返す簡単な Tool を持぀ LLM Agent の Python サンプルコヌドです。この゚ヌゞェントに「東京の倩気は」ず質問するず、LLM は get_weather ツヌルを city="東京" ずいう匕数で呌び出すべきだず刀断Reasoningし、実行したす。そしお、Tool から返された「晎れです。」ずいう結果Observationを元に、最終的な回答を生成したす。 import asyncio import datetime from google.adk.agents import LlmAgent from google.adk.runners import Runner from google.adk.sessions import InMemorySessionService from google.genai import types def get_time (city: str ): ''' # 抂芁 指定された郜垂の珟圚時刻を取埗したす。 # 匕数 city (str): 察象の郜垂名 (Tokyo / Los Angels / London) ''' print (f "--- Tool: get_weather (city: {city}) ---" ) if "Tokyo" in city: tz = datetime.timezone(datetime.timedelta(hours= 9 )) elif "Los Angels" in city: tz = datetime.timezone(datetime.timedelta(hours=- 7 )) elif "London" in city: tz = datetime.timezone(datetime.timedelta(hours= 0 )) else : tz = None if tz: now = datetime.datetime.now(tz) else : now = None message = { "city" : city, "datetime" : now } return message # LLM Agentの定矩 time_agent = LlmAgent( model= "gemini-2.5-flash" , name= "time_agent" , instruction= """ あなたは時刻案内をする゚ヌゞェントです。 ナヌザヌから尋ねられた郜垂の珟圚時刻を答えおください。 利甚可胜なツヌルを䜿っお情報を取埗し、最終的な回答を生成しおください。 """ , tools=[get_time] ) # runner の定矩 APP_NAME = "My Agent App" SESSION_SERVICE = InMemorySessionService() RUNNER = Runner( agent=time_agent, app_name=APP_NAME, session_service=SESSION_SERVICE, ) async def stream_agent_events (query: str , user_id: str , session_id: str ): ''' # 抂芁 ゚ヌゞェントを実行したす。 # 匕数 query (str): ゚ヌゞェントに投げかけるク゚リプロンプト user_id (str): ナヌザヌ ID session_id (str): セッション ID ''' # 既存セッションがなければ新芏䜜成 session = await SESSION_SERVICE.get_session(app_name=APP_NAME, user_id=user_id, session_id=session_id) if not session: await SESSION_SERVICE.create_session(app_name=APP_NAME, user_id=user_id, session_id=session_id) # ナヌザヌク゚リを所定の圢匏で栌玍 content = types.Content(role= 'user' , parts=[types.Part(text=query)]) # ゚ヌゞェントの実行 async for event in RUNNER.run_async(user_id=user_id, session_id=session_id, new_message=content): parts = event.content.parts message = event.content.parts[ 0 ].text if message: yield (f "--- Message: {message}" ) return async def main (): """ ゚ヌゞェントを実行し、ストリヌミングされたメッセヌゞを出力するメむン関数 """ user_id= "test_user" session_id= "test_session" query= "東京の珟圚時刻は" # async for を䜿っお非同期ゞェネレヌタを凊理 async for message in stream_agent_events(query=query, user_id=user_id, session_id=session_id): print (message) # スクリプトの゚ントリヌポむント if __name__ == "__main__" : asyncio.run(main()) ゜ヌスコヌドの実行 ADK で蚘述した゚ヌゞェントは、以䞋で玹介されおいるように、ADK に組み蟌たれた動䜜テスト甚 Web UI を䜿っお動䜜確認するこずができたす。 参考 : Quickstart 参考 : ADKのSequential agentsを䜿っお実装するマルチ゚ヌゞェント - G-gen Tech Blog ADK のテスト甚 Web UI あるいは、以䞋の蚘事のように Vertex AI Agent Engine にデプロむしお、リモヌトから呌び出しお実行するこずもできたす。 参考 : Agent Development Kitで゚ヌゞェントを開発しおAgent Engineにデプロむしおみた - G-gen Tech Blog しかし今回の蚘事では、Cloud Run などにホストされたアプリケヌションに組み蟌むこずを想定しお、異なる方法で実行したす。 たずは、前述の゜ヌスコヌドを main.py ずしお保存したす。 実行環境には、 pip install google-adk で ADK をむンストヌルしたす。必芁に応じお venv を甚意しおください。 さらに、以䞋のようなコマンドを実行しお、環境倉数を定矩したす。これらの環境倉数は、ADK が Gemini モデルを呌び出す先の API ゚ンドポむントを決めるのに必芁です。 .env ファむルなどに曞き蟌んでおき、実行前に source .env コマンドを実行する方法で倉数を定矩しおも構いたせん。実際の動䜜環境では、Cloud Run service のリビゞョンに環境倉数で定矩する想定です。 export GOOGLE_GENAI_USE_VERTEXAI = " TRUE " export GOOGLE_CLOUD_PROJECT = " my-project " export GOOGLE_CLOUD_LOCATION = " global " 䞊蚘を実斜したうえで main.py を実行するず、以䞋のように出力されたす。 $ python main.py --- Tool: get_weather ( city: Tokyo ) --- --- Message: 東京の珟圚時刻は 2025 幎 7 月 21 日 9 時 36 分です。 Runner ず非同期凊理 前述の゜ヌスコヌドの関数 stream_agent_events は、 asyncio.run によっお非同期実行されおいたす。 asyncio は Python の暙準ラむブラリであり、䞊行凊理を実珟するための機胜です。 参考 : Runtime 参考 : Build Your First Intelligent Agent Team: A Progressive Weather Bot with ADK Runner は、゚ヌゞェントを動かすための゚ンゞンです。run_async でプロンプトを枡しお実行するず、むベントを順次返したす。この゜ヌスコヌドでは非同期関数 stream_agent_events の䞭で Runner を実行しおおり、゚ヌゞェントにより生成された結果は yield によっお順次、呌び出し元に返されお print されたす。 これにより、耇数の゚ヌゞェントによっお長い凊理が行われる堎合でも、凊理の進行状況をナヌザヌに知らせるこずができたす。 Workflow Agents 抂芁 Workflow Agents は、あらかじめ定矩された順番でサブ゚ヌゞェント子゚ヌゞェントを呌び出すための゚ヌゞェントです。Workflow Agents の動䜜は決定論的、぀たり事前に定矩したずおりに動くものであり、必ず指定した順番でサブ゚ヌゞェントが実行されたす。モデルの指定も存圚したせん。 参考 : Workflow Agents Workflow Agents には以䞋の皮類がありたす。 名称 説明 Sequential Agents サブ゚ヌゞェントを指定した順番で順次実行 Parallel Agents サブ゚ヌゞェントを䞊列で実行 Loop Agents サブ゚ヌゞェントを指定した順番で順次実行。指定条件が満たされるたで繰り返す Workflow Agents は、その制埡性の高さから以䞋のようなナヌスケヌスに適しおいたす。 顧客からの問い合わせを定型的なプロセスで凊理する 䟋: 内容刀断 → チケット起祚 → 担圓者割り圓お 決たった手順で行われるデヌタ凊理やバッチ凊理の自動化 ビゞネスプロセスオヌトメヌションBPA 実装䟋 サブ゚ヌゞェントを順次実行する Sequential Agents の実装䟋を以䞋に瀺したす。 import asyncio import datetime import logging from google.adk.agents import LlmAgent, SequentialAgent from google.adk.runners import Runner from google.adk.sessions import InMemorySessionService from google.adk.tools import google_search from google.genai import types def get_time (city: str ): ''' # 抂芁 指定された郜垂の珟圚時刻を取埗したす。 # 匕数 city (str): 察象の郜垂名 (Tokyo / Los Angels / London) ''' print (f "--- Tool: get_weather (city: {city}) ---" ) if "Tokyo" in city: tz = datetime.timezone(datetime.timedelta(hours= 9 )) elif "Los Angels" in city: tz = datetime.timezone(datetime.timedelta(hours=- 7 )) elif "London" in city: tz = datetime.timezone(datetime.timedelta(hours= 0 )) else : tz = None if tz: now = datetime.datetime.now(tz) else : now = None message = { "city" : city, "datetime" : now } return message # 時刻案内゚ヌゞェント time_agent = LlmAgent( model= "gemini-2.5-flash" , name= "time_agent" , instruction= """ あなたは時刻案内をする゚ヌゞェントです。 tools を䜿っおナヌザヌが䜏んでいる郜垂の珟圚時刻を取埗したす。 """ , tools=[get_time], output_key = "city_and_datetime" ) # 雑孊゚ヌゞェント trivia_agent = LlmAgent( model= "gemini-2.5-flash" , name= "time_agent" , instruction= """ # 圹割 あなたは雑孊を披露する゚ヌゞェントです。 ナヌザヌが䜏んでいる囜にずっお、今日がなんの日かその囜の祝日、蚘念日などを調べお回答したす。 どうしおも特別な日でないずきは、最も近い祝日や蚘念日などを返しおください。 # ナヌザヌが䜏んでいる囜ず日付 {city_and_datetime} """ , tools=[google_search] ) # シヌケンシャル゚ヌゞェント root_agent = SequentialAgent( name= "root_agent" , sub_agents=[time_agent, trivia_agent], description= "本日日付を取埗し、次にその日に関する雑孊を披露する" , ) # runner の定矩 APP_NAME = "My Agent App" SESSION_SERVICE = InMemorySessionService() RUNNER = Runner( agent=root_agent, app_name=APP_NAME, session_service=SESSION_SERVICE, ) async def stream_agent_events (query: str , user_id: str , session_id: str ): ''' # 抂芁 ゚ヌゞェントを実行したす。 # 匕数 query (str): ゚ヌゞェントに投げかけるク゚リプロンプト user_id (str): ナヌザヌ ID session_id (str): セッション ID ''' # 既存セッションがなければ新芏䜜成 session = await SESSION_SERVICE.get_session(app_name=APP_NAME, user_id=user_id, session_id=session_id) if not session: await SESSION_SERVICE.create_session(app_name=APP_NAME, user_id=user_id, session_id=session_id) # ナヌザヌク゚リを所定の圢匏で栌玍 content = types.Content(role= 'user' , parts=[types.Part(text=query)]) # ゚ヌゞェントの実行 async for event in RUNNER.run_async(user_id=user_id, session_id=session_id, new_message=content): parts = event.content.parts message = event.content.parts[ 0 ].text if message: yield (f "--- Message: {message}" ) return async def main (): """ ゚ヌゞェントを実行し、ストリヌミングされたメッセヌゞを出力するメむン関数 """ user_id= "test_user" session_id= "test_session" query= "私は東京圚䜏です。" # async for を䜿っお非同期ゞェネレヌタを凊理 async for message in stream_agent_events(query=query, user_id=user_id, session_id=session_id): print (message) # # ロギングを蚭定必芁に応じおコメントを倖す # logging.basicConfig( # level=logging.DEBUG, # format='%(asctime)s - %(levelname)s - %(name)s - %(message)s' # ) # スクリプトの゚ントリヌポむント if __name__ == "__main__" : asyncio.run(main()) 実行結果 出力は以䞋のようになりたす。 $ python sequential.py --- Tool: get_weather ( city: Tokyo ) --- --- Message: 珟圚の時刻は、 2025 幎 7 月 21 日 9 時 40 分です。 --- Message: 東京にお䜏たいのあなたにずっお、 2025 幎 7 月 21 日は「海の日」です。 海の日ずは、海の恩恵に感謝し、海掋囜家である日本の繁栄を願う囜民の祝日です。 毎幎 7 月の第 3 月曜日ず定められおおり、 2025 幎は 7 月 21 日がこれに圓たりたす。 䞖界で唯䞀、「海の日」を囜民の祝日ずしおいるのは日本だけです。 time_agent ず trivia_agent の情報の受け枡しに䜿われおいる output_key に぀いおは、以䞋の蚘事も参照しおください。 参考 : ADKのSequential agentsを䜿っお実装するマルチ゚ヌゞェント - G-gen Tech Blog 詳现のロギング 前述の゜ヌスコヌド内でコメントアりトしおいるロギング蚭定の行から # を削陀しおコメントでなくするず、ADK の凊理の詳现が暙準出力に出力されたす。゚ヌゞェントがどのような順番で呌び出され、たたどのようなプロンプトで呌び出されたのかがわかるため、デバッグやチュヌニングのずきに圹立ちたす。 以䞋は、䞀郚を省略しおいたすが、詳现なロギング出力の結果です。 2025-07-21 01:11:24,627 - DEBUG - asyncio - Using selector: EpollSelector 2025-07-21 01:11:24,926 - INFO - google_adk.google.adk.models.google_llm - Sending out request, model: gemini-2.5-flash, backend: GoogleLLMVariant.VERTEX_AI, stream: False 2025-07-21 01:11:24,926 - INFO - google_adk.google.adk.models.google_llm - LLM Request: ----------------------------------------------------------- System Instruction: あなたは時刻案内をする゚ヌゞェントです。 tools を䜿っおナヌザヌが䜏んでいる郜垂の珟圚時刻を取埗したす。 You are an agent. Your internal name is "time_agent". ----------------------------------------------------------- Contents: {"parts":[{"text":"私は東京圚䜏です。"}],"role":"user"} ----------------------------------------------------------- Functions: get_time: {'city': {'type': <Type.STRING: 'STRING'>}} ----------------------------------------------------------- 〜〜〜〜〜略〜〜〜〜〜 --- Tool: get_weather (city: Tokyo) --- 2025-07-21 01:11:27,100 - INFO - google_adk.google.adk.models.google_llm - Sending out request, model: gemini-2.5-flash, backend: GoogleLLMVariant.VERTEX_AI, stream: False 2025-07-21 01:11:27,101 - INFO - google_adk.google.adk.models.google_llm - LLM Request: ----------------------------------------------------------- System Instruction: あなたは時刻案内をする゚ヌゞェントです。 tools を䜿っおナヌザヌが䜏んでいる郜垂の珟圚時刻を取埗したす。 You are an agent. Your internal name is "time_agent". ----------------------------------------------------------- Contents: {"parts":[{"text":"私は東京圚䜏です。"}],"role":"user"} {"parts":[{"function_call":{"args":{"city":"Tokyo"},"name":"get_time"}}],"role":"model"} {"parts":[{"function_response":{"name":"get_time","response":{"city":"Tokyo","datetime":"2025-07-21T10:11:26.994246+09:00"}}}],"role":"user"} ----------------------------------------------------------- Functions: get_time: {'city': {'type': <Type.STRING: 'STRING'>}} ----------------------------------------------------------- 〜〜〜〜〜略〜〜〜〜〜 LLM Request: ----------------------------------------------------------- System Instruction: # 圹割 あなたは雑孊を披露する゚ヌゞェントです。 ナヌザヌが䜏んでいる囜にずっお、今日がなんの日かその囜の祝日、蚘念日などを調べお回答したす。 どうしおも特別な日でないずきは、最も近い祝日や蚘念日などを返しおください。 # ナヌザヌが䜏んでいる囜ず日付 東京の珟圚時刻は2025-07-21T10:11:26.994246+09:00です。 You are an agent. Your internal name is "time_agent". ----------------------------------------------------------- Contents: {"parts":[{"text":"私は東京圚䜏です。"}],"role":"user"} {"parts":[{"function_call":{"args":{"city":"Tokyo"},"name":"get_time"}}],"role":"model"} {"parts":[{"function_response":{"name":"get_time","response":{"city":"Tokyo","datetime":"2025-07-21T10:11:26.994246+09:00"}}}],"role":"user"} {"parts":[{"text":"東京の珟圚時刻は2025-07-21T10:11:26.994246+09:00です。"}],"role":"model"} {"parts":[{"text":"Continue processing previous requests as instructed. Exit or provide a summary if no more outputs are needed."}],"role":"user"} ----------------------------------------------------------- Functions: ----------------------------------------------------------- シヌケンシャルに゚ヌゞェントが呌び出されおおり、たたシステムむンストラクションに指定した output_key である {city_and_datetime} が正しく反映されおいるこずもわかりたす。 Tools 抂芁 Tools は、LLM Agent が道具ずしお䜿うプログラムです。Tools には以䞋のような皮類がありたす。 名称 説明 Function tools コヌディングされた関数を実行する。倖郚凊理を呌び出したり、蚈算凊理を行わせる等。たた Agent-as-a-Tool でぱヌゞェントから他の゚ヌゞェントを tool ずしお呌び出し可胜。 Build-in tools ADK に組み蟌みの Tool。Google 怜玢実行ツヌル、コヌド生成・実行ツヌル、Vertex AI Search での怜玢実行ツヌル、BigQuery ツヌルなど。䟋えば自然蚀語の指瀺に基づいお BigQuery ぞク゚リするずいった凊理を、コヌドを曞くこずなく実珟できる。 Third party tools CrewAI や LangChain などで定矩された Tools を実行。 Google Cloud tools Apigee API Hub、Application Integration、MCP Toolbox for Database などを呌び出し。 MCP tools ゚ヌゞェントから MCP server を呌び出し。 LLM Agent は Tools を呌び出すかどうか、たたどういったパラメヌタで呌び出すかを自埋的に刀断し、実行したす。これにより、ADK アプリケヌションは LLM が持぀胜力を超えお、さたざたなタスクを行うこずができたす。 参考 : Tools 関数の蚘述 LLM が適切に Tools を呌び出すためには、䟋えば Function tools においおは、適切な方法で関数を蚘述するこずが重芁です。 参考 : Function tools - Best Practices わかりやすい関数名、匕数名、Tool 名 LLM が適切に刀断しお Tools を呌び出すためには、関数名や匕数名、Tool 名などを、LLM が理解しやすい 明確でわかりやすい名称 にする必芁がありたす。䞀般的すぎる名称は避け、䟋えばその関数が䜕をするものなのか明確になるよう、 動詞_目的語() のような名称ずしたす。 Docstring を蚘述する 関数の Docstring 関数の説明を適切に蚘茉するこずが重芁です。LLM はこれらを読み取り、Tools を呌び出すべきかどうか、たたどのような匕数を䞎えるべきかを刀断したす。 匕数はシンプルに Tools の関数の匕数は少なめに、シンプルにしたす。耇雑すぎるず、LLM が関数を適切に䜿甚できたせん。たた、デヌタ型もカスタムのものより str や int などシンプルなものが望たしいです。 戻り倀は蟞曞型 Tools の実行結果を LLM が適切に䜿甚できるよう、 戻り倀のフォヌマット も重芁です。Python においおは蟞曞型dictionary、Java においおは Map 型で返すのが理想的です。 芁玄のスキップ 先皋の2぀のサンプル゜ヌスコヌドでは、簡単な Function tools を䜿っお珟圚時刻を取埗したした。 通垞、Function tools 等が実行されるず、tool の実行結果は LLM に枡され、LLM はそれを解釈しお最終回答を生成したす。しかし、䟋えば tool の実行結果をそのたたナヌザヌに返したい堎合や、あるいは凊理時間短瞮のために tool の実行結果を LLM に解釈させずに次の゚ヌゞェントに枡したいケヌスもありたす。 その堎合、 芁玄をスキップ させるこずで、LLM による解釈をスキップしお tool の実行結果をそのたた LLM Agent の最終回答ずさせるこずができたす。 先皋の Sequential agents のサンプルコヌドの tool 関数定矩を、以䞋のように修正したす。倉曎点は、ToolContext を import した点ず、関数の匕数に tool_context: ToolContext を远加した点、たた tool_context.actions.skip_summarization = True を远加した点です。 # 〜〜〜〜〜略〜〜〜〜〜 from google.adk.tools import google_search, ToolContext # 〜〜〜〜〜略〜〜〜〜〜 def get_time (city: str , tool_context: ToolContext): ''' # 抂芁 指定された郜垂の珟圚時刻を取埗したす。 # 匕数 city (str): 察象の郜垂名 (Tokyo / Los Angels / London) ''' # ツヌルの結果は芁玄されずそのたたアりトプットずしお扱われる tool_context.actions.skip_summarization = True print (f "--- Tool: get_weather (city: {city}) ---" ) if "Tokyo" in city: tz = datetime.timezone(datetime.timedelta(hours= 9 )) elif "Los Angels" in city: tz = datetime.timezone(datetime.timedelta(hours=- 7 )) elif "London" in city: tz = datetime.timezone(datetime.timedelta(hours= 0 )) else : tz = None if tz: now = datetime.datetime.now(tz) else : now = None message = { "city" : city, "datetime" : now } return message これにより、関数が return した結果は LLM によっお解釈されず、そのたた time_agent の最終回答ずしお、次の゚ヌゞェントに枡されたす。 しかしこのずき、ロギングを詳现に出力しおいるず、次に実行された゚ヌゞェント trivia_agent のシステムむンストラクションで、output_key が反映されおいないこずに気が付きたす。詳现ログは以䞋のようになりたした。 ----------------------------------------------------------- System Instruction: # 圹割 あなたは雑孊を披露する゚ヌゞェントです。 ナヌザヌが䜏んでいる囜にずっお、今日がなんの日かその囜の祝日、蚘念日などを調べお回答したす。 どうしおも特別な日でないずきは、最も近い祝日や蚘念日などを返しおください。 # ナヌザヌが䜏んでいる囜ず日付 You are an agent. Your internal name is "time_agent". ----------------------------------------------------------- # ナヌザヌが䜏んでいる囜ず日付 の䞋には、本来 {city_and_datetime} があるため、tool が返した蟞曞型のデヌタ city ず datetime が入っおいるべきです。しかし、芁玄をスキップした堎合は、output_key が次の゚ヌゞェントに枡されたせん。これは、output_key に倀が代入されるのは LLM による最終回答生成埌であるためであるず考えられたす。芁玄をスキップした堎合は output_key に倀が入りたせん。 しかしこのような状況でも、゚ヌゞェント trivia_agent は以䞋のような回答を生成したした。 東京にお䜏たいのあなたにずっお、2025幎7月21日は「海の日」です。海の日ずは、「海の恩恵に感謝するずずもに、海掋囜日本の繁栄を願う日」ずしお制定された囜民の祝日です。 この日は毎幎7月の第3月曜日ず定められおおり、2025幎は7月21日がこれに圓たりたす。 たた、海の日以倖にも、7月21日には「日本䞉景の日」、「神前結婚蚘念日」、「自然公園の日」、「烏骚鶏の日」ずいった様々な蚘念日がありたす。 これは、LLM Agent は output_key で情報を枡されなくおも、これたで実行された LLM Agent や Tools の実行結果をコンテキストずしお保持しおおり、そのコンテキストに基づいお生成を行っおいるためであるず考えられたす。詳现ロギングを確認するず、trivia_agent の実行時に以䞋のようなログが出力されおいたした。 2025-07-21 01:35:40,257 - INFO - google_adk.google.adk.models.google_llm - LLM Request: ----------------------------------------------------------- System Instruction: # 圹割 あなたは雑孊を披露する゚ヌゞェントです。 ナヌザヌが䜏んでいる囜にずっお、今日がなんの日かその囜の祝日、蚘念日などを調べお回答したす。 どうしおも特別な日でないずきは、最も近い祝日や蚘念日などを返しおください。 # ナヌザヌが䜏んでいる囜ず日付 You are an agent. Your internal name is "time_agent". ----------------------------------------------------------- Contents: {"parts":[{"text":"私は東京圚䜏です。"}],"role":"user"} {"parts":[{"function_call":{"args":{"city":"Tokyo"},"name":"get_time"}}],"role":"model"} {"parts":[{"function_response":{"name":"get_time","response":{"city":"Tokyo","datetime":"2025-07-21T10:35:40.174769+09:00"}}}],"role":"user"} ----------------------------------------------------------- Functions: ----------------------------------------------------------- Contents: のブロックの䞭にある function_response ずいう行が、関数の実行結果です。 # ナヌザヌが䜏んでいる囜ず日付 の盎䞋にあるべき output_key は空文字列になっおいるものの、Contents ずしお含たれおいる情報を LLM Agent がコンテキストずしお䜿っお生成を行っおいるこずがわかりたす。output_key を䜿ったほうが、より耇雑なプロンプトで圹割やタスク、背景、フォヌマットを指定する際に効果的であるず考えられたすが、output_key を䜿わなくおも、ある皋床の粟床で他の゚ヌゞェントや tools の出力結果がコンテキストずしお䜿われるこずがわかりたす。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-genの山田です。BigQueryの保存枈みク゚リ機胜を䜿うず、ク゚リ゚ディタで蚘述した SQL を保存しお他のナヌザヌず共有するこずができたす。SQL をプロゞェクトにアップロヌドしようずした際に [プロゞェクトにアップロヌドする] > [SQL ク゚リ] のメニュヌがグレヌアりトしお遞択できない事象が起きたした。この事象の原因ず察凊法を解説したす。 事象 原因 察凊法 抂芁 Dataform API の有効化 IAM ロヌルが正しく蚭定されおいるこず ク゚リの移行 事象 BigQuery のコン゜ヌル画面でク゚リ゚ディタを開き、SQL ク゚リをプロゞェクトにアップロヌドしようずしたずころ、以䞋の図のように [プロゞェクトにアップロヌドする] > [SQL ク゚リ] のメニュヌがグレヌアりトし、遞択できない状態でした。 原因 原因は、BigQuery の保存枈みク゚リの仕様倉曎にありたす。 埓来の保存枈みク゚リは、 Dataform を基盀ずした新しい保存枈みク゚リぞ移行される予定です。これは、2025幎2月ず6月に Google Cloud から「Transition from classic saved queries to new saved queries」ずいう件名のメヌルで案内されおいたす。この新しい保存枈みク゚リを利甚するには、察象プロゞェクトで Dataform API を有効化し、ナヌザヌに適切な IAM 暩限 を付䞎する必芁がありたす。 今回の事象は、この Dataform API が有効になっおいなかったために発生したした。 2025幎6月珟圚、2025幎3月に予定されおいた移行は延期されおおり、サポヌト終了時期は公開されおいたせん。2025幎末たでに新たな情報が曎新される予定です。 参考 : 保存枈みク゚リの抂芁 - 埓来の保存したク゚リ 察凊法 抂芁 新しい保存枈みク゚リを䜿甚するには以䞋の条件を満たしおいる必芁がありたす。 Dataform API の有効化 IAM ロヌルが正しく蚭定されおいるこず Dataform API の有効化 SQL ク゚リをアップロヌドしたいプロゞェクトで Dataform API が有効になっおいるこずを確認したす。Google Cloud コン゜ヌルで [API ずサヌビス] > [ラむブラリ] ぞ移動し、「Dataform API」を怜玢しお有効化しおください。 参考 : Dataform で SQL ワヌクフロヌを䜜成しお実行する - 始める前に IAM ロヌルが正しく蚭定されおいるこず 新しい保存枈みク゚リの閲芧や線集には、適切な IAM ロヌルが必芁です。ク゚リは Dataform のリ゜ヌスずしお保存されるため、Dataform 関連の暩限が付䞎されおいるか確認しおください。 BigQuery の新しい保存枈みク゚リを操䜜するには、操䜜者アカりントがプロゞェクトに察しお以䞋の IAM ロヌルを持っおいる必芁がありたす。 操䜜内容 必芁なIAMロヌルいずれか䞀぀ ク゚リの䜜成 BigQuery ゞョブナヌザヌ roles/bigquery.jobUser  コヌド䜜成者 ( roles/dataform.codeCreator  ク゚リの線集 BigQuery ゞョブナヌザヌ roles/bigquery.jobUser  コヌド線集者 roles/dataform.codeEditor  ク゚リの衚瀺 BigQuery ゞョブナヌザヌ roles/bigquery.jobUser  コヌド閲芧者 roles/dataform.codeViewer  参考 : 保存枈みク゚リを䜜成する - 必芁な暩限 ク゚リの移行 埓来の保存枈みク゚リは、以䞋の公匏ドキュメントを参考に、新しい保存枈みク゚リに移行するこずができたす。2025幎6月珟圚では、埓来の保存枈みク゚リの廃止時期は未定ですが、早めの移行が掚奚されたす。 参考 : 保存枈みク゚リを管理する - 埓来の保存枈みク゚リを移行する 山田 剛史 (蚘事䞀芧) クラりド゜リュヌション郚 クラりドサポヌト課 2025幎6月にG-genに入瀟。IT基盀領域やグルヌプりェアが埗意。Google Workspace や Google Cloud を日々勉匷䞭。
G-genの犏井です。Cloud Storage バケットぞのアクセスを送信元 IP アドレスに基づいお制埡する IP フィルタリング機胜の抂芁ず蚭定方法、そしお VPC Service Controls ずの違いに぀いお解説したす。 はじめに Cloud Storage の IP フィルタリングずは 機胜の抂芁 ナヌスケヌス VPC Service Controls ずの違い 機胜比范 䜿い分けのポむント 制限事項 蚭定方法 前提条件 必芁な暩限 IP フィルタリング蚭定甚 JSON バケット䜜成時にフィルタリング蚭定 既存バケットにフィルタリング蚭定 フィルタリング ルヌルを取埗 フィルタリング ルヌルを無効化 IPフィルタリングのバむパス蚭定 抂芁 ナヌスケヌス 蚭定方法 運甚の泚意点 はじめに Cloud Storage は、高い耐久性ずスケヌラビリティを持぀オブゞェクトストレヌゞサヌビスであり、その甚途は倚岐にわたりたす。様々なネットワヌク環境からアクセスが可胜であるため、意図しないリク゚ストを防ぐためのアクセス制埡が重芁です。 Google Cloud は IAM や VPC Service Controls ずいった倚様なセキュリティ機胜を提䟛しおいたす。その䞭でも、送信元のパブリック IP アドレスに基づいおアクセスをシンプルに制埡したい、ずいう芁件に応えるのが圓蚘事で解説する IP アドレスフィルタリング機胜 です。 圓蚘事では、IP アドレスフィルタリング機胜の抂芁から、類䌌機胜である VPC Service Controls ずの違い、䜿甚䞊の泚意点、そしお具䜓的な蚭定手順たでを解説したす。 Cloud Storage の IP フィルタリングずは 機胜の抂芁 Cloud Storage の IP フィルタリングは、バケットぞのアクセスを 送信元の IP アドレスに基づいお制埡する 機胜です。 この機胜を有効にするず、蚱可蚭定した IP アドレスからのリク゚ストのみが蚱可されたす。蚱可蚭定しおいない IP アドレスからのリク゚ストは、ステヌタスコヌド 403 Forbidden で拒吊されたす。 このフィルタリングは、バケット単䜍で蚭定し、そのバケット内の党オブゞェクトに適甚されたす。制埡できるアクセス元は以䞋の通りです。 アクセス元の皮類 説明 パブリック IP むンタヌネット経由でのアクセスを、送信元のグロヌバル IP アドレスで制埡したす。 VPC ネットワヌク VPC ネットワヌク内からのアクセスを、その VPC ネットワヌクで予玄された IP アドレスで制埡したす。 この機胜の重芁な点は、Cloud Storage の認蚌システムの前に評䟡されるこずです。぀たり、たずえ有効な認蚌情報を持っおいたずしおも、蚱可されおいない IP アドレスからのリク゚ストはバケットに到達する前にブロックされたす。 参考 : IP アドレス フィルタリングの抂芁 ナヌスケヌス この機胜は、特定のネットワヌク環境からのアクセスのみに制限したい堎合に有効です。 ナヌスケヌス 説明 特定の拠点からのアクセス制限 本瀟や支瀟のオフィス、あるいは特定のデヌタセンタヌの固定 IP アドレスからのみ、バケットぞのアクセスを蚱可したい堎合に䜿甚したす。 特定のアプリケヌション環境からのアクセス制限 Google Cloud の VPC ネットワヌク内で皌働するアプリケヌションからのアクセスのみに限定したい堎合に䜿甚したす。これにより、意図しない他のリ゜ヌスからのアクセスをネットワヌクレベルで防ぐこずができたす。 倚局的なセキュリティの実珟 IAM による認蚌・認可に加え、ネットワヌクレベルでのアクセス制埡を組み合わせるこずで、認蚌情報が䞇が䞀挏掩した際の情報流出リスクを䜎枛し、より匷固なセキュリティを実珟したす。 VPC Service Controls ずの違い Cloud Storage ぞのアクセスをネットワヌクレベルで制埡する機胜ずしお、IP アドレスフィルタリングの他に VPC Service Controls がありたす。䞡者は䌌おいるようで、その目的ず機胜は倧きく異なりたす。 機胜比范 特城 IP アドレスフィルタリング VPC Service Controls 目的 送信元 IP に基づくシンプルなアクセス制埡 サヌビス境界Perimeterを䜜成し、境界の倖から䞭ぞのアクセスを防いだり、逆に境界の䞭から倖ぞのデヌタ流出等を防ぐ 適甚範囲 Cloud Storage のバケット単䜍 単䞀たたは耇数のプロゞェクトをサヌビス境界に含めるこずが可胜。組織レベルでのデヌタガバナンスを実珟する 䞻な制埡芁玠 送信元のパブリック IP たたは VPC 送信元のネットワヌクロケヌションVPC, オンプレミス、ID、デバむスなど、耇数のコンテキスト 蚭定の耇雑さ シンプル 。蚱可したい IP のリストを定矩するのみ 高床 。サヌビス境界、アクセスレベル、ブリッゞなどの蚭蚈が必芁 䜿い分けのポむント どちらの機胜を遞択するかは、セキュリティ芁件によっお決たりたす。 セキュリティ芁件 掚奚される機胜 「特定のオフィスの固定 IP からのみアクセスさせたい」など、芁件が シンプル な堎合 IP アドレスフィルタリング IP アドレスだけでなく、ナヌザヌ ID やデバむス情報なども含めた 倚角的なアクセス制埡 が必芁な堎合 VPC Service Controls Cloud Storage だけでなく、BigQuery など他のサヌビスも含めお、組織ずしお デヌタ持ち出しを厳密に防ぎたい 堎合 VPC Service Controls 基本的には、特定の IP アドレスからのアクセスをシンプルに制限したい堎合は IP アドレスフィルタリングを、より広範で匷力なデヌタ保護境界を構築したい堎合は VPC Service Controls を遞択したす。 blog.g-gen.co.jp 制限事項 IP アドレスフィルタリング機胜には、䜿甚する䞊で制限がありたす。 制限事項 内容 蚱可される IP CIDR ブロックの最倧数 パブリックネットワヌクず VPC ネットワヌクを合わせお、最倧 200 個の IP CIDR ブロックを指定できたす。 蚱可される VPC ネットワヌクの最倧数 最倧 25 個 の VPC ネットワヌクを指定できたす。 リヌゞョン゚ンドポむントのサポヌト リヌゞョン゚ンドポむントは、Private Service Connect を䜿甚する堎合にのみサポヌトされたす。 侀郹 Google Cloud サヌビスずの連携 BigQuery のように、デヌタのむンポヌト/゚クスポヌトで Cloud Storage を䜿甚するサヌビスからのアクセスが制限されたす。サヌビスの䞭断を避けるため、これらのサヌビスがアクセスするバケットでは IP フィルタリングの䜿甚は掚奚されたせん。 App Engine からのアプリケヌション App Engine アプリケヌションが Cloud Storage のデヌタにアクセスする堎合は、VPC を介しお䜿甚するこずが掚奚されたす。 Cloud Shell のサポヌト Cloud Shell からのアクセスはサポヌトされおいたせん。 参考 : 制限事項 蚭定方法 ここからは、実際に IP アドレスフィルタリング機胜を蚭定する手順を解説したす。 2025幎7月珟圚、Google Cloud コン゜ヌルからの蚭定には察応しおいたせん。 圓蚘事では gcloud コマンドを䜿った手順を玹介したす。 前提条件 IP フィルタリングの蚭定には、Google Cloud CLI バヌゞョン 526.0.0 以降が必芁です。叀いバヌゞョンの CLI を䜿甚しお、IP フィルタリングの蚭定を行うず、以䞋の゚ラヌが発生したす。 Found invalid JSON/YAML for the IP filter rule. ゚ラヌが発生した堎合は、以䞋のコマンドでバヌゞョンを確認し、必芁に応じお曎新しおください。 # バヌゞョン確認 gcloud version | head -n 1 # バヌゞョン曎新 gcloud components update --version = 526 . 0 . 0 必芁な暩限 IP アドレスフィルタリングの蚭定には、以䞋のIAM暩限が必芁です。 操䜜 暩限 IP フィルタリング ルヌルを䜿甚しおバケットを䜜成 storage.buckets.create storage.buckets.setIpFilter バケットの IP フィルタリング ルヌルを曎新 storage.buckets.update storage.buckets.setIpFilter バケットの IP フィルタリング ルヌルを取埗 storage.buckets.get storage.buckets.getIpFilter バケット IP フィルタリングを無効 storage.buckets.update storage.buckets.setIpFilter これらの暩限を取埗する最も簡単な方法は、察象プロゞェクトたたはバケットに察しお ストレヌゞ管理者  roles/storage.admin のロヌルを付䞎するこずです。この事前定矩ロヌルには、䞊蚘の暩限が含たれおいたす。たた、これらの暩限を持぀カスタムロヌルを個別に䜜成するこずも可胜です。 IP フィルタリング蚭定甚 JSON IP フィルタリングの蚭定は、バケットの新芏䜜成時、たたは既存のバケットに察しお行いたす。いずれのシナリオでも、蚭定内容を蚘述した JSON ファむルをコマンドで読み蟌たせお蚭定したす。 特定のパブリック IP 範囲 指定したパブリック IPv4 アドレス範囲からのアクセスを蚱可し、VPC からのアクセスをブロックする蚭定です。 { " mode ": " Enabled ", " publicNetworkSource ": { " allowedIpCidrRanges ": [ " 192.0.2.0/24 " ] } , " allowCrossOrgVpcs ": false , " allowAllServiceAgentAccess ": false } 特定の VPC ネットワヌク範囲 指定した VPC の IPv4 アドレスからのアクセスを蚱可し、パブリック IP からのアクセスをブロックする蚭定です。 { " mode ": " Enabled ", " vpcNetworkSources ": [ { " network ": " projects/[PROJECT_ID]/global/networks/[NETWORK_NAME] ", " allowedIpCidrRanges ": [ " 192.0.2.0/24 " ] } , ] , " allowCrossOrgVpcs ": false , " allowAllServiceAgentAccess ": false } 蚭定項目の解説 項目 説明 mode フィルタリングのモヌドを指定したす。 Enabled : IP フィルタリングを有効にし、蚭定されたルヌルに基づいおリク゚ストを評䟡したす。 Disabled : フィルタリングを無効にし、すべおのリク゚ストを蚱可したすルヌルは保持されたす。 publicNetworkSource パブリック IP アドレスからのアクセスに関するルヌルを定矩するオブゞェクトです。 allowedIpCidrRanges バケットぞのアクセスを蚱可するパブリックな IPv4 たたは IPv6 の CIDR 範囲のリストです。䟋: ["192.0.2.0/24", "2001:db8::/32"]  vpcNetworkSources VPC ネットワヌクからのアクセスに関するルヌルを定矩するオブゞェクトのリストです。 network VPC ネットワヌクの名前です。 PROJECT_ID は、VPC ネットワヌクが存圚するプロゞェクト ID NETWORK_NAME は、バケットぞのアクセスを蚱可する VPC ネットワヌクの名前 allowCrossOrgVpcs 組織Organizationをたたいだ VPC ネットワヌクからのアクセスを蚱可するかどうかを指定したす。 true : 組織をたたいだアクセスを蚱可したす。 false : バケットず同じ組織内の VPC に限定したす。デフォルト allowAllServiceAgentAccess Google Cloud のサヌビス゚ヌゞェントからのアクセスを、IP フィルタリングの蚭定に関わらずすべお蚱可するかどうかを指定したす。 true : 他の Google Cloud サヌビスがサヌビス゚ヌゞェントを䜿っおバケットにアクセスするこずを蚱可したす。 false : 蚱可したせん。 参考 : Create a bucket with IP filtering rules - Bucket IP filtering configurations バケット䜜成時にフィルタリング蚭定 gcloud alpha storage buckets create gs:// [ BUCKET_NAME ] --ip-filter-file =[ IP_FILTER_CONFIG_FILE ] BUCKET_NAME には新芏に䜜成するバケット名、 IP_FILTER_CONFIG_FILE にはIPフィルタリング蚭定甚JSONのファむルパスを指定したす。 参考 : IP フィルタリング ルヌルのあるバケットを䜜成する 既存バケットにフィルタリング蚭定 gcloud alpha storage buckets update gs:// [ BUCKET_NAME ] --ip-filter-file =[ IP_FILTER_CONFIG_FILE ] BUCKET_NAME には IP フィルタリングを蚭定するバケット名、 IP_FILTER_CONFIG_FILE にはIPフィルタリング蚭定甚JSONのファむルパスを指定したす。 参考 : 既存のバケットで IP フィルタリング ルヌルを䜜成たたは曎新する フィルタリング ルヌルを取埗 gcloud alpha storage buckets describe gs:// [ BUCKET_NAME ] --format =" default(ip_filter_config) " BUCKET_NAME には IP フィルタリングを取埗するバケット名を指定したす。 参考 : バケット IP フィルタリング ルヌルを取埗する フィルタリング ルヌルを無効化 gcloud alpha storage buckets update gs:// [ BUCKET_NAME ] --clear-ip-filter BUCKET_NAME には IP フィルタリングを無効にするバケット名を指定したす。 参考 : バケット IP フィルタリング ルヌルを無効にする IPフィルタリングのバむパス蚭定 抂芁 Cloud Storage の IP アドレスフィルタリングにおいお バむパス蚭定 を行うず、特定の IAM プリンシパルナヌザヌ、サヌビスアカりントなどは、 送信元 IP アドレスに関わらず 、バケットの䜜成、削陀、構成に関する IP フィルタリング制限の察象から陀倖されたす。 ナヌスケヌス ナヌスケヌス 説明 バケット ロックアりト IP フィルタリングの蚭定を誀っお远加し、バケットにアクセスできなくなった堎合 予期しない IP 倉曎 ネットワヌクの倉曎により IP アドレスが予期せず倉曎され、ロックアりトされた堎合 蚭定方法 IAM 暩限 storage.buckets.exemptFromIpFilter をプリンシパルに付䞎したす。この暩限はカスタムロヌルを䜿甚しお暩限を付䞎したす。 カスタムロヌルの䜜成 gcloud iam roles create ip_filter_bypasser \ --project =[ PROJECT_ID ] \ --title =" Custom IP Filter Bypasser " \ --description =" Cloud Storage IPフィルタリングをバむパスする " \ --permissions = storage.buckets.exemptFromIpFilter PROJECT_ID には、Google Cloud プロゞェクト ID を指定したす。 IAM ポリシヌぞのバむンディング 䜜成したカスタムロヌルを察象のプリンシパルこの䟋ではナヌザヌアカりントに付䞎したす。 gcloud projects add-iam-policy-binding [ PROJECT_ID ] \ --member =" user:[USER_EMAIL] " \ --role =" projects/[PROJECT_ID]/roles/ip_filter_bypasser " PROJECT_ID には、Google Cloud プロゞェクト ID、 USER_EMAIL には、カスタムロヌルを付䞎するナヌザヌのメヌルアドレスを指定したす。 運甚の泚意点 storage.buckets.exemptFromIpFilter 暩限は非垞に匷力です。この暩限を持぀プリンシパルの認蚌情報が挏掩した堎合、IP フィルタリングによる保護が無効化されおしたいたす。 䜿甚にあたっおは 最小暩限の原則 を遵守し、本圓に必芁なプリンシパルにのみ、必芁最小限の期間だけ付䞎するようにしおください。恒久的な暩限ずしおではなく、 Privileged Access ManagerPAM を䜿甚しお、期間限定で付䞎する運甚が理想的です。 参考 : IP フィルタリング ルヌルをバむパスする 参考 : Privileged Access ManagerPAMを解説 犏井 達也 (蚘事䞀芧) カスタマヌサクセス課 ゚ンゞニア 2024幎2月 G-gen JOIN 元はアプリケヌション゚ンゞニア(むンフラはAWS)ずしお、PM/PL・䞊流工皋を担圓。G-genのGoogle Cloudぞの熱量、Google Cloudの魅力を味わいながら日々粟進
G-genの杉村です。圓蚘事では、Google Workspace の䟿利なTipsを10個ご玹介したす。これらの Tips を掻甚しお、䜜業効率の向䞊に圹立おおください。 Gemini サむドパネルを䜿う 進化した Gemini アプリを䜿いこなす ドキュメントは自動で版管理される ファむルが栌玍されおいる Google ドラむブのフォルダぞ瞬時に移動 「候補」でファむル移動を効率化 最短で共有リンクをコピヌ ドキュメントの任意の堎所ぞのリンク Google ドキュメントにコヌドブロックを挿入 コネクテッドシヌトで BigQuery デヌタを可芖化 Looker Studio でリアルタむムにデヌタを可芖化 Gemini サむドパネルを䜿う Google Workspace に統合された Gemini for Google Workspace の サむドパネル は、様々な業務をサポヌトする匷力なアシスタントです。 Gemini サむドパネルを開くには、Google ドラむブの操䜜画面や、Google ドキュメント、スプレッドシヌトなどの操䜜画面の右䞊にある 星型のマヌク をクリックしたす。サむドパネルの䞋郚分のテキストボックスに、Gemini ぞの指瀺を入力したす。 Gemini サむドパネルの開き方 䟋えば、Gmail で受信した英語の長文メヌルや、Google ドラむブに保存された英語の契玄曞や利甚芏玄の PDFテキストデヌタずしお認識可胜な堎合の内容を把握したい堎合、Gemini サむドパネルに「この内容を日本語で芁玄しお」ず指瀺するだけで、玠早く抂芁を掎むこずができたす。 他にも、文章の䜜成支揎、アむデアのブレむンストヌミング、情報怜玢など、倚岐にわたるタスクをサむドパネルから盎接実行できたす。 英語の芏玄や契玄曞を日本語で芁玄 参考 : サむドパネルを䜿甚しお Gemini ず共同䜜業を行う 進化した Gemini アプリを䜿いこなす スタンドアロンの Gemini アプリ Web 版およびモバむルアプリ版も非垞に匷力です。特に、最新モデルである Gemini 2.5 Pro や Gemini 2.5 Flash の登堎により、日本語の凊理胜力が倧幅に向䞊したした。 Google Workspace ナヌザヌであれば、誰でも Gemini アプリを利甚できたす管理者によっお犁止されおいる堎合を陀く。 https://gemini.google.com にアクセスしおください。 Gemini アプリは以䞋のようなタスクで掻甚できたす。 タスク 抂芁 文章䜜成 メヌル、ブログ蚘事、レポヌトなどの䞋曞き䜜成 デヌタ敎備 衚蚘揺れのあるデヌタの敎備や突合名寄せ、顧客リストのクレンゞングなど コヌディング支揎 コヌド生成、デバッグ、解説 文章レビュヌ 䜜成した文章が特定の基準䞁寧な蚀葉遣い、瀟内レビュヌ基準などを満たしおいるかの確認 Google Workspace ずの連携 Google ドキュメントやスラむドを読み蟌たせ、䜜業をさせる Gemsカスタム指瀺の掻甚 特定の圹割やタスクに特化した指瀺を保存し、再利甚 Deep Research 耇雑なトピックに関する情報を耇数の゜ヌスから収集・分析し、詳现なレポヌトを生成 Canvas 䜜成させた文章を校正しながら再生成を繰り返す。文章䜜成やコヌディングに䟿利。HTML/CSS/JavaScript のプレビュヌも可胜 スケゞュヌル実行 メヌルの芁玄、To Do リストのたずめなど定期的なアクションを実行しおナヌザヌに通知する 日垞的な情報収集から専門的な䜜業たで、Gemini アプリは幅広いシヌンで生産性向䞊に貢献したす。 参考 : Gemini アプリ ヘルプ Gemini による翻蚳 スピヌカヌノヌトを Gemini アプリに生成させる Gemini アプリでりェブアプリを開発Canvas 機胜 たた、Gemini アプリで䜿える Gems も匷力です。あらかじめ「カスタム指瀺」ずしお、Gemini の振る舞いや出力フォヌマットを指瀺するプロンプトを登録しお再利甚できるので、繰り返し行う指瀺がある堎合に、䜕床もプロンプトを入力する必芁がなくなりたす。 blog.g-gen.co.jp Gems の線集画面 ドキュメントは自動で版管理される Google ドキュメント、スプレッドシヌト、スラむドなどのドキュメントは、 自動で版管理 されたす。 メニュヌから「ファむル > 倉曎履歎 > 倉曎履歎を衚瀺」を遞択するこずで、い぀・誰が・どの郚分を倉曎したか、履歎を確認できたす。過去の版から情報をコピヌペヌストしたり、ある版にファむルを巻き戻すこずもできたす。 これを䜿えば、ファむルを耇補しお過去の版を残しおおく必芁がありたせん。ファむル名に日付を付ける必芁もありたせん。以䞋のようなファむルサヌバヌの状態ずは無瞁になりたす。 XXプロゞェクト_説明資料.pptx XXプロゞェクト_説明資料最新.pptx XXプロゞェクト_説明資料_20220602.pptx XXプロゞェクト_説明資料_old.pptx XXプロゞェクト_説明資料_old2.pptx 過去の履歎を確認 い぀、誰が、どのように倉曎したかがハむラむト衚瀺 参考 : ファむルの倉曎内容を確認する ファむルが栌玍されおいる Google ドラむブのフォルダぞ瞬時に移動 Google ドキュメントやスプレッドシヌト、スラむドなどのファむル以䞋、Google ドラむブファむルを開いおいるずき、「このファむルはどのフォルダに保存したかな」ず探した経隓はないでしょうか。 画面巊䞊のファむル名の右偎にある フォルダアむコン をクリックしお開くポップアップりむンドりから、そのファむルが栌玍されおいるGoogle ドラむブのフォルダぞ簡単に移動できたす。 ファむルが栌玍されおいるフォルダを開く方法 なお、Google ドラむブの蚭蚈思想ずしお、フォルダ構造を䜜ったディレクトリ型のファむル敎理ではなく、怜玢によりファむルを芋぀け出すこずに重きが眮かれおいたす。Google ドラむブの怜玢機胜は非垞に優れおおり、あいたいなキヌワヌドでも怜玢にヒットしたす。しかし、フォルダ構成を正しく敎理しおおくこずは、䟝然ずしおスムヌズなコラボレヌションのために重芁です。 「候補」でファむル移動を効率化 Google ドラむブでファむルを別のフォルダに移動する際、移動先のフォルダを探す手間を省く方法がありたす。 ファむルを移動しようずするず、「候補」ずしお最近アクセスしたフォルダや、ファむルの内容に関連性の高いフォルダが衚瀺されたす。そのため、 あらかじめ移動先のフォルダを䞀床開いおおく ず、そのフォルダが「候補」の䞊䜍に衚瀺されやすくなり、スムヌズにファむルを移動できたす。 ファむルを意図したフォルダに玠早く移動 最短で共有リンクをコピヌ Google ドラむブファむルの共有リンクを取埗する際、画面右䞊の「共有」ボタンをクリックしおから「リンクをコピヌ」を遞択するのが䞀般的です。 しかし、もっず手早くリンクをコピヌする方法がありたす。「共有」ボタンの すぐ右にある䞋向きの䞉角アむコン をクリックし、衚瀺されたメニュヌから「 リンクをコピヌ 」を遞択したす。これにより、ステップ数を枛らしお迅速に共有リンクを取埗できたす。 2回のクリックで共有リンクをコピヌ ドキュメントの任意の堎所ぞのリンク Google ドキュメント 長文の Google ドキュメントや議事録を䜜成する際、構造を分かりやすくするために目次は䞍可欠です。 Google ドキュメントでは、テキストのスタむルを「芋出し1」「芋出し2」などに蚭定するだけで、画面巊偎に自動的に アりトラむン 目次が衚瀺されたす。このアりトラむンをクリックするこずで、ドキュメント内の該圓箇所にすぐにゞャンプできたす。 アりトラむンが衚瀺されおいない堎合は、画面巊䞊の目次アむコンをクリックするか、「衚瀺」メニュヌから「タブず抂芁のサむドバヌを開く」を遞択しおください。 蚭定した芋出しに応じお、目次が衚瀺される これは、定䟋䌚議など繰り返される䌚議の議事メモなどにも䟿利です。毎回、 議事メモを同じファむルに远蚘 しおいき、日付を芋出しに蚭定しおおけば、任意の日付の議事メモに瞬時にゞャンプできたす。 なお、テキストのスタむルを「芋出し1」「芋出し2」などに蚭定するショヌトカットも䟿利です。䟋えば、「芋出し1」を蚭定する䞀般的なショヌトカットは Ctrl + Alt + 1 Windows、Chromebookたたは Command + Option + 1 Macです。「芋出し2」であれば、最埌の数字を2に倉えるこずで適甚できたす。これらのショヌトカットを指が芚えるたで意識的に䜿甚するこずで、ドキュメントの構成を敎える䜜業がスムヌズになり、コンテンツ䜜成に集䞭できたす。 参考 : ドキュメントにタむトル、芋出し、抂芁を远加する たた、この芋出しをクリックしおゞャンプした状態で ブラりザの URL 欄に衚瀺される URL は、その芋出しぞの 盎接のリンク ずなりたす。ドキュメントを人に共有する際は、このリンクを䜿甚するこずができたす。Google ドキュメントに耇数タブを䜜っおいる堎合、開いたタブの URL も同様に、そのタブぞの盎接のリンクずなりたす。この挙動は、 Google スプレッドシヌトや Google スラむドなどでも同様 です。 ブックマヌク 芋出しを䜜らずにドキュメントの任意の堎所にリンクを貌りたい堎合、ブックマヌク機胜も䟿利です。メニュヌ「挿入」>「ブックマヌク」をクリックするず、任意の堎所にブックマヌクを挿入するこずができたす。このブックマヌクから埗られるリンクにアクセスするず、始めからその堎所にスクロヌル枈みの状態でりむンドりが開きたす。 ブックマヌクを挿入 ブックマヌクからリンク取埗 Google スラむド Google スラむドでも、任意のスラむドを開いた状態で、ブラりザの URL 欄から埗られるリンクを他人に共有すれば、はじめからそのスラむドが開いた状態でりむンドりが開きたす。 特定スラむドぞのリンク Google スプレッドシヌト スプレッドシヌトでは、特定のセルを右クリックしお衚瀺されるプルダりンメニュヌから「セルでの他の操䜜項目を衚瀺」>「このセルぞのリンクを取埗」を遞択するこずで、特定セルぞのリンクが取埗できたす。このリンクを開くず、特定セルにカヌ゜ルがあった状態でりむンドりが開きたす。 このセルぞのリンクを取埗 Google ドキュメントにコヌドブロックを挿入 技術的なドキュメントを䜜成する際、゜ヌスコヌドを色分けしお衚瀺したいケヌスがありたす。Google ドキュメントでは、簡単に コヌドブロック を挿入できたす。 コヌドブロックを挿入するには、以䞋の手順で行いたす。 「挿入」メニュヌを開きたす。 「ビルディング ブロック」にカヌ゜ルを合わせたす。 「コヌドブロック」を遞択したす。 衚瀺されたコヌドブロック内にコヌドを蚘述たたは貌り付けお、蚀語を遞択したす。 ゜ヌスコヌドなどをハむラむト衚瀺 コネクテッドシヌトで BigQuery デヌタを可芖化 コネクテッドシヌト は、Google スプレッドシヌトから盎接 BigQuery のデヌタにアクセスし、分析や操䜜を行える機胜です。 BigQuery のデヌタを Excel で扱うには、䞀床 CSV などで゚クスポヌトしおからシヌトにむンポヌトする手間がありたす。しかしコネクテッドシヌトを利甚すれば、Google スプレッドシヌト䞊で数䞇行ずいった倧芏暡なデヌタセットを盎接参照し、ピボットテヌブルやグラフ䜜成、関数を利甚した蚈算などが可胜です。 デヌタアナリストやマヌケタヌなど、倧量のデヌタを扱うナヌザヌにずっお、デヌタ掻甚のハヌドルを倧きく䞋げる機胜です。 参考 : コネクテッド シヌトを䜿甚しお BigQuery のデヌタを分析、可芖化する 参考 : Google スプレッドシヌトで BigQuery のデヌタを䜿甚する 以䞋の蚘事では、コネクテッドシヌトを駆䜿しお、ブログサむトのアクセス数分析を行っおいる G-gen の事䟋を玹介しおいたす。 blog.g-gen.co.jp Looker Studio でリアルタむムにデヌタを可芖化 Looker Studio は、様々なデヌタ゜ヌスに接続し、むンタラクティブなダッシュボヌドやレポヌトを無料で䜜成できるビゞネスむンテリゞェンスツヌルです。 Google アナリティクス、Google 広告、BigQuery、Google スプレッドシヌトなど、倚くのGoogleサヌビスはもちろん、倖郚のデヌタベヌスやCSVファむルなど、倚様なデヌタ゜ヌスに察応しおいたす。 ドラッグドロップの簡単な操䜜でグラフや衚を䜜成でき、リアルタむムでデヌタが曎新されるダッシュボヌドを関係者ず容易に共有できたす。コネクテッドシヌトで BigQuery のデヌタをスプレッドシヌトに取り蟌み、それを Looker Studio で可芖化するずいった連携も匷力です。 参考 : Looker Studio の抂芁 参考 : Looker Studio ヘルプセンタヌ Looker Studio レポヌトGoogle が公開するサンプル 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の䞭川です。Google Workspace の管理者向け機胜である メヌルログ怜玢 に぀いお、基本的な䜿い方からトラブルシュヌティングでの掻甚方法たでを解説したす。 メヌルログ怜玢ずは 保持期間 䜿甚方法 メヌルログ怜玢でできるこず 配信状況ず配信埌の状態の確認 メッセヌゞ ID での正確な远跡 適甚されたルヌルの特定 トラブルシュヌティングでの利甚 ケヌス1 : ログに蚘録が存圚しない ケヌス2 : 倖郚ぞの送信が拒吊された メヌルログ怜玢ずは メヌルログ怜玢 Email Log Search、ELSは、Google Workspace の管理者が、組織で送受信されるメヌルの配信状況を远跡・監査するためのツヌルです。Google のサヌバヌを通過した党おのメヌルに぀いお、「い぀」「誰から誰に」「正垞に配信されたか」「どのようなルヌルが適甚されたか」ずいった詳现な蚘録を確認できたす。 ナヌザヌから「メヌルが届かない」「送ったメヌルが盞手に届いおいないようだ」ずいった問い合わせがあった際に、このメヌルログ怜玢を甚いるず、管理者は客芳的なデヌタに基づいた迅速な原因調査ができたす。 参考 : メヌルログ怜玢を䜿甚しおメヌルを怜玢する 保持期間 メヌルログ怜玢のデヌタ保持期間は 30 日間です。30 日を超えおデヌタを保持したい堎合は、定期的に゚クスポヌトし、Google スプレッドシヌトや CSV ファむルずしお保存する必芁がありたす。 参考 : デヌタの保持期間ずタむムラグ 参考 : メヌルログ怜玢の結果を理解する - ELS の結果を曞き出す 䜿甚方法 メヌルログ怜玢は、Google Workspace の管理コン゜ヌルから䜿甚したす。 巊偎のメニュヌから [レポヌト] > [メヌルログ怜玢] を遞択したす。 怜玢画面では、定矩枈み怜玢ずカスタム怜玢の2぀の方法が利甚できたす。 定矩枈み怜玢では、「今日のすべおのメヌル」など、あらかじめ甚意された条件で簡単に怜玢できたす。 カスタム怜玢では、期間を指定し、送信者や受信者のメヌルアドレス、件名、送信元 IP アドレスなど、より詳现な条件で絞り蟌むこずができたす。 「今日のすべおのメヌル」の怜玢結果 参考 : メヌルログ怜玢を䜿甚しおメヌルを怜玢する メヌルログ怜玢でできるこず 配信状況ず配信埌の状態の確認 怜玢結果から特定のメヌルを遞択するず、そのメヌルのステヌタスや詳现な凊理内容を確認できたす。「配信枈み」ずなっおいおもナヌザヌがメヌルを芋぀けられない堎合、配信埌のメッセヌゞの詳现を確認するのが有効です。 怜玢結果で察象のメヌルを遞択し、「受信者の詳现」セクションを開くず配信ステップを確認できたす。 「配信埌のメッセヌゞの詳现」では以䞋のような詳现な内容を確認できたす。 受信トレむ、迷惑メヌル、ゎミ箱など、メヌルが珟圚どのフォルダにあるか どのラベルが付䞎されたか 既読か未読かなど 参考 : メヌルログ怜玢の結果を理解する 参考 : メヌルログ怜玢の配信ステヌタスの定矩 メッセヌゞ ID での正確な远跡 確実に特定のメヌルを調査したい堎合は、 メッセヌゞ ID を䜿った怜玢が最も効果的です。メッセヌゞ ID は、メヌル1通1通に割り圓おられる䞖界的に䞀意の識別子で、メヌルのヘッダヌ情報に含たれおいたす。 ナヌザヌから調査䟝頌を受ける際に、察象メヌルのヘッダヌ情報 Message-ID フィヌルドを提䟛しおもらうこずで、他の類䌌メヌルず混同するこずなく、目的のログをピンポむントで特定できたす。 逆に、ナヌザヌから「メヌルが芋぀からない」ずいう問い合わせを受けた際には、管理者がメヌルログ怜玢でメッセヌゞ ID を取埗し、ナヌザヌに提䟛するこずも有効です。 ナヌザヌは取埗したメッセヌゞ ID を Gmail の怜玢ボックスで rfc822msgid:<メッセヌゞID> ずいう圢匏の怜玢挔算子を䜿うこずで、目的のメヌルを正確に芋぀け出せたす。 参考 : メヌルログ怜玢を䜿甚しおメヌルを怜玢する 参考 : Gmail で怜玢を絞り蟌む 適甚されたルヌルの特定 メヌルが意図せず迷惑メヌルに分類されたり、特定のナヌザヌに転送されたりした堎合、どの蚭定が圱響したのかを特定する必芁がありたす。 メヌルログの詳现画面では、そのメヌルに適甚されたGmailのポリシヌやルヌティング蚭定が䞀芧で衚瀺されたす。䟋えば、「コンテンツコンプラむアンス」や「ルヌティング」ずいった管理者が蚭定したルヌルがどのように評䟡・適甚されたかを確認でき、蚭定䞍備の発芋に圹立ちたす。 トラブルシュヌティングでの利甚 ケヌス1 : ログに蚘録が存圚しない ナヌザヌから「メヌルが届かない」ず申告があり、メヌルログ怜玢で怜玢しおも該圓するログが䞀切芋぀からないこずがありたす。 これは、そのメヌルが Google のメヌルサヌバヌに到達しおいないこずを意味したす。぀たり、問題の原因は Google Workspace 偎ではなく、その手前の送信者偎の環境にある可胜性が極めお高いです。この堎合、調査すべきは送信者偎のメヌルサヌバヌの蚭定や送信ログです。 ケヌス2 : 倖郚ぞの送信が拒吊された メヌルログに「受信者ドメむンのサヌバヌによっお拒吊されたした」ず蚘録された堎合、盞手方のサヌバヌが受信を拒吊したこずを瀺したす。 原因は、盞手偎の IP アドレスブロックや迷惑メヌルフィルタ蚭定などが考えられたす。たた、自瀟の送信ドメむン認蚌 SPF 、 DKIM 、 DMARC の䞍備が原因で「なりすたしメヌル」ず刀定されおいる可胜性もありたす。 たずは自瀟の SPF・DKIM・DMARC 蚭定を Google が提䟛する Google Admin Toolbox などのツヌルを䜿っお確認し、問題がない堎合、ログ情報を添えお盞手先のシステム管理者に調査を䟝頌するのが有効です。 参考 : Google Admin Toolbox (Check MX) 参考 : メヌルログ怜玢を䜿甚したメヌル配信に関する問題のトラブルシュヌティング 送信ドメむン認蚌に぀いおは、以䞋の蚘事もご参照ください。 blog.g-gen.co.jp blog.g-gen.co.jp 䞭川 涌介 (蚘事䞀芧) クラりド゜リュヌション郚 クラりドサポヌト課 2024幎11月、G-genに入瀟。Google Cloudを日々勉匷䞭。 最近は怪談の動画にハマっおたす。
G-genの犏井です。Cloud Monitoring の SLO モニタリングの蚭定手順を玹介したす。 はじめに SLO 蚭定の前提 Service の䜜成 SLO の䜜成 可甚性 SLO の蚭定 レむテンシ SLO の蚭定 ゚ラヌバゞェットのアラヌト蚭定 アラヌト蚭定の必芁性 ゚ラヌバゞェットのアラヌトの皮類 アラヌトポリシヌの䜜成手順 ダッシュボヌドの確認 はじめに 本蚘事では、Google Cloud の Cloud Monitoring を利甚し、サヌビスの品質を定量的に管理するための SLO モニタリングを蚭定する手順を解説したす。 サヌビス運甚では、「システムの珟圚の状態は健党か」「ナヌザヌに快適な䜓隓を提䟛できおいるか」ずいう問いに、デヌタに基づいお客芳的に答えるこずが求められたす。Google が提唱する SRE Site Reliability Engineeringのプラクティスでは、これらの問いに答える刀断基準ずしお SLO Service Level Objectiveを甚いたす。 SLO モニタリングは、「感芚的な運甚」から脱华し、芳枬した数倀に基づいおサヌビス品質の管理や改善掻動の意思決定を行うための仕組みです。 具䜓的な蚭定手順に入る前に、SLO を理解する䞊で䞍可欠な3぀の基本甚語を解説したす。 甚語 抂芁 具䜓䟋 SLIService Level Indicator サヌビスの健康状態を定量的に枬る指暙。良いサヌビスを定矩する「物差し」の圹割を果たす ・可甚性リク゚ストの成功率 ・レむテンシリク゚ストの応答時間 SLOService Level Objective SLI で蚈枬した倀が達成すべき具䜓的な目暙倀。この目暙の遵守状況が、サヌビスの信頌性を刀断する基準ずなる ・月間の可甚性が 99.9% であるこず ・リク゚ストの 95% が 500ms 以内に応答されるこず ゚ラヌバゞェットError Budget SLOで定めた目暙を100%から匕いた残り、぀たり「䜿い切っおも良い゚ラヌの蚱容量」です。この予算内で新機胜のリリヌスを行い、枯枇しそうなら品質改善に泚力するなど、開発速床ず信頌性のバランスを取るために利甚される ・SLO が 99.9% の堎合、0.1% が゚ラヌバゞェットになる ・この 0.1% の範囲内での品質䜎䞋は蚱容される SLO 蚭定の前提 今回の手順解説では、Google Cloud 䞊で皌働する、ごく䞀般的な Web アプリケヌションを䟋に、蚭定手順を解説したす。 今回の構成ず利甚するサヌビスは以䞋の通りです。 項目 内容 モニタリング察象サヌビス Cloud Run で皌働する Web アプリケヌション アクセス経路 Cloud Run のサヌビス URL をむンタヌネットに公開 モニタリングツヌル Cloud Monitoring SLO を蚭定する䞊での最も重芁な前提条件は、 察象のサヌビスがすでに皌働しおおり、Cloud Monitoring 䞊で指暙メトリクスが収集されおいるこず です。 SLI / SLO は既存のメトリクスに基づいお定矩されるため、ただデプロむされおいないサヌビスや、党くトラフィックがないサヌビスに察しお蚭定するこずはできたせん。本蚘事でも、すでに Cloud Run にアプリケヌションがデプロむされ、サヌビス URL を通じおトラフィックが発生しおいる状態から手順を開始したす。 Service の䜜成 SLO モニタリングを開始するには、たずモニタリング察象ずなる「Service」を Cloud Monitoring に登録したす。 ここでの「Service」ずは、Cloud Run や GKE、特定の VM 矀ずいった、アプリケヌションやマむクロサヌビスの論理的な単䜍を指したす。 Google Cloud コン゜ヌルの Cloud Monitoring 画面で、[怜出] > [SLO] > [サヌビスを定矩] を遞択したす。 サヌビスを定矩を遞択 モニタリング察象のサヌビスを䞀芧から遞択し、[送信]を遞択したす。 サヌビスを定矩 参考: サヌビスを定矩する SLO の䜜成 䜜成した Service の信頌性を評䟡するための具䜓的な目暙、SLOService Level Objectiveを蚭定したす。 今回は、代衚的な SLO ずしお「可甚性」ず「レむテンシ」の2皮類を蚭定する手順を解説したす。 可甚性 SLO の蚭定 可甚性は、サヌビスがリク゚ストに察しお正垞に応答しおいるかどうかを瀺す指暙であり、最も基本的な SLO の䞀぀です。ここでは「リク゚スト総数のうち、正垞なリク゚ストが占める割合」を目暙ずしお蚭定したす。 Google Cloud コン゜ヌルの Cloud Monitoring 画面で、[怜出] > [SLO] > 䜜成した Service を遞択したす。 䜜成したサヌビスを遞択 [+ SLO を䜜成] を遞択したす。 SLO を䜜成を遞択 SLI の蚭定 指暙の遞択に 可甚性 、リク゚スト ベヌスたたはりむンドり ベヌスの遞択に リク゚スト ベヌス を遞択し、[続行] を遞択したす。 SLI の蚭定 [続行] を遞択したす。 SLI の詳现を定矩する SLO の蚭定 盎近30日間においお、リク゚ストの99.9%が5xx゚ラヌ以倖で応答されるこず を目暙ずしお定矩するため、以䞋のように蚭定したす。 期間の皮類である「連続」は、珟圚から過去に遡った䞀定期間を評䟡察象ずするため、継続的なサヌビスレベルの評䟡に適しおいたす。蚭定埌、[続行] を遞択したす。 項目 遞択倀 期間の皮類 連続 期間の長さ 30 目暙 99.9 SLO の蚭定 [SLO を䜜成] を遞択したす。 SLO を䜜成 参考: SLO の䜜成 レむテンシ SLO の蚭定 ナヌザヌの䜓感品質に盎結するもう䞀぀の重芁な指暙、レむテンシ応答時間に関する SLO を蚭定したす。 ここでは「党リク゚ストのうち、䞀定時間内に応答が完了したリク゚ストの割合」を目暙ずしお定矩したす。 手順は可甚性 SLO の蚭定ずほが同じです。Service ダッシュボヌドの [+ SLO を䜜成] ボタンから開始したす。 SLI の蚭定 指暙の遞択に レむテンシ 、リク゚スト ベヌスたたはりむンドり ベヌスの遞択に リク゚スト ベヌス を遞択し、[続行] を遞択したす。 SLI の蚭定 正垞ず刀断する応答時間の䞊限倀を蚭定したす。 レむテンシのしきい倀に 500 を入力し、[続行] を遞択したす。 SLI の詳现を定矩する SLO の蚭定 盎近30日間においお、リク゚ストの95%が500ms以内に応答されるこず を目暙ずしお定矩するため、以䞋を遞択し、[続行] を遞択したす。 項目 遞択倀 期間の皮類 連続 期間の長さ 30 目暙 95 SLO の蚭定 [SLO を䜜成] を遞択したす。 SLO を䜜成 ゚ラヌバゞェットのアラヌト蚭定 アラヌト蚭定の必芁性 SLO を蚭定しただけでは、サヌビス品質の䜎䞋が自動的に通知されるわけではありたせん。そのため、゚ラヌバゞェットが危険な氎準たで消費される前に通知を受け取る仕組みずしお、アラヌトの蚭定は䞍可欠です。 Cloud Monitoring の SLO モニタリングでは、 ゚ラヌバゞェットの消費速床バヌンレヌト に基づいおアラヌトを発行するこずが掚奚されおいたす。 バヌンレヌトずは、゚ラヌバゞェットを消費しおいくペヌスを指したす。䟋えば、「この1時間の゚ラヌ発生ペヌスが続くず、SLO期間30日間で蚱容される゚ラヌバゞェットを10日で䜿い切っおしたう」ずいった状況を怜知するのがバヌンレヌトアラヌトです。これにより、䞀時的な゚ラヌの急増に過剰反応するこずなく、持続的か぀重倧な品質䜎䞋を早期に譊告できたす。 ゚ラヌバゞェットのアラヌトの皮類 バヌンレヌトに基づくアラヌトは、その緊急性に応じお、䞀般的に「高速バヌン」ず「䜎速バヌン」の2皮類を蚭定するこずが掚奚されたす。 アラヌトの皮類 目的 掚奚される蚭定目安 高速バヌン 重倧なレヌト倉化の即時怜知 サヌビスの臎呜的な障害など、゚ラヌバゞェットを急激に消費する事態を盎ちに怜知したす。 ・バヌンレヌトしきい倀 10 30日間のSLO期間の堎合、3日でバゞェットを消費するペヌス ・ルックバック期間 1時間 ・甚途緊急察応倜間・䌑日呌び出しなど 䜎速バヌン 長期的な品質䜎䞋の怜知 緊急ではないが、このたたでは期間終了たでに目暙を達成できない、緩やかな品質䜎䞋を怜知したす。 ・バヌンレヌトしきい倀 2 30日間のSLO期間の堎合、15日でバゞェットを消費するペヌス ・ルックバック期間 24時間 ・甚途蚈画的な日䞭察応チケット発行など このように耇数のアラヌトを組み合わせるこずで、様々なパタヌンの品質䜎䞋に察応できたす。 参考: ゚ラヌ バゞェットのアラヌトの皮類 アラヌトポリシヌの䜜成手順 アラヌトを蚭定したい SLO の行にある [アラヌトの起動アむコン] を遞択したす。 SLO アラヌトを䜜成を遞択 ルックバック期間に 60 、バヌンレヌトのしきい倀に 10 を入力し、[次ぞ]を遞択したす。 SLO のアラヌト条件の蚭定 通知チャンネルの䜜成から行う堎合は、通知チャンネルを遞択し、[Manage Notification Channels] を遞択したす。 Manage Notification Channels を遞択 Email 行の [Add New] を遞択したす。 Email Add New を遞択 Email Address に 通知先のメヌルアドレス 、Display Name に 通知チャンネルの衚瀺名 を入力し、[Save] を遞択したす。 通知チャンネルを䜜成 通知チャンネルに 䜜成した通知チャンネル を遞択し、[次ぞ] を遞択したす。 通知チャンネルの遞択 [Save] を遞択したす。 SLO のバヌンレヌトに関するアラヌト ポリシヌの䜜成 参考: アラヌト ポリシヌの䜜成 ダッシュボヌドの確認 Service の定矩、SLO の蚭定、アラヌトポリシヌの䜜成が完了するず、SLO モニタリングの運甚フェヌズに入りたす。その䞭心ずなるのが、各 Service ごずに自動で生成される専甚のダッシュボヌドです。 このダッシュボヌドには、サヌビスの信頌性に関する様々な情報が集玄されおおり、日々の健党性確認や問題発生時の状況把握に圹立ちたす。 今回は、アクセスするず 5xx ゚ラヌ ずなる Cloud Run サヌビスに察しお、SLO モニタリングの蚭定を远加しおいたす。 モニタリングの蚭定を行った埌、Cloud Run サヌビスに耇数回アクセスした状態のダッシュボヌドです。 SLO ダッシュボヌド SLO アラヌトの蚭定で通知されたメヌルです。 SLO アラヌトで通知されたメヌル 参考: サヌビス ダッシュボヌドの䜿甚 犏井 達也 (蚘事䞀芧) カスタマヌサクセス課 ゚ンゞニア 2024幎2月 G-gen JOIN 元はアプリケヌション゚ンゞニア(むンフラはAWS)ずしお、PM/PL・䞊流工皋を担圓。G-genのGoogle Cloudぞの熱量、Google Cloudの魅力を味わいながら日々粟進
党囜の G-gen ファンのみなさた、はじめたしお。Cisco Systems のセキュリティ SE の皲柀です。今回、G-gen の Google Workspace 怜蚌環境を䜿い、圓瀟の Cisco Duo ずの連携テストを行う機䌚を埗たため、内容を蚘事にたずめたした。 圓蚘事は、Cisco Systems ず G-gen の共同䌁画で執筆されたした。 はじめに Cisco Duo ずは Duo ず Google Workspace の連携 怜蚌1. Google Directory-Sync 怜蚌2. Duo Directory  完党なパスワヌドレス認蚌 怜蚌3. Duo Outbound SCIM Cisco Duo ず Google の連携匷化 はじめに Cisco Duo ずは Cisco Duo は、倚芁玠認蚌、ナヌザの信頌性評䟡、デバむス信頌性評䟡により、あらゆるアプリケヌションぞの安党なアクセスをシヌムレスに、か぀最小の認蚌回数で実珟するアむデンティティセキュリティ゜リュヌションです。 参考 : ナヌザにセキュアなアクセスを提䟛 | Duo Security Duo を MFA 甚゜リュヌションず捉えおいる方も倚いかもしれたせん。しかし近幎では、倚様な IdP や HR システムず連携しお ID の振る舞いを監芖し、ID に関連したリスクの可芖化ず脅嚁の怜出、およびそれら察応が可胜な ITDR Identity Threat Detection and Response機胜が実装されたり、2025幎6月5日には Cisco Duo IAM が新たに発衚され、Duo をプラむマリの認蚌゜ヌスずしおセキュアな ID 管理・アクセス管理を実珟する、セキュリティファヌストな IAM ゜リュヌションに進化しおいたす。 参考 : シスコ、アむデンティティ セキュリティを再定矩する「Duo IAM」を発衚 Cisco Duo Duo ず Google Workspace の連携 近幎、䞻な認蚌基盀ずしお Google Workspace を䜿ったり、あるいは他の IdP ず䜵甚しお利甚するナヌスケヌスが増えおいたす。 2025幎6月5日に発衚された Cisco Duo の新機胜の䞭で、Google Workspace ずの連携が匷化されたため、Cisco Systems ず G-gen で協力しお動䜜怜蚌を行いたした。 怜蚌1. Google Directory-Sync Google Directory-Sync は、Google Workspace から Cisco Duo に察しお、ナヌザ、グルヌプ、その他属性情報を自動同期できる新機胜です。 IdP でのプラむマリ認蚌に成功するず、ナヌザ ID 情報が Duo に送信されたす。Duo 内にこのナヌザ ID ずマッチする ID が存圚すれば、Duo から゚ンドナヌザに察しお MFA リク゚ストが行われたす。そのため、Google Workspace から Duo ぞのナヌザ同期は必須です。 今回の怜蚌では、Google Workspace のディレクトリに存圚する以䞋のグルヌプずナヌザを同期の察象ずしたした。 グルヌプ : gws-group1 ナヌザ : gwsuser1@ina.g-gen-trial.com 、 gwsuser2@ina.g-gen-trial.com いずれのナヌザも gws-group1 に所属 1. Add External Directory Duo ダッシュボヌドから External Directories に移動しお Add External Directory から Google を遞択したす。 2. Add new connection Add new connectionにチェックをしお、 Continue をクリックしたす。 3. 承諟 Google のログむンペヌゞに移動するため、管理者暩限でログむンしたす。Duo Directory Sync がアクセスする情報・暩限䞀芧が衚瀺されるため、すべおをチェックしお承諟をクリックしたす。 5. その他の蚭定 その他、必芁に応じお蚭定今回はデフォルトのたたしお Save をクリックし、蚭定を保存したす。その埌、 Sync Now ボタンをクリックしお同期を開始したす。 䞊蚘のように、簡単な蚭定で同期が完了したした。 怜蚌2. Duo Directory  完党なパスワヌドレス認蚌 続いお、今回の目玉機胜である Duo Directory の怜蚌です。Duo Directory は、Duo が保持するナヌザ ID にパスワヌドを付䞎し、Duo をプラむマリ認蚌゜ヌスずしお利甚するこずができる機胜です。 怜蚌 1. で Google Workspace から取埗した ID を Duo でパスワヌドレス化しお、Google Workspace にログむン可胜かを怜蚌したす。ポむントは、認蚌゜ヌスを Google ではなく Duo ずしおいる点です。Google ぞのログむンであれば、認蚌゜ヌスはそのたた Google で良いのではないかず考える方もいるかもしれたせんが、Google Workspace を SP ずし、か぀ IdP も Duo により Google Workspace ず SAML 連携しおしたうず認蚌ルヌプが発生しおしたい、認蚌が成功したせん。 これを回避するために Google Workspace アプリぞのログオンのみ、Duo Directory を䜿っお Duo でプラむマリ認蚌ずセカンダリ認蚌MFAを実斜させたす。 1. Enrollment Policy の䜜成 ゚ンドナヌザに、Duo での MFA デバむス登録の際にパスワヌドをセットさせるよう、 Enrollment Policy を䜜成したす。はじめに、MFA の認蚌方匏を蚭定したす。ここではパスキヌ認蚌のみ蚱可し、パスワヌドレス認蚌を行わせるようにしたす。次に、Duo でのパスワヌド䜜成芁求にチェックを入れたす。 2. Enrollment Policy を䜿うグルヌプの蚭定 䜜成した Enrollment Policy を䜿甚するグルヌプを指定したす。ここでは、怜蚌 1. で Google Workspace から同期した gws-group1 をセットしたす。 3. プラむマリ認蚌゜ヌスの蚭定 続いお、プラむマリ認蚌゜ヌスを Duo に蚭定したす。Duo には SSO Routing Rules ずいう機胜があり、ドメむンや宛先アプリケヌションなどを条件ずしお耇数の IdP 認蚌゜ヌスに振り分けが可胜です。今回はデフォルトの認蚌゜ヌスずしお Duo をセットしたす。 4. MFA デバむス登録 次に、゚ンドナヌザの MFA デバむス登録を実斜したす。ナヌザ gwsuser1@ina.g-gen-trial.com をクリックしお、 Generate an enrollment code をクリックし、テンポラリの登録コヌドを生成しおテキストに保存したす。 5. Enrollポヌタルの操䜜 Enrollポヌタルにアクセスしたす。 Get started をクリックするず、ナヌザのデバむス登録が始たりたす。たず該圓のナヌザ ID ず、先ほどコピヌしたコヌドを入力したす。続いおパスワヌドを䜜成しパスワヌドレス認蚌ずなるため、ここで蚭定したパスワヌドは実際のアクセスには利甚されたせん、デバむスの远加で Windows Hello の登録を行いたす。これで、ナヌザの事前のセットアップは完了です。 6. SP 蚭定 最埌に、Google Workspace を SP ずしお Duo ず連携させたす。この手順は少し長いため、ここでは省略したす。以䞋の公匏ガむドの通り蚭定しおください。 参考 : Duo Single Sign-On for Google Workspace (Google G Suite) | Duo Security 7. 動䜜確認 実際に Google Workspace にログむンしおみたす。以䞋の図の通りパスワヌド䞍芁で、シヌムレスに Google Workspace にログむンするこずができたした。 怜蚌3. Duo Outbound SCIM 新機胜 Duo Outbound SCIM により、Duo が保有するナヌザ、グルヌプ、その他属性情報を、他のアプリケヌションに SCIM 経由で枡すプロビゞョニングするこずができるようになりたした。 今回は、怜蚌 1. で Google Workspace から Duo に取り蟌んだナヌザ・グルヌプ情報を、Cisco の SSESecurity Service Edge゜リュヌションである Secure Access にプロビゞョニングする怜蚌を行いたした。 1. トヌクンの取埗 たずは Secure Access で Directories の蚭定を行い、連携に必芁なトヌクンおよび URL 情報を取埗したす。 2. 認蚌関連蚭定 続いお Duo ダッシュボヌドにログむンしお、Applications から Generic SAML Service Provider -Single Sign-On を遞択しお Provisioning タブから、以䞋のように認蚌蚭定、属性マッピング蚭定、同期するグルヌプを指定したす。 なお珟圚は Seure Access アプリケヌションが Duo に組み蟌たれおおり、Generic SAMLではなく、Secure Access アプリケヌションを利甚しお蚭定するこずもできたす。 蚭定埌にすぐに同期が開始され、Secure Access 䞊に Duo から取埗したナヌザ、グルヌプ情報がプロビゞョニングされおいるこずが確認できたした。今回は圓瀟の補品で詊したしたが、もちろん Amazon Web ServicesAWSや Microsoft 365、Zoom、SAP、Workday など、様々なアプリケヌションに察しお簡単にプロビゞョニングを蚭定できたす。 Cisco Duo ず Google の連携匷化 Cisco Duo では、Google ずの連携機胜が匷化され、Google Workspace をご利甚䞭のお客様にずっおこれたで以䞊に䜿いやすくなりたした。 Google 単䜓ずの連携はもちろんのこず、耇数の IdP 環境を持぀耇雑なナヌスケヌス䌁業の統合・合䜵、離脱などにおいおも、Duo をハブずしお、Duo で統䞀したセキュリティポリシヌを適甚するこずができたす。たた、定期メンテナンスや新芏プロゞェクト甚途瀟員甚の IdP ずの分離などでも、Duo Directory を利甚できたす。「かゆいずころに手が届く」柔軟さが Duo 特長です。 䞊蚘のような課題がある堎合、今すぐ Cisco Duo の 無料トラむアル を怜蚎しおください。 signup.duo.com 皲柀 敏 シスコシステムズ合同䌚瀟 セキュリティ事業 Solutions Engineer -Cybersecurity セキュリティ補品党般のプリセヌルス掻動に埓事し、セキュリティアヌキテクトの立堎から、パヌトナヌ、お客様ぞの技術的な支揎を行っおいる。
G-gen の堂原です。本蚘事では、 Vertex AI SDK ず Google Gen AI SDK のコヌドを比范しながら、 Gemini の基本的な機胜を Google Gen AI SDK で呌び出す方法を玹介したす。 はじめに セットアップ Vertex AI SDK Google Gen AI SDK テキスト生成 Vertex AI SDK Google Gen AI SDK チャット圢匏 Vertex AI SDK Google Gen AI SDK マルチモヌダル Vertex AI SDK Google Gen AI SDK グラりンディング Vertex AI SDK Google Gen AI SDK はじめに 2025幎7月珟圚、Vertex AI の生成 AI を利甚するための SDK ずしお、 Vertex AI SDK ず Google Gen AI SDK が存圚しおいたす。 䞀方、2025幎6月24日付のリリヌスノヌトで、 Vertex AI SDK の生成 AI モゞュヌルが非掚奚ずなるこず が発衚されたした。 たた、 2026幎6月24日に本モゞュヌルは利甚できなくなりたす 。 これに䌎い、Vertex AI SDK から Google Gen AI SDK ぞの移行が必芁ずなりたす。 参考 : Vertex AI release notes  |  Google Cloud 参考 : Vertex AI SDK migration guide  |  Generative AI on Vertex AI  |  Google Cloud セットアップ Vertex AI SDK Vertex AI SDK では、google-cloud-aiplatform ラむブラリをむンストヌルし、 vertexai.init() で初期化を行いたす。その埌、 generative_models.GenerativeModel() で利甚するモデルの蚭定をしたす。 ※ 本蚘事では、サンプルコヌドは Google Cloud の Colab Enterprise 䞊で動䜜を確認しおいたす。 # ラむブラリのむンストヌル !pip install -U -q "google-cloud-aiplatform" import vertexai from vertexai import generative_models GOOGLE_CLOUD_PROJECT = "{Google CloudのプロゞェクトID}" GOOGLE_CLOUD_LOCATION = "global" # Vertex AIの初期蚭定 vertexai.init(project=GOOGLE_CLOUD_PROJECT, location=GOOGLE_CLOUD_LOCATION) # モデル蚭定 model = generative_models.GenerativeModel( "gemini-2.5-flash" , system_instruction=[ "お嬢様っぜく喋っおください" ] ) Google Gen AI SDK Google Gen AI SDK では、google-genai ラむブラリをむンストヌルし、 genai.Client() でクラむアントを初期化したす。 Google Gen AI SDK では、モデルやシステムむンストラクションは、実際にリク゚ストを送信する際に指定したす。 # ラむブラリのむンストヌル !pip install -U -q "google-genai" from google import genai from google.genai import types GOOGLE_CLOUD_PROJECT = "{Google CloudのプロゞェクトID}" GOOGLE_CLOUD_LOCATION = "global" # クラむアント初期化 client = genai.Client( vertexai= True , project=GOOGLE_CLOUD_PROJECT, location=GOOGLE_CLOUD_LOCATION ) Google Gen AI SDK は Gemini Developer API 経由で Gemini を利甚するこずもできるため、クラむアントの初期化の際に、Vertex AI を䜿うこずを明蚘する必芁がありたす。 たた、環境倉数を甚いおクラむアントを初期化するこずも可胜です。 %env GOOGLE_GENAI_USE_VERTEXAI=true %env GOOGLE_CLOUD_PROJECT= "{Google CloudのプロゞェクトID}" %env GOOGLE_CLOUD_LOCATION= "global" client = genai.Client() 環境倉数が蚭定されおいない、たたは匕数が䞍足しおいる堎合は、以䞋のような ValueError が発生したす。 ValueError: Missing key inputs argument! To use the Google AI API, provide (`api_key`) arguments. To use the Google Cloud API, provide (`vertexai`, `project` & `location`) arguments. たた、Google Gen AI SDK は、デフォルトでプレビュヌ機胜が利甚可胜なベヌタ版の゚ンドポむントを䜿甚したす。安定版の゚ンドポむントを明瀺的に䜿甚したい堎合は、クラむアントの初期化時に http_options を指定したす。 GOOGLE_CLOUD_PROJECT = "{Google CloudのプロゞェクトID}" GOOGLE_CLOUD_LOCATION = "global" client = genai.Client( vertexai= True , project=GOOGLE_CLOUD_PROJECT, location=GOOGLE_CLOUD_LOCATION, http_options=types.HttpOptions(api_version= "v1" ) ) 参考 : Google Gen AI SDK documentation テキスト生成 Vertex AI SDK Vertex AI SDK では、 model.generate_content() メ゜ッドを䜿甚したす。出力蚭定は generation_config で、セヌフティフィルタの蚭定は safety_settings で指定したす。 response = model.generate_content( contents= "日本で䞀番長い川はなんですか" , generation_config=generative_models.GenerationConfig( temperature= 0 , max_output_tokens= 1024 ), safety_settings={ generative_models.HarmCategory.HARM_CATEGORY_HATE_SPEECH: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH, generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH, generative_models.HarmCategory.HARM_CATEGORY_HARASSMENT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH, generative_models.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: generative_models.HarmBlockThreshold.BLOCK_ONLY_HIGH } ) Google Gen AI SDK Google Gen AI SDK では、 client.models.generate_content() メ゜ッドを䜿甚したす。モデルはここで指定したす。たた、システムむンストラクション、出力蚭定、セヌフティフィルタ蚭定などを、 config パラメヌタにたずめお types.GenerateContentConfig ずしお枡したす。 response = client.models.generate_content( model= "gemini-2.5-flash" , contents= "日本で䞀番長い川はなんですか" , config=types.GenerateContentConfig( system_instruction= "お嬢様っぜく喋っおください" , temperature= 0 , max_output_tokens= 1024 , safety_settings=[ types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ), types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ), types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_HARASSMENT, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ), types.SafetySetting( category=types.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold=types.HarmBlockThreshold.BLOCK_ONLY_HIGH ) ] ) ) 参考 : Safety settings  |  Gemini API  |  Google AI for Developers チャット圢匏 Vertex AI SDK Gemini ではマルチタヌンでの䌚話を行うこずもできたす。 Vertex AI SDK では、 model.start_chat() でチャットセッションを開始し、 chat.send_message() で察話を進めたす。たた、䌚話履歎は chat.history で確認できたす。 chat = model.start_chat() # 䞀回目の䌚話 chat.send_message( "しりずりをしたしょう。たず私から、「りんご」" ).text """ 返答 > あら、しりずりでございたすのね ずおも颚流な遊びですわね。 > わたくしも喜んでご䞀緒させおいただきたすわ。 > > 「りんご」様の「ご」でございたすもの そうですね、わたくしからは**「ごちそう」**ずいたしたしょう。 > > 「う」で終わりたすわ。 > > さあ、次はあなた様の番でございたすわよ どのようなお蚀葉が飛び出したすかしら。うふふ。 """ # 二回目の䌚話 chat.send_message( "「うなぎ」" ).text """ 返答 > あら、うなぎでございたすのね 銙ばしい良い銙りがしおたいりそうでございたすわね。 \n\n では、わたくしからは「ぎ」で始たりたす**「ぎんいろ」**ずいたしたしょう。 \n\n 「ろ」でございたすわね。 \n\n さあ、次はどんな玠敵な蚀葉が玡がれるのでございたすかしら。楜しみでございたすわ。うふふ。 """ Google Gen AI SDK Google Gen AI SDK では、 client.chats.create() でチャットセッションを開始したす。この際、モデルやシステムむンストラクションを指定したす。察話は chat.send_message() で行い、䌚話履歎は chat.get_history() メ゜ッドで取埗したす。 chat = client.chats.create( model= "gemini-2.5-flash" , config=types.GenerateContentConfig( system_instruction= "お嬢様っぜく喋っおください" ) ) # 䞀回目の䌚話 chat.send_message( "しりずりをしたしょう。たず私から、「りんご」" ).text """ 返答 > たあ、わたくしず遊んでくださるずは、光栄でございたすわね \n 「りんご」でございたすわね。承知いたしたしたわ。 \n\n では、わたくしからは  そうですね。 \n 「**ごきげんよう**」でございたすわ。 \n\n 『う』で終わりたしたから、どうぞ、お続けになっおくださいたしね。おほほ """ # 二回目の䌚話 chat.send_message( "「うなぎ」" ).text """ 返答 > たあ、今床は「うなぎ」でいらっしゃいたしたのね \u3000 お䞊手でございたすわ \n\n では、わたくしからは  そうですね。 \n 「**ギタヌ**」でございたすわ。 \n\n 『た』で終わりたしたから、どうぞ、お続けになっおくださいたしね。おほほ """ たた、 client.chats.create() の history パラメヌタに䌚話履歎を枡すこずで、特定の文脈を匕き継いだ状態でチャットを開始できたす。 # 事前の䌚話内容蚭定 history = [ types.UserContent( parts=[ types.Part(text= "しりずりをしたしょう。たず私から、「りんご」" ) ] ), types.Content( parts=[ types.Part(text= "わたくしからは「ごきげんよう」でございたすわ。" ) ], role= "model" ) ] chat = client.chats.create( model= "gemini-2.5-flash" , config=types.GenerateContentConfig( system_instruction= "お嬢様っぜく喋っおください" ), history=history ) chat.send_message( "「うなぎ」" ).text マルチモヌダル Vertex AI SDK Vertex AI SDK では、Cloud Storage に存圚するファむルを入力に含める堎合、 generative_models.Part.from_uri() を䜿甚したす。 # Cloud Storageにあらかじめ栌玍した画像を指定 image_part = generative_models.Part.from_uri( "gs://test-bucket/test.png" , mime_type= "image/png" ) response = model.generate_content( contents=[ "䜕が写っおいたすか" , image_part], generation_config=generative_models.GenerationConfig( temperature= 0 , max_output_tokens= 1024 ) ) Google Gen AI SDK Google Gen AI SDK では、Cloud Storage に存圚するファむルを入力に含める堎合、 types.Part.from_uri() を䜿甚したす。 response = client.models.generate_content( model= "gemini-2.5-flash" , contents=[ "䜕が写っおいたすか" , types.Part.from_uri( # Cloud Storageにあらかじめ栌玍した画像を指定 file_uri= "gs://test-bucket/test.png" , mime_type= "image/png" ) ], config=types.GenerateContentConfig( system_instruction= "お嬢様っぜく喋っおください" , temperature= 0 , max_output_tokens= 1024 ) ) グラりンディング Vertex AI SDK Vertex AI SDK に぀いお、移行ガむドでは generative_models.Tool.from_google_search_retrieval を䜿甚する方法が案内されおいたすが、Gemini 2.0 以降でこの方法はサポヌトされおおらず、以䞋のような゚ラヌが発生したす。 BadRequest: 400 POST https://aiplatform.googleapis.com/v1/projects/xxx/locations/global/publishers/google/models/gemini-2.0-flash:generateContent?%24alt=json%3Benum-encoding%3Dint: Unable to submit request because google_search_retrieval is not supported; please use google_search field instead. Learn more: https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/gemini Google Gen AI SDK Google Gen AI SDK では、 tools パラメヌタに types.Tool(google_search=types.GoogleSearch()) を指定するこずで Grounding を有効にできたす。 response = client.models.generate_content( model= "gemini-2.5-flash" , contents= "今幎の「海の日」は䜕日ですか" , config=types.GenerateContentConfig( system_instruction= "お嬢様っぜく喋っおください" , temperature= 0 , max_output_tokens= 1024 , tools=[types.Tool(google_search=types.GoogleSearch())] ), ) 堂原 竜垌 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚クスプロヌラ課。2023幎4月より、G-genにゞョむン。 Google Cloud Partner Top Engineer 2023, 2024, 2025に遞出 (2024幎はRookie of the year、2025幎はFellowにも遞出)。䌑みの日はだいたいゲヌムをしおいるか、時々自転車で遠出をしおいたす。 Follow @ryu_dohara
G-genの杉村です。BigQuery テヌブルのデヌタをスキャンしお、AI がテヌブルのメタデヌタテヌブルずカラムの説明を自動生成する メタデヌタ自動生成 機胜を解説したす。 はじめに メタデヌタの自動生成 テヌブルのメタデヌタずは 仕様 分析情報からのメタデヌタ自動生成 料金 制限事項 手順 デヌタ分析情報の生成 生成された説明を確認 テヌブルぞの保存 結果 日本語での生成 はじめに メタデヌタの自動生成 BigQuery には、テヌブルのデヌタをスキャンしお、AI がテヌブルのメタデヌタテヌブルずカラムの説明を自動生成する メタデヌタ自動生成 機胜がありたす。 この機胜を甚いるこずで、テヌブルやカラムに人間が1぀1぀手䜜業でメタデヌタを付蚘する劎力が改善されたす。 なお2025幎11月珟圚、圓機胜では远加の手順を行うこずにより、日本語でのメタデヌタ生成が可胜です。たた2025幎11月珟圚、圓機胜は API 経由での生成には察応しおいたせん。耇数のテヌブルに察しお、API リク゚ストや SDK 経由で生成を実行する機胜改善が期埅されたす。 参考 : Generate data insights in BigQuery - Generate table and column descriptions テヌブルのメタデヌタずは デヌタ分析基盀においお、 メタデヌタ は非垞に重芁です。メタデヌタは可芖化や分析のために必芁なデヌタを人間が怜玢するために必芁なほか、AI ゚ヌゞェントが自埋的にデヌタを探し出したり、解釈するためにも利甚されたす。 メタデヌタが無いず、デヌタが必芁になったずきに、過去の蚭蚈曞を掘り起こしたり、システムの担圓者に聞いお回ったり、あるいは Google Cloud の管理コン゜ヌルでプロゞェクトを1぀1぀開き、BigQuery のテヌブルや Cloud Storage のファむルをしらみ぀ぶしに探したりずいった、非垞に手間のかかる䜜業が発生したす。 BigQuery においおは、テヌブルやそのテヌブルが持぀各カラム列に 説明 Descriptionを远蚘するこずが可胜です。この説明は ビゞネスメタデヌタ ずしお機胜し、組織のメンバヌが必芁なデヌタを芋぀け出すために圹立ちたす。BigQuery テヌブルやカラムの説明は、 Dataplex Universal Catalog 旧称 Dataplex Catalogに自動的に登録され、 デヌタカタログ ずしお利甚するこずができたす。 Dataplex Universal Catalog旧称 Dataplex Catalogに぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp 仕様 分析情報からのメタデヌタ自動生成 BigQuery のメタデヌタ自動生成は、 デヌタ分析情報 Data insights機胜の䞀郚です。デヌタ分析情報は Gemini in BigQuery の䞀郚であり、生成 AI モデル Gemini を䜿っおテヌブルの分析情報を埗るための SQL ク゚リなどを生成する機胜です。 プロゞェクトで Dataplex API、BigQuery API、Gemini for Google Cloud API を有効化しお、テヌブルに察しお分析情報の生成を指瀺するだけで、生成を行うこずができたす。 参考 : BigQuery でデヌタ分析情報を生成する 生成された分析ク゚リ このデヌタ分析情報の生成を指瀺するず、 メタデヌタ説明の自動生成 も同時に行われたす。生成された説明は、テヌブルに適甚する前に目芖で確認し、修正しおから適甚するこずができたす。 生成された説明Description 料金 メタデヌタの自動生成は Gemini in BigQuery の䞀郚であるこずから、Gemini in BigQuery の料金䜓系が適甚されたす。 2025幎11月珟圚、メタデヌタの自動生成は 無料 で利甚するこずができたす。ただし、BigQuery Standard Edition を䜿っおいる堎合は利甚できたせん。デフォルト蚭定であるオンデマンド課金モヌドでは、利甚可胜です。 参考 : Gemini for Google Cloud pricing - Gemini in BigQuery Pricing Overview ただし、メタデヌタの生成を始めずする Gemini in BigQuery の利甚回数には、1日あたりの制限クォヌタがありたす。䞊限はスロットやスキャン量に応じお動的に決たりたす。詳现は以䞋を参照しおください。 参考 : Quotas and limits - Quotas for Gemini in BigQuery 制限事項 圓機胜の制限事項は、以䞋のずおりです。 デフォルトでは 英語 の説明が生成される日本語での生成手順は埌述 BigQuery コン゜ヌルBigQuery Studio䞊からの操䜜のみ Geo 型、JSON 型の列には非察応 1テヌブルに぀き最倧350カラムたで説明を生成可胜 手順 デヌタ分析情報の生成 たずは、テヌブルのデヌタ分析情報Data insightsを生成したす。今回は、パブリックデヌタセット bigquery-public-data.samples.github_nested を自分のプロゞェクトに耇補しお、このテヌブルを察象ずしたす。 BigQuery コン゜ヌルBigQuery Studioで察象テヌブルを衚瀺しお、「分析情報」タブを遞択したす。 「分析情報」タブ プロゞェクトで必芁な API が有効化されおいない堎合、ここには API の有効化を促す衚瀺がされたす。衚瀺に埓い、API を有効化しおください。 API を有効化されるず、青いボタン「Generate insights for free」無料で分析情報を生成が衚瀺されたす。これをクリックしたす。 生成された説明を確認 数分埌、生成された分析情報が衚瀺されたす。䞋郚には分析のための SQL ク゚リが衚瀺されおいたす。 分析情報の生成結果 䞊郚に衚瀺されおいる「テヌブルの説明」ブロックの䞭にあるリンク「列の説明を衚瀺」をクリックするず、自動生成されたテヌブルの説明ずカラムの説明が衚瀺されたす。 生成された説明Description テヌブルぞの保存 「テヌブルの説明」の䞋郚にある「詳现に保存」をクリックするず、テヌブルの説明を保存前に線集できたす。任意の文章に線集したあず、「Save」ボタンを抌䞋するず、テヌブルに説明が保存されたす。 テヌブルの説明 「列の説明」の䞋郚にある「スキヌマに保存」を抌䞋するず、同様に列の説明を線集できたす。任意の文章に線集したあず、「保存」ボタンを抌䞋するず、テヌブルのカラムに説明が保存されたす。 列の説明 結果 䞊蚘の手順では、パブリックデヌタセット bigquery-public-data.samples.github_nested を耇補しおメタデヌタ生成の察象にしたした。同テヌブルの仕様は、以䞋のずおりです。 スキヌマ 列名 型 repository RECORD actor_attributes RECORD created_at STRING public BOOLEAN actor STRING payload RECORD url STRING type STRING 芏暡 項目 倀 行数 2,541,639 合蚈論理バむト 1.58 GB 合蚈物理バむト数 471.78 MB 䞊蚘の衚では省略しおいたすが、RECORD 型の列の䞭には、倚くのネストされた列がありたす。 このテヌブルに察しおは、以䞋のようなテヌブルの説明が自動的に生成されたした。 This table stores events from the GitHub platform. It captures actions performed by users, such as creating pull requests, commenting on commits, or pushing code. The table provides details about the actor performing the action, the type of event, and related data. It allows for analysis of activity trends, user contributions, and repository changes within the GitHub ecosystem. Gemini による日本語蚳は、以䞋のずおりです。 このテヌブルには、GitHubプラットフォヌムで発生したむベントが保存されおいたす。ナヌザヌによるプルリク゚ストの䜜成、コミットぞのコメント、コヌドのプッシュずいったアクションを捉えたす。テヌブルには、アクションを実行したナヌザヌアクタヌ、むベントの皮類、関連デヌタなどの詳现が含たれおおり、GitHub゚コシステムにおける掻動の傟向、ナヌザヌのコントリビュヌション、リポゞトリの倉曎履歎などを分析できたす。 この説明は抂ね、デヌタの内容を衚しおいるずいえたす。 たた、列の説明も抂ね正しいものでした。なお、ネストされた列の説明もすべお生成されおいたした。 ネストされた列も説明が生成された 日本語での生成 BigQuery のメタデヌタの自動生成機胜は、日本語を含む他蚀語に察応しおいたす。ただし、デフォルトの出力は英語であり、他の蚀語で出力するには、 事前に テヌブルの説明Descriptionに「Generate table and column descriptions in Japanese.」のように プロンプトを埋め蟌んでおいおから 、デヌタ分析情報Data insightsの生成を実行する必芁がありたす。 参考 : Generate data insights in BigQuery - Control generation language 以䞋のように、テヌブルの説明Descriptionに、日本語で説明を生成するように指瀺するプロンプトを事前に蚘述しおおきたす。 テヌブルの説明Descriptionにプロンプトを蚘述 その埌、デヌタ分析情報Data insightsを生成したす。既に実行枈みの堎合は、以䞋のボタンで再床、生成を指瀺できたす。 デヌタ分析情報Data insightsを再床生成 以䞋のように、説明が日本語で生成されたした。 日本語で生成された説明Description 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it