Sapporo 2026 : Grid Connect Rendezvous

Google Cloud Quick Start

最初に押さえておきたい Google Cloud の基礎知識

sinmetal @sinmetal Developers Expert for Cloud
Agenda

今日話すこと

01
Project
リソースを置く箱と3つの識別子
02
Billing
予算アラート・Spend Cap
03
Region & Zone
東京/大阪/US・Quotaの2つの側面
04
IAM
Role / Service Account / ADC
05
Observability
Logging / Monitoring / Trace / Profiler
06
Compute
GAE / GCE / Cloud Run (4モード) / GKE
07
Storage
用途に応じたストレージ & データベース
08
BigQuery
サーバーレス分析・豊富なサービス連携・無料枠
09
Workshop Setup
午後のハンズオンに向けた事前準備・料金と無料枠の確認
Project

まずは Project を作るところから

  • Google Cloud では何をするにしても Project を作成し、この中にリソースを置いていく
  • Project は手軽に作れるので、環境ごとに作るのが基本
devfest-sapporo-dev
Cloud Run Spanner Cloud Storage
devfest-sapporo-prod
Cloud Run Spanner Cloud Storage

チームで開発する時は「個人ごとの Project」を作ることも多い

Project

Project の識別子と分けるメリット

Project ID

自分で決める一意の識別子

全世界で一意。CLI コマンドや設定ファイルで最も頻繁に利用する。

devfest-sapporo-dev

Project Number

自動採番される数字

Google Cloud により自動で割り当てられる。内部識別やデフォルト SA 名に登場。

102938475612

Project Name

好きな名前(識別子ではない)

重複可能。※sinmetal は「逆にややこしい」ので付けたことがない。

DevFest 札幌 開発環境

課金

誰の・どの環境のコストかが Project 単位で一目瞭然。

IAM

権限を環境や人ごとに分離。事故を防いで管理しやすい。

Audit Log

操作ログが混ざらず、監査やインシデント調査が容易。

Quota

上限も Project 単位。dev の暴走が prod を巻き込まない。

Billing

お金の見方と可視化

  • Google Cloud Console でそのまま確認できる
  • BigQuery に Export して、自分が見やすいように加工して見ることも多い
  • 可視化は datastudio.google.com が無料&簡単で便利
  • 今は AI に指示して HTML ダッシュボードを作るのも良い選択肢

Billing Export の定番

日次・サービス別・ラベル別に集計しておくと、「急に増えたコストは何か」がすぐ分かる。個人開発でも最初に確認する癖を付けておくと安心。

Billing

予算アラートと上限設定 (Spend Cap)

Billing Budget & Alert

Billing Account に月額料金のアラートを設定可能。

⚠️ 注意: Alert が鳴るだけで自動停止はされない!リアルタイム反映ではないため、1 アクションでのコスト急増にも注意。

Spend Cap Budgets(予算上限)

一部プロダクトで予算超過時に新規リクエストを遮断。

⚠️ 注意: 既存の処理は継続される。長時間ジョブは超過後も動くため、ハードリミットなら余裕を持った値に設定。

Gemini API Cloud Run Cloud Run functions
Region & Zone

Region(リージョン)の選び方

Region はデータセンターが存在する物理的な場所を表す。各 Region 内に複数の Zone(独立した設備)が存在。

🇯🇵 日本国内の 2 つの Region

asia-northeast1 (Tokyo) asia-northeast2 (Osaka)
  • 日本国内のユーザーに対して 超低レイテンシ
  • 国内のデータ主権・コンプライアンス要件に対応
  • 本番システムの東西冗長(Tokyo + Osaka)構成も可能

🇺🇸 日本以外でよく使う: us-central1

us-central1 (Iowa)
  • 新機能が最速リリース: 最新の AI モデルや新機能はまず us-central1 から提供されることが多い
  • 料金が 2〜3 割安い: 東京(asia-northeast1)と比べて各種リソースが安価!
  • ネットワーク遅延を無視できるバッチや、検証用途に最適
Region & Zone

Quota(割り当て)の 2 つの側面

リソース数や API リクエスト数の上限。上限に当たると Quota Error が返る。https://docs.cloud.google.com/docs/quotas/overview

① Google 側のリソース保護

特定ユーザがデータセンターを占有するのを防ぐ。

「5000兆円あっても DC は占有できない」
→ 我々からは上限引き上げ申請を行うことが多い。

② ユーザ自身の使いすぎ抑制

無限ループや設計ミスによる支払額爆発を防止。

事故防止のために自分自身で制限をかける
→ 我々が上限を引き下げて設定することが多い。

BigQuery での定番 Quota: 無料枠(月 1TiB)が便利だが、スケーラビリティが高すぎて「1PB 読んで!」にも即応えて課金爆発する。そのため 1 日のクエリ読み込み Quota を引き下げて制限をかける!

IAM

Identity and Access Management

誰が・何に対して・何をできるかを決める仕組み。

基本ロール(大昔から)

owner
editor
viewer
→

最近の呼び方へ

admin
writer
reader
roles/datastore.admin roles/spanner.databaseUser roles/run.invoker roles/storage.objectViewer

理想は最小権限。しかし個人開発なら最初は Project Level で雑に付けても大丈夫!

IAM / Service Account

Service Account

  • Project の中に作れるアプリケーション用のアカウント
  • 権限の分割や Quota の把握のためにアカウントを分けて運用する
# 自作する Service Account の例
api-server@devfest-sapporo-prod.iam.gserviceaccount.com
batch-worker@devfest-sapporo-prod.iam.gserviceaccount.com

最初から存在する Service Account(デフォルト / マネージド)

{PROJECT_NUMBER}-compute@developer.gserviceaccount.com

champions-build@{PROJECT_ID}.iam.gserviceaccount.com

ここでも Project Number と Project ID が実際に使い分けられている!

IAM / ADC

Application Default Credentials

Client Library で Google API を実行する時に、認証を自動的に行なってくれる仕組み。

Google Cloud 上

metadata server から OAuth2 token を自動取得。鍵ファイルをサーバーに置く必要はない。

local 開発環境

gcloud auth login --update-adc を実行すれば、己の Google Account の認証情報を取得してくれる。

$ gcloud auth login --update-adc
Observability

動かした後を見る道具

Logging

ログの収集・検索。勝手に出してくれるものも多く、真っ先に見る。

Monitoring

メトリクスとアラート。異常検知やパフォーマンス監視の入口。

Trace

リクエストの分散トレース。どこで時間を使っているかを可視化。

Profiler

CPU / メモリ消費をコード単位で特定するプロファイラ。

よく見る(手軽・自動)

Logging と Monitoring は出力が簡単・勝手に出るので日常的に確認。

必要に応じて導入

Trace と Profiler はアプリ側への組み込みが必要。深掘りしたい時に導入。

Compute

コンピュートサービスの全体像

App Engine

PaaS (Web)

Google Cloud 最古の Product。今も現役だが UPDATE は控えめ。

毎日 1 Instance 無料

Compute Engine

IaaS (VM)

仮想マシン (VM) サービス。OS レベルから自由に構成したい時に利用。

e2-micro × 1 無料

Cloud Run

Serverless Container

Container を起動するサービス。午後のハンズオンで扱うのはこれ!

毎月約 200 万 req 無料

GKE

Kubernetes

Google Kubernetes Engine。大規模・複雑なコンテナクラスタの運用基盤。

1 Cluster 管理料金無料

Google Cloud の Compute 各プロダクトには無料枠が用意されている!まずは Cloud Run から始めるのがおすすめ!

Compute / Cloud Run

Cloud Run の 4 つのモード

Instance のライフサイクルが異なる。ユースケースに合わせて最適なモードを選ぼう。

Service

最ポピュラー

HTTP Request を受け取り Response を返す Web API 向け。一問一答。リクエスト数に合わせて 0〜N 台へ自動スケール増減。

Instance

常時起動

HTTP Request/Response を受けるが、指定台数のマシンを常時起動。LLM Agent など長時間同一マシンで処理する用途向け。

Job

バッチ・完遂終了

何かしらの Task を実行し、完遂すれば終了する。定期実行バッチやデータマイグレーションに最適。

Work Pools

キュー・非同期常駐

一定台数のマシンを起動し続ける。Pub/Sub やキューから届く非同期タスクを処理し続けるために誕生。

Storage

ストレージ & データベース

Cloud Storage Object Storage

ファイルの保存に利用。Cloud Run は永続ディスクを持たず終了時に消えるため、ファイルの受け渡しはこれを使う。

ファイル保管の基本

Cloud SQL マネージド RDBMS

MySQL, PostgreSQL 等のマネージド。中身は GCE に DB を入れた構成で、機能としては MySQL や PostgreSQL がそのまま提供される。

最安 月額 $22〜

Firestore Key-Value Store

Instance 概念がなく RW 課金。毎日無料枠あり。モードや Edition が複数あり(次スライド参照)。午後に扱うのはこれ!

毎日無料枠あり!

Cloud Spanner 分散型 RDBMS

Google 内部 DB。全文検索や Spanner Queue など連携が強力。ただし「絶対分散する」ため分散 DB の知識が必要。

最安 月額 $86〜

AlloyDB Cloud-Native

PostgreSQL 互換の高速 DB。Primary と Read Replica の定番構成だが、コンピュートとストレージが分離されている。

最安 月額 $296〜

Bigtable Key-Value Store

かなり巨大な Instance を起動。IoT センサーやアクセスログのような大量の INSERT(書き込み)がある大規模向け。

最安 月額 $620〜
Storage / Cloud Firestore

Cloud Firestore のモードと Edition

Instance 概念がなく RW 課金で毎日無料枠あり!モードや Edition が複数あってちょっとややこしい。

Native Mode
Standard Edition

午後に扱うのはこれ!

基本となるドキュメント指向 KVS。まずはここから始めるのが標準的で最も扱いやすい。

Native Mode
Enterprise Edition

複雑なクエリ対応

集計、算術演算、配列、セット、型変換、データの結合など複雑なクエリにも対応(少し単価高め)。

MongoDB
互換モード

MongoDB API

MongoDB のインターフェースで利用可能。既存の MongoDB アプリケーションの移行に最適。

Datastore
Mode

旧来システム互換

昔からある Cloud Datastore 互換。大規模スケールや既存システム資産の継続運用向け。

💡 午後のハンズオン: 最もポピュラーで扱いやすい Native Mode Standard Edition を使います!

Data & Analytics / BigQuery

BigQuery: みんなが使うサーバーレス分析基盤

Google Cloud を使う人なら全員使うくらいみんな使う。アドホックなクエリに適したサーバーレス DWH。

🔗 豊富なサービス連携

Billing Export、Logging Sink、Cloud Trace Export など、Observability をはじめとしたサービスで連携できる機能が非常に豊富。

⚡ Instance・Index 不要

Instance もなく Index の作成も不要。SQL を書くのが面倒でも、Gemini に頼んで書いてもらえば OK。

🎁 毎月 1 TiB のクエリ無料枠

料金はクエリ時に読み込んだデータ量に応じた従量課金(毎月 1 TiB 無料)。
ストレージ料金も $0.023 / 1 GiB-month 程度。

個人利用だとデータが少ないので、ほぼお金を払うことがない

💬 sinmetal の体験談:
「10 年ほど BigQuery を使っているが、個人としては 800 円くらいしか払ってないのではなかろうか?」

⚠️ Quota 設定(スライド 8 参照): スケーラビリティが高く大量のデータもすぐ読み込んでしまうため、使いすぎを防ぐには Quota でクエリ上限を引き下げて設定することが多い。

Workshop / Setup

午後の WorkShop に向けて最初のセットアップを行いましょう!

① Google Cloud Project のセットアップ

午後のハンズオンをスムーズに開始できるよう、手順に沿って Google Cloud の Project をセットアップしましょう。

Setup ガイド (GitHub)

Project 作成から必要な API の有効化まで詳しく解説されています。

💡 必要な API(Cloud Run Admin API, Firestore API など)の有効化も忘れずに行いましょう!

② 料金・無料枠のチェック

利用前に無料枠や見積もりツールを確認しておくと安心です。

無料枠一覧(Free Cloud Features)

各プロダクトごとの毎月の無料枠詳細を確認できます。

Pricing Calculator(見積もり計算ツール)

構成に応じた月額費用の概算シミュレーションが可能です。

午後のハンズオンをスムーズに開始できるよう、お昼休みや休憩時間に Project を準備しておきましょう!

Appendix / おまけ

この先は WorkShop に
関係ないおまけコンテンツ

35min ですべては語れなかったので、この先は sinmetal が好き勝手に語っています。
WorkShop の時間が余ったら、ぜひ読んでみてください。

Appendix / CLI & Tooling

Antigravity CLI with gcloud SDK

MCP だけでなく、機能が多い gcloud CLI や REST API の直接実行も便利。

🛠️ gcloud CLI と REST API の活用

WorkShop では Antigravity 2.0 と IDE を使用しますが、Antigravity CLI も便利です。

Antigravity 2.0 は MCP で Google Cloud とやり取りしますが、MCP Server がすべてのことができるわけではありません。gcloud CLI の方が長年開発され続けているので機能が多いです。

💡 API Explorer & curl:
Terminal なら REST API を直接 curl で呼ぶことも可能。Google APIs Explorer も整備されており、手動だと面倒な API Body 組み立ても Gemini に頼めばすぐやってくれます。

🔍 実践ユースケース: ログ解析

Antigravity CLI に「Cloud Run アプリのログを見て Error の原因を探って」と指示すれば、gcloud logging を使って調べてくれます。

⚠️ 注意: Token 消費

ログの量が多いと Input Token を結構消費するので注意が必要です。

API でできないことはほぼないので、なんでもやってもらえます
Appendix / Architecture

Firebase Hosting と Cloud Run の合わせ技

静的コンテンツは Firebase Hosting で配信し、動的な処理だけ Cloud Run へ送る組み合わせ。

⚡ 静的コンテンツの配信

HTML や CSS など Static なコンテンツを Cloud Run から配信するのはあまり効率がよくありません。フロントに CDN のようなサービスを置くことで効率よくできます。

ここで紹介するのが Firebase Hosting です。Static なコンテンツをホストしてくれますが、これだけだと動的な部分を処理できません。

Static なコンテンツのホストに便利

🔀 Cloud Run への Rewrites 機能

Firebase Hosting には 任意の path を Cloud Run に rewrites する機能 があります。

// firebase.json
"rewrites": [ {
  "source": "/api/**",
  "run": { "serviceId": "backend-service", "region": "asia-northeast1" }
} ]

この機能を使えば、/api/* だけ Cloud Run に送り、Static なコンテンツは Firebase Hosting で、Dynamic なコンテンツは Cloud Run で処理することができます。

Appendix / Security & Auth

認証がしたい時に便利な Identity-Aware Proxy

社内限定や特定メンバー向けのサイトを作る時、設定だけで Google ログインを実装できる仕組み。

🔐 アプリ側の認証実装が不要

限られたメンバーや社内メンバー限定に公開したい Web サイトに最適。IAP を設定するだけで Google Account でのログイン画面と認証 を Cloud 側が肩代わりしてくれます。

アプリケーション側には認証通過後のリクエストのみが到達。誰で認証されているかは Header から簡単に取得できます。

👥 柔軟なアクセス制御とサービス分離

IAP を通過するには、対象リソースの roles/iap.httpsResourceAccessor 権限が必要。

権限の割り当て対象:
個別 Google アカウント Google Group Google Workspace ドメイン
💡 Cloud Run Service ごとの設定:
全員がアクセスできる public-service と、管理者専用の admin-service を分け、admin-service にだけ IAP をかけるといった分離も簡単!
Appendix / Architecture

非同期処理を使いこなす

タスクを分割し、必要なリソースごとに別マシンへ渡す・必要な時だけマシンを使う設計が重要!

Cloud Tasks

Push 型 / 個別タスク管理

Cloud Run Service と最も相性が良く、Push で HTTP リクエストを送ってくれるのでとっつきやすい。

  • Rate 指定: 秒間リクエスト流量の上限を制御可能
  • 可視化: Queue の中に溜まっている Task を確認・管理可能
  • 遅延実行: 「○分後に実行」のスケジューリングも容易
Cloud Run Service と組み合わせるならまずこれ!

Cloud Pub/Sub

Pull & Push 型 / 大規模メッセージング

大量のイベント配信・メッセージングの基盤。Pull 型配信を活用したい場合に最適。

  • バッチまとめ処理: Task をある程度まとめて一括処理したい時
  • 常駐ワーカー: 同一マシンインスタンスで処理し続けたい時
  • ファンアウト: 1 つのイベントを複数システムへ並列配信
大量ストリームや Pull バッチ処理に最適!

💡 非同期処理を使いこなせば、分散処理でタスク処理時間を短縮したり、Spot VM を使って安く大量タスクを処理できます!

Appendix / Hands-on Idea

まずは Cloud Tasks を使ってみよう

「ゲストハウスの予約完了メール送信」を題材に、非同期処理の威力を体験する。

❌ リクエスト内で同期処理する場合

ユーザーのリクエスト:
「予約リクエスト」→「DB 登録」→「メール送信(外部 API)」→「レスポンス」

メール送信処理に時間がかかると、ユーザー側の登録完了・画面表示が待たされてしまう。外部メール API の一時障害で予約自体がエラーになるリスクも。

⭕ Cloud Tasks で非同期化する場合

ユーザーのリクエスト:
「予約リクエスト」→「DB 登録」+ Cloud Tasks に Task Add → 即レスポンス!⚡

リクエスト内ではタスクをキューに入れるだけなので一瞬で完了!後から Cloud Tasks がバックグラウンドで Push してメール送信処理を実行。

💡 手軽に試すコツ:
実際にメール送信を実装するのは面倒なので、最初は Cloud Run 側でログ出力(log.Println("Send mail to guest"))する程度にしておくのが楽でおすすめ!

Appendix / Observability & Logging

構造化ロギングで同じ Request のログをまとめる

TraceID を活用して Cloud Run へのリクエストとコンテナログを紐づけ、リクエスト単位で集約する。

⚠️ 単純な JSON 出力では集約されない

stdout や stderr に単純に JSON を出力しただけでは、並行する複数リクエストのログが混在し、Request 単位でログを集約することができません。

💡 そこで便利なのが TraceID:
Cloud Trace の仕組みの一部ですが、分散トレースだけでなく Log をリクエストごとに束ねる ためにも使えます。

Cloud Logging 画面で親リクエストの配下に各ログがネスト表示されるため、調査効率が劇的に上がります。

🔑 Header から TraceID を取得して付与

Cloud Run への Request には X-Cloud-Trace-Context ヘッダーが付いており、ここに TraceID が入っています。

// 1. Request Header から TraceID を取得
X-Cloud-Trace-Context: 105445aa7843bc8bf206b120001000/1;o=1

// 2. ログ出力時に trace key にセットして出力
{
  "severity": "INFO",
  "message": "ゲストハウス予約完了",
  "logging.googleapis.com/trace":
    "projects/PROJECT_ID/traces/TRACE_ID"
}

ログ出力時に trace key に TraceID を入れると Trace とログが紐づき、Request 毎にまとまります。