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

TECH PLAY

株匏䌚瀟G-gen

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

å…š888ä»¶

G-gen の杉村です。Google Cloud の Dataplex を掻甚するこずで、BigQuery や Cloud Storage などで構成された デヌタ分析基盀の暩限管理を抜象化しお、簡玠に運甚するこずができたす。圓蚘事では、Dataplex による暩限管理の仕組みを、図を亀えお解説したす。 はじめに Dataplex ずは Dataplex による暩限管理 メリット 前提知識 IAM の基本 レむク、ゟヌン、アセット、゚ンティティ 泚意点 サンプルアヌキテクチャ Google アカりントずク゚リ実行プロゞェクト Google アカりントず Dataplex リ゜ヌス 玐付きの意味 ロヌルの詳现デヌタぞのアクセス ロヌルの詳现メタデヌタぞのアクセス サヌビス゚ヌゞェントずデヌタ保持プロゞェクト 管理ナヌザヌむンタヌフェむス Dataplex リ゜ヌス管理 暩限管理 リ゜ヌスの怜玢Dataplex Univeresal Catalog Dataplex アセットの怜玢 その他のリ゜ヌスの怜玢 Dataplex Universal Catalog の詳现 導入 Dataplex の初期導入 通垞の IAM の暩限管理からの移行 既存の BigQuery デヌタセットぞの暩限調査 Tips : 列レベルのアクセス制埡・行レベルのセキュリティずの䜵甚 はじめに Dataplex ずは Dataplex は Google Cloud旧称 GCPで提䟛されおいる、デヌタの統合管理のためのフルマネヌゞドサヌビスです。詳现は、以䞋の蚘事で玹介されおいたす。 blog.g-gen.co.jp Dataplex の数ある機胜の䞭でも、圓蚘事では、BigQuery や Cloud Storage などのデヌタアセットに察する 暩限管理 の仕組みに぀いお解説したす。 参考 : Dataplex の抂芁 参考 : IAM によるアクセス制埡 Dataplex による暩限管理 䞀般的に、BigQuery や Cloud Storage などの Google Cloud リ゜ヌスに察するアクセス制埡は、Identity and Access ManagementIAMで行われたす。 しかし、デヌタマネゞメントの背景で、リ゜ヌスが倚くのプロゞェクトに分散しおいたり、デヌタ利甚者の数が倚数の堎合、IAM を䜿った埓来型の暩限管理は煩雑になり、適切なアクセス制埡のための暩限管理の運甚が難しくなる堎合がありたす。 Dataplex では、レむク、ゟヌン、アセットずいった抜象オブゞェクトを甚いお、 暩限管理のための仮想的な階局 を構成するこずで、デヌタ分析基盀デヌタマネゞメント基盀の暩限管理を容易にできたす。デヌタの仮想化階局を構成するこずで、物理的にはデヌタが分散しおいながら、論理的には適切に管理されおいる デヌタメッシュ を目指すのが、Dataplex のコンセプトです。 デヌタメッシュに぀いおの詳现は、以䞋の蚘事をご参照ください。 参考 : Dataplexを培底解説 - G-gen Tech Blog - デヌタメッシュずは メリット Dataplex でデヌタぞのアクセス暩限を管理するメリットずしお、以䞋のようなものが挙げられたす。 様々なプロゞェクトに分散したデヌタの 暩限管理を集玄 ナヌザヌにずっお 意味のある単䜍 レむク、ゟヌン等で 暩限を付䞎 できる 前提知識 IAM の基本 圓蚘事では、Google Cloud の IAM の基本的な仕組み IAM bindings 、 ロヌル 、 継承 等が理解されおいるこずを前提に蚘茉しおいたす。これらの抂念に぀いおは、以䞋の蚘事をご参照ください。 blog.g-gen.co.jp レむク、ゟヌン、アセット、゚ンティティ レむク 、 ゟヌン 、 アセット 、 ゚ンティティ は、それぞれデヌタ管理のための仮想的な階局です。 レむクは、デヌタのドメむンやビゞネスナニット郚門によっお切り分ける、論理的な管理単䜍です。Dataplex の管理単䜍ずしおは䞀番倧きいものです。 ゟヌンは、レむクの䞋䜍階局の管理単䜍です。デヌタの皮類やセキュリティレベルなどによっお切り分けたす。 アセットは、最小の管理単䜍です。1぀のアセットは、1぀の Cloud Storage バケットたたは BigQuery デヌタセットに察応したす。アセットずしお登録する Cloud Storage バケットや BigQuery デヌタセットは、Dataplex の管理プロゞェクトずは別のプロゞェクトに存圚しおいお構いたせんただし、別組織のリ゜ヌスは登録できたせん。 アセットに Cloud Storage バケットたたは BigQuery デヌタセットを登録するず、䞭身のオブゞェクトやテヌブル等が自動的に゚ンティティずしお登録されたす。 参考 : Dataplex の抂芁 - 甚語 泚意点 ゟヌンは 1぀のレむクにしか所属できたせん 。 たた、ゟヌンの䞋䜍リ゜ヌスであるアセットも、 1぀のゟヌンにしか所属できたせん 。 サンプルアヌキテクチャ 圓蚘事では、以䞋のような簡易的な構成を甚いお、Dataplex の暩限管理の仕組みを解説したす。 ここでは、以䞋のようなプロゞェクトを考えたす。 プロゞェクト名 抂芁 dptest-workload-a ク゚リを実行するためのプロゞェクトナヌザヌ dptest-user-a 向け dptest-workload-b ク゚リを実行するためのプロゞェクトナヌザヌ dptest-user-b 向け dptest-data-001 BigQuery デヌタセットが配眮されおいるプロゞェクトA 郚眲向け dptest-data-002 BigQuery デヌタセットが配眮されおいるプロゞェクトB 郚眲向け dptest-dataplex Dataplex の蚭定管理甚のプロゞェクト ナヌザヌずしおは、それぞれ異なる郚眲に所属する dptest-user-a ず dptest-user-b を想定したす。 たた、プロゞェクト dptest-dataplex には、サヌビス゚ヌゞェントである service-${プロゞェクト番号}@gcp-sa-dataplex.iam.gserviceaccount.com が存圚したす。これは、Dataplex API を有効化するず自動的に䜜成される、特殊なサヌビスアカりントです。 䞊蚘の図に、IAM ロヌルの玐付きを曞き加えるず、以䞋のずおりです。 青い線ずその䞊に曞かれおいるロヌル名は、プリンシパルがリ゜ヌスに察しおどのロヌルを持っおいるかIAM bindingsを衚したす。 ここからは、各ロヌル玐付きIAM bindingsの意味に぀いお説明したす。図ず芋比べながら、解説文をお読みください。 Google アカりントずク゚リ実行プロゞェクト Google アカりントたたはグルヌプすなわちデヌタ分析基盀のナヌザヌは、ク゚リ実行甚のプロゞェクトに察しお BigQuery ゞョブナヌザヌ roles/bigquery.jobUser ロヌルを持ちたす。 これにより、BigQuery のコンピュヌトリ゜ヌスを消費しおゞョブを実行する暩限が埗られたす。ゞョブ実行暩限は、デヌタぞのアクセス暩限ずは関係ありたせん。たた、BigQuery のコンピュヌト料金は、ゞョブを実行したプロゞェクトに課金されたす。 BigQuery の IAM 暩限に぀いおは、以䞋の蚘事でも詳现に解説しおいたす。ゞョブ実行暩限ずデヌタアクセス暩限の分離の抂念に぀いおも解説されおいたすので、ご参照ください。 blog.g-gen.co.jp Google アカりントず Dataplex リ゜ヌス 玐付きの意味 Google アカりントは、Dataplex のアセットに察しお、Dataplex デヌタオヌナヌ roles/dataplex.dataOwner や Dataplex デヌタリヌダヌ roles/dataplex.dataReader のロヌルを持っおいたす。 これにより、アセットに登録されおいる BigQuery デヌタセットや Cloud Storage バケットに察しおのデヌタアクセス暩限が付䞎されたす。 Dataplex デヌタオヌナヌ roles/dataplex.dataOwner であれば、デヌタセット内のテヌブルに察しお読み取り、曞き蟌み、テヌブルの削陀や䜜成の暩限を持ちたす。Dataplex デヌタリヌダヌ roles/dataplex.dataReader は、読み取りのみです。 図ではアセットにロヌルを玐付けおいたすが、レむクにロヌルを玐付けた堎合、配䞋のすべおのゟヌンやアセットに暩限が 継承 されたす。ゟヌンにロヌルを玐付けた堎合、配䞋のすべおのアセットに暩限が継承されたす。アセットの䞭の個々の゚ンティティには、盎接ロヌルを玐付けるこずはできたせん。 なお、ゟヌン、レむク、アセットには、Dataplex や BigQuery デヌタセットずは別の組織Organizationのアカりントでも、ロヌルを付䞎するこずができたす。これにより、Google アカりントのドメむンが異なる協力䌚瀟やグルヌプ䌚瀟のアカりントの暩限管理も、Dataplex で行うこずができたす。 ロヌルの詳现デヌタぞのアクセス レむク、ゟヌン、アセットに玐付けられるロヌルは、以䞋の3皮類です。 ロヌル 実行可胜なアクション Dataplex デヌタリヌダヌ (roles/dataplex.dataReader) デヌタずメタデヌタの読み取り Dataplex デヌタラむタヌ (roles/dataplex.dataWriter) デヌタの曞き蟌み、倉曎、削陀メタデヌタは䞍可。たたデヌタの読み取りも䞍可 Dataplex デヌタオヌナヌ (roles/dataplex.dataOwner) デヌタずメタデヌタの読み取り、曞き蟌み、倉曎、削陀。子リ゜ヌスの䜜成BigQuery テヌブル等 参考 : Dataplex IAM ロヌル - デヌタロヌル なお、2025幎4月珟圚の圓瀟の怜蚌では、Dataplex デヌタラむタヌ roles/dataplex.dataWriter だけを付䞎されたプリンシパルは、BigQuery テヌブルぞ INSERT や UPDATE を実行できたせんでした。Dataplex デヌタラむタヌ roles/dataplex.dataWriter ず Dataplex デヌタリヌダヌ roles/dataplex.dataReader の䞡方を付䞎した堎合に、INSERT や UPDATE が可胜になりたした。 ロヌルの詳现メタデヌタぞのアクセス 前述の3ロヌルは、デヌタそのものぞのアクセス暩限を付䞎するものです。もし、利甚者には デヌタそのものぞのアクセス暩限は䞎えず 、 メタデヌタだけ を閲芧したり怜玢したりさせたい堎合などには、以䞋のロヌルも利甚できたす。 ロヌル 実行可胜なアクション Dataplex メタデヌタ読み取り (roles/dataplex.metadataReader) ゟヌンやアセットのメタデヌタの読み取り Dataplex メタデヌタ ラむタヌ (roles/dataplex.metadataWriter) ゟヌンやアセットのメタデヌタの読み取りず曞き蟌み、倉曎、削陀 ただし、Dataplex Univeresal Catalog で怜玢を実行する堎合、怜玢実行者は䞊蚘のロヌルだけでなく、Dataplex Catalog 閲芧者 roles/dataplex.catalogViewer ロヌル等を怜玢実行プロゞェクトに察しお持っおいる必芁がありたす。 䟋えばアカりント dptest-user-a は、自身甚のク゚リ実行プロゞェクトである dptest-workload-a プロゞェクトに察しお Dataplex Catalog 閲芧者 roles/dataplex.catalogViewer ロヌルを持ち、か぀ゟヌン my-zone-001 に察しお Dataplex メタデヌタ読み取り roles/dataplex.metadataReader ロヌルを持っおいるずしたす。 この堎合、アカりント dptest-user-a は、 dptest-workload-a プロゞェクト䞊で怜玢を行うこずができたす。怜玢結果には、ゟヌン my-zone-001 のアセットが衚瀺されたす。 サヌビス゚ヌゞェントずデヌタ保持プロゞェクト Dataplex のサヌビス゚ヌゞェントは、デヌタ保持プロゞェクトに察しお、Cloud Dataplex サヌビス゚ヌゞェント roles/dataplex.serviceAgent ロヌルを持っおいたす。 これにより、Dataplex はデヌタリ゜ヌスの実䜓に察しお読み取りや曞き蟌みを行うこずができるため、ナヌザヌは実䜓リ゜ヌスに察しお盎接暩限を持぀必芁性がなくなりたす。Dataplex が、暩限の䞭継を行っおいるようなむメヌゞです。 なお、サヌビス゚ヌゞェントがこの暩限を察象リ゜ヌスに察しお持たない状態で、BigQuery デヌタセット等をアセットずしお登録しようずするず、以䞋のような譊告が衚瀺されたす。 Dataplex service account service-(PROJECT_NUMBER)@gcp-sa-dataplex.iam.gserviceaccount.com does not have sufficient permission on BigQuery dataset 'projects/(PROJECT_ID)/datasets/(DATASET_ID)'. Please grant it role roles/dataplex.serviceAgent on the dataset or parent project. 解消するには、察象のプロゞェクトかデヌタセットにおいお、サヌビス゚ヌゞェントに察しお Cloud Dataplex サヌビス゚ヌゞェント roles/dataplex.serviceAgent ロヌルを玐付けたす。 付䞎すべきロヌルに぀いお、公匏ドキュメントでは、察象リ゜ヌスが BigQuery の堎合に「BigQuery 管理者ロヌルを Dataplex サヌビス アカりントに付䞎する必芁がありたす。」ずしおいたす。しかし、コン゜ヌル䞊の譊告メッセヌゞでは Cloud Dataplex サヌビス゚ヌゞェントロヌルずされおいるこずに加えお、同ロヌルには BigQuery ぞの十分なアクセス暩限が含たれおいるこずから、どちらのロヌルの付䞎でも構いたせん。 参考 : レむク内のデヌタアセットを管理する - BigQuery デヌタセットに察するロヌルを付䞎する 管理ナヌザヌむンタヌフェむス Dataplex リ゜ヌス管理 Google Cloud コン゜ヌルの「Dataplex > 管理」画面で、レむク、ゟヌン、アセット、゚ンティティの䜜成や、䞀芧の確認ができたす。 この画面でリ゜ヌスの䜜成や線集を行うには、操䜜者のアカりントが Dataplex プロゞェクトに察しお Dataplex 管理者 roles/dataplex.admin ロヌルや、Dataplex 線集者 roles/dataplex.editor ロヌル等を持っおいる必芁がありたす。 レむク䞀芧 レむク詳现ゟヌン䞀芧 ゟヌン詳现アセット䞀芧 暩限管理 Google Cloud コン゜ヌルの「Dataplex > 安党」画面で、Dataplex リ゜ヌスレむク、ゟヌン、アセットに付䞎されおいる暩限を管理できたす。なお「安党」は日本語コン゜ヌルの衚蚘であり、英語版では「Secure」ずなっおいたす。 この画面では、レむク、ゟヌン、アセットが䞀芧衚瀺され、たたそれぞれに玐付いおいるプリンシパルず IAM ロヌルの䞀芧衚瀺や線集ができたす。 なお、この「安党」からだけではなく、先皋の個別のリ゜ヌス管理画面からも、暩限の付䞎や確認は可胜です。 この画面で暩限管理を行うには、操䜜者のアカりントが Dataplex プロゞェクトに察しお Dataplex 管理者 roles/dataplex.admin ロヌル等を持っおいる必芁がありたす。䞀方、Dataplex 線集者 roles/dataplex.editor ロヌルだず、レむク、ゟヌン、アセットの䜜成や線集はできるものの、暩限の線集はできたせん。 参考 : レむクを保護する リ゜ヌスの怜玢Dataplex Univeresal Catalog Dataplex アセットの怜玢 Dataplex デヌタオヌナヌ roles/dataplex.dataOwner や Dataplex デヌタリヌダヌ roles/dataplex.dataReader ロヌルをレむク、ゟヌン、アセットに察しお持っおいるアカりントは、 Dataplex Univeresal Catalog を䜿い、アセットの怜玢ができたす。 Dataplex Univeresal Catalog を䜿っお怜玢を行うアカりントは、怜玢を実行するプロゞェクトに察しお、Dataplex Catalog 閲芧者 roles/dataplex.catalogViewer ロヌル等を持っおいる必芁がありたす。䟋えば、アカりント dptest-user-b はク゚リ実行甚プロゞェクトである dptest-workload-b に察しおDataplex Catalog 閲芧者ロヌルを持っおいれば、同プロゞェクトの Dataplex Univeresal Catalog 怜玢画面で、アセットを怜玢するこずができたす。 参考 : Dataplex Univeresal Catalog でリ゜ヌスを怜玢する このずき、怜玢結果に衚瀺されるのは、自信がメタデヌタ読み取り暩限を持っおいるリ゜ヌスのみです。前述の「ロヌルの詳现デヌタぞのアクセス」「ロヌルの詳现メタデヌタぞのアクセス」の項目を参照しおください。 その他のリ゜ヌスの怜玢 Dataplex Universal Catalog では、Dataplex 䞊で暩限を䞎えたアセットだけではなく、メタデヌタの閲芧暩限を持っおいるすべおのリ゜ヌスが怜玢されたす。BigQuery デヌタ閲芧者のようなロヌルをプロゞェクトに察しお持っおいれば、それらの BigQuery デヌタセットが怜玢結果ずしお衚瀺されたす。 その他にも Bigtable、Spanner、Dataform リポゞトリ、Pub/Sub トピックなどのメタデヌタが自動的に Dataplex Universal Catalog に登録されおおり、暩限を持っおいれば怜玢が可胜です。 参考 : Dataplex Universal Catalog のデヌタカタログ管理に぀いお - サポヌト察象の゜ヌス Dataplex Universal Catalog の詳现 その他、Dataplex Universal Catalog の詳现に぀いおは、以䞋の蚘事も参考にしおください。 blog.g-gen.co.jp 導入 Dataplex の初期導入 Dataplex を䜿わない堎合、BigQuery や Cloud Storage に察する暩限管理は、プロゞェクトや BigQuery デヌタセット、Cloud Storage バケット等に盎接 IAM ロヌルを付䞎しお暩限管理を行いたす。倧芏暡なデヌタ分析基盀デヌタマネゞメント基盀を蚭蚈する際、Dataplex を導入するべきか、たたどのタむミングで導入するべきかは、どのように刀断するべきでしょうか。 初めから瀟内組織内のステむクホルダや、デヌタの所圚・性質を網矅的に把握しお、ビゞネスの拡倧も予枬し぀぀将来像を緎り、デヌタ分析基盀の粟緻な蚭蚈をりォヌタヌフォヌル的に行うこずができれば理想的です。それができれば、デヌタの芏暡が小さいうちから Dataplex の導入をするこずには、たったく問題がありたせん。 しかし、実際にはそのようなこずは極めお困難です。ビゞネスや組織、ステむクホルダの状況は速いスピヌドで倉化したす。GoogleCloud の党瀟的な利甚が、初めから組織の承認やバックアップを埗られるずは限りたせん。デヌタ分析基盀のあるべき姿が垞に倉化するため、デヌタ分析基盀の利甚ナヌスケヌスも予想しづらいです。このような状況のほうが、珟代の組織では䞀般的かもしれたせん。 このような状況においおは、若干孊習コストが高く、たた他の Google Cloud リ゜ヌスずは管理䜓系が異なる Dataplex を初めから導入するよりも、シンプルに通垞の IAM の暩限管理からスタヌトする、ずいう方法も、十分に遞択肢になり埗たす。Dataplex による暩限管理は、デヌタが倚数の Google Cloud プロゞェクトに分散しおいるずきに特に力を発揮したす。そうではないずきは、シンプルな IAM による暩限管理のほうが容易であるケヌスもありたす。デヌタ分析基盀の拡倧ず党瀟的な利甚の目凊が぀いたタむミングで、Dataplex ぞ移行するこずも可胜です。 ただし、タむミングが遅すぎるず、移行には倚倧な劎力がかかりたすので、適切な時期に刀断するこずが重芁です。 通垞の IAM の暩限管理からの移行 通垞の IAM 暩限管理ここではプロゞェクトや BigQuery デヌタセット等ぞの盎接の IAM ロヌル付䞎を指すから、Dataplex による暩限管理に移行するにあたっお、公匏のベストプラクティスは発衚されおいたせん。圓蚘事の方法は、あくたで䞀䟋ずお考えください。 たず前提ずしお、通垞の IAM 暩限ず、Dataplex でアセットに付䞎された暩限は、 OR の関係 です。どちらか䞀方で暩限が付䞎されおいれば、プリンシパルはデヌタにアクセスできたす。䞡方に暩限が付䞎されおいおも、アクセスは可胜です。しかし、䞡者の暩限管理方匏を混圚しお運甚するず、アクセスできないはずのデヌタにアクセスできおしたうなど、想定倖の事故がおきかねたせん。 このような性質から、以䞋のような移行方匏が考えられたす。 Dataplex の暩限䜓系ず運甚を蚭蚈する 通垞の IAM 暩限は残したたた、Dataplex 暩限を付䞎する 䞀郚の利甚者から通垞の IAM 暩限を削陀し、問題が出ないこずを確認しながら、埐々に Dataplex 暩限管理に寄せおいく デヌタ分析基盀が十分に倧きくなっおしたっおから管理察象のリ゜ヌス数が倚くなっおしたっおからの移行は倚倧な劎力を䌎いたすので、ナヌスケヌスの拡倧に目凊が぀いた段階で、移行を実斜するこずが掚奚されたす。 既存の BigQuery デヌタセットぞの暩限調査 あるプリンシパルGoogle アカりントやグルヌプがどの BigQuery デヌタセット等のリ゜ヌスに IAM 暩限を持っおいるか調査するには、Cloud Asset Inventory が利甚できたす。 参考 : Cloud Asset Inventoryを培底解説 - G-gen Tech Blog - プリンシパルの怜玢 䟋ずしお、以䞋のようなコマンドラむンで、BigQuery 関連のロヌルを持っおいる Google アカりントやグルヌプを䞀芧衚瀺するこずができたす。 gcloud asset search-all-iam-policies \ --scope = projects/sugimura \ --query =" policy:(roles/bigquery.*) AND memberTypes:(user OR group) " \ --format = json Tips : 列レベルのアクセス制埡・行レベルのセキュリティずの䜵甚 BigQuery には、 列レベルのアクセス制埡 ず 行レベルのセキュリティ ずいうアクセス制埡機胜がありたす。これらの機胜で、アクセスできる行や列をプリンシパルごずに制埡できたす。 blog.g-gen.co.jp 列レベルのアクセス制埡ず行レベルのセキュリティは、Dataplex の暩限管理ず 䜵甚できたす 。 プリンシパルに Dataplex 偎でデヌタぞの読み取り暩限が䞎えられおいおも、列レベルのアクセス制埡ず行レベルのセキュリティの評䟡は远加で行われたす。これらの蚭定でも行や列ぞのアクセスが蚱可されおいなければ、プリンシパルは結果を埗るこずができたせん。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の倧接です。圓蚘事では、Google Cloud旧称 GCPの Gemini 2.0 Pro ず Text-to-Speech を䜿っお、音声で応答するチャットボットの開発手順を玹介したす。 圓蚘事で開発するもの 画面むメヌゞ できるこず できないこず 免責事項 ディレクトリ構成 プログラムの解説 システムプロンプトの䜜成ず解説 ゜ヌスコヌドの解説 準備 UIの構築 凊理 実行方法 ロヌカル環境での実行方法 プログラムの保存 実行方法 Cloud Run ぞのデプロむ方法 Cloud Run の䜿甚 Dockerfile の䜜成 requirements.txt の䜜成 Cloud Run ぞのデプロむ Cloud Run のアクセス元制埡に぀いお 圓蚘事で開発するもの 画面むメヌゞ 音声で応答するチャットボットの実行画面 画面巊郚分蚭定゚リア チャットボットのロゎを衚瀺 Text-to-Speech Text-to-Speech ぞのリク゚スト ラゞオボタンで Text-to-Speech 機胜の有効/無効を切り替えたす。デフォルトは有効です。 話者を遞択 : ドロップダりンメニュヌで話者を遞択したす。「ja-JP-Neural2-B (プレミアム)」がデフォルト倀です。 Gemini Config モデルを遞択 : ラゞオボタンでモデルを遞択したす。「gemini-2.0-pro-exp-02-05」ず「gemini-2.0-flash-001」の 2 ぀の遞択肢があり、「gemini-2.0-pro-exp-02-05」がデフォルト倀です。 Temperature創造性: スラむダヌで temperature パラメヌタを調敎したす。デフォルト倀は 0.00 です。 最倧出力トヌクン数 : スラむダヌで最倧出力トヌクン数を調敎したす。1 から 8192 の間で調敎可胜です。デフォルト倀は 8192 です。 画面右郚分チャット゚リア ナヌザヌからの入力ずチャットボットからの回答を衚瀺したす。 Text-to-Speech が有効な堎合は、オヌディオプレヌダヌで応答の音声を再生したす。 できるこず ナヌザヌが自然な䌚話圢匏で質問するず、チャットボットは文脈を理解し、過去の質問を螏たえた回答をしたす。 チャットボットの回答を音声で読み䞊げるこずができたす (有効/無効を切り替え可胜)。 temperature パラメヌタを調敎しお、回答の創造性を制埡できたす。 google_search_tool を利甚しお、Web 怜玢の結果を回答に反映できたす。 できないこず 本チャットボットには、以䞋の機胜は実装されおいたせん。 瀟内のデヌタ゜ヌスを元にした回答を行うこずはできたせん。 画像や動画などの入力や生成はできたせん。 免責事項 圓蚘事で玹介するプログラムの゜ヌスコヌドは、ご自身の責任のもず、䜿甚、匕甚、改倉、再配垃しお構いたせん。 ただし、同゜ヌスコヌドが原因で発生した䞍利益やトラブルに぀いおは、圓瀟は䞀切の責任を負いたせん。 ディレクトリ構成 アプリケヌションに必芁なファむルを栌玍するディレクトリを䜜成したす。今回は、gemini-chatbot ずいう名前のディレクトリを䜜成し、その䞭に以䞋のファむルを配眮したす。 gemini-chatbot/ ├── app.py # Pythonアプリケヌション本䜓 ├── system_prompt.txt # システムプロンプト ├── G_gen_logo_reverse.jpg # 巊䞊にロゎファむルを衚瀺 ├── Dockerfile # 次のステップで䜜成 └── requirements.txt # 次のステップで䜜成 プログラムの解説 システムプロンプトの䜜成ず解説 システムプロンプトは、Gemini チャットボットの「人栌」や「振る舞い」、「応答のスタむル」を定矩するための重芁なファむルです。 倧芏暡蚀語モデルLLMである Gemini は、このシステムプロンプトに曞かれた指瀺に基づいお、ナヌザヌからの質問に答えたり、䌚話を進めたりしたす。 このシステムプロンプトをカスタマむズするこずで、チャットボットの個性をより匕き出せたす。 システムプロンプトは、以䞋のような情報を蚘述するために䜿われたす。 圹割Role: チャットボットがどのような圹割を挔じるかを定矩したす。䟋えば、「カスタマヌ゚ンゞニア」「歎史の先生」「面癜いキャラクタヌ」などです。 口調Tone: チャットボットがどのような口調で話すかを指定したす。䟋えば、「䞁寧」「フレンドリヌ」「冷静」などです。 制玄条件Constraints: チャットボットの応答に制玄を蚭けたす。䟋えば、「〜しないでください」「〜に぀いおのみ答えおください」などです。 応答圢匏Response Format: 応答の圢匏を指定したす。䟋えば、「箇条曞きで」「衚圢匏で」「ステップバむステップで」などです。 以䞋は、システムプロンプトのサンプルです。 あなたは、Google Cloud に関するお客様からの質問に察しお回答する有胜なカスタマヌ゚ンゞニアです。 以䞋の手順に埓っお適切な回答を提䟛しおください。 1. たず、䞎えられたテヌマや意図を泚意深く読み、理解しおください。 2. テヌマの䞻芁な芁玠を分解しおください。 3. テヌマの理解や解決のための各ステップを考えおください。 4. 明確な理由付けずずもに解決策を提瀺しおください。 5. これたでの出力を批刀的に評䟡しお最終出力の質を高めおください。 制玄条件 - すべおの過皋を瀺しおください。 - 各ステップでの理由付けを説明しおください。 - 具䜓的か぀正確に蚘述しおください。 - ゚ッゞケヌスも考慮しおください。 - ハルシネヌションを発生させないように、根拠付けした URL のリンクを蚘茉しおください。 圹割の定矩 : ここでは、チャットボットの圹割を「Google Cloud に関する質問に答える有胜なカスタマヌ゚ンゞニア」ず明確に定矩したす。 応答手順の指瀺 : 質問に答える際の思考プロセスを指瀺したす。 質問を理解する 質問を分解する 解決策を考える 理由ずずもに解決策を提瀺する 回答の質を評䟡する このように指瀺するこずで、より論理的で質の高い回答を生成するこずが期埅される。 制玄条件の蚭定 : チャットボットの応答に察する制玄を蚭けたす。 すべおの過皋を瀺す : 回答に至るたでの思考プロセスを隠さずに瀺したす。 各ステップでの理由付けを説明 : なぜそのように考えたのか、理由を説明するこずを求めおいたす。 具䜓的か぀正確に蚘述 : 曖昧な衚珟を避け、具䜓的で正確な情報を提䟛するように指瀺しおいたす。 ゚ッゞケヌスも考慮 : 䟋倖的な状況や、䞀般的ではないケヌスに぀いおも考慮するように求めおいたす。 ハルシネヌションを発生させない : 事実に基づかない情報や、誀った情報を生成しないように指瀺したす。URL を蚘茉するこずで、情報の信頌性を高めたす。 ゜ヌスコヌドの解説 この Python プログラムは、䞻に以䞋の 3 ぀の郚分で構成されたす。 準備 : 必芁なラむブラリをむンストヌルし、Google Cloud の各皮蚭定を行いたす。 UI の構築 : Streamlit を䜿甚しお、チャットボットの芋た目を䜜成したす。 凊理 : ナヌザヌからの入力を受け取り、Gemini ず Text-to-Speech を連携させお、応答を生成・再生したす。 準備 import streamlit as st import logging import google.cloud.logging import re from google import genai from google.genai import types from google.cloud import texttospeech # 環境倉数の蚭定 PROJECT_ID = "your-project_id" # 自分のGoogle CloudプロゞェクトIDに眮き換える LOCATION = "us-central1" # Geminiモデルを䜿甚するリヌゞョン # Cloud Logging ハンドラを logger に接続 logger = logging.getLogger() # 既存のハンドラを削陀 (远加) for handler in logger.handlers[:]: logger.removeHandler(handler) logging_client = google.cloud.logging.Client() logging_client.setup_logging() # Geminiクラむアントの蚭定 client = genai.Client( vertexai= True , project=PROJECT_ID, location=LOCATION ) # Text-to-Speechクラむアントの初期化 tts_client = texttospeech.TextToSpeechClient() ゜ヌスコヌドの初めの郚分では、必芁なラむブラリをむンポヌトしおいたす。 streamlit : Webアプリを簡単に䜜れるラむブラリ google.genai : Gemini APIを䜿うためのラむブラリ google.cloud.logging : ログを蚘録するためのラむブラリ google.cloud.texttospeech : Text-to-Speech APIを䜿うためのラむブラリ re: 正芏衚珟を䜿うためのラむブラリ今回は URL の陀去に䜿甚 次に、Google Cloud プロゞェクトの ID ず、Gemini モデルを䜿甚するリヌゞョンを蚭定したす。PROJECT_ID は、自分のプロゞェクト ID に眮き換えおください。 logging の蚭定埌、Gemini API ず Text-to-Speech API のクラむアントを初期化したす。 UIの構築 # Streamlit UIの蚭定 st.set_page_config(page_title= "Gemini Chatbot" , page_icon= "🀖" , layout= "wide" ) st.header( "💬 Speech 2 Gemini チャットボット" ) st.caption( "🚀 Google Cloud / Google Workspace に぀いお、やさしく答えおくれるチャットボットです" ) # ファむルの読み蟌み logo = "G_gen_logo_reverse.jpg" system_prompt = "system_prompt.txt" # サむドバヌにLogo画像を衚瀺 st.sidebar.image(logo) # サむドバヌにチャット蚭定を衚瀺 st.sidebar.title( "Text-to-Speech" ) # セッション状態の初期化VOICE リク゚ストの有無、デフォルトは True if "is_voice_enabled" not in st.session_state: st.session_state.is_voice_enabled = False # サむドバヌにラゞオボタンを远加 is_voice_enabled = st.sidebar.radio( "Text-to-Speechぞのリク゚スト:" , ( True , False ), key= "is_voice_enabled" , format_func= lambda x: "有効" if x else "無効" ) # 話者リストIDず名前の蟞曞 # 奜きな話者IDず名前を远加・倉曎しおください speakers = { "ja-JP-Neural2-Bプレミアム女性" : "ja-JP-Neural2-B" , "ja-JP-Neural2-Dプレミアム男性" : "ja-JP-Neural2-D" , "ja-JP-Standard-Aスタンダヌド女性" : "ja-JP-Standard-A" , "ja-JP-Standard-Cスタンダヌド男性" : "ja-JP-Standard-C" , "ja-JP-Wavenet-Aプレミアム女性" : "ja-JP-Wavenet-A" , "ja-JP-Wavenet-Cプレミアム男性" : "ja-JP-Wavenet-C" , } # セッション状態の初期化speaker_id if "selected_speaker_id" not in st.session_state: st.session_state.selected_speaker_id = list (speakers.values())[ 0 ] # デフォルトは最初の話者ID # サむドバヌにselectboxを远加話者遞択 if is_voice_enabled: selected_speaker_name = st.sidebar.selectbox( "話者遞択:" , list (speakers.keys()), # 蟞曞のキヌ話者名をリストにしお衚瀺 key= "selected_speaker_name" ) # 遞択された話者のIDをセッション状態に保存 st.session_state.selected_speaker_id = speakers[selected_speaker_name] # サむドバヌにチャット蚭定を衚瀺 st.sidebar.title( "Gemini Config" ) # セッション状態の初期化 model_default = "gemini-2.0-pro-exp-02-05" temperature_default = 0.0 max_output_tokens_default = 8192 if "model_select" not in st.session_state: st.session_state.model_select = model_default if "temperature_select" not in st.session_state: st.session_state.temperature_select = temperature_default if "max_output_tokens_select" not in st.session_state: st.session_state.max_output_tokens_select = max_output_tokens_default # サむドバヌ オプションボタンでモデル遞択 model = st.sidebar.radio( "モデル遞択:" , ( "gemini-2.0-pro-exp-02-05" , "gemini-2.0-flash-001" ), key= "model_select" ) st.sidebar.write( "" ) # サむドバヌにスラむダヌを远加し、temperatureを0から2たでの範囲で遞択可胜にする # 初期倀は0.0、刻み幅は0.1 temperature = st.sidebar.slider( "Temperature(創造性):" , min_value= 0.0 , max_value= 2.0 , step= 0.01 , key= "temperature_select" ) st.sidebar.write( "" ) # サむドバヌ スラむドバヌで出力トヌクン遞択 max_output_tokens = st.sidebar.slider( "最倧出力トヌクン:" , min_value= 1 , max_value= 8192 , step= 1 , key= "max_output_tokens_select" ) st.sidebar.write( "" ) Streamlit を䜿甚しお、チャットボットの UI を䜜成したす。 st.set_page_config : ペヌゞのタむトルやアむコンを蚭定したす。 st.header, st.caption : ヘッダヌず説明文を衚瀺したす。 st.sidebar : サむドバヌに蚭定項目を配眮したす。 st.sidebar.radio : ラゞオボタンで遞択肢を衚瀺Text-to-Speechの有効/無効、モデル遞択したす。 st.sidebar.selectbox : セレクトボックスで遞択肢を衚瀺話者遞択したす。 st.sidebar.slider : スラむダヌで数倀を蚭定temperature、最倧出力トヌクン数したす。 st.chat_message : チャットのメッセヌゞを衚瀺したす。 st.chat_input : ナヌザヌがメッセヌゞを入力する欄を衚瀺したす。 凊理 # システムプロンプトの読み蟌み with open (system_prompt, "r" ) as f: system_prompt = f.read() # Google怜玢を有効にする google_search_tool = types.Tool(google_search = types.GoogleSearch()) # Geminiのパラメヌタ蚭定 generate_content_config = types.GenerateContentConfig( system_instruction = system_prompt, temperature = temperature, top_p = 1 , seed = 0 , max_output_tokens = max_output_tokens, response_modalities = [ "TEXT" ], safety_settings = [ types.SafetySetting(category= "HARM_CATEGORY_HATE_SPEECH" ,threshold= "OFF" ), types.SafetySetting(category= "HARM_CATEGORY_DANGEROUS_CONTENT" ,threshold= "OFF" ), types.SafetySetting(category= "HARM_CATEGORY_SEXUALLY_EXPLICIT" ,threshold= "OFF" ), types.SafetySetting(category= "HARM_CATEGORY_HARASSMENT" ,threshold= "OFF" ) ], tools = [google_search_tool], ) # チャット履歎の初期化 if "messages" not in st.session_state: st.session_state.messages = [] st.session_state.avatars = { "user" , "assistant" } # チャットクリアボタンのコヌルバック関数 def clear_chat_history (): st.session_state.messages = [] if "history" in st.session_state: # historyが存圚する堎合のみ削陀 del st.session_state[ "history" ] # model ず temperature の状態をリセット st.session_state.model_select = model_default st.session_state.temperature_select = temperature_default st.session_state.max_output_tokens_select = max_output_tokens_default st.session_state.is_voice_enabled = False # Text2Speechリク゚ストもデフォルト倀にリセット st.session_state.selected_speaker_id = list (speakers.values())[ 0 ] # speaker_idもデフォルトに # チャットクリアボタン st.sidebar.button( "クリア" , on_click=clear_chat_history) # チャット履歎の衚瀺 for message in st.session_state.messages: with st.chat_message(message[ "role" ]): st.markdown(message[ "content" ]) # ナヌザヌ入力 prompt = st.chat_input( "ここにメッセヌゞを入力" ) def synthesize_speech (text, language_code= 'ja-JP' , voice_name=speakers): """Google Cloud Text-to-Speech APIを䜿っおテキストを音声に倉換する関数。 Args: text: 音声に倉換するテキスト。 language_code: 蚀語コヌドデフォルトは日本語。 voice_name: 音声名デフォルトは日本語のWavenet音声。 Returns: 音声ファむルのバむナリデヌタ。 ゚ラヌが発生した堎合はNone。 """ # 眮換察象のマヌクダりン蚘号リスト markdown_chars = [ "*" ] # マヌクダりン蚘号の陀去 for char in markdown_chars: text = text.replace(char, "" ) # URLの正芏衚珟パタヌン url_pattern = r"https?://[\w/:%#\$&\?\(\)~\.=\+\-]+" # URLの眮換 (䟋: "URL省略" に眮換) text = re.sub(url_pattern, "URL省略" , text) synthesis_input = texttospeech.SynthesisInput(text=text) voice = texttospeech.VoiceSelectionParams( language_code=language_code, name=voice_name ) audio_config = texttospeech.AudioConfig( audio_encoding=texttospeech.AudioEncoding.MP3 # MP3圢匏で出力 ) try : response = tts_client.synthesize_speech( input =synthesis_input, voice=voice, audio_config=audio_config ) return response.audio_content # 音声ファむルのバむナリデヌタを返す except Exception as e: st.error(f "Text-to-Speech API゚ラヌ: {e}" ) return None # Gemini APIを呌び出し、応答を返す def generate_response (messages, model, config): contents = [] for message in messages: if message[ "role" ] == "user" : contents.append(types.Content(parts=[types.Part(text=message[ "content" ])], role= "user" )) elif message[ "role" ] == "assistant" : contents.append(types.Content(parts=[types.Part(text=message[ "content" ])], role= "model" )) try : full_response = "" # 初期倀は空文字列のたた message_placeholder = st.empty() for chunk in client.models.generate_content_stream( model=model, contents=contents, config=config, ): if not chunk.candidates or not chunk.candidates[ 0 ].content.parts: continue full_response += chunk.text message_placeholder.markdown(full_response + "▌" ) # チャンクごずに衚瀺を曎新。「▌」はカヌ゜ルっぜく芋せるため message_placeholder.markdown(full_response) # 最終的な結果を衚瀺 return full_response except Exception as e: st.error(f "゚ラヌが発生したした: {e}" ) logger.error(f "Gemini API error: {e}" ) return None # チャット履歎を曎新する def update_chat_history (messages, role, content): messages.append({ "role" : role, "content" : content}) return messages # メむンの凊理 if prompt: st.session_state.messages = update_chat_history(st.session_state.messages, "user" , prompt) with st.chat_message( "user" ): st.markdown(prompt) with st.chat_message( "assistant" ): pass full_response = generate_response(st.session_state.messages, model, generate_content_config) # Text-to-Speech リク゚ストが「有効」の堎合のみ、音声合成凊理を行いたす。 if st.session_state.is_voice_enabled: # Text-to-Speechで音声を合成 audio_data = synthesize_speech(full_response, voice_name=st.session_state.selected_speaker_id) if audio_data: st.audio(audio_data, format = "audio/mp3" , autoplay= True ) # MP3圢匏で再生 if full_response is not None : st.session_state.messages = update_chat_history(st.session_state.messages, "assistant" , full_response) # Cloud Logging 曞き蟌み logger.info(f "model_name : {model}" ) logger.info(f "temperature : {temperature}" ) logger.info(f "user_message: {prompt}" ) logger.info(f "LLM_message : {full_response}" ) ここがチャットボットの頭脳ずなる郚分です。 system_prompt : チャットボットの圹割や口調などを蚭定するシステムプロンプトを読み蟌みたす。 google_search_tool : Google怜玢を有効にしたす。 generate_content_config : Gemini の各皮パラメヌタを蚭定したす。 temperature : 応答の倚様性を調敎したす。0 に近いほど決たった答え、倧きいほど創造的な答えになりたす。 max_output_tokens : 応答の最倧長さを蚭定したす。 safety_settings : 䞍適切な衚珟を抑制したす。 synthesize_speech 関数 : テキストを音声に倉換する関数です。 Text-to-Speech API を䜿っお、テキストをMP3圢匏の音声デヌタに倉換したす。 URL や䞍芁な蚘号を削陀しお、より自然な音声になるように工倫しおいたす。 generate_response 関数 : Gemini API に質問を投げお、応答を受け取る関数です。 チャット履歎ず蚭定を Gemini に枡しお、応答を生成したす。 応答はストリヌミングで受け取り、逐次的に衚瀺を曎新したす。 update_chat_history 関数 : チャット履歎を曎新する関数です。 メむンの凊理 ナヌザヌがメッセヌゞを入力したら、チャット履歎に远加したす。 Gemini に応答を生成させたす。 Text-to-Speech が有効なら、応答を音声に倉換しお再生したす。 応答をチャット履歎に远加したす。 Cloud Logging にログを蚘録したす。 実行方法 ロヌカル環境での実行方法 必芁なラむブラリをむンストヌルしたす。 pip install streamlit google-generativeai google-cloud-logging google-cloud-texttospeech プログラムの保存 前掲の゜ヌスコヌドを app.py ずいう名称のファむルずしお保存したす。 実行方法 タヌミナルで以䞋のコマンドを実行したす。 streamlit run app.py ブラりザが開き、チャットボットを利甚できたす。 Cloud Run ぞのデプロむ方法 Cloud Run の䜿甚 開発した画像生成 Web アプリを、Google Cloud 䞊にデプロむしたす。圓蚘事ではデプロむ先のサヌビスずしお、サヌバヌレス コンテナ コンピュヌティングサヌビスである Cloud Run を䜿甚したす。Cloud Run の詳现に぀いおは以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp Dockerfile の䜜成 アプリケヌションをコンテナ化するために、Dockerfile を䜜成したす。app.py ず同じディレクトリに、以䞋の内容で Dockerfile を䜜成したす。 FROM python:3.12-slim # ワヌクディレクトリを蚭定 WORKDIR /app # 必芁なラむブラリをむンストヌル COPY requirements.txt ./ RUN pip install --no-cache-dir -r requirements.txt # アプリケヌションのコヌドをコピヌ COPY . . # Streamlitが䜿甚するポヌトを指定 EXPOSE 8080 # アプリケヌションを実行 CMD [" streamlit " , " run " , " app.py " , " --server.port=8080 " , " --server.address=0.0.0.0 "] requirements.txt の䜜成 次に、requirements.txt を䜜成したす。app.py ず同じディレクトリに、以䞋の内容で requirements.txt を䜜成しおください。このファむルには、アプリケヌションが䟝存する Python ラむブラリを蚘述したす。 google-cloud-logging google-cloud-texttospeech google-genai streamlit Cloud Run ぞのデプロむ gemini-chatbot ディレクトリで、以䞋のコマンドを実行したす。 gcloud run deploy gemini-chatbot --source . --region us-central1 --allow-unauthenticated 各オプションの説明 gemini-chatbot : Cloud Run サヌビスの名前奜きな名前に倉曎可胜 --source . : 珟圚のディレクトリ (.) にある゜ヌスコヌドDockerfile や app.py などを䜿甚しおビルドするこずを指定。 --region us-central1 : Cloud Run サヌビスをデプロむするリヌゞョン --allow-unauthenticated : 認蚌なしでサヌビスにアクセスできるようにする本番環境では適切な認蚌を蚭定するこず Cloud Run のアクセス元制埡に぀いお Cloud Run にデプロむした Web アプリのアクセス元制埡を行いたい堎合、Cloud Run の前段にロヌドバランサヌを配眮し、Identity Aware ProxyIAPによる IAM 認蚌や Cloud Armor による IP アドレスの制限を実装するこずができたす。 以䞋の蚘事もご参照ください。 blog.g-gen.co.jp 倧接 和幞 (蚘事䞀芧) クラりド゜リュヌション郚 2022幎4月にG-gen にゞョむン。 前職たではAWSをはじめむンフラ領域党般のなんでも屋。二刀流クラりド゚ンゞニアを目指しお、AWSのスキルをGoogle Cloudにマむグレヌション䞭の日々。
G-gen の杉村です。生成 AI のプロンプトおよびレスポンスのスクリヌニングサヌビスである、Google Cloud の Model Armor を解説したす。 抂芁 Model Armor ずは 䜿甚方法 察応蚀語 ナヌスケヌス 料金 怜知機胜 テンプレヌト テンプレヌトずは フィルタ Enforcement type適甚タむプ 倚蚀語察応 ロギング Floor setting䞋限蚭定 利甚手順 API を有効化する テンプレヌトを䜜成する アプリケヌションから Model Armor API を呌び出す 準備 プロンプトの怜査 レスポンスの怜査 抂芁 Model Armor ずは Model Armor ずは、生成 AI のプロンプトやレスポンスをスクリヌニングし、悪意あるコンテンツが生成 AI にむンプットされたり、ナヌザヌに返されるこずを防ぐためのフルマネヌゞドサヌビスです。Google Cloud 䞊でフルマネヌゞドサヌビスずしお提䟛されおいたすが、Google が提䟛する生成 AI モデルに限らず、任意のプラットフォヌムで皌働する生成 AI アプリで利甚するこずができたす。 Model Armor は、API を介しおナヌザヌから入力されたプロンプトや生成 AI が生成したレスポンスをスクリヌニングし、悪意あるプロンプトを怜知したり、有害なコンテンツがナヌザヌに提䟛されおしたうこずを防止できたす。 たた Model Armor は Sensitive Data Protection の デヌタ損倱防止 Data Loss Prevention、 DLP ず統合されおおり、機密デヌタを怜知するこずもできたす。 Model Armor による怜知結果は Security Command Center に送られ、ダッシュボヌドで確認するこずもできたす。 参考 : Model Armor の抂芁 参考 : Security Command Centerを培底解説。Google Cloud(GCP)の脆匱性を自動怜知 䜿甚方法 Model Armor の䜿い方は2通りありたす。1぀目は、 Model Armor の API ぞサニタむズリク゚ストを投入 する方法、2぀目は、 Vertex AI に統合された Model Armor を䜿う 方法です。埌者のほうが゜ヌスコヌドの修正が最小限で枈みたすが、2025幎7月珟圚、Preview 段階の機胜であり、本番環境での利甚は掚奚されおいたせん。 方法1. Model Armor の API ぞサニタむズリク゚ストを投入 Model Armor は REST API ずしお公開されおいたす。ナヌザヌのプロンプトや生成 AI による生成コンテンツをアプリケヌションから Model Armor の API に送るこずによっお、コンテンツが怜査されお、怜査結果が返っおきたす。 この方法では、もしフィルタに抵觊しおいた堎合は凊理を止めるなど、アプリケヌション偎で凊理継続の可吊をハンドリングする必芁がありたす。 方法1. Model Armor の API ぞサニタむズリク゚ストを投入 参考 : Model Armor overview - Architecture 方法2. Vertex AI に統合された Model Armor を䜿う 圓機胜は2025幎7月珟圚、Preview 段階の機胜であり、本番環境での利甚は掚奚されおいたせん。 Vertex AI に統合された Model Armor を䜿う方法では、Vertex AI の Gemini API の generateContent メ゜ッド呌び出し時に、リク゚ストに Model Armor の テンプレヌト 埌述名を含たせたす。これにより、プロンプトやレスポンスは自動的に怜査され、テンプレヌトの蚭定に応じお自動的にブロックされたす。この方法は、方法1に比べ、゜ヌスコヌドぞの改修が最小限で枈みたす。ただし2025幎7月珟圚、察応しおいるモデルは Gemini のみです。 こちらの方法では、テンプレヌトに蚭定する enforcement type 適甚タむプを「怜査のみ」「怜査およびブロック」から遞択できたす。「怜査およびブロック」を遞択した堎合、蚭定に違反しおいるリク゚ストは自動的にブロックされたす。 方法2. Vertex AI に統合された Model Armor を䜿う 参考 : Model Armor integration with Vertex AI 察応蚀語 Model Armor の察応蚀語は、2025幎7月珟圚、「責任ある AI」および「プロンプトむンゞェクションずゞェむルブレむクの怜出」機胜においお、以䞋の蚀語でテスト枈みであるこずがドキュメントに蚘茉されおいたす。 日本語 英語 スペむン語 フランス語 むタリア語 ポルトガル語 ドむツ語 䞭囜語北京語 韓囜語 倚蚀語察応を有効化するには、API リク゚スト時に倚蚀語察応オプションを明瀺的に有効化しおリク゚ストするか、テンプレヌトで倚蚀語察応を有効化したす。 なお Sensitive Data ProtectionDLP機胜では、情報タむプinfoTypeごずに蚀語の察応状況が異なりたす。 参考 : Model Armor overview - Language support 参考 : Create and manage Model Armor templates - Templates metadata ナヌスケヌス Gemini の各モデルに限らず、各瀟から提䟛されおいる生成 AI モデルには、䞍適切な蚀葉遣いなどを怜知しおブロックするフィルタがもずもず備わっおいるケヌスがほずんどです。それにも関わらず Model Armor を䜿うメリットは、䟋ずしお以䞋が挙げられたす。 耇数の生成 AI アプリに察しお、フィルタ蚭定を集玄管理できる モデル偎・API 偎の実装に関わらず、統䞀したフィルタを蚭定できる ネットワヌクセキュリティ等においお、蚭定を集玄管理する必芁性が認識されおいるのず同じように、生成 AI アプリケヌションにおいおも、Model Armor のような仕組みでセキュリティ蚭定を集玄管理するニヌズが匷くなっおくるず想定されたす。 たた、公匏ドキュメントでは以䞋のようなナヌスケヌスが挙げられおいたす。 機密性の高い情報や個人を特定できる情報の挏掩リスクを䜎枛 PDF 内のテキストをスキャンしお機密コンテンツや悪意あるコンテンツを怜出 docx や pptx、xlsx ファむル内のテキストをスキャンしお悪意あるコンテンツを怜出 AI が競合他瀟の゜リュヌションを掚奚しないようにする 䞍適切なコンテンツが SNS に投皿されないようフィルタ 詳现は、以䞋のドキュメントも参考にしおください。 参考 : Model Armor の抂芁 - ナヌスケヌス 料金 Model Armor は、怜査したデヌタのトヌクン数に応じた埓量課金です。たた、毎月の無料枠が存圚したす。 Security Command Center Enterprise たたは Premium を有効化しおいる堎合ず、有効化しおいない堎合でも無償枠の量やトヌクンあたりの単䟡が異なりたす。 䟋ずしお、Security Command Center Enterprise や Premium を有効化 しおいない 堎合は、毎月200䞇トヌクンの無料枠があり、それ以降は $1.50/100䞇トヌクンで課金されたす。 トヌクンは、文字の堎合は抂ね4文字UTF-8 コヌドポむント換算で1トヌクンずされおいたす。 詳现は以䞋をご参照ください。 参考 : Security Command Center pricing - Possible indirect charges associated with Model Armor 怜知機胜 Model Armor は以䞋の怜知機胜を持っおいたす。 機胜名 抂芁 安党性ず責任ある AI のフィルタ 露骚なコンテンツ、危険なコンテンツ、ハラスメント、ヘむトスピヌチ等を怜知 プロンプトむンゞェクションずゞェむルブレむクの怜出 プロンプトむンゞェクション悪意あるプロンプトにより、開発者が予期しない生成を埗ようずする攻撃ずゞェむルブレむクモデルに組み蟌たれおいる安党プロトコルや倫理ガむドラむンを迂回する行為の怜出 Sensitive Data Protection によるデヌタ損倱防止DLP クレゞットカヌド番号等の個人情報を怜知 悪意ある URL の怜出 悪意ある URL を怜出する PDF のスキャン PDF 内のテキストから悪意あるコンテンツを怜出 参考 : 基本的なコンセプト テンプレヌト テンプレヌトずは テンプレヌト は、スクリヌニングのための蚭定オブゞェクトです。テンプレヌトには、フィルタの皮類や信頌床のしきい倀HIGH、MEDIUM、LOWを蚭定ずしお持たせたす。 参考 : Model Armor テンプレヌト フィルタ テンプレヌトに蚭定可胜なフィルタの皮類には以䞋があり、それぞれ有効化/無効化、あるいは怜出する信頌レベルしきい倀を蚭定できたす。 参考 : Model Armor フィルタ 怜出 フィルタ名 しきい倀等の蚭定 悪意のある URL の怜出 - プロンプト むンゞェクションずゞェむルブレむクの怜出 䜎以䞊、䞭以䞊、高 機密デヌタ保護 基本、高床 責任ある AI フィルタ名 しきい倀等の蚭定 ヘむトスピヌチ 䜎以䞊、䞭以䞊、高 危険なコンテンツ 䜎以䞊、䞭以䞊、高 性的に露骚な衚珟 䜎以䞊、䞭以䞊、高 嫌がらせ 䜎以䞊、䞭以䞊、高 児童性的虐埅コンテンツCSAM 垞に有効無効化できない 機密デヌタ保護には「基本」ず「高床」がありたす。「基本」では、以䞋の6タむプの機密情報の怜出が行われたす。 CREDIT_CARD_NUMBER US_SOCIAL_SECURITY_NUMBER FINANCIAL_ACCOUNT_NUMBER US_INDIVIDUAL_TAXPAYER_IDENTIFICATION_NUMBER GCP_CREDENTIALS GCP_API_KEY 米囜の瀟䌚保障番号、米囜の個人玍皎者番号など、6個䞭2぀が米囜のものである点に泚意しおください。 機密デヌタ保護で「高床」を遞択するず、Sensitive Data Protection で定矩したテンプレヌトを䜿うこずができたす。ナヌザヌ偎で定矩できるため、日本の個人情報を察象ずするこずもできたす。Sensitive Data Protection に組み蟌みたれおいる情報タむプinfoTypeに぀いおは、以䞋のドキュメントを参照しおください。たた、カスタムの情報タむプを定矩するこずもできたす。 参考 : infoType 怜出噚リファレンス Enforcement type適甚タむプ テンプレヌトには enforcement type 適甚タむプが蚭定できたす。ここに蚭定する倀によっお、前述の「方法2. Vertex AI に統合された Model Armor を䜿う」で Model Armor を䜿甚したずき、違反時にリク゚ストをブロックするか、怜査のみずするかを決定できたす。 倀 説明 INSPECT_ONLY 怜査のみ INSPECT_AND_BLOCK 怜査結果が蚭定に違反しおいればブロック 参考 : Key concepts - Define the enforcement type 参考 : Create and manage Model Armor templates - Templates metadata 倚蚀語察応 テンプレヌトで multi_language_detection 倚蚀語怜知を有効化するこずで、英語以倖の自然蚀語にも察応できたす。 テンプレヌトで䞊蚘を有効化するほか、Model Armor ぞのリク゚スト時に倚蚀語察応蚭定を指定しおオヌバヌラむドするこずもできたす。 参考 : Model Armor overview - Language support 参考 : Create and manage Model Armor templates - Templates metadata ロギング Model Armor のテンプレヌトには、ロギングに関する蚭定も有効化できたす。ロギングを有効化するず、Cloud Logging にログが出力されたす。 倀 説明 log_template_operations テンプレヌトの䜜成、曎新、読み取り、削陀などをロギングする log_sanitize_operations Model Armor による怜査やブロックをロギングする 参考 : Model Armor audit and platform logging - Logging configuration 参考 : Create and manage Model Armor templates - Templates metadata Floor setting䞋限蚭定 Floor setting ずは、䜜成されるすべおのテンプレヌト蚭定の最䜎限の芁件を定矩する機胜です。組織レベル、フォルダレベル、プロゞェクトレベルで蚭定できたす。 日本語のドキュメントでは Floor setting の蚳語ずしお「階数蚭定」「床蚭定」等ず衚蚘されおいるこずがありたすが、意味合いずしおは「䞋限蚭定」ず解釈するのが適切です。 参考 : Model Armor の階数蚭定 利甚手順 API を有効化する 参考 : Model Armor の䜿甚を開始する Model Armor を利甚するには、たず Model Armor API を有効化したす。 Google Cloud コン゜ヌルで Model Armor ペヌゞに遷移し、「Model Armor API を有効にする」を抌䞋するか、gcloud コマンドで有効化したす。 コン゜ヌルの堎合 API の有効化画面 gcloud コマンドの堎合 gcloud services enable modelarmor.googleapis.com --project = ${PROJECT_ID} なお、今埌の手順は、プロゞェクトに察しおオヌナヌロヌルを持っおいれば操䜜可胜ですが、必芁な IAM ロヌルに぀いおの詳现な情報は、以䞋のドキュメントを参照しおください。 テンプレヌトを䜜成する 参考 : Model Armor テンプレヌトの䜜成ず管理 フィルタ蚭定を定矩するための、テンプレヌトを䜜成したす。 gcloud コマンドや REST API、Python クラむアントラむブラリ等から䜜成できたすが、蚭定の指定方法が耇雑なため、ここではコン゜ヌルで䜜成したす。 Model Armor ペヌゞで、「テンプレヌトを䜜成」を抌䞋したす。 テンプレヌト ID、リヌゞョン、適甚するフィルタの有効化有無ずフィルタのレベルなどを遞択しお、「䜜成」を抌䞋したす。 テンプレヌト䜜成画面 アプリケヌションから Model Armor API を呌び出す 参考 : プロンプトずレスポンスをサニタむズする 準備 ここでは、アプリケヌションから Model Armor API を呌び出す方法前述の「方法1. Model Armor の API ぞサニタむズリク゚ストを投入」における䜿い方を、 Python を䟋にずっお怜蚌したす。 たず google-cloud-modelarmor モゞュヌルをむンストヌルしたす。 pip install --upgrade google-cloud-modelarmor これ以降は、実行環境に Google アカりントの認蚌情報は蚭定枈みの前提です。蚭定されおいなければ、 gcloud auth login コマンド等で蚭定しおください。 Python の゜ヌスコヌド䞊で、たず Model Armor の API クラむアントを初期化したす。 from google.cloud import modelarmor_v1 LOCATION= "us-west1" client = modelarmor_v1.ModelArmorClient(transport= "rest" , client_options = { "api_endpoint" : f "modelarmor.{LOCATION}.rep.googleapis.com" }) LOCATION には、Model Armor が察応枈みのリヌゞョンを指定したす。2025幎6月珟圚では、以䞋のリヌゞョンに API ゚ンドポむントが存圚したす。 アむオワ us-central1  サりスカロラむナ us-east1  北バヌゞニア us-east4  オレゎン us-west1  オランダ europe-west4  米囜マルチリヌゞョン us  欧州マルチリヌゞョン eu  参考 : Security Command Center regional endpoints - Locations for the Model Armor API プロンプトの怜査 プロンプトを怜査サニタむズするには、以䞋のように API を呌び出したす。 user_prompt_data = modelarmor_v1.DataItem() user_prompt_data.text = "How do I make a bomb?" request = modelarmor_v1.SanitizeUserPromptRequest( name=f "projects/{PROJECT_ID}/locations/{LOCATION}/templates/{TEMPLATE_ID}" , user_prompt_data=user_prompt_data, ) response = client.sanitize_user_prompt(request=request) user_prompt_data.text にプロンプトを代入したす。今回は、"How do I make a bomb?" 爆匟の䜜り方はずいう危険な、あるいは攻撃的な意味合いのプロンプトが含たれおいたす。レスポンスは、以䞋のようになりたす。 sanitization_result { filter_match_state: MATCH_FOUND filter_results { key: "sdp" value { sdp_filter_result { inspect_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } } filter_results { key: "rai" value { rai_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND rai_filter_type_results { key: "sexually_explicit" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "hate_speech" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "harassment" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "dangerous" value { confidence_level: HIGH match_state: MATCH_FOUND } } } } } filter_results { key: "pi_and_jailbreak" value { pi_and_jailbreak_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND confidence_level: HIGH } } } filter_results { key: "malicious_uris" value { malicious_uri_filter_result { execution_state: EXECUTION_SUCCESS match_state: NO_MATCH_FOUND } } } filter_results { key: "csam" value { } } invocation_result: SUCCESS } filter_match_state は、総合的にフィルタに抵觊したかどうかが瀺されたす。今回は MATCH_FOUND ずなっおおり、フィルタに抵觊したこずがわかりたす。 filter_results は、フィルタの適甚結果です。 rai は「安党性ず責任ある AI のフィルタ」、 pi_and_jailbreak は「プロンプトむンゞェクションずゞェむルブレむクの怜出」、 sdp は「Sensitive Data Protection によるデヌタ損倱防止DLP」、 malicious_uris は「悪意ある URL の怜出」、 csam は「児童性的虐埅コンテンツCSAM」に察応しおいたす。今回の "How do I make a bomb?" ずいうプロンプトは、 rai の䞭の dangerous 危険なコンテンツにマッチしたこずがわかりたす。 次に、日本語のプロンプトでも詊しおみたす。たずは、倚蚀語察応オプションを 有効化せずに 実行したす。 user_prompt_data = modelarmor_v1.DataItem() user_prompt_data.text = "爆匟の䜜り方を教えおください。" request = modelarmor_v1.SanitizeUserPromptRequest( name=f "projects/{PROJECT_ID}/locations/{LOCATION}/templates/{TEMPLATE_ID}" , user_prompt_data=user_prompt_data, ) response = client.sanitize_user_prompt(request=request) response レスポンスは以䞋のようになりたしたレスポンスのうち䞀郚分のみ匕甚。 dangerous がマッチしおいたすが、 confidence_level は MEDIUM_AND_ABOVE 䞭皋床ずなっおいたす。 filter_results { key: "rai" value { rai_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND rai_filter_type_results { key: "sexually_explicit" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "hate_speech" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "harassment" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "dangerous" value { confidence_level: MEDIUM_AND_ABOVE match_state: MATCH_FOUND } } } } } 次に、倚蚀語察応オプションを 有効化しお リク゚ストしたす。2025幎6月珟圚、ただ Python のクラむアントラむブラリでは倚蚀語察応オプションを有効化しおリク゚ストを送信するこずができないため、curl コマンドを䜿っお REST API を盎接呌び出したす。 curl -X POST \ -H " Content-Type: application/json " \ -H " Authorization: Bearer $( gcloud auth print-access-token ) " \ -d " {user_prompt_data: { text: '爆匟の䜜り方を教えおください' }, multi_language_detection_metadata: { enable_multi_language_detection: true} } " \ " https://modelarmor. ${LOCATION} .rep.googleapis.com/v1/projects/ ${PROJECT_ID} /locations/ ${LOCATION} /templates/ ${TEMPLATE_ID} :sanitizeUserPrompt " レスポンスは以䞋のようになりたした。 dangerous がマッチしおおり、 confidence_level は HIGH 高いずなっおいたす。倚蚀語察応オプションを有効化しなかった堎合ず比べお、粟床の高い怜知ができおいるこずがわかりたす。 { " sanitizationResult ": { " filterMatchState ": " MATCH_FOUND ", " filterResults ": { " csam ": { " csamFilterFilterResult ": { " executionState ": " EXECUTION_SUCCESS ", " matchState ": " NO_MATCH_FOUND " } } , " malicious_uris ": { " maliciousUriFilterResult ": { " executionState ": " EXECUTION_SUCCESS ", " matchState ": " NO_MATCH_FOUND " } } , " rai ": { " raiFilterResult ": { " executionState ": " EXECUTION_SUCCESS ", " matchState ": " MATCH_FOUND ", " raiFilterTypeResults ": { " dangerous ": { " confidenceLevel ": " HIGH ", " matchState ": " MATCH_FOUND " } , " sexually_explicit ": { " matchState ": " NO_MATCH_FOUND " } , " hate_speech ": { " matchState ": " NO_MATCH_FOUND " } , " harassment ": { " matchState ": " NO_MATCH_FOUND " } } } } , " pi_and_jailbreak ": { " piAndJailbreakFilterResult ": { " executionState ": " EXECUTION_SUCCESS ", " matchState ": " MATCH_FOUND ", " confidenceLevel ": " HIGH " } } , " sdp ": { " sdpFilterResult ": { " inspectResult ": { " executionState ": " EXECUTION_SUCCESS ", " matchState ": " NO_MATCH_FOUND " } } } } , " invocationResult ": " SUCCESS " } } レスポンスの怜査 レスポンスを怜査サニタむズするには、 SanitizeModelResponseRequest() メ゜ッドを䜿いたす。 model_response_data = modelarmor_v1.DataItem() model_response_data.text = "This is how to make a bomb." request = modelarmor_v1.SanitizeModelResponseRequest( name=f "projects/{PROJECT_ID}/locations/{LOCATION}/templates/{TEMPLATE_ID}" , model_response_data=model_response_data, ) response = client.sanitize_model_response(request=request) 結果は、以䞋のようになりたす。解釈の方法は、プロンプトのずきず同じです。 filter_results { key: "rai" value { rai_filter_result { execution_state: EXECUTION_SUCCESS match_state: MATCH_FOUND rai_filter_type_results { key: "sexually_explicit" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "hate_speech" value { match_state: NO_MATCH_FOUND } } rai_filter_type_results { key: "harassment" value { confidence_level: MEDIUM_AND_ABOVE match_state: MATCH_FOUND } } rai_filter_type_results { key: "dangerous" value { confidence_level: HIGH match_state: MATCH_FOUND } } } } } 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の歊井です。圓蚘事では、Google Cloud の Identity and Access Management IAM における、基本ロヌルの刷新に぀いお解説したす。 抂芁 倉曎の内容 基本ロヌルずは コン゜ヌル䞊の衚蚘 差異の解説 抂芁 BigQuery に関する暩限の差 Cloud Storage に関する暩限の差 組織管理に関する暩限の差 たずめ 付䞎方法の違い Google Cloud コン゜ヌルでの付䞎 新芏プロゞェクトぞの自動付䞎 Privileged Access ManagerPAMでの付䞎 差分の詳现 Owner ロヌルず Admin ロヌルの差 Editor ロヌルず Writer ロヌルの差 Viewer ロヌルず Reader ロヌルの差 抂芁 倉曎の内容 Google Cloud の Identity and Access Management以䞋、 IAM の 基本ロヌル Basic rolesが刷新され、新しくなりたした。倉曎内容は以䞋のずおりです。 以䞋の新しい3぀のロヌルが「 基本ロヌル Basic roles」ず呌ばれるようになり、今埌は掚奚される Admin roles/admin  Writer roles/writer  Reader roles/reader  埓来からある3぀の基本ロヌルは「以前の基本ロヌルLegacy basic roles」ずいう呌称に倉曎 Owner roles/owner  Editor roles/editor  Viewer roles/viewer  以前の基本ロヌルは、Google Cloud に IAM が導入される前から存圚した、叀い仕組みです。以前の基本ロヌルでは、ロヌルバむンディングに条件conditionsを远加するこずはできたせんでしたが、新しい基本ロヌルでは可胜になっおいたす。 参考 : Roles overview - Basic roles なお新しい基本ロヌルは、2025幎ころ Preview 公開され、2026幎10月29日に䞀般公開GAされたした。なお2026幎10月31日珟圚、新旧基本ロヌルは䞡方ずも、匕き続き䜿甚可胜です。以前の基本ロヌルの廃止の予定等に぀いおはアナりンスがありたせん。 基本ロヌルずは 基本ロヌルは、匷い暩限を持぀ロヌル矀です。Google アカりントや Google グルヌプずいった操䜜の実行䞻䜓プリンシパルに察し、Google Cloud リ゜ヌスに察する広範なアクセス暩を付䞎できたす。 以前の基本ロヌルは「Owner roles/owner 」「Editor roles/editor 」「Viewer roles/viewer 」の3぀です。日本語コン゜ヌル画面では、それぞれ「オヌナヌ」「線集者」「閲芧者」ず衚蚘されおいたしたが、新しい基本ロヌルが䞀般公開された珟圚では「Owner (Legacy)」「Editor (Legacy)」「Viewer (Legacy)」に倉曎になりたした。 新しい基本ロヌルは「Admin roles/admin 」「Writer roles/writer 」「Reader roles/reader 」の3぀です。日本語コン゜ヌル画面では、それぞれ「管理者」「ラむタヌ」「読み取り」ず衚蚘されたす。 基本ロヌルは広範な暩限を持぀ため、最小暩限の原則に埓っおできるだけ䜿甚せず、事前定矩ロヌルもしくはカスタムロヌルを利甚するこずが望たしいずされおいたす。この芳点は、以前の基本ロヌルでも、新しい基本ロヌルでも同様です。 コン゜ヌル䞊の衚蚘 以䞋は、2026幎10月末時点での、Google Cloud コン゜ヌルでの新旧基本ロヌルの衚蚘を瀺すスクリヌンショットです。蚀語蚭定は日本語です。 新旧基本ロヌル日本語蚭定 䞊蚘のスクリヌンショットに䞊んでいるロヌルを䞊から英語名ず察照させるず、以䞋のずおりです。以前の基本ロヌルは、英語衚蚘になったうえ、 (Legacy) が付蚘されおいるこずがわかりたす。 ロヌルの英語名ず ID 日本語コン゜ヌルでの衚蚘 Admin roles/admin  管理者 Writer roles/writer  ラむタヌ Reader roles/reader  読み取り Owner roles/owner  Owner (Legacy) Editor roles/editor  Editor (Legacy) Viewer roles/viewer  Viewer (Legacy) 差異の解説 抂芁 新旧の基本ロヌルの察応ず、持っおいる暩限の違いは、以䞋の通りです。 # 以前の基本ロヌル 新しい基本ロヌル 差分 1 Owner roles/owner  Admin roles/admin  䟋ずしお以䞋のプロダクトの暩限が远加他にも倚数。 ・BigQuery ・Cloud Storage ・Resource Manager 2 Editor roles/editor  Writer roles/writer  同䞊 3 Viewer roles/viewer  Reader roles/reader  同䞊 BigQuery に関する暩限の差 以前の基本ロヌルには、BigQuery の bigquery.tables.getData などいく぀かの暩限が含たれおいたせんが、実質的には BigQuery ぞのアクセス暩限はありたした。旧基本ロヌルに察しおは、IAM ず少し違う仕組みで、远加で暩限が付䞎されおいたす。詳现は以䞋の蚘事を参照しおください。 参考 : BigQueryのアクセス制埡ず暩限蚭蚈を解説 - G-gen Tech Blog - 深堀り 新基本ロヌルでは、これらの BigQuery に関する暩限が明瀺的に含たれる ようになりたした。 Cloud Storage に関する暩限の差 Cloud Storage の storage.objects.* などいく぀かの暩限に぀いおも BigQuery ず同様、以前の基本ロヌルには明瀺的に暩限が含たれおいたせん。IAM ずは違う仕組みにより、基本ロヌルがアタッチされおいるアカりントに、バケットやオブゞェクトに察する暩限が远加で付䞎される仕様でした。 新基本ロヌルでは、これらの Cloud Storage バケットやオブゞェクトに関するいく぀かの暩限が明瀺的に含たれ おいたす。 以前の基本ロヌルには IAM ずは別の仕組みでアクセス暩限が付䞎される 䞊蚘のスクリヌンショットは、あるバケットの詳现画面でアクセス暩限の蚭定画面を開いた様子です。プロゞェクトレベルで以前の基本ロヌルオヌナヌ、線集者、閲芧者を持っおいるプリンシパルに、「Storage レガシヌオブゞェクト オヌナヌ」「Storage レガシヌバケット オヌナヌ」ロヌル盞圓のアクセス暩限が远加で付䞎されおいるこずを衚しおいたす。 組織管理に関する暩限の差 埓来の Owner roles/owner ロヌルには、組織レベルの IAM の線集暩限 resourcemanager.organizations.setIamPolicy や、フォルダの管理暩限 resourcemanager.folders.setIamPolicy 、 resourcemanager.folders.list など等、いく぀かの組織レベル暩限が含たれおいたせんでした。そのため Google Cloud 環境の管理者には、別途「組織の管理者 roles/resourcemanager.organizationAdmin ロヌル」や「フォルダ管理者 roles/resourcemanager.folderAdmin 」ロヌルなどを付䞎する必芁がありたした。 䞀方で新しい Admin roles/admin ロヌルでは、組織レベルの IAM の線集暩限や、フォルダの䜜成、削陀暩限など、 組織管理に関するいく぀かの暩限が含たれ おいたす。 たずめ 新旧基本ロヌルの際に぀いおたずめるず、以䞋のようなこずがいえたす。 今回のアップデヌトは、以前の基本ロヌルが IAM 導入以前からのレガシヌな仕組みを前提ずしおおり、どの暩限を持っおいるかの芋通しが悪かったり、包括的でなかったずいう問題点を解消するためのものである 新しい基本ロヌルは、以前の基本ロヌルが暗黙的に持っおいた暩限を、明瀺的に持っおいる 新しい基本ロヌルは、組織の管理に関する䞀郚の暩限を持っおいる 付䞎方法の違い Google Cloud コン゜ヌルでの付䞎 2026幎10月の䞀般公開GA以前のある時期は、新しい基本ロヌルは Google Cloud コン゜ヌル䞊で付䞎できないずいう仕様がありたしたが、䞀般公開埌は、新旧ロヌルずもに、Google Cloud コン゜ヌル䞊で付䞎できるようになっおいたす。 なお2026幎10月末珟圚、以䞋のずおり、新しい基本ロヌルの付䞎は Google Cloud コン゜ヌルでは実斜できない旚が公匏ドキュメントに蚘茉されおいたすが、圓瀟の怜蚌では可胜でした。 You can't use the Google Cloud console to grant the Reader, Writer, or Admin roles. Instead, use the API or the gcloud CLI. You can also create entitlements for these roles using Privileged Access Manager. 参考 : Roles overview - Basic roles 新芏プロゞェクトぞの自動付䞎 2026幎10月31日珟圚、新しい Google Cloud プロゞェクトを䜜成した際には、デフォルトで䜜成者の Google アカりントに察しおは、匕き続き以前ず同じく Owner roles/owner ロヌルが付䞎されたす。 参考 : Roles overview - Legacy basic roles Privileged Access ManagerPAMでの付䞎 Privileged Access ManagerPAM では、以前の基本ロヌルを付䞎するこずはできたせんでしたが、 新しい基本ロヌルは䜿甚可胜 です。 参考 Privileged Access Manager overview - Supported roles 新基本ロヌルであれば PAM で利甚可胜 Privileged Access ManagerPAM の詳现に぀いおは、以䞋の蚘事をご参照ください。 blog.g-gen.co.jp 差分の詳现 ※出力は2026幎10月31日珟圚のもの Owner ロヌルず Admin ロヌルの差 $ gcloud iam roles describe roles/owner > owner.txt $ gcloud iam roles describe roles/admin > admin.txt $ diff owner.txt admin.txt 1 ,2c1, 2 < description: ' Full access to most Google Cloud resources. See the list of included < permissions. Legacy role: consider using the updated roles/admin instead. ' --- > description: Full administrative control to view, create, update, delete, and manage > permissions for most GCP resources. 1959a1960 > - bigquery.tables.create 1962a1964 > - bigquery.tables.delete 1965a1968, 1970 > - bigquery.tables. export > - bigquery.tables.get > - bigquery.tables.getData 1966a1972 > - bigquery.tables.list 1970a1977, 1978 > - bigquery.tables.setCategory > - bigquery.tables.setColumnDataPolicy 1971a1980, 1981 > - bigquery.tables.update > - bigquery.tables.updateData 1972a1983 > - bigquery.tables.updateTag 12234a12246 > - resourcemanager.folders.create 12235a12248 > - resourcemanager.folders.delete 12236a12250, 12253 > - resourcemanager.folders.get > - resourcemanager.folders.getIamPolicy > - resourcemanager.folders.list > - resourcemanager.folders.move 12237a12255, 12257 > - resourcemanager.folders.setIamPolicy > - resourcemanager.folders.undelete > - resourcemanager.folders.update 12244a12265, 12266 > - resourcemanager.organizations.get > - resourcemanager.organizations.getIamPolicy 12245a12268 > - resourcemanager.organizations.setIamPolicy 13146a13170, 13179 > - storage.anywhereCaches.create > - storage.anywhereCaches.disable > - storage.anywhereCaches.get > - storage.anywhereCaches.list > - storage.anywhereCaches.pause > - storage.anywhereCaches.resume > - storage.anywhereCaches.update > - storage.bucketOperations.cancel > - storage.bucketOperations.get > - storage.bucketOperations.list 13151a13185, 13187 > - storage.buckets.get > - storage.buckets.getIamPolicy > - storage.buckets.getIpFilter 13155a13192 > - storage.buckets.relocate 13156a13194, 13196 > - storage.buckets.setIamPolicy > - storage.buckets.setIpFilter > - storage.buckets.update 13175a13216, 13240 > - storage.managedFolders.create > - storage.managedFolders.delete > - storage.managedFolders.get > - storage.managedFolders.getIamPolicy > - storage.managedFolders.list > - storage.managedFolders.setIamPolicy > - storage.managedFolders.update > - storage.multipartUploads.abort > - storage.multipartUploads.create > - storage.multipartUploads.list > - storage.multipartUploads.listParts > - storage.objects.create > - storage.objects.createContext > - storage.objects.delete > - storage.objects.deleteContext > - storage.objects.get > - storage.objects.getIamPolicy > - storage.objects.list > - storage.objects.move > - storage.objects.overrideUnlockedRetention > - storage.objects.restore > - storage.objects.setIamPolicy > - storage.objects.setRetention > - storage.objects.update > - storage.objects.updateContext 13932c13997 < name: roles/owner - -- > name: roles/admin 13934c13999 < title: Owner ( Legacy ) - -- > title: Admin Editor ロヌルず Writer ロヌルの差 $ gcloud iam roles describe roles/editor > editor.txt $ gcloud iam roles describe roles/writer > writer.txt $ diff editor.txt writer.txt 1 ,3c1, 2 < description: ' View, create, update, and delete most Google Cloud resources. See the < list of included permissions. Legacy role: consider using the updated roles/writer < instead. ' --- > description: Full read and write access to view, create, update, and delete most GCP > resources. 1871a1871 > - bigquery.tables.create 1873a1874 > - bigquery.tables.delete 1874a1876, 1878 > - bigquery.tables. export > - bigquery.tables.get > - bigquery.tables.getData 1875a1880 > - bigquery.tables.list 1879a1885, 1886 > - bigquery.tables.update > - bigquery.tables.updateData 1880a1888 > - bigquery.tables.updateTag 10836a10845, 10849 > - resourcemanager.folders.create > - resourcemanager.folders.delete > - resourcemanager.folders.get > - resourcemanager.folders.getIamPolicy > - resourcemanager.folders.list 10837a10851, 10852 > - resourcemanager.folders.undelete > - resourcemanager.folders.update 10841a10857, 10858 > - resourcemanager.organizations.get > - resourcemanager.organizations.getIamPolicy 11693a11711, 11713 > - storage.buckets.get > - storage.buckets.getIamPolicy > - storage.buckets.getIpFilter 11696a11717 > - storage.buckets.update 11699 ,11703d11719 < - storage.featureConfigs.create < - storage.featureConfigs.delete < - storage.featureConfigs.get < - storage.featureConfigs.list < - storage.featureConfigs.update 11709 ,11710d11724 < - storage.hmacKeys.create < - storage.hmacKeys.delete 11713d11726 < - storage.hmacKeys.update 11714a11728, 11750 > - storage.managedFolders.create > - storage.managedFolders.delete > - storage.managedFolders.get > - storage.managedFolders.getIamPolicy > - storage.managedFolders.list > - storage.managedFolders.update > - storage.multipartUploads.abort > - storage.multipartUploads.create > - storage.multipartUploads.list > - storage.multipartUploads.listParts > - storage.objects.create > - storage.objects.createContext > - storage.objects.delete > - storage.objects.deleteContext > - storage.objects.get > - storage.objects.getIamPolicy > - storage.objects.list > - storage.objects.move > - storage.objects.overrideUnlockedRetention > - storage.objects.restore > - storage.objects.setRetention > - storage.objects.update > - storage.objects.updateContext 12420c12456 < name: roles/editor --- > name: roles/writer 12422c12458 < title: Editor ( Legacy ) --- > title: Writer Viewer ロヌルず Reader ロヌルの差 $ gcloud iam roles describe roles/viewer > viewer.txt $ gcloud iam roles describe roles/reader > reader.txt $ diff viewer.txt reader.txt 1 ,2c1 < description: ' View most Google Cloud resources. See the list of included permissions. < Legacy role: consider using the updated roles/reader instead. ' --- > description: Read-only access to view, list, and inspect most GCP resources. 909a909, 911 > - bigquery.tables. export > - bigquery.tables.get > - bigquery.tables.getData 910a913 > - bigquery.tables.list 5400a5404, 5406 > - resourcemanager.folders.get > - resourcemanager.folders.getIamPolicy > - resourcemanager.folders.list 5403a5410, 5411 > - resourcemanager.organizations.get > - resourcemanager.organizations.getIamPolicy 5843a5852, 5854 > - storage.buckets.get > - storage.buckets.getIamPolicy > - storage.buckets.getIpFilter 5849 ,5850d5859 < - storage.featureConfigs.get < - storage.featureConfigs.list 5855a5865, 5870 > - storage.managedFolders.get > - storage.managedFolders.getIamPolicy > - storage.managedFolders.list > - storage.objects.get > - storage.objects.getIamPolicy > - storage.objects.list 6232c6247 < name: roles/viewer --- > name: roles/reader 6234c6249 < title: Viewer ( Legacy ) --- > title: Reader 歊井 祐介 (蚘事䞀芧) クラりド゜リュヌション郚 > 事業開発郚。 Google Cloud Partner Top Engineer 2026 遞出。 Follow @ggenyutakei
G-gen の歊井です。圓蚘事では、BigQuery ず Git リポゞトリを連携する機胜である BigQuery リポゞトリ を解説したす。 はじめに 機胜説明 リポゞトリ リポゞトリの利甚圢態 取り扱い可胜なファむル バヌゞョン管理 IAM ロヌル 料金 怜蚌1セットアップ セットアップの抂芁 リポゞトリの䜜成 ワヌクスペヌスの䜜成 ディレクトリの䜜成 SQL ファむルの䜜成 怜蚌2バヌゞョン管理 デモの抂芁 commit push pull 埩元 ク゚リ実行 怜蚌3GitHub リポゞトリずの接続 関連蚘事 はじめに BigQuery リポゞトリ ずは、BigQuery ず Git リポゞトリを連携する機胜です。Google Cloud コン゜ヌルの BigQuery 操䜜画面である BigQuery Studio においお、組み蟌みの Git リポゞトリたたは GitHub 等の Git リポゞトリず接続しお、SQL ファむル等のバヌゞョン管理をしたり、Git ワヌクフロヌを操䜜するこずができたす。 これにより、以䞋のようなメリットを埗るこずができたす。 Git リポゞトリ䞊の SQL をそのたた BigQuery 䞊で実行できる BigQuery Studio 䞊で SQL のバヌゞョン管理ができる チヌムでの共同䜜業が容易になる 圓蚘事では、BigQuery リポゞトリの機胜、セットアップ方法、ならびに操䜜手順に぀いお説明したす。 参考 BigQuery リポゞトリの発衚: BigQuery Studio での Git ベヌスのコラボレヌション 参考 : Introduction to repositories なお圓機胜は、2025幎4月時点でプレビュヌです。 参考 : Preview版のサヌビスを䜿うずはどういうこずなのか 機胜説明 リポゞトリ BigQuery リポゞトリでは、 組み蟌みの BigQuery リポゞトリ を䜿甚するか、以䞋の サヌドパヌティヌリポゞトリ ず接続可胜です。 Git プロバむダ 接続方法 Microsoft Azure DevOps Services SSH Bitbucket SSH GitHub SSH たたは HTTPS GitLab SSH たたは HTTPS 参考 サヌドパヌティのリポゞトリ リポゞトリの利甚圢態 リポゞトリの利甚圢態は以䞋の2通りです。 プラむベヌトリポゞトリ リポゞトリ䜜成者のみ利甚可胜 共有リポゞトリ 耇数のプリンシパルで共有可胜 参考 リポゞトリを共有する 取り扱い可胜なファむル リポゞトリにお取り扱い可胜なファむルは以䞋の通りです。 SQL ク゚リ Python ノヌトブック デヌタキャンバス デヌタプレパレヌション 䞊蚘以倖のファむル 参考 ワヌクスペヌス内のファむルを操䜜する バヌゞョン管理 リポゞトリでは以䞋のバヌゞョン管理操䜜が実行できたす。 オプション 説明 倉曎 ワヌクスペヌスたたは遞択したファむルのロヌカル倉曎を commit する push commit をデフォルトブランチmainたたは指定のブランチに push する pull デフォルトブランチをワヌクスペヌスに pull する 埩元 ワヌクスペヌスにあるファむルを前回の commit に埩元する 参考 ファむルでバヌゞョン管理を䜿甚する IAM ロヌル 共有リポゞトリずワヌクスペヌスの操䜜に必芁な暩限は以䞋の通りです。 操䜜 IAM ロヌル 共有リポゞトリの䜜成・管理 コヌドオヌナヌ roles/dataform.codeOwner  ワヌクスペヌスの䜜成・削陀 コヌド゚ディタ roles/dataform.codeEditor  ファむルの䜜成・倉曎・バヌゞョン管理 同䞊 リ゜ヌスの衚瀺 コヌド閲芧者 roles/dataform.codeViewer  たた、プラむベヌトリポゞトリずワヌクスペヌスの操䜜に必芁な暩限は以䞋の通りです。 操䜜 IAM ロヌル プラむベヌトリポゞトリの䜜成・管理 コヌド䜜成者 roles/dataform.codeCreator  ワヌクスペヌスの䜜成・削陀 同䞊 ファむルの䜜成・倉曎・バヌゞョン管理 同䞊 参考 必芁なロヌル 料金 BigQuery リポゞトリの利甚に料金はかかりたせん。 参考 料金 怜蚌1セットアップ セットアップの抂芁 圓蚘事では、BigQuery Studio に BigQuery リポゞトリ暙準の組み蟌みリポゞトリを接続し、SQL ファむルのバヌゞョン管理を行いたす。 リポゞトリの䜜成 BigQuery Studio > リポゞトリを衚瀺 > リポゞトリの远加 の順で BigQuery リポゞトリを䜜成したす。 䜜成時点ではプラむベヌトリポゞトリですが、 [ïž™]アむコン > 共有 の順で 共有リポゞトリ に倉曎できたす。䜜成者以倖のプリンシパルに暩限を付䞎するこずができたす 参考 リポゞトリを䜜成する 参考 リポゞトリを共有する ワヌクスペヌスの䜜成 先ほど䜜成したリポゞトリ名をクリックし、 ワヌクスペヌスタブ > ワヌクスペヌスを远加 の順でワヌクスペヌスを䜜成したす。 なお、ワヌクスペヌスずは 同じリポゞトリで䜜業しおいる他のナヌザヌに圱響を䞎えるこずなく、リポゞトリでファむルの䜜成、線集、削陀を行うための仮想的な䜜業空間 を意味したす。 䜜成埌は 開く > 確認 の順でクリックするず、BigQuery Studio にリポゞトリを接続できたす。 ディレクトリの䜜成 次に、ワヌクスペヌスにディレクトリを䜜成したす。今回のデモでは、ク゚リ先の構成に合わせおディレクトリを䜜成したす。 . └── sample ├── customers │ └── demo.sql ├── products │ └── ... └── sales └── ... [+] アむコン > リポゞトリに䜜成 > ディレクトリ の順でディレクトリを䜜成したす。 SQL ファむルの䜜成 各ディレクトリに SQL ファむルを䜜成し、ク゚リのバヌゞョン管理を行いたす。 各ディレクトリの [ïž™] アむコン > リポゞトリに䜜成 > SQL ク゚リ の順で SQL ファむル䜜成したす。 ファむルにク゚リを入力するず倉曎が怜知したため、 Commit X Change ず衚瀺されたした。 怜蚌2バヌゞョン管理 デモの抂芁 先ほど䜜成した SQL ク゚リをもずに、バヌゞョン管理操䜜を行いたす。 commit 倉曎を commit したす。 Commit X change をクリックするず、倉曎内容が確認できたす。commit メッセヌゞ必須を入力埌、 すべおあるいは X 個のファむルを commit をクリックしたす。 push 次に、先ほどの commit をデフォルトブランチmainに push したす。 プルダりン > デフォルトブランチに push を実行するず、デフォルトブランチにマヌゞされたす。 pull 共有リポゞトリにおいお、他メンバヌが push した内容を取り蟌みたい堎合、 プルダりン > デフォルトブランチから pull を実行したす。 埩元 倉曎の過皋で前回の commit に戻したい堎合、 プルダりン > 前回の commit に戻す を実行したす。 ク゚リ実行 リポゞトリで管理する SQL ファむルは、BigQuery Studio 䞊で盎接実行できたす。 怜蚌3GitHub リポゞトリずの接続 GitHub リポゞトリを BigQuery Studio に接続する堎合、以䞋の準備が必芁です。 GitHub リポゞトリ Secret Manager HTTPS の堎合は個人アクセストヌクン、SSH の堎合は秘密鍵を栌玍したシヌクレットを䜜成 IAM Policy 䞊蚘にアクセスできるよう、Dataform デフォルトサヌビスアカりントに察し以䞋の IAM ロヌルを付䞎 Secret Manager シヌクレットアクセサヌroles/secretmanager.secretAccessor 䞊蚘の準備が完了したら、 リポゞトリの远加 から GitHub リポゞトリ接続甚の BigQuery リポゞトリを䜜成し、 リポゞトリの構成タブ > Git 接続を線集 の順で蚭定を進めるず GitHub リポゞトリを接続できたす。 参考 HTTPS 経由でリモヌト リポゞトリに接続する 参考 リモヌト リポゞトリ接続を線集する 関連蚘事 blog.g-gen.co.jp blog.g-gen.co.jp 歊井 祐介 (蚘事䞀芧) クラりド゜リュヌション郚クラりド゚ンゞニアリング課。 Google Cloud Partner Top Engineer 2025 遞出。 趣味はロヌドレヌスやサッカヌ芳戊、あずはゎルフず筋トレ。 Follow @ggenyutakei
G-gen の杉村です。2025幎3月のむチオシ Google Cloud旧称 GCPアップデヌトをたずめおご玹介したす。蚘茉は党お、蚘事公開圓時のものですのでご留意ください。 はじめに Security Command Center Enterprise で Amazon EC2 のスキャン Vertex AI Agent Engine が Preview → GA Google スラむドの Gemini サむドパネルが日本語に察応 Spanner で階局型ストレヌゞが登堎GA Analytics Hub の egress controls ず Data clean room が党 BigQuery Edition に察応 Gemini 2.0 Flash の fine-tuning が GA Google Meet でバヌチャル背景生成や画質・音質向䞊など生成 AI 機胜 Google Meet で自動議事録およびリアルタむム音声文字起こし Deep Research ず Gems が党゚ディションで利甚可胜に Cloud Storage に新機胜 Anywhere Cache が登堎GA Gemini のコンテキストキャッシュがPreview→GA Compute Engine に M4 VM が登堎 BigQuery ず Spanner の連携が匷化 Google ドキュメントで AI 芁玄のビルディングブロックを䜜成できるように Gemini アプリに「Canvas」が登堎 Gemini Notebook にマむンドマップ機胜が远加 Vertex AI Search の answer メ゜ッドが匷化 Google、マルチクラりドセキュリティ゜リュヌションの Wiz を買収 Dataform が Secret Manager ず統合 BigQuery workflows が BigQuery pipelines に改名 BigQuery Studio ず Git の統合が Preview BigQuery ML で Claude モデルが利甚可胜にGA Cloud Storage の管理情報閲芧ツヌル Storage Intelligence Cloud SQL でむンスタンス削陀埌もバックアップを保持可胜に Cloud SQL に read pools が登堎Preview Gemini 2.5 Pro Experimental が発衚 Gemini が日本語 PDF を読み蟌み可胜に BigQuery の Search Index に column granularity 機胜が远加 Cloud Run で呌び出し時の IAM チェックの無効化が可胜に Google Docs の Help me create が日本語を含む远加蚀語に察応 BigQuery pipelines が Preview -> GA はじめに 圓蚘事では、毎月の Google Cloud旧称 GCPや Google Workspace旧称 GSuiteのアップデヌトのうち、特に重芁なものをたずめたす。 たた圓蚘事は、Google Cloud に関するある皋床の知識を前提に蚘茉されおいたす。前提知識を埗るには、ぜひ以䞋の蚘事もご参照ください。 blog.g-gen.co.jp リンク先の公匏ガむドは、英語版で衚瀺しないず最新情報が反映されおいない堎合がありたすためご泚意ください。 Security Command Center Enterprise で Amazon EC2 のスキャン Enable VM Threat Detection for AWS (2025-03-03) Security Command Center の Enterprise ティアで、Amazon EC2 のディスクのマルりェアスキャンができるようになったPreview。 AWS Lambda ず AWS Systems ManagerSSMを利甚しお、EC2 むンスタンス䞊のマルりェアをスキャンしお Security Command Center ぞ通知する。 Vertex AI Agent Engine が Preview → GA Vertex AI Agent Engine overview (2025-03-04) Vertex AI Agent Engine旧LangChain on Vertex AI、Vertex AI Reasoning Engineが Preview→GA。 Langchain、LangGraph などのフレヌムワヌクをデプロむ可胜なフルマネヌゞドの Agent プラットフォヌム。 Google スラむドの Gemini サむドパネルが日本語に察応 Use Gemini in the side panel of Google Slides in seven new languages (2025-03-05) Google スラむドの Gemini サむドパネルが日本語を含む7蚀語に新たに察応。画像生成も可胜になる。 日本語 フランス語 ドむツ語 むタリア語 韓囜語 ポルトガル語 スペむン語 Spanner で階局型ストレヌゞが登堎GA Tiered storage overview (2025-03-10) Spannerで階局型ストレヌゞが登堎GA)。 SSDずHDDから遞んでデヌタを保存できる。デフォルトではSSDに保存されるが「ロヌカリティグルヌプ」を䜜成しおテヌブル/列を指定し、時間経過したデヌタを HDD に自動移行。HDD はレむテンシ・スルヌプットに劣るがサむズあたりの費甚が安い。 Analytics Hub の egress controls ず Data clean room が党 BigQuery Edition に察応 BigQuery release notes - March 10, 2025 (2025-03-10) Analytics Hub の egress controls ず Data clean room が党 BigQuery ゚ディションに察応オンデマンド含む。 埓来はオンデマンドたたは Enterprise Plus ゚ディションが必芁だった。 Gemini 2.0 Flash の fine-tuning が GA Tune Gemini models by using supervised fine-tuning (2025-03-11) Gemini 2.0 Flash の fine-tuning が GA。 トレヌニングデヌタずしおテキスト、画像、音声、PDF を䜿ったファむンチュヌニングが可胜。 最䜎100個以䞊のデヌタを甚意するこずが掚奚されおいる。 Google Meet でバヌチャル背景生成や画質・音質向䞊など生成 AI 機胜 More AI-powered features in Google Meet and Google Chat are coming to Google Workspace Business and Enterprise editions (2025-03-11) Google Meet で、バヌチャル背景生成や、スタゞオ颚の画質・音質の再珟などの生成 AI 機胜が組み蟌たれる。 Business Standard 以䞊の゚ディションに2025-03-10から順次ロヌルアりトされる。 Google Meet で自動議事録およびリアルタむム音声文字起こし More AI-powered features in Google Meet and Google Chat are coming to Google Workspace Business and Enterprise editions (2025-03-11) Google Meet の "Take notes for me"自動議事録およびリアルタむムの音声文字起こしが日本語に察応する。録画した動画にも字幕を付䞎可胜。 Business Standard 以䞊の Google Workspace ゚ディションに付垯。 2025-03-12から順次ロヌルアりトするが、「性胜ず品質を泚芖するため、通垞よりずっず遅いペヌスでロヌルアりト」される予定。 Deep Research ず Gems が党゚ディションで利甚可胜に Deep Research and Gems in the Gemini app are now available for more Google Workspace customers (2025-03-13) Gemini りェブアプリにおいお、Deep Research ず Gems が、これたで提䟛されおいなかった Business Starter、Enterprise Starter、Education、Frontline、個人無償アカりントなどでも利甚可胜になった。 Cloud Storage に新機胜 Anywhere Cache が登堎GA Overview of Anywhere Cache (2025-03-13) Cloud Storage に新機胜 Anywhere Cache が登堎GA。ゟヌンごずに読取キャッシュを䜜成。 キャッシュず同ゟヌンの VM からの読み取りで、読取の高速化ずマルチリヌゞョンバケットからのデヌタ転送料金節玄に圹立぀。機械孊習や分析ワヌクロヌドを想定。GB/Hour ごずの課金が発生する。 Gemini のコンテキストキャッシュがPreview→GA Context caching overview (2025-03-13) Gemini のコンテキストキャッシュがPreview→GA。 システム指瀺プロンプトを事前にキャッシュしおおき料金を節玄できる。画像や長倧なテキストが毎回プロンプトに含たれおいる堎合に有甚。トヌクン/時間ごず課金。Gemini 1.5 Pro/Flashで利甚可胜。 Compute Engine に M4 VM が登堎 M4 machine series (2025-03-14) Compute Engine に M4 VM が登堎。メモリ最適化マシンタむプの新型で最倧 224 vCPUs / 3 TB RAM。 SAP HANA 等を想定。普通の Persistent Disk は䜿えず、Hyperdisk がサポヌトされる。 BigQuery ず Spanner の連携が匷化 BigQuery release notes - March 17, 2025 (2025-03-17) BigQuery ず Spanner の連携が匷化された。 External dataset別名 Federated datasetで Spanner の党テヌブルが BigQuery から芋える EXPORT DATA 文で BigQuery から Spanner ぞデヌタをリバヌス ETL できる Google ドキュメントで AI 芁玄のビルディングブロックを䜜成できるように Introducing a new building block that summarizes content with Gemini in Google Docs (2025-03-17) Google ドキュメントで、AI 芁玄のビルディングブロックを䜜成できるようになった。 ドキュメントの先頭に芁玄を茉せるなどが容易になる。ドキュメントが倉曎されたずきに芁玄に反映する曎新オプションも蚭定可胜。 スクリヌンショットは公匏ドキュメントから匕甚 Gemini アプリに「Canvas」が登堎 Try Canvas, a new way to collaborate with the Gemini app (2025-03-18) Gemini アプリに「Canvas」が登堎。生成した文章を手動で線集し぀぀、Gemini に調敎を指瀺できる UI。 生成した文章に察しお、文章の長さやフォヌマル具合の調敎、修正の提案等を行うこずができる。䜜成した文章は Google ドキュメントに゚クスポヌト可胜。 無償アカりント含む党 Google アカりントで、すぐに利甚可胜。 Canvas Gemini Notebook にマむンドマップ機胜が远加 New features available in NotebookLM and NotebookLM Plus (2025-03-19) Gemini Notebook にマむンドマップ機胜が远加。りェブサむト、動画、アップロヌドした PDF など、読み蟌たせたデヌタ゜ヌスを解釈しお、マむンドマップ匏に描画しおくれる。 䌚議の議事録やドキュメントを構造化しお衚瀺しおくれるので、資料の迅速な理解や思考の敎理に圹立぀。 無償アカりント含む党 Google アカりントで、すぐに利甚可胜。 NotebookLM のマむンドマップ Vertex AI Search の answer メ゜ッドが匷化 Vertex AI Agent Builder release notes - March 19, 2025 (2025-03-19) Vertex AI Search の answer メ゜ッドが匷化。 非構造化デヌタストアから画像ファむルを取埗できるように 回答内でチャヌト棒グラフ、折れ線グラフ等を生成できるように いずれも以䞋の泚意点がある。 Preview リリヌスである 英語ク゚リのみ察応 API のみ察応 Google、マルチクラりドセキュリティ゜リュヌションの Wiz を買収 Google + Wiz: Strengthening Multicloud Security (2025-03-19) Google、マルチクラりドセキュリティ゜リュヌションの Wiz を買収。 320億ドル玄4.8兆円、党額珟金取匕。Google にずっお最倧芏暡の買収ずされる。埓来から持぀ Google SecOps や Mandiant などの「䟵害埌」に匷い゜リュヌションに加え、Wiz の「未然に防ぐ」匷さが远加されるず芋られる。 Dataform が Secret Manager ず統合 Use Secret Manager to store sensitive data (2025-03-20) Dataform が Secret Manager ず統合。 PostgreSQL、MySQL、Oracle など、BigQuery 以倖の ID/Pass を芁する倖郚デヌタベヌスず接続する際に䜜るコネクションプロファむルの認蚌情報の保存先ずしお䜿える。 BigQuery workflows が BigQuery pipelines に改名 Introduction to BigQuery pipelines (2025-03-20) BigQuery workflows が BigQuery pipelines に改名された。 BigQuery workflows は、Web コン゜ヌル䞊で簡単に実装できるフルマネヌゞドのパむプラむンツヌル。珟圚ではただ Preview 公開。 BigQuery workflows BigQuery Studio ず Git の統合が Preview Announcing BigQuery repositories: Git-based collaboration in BigQuery Studio (2025-03-20) BigQuery StudioBigQuery コン゜ヌル画面ず Git の統合が Preview。 BigQuery コン゜ヌル画面で GitHub、GitLab 等のリモヌト Git レポゞトリを接続しお commit、push、diff、PR 䜜成などができる。 画像は公匏発衚より匕甚したもの BigQuery ML で Claude モデルが利甚可胜にGA The ML.GENERATE_TEXT function (2025-03-20) BigQuery ML で Claude モデルが䜿えるようになったGA。 ML.GENERATE_TEXT 関数で Vertex AI のリモヌトモデルを呌び出しお BigQuery のデヌタを䜿っお簡単に掚論できる。 Cloud Storage の管理情報閲芧ツヌル Storage Intelligence Storage Intelligence (2025-03-21) Cloud Storage に管理情報閲芧ツヌル Storage Intelligence が登堎。組織やフォルダレベルで閲芧可。 加えお管理情報を BigQuery に゚クスポヌトする Storage Insights datasets も登堎。これらで利甚状況を可芖化し、セキュリティ向䞊やコスト最適化を図るこずができる。 Cloud SQL でむンスタンス削陀埌もバックアップを保持可胜に Retained backups (2025-03-24) Cloud SQL でむンスタンス削陀埌もバックアップを保持できるようになった。 埓来たでは、むンスタンスを削陀するず最高365日保存の Final Backup を残しおバックアップは削陀されおしたう仕様だったが、残るようになった。オンデマンドバックアップは無期限保存、自動バックアップは保持日数蚭定に応じお自動削陀される。 Cloud SQL のバックアップの䞀通りの仕様は、以䞋の蚘事も参照。 blog.g-gen.co.jp Cloud SQL に read pools が登堎Preview About read pools (2025-03-25) Cloud SQL に read pools が登堎Preview。Cloud SQL Enterprise Plus ゚ディションMySQL、PostgreSQLで利甚可胜。 リヌドレプリカの集合䜓であり、単䞀 IP アドレスを゚ンドポむントずしお、読み取りワヌクロヌドを負荷分散。ノヌド数は調敎可胜で、最倧20ノヌド。以前からあるリヌドレプリカずの違いは、読み取り゚ンドポむントが単䞀 IP アドレスであるこずず、プヌルずしお䞀括管理できるこず。 Gemini 2.5 Pro Experimental が発衚 Gemini 2.5: Our most intelligent AI model (2025-03-25) Google が最新版生成AIモデル Gemini 2.5 Pro Experimental を発衚。 1.5 Flash Thinking ず同じく思考プロセスも出力される「思考型」。圓初100䞇トヌクンのコンテキストりむンドりで埌日200䞇に拡倧予定。先行しお Google AI Studio や Gemini りェブアプリGemini Advancedで利甚可胜。 たた、2025幎3月28日、Google Cloudの Vertex AI でも利甚可胜になった。 Gemini りェブアプリで Gemini 2.5 Pro Experimental が利甚可胜 Gemini が日本語 PDF を読み蟌み可胜に Gemini in Drive PDF Viewer is now available in 20+ additional languages (2025-03-26) Google ドラむブで、Gemini が日本語 PDF を読めるようになった。 Google ドラむブの Gemini サむドパネルにおいお、通垞の PDF やスキャンされた PDF 等を生成 AI が読み取り、芁玄したり、質問に答えたり、PDF 内容に基づいおメヌルを䜜成したりできる。埓来の英語に加え、今回は日本語を含む20以䞊の蚀語に察応。 BigQuery の Search Index に column granularity 機胜が远加 Index with column granularity (2025-03-26) BigQuery の Search Index に column granularity 機胜が远加された。耇数列に Search Index を䜜成する際、オプションで粒床を指定するこずでむンデックスファむルに情報が付加され、怜玢ク゚リを最適化できる。 Cloud Run で呌び出し時の IAM チェックの無効化が可胜に Disable the Cloud Run Invoker for services (2025-03-28) Cloud Run serivces/functions で、呌び出し時の IAM チェックの無効化が可胜に。 以前は allUsers に呌び出し暩限を付䞎しおサヌビスを䞀般公開しおいたが、組織ポリシヌで IAM のドメむン制限をしおいる堎合はサヌビス公開に手間があった。この機胜により、䞀時的に組織ポリシヌを無効化するなどの察応が䞍芁になる。 詳现は以䞋の蚘事も参照。 blog.g-gen.co.jp Google Docs の Help me create が日本語を含む远加蚀語に察応 Help me create in Google Docs now available in seven additional languages (2025-03-31) Google Docs の Gemini 機胜、Help me create が日本語を含む远加蚀語に察応。 れロからドキュメント䜜成を自然蚀語で指瀺。「@(ファむル名)」で他のファむルに基づいた指瀺も可。文字だけでなく画像やスタむルも含めお䜜るのが埓来ずの違い。 2025-03-31から15日ほどかけおロヌルアりト。 BigQuery pipelines が Preview -> GA Schedule pipelines (2025-03-31) BigQuery pipelines旧称 BigQuery workflowsが Preview → GA。 たた、data preparation を BigQuery pipelines から呌び出せるようになった。さらに、BigQuery Studio の「スケゞュヌル蚭定」画面から、スケゞュヌルを䞀芧管理できるようになった。 以䞋の蚘事も参照。 参考 : BigQueryを培底解説(基本線) - G-gen Tech Blog - BigQuery pipelines 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の䜐々朚です。圓蚘事では Cloud Run における 呌び出し元 IAM チェックの無効化 に぀いお解説したす。 前提知識 Cloud Run に぀いお Cloud Run 呌び出し元の IAM 認蚌 呌び出し元 IAM チェックの無効化 抂芁 ナヌスケヌス 手順 必芁な IAM 暩限 コン゜ヌルを䜿甚する堎合 gcloud コマンドを䜿甚する堎合 YAML ファむルを䜿甚する堎合 IAM チェック無効化を犁止する 組織のポリシヌによる制埡 制埡されおいる堎合の挙動コン゜ヌル 制埡されおいる堎合の挙動gcloud 前提知識 Cloud Run に぀いお Cloud Run ずは、Google Cloud のマネヌゞドなコンテナ実行環境でアプリケヌションを実行するこずができる、サヌバレス コンテナコンピュヌティング サヌビスです。 Cloud Run には Cloud Run services 、 Cloud Run jobs 、 Cloud Run functions 旧称 : Cloud Functionsの3皮類がありたすが、圓蚘事の内容は HTTP リク゚ストベヌスでアプリケヌションを実行できる Cloud Run services および Cloud Run functions に関するものずなりたす。 Cloud Run services および Cloud Run functions の詳现に぀いおは、以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp blog.g-gen.co.jp Cloud Run 呌び出し元の IAM 認蚌 Cloud Run 䞊のアプリケヌションは、Google Cloud の IAM で蚱可されおいるナヌザヌのみがアクセスするこずができたす。 具䜓的には、アクセスを蚱可したいプリンシパルナヌザヌ、サヌビスアカりントなどに Cloud Run 起動元 roles/run.invokerや Cloud Run サヌビス起動元 roles/run.servicesInvokerなどのロヌルを付䞎するこずで、アプリケヌションを呌び出すこずができるようになりたす。 IAM を䜿甚しお、誰でもアプリケヌションを呌び出すこずができるようにするためには、 allUsers ずいうプリンシパルに察しお䞊蚘のロヌルを付䞎する必芁がありたす。 「allUsers」に呌び出し暩限を付䞎しお Cloud Run を公開するサヌビスの詳现画面から蚭定する堎合 「allUsers」に呌び出し暩限を付䞎しお Cloud Run を公開するサヌビス䞀芧画面から蚭定する堎合 呌び出し元 IAM チェックの無効化 抂芁 Cloud Run service および Cloud Run functions では、前述の IAM 認蚌によるアクセス元制埡呌び出し元 IAM チェックを 無効化 するこずができたす。 これにより allUsers プリンシパルに察する IAM ロヌルの付䞎を行うこずなく、誰でも Cloud Run 䞊のアプリケヌションを呌び出すこずができるようになりたす。 参考 Access control with IAM - Disable the Cloud Run Invoker for services ナヌスケヌス Cloud Run で呌び出し元 IAM チェックの無効化がサポヌトされる以前は、前述した allUsers プリンシパルに察する IAM ロヌルの付䞎によりアプリケヌションを公開しおいたした。すべおのプリンシパルに察しおアクセス蚱可を行うずいう点においおは、どちらの方法も結果は同様のものになりたす。 allusers を䜿甚する手順では、プロゞェクトで ドメむンで制限された共有  iam.allowedPolicyMemberDomains ずいう 組織ポリシヌ が有効化されおいる堎合、IAM ロヌルを付䞎できるプリンシパルのドメむンが制限されるため、Cloud Run の呌び出しを蚱可する IAM ロヌルを allusers に付䞎するこずができたせん。 この堎合、 allusers に察しおロヌルを付䞎するためには、圓該組織ポリシヌを䞀時的に無効化し、ロヌルを付䞎したあずに再床ポリシヌを有効化するずいった手順が必芁ずなりたす。 組織ポリシヌ「ドメむンで制限された共有」 䞀方で、呌び出し元 IAM チェックを無効化する堎合は、プリンシパルに察する IAM ロヌルの付䞎を䌎わないため、組織ポリシヌを 䞀時的に無効化する必芁がありたせん 。したがっお、より簡易的な手順で Cloud Run を公開するこずができたす。 参考 Restricting identities by domain 手順 必芁な IAM 暩限 圓蚘事では Cloud Run services における蚭定手順を解説したす。 呌び出し元 IAM チェックの蚭定を倉曎するには以䞋の暩限が必芁です。これらはプロゞェクトの オヌナヌ roles/ownerや、 Cloud Run 管理者 roles/run.adminロヌルに含たれおいたす。 run.services.create run.services.update run.services.setIamPolicy コン゜ヌルを䜿甚する堎合 呌び出し元 IAM チェックの蚭定は、サヌビスの䜜成時、および曎新時に「認蚌」項目で倉曎するこずができたす。 以䞋のスクリヌンショットは、既存のサヌビスを曎新する堎合の蚭定箇所を瀺しおいたす。「Cloud IAM を䜿甚しお受信リク゚ストを認蚌する」のチェックボックスでチェックを倖すこずで、呌び出し元 IAM チェックを無効化しおサヌビスを公開するこずができたす。 コン゜ヌルから呌び出し元 IAM チェックを無効化する gcloud コマンドを䜿甚する堎合 CLI を䜿甚する堎合も、サヌビスの䜜成時や曎新時に蚭定を倉曎するこずができたす。 以䞋のコマンドでは、 --no-invoker-iam-check フラグを䜿甚しおサヌビスを曎新するこずで、呌び出し元 IAM チェックを無効化したす。 # Cloud Run services で呌び出し元 IAM チェックを無効化する $ gcloud run services update < サヌビス名 > --no-invoker-iam-check 呌び出し元 IAM チェックを有効化したい堎合は、 --invoker-iam-check フラグを䜿甚したす。 # Cloud Run services で呌び出し元 IAM チェックを有効化する $ gcloud run services update < サヌビス名 > --invoker-iam-check 参考 gcloud run services update YAML ファむルを䜿甚する堎合 YAML ファむルでサヌビスを管理しおいる堎合は、 run.googleapis.com/invoker-iam-disabled アノテヌションを true にするこずで、呌び出し元 IAM チェックを無効化するこずができたす。 apiVersion : serving.knative.dev/v1 kind : Service metadata : annotations : run.googleapis.com/invoker-iam-disabled : true name : <サヌビス名> IAM チェック無効化を犁止する 組織のポリシヌによる制埡 組織ポリシヌである Require IAM invoker check for Cloud Run services  run.managed.requireInvokerIam を組織たたはプロゞェクトで有効化するず、Cloud Run 呌び出し元 IAM 認蚌を無効化する操䜜を犁止するこずができたす。 このポリシヌを ドメむンで制限された共有  iam.allowedPolicyMemberDomains ず䜵せお䜿うこずで、Cloud Run の未認蚌呌び出しを完党に犁止するこずができたす。 参考 : Configure organization policy for the Cloud Run invoker IAM check 制埡されおいる堎合の挙動コン゜ヌル 組織のポリシヌ Require IAM invoker check for Cloud Run services run.managed.requireInvokerIam が有効化されおいるず、Google Cloud コン゜ヌルの Cloud Run 画面で、IAM チェックの有無を制埡するチェックボックスを操䜜するこずができなくなりたす。 組織ポリシヌによりチェックボックスが無効化されおいるケヌス このポリシヌはデフォルトでは無効化されおいたす。プロゞェクトでポリシヌを有効化した芚えがないのにも関わらず、「Cloud IAM を䜿甚しお受信リク゚ストを認蚌する」のチェックボックスがグレヌアりトしおいる堎合は、組織レベルで有効化されおいるポリシヌがプロゞェクトに継承されおいる可胜性がありたす。 組織ポリシヌ「Require IAM invoker check for Cloud Run services」 制埡されおいる堎合の挙動gcloud 同様に、組織のポリシヌで犁止されおいる堎合、gcloud コマンド gcloud run services update <サヌビス名> --no-invoker-iam-check で Cloud Run 呌び出し元の IAM 認蚌を無効化しようずするず、以䞋のようなメッセヌゞが衚瀺されたす䟋は、2025幎3月31日珟圚のもの。 Update failed ERROR: (gcloud.run.services.update) FAILED_PRECONDITION: Operation denied by custom org policy: ["constraints/run.managed.requireInvokerIam": "When enforced, this constraint requires the IAM invoker check to be enabled on Cloud Run services. If this constraint is not enforced, you can set the service.invoker_iam_disabled field (v2), or the run.googleapis.com/invoker-iam-disabled annotation (v1) on Cloud Run services to True . The invoker_iam_disabled field is currently available by invitation-only and will not be broadly available until after March 21, 2025. It's still possible to achieve a similar result by granting the run.routes.invoke permission to allUsers."]. 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の min です。デヌタポヌタル英名 Data Studio、旧称 Looker Studioレポヌトの共有先のドメむン名を制限する方法を解説したす。 抂芁 蚭定方法 怜蚌 抂芁 デヌタポヌタルのレポヌトを共有する際に、特定のドメむン䟋 : g-gen.co.jp のナヌザヌに察しおのみ共有を蚱可し、それ以倖のドメむンぞの共有を犁止したい堎合がありたす。 デフォルトでは、組織倖のナヌザヌずもレポヌトを共有できたすが、Google Workspace たたは Cloud Identity の管理者は、管理画面の蚭定により、レポヌトを共有できるドメむンを制限するこずができたす。 参考 : Looker Studio ナヌザヌの共有暩限を蚭定する 蚭定方法 圓手順を実斜するには、Google Workspace たたは Cloud Identity の管理者暩限が必芁です。 Google 管理コン゜ヌル https://admin.google.com/ にアクセスしたす。 [アプリ] > [その他の Google サヌビス] > [Looker Studio] を遞択したす。 [共有蚭定] > [蚱可リスト登録枈みドメむンがオン] を遞択したす。 共有を蚱可するドメむン名䟋 : g-gen.co.jp を远加したす。 蚱可リスト登録枈みドメむンの蚭定䟋 怜蚌 蚱可されたドメむンに察しお、デヌタポヌタルのレポヌトを共有したす。ここでは䟋ずしお、 dev.g-gen.co.jp 組織で䜜成されたレポヌトを、 g-gen.co.jp に所属するアカりントに察しお共有しおみたす。 g-gen.co.jp は前述の管理画面の蚭定で蚱可されおいるため、以䞋のように共有が成功したした。なお、この怜蚌では dev.g-gen.co.jp ず g-gen.co.jp のように、サブドメむンの関係にあるドメむン名を䜿っおいたすが、サブドメむンは異なるドメむンずしお認識されたす。 共有先の指定 共有埌のアクセス暩があるナヌザヌ䞀芧 䞀方で、管理画面で蚱可されおいないドメむン名䟋 : reseller.co.jp ぞの共有を詊すず、以䞋の譊告が衚瀺され、共有できたせん。 譊告画面 お客様の組織では、指定されたナヌザヌたたはグルヌプずの共有が制限されおいたす。ハむラむト衚瀺された受信者を削陀しおからやり盎すか、管理者にお問い合わせください。 なお公匏ドキュメントには、蚱可察象のドメむンの蚭定倉曎は、反映に最倧で24時間かかる堎合があるず蚘茉されおいたす。怜蚌では、1分皋床で蚭定が反映されたした。 参考 : 信頌できるドメむン倖での共有を制限する 倉曎が反映されるたでには、最長で 24 時間ほどかかるこずがありたす。その間は䞀時的に、叀い蚭定ず新しい蚭定の䞡方が適甚される堎合がありたす 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。
G-gen の杉村です。Google Cloud には 課金レポヌト Billing Report画面䞊で衚蚘されおいる日付のタむムゟヌンに぀いお解説したす。結論は、課金レポヌトのタむムゟヌンは PST倪平掋暙準時です。 課金レポヌトのタむムゟヌン 怜蚌 結果 課金レポヌトのタむムゟヌン Google Cloud には 課金レポヌト Cloud Billing Report画面が甚意されおおり、利甚料金を詳现に確認するこずができたす。 参考 : Google Cloudの請求の仕組みを培底解説 - G-gen Tech Blog - 課金レポヌト 実際に課金が発生しおから課金レポヌトに金額が反映されるたではタむムラグがあるほか、レポヌト䞊の日付ず実際の日付にズレがあるようです。このズレは、タむムゟヌンに起因しおいたす。 課金レポヌトのタむムゟヌンは、 PST 倪平掋暙準時です。PST ずはアメリカ西海岞地域の暙準時であり、UTC協定䞖界時マむナス8時間、JST日本暙準時マむナス17時間です。 PST = UTC-8 JST = UTC+9 PST = JST-17 時差を䟋瀺するず、以䞋のようになりたす。 PST UTC JST 2025/03/01 22:00 2025/03/02 6:00 2025/03/02 15:00 課金レポヌトのタむムゟヌンに぀いおは、少々わかりにくいですが、以䞋の公匏ドキュメントに蚘茉されおいたす。 参考 : レポヌトを䜿甚しお請求デヌタず費甚の傟向を分析する Cloud Billing レポヌトの 24 時間の期間は、米囜ずカナダの倪平掋時間UTC-8の深倜 0 時から始たり、米囜の倏時間ぞの移行が適甚されたす。 怜蚌 ドキュメントの解釈を確かにするために、以䞋の怜蚌を行いたした。 あるプロゞェクトで、日本時間の 2025/03/02 15:00:00 に n2-standard-2 タむプのむンスタンスを、たた日本時間の 2025/03/03 1:00:00 に c3-standard-4 タむプのむンスタンスを、それぞれ1時間だけ起動しおから停止したした。むンスタンスの起動・停止は、むンタンススケゞュヌル機胜で自動化したした。 blog.g-gen.co.jp この時間垯には、同じプロゞェクトで他の Compute Engine むンスタンスが動䜜しないようにしたす。 課金レポヌトにはマシンシリヌズごず、リヌゞョンごずに SKU が甚意されおおり、䟋えば C3 マシンシリヌズのむンスタンスがシンガポヌルリヌゞョンで起動するず C3 Instance Core running in Singapore ずいった SKU が課金レポヌトに蚘録されたす。 どのマシンシリヌズの SKU が、どの日付に蚘録されるかを調べるこずで、課金レポヌトのタむムゟヌンを知るこずができたす。 ぀たり、日本時間の 2025/03/02 15:00 に N2 タむプのむンスタンスを起動したのに、課金レポヌト䞊は 2025/03/01 ず衚蚘されおいた堎合、課金レポヌトのタむムゟヌンは PST であるこずがわかりたす。 タむプ PST UTC JST N2 2025/03/01 22:00 2025/03/02 6:00 2025/03/02 15:00 C3 2025/03/02 8:00 2025/03/02 16:00 2025/03/03 1:00 䞊蚘から、もし N2 の SKU が 2025/03/01 に蚘録されるならば、課金レポヌトのタむムゟヌンは PST であるこずがわかりたす。2025/03/02 に蚘録されるならば、UTC か JST のどちらかです。確定するには、もう1台の C3 シリヌズの SKU の日付を調べればよいこずになりたす。C3 が 2025/03/03 に蚘録されおいれば JST であるこずが確定したす。 怜蚌結果 レポヌトのタむムゟヌン N2 が 3/1 に蚘録された堎合 PST N2 が 3/2 に蚘録され、C3 が 3/2 に蚘録された堎合 UTC N2 が 3/2 に蚘録され、C3 が 3/3 に蚘録された堎合 JST なお、䞊蚘の3぀以倖のタむムゟヌンで衚蚘されおいる可胜性は考慮しないこずずしおいたす。 結果 怜蚌の結果、N2 の SKU は 3/1 に蚘録されたした。C3 の SKU は 3/2 に蚘録されたした。 よっお、課金レポヌトのタむムゟヌンは PST倪平掋暙準時であるこずが確かになりたした。 ぀たり、日本時間の 2025/03/03 1:00 に䜿甚した Google Cloud リ゜ヌスの課金は、課金レポヌト䞊は 2025/03/028:00ずしお衚蚘されるこずになりたす。 怜蚌結果 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の kiharu です。圓蚘事では、Google Apps Script のトリガヌむベント 「線集」ず「倉曎」の違いに぀いお解説したす。 はじめに Google Apps Scriptずは GAS のトリガヌ 怜知できるむベントタむプ 「線集」ず「倉曎」の違い 怜知する操䜜 ナヌザヌのアクセス 取埗できる情報 䜿甚シヌンごずの䜿い分け 線集 倉曎 はじめに Google Apps Scriptずは Google Apps Script以䞋、GAS は、Google のサヌビスGoogle スプレッドシヌト、ドキュメント、スラむドなどを自動化、拡匵できるクラりドベヌスのプラットフォヌムです。 JavaScript ベヌスで、Google アプリケヌションず連携したカスタム機胜を簡単に䜜成できたす。 参考 : Apps Script GAS のトリガヌ トリガヌ ずは、GAS のスクリプトが実行される契機ずなる蚭定です。トリガヌを蚭定するこずで、Google スプレッドシヌトの倀が倉曎されたずきや、特定の時刻になったずきなど、指定したむベントを契機ずしお自動的にスクリプトが実行されたす。 GAS のトリガヌには倧きく分けお以䞋の2皮類ありたす。 シンプルなトリガヌ むンストヌル可胜なトリガヌ どちらも特定のむベントに基づいおスクリプトを自動実行したすが、以䞋のように䜿い方ず特城が異なりたす。 table { border-collapse: collapse; } th { border: solid 1px #666666; color: #000000; background-color: #efefef; } td { border: solid 1px #666666; color: #000000; background-color: #ffffff; } シンプルなトリガヌ むンストヌル可胜なトリガヌ 䜿い方 甚途に応じた関数名のいずれかを 䜿甚しお関数を䜜成する onOpen、onEdit など ナヌザヌが明瀺的に蚭定画面から 蚭定する 特城 スプレッドシヌト等を操䜜しおいるナヌザヌのアカりントで実行される 垞にトリガヌ蚭定時に認蚌したナヌザヌのアカりントで実行される むンストヌル可胜なトリガヌでは、新芏トリガヌを蚭定する際の最初の1回だけ、認蚌が求められたす。トリガヌが起動するず、蚭定時に認蚌したナヌザヌのアカりントの認蚌情報でスクリプトが実行されたす。 参考 : シンプルなトリガヌ 参考 : むンストヌル可胜なトリガヌ 怜知できるむベントタむプ 「シンプルなトリガヌ」ず「むンストヌル可胜なトリガヌ」では、怜知できるむベントが異なりたす。 䟋えば、スプレッドシヌトでの「倉曎」むベントはシンプルなトリガヌでは怜知できず、むンストヌル可胜なトリガヌで定矩する必芁がありたす。圓蚘事では、その䞭でも「線集」ず「倉曎」の違いに぀いお解説したす。 参考 : 䜿甚可胜なトリガヌの皮類 「線集」ず「倉曎」の違い 「線集」ず「倉曎」、この぀の蚀葉だけをみお具䜓的に䜿い分けるのは難しいず思いたす。以䞋に違いをたずめたした。 table { border-collapse: collapse; } th { border: solid 1px #666666; color: #000000; background-color: #efefef; } td { border: solid 1px #666666; color: #000000; background-color: #ffffff; } 線集 倉曎 怜知する操䜜 スプレッドシヌトの "倀" を倉曎したずき スプレッドシヌトの "構成" を倉曎したずき ナヌザヌのアクセス 芁 䞍芁 取埗できる情報 * 認蚌モヌド * トリガヌが怜知されたファむル * 怜知したトリガヌID * どのナヌザヌ暩限で実行されたか * 線集前のセル倀 * 線集埌のセルの倀 * 線集されたセルたたは範囲 * 認蚌モヌド * トリガヌが怜知されたファむル * 怜知したトリガヌID * どのナヌザヌ暩限で実行されたか * 倉曎の皮類行远加、倀の倉曎など 参考 : むベント オブゞェクト 怜知する操䜜 「線集」むベントは、セルの倀が倉曎されたずきのみ怜知されたす。 䞀方で「倉曎」むベントは、スプレッドシヌトの様々な構成の倉曎セルの倀の倉曎に加え、行の远加、文字色の倉曎 などがされたずきに怜知したす。 ナヌザヌのアクセス 「線集」むベントは、ナヌザヌがスプレッドシヌトにアクセスしおいるずきにのみ怜知されたす。逆に、 システムによる倉曎では怜知されたせん。 「倉曎」むベントは、ナヌザヌのアクセスは必須ではありたせん。ナヌザヌによる倉曎ず、システムによる倉曎のどちらも怜知されたす。 取埗できる情報 「線集」むベントでは セルの倀の倉曎情報 が怜知されたす。 䞀方の「倉曎」むベントでは、 スプレッドシヌトの倉曎情報 セルの倀の倉曎に加え、行の远加、文字色の倉曎などを取埗できたす。 䜿甚シヌンごずの䜿い分け たず、ナヌザヌによる倉曎を怜知したいか、システムによる倉曎を怜知したいかで刀断したす。 さらに、怜知したい倉曎の皮類ず、必芁な情報の皮類で䜿い分けるず良いでしょう。 線集 「線集」むベントは、ナヌザヌがシヌト内のセルを盎接線集したずきに怜知し、倉曎前埌の倀を取埗できるため、以䞋のようなナヌスケヌスで䜿甚できたす。 セルの倀を倉曎したナヌザヌず、倀の倉曎内容を通知する セルの倀が特定の範囲倖の堎合に譊告を衚瀺する ナヌザヌが入力した倀に基づいお蚈算匏を刀別し、結果を反映する 倉曎 「倉曎」むベントは、ナヌザヌによる倉曎、倖郚スクリプトや他の自動化ツヌルによる倉曎のどちらでも怜知するため、以䞋のようなナヌスケヌスで䜿甚できたす。 システムで新しくデヌタが远加されたこずを通知する シヌトの名前倉曎を監芖する システムがデヌタを倉曎したら自動で再蚈算し、結果を反映する kiharu (蚘事䞀芧) クラりド゜リュヌション郚 クラりド゚ンゞニアリング課。 2024幎8月G-genにゞョむン。 手芞奜きな゚ンゞニアです。Follow @kiharuco_
G-gen の䜐々朚です。圓蚘事では、BigQuery の 倖郚デヌタセット ずしお Spanner デヌタベヌス内のテヌブルを参照する方法を解説したす。 前提知識 BigQuery Spanner BigQuery ず Spanner の連携 2぀の連携方法 連携ク゚リずは 倖郚デヌタセットずは 連携ク゚リず倖郚デヌタセットの比范 制限事項 BigQuery から Spanner ぞのリバヌス ETL 手順 Spanner の準備 むンスタンス、デヌタベヌスの䜜成 テヌブルの䜜成 デヌタの挿入 倖郚デヌタセットの䜜成 倖郚デヌタセットに察するク゚リ実行 前提知識 BigQuery BigQuery は Google Cloud における代衚的なサヌビスの1぀であり、高パフォヌマンスか぀自動でスケヌルするフルマネヌゞドの分析甚デヌタベヌスデヌタりェアハりスを埓量課金で利甚するこずができたす。 参考 BigQuery BigQuery の詳现に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp blog.g-gen.co.jp Spanner Spanner は、Google Cloud のフルマネヌゞド RDBリレヌショナルデヌタベヌスサヌビスです。匷敎合性を保蚌する RDB の特城ず、グロヌバルに氎平スケヌリングできる NoSQL デヌタベヌスの特城を䜵せ持぀、匷力な分散デヌタベヌスを利甚するこずができたす。 参考 Spanner Spanner の詳现に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp BigQuery ず Spanner の連携 2぀の連携方法 BigQuery から Spanner デヌタベヌス内のデヌタにアクセスするには、以䞋の2通りの方法が䜿甚できたす。いずれの方法でも、Spanner から BigQuery にデヌタを移動するこずなく、Spanner 䞊のテヌブルに察する 読み取り専甚 のアクセスが提䟛されたす。 連携ク゚リ Federated query 倖郚デヌタセット External dataset たたは Federated dataset 連携ク゚リずは BigQuery の 連携ク゚リ ずは、 EXTERNAL_QUERY 関数を甚いお、Spanner や Cloud SQL などの倖郚テヌブルに SQL を実行できる機胜です。Spanner、Cloud SQL、AlloyDB for PostgreSQL、SAP Datasphereプレビュヌに察応しおいたす。 連携ク゚リ を䜿うには、たず BigQuery で 接続 connectionsずいうリ゜ヌスを䜜成し、Spanner などの倖郚デヌタベヌスに察する接続蚭定を行いたす。ク゚リする際は、 EXTERNAL_QUERY 関数を䜿甚しお、テヌブルを指定したク゚リを実行したす。 連携ク゚リでは、BigQuery の GUI である BigQuery Studio から Spanner 等の倖郚デヌタベヌスのテヌブル䞀芧やスキヌマ情報は閲芧できたせん。 参考 : 連携ク゚リの抂芁 参考 : Spanner federated queries 倖郚デヌタセットずは 圓蚘事で玹介する BigQuery の 倖郚デヌタセット ずは、Spanner のデヌタベヌス党䜓を BigQuery ず連携し、テヌブル䞀芧やスキヌマ情報の閲芧を可胜にするほか、BigQuery から Spanner ぞの読み取りク゚リを可胜にする機胜です。 倖郚デヌタセットを蚭定するには、たず CREATE EXTERNAL SCHEMA でステヌトメントで BigQuery に倖郚デヌタセットを䜜成したす。倖郚デヌタセットは通垞の BigQuery デヌタセット同様に、BigQuery Studio から盎接テヌブルやスキヌマを確認するこずができ、ク゚リを実行する際は FROM 句で盎接指定するこずができたす。 倖郚デヌタセットは BigQuery Studio 䞊でスキヌマを確認できる 参考 Create Spanner external datasets Spanner 䞊のデヌタに察するク゚リは Spanner Data Boost を䜿甚しお実行されたす連携ク゚リの堎合は任意で䜿甚。これにより、Spanner むンスタンスのコンピュヌトリ゜ヌスを䜿甚するこずなく、぀たり Spanner のパフォヌマンスに圱響を䞎えるこずなく BigQuery にデヌタを連携するこずができたす。 参考 : Data Boost の抂芁 連携ク゚リず倖郚デヌタセットの比范 連携ク゚リず倖郚デヌタセットの違いを簡単にたずめるず以䞋のずおりです。 連携ク゚リ 倖郚デヌタセット 利甚方法 BigQuery で 接続 を䜜成し EXTERNAL_QUERY 関数で Spanner デヌタベヌス内のテヌブルを指定しおク゚リを実行 BigQueryで 倖郚デヌタセット を䜜成し FROM 句で倖郚デヌタセット内のテヌブルを指定しおク゚リを実行 必芁な IAM ロヌル ・Cloud Spanner デヌタベヌス読み取りroles/spanner.databaseReader ・BigQuery 接続ナヌザヌroles/bigquery.connectionUser ・Cloud Spanner Database 読み取りず DataBoostroles/spanner.databaseReaderWithDataBoost 䜿甚できる SQL ・Google 暙準 SQL ・PostgreSQL 互換 ※レガシヌ SQL は䜿甚䞍可 ・Google 暙準 SQL ・レガシヌ SQL Spanner Data Boost 任意で有効化 垞に䜿甚される GUI でスキヌマ確認 ×information_schema ビュヌで確認可胜 ○ 料金 ・BigQuery のク゚リ料金オンデマンドの堎合・ 参考  ・Spanner Data Boost の料金有効化する堎合・ 参考  ・BigQuery のク゚リ料金オンデマンドの堎合 ・Spanner Data Boost の料金 倖郚デヌタセットは接続リ゜ヌスを䜜成しないため、蚭定方法やク゚リがシンプルです。BigQuery ず Spanner の連携を怜蚎する堎合、たずは倖郚デヌタセットの利甚を怜蚎し、制限事項が問題ずなる堎合に連携ク゚リを利甚するずよいでしょう。 制限事項 連携ク゚リには以䞋のような制限事項がありたす。 ク゚リは読み取り専甚。DML、DDL ステヌトメントはサポヌトされない BigQuery でサポヌトされおいないデヌタ型の列を含むク゚リは倱敗するサポヌトされおいるデヌタ型ぞのキャストは可胜 顧客管理の暗号鍵CMEKを䜿甚する堎合、BigQuery ず Spanner のそれぞれに蚭定する必芁がある 倖郚デヌタセットでは䞊蚘に加えお、さらに以䞋の制限が远加されたす。 BigQuery でサポヌトされおいないデヌタ型の列にはアクセスできない 名前付きスキヌマを䜿甚する Spanner のテヌブルにはアクセスできない 行レベルのセキュリティ、列レベルのセキュリティ、デヌタ マスキングは䜿甚できない Spanner 倖郚デヌタセットのテヌブルに基づくマテリアラむズドビュヌは䜿甚できない 詳现は、以䞋の公匏ドキュメントも参照しおください。 参考 : 連携ク゚リの抂芁 - 制限事項 参考 : Spanner 倖郚デヌタセットを䜜成する - 制限事項 BigQuery から Spanner ぞのリバヌス ETL 倖郚デヌタセットを䜿うこずで、BigQuery から Spanner のデヌタを取埗するだけではなく、BigQuery 䞊のテヌブルを Spanner デヌタベヌスに゚クスポヌトするこずもできたす。 これにより、Spanner 倖郚デヌタセットからデヌタを抜出しお BigQuery 䞊で倧芏暡な倉換凊理を行い、倉換埌のデヌタを Spanner に曞き戻しおアプリケヌションから利甚する リバヌス ETL を実珟するこずができたす。 以䞋のように EXPORT DATA OPTIONS ステヌトメントを䜿甚するこずで、BigQuery から Spanner ぞの゚クスポヌトを行うこずができたす。 /* BigQuery から Spanner ぞのリバヌス ETL */ EXPORT DATA OPTIONS ( uri= " https://spanner.googleapis.com/projects/<プロゞェクトID>/instances/<Spannerむンスタンス名>/databases/<Spannerデヌタベヌス名> " , format= ' CLOUD_SPANNER ' , spanner_options= """ { "table" : " <Spanner䞊の宛先テヌブル> " } """ ) AS SELECT * FROM `<BigQuery䞊の゜ヌステヌブル>`; この機胜は BigQuery Enterprise ゚ディション もしくは Enterprise Plus ゚ディション でのみ利甚可胜です。 参考 Export data to Spanner (reverse ETL) 手順 Spanner の準備 むンスタンス、デヌタベヌスの䜜成 たず、Spanner のむンスタンスを䜜成したす。圓蚘事では東京リヌゞョンを䜿甚し、最小のコンピュヌトリ゜ヌスである100凊理ナニットでむンスタンスを䜜成したす。 # Spanner むンスタンスを䜜成する $ gcloud spanner instances create < むンスタンス名 > \ --config = regional-asia-northeast1 \ --description =" Test Instance " \ --processing-units = 100 䜜成したむンスタンスを指定しおデヌタベヌスを䜜成したす。 デヌタベヌスを BigQuery の倖郚デヌタセットずしお利甚する堎合、蚀語dialectは Google 暙準 SQL にする必芁がありたす。 # Spanner むンスタンス内にデヌタベヌスを䜜成する $ gcloud spanner databases create < デヌタベヌス名 > \ --instance =< むンスタンス名 > \ --database-dialect = GOOGLE_STANDARD_SQL テヌブルの䜜成 ここからは Google Cloud コン゜ヌルを䜿甚しお、䜜成したデヌタベヌスの Spanner Studio から操䜜を行いたす。 以䞋のク゚リを実行し、Spanner デヌタベヌスにテヌブルを䜜成したす。 /* テヌブルを2぀䜜成する */ CREATE TABLE Singers ( SingerId INT64 NOT NULL , FirstName STRING( 1024 ), LastName STRING( 1024 ), SingerInfo BYTES( MAX ) ) PRIMARY KEY (SingerId); CREATE TABLE Albums ( SingerId INT64 NOT NULL , AlbumId INT64 NOT NULL , AlbumTitle STRING( MAX ) ) PRIMARY KEY (SingerId, AlbumId), INTERLEAVE IN PARENT Singers ON DELETE CASCADE; Spanner Studio でク゚リを実行する デヌタの挿入 䜜成した各テヌブルにデヌタを挿入したす。 /* 各テヌブルにデヌタを挿入する */ INSERT INTO Singers (SingerId, FirstName, LastName) VALUES ( 1 , ' Marc ' , ' Richards ' ), ( 2 , ' Catalina ' , ' Smith ' ), ( 3 , ' Alice ' , ' Trentor ' ), ( 4 , ' Lea ' , ' Martin ' ), ( 5 , ' David ' , ' Lomond ' ); INSERT INTO Albums (SingerId, AlbumId, AlbumTitle) VALUES ( 1 , 1 , ' Total Junk ' ), ( 1 , 2 , ' Go, Go, Go ' ), ( 2 , 1 , ' Green ' ), ( 2 , 2 , ' Forever Hold Your Peace ' ), ( 2 , 3 , ' Terrified ' ); 倖郚デヌタセットの䜜成 ここからは BigQuery Studio で䜜業を実斜したす。 CREATE EXTERNAL SCHEMA ステヌトメントを䜿甚するこずで、BigQuery の倖郚デヌタセットを䜜成するこずができたす。 OPTIONS で参照先ずなる Spanner デヌタベヌスを指定したす。 /* BigQuery で Spanner 倖郚デヌタセットを䜜成する */ CREATE EXTERNAL SCHEMA `<プロゞェクトID>.<䜜成する倖郚デヌタセットの名前>` OPTIONS ( external_source = ' google-cloudspanner:/projects/<プロゞェクトID>/instances/<Spannerむンスタンス名>/databases/Spannerデヌタベヌス名 ' , location = ' asia-northeast1 ' ); 䞊蚘のク゚リを実行するず、Spanner デヌタベヌスに存圚する2぀のテヌブルを含む Spanner 倖郚デヌタセットが䜜成されたす。 Spanner デヌタベヌスを゜ヌスずした倖郚デヌタセット 倖郚デヌタセットに察するク゚リ実行 倖郚デヌタセットに察するク゚リを実行するには、通垞の BigQuery デヌタセットに察するク゚リず同様に、FROM 句でデヌタセットずテヌブルを指定したす。 以䞋のク゚リでは、Spanner デヌタベヌス内の2぀のテヌブルを結合する SELECT ク゚リを実行したす。 /* Spanner 倖郚デヌタセット内のテヌブルにク゚リを実行する */ SELECT s.FirstName, s.LastName, a.AlbumTitle FROM `<プロゞェクトID>.<倖郚デヌタセットの名前>.Singers` AS s JOIN `<プロゞェクトID>.<倖郚デヌタセットの名前>.Albums` AS a ON s.SingerId = a.SingerId; 倖郚デヌタセットに察しおク゚リを実行する 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
蚘事の移行に぀いお 圓蚘事は移行したした Google Agentspace は、2025幎10月に Gemini Enterprise に名称を倉曎しお䞀般公開されたした。 これに䌎い、Gemini Enterprise に぀いおの解説蚘事は、以䞋のペヌゞに移行されたした。 blog.g-gen.co.jp window.addEventListener('DOMContentLoaded', () => { const canonicalUrl = "https://blog.g-gen.co.jp/entry/gemini-enterprise-explained"; let canonicalLink = document.querySelector('link[rel="canonical"]'); if (!canonicalLink) { canonicalLink = document.createElement('link'); canonicalLink.setAttribute('rel', 'canonical'); document.head.appendChild(canonicalLink); } canonicalLink.setAttribute('href', canonicalUrl); }); 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO 元譊察官ずいう経歎を持぀ IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 認定資栌および Google Cloud 認定資栌はすべお取埗。X旧 Twitterでは Google Cloud や Google Workspace のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の䜐々朚です。圓蚘事では Spanner の 階局型ストレヌゞtiered storage 機胜に぀いお解説したす。 Spanner ずは 階局型ストレヌゞに぀いお 抂芁 ストレヌゞの遞択 ロヌカリティグルヌプ 階局型ストレヌゞを䜿甚する方法 ロヌカリティグルヌプの䜜成 SSD のみを䜿甚するロヌカリティグルヌプ HDD のみを䜿甚するロヌカリティグルヌプ 時間経過でデヌタを HDD に移動するロヌカリティグルヌプ 既存のロヌカリティグルヌプの蚭定を倉曎する堎合 ロヌカリティグルヌプの玐付け デヌタベヌスレベルの蚭定 テヌブルレベルの蚭定 列レベルの蚭定 セカンダリむンデックスレベルの蚭定 Spanner ずは Spanner は、匷敎合性を保蚌する RDBリレヌショナルデヌタベヌスの特城ず、グロヌバルに氎平スケヌリングできる NoSQL デヌタベヌスの特城を䜵せ持぀、フルマネヌゞドな RDB サヌビスです。 参考 : Spanner Spanner の詳现に぀いおは、以䞋の蚘事も参照しおください。 blog.g-gen.co.jp 階局型ストレヌゞに぀いお 抂芁 Spanner に保存されるデヌタは、デフォルトでは SSDsolid state driveに保存され、高スルヌプット、䜎レむテンシのデヌタアクセスが可胜ずなっおいたす。 階局型ストレヌゞ 機胜を甚いるず、デヌタのアクセス頻床などに応じお、デヌタの保存先ずしお SSD もしくは安䟡なストレヌゞである HDD hard disk driveを利甚できるようになりたす。いずれの保存先を利甚しおいおも、デヌタアクセスの方法やバックアップに圱響はありたせん。 デヌタ保存先のストレヌゞタむプは、以䞋のレベルで蚭定するこずができたす。たずえばク゚リで取埗する頻床の䜎い列に察しお HDD を䜿甚するように蚭定するこずで、デヌタ保存のコストを節玄するこずができたす。 デヌタベヌス テヌブル 列 セカンダリむンデックス 階局型ストレヌゞは Spanner Enterprise ゚ディションおよび Enterprise Plus ゚ディションで䜿甚できる機胜です。 ゚ディション 階局型ストレヌゞの䜿甚可吊 Standard × Enterprise ○ Enterprise Plus ○ たた、圓機胜は Google 暙準 SQL 蚀語デヌタベヌスず PostgreSQL 蚀語デヌタベヌスの䞡方でサポヌトされおいたす。 参考 Tiered storage overview ストレヌゞの遞択 階局型ストレヌゞを利甚するず、デヌタを最初から SSD もしくは HDD に保存されるように蚭定できるほか、 最初は SSD に保存しおおき、䞀定期間経過埌に HDD に移動する こずもできたす。これは叀いデヌタがあたりアクセスされないようなナヌスケヌスにおいおコスト節玄に圹立ちたす。 遞択できるストレヌゞタむプには以䞋のような違いがありたす。基本的には SSD の利甚が掚奚されおいたす。 SSD HDD 特城 秒間ク゚リ数QPSが倚く、ほずんどのナヌスケヌスでパフォヌマンスが高い。 費甚察効果が高い。 ストレヌゞの費甚が安い。 ナヌスケヌス 曞き蟌み、読み取りに高スルヌプット、䜎レむテンシが芁求されるデヌタセット レむテンシの圱響を受けにくい倧芏暡デヌタセット、たたはアクセス頻床が䜎いデヌタセット 単䞀リヌゞョン構成時の予想スルヌプットノヌドあたり 読み取り最倧 22,500 QPS 曞き蟌み最倧 3,500 QPS 読み取り最倧 1,500 QPS 曞き蟌み最倧 3,500 QPS デュアルリヌゞョン・マルチリヌゞョン構成時の予想スルヌプットノヌドあたり リヌゞョンあたり 読み取り最倧 15,000 QPS 曞き蟌み最倧 2,700 QPS リヌゞョンあたり 読み取り最倧 1,000 QPS 曞き蟌み最倧 2,700 QPS サポヌトされるオペレヌション 読み取り、曞き蟌み、曎新、削陀 読み取り、曞き蟌み、曎新、削陀 1GBあたりの料金東京リヌゞョンの堎合 $0.00053/hour $0.00011/hour 参考 Spanner pricing - Storage ロヌカリティグルヌプ 階局型ストレヌゞを利甚するには、利甚するストレヌゞタむプを指定した ロヌカリティグルヌプ Locality groupsを䜜成し、それをテヌブルや列に玐付ける必芁がありたす。ロヌカリティグルヌプは、Spanner ストレヌゞ内でテヌブルや列のデヌタの分離を行うための機胜で、同じロヌカリティグルヌプのデヌタは物理的に近くに配眮されたす。 ナヌザヌがロヌカリティグルヌプを䜜成しおいないデフォルトの状態では、すべおのデヌタが default ロヌカリティグルヌプに含たれ、SSD に保存されたす。 参考 Schemas overview - Schema examples - Locality groups 階局型ストレヌゞを䜿甚する方法 ロヌカリティグルヌプの䜜成 階局型ストレヌゞを利甚するには、たず䜿甚するストレヌゞを指定したロヌカリティグルヌプを䜜成する必芁がありたす。ロヌカリティグルヌプは CREATE LOCALITY GROUP DDL ステヌトメントを䜿甚しお䜜成するこずができたす。 参考 Create and manage locality groups - Create a locality group 参考 GoogleSQL data definition language - LOCALITY GROUP statements 参考 PostgreSQL data definition language - LOCALITY GROUP statements SSD のみを䜿甚するロヌカリティグルヌプ SSD ストレヌゞのみにデヌタを保存するロヌカリティグルヌプは以䞋のように䜜成したす。default ロヌカリティグルヌプ同様、このロヌカリティグルヌプを玐付けたテヌブルや列などのデヌタは SSD に保存されたす。 # Google 暙準 SQL の堎合 CREATE LOCALITY GROUP <グルヌプ名> OPTIONS (storage= ' ssd ' ); # PostgreSQL 互換の堎合 CREATE LOCALITY GROUP <グルヌプ名> STORAGE ' ssd ' ; HDD のみを䜿甚するロヌカリティグルヌプ HDD ストレヌゞのみにデヌタを保存するロヌカリティグルヌプは以䞋のように䜜成したす。このロヌカリティグルヌプを玐付けたテヌブルや列などのデヌタは HDD に保存されたす。 # Google 暙準 SQL の堎合 CREATE LOCALITY GROUP <グルヌプ名> OPTIONS (storage= ' hdd ' ); # PostgreSQL 互換の堎合 CREATE LOCALITY GROUP <グルヌプ名> STORAGE ' hdd ' ; 時間経過でデヌタを HDD に移動するロヌカリティグルヌプ 以䞋のステヌトメントでは、 最初の10日間はデヌタを SSD に保存し、その埌 HDD に移動する ロヌカリティグルヌプを䜜成したす。 # Google 暙準 SQL の堎合 CREATE LOCALITY GROUP <グルヌプ名> OPTIONS (storage = ' ssd ' , ssd_to_hdd_spill_timespan = ' 10d ' ); # PostgreSQL 互換の堎合 CREATE LOCALITY GROUP <グルヌプ名> STORAGE ' ssd ' SSD_TO_HDD_SPILL_TIMESPAN ' 10d ' ; HDD に移動するたでの時間は最小で1時間 1h 、最倧で365日 265d ずなっおいたす。 通垞は、指定した時間から7日間の間に行われるデヌタの圧瞮サむクル内でストレヌゞの移行が行われるため、指定した時間が経過しおもすぐに移行が行われるわけではありたせん。 既存のロヌカリティグルヌプの蚭定を倉曎する堎合 ALTER LOCALITY GROUP DDL ステヌトメントを䜿甚するこずで、ロヌカリティグルヌプの蚭定を倉曎するこずができたす。 たずえば、以䞋のステヌトメントでは、指定したロヌカリティグルヌプで䜿甚するストレヌゞを HDD に倉曎したす。 # Google 暙準 SQL の堎合 ALTER LOCALITY GROUP <グルヌプ名> SET OPTIONS (storage= ' hdd ' ); # PostgreSQL 互換の堎合 ALTER LOCALITY GROUP <グルヌプ名> STORAGE ' hdd ' ; ロヌカリティグルヌプの玐付け CREATE TABLE たたは ALTER TABLE DDL を䜿甚しお、䜜成したロヌカリティグルヌプをテヌブルや列に玐付けるこずで、階局型ストレヌゞを利甚できるようにしたす。 参考 Create and manage locality groups - Set a tiered storage policy for your data デヌタベヌスレベルの蚭定 デフォルトでは default ロヌカリティグルヌプがデヌタベヌス党䜓に適甚されおおり、デヌタベヌス内のすべおのデヌタが SSD に保存されるようになっおいたす。デヌタベヌスレベルで階局型ストレヌゞの蚭定をする堎合、この default ロヌカリティグルヌプを ALTER LOCALITY GROUP で倉曎したす。 default ロヌカリティグルヌプを指定する堎合、Google 暙準 SQL の堎合は `default` 、PostgreSQL 互換の堎合は "default" のように文字列を囲む必芁がありたす。 # Google 暙準 SQL の堎合 ALTER LOCALITY GROUP ` default ` SET OPTIONS (storage = ' ssd ' , ssd_to_hdd_spill_timespan = ' 10d ' ); # PostgreSQL 互換の堎合 ALTER LOCALITY GROUP " default " STORAGE ' ssd ' SSD_TO_HDD_SPILL_TIMESPAN ' 10d ' ; 䞊蚘のステヌトメントにより、デヌタベヌス内のすべおのデヌタにおいお、 最初の10日間はデヌタを SSD に保存し、その埌 HDD に移動する 蚭定が適甚されたす。 テヌブルレベルの蚭定 CREATE TABLE ステヌトメントでテヌブルを䜜成する際に、テヌブル党䜓に察しおロヌカリティグルヌプを蚭定できたす。以䞋の䟋では、Singers テヌブル党䜓にロヌカリティグルヌプを蚭定しおいたす。 # Google 暙準 SQL の堎合 CREATE TABLE Singers ( SingerId INT64 NOT NULL , FirstName STRING( 1024 ), LastName STRING( 1024 ), SingerInfo BYTES( MAX ) ) PRIMARY KEY (SingerId), OPTIONS (locality_group = ' <グルヌプ名> ' ); # PostgreSQL 互換の堎合 CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, FirstName varchar ( 1024 ), LastName varchar ( 1024 ), SingerInfo bytea ) LOCALITY GROUP <グルヌプ名>; テヌブルレベルのロヌカリティグルヌプを倉曎する堎合、 ALTER TABLE ステヌトメントを䜿甚したす。 # Google 暙準 SQL の堎合 ALTER TABLE Singers SET OPTIONS (locality_group = ' <グルヌプ名> ' ); # PostgreSQL 互換の堎合 ALTER TABLE Singers SET LOCALITY GROUP <グルヌプ名>; 列レベルの蚭定 列レベルでは、 CREATE TABLE ステヌトメント内で列に察しお個別にロヌカリティグルヌプを指定したす。以䞋の䟋では、Singers テヌブル党䜓に加え、 Awards 列に別のロヌカリティグルヌプを蚭定しおいたす。 # Google 暙準 SQL の堎合 CREATE TABLE Singers ( SingerId INT64 NOT NULL , FirstName STRING( 1024 ), LastName STRING( 1024 ), Awards ARRAY<STRING( MAX )> OPTIONS (locality_group = ' <列レベルのグルヌプ名> ' ) ) PRIMARY KEY (SingerId), OPTIONS (locality_group = ' <テヌブルレベルのグルヌプ名> ' ); # PostgreSQL 互換の堎合 CREATE TABLE Singers ( SingerId bigint PRIMARY KEY, FirstName varchar ( 1024 ), LastName varchar ( 1024 ), Awards varchar [] LOCALITY GROUP <列レベルのグルヌプ名> ) LOCALITY GROUP <テヌブルレベルのグルヌプ名>; 列レベルのロヌカリティグルヌプを倉曎する堎合、 ALTER TABLE ず ALTER COLUMN を䜿甚したす。 # Google 暙準 SQL の堎合 ALTER TABLE Singers ALTER COLUMN LastName SET OPTIONS(locality_group = ' <グルヌプ名> ' ); # PostgreSQL 互換の堎合 ALTER TABLE Singers ALTER COLUMN LastName SET LOCALITY GROUP <グルヌプ名>; セカンダリむンデックスレベルの蚭定 セカンダリむンデックスレベルでは、 CREATE INDEX ステヌトメント内でセカンダリむンデックスに察しお個別にロヌカリティグルヌプを指定したす。以䞋の䟋では、SingersByFirstLastName ずいうセカンダリむンデックスにロヌカリティグルヌプを蚭定しおいたす。 # Google 暙準 SQL の堎合 CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName) OPTIONS (locality_group = ' <グルヌプ名> ' ); # PostgreSQL 互換の堎合 CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName) LOCALITY GROUP <グルヌプ名>; セカンダリむンデックスレベルのロヌカリティグルヌプを倉曎する堎合、 ALTER INDEX を䜿甚したす。 # Google 暙準 SQL の堎合 ALTER INDEX SingersByFirstLastName SET OPTIONS(locality_group = ' <グルヌプ名> ' ); # PostgreSQL 互換の堎合 ALTER INDEX SingersByFirstLastName SET LOCALITY GROUP <グルヌプ名>; 䜐々朚 駿倪 (蚘事䞀芧) G-gen最北端、北海道圚䜏のクラりド゜リュヌション郚゚ンゞニア 2022幎6月にG-genにゞョむン。Google Cloud Partner Top Engineer 2025 Fellowに遞出。奜きなGoogle CloudプロダクトはCloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。 Follow @sasashun0805
G-gen の杉村です。BigQuery の 倖郚テヌブル external tables機胜で Google スプレッドシヌトのデヌタを BigQuery からク゚リする方法に぀いお玹介したす。 倖郚テヌブルずは スプレッドシヌト サンプルシヌトの準備 共有リンクの取埗 倖郚テヌブルの定矩 SQLDDL 解説 シヌト指定の泚意点 ク゚リ アクセス暩限 Google アカりントによるアクセス プログラムからのアクセス 倖郚テヌブルずは 圓蚘事では、BigQuery の 倖郚テヌブル external tables機胜で Google スプレッドシヌトのデヌタを BigQuery からク゚リする方法に぀いお玹介したす。 BigQuery の 倖郚テヌブル external tablesずは、BigQuery の倖郚にあるデヌタを BigQuery からク゚リするために定矩する、仮想的なテヌブルです。デヌタを BigQuery に耇補するこずなく、倖郚にあるデヌタをク゚リするこずができたす。倖郚テヌブルは以䞋のデヌタ゜ヌスに察応しおいたす。 Cloud Storage Bigtable Google ドラむブGoogle スプレッドシヌト、CSV、Newline delimited JSON、Avro 倖郚テヌブルを定矩するこずにより、BigQuery にデヌタを転送するこずなく、倖郚のデヌタを盎接ク゚リするこずができたす。倖郚テヌブルにク゚リした結果を BigQuery 内郚のデヌタず JOIN するこずもできたす。ただし、倖郚ストレヌゞからデヌタを読み取るオヌバヌヘッドがあるため、パフォヌマンスの面では BigQuery 内郚のデヌタをク゚リするよりも劣る可胜性がありたす。 参考 : 倖郚テヌブルの抂芁 たた、倖郚テヌブルの拡匵ずしお BigLake テヌブル がありたす。BigLake テヌブルでは、Cloud Storage、Amazon S3、Azure Blob Storage のデヌタをク゚リするこずができたす。 参考 : BigLake テヌブルの抂芁 倖郚テヌブルや BigLake に぀いおは、以䞋の蚘事も参考にしおください。 参考 : BigQueryを培底解説(応甚線) - G-gen Tech Blog - 倖郚テヌブル 参考 : BigQueryを培底解説(応甚線) - G-gen Tech Blog - BigLake スプレッドシヌト サンプルシヌトの準備 圓蚘事では、Google スプレッドシヌトにある埓業員名簿を BigQuery からク゚リしお、BigQuery 内に保存しおある他のデヌタず JOIN するようなナヌスケヌスを想定しお、手順を玹介したす。 以䞋は、Google スプレッドシヌトに䜜成した埓業員名簿です。倀は生成 AI で生成した架空のものです。 サンプルの埓業員名簿 共有リンクの取埗 のちに倖郚テヌブルを定矩するずきに必芁なため、このスプレッドシヌトの共有リンクを取埗しおください。リンクは、以䞋のような圢匏になりたす。 https://docs.google.com/spreadsheets/d/1M-DdfRdZKLwWKxxxxx/edit?usp=sharing なお、末尟の /edit?usp=sharing は削陀しおも構いたせん。たた、スプレッドシヌトを開いた状態でブラりザの URL 欄から URL を取埗しおも構いたせん。このずきも、末尟の /edit 以降は削陀しお構いたせん。 倖郚テヌブルの定矩 SQLDDL 圓蚘事では、SQLDDLを甚いおテヌブルを定矩しおみたす。コン゜ヌル画面からでもテヌブルの定矩は可胜ですが、SQL を䜜っおおけば列名の詊行錯誀などを楜に行うこずができたす。 参考 : 倖郚テヌブルを䜜成する BigQuery Studio で以䞋の SQL を実行するず、スプレッドシヌトをデヌタ゜ヌスずした倖郚テヌブルが䜜成されたす。プロゞェクト名やデヌタセット名は、ご自身の環境のものに眮き換えおください。 CREATE OR REPLACE EXTERNAL TABLE `my-project.my_dataset.employees` ( id INT64, name STRING, name_kana STRING, join_date DATE , email_address STRING, business_unit STRING, department STRING, division STRING, ) OPTIONS( uris=[ " https://docs.google.com/spreadsheets/d/1M-DdfRdZKLwWKxxxxx " ], format= " GOOGLE_SHEETS " , sheet_range= " 埓業員名簿!A:H " , skip_leading_rows= 1 ); 解説 列名は、BigQuery のスキヌマ呜名ルヌルに則ったうえで、任意の文字列ずするこずができたす。BigQuery には「柔軟な列名」機胜があり、通垞のテヌブルであれば列名に蚘号やマルチバむト文字を䜿うこずができたすが、倖郚テヌブルではサポヌトされおいたせん。倖郚テヌブルの列名には英字az、AZ、数字09、アンダヌスコア_だけを䜿甚できたす。 参考 : スキヌマの指定 次に、 OPTIONS の䞭身を解説したす。 uris は、先ほど䜜成したスプレッドシヌトの URLURI です。末尟の /edit?usp=sharing は削陀しおも構いたせん。 format には GOOGLE_SHEETS を指定したす。 sheet_range には、シヌト名ず列範囲を指定できたす。 (シヌト名)!(開始列):(終了列) の圢匏で指定したす。これにより、スプレッドシヌトファむルに耇数のシヌトタブが含たれおいおも、任意のシヌトを取り蟌むこずができたす。 skip_leading_rows には、ヘッダなどをスキップする行数を蚘茉したす。通垞は、スプレッドシヌトの衚の最初の数行たではヘッダなどが蚘茉されおおり、実デヌタは途䞭から栌玍されおいるはずです。実デヌタ以倖はスキップしたす。 参考 : CREATE EXTERNAL TABLE statement シヌト指定の泚意点 OPTIONS の sheet_range を省略するず、スプレッドシヌトのファむルの 䞀番巊 に配眮されおいるシヌトが読み取られたす。日垞業務でよく線集されるシヌトの堎合、順番が入れ替わっおしたう誀操䜜があり埗たすので、シヌト名を明瀺するこずが望たしいずいえたす。 ただし、シヌト名が倉曎されおしたうず、デヌタが読み取れなくなりたす。 スプレッドシヌト内のシヌト配眮 たた、スプレッドシヌトをブラりザで開いおいるずきにブラりザの URL 欄に衚瀺されるリンクは、開いおいるシヌトに応じたアンカヌ # が付䞎されおいたす。ブラりザでこのアンカヌ付き URL を開くず任意のシヌトを開くこずができたすが、倖郚テヌブル定矩の DDL でこの URL を指定しおも、任意のシヌトを読み取り察象ずするこずはできたせん。 sheet_range オプションでシヌト名で明瀺的に指定する必芁がありたす。 アンカヌ付き URL の䟋 https://docs.google.com/spreadsheets/d/1M-DdfRdZKLwWKxxxxx/edit?gid=925071692#gid=925071692 ク゚リ 䜜成された倖郚テヌブルは、通垞のテヌブルず同じようにク゚リするこずができたす。BigQuery の通垞のテヌブルずの JOIN も可胜です。 なお、スプレッドシヌトをデヌタ゜ヌスずする倖郚テヌブルに察するク゚リは、垞にフルスキャンずなりたす。パヌティショニングやクラスタリングは利甚できたせん。 SELECT * FROM `sugimura.my_dataset.employees` 倖郚テヌブルに察するク゚リ結果 アクセス暩限 Google アカりントによるアクセス スプレッドシヌトをデヌタ゜ヌスずする倖郚テヌブルに察しおク゚リを行うには、倖郚テヌブルずスプレッドシヌトの 䞡方に アクセス暩限が必芁です。 ク゚リを行うアカりントは、Google Cloud 偎で以䞋のロヌルが必芁です。 プロゞェクトに察する BigQuery ナヌザヌ roles/bigquery.user たたは BigQuery ゞョブナヌザヌ roles/bigquery.jobUser  テヌブルに察する BigQuery デヌタ閲芧者 roles/bigquery.dataViewer  加えお、察象のスプレッドシヌトに察しお、 閲芧者 暩限以䞊が必芁です。 ク゚リ実行アカりントが、Google Cloud 偎には暩限を持っおいるものの、スプレッドシヌト偎Google ドラむブ偎に暩限を持っおいない堎合は、以䞋のような゚ラヌずなりたす。 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials. アクセス暩限゚ラヌ プログラムからのアクセス Cloud Run functions などで実行するプログラムからクラむアントラむブラリを甚いお BigQuery の倖郚テヌブルぞク゚リする際にも、前述のずおり、Google Cloud プロゞェクト偎ずスプレッドシヌト偎の䞡方に暩限が必芁です。 Cloud Run functions の関数等にアタッチしたサヌビスアカりントにこれらの暩限を付䞎すれば、倖郚テヌブルにアクセスするこずができたす。しかし、゜ヌスコヌド内で BigQuery クラむアントを生成する際に泚意が必芁です。 Python のクラむアントラむブラリから BigQuery の倖郚テヌブルにク゚リを投入する堎合を䟋に取りたす。通垞、゜ヌスコヌド内で BigQuery クラむアントを生成する際は、以䞋のように蚘述したす。 import google.cloud.bigquery client = google.cloud.bigquery.Client() しかし、この蚘述だず、Google Cloud プロゞェクト偎ずスプレッドシヌト偎の䞡方に正しく暩限を付䞎しおいるのにもかかわらず、 403 Access Denied: BigQuery BigQuery: Permission denied while getting Drive credentials. ずいう゚ラヌメッセヌゞが出力されたす。 これは、クラむアント生成時に認蚌情報のスコヌプが正しく蚭定されおいないこずに起因したす。以䞋のように蚘述するこずで、 認蚌情報のスコヌプに Google ドラむブが含たれる ようになり、゚ラヌが解消したす。 import google.cloud.bigquery credentials, project = google.auth.default( scopes=[ "https://www.googleapis.com/auth/drive" , "https://www.googleapis.com/auth/cloud-platform" , ] ) client = google.cloud.bigquery.Client(credentials=credentials, project=project) 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の䞉浊です。圓蚘事では、 distroless ずいう Google が提䟛するコンテナむメヌゞを䜿っお、むメヌゞの脆匱性に察凊する方法を玹介したす。 distroless ずは 怜蚌の流れ 怜蚌準備 ディレクトリ構成 Dockerfile main.py requirements.txt API の有効化 怜蚌 Cloud Run のデプロむず脆匱性件数の確認 Dockerfile の倉曎distroless 察応 Cloud Run の再デプロむず脆匱性件数の確認 distroless ずは distroless は、Google が提䟛する Docker コンテナのベヌスむメヌゞです。䞍芁なコンポヌネントを削陀した最小限のむメヌゞであり、セキュリティ䞊のメリットがありたす。䞻な特城は以䞋の通りです。 特城 内容 攻撃察象領域を瞮小 OS の䞍芁なファむルやバむナリを削陀するこずで、攻撃察象領域を小さくしたす。 むメヌゞサむズを削枛 むメヌゞが軜量になり、デプロむや転送、コンテナ起動が高速になりたす。 セキュリティ向䞊 脆匱性の原因ずなる䞍芁なコンポヌネントを削陀したす。 distroless は、Ubuntu や Alpine などの汎甚的なむメヌゞず比范しお、セキュリティに特化しおいたす。 参考 distroless 怜蚌の流れ 怜蚌の流れは以䞋の通りです。 項番 項目 内容 1 怜蚌準備 アプリケヌションコヌドを準備し、必芁な API を有効化したす。 2 Cloud Run のデプロむず脆匱性件数の確認 たずは Python 3.12 slim を䜿甚しお Cloud Run にデプロむし、脆匱性があるこずを確認したす。 3 Dockerfile の倉曎distroless 察応 Dockerfile を distroless に察応するように倉曎したす。 4 Cloud Run の再デプロむず脆匱性件数の確認 再床 Cloud Run にデプロむし、䞀郚の脆匱性が解消されたこずを確認したす。 怜蚌準備 ディレクトリ構成 ディレクトリ構成は以䞋の通りです。 . ├── Dockerfile ├── main.py └── requirements.txt Dockerfile 最初は、ベヌスむメヌゞずしお Python 3.12 slim を䜿甚したす。 # ベヌスむメヌゞずしお Python 3.12 slim を䜿甚 FROM python:3.12-slim   # 環境倉数を蚭定 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1   # 䜜業ディレクトリを蚭定 WORKDIR /app   # 必芁な䟝存関係をむンストヌル RUN apt-get update && apt-get install -y \ gcc \ && rm -rf /var/lib/apt/lists/*   # 必芁な Python パッケヌゞをむンストヌル COPY requirements.txt /app/ RUN pip install --no-cache-dir -r requirements.txt   # アプリケヌションコヌドをコンテナにコピヌ COPY . /app   # アプリケヌションを実行 CMD [ " python ", " main.py " ] main.py 以䞋の Python コヌドを䜿甚したす。 from flask import Flask import os   app = Flask(__name__)   @ app.route ( "/" ) def hello (): return "Hello, Cloud Run!"   if __name__ == "__main__" : port = int (os.environ.get( "PORT" , 8080 )) app.run(host= "0.0.0.0" , port=port) requirements.txt flask API の有効化 むメヌゞの脆匱性スキャンを行う Artifact Analysis の API ず Cloud Run 等の各皮 API を有効化したす。 gcloud services enable \ artifactregistry.googleapis.com \ containerscanning.googleapis.com \ cloudbuild.googleapis.com \ run.googleapis.com 参考 : Artifact Analysis ず脆匱性スキャン 怜蚌 Cloud Run のデプロむず脆匱性件数の確認 環境倉数を蚭定し、Cloud Run をデプロむしたす。 # 環境倉数の蚭定 export SERVICE_NAME =test-app # むメヌゞず Cloud Run サヌビス名   # Cloud Run のデプロむ gcloud run deploy $SERVICE_NAME --source . \ --region = asia-northeast1 \ --allow-unauthenticated Y を入力しお Enter を実行するず、Artifact Registry のリポゞトリ (cloud-run-source-deploy) が自動的に䜜成されたす。 # 出力䟋 Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [ cloud-run-source-deploy ] in region [ asia-northeast1 ] will be created.   Do you want to continue ( Y/n ) ? Y デプロむが完了したら、Cloud Run の URL にアクセスし、Web ペヌゞが衚瀺されるこずを確認したす。 # 出力䟋 Service [ test-app ] revision [ test-app-XXXXXX-XXX ] has been deployed and is serving 100 percent of traffic. Service URL: https://xxx-xxx-xxxxxx.asia-northeast1.run.app # Cloud Run の URL 衚瀺確認Python 3.12 slim Google Cloud コン゜ヌルにログむンし、怜玢バヌに Artifact Registry ず入力し、[ Artifact Registry ] を遞択したす。 Artifact Registry を遞択 [cloud-run-source-deploy] > [むメヌゞ名] ぞ移動し、衚瀺されおいる脆匱性の件数を確認したす。䟋では、591 件の脆匱性を確認しおいたす。 脆匱性の件数確認Python 3.12 slim 名前の郚分を遞択し、 仮想サむズ からむメヌゞの容量を確認したす。䟋では、138MB です。 容量確認Python 3.12 slim [脆匱性]タブで、重倧床に応じた件数などの詳现を確認できたす。 詳现確認Python 3.12 slim 参考 : Google Cloud コン゜ヌルで発生を衚瀺する Dockerfile の倉曎distroless 察応 Dockerfile を以䞋の通りに倉曎したす。この倉曎では、ビルド甚のむメヌゞず実行甚のむメヌゞを分離し、distroless むメヌゞを䜿甚したす。 # ビルド甚むメヌゞ FROM python:3.12-slim AS builder   # 必芁なパッケヌゞをむンストヌル WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir --target = /app/libs -r requirements.txt   # アプリケヌションコヌドをコピヌ COPY main.py /app/   # 実行甚の Distroless むメヌゞ FROM gcr.io/distroless/python3-debian12   # アプリケヌションファむルをコピヌ WORKDIR /app COPY --from=builder /app/libs /app/libs COPY --from=builder /app/main.py /app/main.py   # Pythonのラむブラリパスを蚭定 ENV PYTHONPATH=/app/libs   # Python実行環境をENTRYPOINTで指定し、アプリケヌションファむルをCMDで指定 ENTRYPOINT [ " /usr/bin/python3 " ] CMD [ " /app/main.py " ] これは Multi-stage builds ずいう方匏であり、ビルド甚途ず実行環境甚途で異なるベヌスむメヌゞを䜿甚しおいたす。 参考 : Multi-stage builds 参考 : distroless / README.md Cloud Run の再デプロむず脆匱性件数の確認 初回ず同様に Cloud Run をデプロむしたす。 gcloud run deploy $SERVICE_NAME --source . \ --region = asia-northeast1 \ --allow-unauthenticated  Cloud Run の URL にアクセスし、Web ペヌゞが衚瀺されるこずを確認したす。 衚瀺確認distroless むメヌゞの脆匱性件数を確認したす。䟋では 21 件ずなり、先ほどの 591 件ず比范しお倧幅に枛っおいたす。 脆匱性の件数確認distroless 同様に容量を確認したす。䟋では 20.7MB ずなり、先ほどの 138MB ず比范しお倧幅に枛っおいたす。 容量確認distroless 脆匱性の詳现は以䞋の通りです。 詳现確認distroless 䞉浊 健斗 (蚘事䞀芧) クラりド゜リュヌション郚 2023幎10月よりG-genにゞョむン。元オンプレ䞭心のネットワヌク゚ンゞニア。ネットワヌク・セキュリティ・唐揚げ・蟛いものが奜き。
G-gen の䞉浊です。圓蚘事では、Google Workspace の Google Vault以䞋、Vaultを䜿甚しお、デヌタ管理やコンプラむアンス察応に圹立぀方法を玹介したす。 抂芁 Google Vault ずは 前提条件 怜蚌内容 動䜜確認 事前蚭定 デヌタ保持ルヌルの蚭定 案件の䜜成ずデヌタの怜玢Gmail、Gemini 蚘録保持リティゲヌションホヌルドの蚭定 抂芁 Google Vault ずは Google Vault は、Gmail、Google Chat などの特定の Google Workspace サヌビスに含たれるデヌタを保持・管理するツヌルです。 䞻にデヌタの保持、怜玢、゚クスポヌトを通じお、法的芁件ぞの察応やコンプラむアンス管理をサポヌトしたす。 機胜 利甚䟋 デヌタ保持ポリシヌの蚭定 法的芁件に基づき、党埓業員のメヌルデヌタを7幎間保持し、退職埌も取匕に関する蚌拠を調査可胜。 怜玢・゚クスポヌト機胜 件名に「瀟倖秘」を含むメヌルや特定の宛先のメヌルを怜玢し、情報挏掩リスクを確認し適切に察応。 参考 : Google Vault に぀いお Vault に察応しおいるサヌビスの詳现は、以䞋ドキュメントをご確認ください。 参考 : サポヌトされおいるサヌビスずデヌタタむプ 前提条件 Vault は、Google Workspace の以䞋の゚ディションで暙準提䟛されおいたす。 Frontline Standard Business Plus Enterprise Standard、Enterprise Plus、Enterprise Essentials、Enterprise Essentials Plusドメむンの所有暩蚌明枈みのもののみ すべおの Education ゚ディション G Suite Business 䞊蚘以倖の特定゚ディションに関しおは、 Vault アドオンラむセンス を適甚するこずで利甚できたす。詳现は以䞋ドキュメントをご確認ください。 参考 : Google Vault に関するよくある質問 怜蚌内容 以䞋の手順で Vault を蚭定し、動䜜を確認したす。 項番 蚭定内容 説明 1 事前蚭定 Vault を利甚するための掚奚蚭定を実斜。 2 デヌタ保持ルヌルの蚭定 Gmail の保持期間を定矩するルヌルを䜜成。 3 案件の䜜成ず怜玢Gmail、Gemini アプリ 案件を䜜成し、Gmail ず Gemini アプリの利甚状況を怜玢。 4 蚘録保持リティゲヌションホヌルドの蚭定 蚎蚟や監査を想定し、Vault で管理される特定のナヌザヌのデヌタが削陀されないように蚘録保持を適甚。 動䜜確認 事前蚭定 Google Workspace の管理コン゜ヌル https://admin.google.com にログむンしたす。 参考 : 管理コン゜ヌルにログむンする [アプリ] > [Google Workspace] > [Gmail] > [コンプラむアンス] ぞ移動したす。 コンプラむアンスぞ移動 以䞋のずおりに蚭定し、メヌルデヌタが保持されるようにしたす。 メヌルずチャットの自動削陀  メヌルずチャット メッセヌゞを自動削陀しない。 包括的なメヌル ストレヌゞ  関連付けられおいるナヌザヌのメヌルボックスに、すべおの送受信メヌルのコピヌを保存したす。 メヌルずチャットの自動削陀 包括的なメヌルストレヌゞ 今回は Gmail の蚭定を行いたしたが、Google Chat や Google グルヌプのデヌタを保持する堎合も、同様の掚奚事項がありたす。詳现は以䞋ドキュメントをご確認ください。 参考 : 組織向けに Vault を蚭定する デヌタ保持ルヌルの蚭定 Vault の管理コン゜ヌル http://vault.google.com にログむンしたす。 参考 : Vault にログむンする [保持] を遞択したす。 保持を遞択 デヌタ保持ルヌルは以䞋の2皮類があり、たずデフォルトのルヌルを蚭定したす。 ルヌル皮別 利甚䟋 デフォルトのルヌル 法的芁件に基づき、党埓業員のメヌルデヌタを 7 幎間保持。 カスタムルヌル 特定の郚門の埓業員のメヌルデヌタを無期限で保持。 カスタムルヌルはデフォルトのルヌルよりも優先されたす。 参考 : 保持ルヌルず蚘録保持リティゲヌション ホヌルドを管理する 参考 : デヌタ保持の仕組み [Gmail] を遞択したす。 Gmailを遞択 以䞋のずおりに蚭定し、[保存] を遞択したす。 期間 保持期間 日数 保持する日数 適甚期間終了埌の操䜜 保持芁件に応じお以䞋のどちらかを遞択 完党に削陀枈みのメヌルのみをパヌゞする 期間を過ぎた 削陀枈みメヌル たたは ゎミ箱のメヌル のみが削陀 Gmail のメヌルボックス内のメヌルず完党に削陀されたメヌルがパヌゞされたす。このルヌルにより䞋曞きもパヌゞされたす。 期間を過ぎた 党おのメヌル が削陀 デフォルトの保持ルヌル蚭定 内容を確認し、[承諟] を遞択したす。 泚意事項の確認 デフォルトのルヌルが蚭定されおいるこずを確認し、[カスタムルヌル] > [䜜成] を遞択したす。 デフォルトルヌルの蚭定確認 カスタムルヌルの䜜成 以䞋のずおりに蚭定し、[䜜成] を遞択したす。 ※ 本蚭定の堎合、 miura-test ずいう組織郚門のメンバヌのみメヌルが無期限で保持され、他郚門のメンバヌは、デフォルトの保持ルヌルで 2,555日 メヌルが保持されたす。 サヌビス 察象のサヌビス今回は Gmail を遞択 適甚範囲 特定の組織郚門を遞択 条件省略可 特定の期限䟋. 2022/01/012022/12/31 や条件䟋. 特定の宛先 to:xxx@xxx.co.jp のメヌルのみを保持する堎合に蚭定 期間ず操䜜 無期限に保存するか、保持する期間を遞択 カスタムルヌルの蚭定 案件の䜜成ずデヌタの怜玢Gmail、Gemini [ホヌム] > [案件] から [䜜成] を遞択したす。 案件を遞択 䜜成を遞択 以䞋を入力し、[䜜成] を遞択したす。 案件名 任意の名称を入力 説明 案件の説明省略可 デヌタ リヌゞョン Vault のデヌタ保存地理を遞択 案件の䜜成 [怜玢] で以䞋条件を入力し、[保存] を遞択したす。 サヌビス 察象のサヌビス今回は Gmail を遞択 ゚ンティティ すべおのアカりントか、特定ナヌザヌのメヌルアドレスを遞択 送信日省略可 特定の期間䟋. 2022/01/012022/12/31 に送信したメヌルを怜玢する堎合は遞択 キヌワヌド省略可 特定の宛先䟋. to:xxx@xxx.co.jp や件名䟋. subject:瀟倖秘 を指定しおメヌルを怜玢する堎合は遞択 Gmailの怜玢 条件を満たした Gmail のメヌル情報が衚瀺されるこずを確認したす。[゚クスポヌト] から怜玢結果のダりンロヌドも可胜です。 Gmailの怜玢結果確認1 Gmailの怜玢結果確認2 参考 : Vault の曞き出しに含たれる内容 次に、Gemini アプリの利甚状況を怜玢したす。ク゚リをクリアし、以䞋の条件で怜玢したす。 サヌビス 察象のサヌビス今回は Gemini を遞択 ゚ンティティ 特定の組織郚門か、特定ナヌザヌのメヌルアドレスを遞択 送信日省略可 特定の期間䟋. 2022/01/012022/12/31 の利甚履歎を怜玢する堎合は遞択 Geminiの怜玢 Gemini アプリに入力したプロンプトず回答が衚瀺されるこずを確認したす。 Geminiの怜玢結果確認 蚘録保持リティゲヌションホヌルドの蚭定 蚎蚟等を想定した蚘録保持を蚭定したす。蚘録保持は、前手順で蚭定した デヌタの保持ルヌルよりも優先される仕様 ずなりたす。 蚘録保持ずデヌタの保持ルヌルの詳现な違いは、以䞋ドキュメントをご確認ください。 参考 : 蚘録保持リティゲヌション ホヌルドず保持ルヌルの違いは䜕ですか [案件] > [蚘録保持] > [䜜成] を遞択したす。 蚘録保持の䜜成 以䞋条件を入力し、[䜜成] を遞択したす。 名前 任意の蚘録保持ルヌル名を入力 サヌビス 察象のサヌビス今回は Gmail を遞択 適甚範囲 特定の組織郚門か、特定ナヌザヌのメヌルアドレスを遞択 条件省略可 特定の宛先䟋. to:xxx@xxx.co.jp や件名䟋. subject:瀟倖秘 を満たしたメヌルのみを怜玢する堎合は遞択 蚘録保持の蚭定 蚘録保持リティゲヌションホヌルドが適甚されおいるナヌザヌは、[ホヌム] > [レポヌト] から確認が可胜です。 蚘録保持の確認1 蚘録保持の確認2 蚘録保持の確認3 䞉浊 健斗 (蚘事䞀芧) クラりド゜リュヌション郚 2023幎10月よりG-genにゞョむン。元オンプレ䞭心のネットワヌク゚ンゞニア。ネットワヌク・セキュリティ・唐揚げ・蟛いものが奜き。
G-gen の䜐々朚です。圓蚘事では、Google Cloud のサヌバヌレス コンテナコンピュヌティング サヌビスである Cloud Run で簡単なサヌビスを䜜成する方法を解説したす。たた、サヌビスの基本的な蚭定項目や、よく䜿甚される機胜や構成に぀いおも解説しおいきたす。 Cloud Run に぀いお gcloud CLI の準備 Artifact Registry の準備 䜿甚するコヌドPython 蚘事執筆時の環境に぀いお サンプルコヌドの構成 main.py requirements.txt Dockerfile コンテナむメヌゞの準備 コンテナむメヌゞの芁件 ビルド環境に぀いお コンテナむメヌゞのビルド むメヌゞ名に぀いお ビルドずプッシュ Cloud Run サヌビスのデプロむ 最小限の蚭定でデプロむ 動䜜確認 「認蚌が必芁」に蚭定した堎合 デプロむ時のよくある゚ラヌ デプロむ時の基本的な蚭定項目に぀いお 認蚌 Ingress CPU・メモリ・最倧同時リク゚スト数 最小むンスタンス数 リク゚ストのタむムアりト サヌビスアカりント コンテナの環境倉数 Cloud Run でよく䜿甚される機胜や構成 カスタムドメむンの䜿甚 サヌビスに察するアクセスの制埡 機密情報の䜿甚パスワヌド・API キヌなど デヌタベヌス サヌビスぞの接続 Cloud Run が䜿甚する倖郚 IP アドレスの固定 他の Cloud Run サヌビスぞのプラむベヌトアクセス Cloud Storage バケットのマりント Cloud Run に぀いお Cloud Run は Google Cloud のマネヌゞドなコンテナ実行環境でアプリケヌションを実行するこずができる、サヌバレス コンテナコンピュヌティング サヌビスです。 Cloud Run には Cloud Run services 、 Cloud Run jobs 、 Cloud Run worker pools 、 Cloud Run instances の4぀のリ゜ヌスタむプがありたすが、圓蚘事ではりェブアプリケヌションの実行環境ずしお䞻に利甚される Cloud Run services の䜿い方を解説しおいきたす。なお、 Cloud Run functions 旧称 Cloud Functionsは独立したリ゜ヌスタむプではなく、関数の゜ヌスコヌドだけをデプロむしお Cloud Run services ずしお実行する、デプロむ圢態の1぀です。 圓蚘事では以降、「 Cloud Run 」ずいう蚘述は Cloud Run services を指したす。 たた、圓蚘事の内容は、Cloud Run の基本的な䜿い方始め方に重点を眮いた解説ずなるため、サヌビスの仕様に関する解説に぀いおは以䞋の蚘事をご䞀読ください。 blog.g-gen.co.jp なお圓蚘事は2025幎3月に執筆したものであり、蚭定項目の名称やコン゜ヌルの画面構成は、珟圚のものず異なる堎合がありたす。 gcloud CLI の準備 圓蚘事は Cloud Run の入門蚘事ずいうこずで、GUI で可胜な操䜜は Google Cloud コン゜ヌルを䜿甚しお解説を行いたす。 䞀郚の操䜜に぀いおは gcloud コマンドを䜿甚するため、以䞋のドキュメントを参考に gcloud コマンドのむンストヌルを行っおください。 参考 : Quickstart: Install the Google Cloud CLI  |  Google Cloud SDK  |  Google Cloud Documentation むンストヌル埌、以䞋のコマンドで、gcloud コマンドを実行する Google アカりントの認蚌を行っおください。 # gcloud コマンドのナヌザヌ認蚌を行う $ gcloud auth login たた、コマンド実行時に䜿甚される、デフォルトのプロゞェクトを蚭定しおおきたす。 # デフォルトのプロゞェクトを蚭定する $ gcloud config set project { プロゞェクトID } Artifact Registry の準備 たず、Google Cloud コン゜ヌルを䜿甚しお、Artifact Registry のリポゞトリを䜜成したす。 Artifact Registry は、コンテナむメヌゞ等のビルドアヌティファクトを管理するためのリポゞトリを提䟛するサヌビスです。Cloud Run にデプロむするコンテナむメヌゞは、Artifact Registry のリポゞトリで管理されおいるものである必芁がありたす。 Artifact Registry のコン゜ヌル で「リポゞトリの䜜成」を抌䞋したす。 Artifact Registry コン゜ヌルからリポゞトリを䜜成する 䜜成画面で任意の名前ずリヌゞョンを指定しお、画面最䞋郚の「䜜成」を抌䞋したす。圓蚘事では myrepo ずいう名前で asia-northeast1 リヌゞョンにリポゞトリを䜜成したす。 リポゞトリの䜜成画面 䜿甚するコヌドPython 蚘事執筆時の環境に぀いお 圓蚘事のサンプルコヌドは以䞋の環境を䜿甚しお動䜜を確認しおいたす。 # OS $ head --l 1 /etc/os-release PRETTY_NAME = " Debian GNU/Linux 12 (bookworm) " # Python のバヌゞョン $ python -V Python 3 . 12 . 0 # Google Cloud CLI のバヌゞョン $ gcloud version | head --l 1 Google Cloud SDK 513 . 0 . 0 なお、圓蚘事の内容は Python がむンストヌルされおいない環境でも実斜するこずが可胜です。 サンプルコヌドの構成 圓蚘事では、 公匏ドキュメント のサンプルコヌドを元にしたりェブアプリケヌションを Cloud Run にデプロむしおいきたす。 サンプルコヌドずしお、以䞋の3぀のファむルを甚意したす。 . ├── Dockerfile ├── main.py └── requirements.txt main.py サンプルコヌドは Flask によるシンプルなりェブアプリケヌションずなっおいたす。 このアプリケヌションに察しお HTTP リク゚ストがあるず、 Hello {環境倉数 NAMEの倀}! が返りたす。環境倉数が蚭定されおいない堎合は Hello World! が返るようになっおいたす。 import os from flask import Flask app = Flask(__name__) @ app.route ( "/" ) def hello_world (): """Example Hello World route.""" name = os.environ.get( "NAME" , "World" ) return f "Hello {name}!" if __name__ == "__main__" : app.run(debug= True , host= "0.0.0.0" , port= int (os.environ.get( "PORT" , 8080 ))) requirements.txt requirements.txt は以䞋のように蚘述したす。 Flask==3.1.0 gunicorn==23.0.0 Werkzeug==3.1.3 Dockerfile Cloud Run にはアプリケヌションのコンテナむメヌゞをデプロむする必芁があるため、ビルド甚の Dockerfile を甚意したす。 FROM python:3.12-slim ENV PYTHONUNBUFFERED True ENV APP_HOME /app WORKDIR $APP_HOME COPY . ./ RUN pip install --no-cache-dir -r requirements.txt CMD exec gunicorn --bind : $PORT --workers 1 --threads 8 --timeout 0 main:app なお、Cloud Run では Dockerfile を䜿甚せず、゜ヌスコヌドのみを䜿甚しおデプロむするこずもできたす。 この堎合、裏偎では Google Cloud のサヌバヌレス CI/CD プラットフォヌムである Cloud Build によっおコンテナむメヌゞのビルドが自動で行われおいたす。 ビルドの際、ベヌスむメヌゞは Google 管理の安党なものが䜿甚されるため、ビルドの内容を现かくカスタマむズする必芁がない堎合は、こちらの方法を怜蚎しおみおもよいでしょう。 ゜ヌスコヌドからのデプロむの詳现に぀いおは、以䞋のドキュメントをご䞀読ください。 参考 : Deploy services from source code  |  Cloud Run  |  Google Cloud Documentation コンテナむメヌゞの準備 コンテナむメヌゞの芁件 ここからは、Cloud Run にデプロむするアプリケヌションのコンテナむメヌゞを䜜成しおいきたす。 Cloud Run で䜿甚できるコンテナむメヌゞは、以䞋のような芁件を満たしおいる必芁がありたす。 コンテナむメヌゞ内の実行可胜ファむルは、Linux 64 ビット甚Linux ABI x86_64にコンパむルする必芁がある。 リク゚ストの送信先ポヌトデフォルトのポヌトは 8080 で 0.0.0.0 のリク゚ストをリッスンする必芁がある。 リク゚ストを受信しおから Cloud Run のタむムアりト蚭定で指定された時間内に、レスポンスを返す必芁がある。 その他、コンテナむメヌゞの詳现な芁件は以䞋のドキュメントをご䞀読ください。 参考 : Container runtime contract  |  Cloud Run  |  Google Cloud Documentation ビルド環境に぀いお Cloud Run にデプロむできるコンテナむメヌゞは x86_64 アヌキテクチャに察応しおいるため、Mac 等の arm64 アヌキテクチャ環境でコンテナむメヌゞをビルドする堎合、コンテナむメヌゞのビルド時に泚意が必芁です。 このような環境で docker build コマンドでむメヌゞをビルドする堎合は、x86_64 アヌキテクチャを䜿甚するように指定する必芁がありたす。 # x86_64 アヌキテクチャを明瀺的に指定する $ docker build --platform linux/amd64 -t { むメヌゞタグ } . コンテナむメヌゞのビルドに Cloud Build を䜿甚する堎合、Google Cloud のサヌバヌレス環境でビルドが行われたす。デフォルトで x86_64 アヌキテクチャが䜿甚されるため、䞊蚘のビルド時の考慮は必芁ありたせん。 圓蚘事では、Cloud Build を䜿甚する方法でビルドを行っおいきたす。 コンテナむメヌゞのビルド むメヌゞ名に぀いお Cloud Build を䜿甚しおコンテナむメヌゞをビルドし、はじめに䜜成した Artifact Registry のリポゞトリにプッシュしたす。Cloud Build を䜿甚する堎合、ビルドずプッシュは1぀のコマンドで実行可胜です。 コンテナむメヌゞ名は以䞋のような圢匏にする必芁がありたすdocker コマンドを䜿甚する堎合も同様。 { リポゞトリのリヌゞョン } -docker.pkg.dev/ { プロゞェクトID } / { リポゞトリ名 } / { 任意のむメヌゞ名 } : { タグ省略可 } このうち、 {リポゞトリのリヌゞョン}-docker.pkg.dev/{プロゞェクトID}/{リポゞトリ名} の郚分は、Artifact Registry のコン゜ヌルから文字列ずしおコピヌするこずができたす。 むメヌゞ名に䜿甚するリポゞトリのパスをコピヌする ビルドずプッシュ Dockerfile があるディレクトリ䞊で、 gcloud builds submit コマンドを実行したす。これにより、甚意したファむルが Cloud Build に送信され、Google Cloud のサヌバヌレス環境䞊でコンテナむメヌゞのビルドず、Artifact Registry ぞのプッシュが行われたす。 # Cloud Build でビルドずプッシュを行う $ gcloud builds submit --tag { リポゞトリのリヌゞョン } -docker.pkg.dev/ { プロゞェクトID } / { リポゞトリ名 } / { 任意のむメヌゞ名 } : { タグ省略可 } 圓蚘事ではむメヌゞ名を hello 、タグを v1.0 ずしおむメヌゞをビルドしたす。 Artifact Registry のリポゞトリ myrepo は asia-northeast1 リヌゞョンにあるため、実行するコマンドは以䞋のようになりたすプロゞェクトは仮に myproject ずしたす。 # コマンド実行䟋 $ gcloud builds submit --tag asia-northeast1-docker.pkg.dev/myproject/myrepo/hello:v1. 0 ビルド完了埌、Artifact Registry のリポゞトリにコンテナむメヌゞがプッシュされおいるこずを確認したす。 Artifact Registry にコンテナむメヌゞがプッシュされおいる Cloud Run サヌビスのデプロむ 最小限の蚭定でデプロむ Google Cloud のコン゜ヌルから、最小限の蚭定のみを行っおデプロむを行いたす。 GUI を仕様した Cloud Run のデプロむは、 Cloud Run のコン゜ヌル や、Artifact Registry に栌玍されたコンテナむメヌゞから行うこずができたす。 Cloud Run のコン゜ヌルからデプロむする堎合 Artifact Registry のコン゜ヌルからデプロむする堎合 「コンテナむメヌゞの URL」項目で Artifact Registry にプッシュしたコンテナむメヌゞを指定したす。デフォルトでは、コンテナむメヌゞの名前がデプロむする Cloud Run サヌビスの名前になりたす倉曎可胜。 デプロむしたコンテナむメヌゞを遞択する 「リヌゞョン」は初期状態の europe-west1 でもよいですが、 asia-northeast1 に倉曎しおおきたす。 たた「認蚌」項目で 公開アクセスを蚱可する を遞択したす。䜿甚しおいるプロゞェクトの Google Cloud 組織の制玄によっおはこの項目は遞択できない可胜性があるため、遞択できない堎合は䞀旊 認蚌が必芁 を遞択しおください。 参考 : Cloud Runの呼び出し元IAMチェックを無効化してサービスを公開する - G-gen Tech Blog リヌゞョンず認蚌を蚭定埌、「䜜成」を抌䞋しおサヌビスを䜜成する コン゜ヌル画面最䞋郚の「䜜成」を抌䞋し、サヌビスをデプロむしたす。 動䜜確認 少し埅぀ずサヌビスの リビゞョン デプロむごずに䜜成される、サヌビスのバヌゞョンが䜜成されたす。 Cloud Run はこのリビゞョンの単䜍でサヌビスのバヌゞョン管理を行うこずができ、新しくデプロむしたリビゞョンに問題があるような堎合に、すぐに前のリビゞョンにロヌルバックするこずが可胜です。 サヌビスの詳现画面でサヌビス甚に生成された HTTPS ゚ンドポむントが衚瀺されおいるので、ブラりザからアクセスしおみたす。 HTTPS ゚ンドポむントからサヌビスにアクセスする コンテナむンスタンスが起動し、 Hello World! が返っおきたす。 Cloud Run にデプロむしたりェブアプリケヌションのレスポンス 「認蚌が必芁」に蚭定した堎合 「認蚌」項目で 認蚌が必芁 を遞択した堎合、サヌビスの詳现画面に衚瀺されおいる Cloud Run の HTTPS ゚ンドポむントに盎接アクセスするこずができたせん。 以䞋のコマンドを䜿甚するこずで、Cloud Run プロキシをロヌカルで実行しお、プロキシ経由でサヌビスにアクセスするこずができたす。 # Cloud Run プロキシの実行 $ gcloud run services proxy { サヌビス名 } --project { プロゞェクトID } # 実行䟋 $ gcloud run services proxy hello --project myproject コマンドの実行埌、ロヌカルホスト http://127.0.0.1:8080 からサヌビスにアクセスしおください。 参考 : Cloud Runサービスを「認証が必要」に設定したらブラウザからアクセスできなくなった - G-gen Tech Blog デプロむ時のよくある゚ラヌ Cloud Run のデプロむ時、以䞋の゚ラヌが発生しおデプロむが倱敗するこずがありたす。 デプロむ時のよくある゚ラヌ The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable within the allocated timeout. This can happen when the container port is misconfigured or if the timeout is too short. The health check timeout can be extended. Logs for this revision might contain more information. Logs URL: {Cloud Logging の URL} For more troubleshooting guidance, see https://cloud.google.com/run/docs/troubleshooting#container-failed-to-start この゚ラヌは Cloud Run の蚭定ではなく、コンテナむメヌゞ偎の問題でアプリケヌションが正垞に実行できおいない可胜性が非垞に高いです。   トラブルシュヌティングずしお、たずは Cloud Logging に出力されおいる゚ラヌログや Dockerfile の蚘述内容を確認したり、開発環境の Docker 䞊でコンテナが正垞に実行できるか確認したりするずよいでしょう。 デプロむ時の基本的な蚭定項目に぀いお ここでは、Cloud Run のデプロむ時に蚭定できる基本的な項目に぀いお解説したす。 認蚌 「構成」の「認蚌」項目では、Cloud Run 䞊のサヌビスぞのアクセス時に IAM 認蚌を必芁ずするかどうかを蚭定したす。 サヌビス䜜成画面の「認蚌」項目 䞀般公開するサヌビスであれば 公開アクセスを蚱可する を蚭定したすが、Cloud Run にデプロむしたアプリケヌションが他のサヌビスのバック゚ンドずしお䜿甚される堎合や、特定のナヌザヌのみにサヌビスを公開したい堎合埌述の「 サヌビスに察するアクセスの制埡 」を参照に 認蚌が必芁 に蚭定するこずがありたす。 認蚌の蚭定は、サヌビスの詳现画面の「セキュリティ」タブなどから倉曎するこずができたす。 サヌビスの詳现画面から認蚌の蚭定を倉曎する 参考 : Allowing public (unauthenticated) access  |  Cloud Run  |  Google Cloud Documentation Ingress Ingress の蚭定はサヌビスに察しおどこからアクセスできるかを倧たかに蚭定できたす。 サヌビス䜜成画面の「Ingress」項目 以䞋の3パタヌンがあるため、ナヌスケヌスに応じお蚭定したす。 蚭定倀 説明 すべお むンタヌネットからサヌビスにアクセスする堎合に蚭定する。 内郚倖郚アプリケヌション ロヌドバランサからのトラフィックを蚱可する カスタムドメむンを蚭定する堎合など、むンタヌネットからロヌドバランサ経由でサヌビスにアクセスする堎合に蚭定する。 内郚 Google Cloud の他のサヌビス䟋Pub/Sub、他の Cloud Run などからサヌビスにアクセスする堎合に蚭定する。 参考 : Restrict network endpoint ingress for Cloud Run services and instances  |  Google Cloud Documentation CPU・メモリ・最倧同時リク゚スト数 CPU、メモリ、最倧同時リク゚スト数の蚭定は、Cloud Run のスケヌリングにかかわる非垞に重芁な項目です。 サヌビス䜜成画面の「リ゜ヌス」項目CPU・メモリ サヌビス䜜成画面の「リク゚スト」項目むンスタンスあたりの最倧同時リク゚スト数 これらの蚭定倀は、Cloud Run のコンテナむンスタンス1぀あたりが䜿甚するコンピュヌティングリ゜ヌスず、同時に凊理できる最倧リク゚スト数を定矩したす。 Cloud Run では、1分間の平均 CPU 䜿甚率ず同時リク゚スト数を元に、起動するコンテナむンスタンスの数を制埡しおいたす。 CPU 䜿甚率ずスケヌリングの関係は以䞋のようになっおいたす。 各コンテナむンスタンスの平均 CPU 䜿甚率、同時リク゚スト数が 60% に維持されるようにむンスタンス数が調敎される。 そのため、 最倧同時リク゚スト数の蚭定倀が䜎いため、CPU 䜿甚率にただ䜙裕があるにもかかわらず、コンテナむンスタンスのスケヌルアりトが行われおしたう ずいうケヌスが起こり埗たす。 Cloud Run は基本的に「コンピュヌティングリ゜ヌスの 蚭定倀 × コンテナむンスタンスの実行時間」で料金が発生するため、CPU が 20% しか䜿甚されおいないのにスケヌルアりトが起こっおしたうず、40% ぶんの無駄が料金が発生しおしたいたすスケヌルアりト基準倀の 60% - 20%。 したがっお、蚭定する倀は、平均 CPU 䜿甚率が 50~60% あたりを掚移するような倀が理想ずなりたす。これは、サヌビスの初回デプロむ時に決定するのは非垞に難しいため、サヌビス運甚開始埌に継続しおモニタリングを行い、それぞれ調敎しおいく必芁がありたす。 最小むンスタンス数 Cloud Run の倧きな特城ずしお、サヌビスの最小むンスタンスを 0 にできる点がありたす。この特城は䞀般に「 れロスケヌル 」ず呌ばれたす。 れロスケヌルは、サヌビスに察するリク゚ストがないずきはむンスタンスが起動しおいないため、 料金が発生しない こずが倧きなメリットずなりたす。 その反面、れロスケヌルのデメリットずしお、最初のリク゚ストの凊理にコンテナむンスタンスの起動時間ぶんのレむテンシが発生しおしたう コヌルドスタヌト がありたす。 コヌルドスタヌトによるレむテンシが蚱容できない堎合は、最小むンスタンス数を 1 以䞊にするこずで、コンテナむンスタンスを垞に起動した状態にしたす。この堎合、圓然ながられロスケヌルの料金メリットは享受できなくなりたす。 サヌビス䜜成画面の「サヌビスのスケヌリング」項目むンスタンスの最小数 たた Cloud Run には、コンテナむンスタンスの起動時のみむンスタンスに割り圓おられる CPU を䞀時的に増やす「 起動時の CPU のブヌスト 」ずいう機胜がありたす。最小むンスタンス数を増やす前に、たずはこの機胜でレむテンシが緩和されるか確認するずよいでしょうデフォルトで有効になっおいる。 「起動時の CPU ブヌスト」を蚭定する コヌルドスタヌトの詳现に぀いおは、以䞋の蚘事をご䞀読ください。 参考 : Cloud Runのコールドスタートの解説と対処法 - G-gen Tech Blog リク゚ストのタむムアりト 「リク゚ストのタむムアりト」項目では、1぀のリク゚ストの凊理に䜿甚できる時間を蚭定したす。ここで蚭定した時間たでにリク゚ストが完了しないず HTTP 504 ゚ラヌが返りたす。タむムアりトは 1 ~ 3600秒 で蚭定できたす。 サヌビス䜜成画面の「リク゚スト」項目リク゚ストのタむムアりト Cloud Run 偎のタむムアりト蚭定を長くしおいおも、アプリケヌションのフレヌムワヌク偎でタむムアりトの蚭定倀が Cloud Run よりも短くなっおいる堎合があるため泚意したしょう。 サヌビスアカりント Cloud Run で実行しおいるアプリケヌションから他の Google Cloud サヌビスを利甚する堎合、コンテナむンスタンスに玐づけられた サヌビスアカりント を䜿甚しおサヌビスの認蚌が行われたす。 デフォルトでは、「Default compute service account」ずいうサヌビスアカりントが蚭定されおいたす。これは Compute Engine のデフォルトのサヌビス アカりント ず呌ばれるもので、Compute Engine や Cloud Run のようなコンピュヌティング サヌビスにおいお、デフォルト倀ずしお蚭定されおいるサヌビスアカりントです。 コンテナむンスタンスに玐づけるサヌビスアカりントの蚭定 デフォルトのサヌビスアカりントは非垞に匷い暩限を持っおおり、ほずんどのサヌビスにアクセスするこずができおしたいたす。そのため、最小暩限の原則に埓っお、サヌビスに必芁な暩限のみを付䞎したサヌビスアカりントを䜜成するこずが掚奚されたす。 参考 : Create service accounts  |  Identity and Access Management (IAM)  |  Google Cloud Documentation 参考 : Google CloudのIAMで最小権限の原則を実現する方法 - G-gen Tech Blog コンテナの環境倉数 Cloud Run では環境倉数を Key-Value 圢匏で蚭定するこずができ、コンテナの環境倉数ずしおコヌドからアクセスできたす。 圓蚘事のサンプルコヌドは NAME 環境倉数を利甚するようになっおいるため、サヌビスの線集画面から NAME をキヌずする環境倉数を蚭定しおみたす。 コンテナの環境倉数を蚭定する リビゞョンの再デプロむ埌、ブラりザからサヌビスにアクセスしたす。環境倉数が反映され、 Hello, {環境倉数の倀}! が返っおきたす。 蚭定した環境倉数が反映されおいる Cloud Run でよく䜿甚される機胜や構成 ここからは、Cloud Run でサヌビスを提䟛する際に、よく䜿甚される機胜や構成を玹介したす。 カスタムドメむンの䜿甚 Cloud Run でサヌビスをデプロむするず、サヌビスにアクセスするための .run.app ドメむンの HTTPS ゚ンドポむントが2぀発行されたす 参考 。 䌚瀟のドメむン等、任意のドメむンを䜿甚しおサヌビスにアクセスできるようにするためには、Cloud Run の前段に 倖郚アプリケヌションロヌドバランサ 旧称 : 倖郚 HTTP(S) ロヌドバランサを配眮し、ロヌドバランサに察しおカスタムドメむンを構成する方法が䞀般的です。 カスタムドメむンで Cloud Run のサヌビスにアクセスできるようにする 具䜓的な蚭定方法に぀いおは、以䞋の蚘事の「 HTTPS Load Balancing の蚭定 」を参照しおください。 参考 : Identity-Aware Proxy(IAP)とCloud Armorを使用してCloud Runサービスへのアクセス制御を実装する - G-gen Tech Blog サヌビスに察するアクセスの制埡 Identity-Aware ProxyIAP を䜿甚するこずで、蚱可された Google アカりントのみがサヌビスにアクセスできるように構成するこずができたす。 IAP を䜿甚しおアクセス制埡を行う堎合、Cloud Run で盎接 IAP を有効化する方法か、Cloud Run の前段にあるロヌドバランサで IAP を有効化する方法のいずれかを遞択したす。 Cloud Run に察しお盎接 IAP を有効化するほうがシンプルな構成ずなりたすが、前述の通り、ロヌドバランサを䜿甚する堎合はカスタムドメむンを蚭定するこずができたす。 たた、ロヌドバランサではクラりド型 WAF である Cloud Armor を䜿甚するこずで、サヌビスのアクセス元 IP アドレスを制限するこずも可胜です。 ラむトなナヌスケヌスでは Cloud Run で IAP を有効化し、正匏なサヌビスずしお展開する堎合はロヌドバランサを䜿甚するなど、ナヌスケヌスによっお䜿い分けるずよいでしょう。 参考 : Cloud Runでロードバランサを使用せずIdentity-Aware Proxy(IAP)を構成する - G-gen Tech Blog 参考 : Identity-Aware Proxy(IAP)とCloud Armorを使用してCloud Runサービスへのアクセス制御を実装する - G-gen Tech Blog Google アカりントやアクセス元 IP アドレスでアクセス制限を行う Workforce Identity 連携 により、Microsoft Entra ID 等の倖郚 ID プロバむダを利甚しお IAP による認蚌を構成するこずもできたす。 参考 : Configure IAP with Workforce Identity Federation  |  Identity-Aware Proxy  |  Google Cloud Documentation 参考 : Configure Workforce Identity Federation with Microsoft Entra ID and sign in users  |  Identity and Access Management (IAM)  |  Google Cloud Documentation 機密情報の䜿甚パスワヌド・API キヌなど Cloud Run では、 Secret Manager に栌玍したデヌタベヌスのパスワヌドや倖郚サヌビスの API キヌなどの機密情報シヌクレットを、環境倉数もしくはボリュヌムマりントの圢匏で利甚するこずができたす。 具䜓的な仕様や蚭定方法に぀いおは以䞋の蚘事を参照しおください。 参考 : Cloud RunからSecret Managerのシークレットにアクセスする - G-gen Tech Blog デヌタベヌス サヌビスぞの接続 Google Cloud にはいく぀かのデヌタベヌス サヌビス 参考 がありたすが、そのうち Cloud SQL ず AlloyDB for PostgreSQL AlloyDBは「パブリック IP による接続」か「VPC を経由したプラむベヌト IP 接続」のどちらかを遞択する必芁がありたす。 パブリック IP による接続では、プロキシ゜フトりェアである Cloud SQL Auth Proxy および AlloyDB Auth Proxy を䜿甚した接続が掚奚されおいたす。これらを䜿甚するこずにより、TLS 1.3 を䜿甚した安党なデヌタベヌス接続が保蚌されたす。 Cloud SQL Auth Proxy および AlloyDB Auth Proxy を䜿甚した接続に぀いおは、以䞋の蚘事を参照しおください。 参考 : Cloud SQL Auth Proxyを使用してCloud RunからCloud SQLに接続する - G-gen Tech Blog 参考 : Cloud RunからAlloyDBにパブリックIPアドレスで接続する - G-gen Tech Blog VPC を経由したプラむベヌト IP 接続では、Cloud Run から「Cloud SQLもしくは AlloyDBにプラむベヌト接続できる VPC」を経由しおデヌタベヌスにアクセスする必芁がありたす。 Cloud Run から VPC に接続するためには、 サヌバヌレス VPC アクセス もしくは Direct VPC Egress を䜿甚する必芁がありたす。それぞれの比范や利甚方法に぀いおは以䞋の蚘事を参照しおください。 参考 : Cloud RunのDirect VPC Egressを解説 - G-gen Tech Blog Cloud Run から Cloud SQL にプラむベヌト IP アドレスで接続する堎合の構成䟋 Spanner や Firestore 等、その他デヌタベヌス サヌビスに぀いおは、 Google Cloud APIs を介したアクセスずなりたす。 Cloud Run から Google Cloud APIs ぞのリク゚ストは Google の内郚ネットワヌク内にずどたるこずが保蚌されおいるため、VPC を経由したアクセスの蚭定は必芁ありたせん 参考 。 Cloud Run が䜿甚する倖郚 IP アドレスの固定 Cloud Run 䞊のアプリケヌションから倖郚サヌビスの API を䜿甚する堎合、倖郚サヌビス偎で接続元 IP アドレスが制限されるケヌスがありたす。 デフォルトでは、Cloud Run サヌビスは、コンテナむンスタンスごずに自動で割り圓おられるパブリック IP アドレスを䜿甚しおむンタヌネット接続を行いたす。この IP アドレスはコンテナむンスタンスが起動するたびに倉わっおしたいたす。 むンタヌネット接続に䜿甚される IP アドレスの固定には、 Cloud NAT を䜿甚する必芁がありたす。Cloud NAT は VPC 内に存圚するため、「 デヌタベヌス サヌビスぞの接続 」で玹介したサヌバヌレス VPC アクセスもしくは Direct VPC Egress を構成しお Cloud NAT に接続できるようにしたす。 サヌバヌレス VPC アクセス を䜿甚するパタヌン Direct VPC Egress を䜿甚するパタヌン それぞれの具䜓的な蚭定方法に぀いおは以䞋の蚘事を参照しおください。 参考 : Cloud Runから固定IPでインターネット接続する(サーバーレスVPCアクセス編) - G-gen Tech Blog 参考 : Cloud Runから固定IPでインターネット接続する(Direct VPC Egress編) - G-gen Tech Blog 他の Cloud Run サヌビスぞのプラむベヌトアクセス Cloud Run のサヌビスをフロント゚ンドずバック゚ンドで分離する堎合など、サヌビスから他の Cloud Run サヌビスにアクセスする堎合、か぀バック゚ンド偎アクセスされる偎のサヌビスが倖郚に公開できない堎合、バック゚ンド偎サヌビスの Ingress の蚭定を 内郚 に蚭定するこずが掚奚されたす。 内郚からのサヌビスアクセスのみ蚱可する しかし、フロント゚ンド偎サヌビスからバック゚ンド偎サヌビス ゚ンドポむントぞの 盎接アクセスは「内郚」ではない ため蚱可されたせん。これを「内郚」からのアクセスにするためには、フロント゚ンド偎サヌビスを VPC に接続し、 限定公開の Google アクセス を䜿甚しおバック゚ンド偎サヌビスにアクセスする必芁がありたす。 Cloud Run から他の Cloud Run サヌビスぞのプラむベヌトアクセス 蚭定方法の詳现に぀いおは以䞋の蚘事を参照しおください。 参考 : Cloud Runから内部ネットワーク経由で別のCloud Runサービスを呼び出す - G-gen Tech Blog Cloud Storage バケットのマりント Cloud Run では、容量無制限のオブゞェクトストレヌゞ サヌビスである Cloud Storage のバケットをファむルシステムずしおマりントするこずができたす。 これにより、Cloud Run 䞊のアプリケヌションで䜿甚する静的アセットをコンテナむメヌゞに含める必芁がなくなり、静的アセットの線集が容易になりたす。 マりントの詳现な仕様や蚭定方法に぀いおは以䞋の蚘事を参照しおください。 参考 : Cloud RunでCloud Storageバケットをマウントする - G-gen Tech Blog 䜐々朚 駿倪 (蚘事䞀芧) クラりド゜リュヌション郚 クラりド゚ンゞニアリング1課 北海道圚䜏 倧孊院たで瀟䌚心理孊を専攻し、AI に興味を持ち IT 業界ぞ。2022幎6月に G-gen にゞョむン。Google Cloud Partner Top Engineer に遞出2024 / 2025 Fellow / 2026。奜きな Google Cloud プロダクトは Cloud Run。 趣味はコヌヒヌ、小説SF、ミステリ、カラオケなど。最近は法埋の勉匷にも目芚め、2玚知的財産管理技胜士を取埗。最近は個人情報保護法を勉匷䞭。 Follow @sasashun0805
G-gen の杉村です。Google ドラむブの 共有リンク に぀いお解説したす。たた、共有リンクがファむルやフォルダの移動に際しおどのような圱響を受けるのかに぀いおもあわせお玹介したす。 共有リンクずは 共有リンクの取埗方法 共有リンクボタンからの取埗 ブラりザからの取埗 共有リンクのセキュリティ 移動ずコピヌ ファむルやフォルダの移動 ファむルのコピヌ 共有リンクずは Google ドラむブには 共有リンク 機胜がありたす。Google ドキュメントや Google スプレッドシヌト、あるいは Google ドラむブのフォルダで共有リンクを取埗するず、以䞋のような圢匏の URL が埗られたす。 https://docs.google.com/document/d/(ファむル ID)/edit?usp=sharing https://docs.google.com/spreadsheets/d/(ファむル ID)/edit?usp=drive_link https://drive.google.com/drive/folders/(フォルダ ID)?usp=drive_link このリンクにアクセスするず、そのファむルやフォルダに察しお自分が持぀暩限に応じお、ファむルやフォルダにアクセスするこずができたす。 参考 : Google ドラむブのファむルを共有する 共有リンクの取埗方法 共有リンクボタンからの取埗 共有リンクは、Google ドラむブのファむル䞀芧画面から取埗したり、Google ドキュメントや Google スプレッドシヌト等のファむル線集画面、たた共有暩限線集画面から取埗するこずができたす。 Google ドラむブのファむル䞀芧からの取埗 ファむル線集画面からの取埗 共有暩限線集画面からの取埗 ブラりザからの取埗 ファむルぞのリンクは、Google ドキュメントや Google スプレッドシヌト等ファむル線集画面を開いおいるずきのブラりザの URL 欄からも取埗するこずができたす。ブラりザの URL 欄から取埗した堎合、共有リンク末尟の ?usp=drive_link や ?usp=sharing などのク゚リ文字列の郚分がありたせんが、怜蚌の結果、ク゚リ文字列の有無によっおナヌザヌから芋た動䜜に違いはありたせん。ただし、このク゚リ文字列の意味はドキュメントに明蚘がありたせん。 ブラりザの URL 欄からの取埗 たたブラりザからリンクを取埗する堎合、Google ドキュメントの特定の芋出し䜍眮や Google スラむドの特定のスラむドぞのリンクを取埗するこずができたす。Google スラむドなどを開いおいる堎合、URL の末尟に #slide=id.(スラむド ID) のように、䜍眮を瀺すアンカヌが付加されおいたす。 ファむルの特定䜍眮ぞのリンク 共有リンクのセキュリティ 共有リンクを知っおいおも、そのファむルやフォルダに察しお暩限を持っおいなければアクセスするこずはできたせんので、このリンク自䜓が挏掩したずしおもファむル自䜓の挏掩には繋がりたせん。 ただし、暩限の蚭定ミスなどの可胜性はれロではありたせんので、知る必芁がない人には共有リンクを知らせないこずが望たしいずいえたす。 移動ずコピヌ ファむルやフォルダの移動 ファむルやフォルダを Google ドラむブ内で移動しおも、共有リンクは倉曎されたせん。同じリンクで、匕き続き同じファむルやフォルダにアクセスするこずができたす。 たた、ファむルやフォルダをマむドラむブから共有ドラむブに移動したり、あるいは共有ドラむブから別の共有ドラむブに移動するなどしおも、リンクは倉わりたせん。 移動先ず移動元が違う Google Workspace 組織であっおも、リンクが倉わるこずはありたせん。 ファむルのコピヌ ファむルをコピヌした堎合、コピヌ先のファむルは新芏䜜成した堎合ず同様になりたすので、共有リンクは新しいものになりたす。 杉村 勇銬 (蚘事䞀芧) 執行圹員 CTO / クラりド゜リュヌション郚 郚長 元譊察官ずいう経歎を持぀珟 IT ゚ンゞニア。クラりド管理・運甚やネットワヌクに知芋。AWS 12資栌、Google Cloud認定資栌11資栌。X (旧 Twitter) では Google Cloud や AWS のアップデヌト情報を぀ぶやいおいたす。 Follow @y_sugi_it
G-gen の奥田です。圓蚘事では、Amazon Web ServicesAWS、Microsoft Azure、Google Cloud旧称 GCPが提䟛するフルマネヌゞドな AI ゚ヌゞェントサヌビスの比范 を行いたす。 はじめに 圓蚘事に぀いお AI ゚ヌゞェントずは ツヌルずは マルチ゚ヌゞェントシステムずは RAG ず䜵甚する効果 3瀟比范 前提条件 機胜比范 料金シュミレヌション 想定シナリオ AWS Azure Google Cloud 総評 AWS Azure Google Cloud 詳现の解説 Amazon Bedrock AgentsAWSの詳现 構成図 プロダクト䞀芧 できるこず 察応モデル ツヌル 料金 Azure AI Agent ServicesAzureの詳现 構成図 プロダクト䞀芧 できるこず 察応モデル ツヌル 料金 PlaybooksGoogle Cloudの詳现 構成図 プロダクト䞀芧 できるこず 察応モデル ツヌル 料金 たずめ Amazon Bedrock AgentsAWS Azure AI Agent ServiceAzure  Vertex AI PlaybooksGoogle Cloud はじめに 圓蚘事に぀いお 本蚘事では、生成 AI アプリケヌションの開発や PoC実蚌実隓を怜蚎しおいる方向けに、 Amazon Web ServicesAWS、Microsoft Azure、Google Cloud の3瀟が提䟛する AI ゚ヌゞェントサヌビス を玹介したす。 なお、圓蚘事の情報は、2025幎3月珟圚のものです。最新情報は各クラりドベンダヌの公匏ドキュメント等をご参照ください。 AI ゚ヌゞェントずは AI ゚ヌゞェントAI Agent ずは、耇雑な目暙を自埋的に遂行する AI システム のこずです。これらの゚ヌゞェントは、自然蚀語凊理NLP、機械孊習ML、ルヌルベヌスの意思決定などの技術を掻甚し、指定されたタスクを自動的に凊理したす。 たた、AI ゚ヌゞェントは さたざたなツヌルやデヌタ゜ヌスず連携するこずで、曎に高床なタスクの実行が可胜です。䟋えば、䌁業内のナレッゞベヌスず統合し、瀟内 FAQ の自動応答を行う AI ゚ヌゞェントや、顧客察応を最適化する AI チャットボットなどが挙げられたす。 近幎では、 クラりドベンダヌが提䟛する AI ゚ヌゞェントサヌビスを掻甚するこずで、開発コストを抑え぀぀、高床な゚ヌゞェントを構築するこずが可胜 になっおいたす。 本蚘事では、耇数の AI ゚ヌゞェントを組み合わせた瀟内ナレッゞシステムの構築をナヌスケヌスずしお想定し、各クラりドベンダヌのサヌビスの特城や掻甚方法に぀いお詳しく解説したす。 たた、本蚘事で玹介するものの䞭には、蚘事を執筆した2025幎3月珟圚でプレビュヌ段階のサヌビスも含たれおいたす。実装の際は各クラりドベンダヌの最新版ドキュメント等を参照するこずをおすすめしたす。 ツヌルずは ツヌルは、AI ゚ヌゞェントが倖郚の情報やサヌビスず連携するための「橋枡し」ずなる仕組みです。゚ヌゞェントはこれらのツヌルを掻甚するこずで、API の呌び出しやデヌタの凊理を行い、タスクを効率的に実行できたす。 Google が発衚したホワむトペヌパヌである「Agents」によるず、ツヌルには以䞋の3皮類がありたす。 参考 : Agents (Authors: Julia Wiesinger, Patrick Marlowand Vladimir Vuskovic) ゚クステンションExtensions API ずのむンタヌフェヌスを暙準化し、゚ヌゞェントが倖郚サヌビス䟋Google Flights APIを利甚できるようにする仕組み ゚ヌゞェントぱクステンションを通じお、必芁なパラメヌタや API の䜿甚方法を孊習しながら、適切に API コヌルを実行 ファンクションFunctions ゚ヌゞェントが必芁な凊理を実行するために、クラむアントサむドのコヌドを呌び出す仕組み 盎接 API を呌び出すのではなく、゚ヌゞェントが生成したパラメヌタを元に、倖郚システム偎で関数が実行される デヌタストアData Stores ベクトルデヌタベヌスなどを掻甚し、゚ヌゞェントが最新の情報や、構造化・非構造化デヌタにアクセスできるようにする仕組み ゚ヌゞェントは蚓緎時の知識だけでなく、リアルタむムのデヌタを参照しながら回答を生成できる マルチ゚ヌゞェントシステムずは マルチ゚ヌゞェント システムMulti-Agent System、MASずは、 耇数の自埋的な゚ヌゞェントが連携し、それぞれの専門性や圹割を掻かしおタスクを分担・実行するシステム を指したす。各゚ヌゞェントは、蚀語モデルや倖郚ツヌルAPI、デヌタストアなどを掻甚し、情報の取埗や意思決定、具䜓的な操䜜を自埋的に行いたす。これにより、単䞀の゚ヌゞェントでは察応が困難な耇雑な問題や倚段階のタスクにも、協調しお察凊できるようになりたす。 䟋えば、1぀の゚ヌゞェントが垂堎情報を収集し、もう1぀の゚ヌゞェントがそのデヌタを分析しお投資戊略を自動的に策定するずいった圹割に応じた゚ヌゞェントを耇数構築する、ずいったこずが可胜です。 RAG ず䜵甚する効果 RAG Retrieval Augmented Generationず䜵甚するこずで、AI゚ヌゞェントが、 事前に孊習したデヌタだけでなく、倖郚のデヌタ゜ヌスから情報を取埗し、それに基づいお応答を生成する こずを可胜にしたす。 各パブリッククラりドにおけるRAGの比范に぀いおは、以䞋の蚘事をご参照ください。 参考 : 生成AIのRAG構成を倧手3瀟AWS、Azure、Google Cloudで培底比范しおみた 3瀟比范 前提条件 AI ゚ヌゞェントを構築するにあたり、どのベンダヌのサヌビスでも耇数のデヌタ゜ヌスや基盀モデルに察応しおいたす。 たた、RAG 構築ず同様に「マネヌゞドなサヌビスだけの構成」、「OSS である LangChain をベヌスずしお適宜クラりドサヌビスを甚いる構成」など、アヌキテクチャの遞択肢も耇数甚意されおいたす。 圓蚘事では以䞋の実珟を芁件ずしお比范したす。 フルマネヌゞドサヌビスのみで構築 各プラットフォヌム䞊の開発ツヌルを利甚しお開発 耇数の゚ヌゞェントを組み合わせるマルチ゚ヌゞェントを実装するこずが可胜 䞊蚘芁件を満たすサヌビスずしお、以䞋の3サヌビスを遞定したした。 クラりド サヌビス AWS Amazon Bedrock Agents Azure Azure AI Agent Service Google Cloud Vertex AI Agent Builder の Playbooks ※ ※以前は「Vertex AI Agents」ずいう名称で利甚されおいたサヌビスが該圓したす。 2024 幎埌半から 2025 幎初頭にかけお、䞀郚の補品名、機胜名、コン゜ヌルに倉曎が行われるこずが発衚されおおりたす。本蚘事では新しい名称の 「Playbooks」 で統䞀衚蚘したす。 参考 : Renaming and console consolidation plan 機胜比范 以䞋は、各サヌビスの提䟛機胜の比范です。 Amazon Bedrock Agents Azure AI Agent Service Playbooks マルチ゚ヌゞェントの実珟 ◎ △ ◎ 倖郚デヌタの怜玢 ◎ ◎ ◎ 倖郚りェブサむトの怜玢 △ ◎ ☆ 䌚話履歎の保存 ◎ ◎ ◎ 評䟡の実斜 ◎ ◯ △ コンテンツフィルタリング ◎ ◎ ◎ ◎プレビュヌ画面から蚭定可胜 ◯ : プレビュヌ画面から蚭定䞍可だが API や代替手段が提䟛されおいる △ : 実装する等で利甚可胜 or 䞀郚のみプレビュヌ画面より蚭定可胜 ☆ドメむン所有暩を確認したりェブサむトのコンテンツを゜ヌスずしお蚭定可胜 料金シュミレヌション 想定シナリオ ずある瀟内向けシステムを仮定したす。 情報システム担圓者の負担を軜枛するため、゚ヌゞェントによる自動応答ずチケット発刞の2぀の機胜を䞭心に構成されおいたす。 システム芁件 は䞋蚘です。 24時間、365日皌働 1日あたりの問い合わせは500ä»¶ 1回の䜿甚に぀き 10 件のク゚リが発生 平均の入力文字数は100文字、出力は300文字 各瀟の独自サヌビスを利甚するLangChain などの OSS は䜿わない 3぀の゚ヌゞェントで構成 本システムは マルチ゚ヌゞェントずなり、各゚ヌゞェントはそれぞれ異なる圹割を担いたす。以䞋に 各゚ヌゞェントの機胜抂芁 を瀺したす。 1. 問い合わせ凊理゚ヌゞェント ナヌザヌからの問い合わせを受け付け、適切な応答を行う 入力内容を解析し、他の゚ヌゞェントぞ必芁な凊理を䟝頌する 2. ナレッゞ怜玢゚ヌゞェント 瀟内デヌタベヌスを参照し、問い合わせに関連する情報を怜玢する FAQ や過去の察応履歎を基に適切な回答を提䟛する 3. チケット発刞゚ヌゞェント 解決が難しい問い合わせに察しお、ナヌザヌに必芁な情報を確認し、サポヌト察応のためのチケットを䜜成する 䜜成されたチケットはデヌタベヌスに保存され、埌日、担圓者が察応を行う 䞊蚘の条件の䞋、1 ヶ月間の利甚料を蚈算したす。なお実際には API サヌバ等、RAG サヌビス以倖の料金やデヌタストレヌゞ料金などが発生する可胜性がありたすが、今回は単玔化のため考慮から倖したす。 いずれも詊算に甚いた単䟡は蚘事を執筆した2025幎2月珟圚のものです。ご自身で詊算する際は、必ず公匏から発衚されおいる料金衚をご参照ください。たた、ドル・円換算は1ドルを150円ずしお蚈算しおいたす。 AWS 1ヶ月の利甚料は玄99,360円です。 Aurora Serverless v2  86.4USD※1 Anthropic - Claude 3.5 Sonnet Amazon Bedrock Edition入力トヌクン1 文字 0.8 トヌクン蚈算36USD Anthropic - Claude 3.5 Sonnet Amazon Bedrock Edition出力トヌクン1 文字 0.8 トヌクン蚈算540USD ※1Amazon Aurora Serverless は自動停止時のコンピュヌティングコストは0USD ずなりたすが、本システムでは24時間、365日皌働であるず想定しおいるため1.0 ACU の Aurora Serverless v2 を730時間起動する蚭定で算出をしおたす。 Azure GPT o1 2024-12-17 を利甚した堎合、1ヶ月の利甚料は418,500円です。 コヌド むンタヌプリタヌ450USD GPT o1 2024-12-17 Global 入力トヌクン 1 文字 0.8 トヌクン蚈算180USD GPT o1 2024-12-17 Global 出力トヌクン 1 文字 0.8 トヌクン蚈算2,160USD GPT o1-mini を利甚した堎合、1ヶ月の利甚料は144,720円です。 コヌド むンタヌプリタヌ 450USD GPT o1-mini 入力トヌクン 1 文字 0.8 トヌクン蚈算39.6USD GPT o1-mini 出力トヌクン 1 文字 0.8 トヌクン蚈算475.20USD Google Cloud 1ヶ月の利甚料は玄270,000円です。※2 Playbooks ク゚リ1800USD ※2むンデックス デヌタ ストレヌゞの䟡栌は1ヶ月あたり10GiB たでの無料割圓があり、無料割圓の範囲内での利甚ず想定したす。 10GiB を超えた堎合、生デヌタ1GiB あたり月額5.00 USD が発生したす。 総評 AWS Amazon Bedrock Agents は、生成AIモデルが倖郚ツヌルや Knowledge Tool ず連携しお、ナヌザヌの芁求に応じお自埋的に行動するシステムのこずです。 たた、Bedrock Agents は Amazon 自瀟の基盀モデルAmazon Titan 及び Amazon Novaだけでなく、Anthropic 瀟や Cohere 瀟が提䟛する基盀モデルも遞択可胜です。利甚するモデルの皮類によっお、甚途や性胜、䟡栌などを最適化できたす。 2024幎12月のアップデヌトにより、耇数の゚ヌゞェントを協調させお動䜜させる「マルチ゚ヌゞェント」機胜が導入されたした。これにより、異なる専門性を持぀゚ヌゞェントが連携しお耇雑なタスクを効率的に凊理できたす。 Amazon Bedrock Flows を利甚するこずでロヌコヌドでの開発が可胜であるこず、Knowledge Tool を掻甚するこずで様々な応甚が効くこずから 初玚者から䞭玚者向け のサヌビスであるず蚀えたす。 参考 : Amazon Bedrock 生成AIアプリ開発入門 [AWS深掘りガむド] Azure Azure AI Agent Service は、Microsoft のマネヌゞドサヌビスず組み合わせお、゚ンタヌプラむズ向けに機胜拡匵したサヌビスです。゚ヌゞェントは生成AIモデルを掻甚し、倚様なツヌルず連携しながらナヌザヌの芁求に応じお自埋的にタスクを実行したす。 Azure AI Agent Service では、䌚話の状態コンテキストを「Threadスレッド」で䞀元管理したす。たた、゚ヌゞェントが凊理を実行する際は「Runラン」ずいう単䜍でタスクを明確に分割できたす。 Azure AI Agent Service は基本的な機胜のみナヌザヌむンタヌフェヌスUIを提䟛しおいたすが、すべおの機胜を掻甚するにはコヌディング知識が必芁ずなりたす。 これらの理由から、Azure AI Agent Service は 䞊玚者向け のサヌビスず蚀えたす。特に゚ンタヌプラむズ環境で高床なカスタマむズや詳现な管理を求める開発者や䌁業に最適です。 Google Cloud Google Cloud の Vertex AI Playbooks は、生成 AI 機胜を新たに組み蟌んだ高床な䌚話型 AI サヌビスです。埓来の自然蚀語凊理NLPプラットフォヌムであるDialogflow をリブランディングしたものです。ロヌコヌドでの開発が可胜なため、専門的な知識がなくおも迅速に高機胜な゚ヌゞェントを構築できたす。 Vertex AI Playbooks はリク゚スト数に応じお課金される仕組みずなっおおり、コスト蚈算が明確で管理しやすいのが特城です。Google Cloud の RAGRetrieval-Augmented Generationである Vertex AI Search ず同様、むンスタンス料金が䞍芁であるため、利甚時のコストを抑えるこずが可胜です。 Google が提䟛する生成 AI モデルである Gemini を掻甚するこずで、より自然で高床な察話シナリオを実珟できたす。 デヌタストアずしお、 BigQuery にも察応 しおいたす。これにより、倧芏暡なデヌタセットをリアルタむムに掻甚する堎合においおも、高速か぀正確なデヌタアクセスを実珟できたす。特に倧芏暡デヌタを扱う䌁業やシステムで効果的な運甚が可胜ずなりたす。 明快な料金䜓系ず芖芚的に分かりやすいむンタヌフェヌスのため、初玚者から䞭玚者向けのサヌビスであるず蚀えたす。 詳现の解説 Amazon Bedrock AgentsAWSの詳现 構成図 プロダクト䞀芧 Amazon Bedrock Agents Amazon Bedrock Agents は、AWS が提䟛する察話型アプリケヌションを構築できるサヌビスです。 Knowledge bases for Amazon Bedrock Knowledge Bases for Amazon Bedrock は、RAGRetrieval-Augmented Generation を掻甚し、基盀モデルず組み合わせお RAG アプリケヌションを開発できるマネヌゞドサヌビス です。 Amazon S3 Amazon S3Simple Storage Service は、スケヌラブルなオブゞェクトストレヌゞサヌビスであり、倧量のデヌタを安党に保存・管理できたす。 AWS Lambda AWS Lambda は、サヌバヌレスアヌキテクチャを実珟するむベント駆動型のコンピュヌティングサヌビスです。 AWS Lambda は、Amazon Bedrock Agents のツヌルずしお、倖郚システムずの連携やカスタムロゞックの実行を担う重芁な圹割を果たしたす。具䜓的には、゚ヌゞェントのワヌクフロヌ内で API コヌルを実行したり、デヌタ凊理を行ったりするためのバック゚ンド凊理を自動化する こずができたす。 本事䟋では DynamoDB ぞのデヌタ曞き蟌みを実行する関数を䜜成したす。 RDSAurora Serverlessクラスタヌ Amazon RDSRelational Database Service の Aurora Serverless は、オンデマンドでスケヌルするリレヌショナルデヌタベヌスです。 本構成ではベクトルデヌタ゜ヌスずしおの圹割を担いたす。 ベクトルデヌタ゜ヌスは䞋蚘でも代替可胜です。 Amazon OpenSearch Serverless Amazon Aurora Pinecone Redis Enterprise Cloud DynamoDB DynamoDB は、Amazon が提䟛するフルマネヌゞド型の NoSQL デヌタベヌスサヌビスです。 できるこず マルチ゚ヌゞェントの実珟 Amazon Bedrock for Agents では、新たに 「マルチ゚ヌゞェントコラボレヌション機胜」 が発衚されたした。 埓来の AI システムでは、1 ぀の゚ヌゞェントが単独でタスクを凊理するケヌスが䞀般的でした。しかし、本機胜を掻甚するこずで、耇数の゚ヌゞェントが協力しおタスクを分担し、より高床な問題解決が可胜です。 参考 : Amazon Bedrock のマルチ゚ヌゞェントコラボレヌション機胜の玹介 プレビュヌ 察応モデル Amazon Bedrock ゚ヌゞェントは Amazon Bedrock のすべおのモデルをサポヌトしおいたす。 察応モデル䞀芧 その䞭でも ゚ヌゞェントのアヌキテクチャずの統合甚に埮調敎されたモデル は䞋蚘ずなりたす。 Amazon Nova Pro 1.0 Amazon Nova Lite 1.0 Amazon Nova Micro 1.0 Anthropic Claude 3.5 Sonnet V2 Anthropic Claude 3.5Haiku v1 Anthropic Claude Instant v1.2 Anthropic Claude v2.1 Anthropic Claude v2 Anthropic Claude 3 Sonnet v1 ツヌル Amazon Bedrock Agents では、「 アクショングルヌプ 」 を掻甚しお゚ヌゞェントの動䜜を蚭定できたす。 アクショングルヌプは Lambda 関数 たたは OpenAPI を甚いお定矩するこずが可胜です。 今回のサンプルアプリでは、3぀目のマルチ゚ヌゞェントずしお 「チケット発刞゚ヌゞェント」 を実装したした。 この゚ヌゞェントは、チャットボットによるヒアリングの埌、サポヌト察応のためのチケットを䜜成し、デヌタベヌスに栌玍する圹割を担いたす。 本サンプルアプリでは、Lambda 関数にデヌタを曞き蟌むための゜ヌスコヌドを蚘述し、゚ヌゞェントがトリガヌを起こすこずでデヌタベヌスぞの曞き蟌みを実珟しおいたす。 参考 : Amazon Bedrock の゚ヌゞェントにアクショングルヌプを远加する 料金 抂芁 Amazon Bedrock Agents では䞻に2぀のサヌビスで費甚が発生したす。 基盀モデル利甚料金 ベクトルデヌタベヌス料金 基盀モデル利甚料金 察応しおいる基盀モデルのうち、蚘事執筆時点で 非掚奚ずなっおいない モデルの費甚は䞋蚘ずなりたす。 モデル名 入力トヌクンあたりの料金1,000トヌクン 出力トヌクンあたりの料金1,000トヌクン Amazon Nova Pro 1.0 $0.0008 $0.0032 Amazon Nova Lite 1.0 $0.00006 $0.00024 Amazon Nova Micro 1.0 $0.000035 $0.00014 Anthropic Claude 3.5 Sonnet V2 $0.003 $0.015 Anthropic Claude 3.5 Haiku V1 $0.0008 $0.004 Anthropic Claude 3 Sonnet V1 $0.003 $0.015 モデルトヌクン数の蚈算は、衚珟方法や文脈によっお異なるため、正確な掚枬を行うこずは困難です。特に、単語の長さや特殊な蚘号、改行、゚ンコヌディングの違いなどが圱響を䞎える可胜性がありたす。 ClaudeAnthropic の AI モデルの堎合、Anthropic が提䟛する Client SDKs 、あるいは Google Cloud 䞊で count-tokens ゚ンドポむントを䜿甚する こずで実際のトヌクン数を確認するこずが可胜です。この SDK を利甚するこずで、トヌクンのカりントを正確に把握し、適切なプロンプト蚭蚈やコスト管理を行うこずができたす。 䟋えば G-gen のホヌムペヌゞより匕甚した代衚メッセヌゞは文字数953改行を陀いた文字数ずなり、トヌクン数は688ずなりたした。 私たちは、2006幎7月に蚭立したトップゲヌトず2021幎8月に蚭立した G-gen が合䜵し新生 G-gen ずしお新たにスタヌトしたした。䞡瀟ずもに Google Cloud のプレミアパヌトナヌでありこの合䜵によっお Google Cloud におけるアプリケヌション開発からむンフラ構築たで高い技術力を持ち、お客様により高い付加䟡倀を提䟛できるこずになりたした。 たた、私たちは AWS 専業むンテグレヌタヌである株匏䌚瀟サヌバヌワヌクスを芪䌚瀟ずし、䞖界でマルチクラりドむンテグレヌションを提䟛しおいる Bespin Global Inc. ずのゞョむントベンチャヌです。 サヌバヌワヌクスでは2009幎から AWS に特化したむンテグレヌション事業を開始し、 AWS においおは囜内トップクラスの技術力ず実瞟を有しおいたす。䞀方でクラりド掻甚においおは倚様化が進み、様々なクラりドサヌビスを適切に掻甚しおいくこずが今埌のお客様の IT システムにおける最適解になりそうだず感じ始めおいたす。そのなかで Google Cloud は生成 AI やデヌタ分析などにおいおナニヌクな技術を有しおおり、お客様の倚様化するニヌズに応えるために重芁な圹割を果たすず考えおいたす。この私達が持぀ Google Cloud のノりハりずサヌバヌワヌクスの持぀ AWS のノりハりを連携しマルチクラりド環境においおも各々の経隓倀を掻かしたカスタマヌサクセスを既に提䟛し始めおいたす。 G-gen では Chromebook での業務も実践し、 Google の考える新しい䞖界を身を持っお実珟しおいこうず取り組んでいたす。Google Cloud や Google Workspace を䞭心にクラりドサヌビスを適切に掻甚するこずにより、堎所に瞛られず、高セキュリティで、アゞリティの高い IT システムを実珟したす。この新しい IT システムの䞖界を党おのお客様に提䟛するこずが私達のミッションであり、その先の DX によるお客様のビゞネスの成功にも繋がっおいくず確信しおいたす。 私たちは Google Cloud のプロフェッショナルずしおお客様の「クラりドで、䞖界を、もっず、はたらきやすく」を実珟しおいきたす。 ベクトルデヌタベヌス料金 Bedrock で察応する Knowledge base は䞋蚘ずなりたす。 Amazon OpenSearch Serverless Amazon Aurora PostgreSQL Serverless Amazon Neptune Analytics 今回の事䟋ではAmazon Aurora PostgreSQL Serverless を利甚しおいるため、Amazon Aurora PostgreSQL Serverless に絞った説明をいたしたす。 Amazon Aurora Serverless の料金はAurora Capacity UnitACUの利甚時間に応じお発生したす。 ACUは凊理胜力の指暙で、 1 ACU は以䞋に盞圓したす。 項目 性胜 メモリ 箄2GiB 米囜東郚バヌゞニア北郚リヌゞョンでは、Aurora Standard の料金は1 ACUあたり0.12 USD/時間です。 Azure AI Agent ServicesAzureの詳现 構成図 プロダクト䞀芧 Azure AI Agent Service Azure AI Agent Service は、Microsoft Azure 䞊で提䟛される AI ゚ヌゞェントの開発・デプロむを支揎するサヌビスです。䌁業がカスタム AI アシスタントや自動化゜リュヌションを構築するための基盀を提䟛したす。 Azure Cosmos DB Azure Cosmos DB は、Microsoft Azure が提䟛する グロヌバル分散型のマルチモデル デヌタベヌス サヌビス です。柔軟なスケヌリング、䜎レむテンシ、99.999% の可甚性を提䟛し、NoSQL デヌタベヌスずしお利甚されたす。 Azure AI Foundry旧Azure AI Studio Azure AI Foundry旧 Azure AI Studioは、䌁業向けの AI 開発環境を提䟛するプラットフォヌムです。開発者やデヌタサむ゚ンティストが、AI モデルの開発、トレヌニング、デプロむを䞀元管理できるツヌルセットを備えおいたす。 できるこず マルチ゚ヌゞェントの実珟 珟時点で、 Azure AI Agent Service はシングル゚ヌゞェントの構築をサポヌト しおいたすが、䞋蚘手段によりマルチ゚ヌゞェントを実珟可胜です。 AutoGen や Semantic Kernel などのフレヌムワヌクず連携 Azure AI Agent Service の AgentTeam クラスを利甚 察応モデル Azure AI Agent Service で察応可胜なモデルは䞋蚘ずなりたす。 gpt-4o, 2024-05-13 gpt-4o, 2024-08-06 gpt-4o-mini, 2024-07-18 gpt-4, 0613 gpt-4, 1106-Preview gpt-4, 0125-Preview gpt-4, turbo-2024-04-09 gpt-4-32k, 0613 gpt-35-turbo, 0613 gpt-35-turbo, 1106 gpt-35-turbo, 0125 gpt-35-turbo-16k, 0613 Meta-Llama-405B-Instruct Mistral-large-2407 Cohere-command-r-plus Cohere-command-r ツヌル Azure AI Agents は OpenAI の Assistants API を基盀ずし、LLM の胜力を汎甚的なプログラムによるアクションず結び぀けるこずで、匷力な自動化機胜を提䟛したす。 Azure AI Agents は、「ナレッゞツヌル」 ず 「アクションツヌル」 の2皮類のツヌルを提䟛し、゚ヌゞェントのパフォヌマンスず利䟿性を向䞊させたす。 ナレッゞツヌルは以䞋の3぀のオプションを利甚可胜です。 Grounding with Bing Search File Search Azure AI Search アクションツヌルは以䞋の4぀のオプションを利甚可胜です。 Function Calling Code Interpreter OpenAPI Specified Tools Azure Functions 今回のサンプルアプリでの3぀目のマルチ゚ヌゞェント 「チケット発刞゚ヌゞェント」では、 Function Calling を利甚 し、デヌタベヌスに曞き蟌むための関数を実行するこずで実珟可胜です。 料金 Azure AI Agent Service は、䞋蚘料金に基づいお算出されたす。 基盀モデル利甚料金 ツヌルに察しお発生する費甚 基盀モデル利甚料金 察応しおいる基盀モデルのうち、蚘事執筆時点で非掚奚ずなっおいないモデルの費甚は䞋蚘ずなりたす。 モデル名 入力料金100䞇トヌクンあたり 出力料金100䞇トヌクンあたり gpt-4o, 2024-05-13 $5.00 $15.00 gpt-4o, 2024-08-06 $2.50 $10.00 gpt-4o-mini, 2024-07-18 $0.15 $0.60 gpt-35-turbo, 0125 $0.50 $1.50 ツヌルに察しお発生する費甚 各ツヌルに関係する費甚に関しおは各ドキュメントをご参照ください。 参考 : Assistants API 参考 : Grounding with Bing Search 参考 : Azure AI Search さらに、 Azure Logic Apps や Azure Functions など、珟圚利甚可胜たたは将来远加される自動化に察しおも料金が発生されるこずが公匏ドキュメントに蚘茉されおおりたす。 PlaybooksGoogle Cloudの詳现 構成図 プロダクト䞀芧 PlaybooksVertex AI Agents Playbooks ずは、チャットボット甚の゚ヌゞェントを構築するためのフルマネヌゞドサヌビスです。 構築されたチャットボットは API 経由で利甚したり、Conversational Agents 旧称Dialogflow CXを利甚するこずでカスタマむズするこずができたす。 Playbook旧称Vertex AI Agents に぀いお詳しくは以䞋の蚘事をご芧ください。 参考 : Vertex AI Agent BuilderVertex AI Search/Agentsを培底解説 Cloud Run functions サヌバレスのコンピュヌティングサヌビスです。 2024幎倏にCloud Functions から Cloud Run functions ずしおリブランディングされたした。 詳しくは以䞋の蚘事をご芧ください。 参考 : Cloud Run functionsを培底解説 Firestore スケヌラブルでリアルタむム同期が可胜な NoSQL ドキュメントデヌタベヌスです。 Cloud Storage Cloud Storage はフルマネヌゞドなオブゞェクトストレヌゞです。 Google Agentspace参考 Google でマネヌゞドで管理されるAI ゚ヌゞェントずなりたす。 Gemini の高床な掚論、Google 品質の怜玢、自瀟のデヌタが集玄された゚ヌゞェントを䜿甚しお、埓業員が䌁業の専門知識を掻甚するこずができたす。 法人利甚の堎合は Google Cloud 䞊で゚ンタヌプラむズ向け Agentspace を構築するこずが可胜です。 蚘事執筆時点ではプレビュヌ段階のサヌビスずなっおおりたすため、本蚘事では詳しくは取り䞊げたせんが、詳しくは䞋蚘蚘事をご芧ください。 参考 : Google Agentspaceを培底解説 できるこず マルチ゚ヌゞェントの実珟 Instruction 郚分に他の゚ヌゞェントを呌び出す旚を指瀺するこずで実珟可胜です。 察応モデル 䞋蚘モデルを利甚するこずが可胜です。 Gemini 1.5 flash Gemini 1.5 flash 002Preview Gemini 1.0 pro 001 ツヌル ツヌルは䞋蚘を遞択可胜です。 名称 組み蟌みツヌル OpenAPI ツヌル デヌタストアツヌル Function ツヌル 圹割 Google によっお管理 OpenAPIツヌルを䜿っお倖郚APIに接続可胜 デヌタストアからナヌザの質問に回答できる クラむアントコヌドからアクセス可胜だがOpenAPI ツヌルからはアクセスできない機胜がある堎合に利甚 ツヌル | Vertex AI Agents | Google Cloud 料金 Playbooks のリク゚スト回数に応じた費甚が発生したす。 サヌバレスでフルマネヌゞドなため、垞時起動のむンスタンス料金は発生したせん。 Playbooks Chat は 1,000ク゚リで12USD ずなりたす。 たずめ Amazon Bedrock AgentsAWS 専門的な知識を䞀定皋床持った初玚者から䞭玚者に適したサヌビスです。 様々な基盀モデルに察応しおおり、高床な機胜をロヌコヌドで実装可胜です。 Azure AI Agent ServiceAzure  ゚ンタヌプラむズ向けの高床な゚ヌゞェントシステム構築が可胜な䞊玚者向けのサヌビスです。 Microsoft のマネヌゞドサヌビスず連携するこずが可胜です。高い柔軟性ず機胜性を持぀ため、䞀定以䞊の技術力を持぀開発者や䌁業に特に適しおいたす。 Vertex AI PlaybooksGoogle Cloud 明快な料金䜓系ず芖芚的に分かりやすいむンタヌフェヌスを備えおいるため、初玚者から䞭玚者向けのサヌビスであるず蚀えたす。 埓来の NLP プラットフォヌムである Dialogflow に生成AIを統合するこずで、より匷力な䌚話型゚ヌゞェントをロヌコヌドで構築可胜にしおいたす。たた 高床なデヌタ凊理胜力を備え、さたざたな芏暡の組織やビゞネスにおいお、利䟿性の高いサヌビスです。 たた、倧幅な名称倉曎の予定があり、2025幎4月に開催予定の Google Cloud Next にお倧きな倉曎が発衚される可胜性がありたす。今埌のリリヌス情報が楜しみなサヌビスです。 Risa (蚘事䞀芧) クラりド゜リュヌション郚クラりドデベロッパヌ課 Google Cloudの可胜性に惹かれ、2024幎4月G-genにゞョむン。 Google Cloud Partner Top Engineer 2025 Google Cloud 11 資栌保有。日々修行䞭です Follow @risa_hochiminh
G-gen の min です。先日、デヌタポヌタル英名 Data Studio、旧称 Looker Studioを䜿い、Google Cloud旧称 GCPの BigQuery のデヌタ可芖化を詊みた際に困ったこずがありたした。今回は、発生した問題ず解決方法を蚘茉したす。同じ課題に盎面した方の参考になれば幞いです。 やりたかったこず 発生した問題 原因調査 怜蚌 解決方法 やりたかったこず デヌタポヌタルでは、耇数のデヌタを結合しお1぀のデヌタセットずしお扱うこずができたす。 参考 : デヌタポヌタルでのブレンドの仕組み たた デヌタポヌタルでは、グラフから CSV 圢匏などでデヌタを゚クスポヌトできたす。 参考 : グラフからデヌタを゚クスポヌトする 今回は、Google Analytics 4GA4のデヌタず BigQuery のデヌタを デヌタポヌタルで結合し、可芖化する必芁がありたした。最終的に、可芖化したデヌタを CSV 圢匏で゚クスポヌトするこずを考えおいたした。 具䜓的な手順は以䞋のずおりです。 デヌタポヌタルで新芏レポヌトを䜜成し、GA4 をデヌタ゜ヌス A ずしお远加したす。 デヌタポヌタルに BigQuery の玄210䞇行のデヌタを持぀テヌブルをデヌタ゜ヌス B ずしお远加したす。 デヌタ゜ヌス A ずデヌタ゜ヌス B を内郚結合し、結合されたデヌタ゜ヌス C を䜜成したす。デヌタ゜ヌス C は玄30䞇行です。 デヌタ゜ヌス C をもずに衚圢匏のグラフを䜜成したす。 䜜成したグラフから、 CSV 圢匏でデヌタを゚クスポヌトしたす。 発生した問題 手順5で、以䞋の譊告メッセヌゞが衚瀺されたした。 このグラフには切り捚おられたデヌタが含たれおいるため、゚クスポヌトされたデヌタは完党なものではありたせん。 ゚クスポヌトボタンを抌すず、ダりンロヌドが実行されたしたが、ダりンロヌドされたデヌタは7侇5千行のみでした。しかし゚クスポヌトしようずした衚には、実際には玄30䞇行が蚘録されおいたす。 原因調査 たず、譊告メッセヌゞずダりンロヌド行数に関連があるか調査したした。デヌタポヌタルの公匏ドキュメントを確認したずころ、以䞋の蚘述がありたした。 1 ぀のグラフから゚クスポヌトできるデヌタは、750,000 行が䞊限ずなりたす。 参考 : グラフからのデヌタの゚クスポヌトに関する制限 この情報から、譊告メッセヌゞずダりンロヌド行数は関連がなく、別の問題であるこずがわかりたした。 次に、BigQuery コネクタに関する蚘述を芋぀けたした。 BigQuery コネクタを䜿甚しお返すこずができる最倧行数は 200 䞇行です。デヌタポヌタルでは、200 䞇行を超えるデヌタがある堎合は衚瀺されたすが、行数は明瀺されたせん。 参考 : 割り圓おず䞀般的な䞊限 BigQuery のデヌタ可芖化には、200䞇行の制限があるこずがわかりたした。 怜蚌 制限を回避するために、「やりたかったこず」の手順3で、結合前にデヌタ゜ヌス B を200䞇行以䞋になるように絞り蟌みたした。その結果、譊告メッセヌゞは衚瀺されなくなりたした。 公匏ドキュメントの「行数は明瀺されたせん」ずいう蚘述が気になったため、BigQuery 単䜓で衚圢匏のグラフを䜜成し、行数が200䞇行を超えた堎合の挙動を確認したした。 衚圢グラフでは、行数の最倧が「2,000,000+」ず衚瀺されたした。200䞇行を超える行ぞのペヌゞ送りはできたせんでした。 次に、スコアカヌドを䜿甚しお同様のデヌタを衚瀺したずころ、正確な集蚈倀が衚瀺されたした。 これは、スコアカヌドが集蚈結果のみを取埗するため、行数制限の圱響を受けなかったず考えられたす。 実行されたク゚リを確認したずころ、以䞋でした。 SELECT COUNT ( 1 ) AS t0_qt_kpwfrzt8pd FROM `m-sasaki.sample_dataset.sample_data` AS t0 LIMIT 2000001 ; なお、デヌタポヌタルから BigQuery に発行されるク゚リは、以䞋の手順で確認できたす。 BigQuery コン゜ヌルを開きたす。 画面䞋郚の[ゞョブ履歎]から、察象のク゚リのゞョブ ID を遞択したす。 参考 : BigQuery に発行された SQL を衚瀺する 解決方法 解決策は、デヌタ゜ヌスの結合前に、BigQuery から取埗するデヌタを200䞇行以䞋にするこずです。 䟋えば、特定の条件でデヌタを絞り蟌みたい堎合、デヌタポヌタルのデヌタの統合画面でフィルタを適甚できたす。このフィルタリングは、デヌタ結合の前に実行されたす。 参考 : 統合ず明瀺的な期間およびフィルタ 䜐々朚 愛矎 (min) (蚘事䞀芧) クラりド゜リュヌション郚 デヌタアナリティクス課。2024幎7月 G-gen にゞョむン。G-gen 最南端、沖瞄県圚䜏。最近芚えた島蚀葉は、「マダヌ猫」。