PCA 合格対策

セクション 5:ソリューションのデプロイと実装

クラウドアーキトの設計を 実装に落とす ためのツール群。CI/CD・Apigee・Terraform・gcloud SDK・Cloud Shell / Code / Workstations・Cloud Emulators・Gemini AI 支援が学習の中心です。「どのツールで何ができるか」を要件から即答できる力が問われます。

📊 出題比重 ~12.5% ⚙️ Cloud Build / Deploy / Apigee 🏗️ Terraform / Config Connector 💻 Cloud Shell / Code / Workstations 🤖 Gemini Code / Cloud Assist
🔑 TL;DR(このセクションの核)
  • CI/CD は Cloud Build → Artifact Registry → Cloud Deploy の 3 点セットが定番。Binary Authorization で本番ガードレール
  • API 管理は要件で選定。フルライフサイクル + ポータル → Apigeeサーバーレス軽量 → API GatewaygRPC/OpenAPI → Cloud Endpoints
  • IaC の標準は Terraform。K8s ネイティブ + GitOps なら Config Connector。Deployment Manager はレガシー
  • DB 移行は DMS(最小ダウン)Datastream(CDC ストリーミング)。VM コンテナ化は Migrate to Containers、移行計画は Migration Center
  • テスト時の課金回避は Cloud Emulators(Bigtable / Spanner / Pub/Sub / Firestore の 4 つだけ)
  • AI 支援は場面で使い分け。IDE → Gemini Code Assistコンソール → Gemini Cloud Assist
  • 認証は ADC + Workload Identity (Federation) が新基準。SA キー(JSON)は 避ける

🎯 学習目標チェックリスト

このセクションの到達度0 / 0











※ チェック状態はこのブラウザに保存されます。

5.1 ソリューションとアプリケーションのデプロイ・運用支援

CI/CD・API 管理・テスト・移行・IaC を扱う領域。「正しいツールを正しい場面で」が試験頻出の判断軸です。

📘 ① CI/CD パイプライン全体像

GCP の CI/CD は マネージドサービス 3 つの組合せが定番。役割を混同しないことが試験対策の最初の壁。

コード変更 (git push) ↓ Cloud Build (CI: ビルド・テスト・コンテナ化) ↓ Artifact Registry (成果物保管 / 脆弱性スキャン) ↓ Cloud Deploy (CD: dev → staging → prod) ↓ GKE / Cloud Run / Compute Engine (実行) ↓ Cloud Monitoring / Logging (観測)
用語意味代表サービス
CI(継続的インテグレーション)コード変更を自動ビルド・テストCloud Build、GitHub Actions、GitLab CI
CD(継続的デリバリ)検証済みアーティファクトを各環境に配布Cloud Deploy、Argo CD、Spinnaker
デプロイ実行環境に配置Cloud Run / GKE / GCE

Cloud Build(CI 担当)

YAML(cloudbuild.yaml)で ビルドステップ を定義する、フルマネージドの CI サービス。

  • ステップごとにコンテナを動かす(任意のツールを実行可能)
  • ソースは Cloud Source Repositories / GitHub / GitLab / Bitbucket
  • Cloud Build トリガーで Push / PR / タグで自動起動
  • Private Pool でプライベートネットワーク内ビルド
  • Secret Manager 連携、Workload Identity Federation 認証
# cloudbuild.yaml の例
steps:
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'us-docker.pkg.dev/$PROJECT_ID/repo/app:$SHORT_SHA', '.']
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'us-docker.pkg.dev/$PROJECT_ID/repo/app:$SHORT_SHA']
images:
  - 'us-docker.pkg.dev/$PROJECT_ID/repo/app:$SHORT_SHA'

Artifact Registry(成果物リポジトリ)

コンテナイメージ / OS パッケージ / 言語パッケージ(Maven / npm / Python / Go)を保管する 次世代リポジトリ

項目内容
Container Registry(gcr.io
Artifact Registry(*-docker.pkg.dev
サポート形式Docker / OCI / Maven / npm / Python / Go / Apt / Yum
利点リージョナル、IAM 統合、脆弱性スキャン、リモートリポ、仮想リポ
⚠️ Container Registry は廃止予定 新規はすべて Artifact Registry を使う。既存の Container Registry も Artifact Registry への移行が推奨されている。

Cloud Deploy(CD 担当)

GitOps スタイルの 進行制御マネージドサービスdelivery-pipeline.yamldev → staging → prod の進行を宣言。

  • Promotion(環境間昇進)と Rollback(即時切戻し)
  • Cloud Run / GKE / Anthos / Run for Anthos に対応
  • Canary / Standard / Custom デプロイ戦略
  • Verification ステップでヘルスチェック組込み
  • Approval で本番手前の承認ゲート
  • 監査履歴を自動保存
📋 Cloud Deploy の delivery-pipeline.yaml 例(クリックで展開)
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
  name: app-pipeline
serialPipeline:
  stages:
    - targetId: dev
      profiles: [dev]
    - targetId: staging
      profiles: [staging]
      strategy:
        canary:
          runtimeConfig:
            cloudRun:
              automaticTrafficControl: true
          canaryDeployment:
            percentages: [10, 50]
            verify: true
    - targetId: prod
      profiles: [prod]
      strategy:
        canary:
          canaryDeployment:
            percentages: [5, 25, 50]
            verify: true

Binary Authorization の流れ

1. イメージビルド (Cloud Build) 2. 脆弱性スキャン (Container Analysis) 3. 検証ポリシー通過 → Attestor が署名 4. Cloud Deploy / GKE / Cloud Run が署名検証 5. 検証 OK のみデプロイを許可

📘 ② デプロイ戦略

4 つの主要戦略を 用途とリスクで使い分け。試験頻出は「即時切戻し → Blue-Green」「段階リリース → Canary」。

戦略内容リスク適用例
Rolling Update順次置換一般的な Web アプリ
Blue-Green旧(Blue)と新(Green)を並走、切替厳密な切戻しが必要
Canary一部トラフィックだけ新版に流すユーザー影響を早期検知
Recreate全停止 → 新版起動ステートフル少数
[Rolling] 旧旧旧旧旧 → 旧旧旧旧新 → 旧旧旧新新 → 旧旧新新新 → 旧新新新新 → 新新新新新 [Blue-Green] Blue: 旧旧旧旧旧 (active) Blue: 旧旧旧旧旧 (idle) Green: ----- (待機) → Green: 新新新新新 (active) LB を Blue → Green に切替 [Canary] 旧旧旧旧旧 (95%) + 新 (5%) → 旧旧旧旧 (80%) + 新新 (20%) → 新新新新新 (100%)

プラットフォーム別の Blue-Green 実装

プラットフォーム実装
Cloud Run--no-traffic で新リビジョン → gcloud run services update-traffic --to-revisions=NEW=100
GKE2 つの Deployment を並走、Service のセレクタを切替
Compute Engine2 つの MIG、Load Balancer のバックエンド入替
App Engine2 バージョン並走、gcloud app services set-traffic

プラットフォーム別の Canary 実装

プラットフォーム実装
Cloud Run--traffic NEW=10,OLD=90、徐々に上げる
GKEIstio / Anthos Service Mesh で 5%/25%/50%/100%
GKEArgo Rollouts で自動進行
App Enginetraffic-split で割合変更

Feature Flag — 「コード変更なしの機能切替」

コードはデプロイ済みだが、機能を 動的に on/off する仕組み。

ツール概要
Firebase Remote Configモバイル / Web 向け
外部 App ConfigLaunchDarkly、Split、Unleash 等
🔑 Canary vs A/B テスト Canary はデプロイの安全性を狙う短期検証(旧版 vs 新版・同機能)。A/B テストは機能の効果測定を狙う長期実験(機能 A vs 機能 B)。混同しない。

📘 ③ Apigee と API 管理

API を多数公開すると、認証 / レート制限 / バージョニング / 課金 / 監視 を一元管理しないと運用が破綻します。これを担うのが API Management

シンプル ←───────────────→ 高機能 Cloud Endpoints API Gateway Apigee - gRPC - サーバーレス - 開発者ポータル - 軽量 - Cloud Run - 課金 / マネタイズ - Cloud Functions - 詳細ポリシー - フルライフサイクル
サービス用途特徴
Apigeeフルライフサイクル API 管理エンタープライズ向け、開発者ポータル、マネタイズ、複雑なポリシー
API Gatewayサーバーレス API ゲートウェイ軽量、Cloud Run/Functions と統合、サーバーレス向け
Cloud EndpointsgRPC/OpenAPI ベースの API 管理軽量、GKE/GCE/App Engine と統合(やや古い)

Apigee のエディション

エディション用途
Apigee X(SaaS)フルマネージド、Google 運用
Apigee Hybridコントロールプレーンは Google、ランタイムはオンプレ/他クラウド GKE

Apigee の主要コンセプト

┌─────────────────────────────┐ │ Apigee Edge / X │ │ ┌─ API Proxy(前段プロキシ)│ │ │ └─ Policy(処理パイプライン) │ │ │ - OAuthV2 / VerifyAPIKey │ │ │ - VerifyJWT / GenerateJWT │ │ │ - Quota / SpikeArrest │ │ │ - AssignMessage │ │ │ - ResponseCache │ │ │ - ServiceCallout │ │ │ - MessageLogging │ │ │ │ │ ├─ Product(複数 Proxy をパッケージ)│ │ ├─ Developer / App(API キー単位) │ │ └─ Environment(dev/stg/prod) │ └─────────────────────────────┘ ↓ バックエンド API (Cloud Run / GKE / オンプレ / 他クラウド)
コンセプト内容
API Proxyバックエンド API の前段プロキシ
Policyプロキシで実行する処理(認証、変換、レート制限など)
ProductAPI を パッケージ化(複数 Proxy をまとめる)
Developer / AppAPI キーを受け取る単位
Environmentdev / staging / prod の論理環境
Flowリクエスト/レスポンスの処理パイプライン

代表的なポリシー

ポリシー用途
OAuthV2 / VerifyAPIKey認証
VerifyJWT / GenerateJWTJWT 検証・発行
Quotaレート制限(呼出回数)
SpikeArrest突発スパイク防御
AssignMessage / XML/JSON Transformリクエスト変換
ResponseCacheキャッシュ
ServiceCallout別 API 呼出
MessageLoggingロギング

Apigee の典型ユースケース

B2B / B2C API のマネタイズ

利用量に応じた課金プランを Apigee Analytics で実現。

レガシー SOAP/REST のラッピング

既存システムをモダン API に変換して公開。

マルチクラウド API 統合

GCP / AWS / Azure の API を統一ゲートウェイ経由で公開。

マイクロサービス公開

外部公開用の API ゲートウェイ層として配置。

📘 ④ テストと Cloud Emulators

△ / \ / E2E \ ← 少数・遅い・本物に近い /------\ / Integ. \ ← 中程度 /----------\ / 単体テスト \ ← 多数・速い・モック中心 /---------------\
種別内容代表ツール
単体テスト関数・クラス単位JUnit、pytest、Jest、Go test
統合テスト複数コンポーネント連携Testcontainers、Cloud Emulators
E2E テスト本番に近い環境で全体動作Cypress、Playwright、Selenium
負荷テスト想定負荷で性能確認Locust、JMeter、k6、Gatling
ストレステスト限界を超えた負荷で耐性確認同上
カオス試験故障注入で回復力確認Chaos Toolkit、Litmus
モバイル実機・仮想デバイスFirebase Test Lab

Cloud Emulators — 課金回避のローカルテスト

Bigtable / Spanner / Pub/Sub / Firestore はローカル実行できるエミュレータを提供。

gcloud emulators bigtable start    --host-port=localhost:8086
gcloud emulators spanner start     --host-port=localhost:9010
gcloud emulators pubsub start      --host-port=localhost:8085
gcloud emulators firestore start   --host-port=localhost:8080
💡 Emulator 対応サービスは 4 つだけ BigQuery / Cloud SQL / Memorystore などはエミュレータなし。テスト用には実環境のテストインスタンスを使う。
サービス制約
Bigtable永続化なし(停止で消える)、Replication 非対応
Spanner単一インスタンス、複雑な機能の一部非対応
Pub/Subサブスクリプション設定は維持されないことがある
Firestoreセキュリティルールテスト可能、Composite Index 制限

📘 ⑤ データ・システム移行ツール

ソースとターゲットの組合せ」でツールが決まる。試験頻出。

サービス用途
Database Migration Service (DMS)DB 移行(オンプレ→Cloud SQL/AlloyDB/Spanner、最小ダウン)
DatastreamCDC(変更データキャプチャ)でリアルタイム同期
Migrate to Containers (M2C)VM ワークロードをコンテナ化して GKE/Cloud Run へ
Migrate for Compute Engine (M4CE)VMware/AWS/Azure VM を Compute Engine へ
Storage Transfer ServiceGCS 間 / S3 / Azure Blob / HTTP からデータ転送
Transfer Appliance物理デバイス郵送による大量データ移行(>100TB)
BigQuery Data Transfer ServiceSaaS / 他 DWH から BigQuery にデータ取込
Migration Center移行アセスメント・計画統合プラットフォーム(旧 Stratozone)

Database Migration Service(DMS)の流れ

1. ソース DB を登録(オンプレ / 他クラウド / 別 GCP) ↓ 2. 接続プロファイル作成(IP/Interconnect/VPN/Reverse SSH Tunnel) ↓ 3. 移行ジョブ起動(フルロード + CDC レプリケーション) ↓ 4. 検証(データ整合性、ラグ) ↓ 5. カットオーバー(読み書きを Cloud SQL に切替) ↓ ダウンタイムは数秒〜数分のみ
ソースターゲット
MySQLCloud SQL for MySQL
PostgreSQLCloud SQL for PostgreSQL / AlloyDB
SQL ServerCloud SQL for SQL Server
OracleAlloyDB / Cloud SQL for PostgreSQL

Datastream(CDC ストリーミング)

  • 用途: 既存 DB の変更を リアルタイム に BigQuery / Cloud Storage に流す
  • ソース: Oracle, MySQL, PostgreSQL, SQL Server, AlloyDB
  • 用途例: 分析パイプライン、データレイク構築、移行中の同期維持
🔑 DMS vs Datastream移行中も書き込みを止めず、最後にカットオーバー」→ DMS、「継続的にレプリケーション(移行ではなく分析等)」→ Datastream。

Migration Center(移行統合プラットフォーム)

[Phase 1] Discovery → mCollector で資産棚卸し [Phase 2] Assessment → 適合度評価、コスト試算 [Phase 3] Recommendation → 6R 戦略の推奨 [Phase 4] Plan → 移行ウェーブ計画 [Phase 5] Execution → M4CE / DMS / M2C との連携

📘 ⑥ Infrastructure as Code(IaC)

インフラをコードとして管理」する考え方。GCP では Terraform が標準、K8s ネイティブなら Config Connector。

再現性

環境を同じ構成で再構築できる

バージョン管理

Git で変更履歴を追跡

レビュー可能

PR でインフラ変更をレビュー

自動化

CI/CD でデプロイ

GCP の IaC 選択肢

ツール概要
TerraformHashiCorp 製、最も普及、マルチクラウド対応
Config ConnectorKubernetes CRD で GCP リソース管理(GitOps と相性◎)
Pulumi一般言語(TS/Python/Go)で IaC
Deployment ManagerGCP 純正(レガシー、新規は非推奨)

Terraform の基本

# main.tf
provider "google" {
  project = "my-project"
  region  = "asia-northeast1"
}

resource "google_storage_bucket" "logs" {
  name     = "my-project-logs"
  location = "ASIA-NORTHEAST1"
  uniform_bucket_level_access = true
}

resource "google_cloud_run_v2_service" "app" {
  name     = "my-app"
  location = "asia-northeast1"
  template {
    containers {
      image = "us-docker.pkg.dev/my-project/repo/app:v1"
    }
  }
}
terraform init   → プロバイダ・モジュール初期化
terraform plan   → 差分プレビュー
terraform apply  → 実行
terraform destroy → 破棄
💡 GCS Backend が推奨 State は GCS Backend で共有 + ロック対応。CI 内で apply(個人 PC 禁止)。
terraform {
  backend "gcs" {
    bucket  = "my-tfstate-bucket"
    prefix  = "envs/prod"
  }
}

🔧 Cloud Build の機能と制約

観点詳細
トリガーPush、PR、タグ、Pub/Sub、手動、スケジュール
マシン種別E2-medium(デフォルト)〜 N1-highcpu-32(大規模)
Private Poolプライベート VPC 内でビルド(オンプレ DB 参照可)
並列ステップwaitFor: ["-"] で同時実行
キャッシュKaniko / GCS / Docker Layer キャッシュ
シークレットSecret Manager 連携
代替ツールGitHub Actions、GitLab CI、CircleCI、Jenkins

🔧 マルチステージビルド実例

steps:
  # 1. テスト
  - name: 'gcr.io/cloud-builders/go'
    args: ['test', './...']
    id: 'test'

  # 2. コンテナビルド(test 完了待ち)
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', '${_IMAGE}:${SHORT_SHA}', '.']
    waitFor: ['test']
    id: 'build'

  # 3. 脆弱性スキャン(並列)
  - name: 'gcr.io/cloud-builders/gcloud'
    args: ['artifacts', 'docker', 'images', 'scan', '${_IMAGE}:${SHORT_SHA}']
    waitFor: ['build']

  # 4. Cloud Deploy へ受渡し
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
    args: ['gcloud', 'deploy', 'releases', 'create', 'rel-${SHORT_SHA}',
           '--delivery-pipeline=app-pipeline',
           '--region=asia-northeast1']

substitutions:
  _IMAGE: 'asia-docker.pkg.dev/PROJECT/repo/app'

options:
  logging: CLOUD_LOGGING_ONLY
  machineType: 'E2_HIGHCPU_8'

🔧 Cloud Build のセキュリティ強化

  • カスタムサービスアカウント を使う(デフォルト SA は強権限)
  • Binary Authorization で署名付きイメージのみデプロイ
  • Private Pool でオンプレ依存ビルド
  • Workload Identity Federation で外部 CI から鍵なし認証
  • Provenance(来歴) を SLSA 準拠で取得

🔧 Artifact Registry の高度な使い方

機能用途
Remote RepositoryDocker Hub / Maven Central のキャッシュ
Virtual Repository複数リポを 1 URL に統合
CMEK 暗号化コンプラ要件
VPC-SC 境界リーク防止
脆弱性スキャン自動スキャン、CVE 検出
Container Analysisメタデータ・SBOM 管理
Binary Authorization 連携署名検証してデプロイ

🔧 Apigee vs API Gateway vs Cloud Endpoints の選定

要件推奨
開発者ポータル必須Apigee
マネタイズ・課金Apigee
複雑なポリシー(変換、JWT、Quota)Apigee
サーバーレス API の単純公開(Cloud Run/Functions)API Gateway
低コスト、簡易管理API Gateway
gRPC / OpenAPI 中心、GKE バックエンドCloud Endpoints
ESPv2(拡張サーバープロキシ)Cloud Endpoints

🔧 負荷テストツールの比較

ツール言語特徴
LocustPythonコードベースシナリオ、Web UI、分散実行
JMeterJavaGUI、レガシー、プラグイン豊富
k6JavaScript開発者寄り、CLI、Cloud Native
GatlingScala高負荷、HTML レポート
VegetaGoシンプルな CLI

🔧 GCP 上で負荷テスト

方法用途
GKE で Locust を分散実行大規模・カスタマイズ自由
Cloud Run でツール実行小〜中規模、コスト効率
Cloud Build からスクリプトCI 内負荷テスト
k6 Cloud / Locust CloudSaaS、運用負担なし

🔧 Cloud Emulators の CI 統合例

# cloudbuild.yaml の例
steps:
  - name: 'google/cloud-sdk:emulators'
    entrypoint: 'bash'
    args:
      - '-c'
      - |
        gcloud emulators firestore start --host-port=localhost:8080 &
        export FIRESTORE_EMULATOR_HOST=localhost:8080
        npm test

🔧 Terraform の構造化

terraform/ ├── modules/ │ ├── network/ # VPC モジュール │ ├── gke/ # GKE モジュール │ └── monitoring/ ├── envs/ │ ├── dev/ │ │ ├── main.tf │ │ ├── variables.tf │ │ └── backend.tf │ ├── staging/ │ └── prod/ └── shared/ └── iam.tf

🔧 Terraform vs Config Connector

観点TerraformConfig Connector
表現HCLKubernetes CRD (YAML)
実行環境CLI / CIGKE クラスタ内コントローラ
GitOpsArgo CD / Flux と組合せK8s ネイティブで GitOps と相性◎
学習コスト高(K8s 知識前提)
推奨汎用、マルチクラウドGKE 中心、GitOps 徹底

🔧 IaC の安全運用

  • Service Account に最小権限: roles/owner は避け、必要な API ごとに付与
  • CI 内でのみ apply: 個人 PC で apply しない
  • terraform plan の差分を必ず PR レビュー
  • Sensitive 変数は Secret Manager から取得

🔧 6R 戦略と移行ツール対応

移行戦略(6R)推奨ツール
RehostM4CE / Migrate for Compute Engine
Replatform(DB のみマネージド化)DMS
Refactor(リアルタイム分析)Datastream + BigQuery
Repurchase(対象外)

🔧 実装管理のトレードオフ例

📋 ケース: モノリス vs マイクロサービス CI/CD(クリックで展開)

要件: 月 100 デプロイ、3 チーム並走

  • A: モノリス + Cloud Build 1 パイプライン → 待ちが発生
  • B: マイクロサービス + チームごとの Cloud Build トリガー → 並行可能、運用は複雑

B を採用(並行性 > 運用シンプル)

📋 ケース: Terraform vs Config Connector(クリックで展開)

要件: GKE 中心、GitOps 徹底、運用チームは K8s に慣れている

  • A: Terraform CI で apply
  • B: Config Connector + Argo CD

B を採用(K8s ネイティブで GitOps)

📋 ケース: Apigee vs API Gateway(クリックで展開)

要件: 社内マイクロサービス公開、認証は IAM、軽量に始めたい

  • A: Apigee → オーバースペック
  • B: API Gateway + Cloud Run → 軽量、Cloud IAM 連携

B を採用(外部開発者ポータルが必要なら Apigee に切替)

⚡ CI/CD パイプライン(即答)

役割サービス
CI(ビルド・テスト)Cloud Build
成果物保管Artifact Registry(旧 Container Registry)
CD(環境間進行)Cloud Deploy
署名・検証Binary Authorization + Container Analysis
シークレット注入Secret Manager
K8s デリバリ(GitOps)Config Sync / Argo CD / Flux

⚡ デプロイ戦略(即答)

戦略用途
Rolling Update一般 Web
Blue-Green即時切戻し
Canary段階リリース・早期検知
Recreateステートフル少数
A/B テスト機能比較(効果測定、Canary とは別目的)

⚡ API 管理(即答)

要件サービス
フルライフサイクル / 開発者ポータル / マネタイズApigee
サーバーレス API ゲートウェイ(Cloud Run / Functions)API Gateway
gRPC / OpenAPI、GKE/GCE バックエンドCloud Endpoints (ESPv2)
Apigee + オンプレ/他クラウド GKEApigee Hybrid

⚡ Cloud Emulators 対応(即答)

サービスEmulator あり
Bigtable
Spanner
Pub/Sub
Firestore
その他エミュレータなし

⚡ 移行ツール(即答)

ソース → ターゲットツール
DB 全般(最小ダウン)DMS
DB → 分析 / リアルタイム CDCDatastream
VM → GCEMigrate for Compute Engine
VM → コンテナMigrate to Containers
GCS 間 / S3 / Azure / HTTPStorage Transfer Service
大量データ(>100TB)Transfer Appliance
SaaS → BigQueryBigQuery Data Transfer Service
移行アセスメント・計画Migration Center

⚡ IaC 選定(即答)

観点推奨
汎用、マルチクラウドTerraform
K8s ネイティブ、GitOps 徹底Config Connector
一般言語で書きたいPulumi
新規は使うなDeployment Manager(レガシー)

5.2 Google Cloud の管理ツールでのプログラム的操作

クラウドリソースを操作する CLI / SDK / IDE / AI 支援 のツール群。「どのツールがどの場面で最適か」が問われます。

📘 ① Cloud Shell / Cloud Code / Cloud Workstations

Cloud Shell — ブラウザの即席開発環境

ブラウザから即起動できる マネージド開発環境gcloud / gsutil / bq / kubectl / terraform などがプリインストール。

構成要素内容
Cloud Shell Terminalブラウザの bash シェル、5GB の永続 $HOME、無料
Cloud Shell Editorブラウザ版 VS Code(Theia ベース)、シンタックスハイライト、デバッガ
Boost Mode一時的に高速化(4 コア/8GB)

Cloud Code — ローカル IDE 拡張

ローカル IDE(VS Code / IntelliJ)の拡張機能。

  • GKE / Cloud Run 用テンプレートとデプロイ
  • Skaffold / Kustomize / Helm 統合
  • Cloud APIs スニペット
  • Cloud Run 用ローカル実行
  • リモートデバッグ
  • Gemini Code Assist 統合

Cloud Workstations — マネージド開発環境

ブラウザでアクセスできる マネージド開発環境。Cloud Shell より高性能で、専用ネットワーク内に配置可能。

観点Cloud ShellCloud Workstations
起動速度即時数分
永続化5GBフル永続 PVC
性能カスタマイズ可(CPU/GPU/メモリ)
ネットワークパブリックプライベート VPC
用途一時オペ・学習本格開発、規制環境
🔑 開発環境の使い分け
  • 「ブラウザですぐ gcloud」→ Cloud Shell
  • 「ローカル IDE で K8s/Cloud Run 開発」→ Cloud Code
  • 「本格開発、規制環境、プライベート VPC」→ Cloud Workstations

📘 ② gcloud / gsutil / bq の役割

CLI担当
gcloudGCP リソース全般(プロジェクト、Compute、GKE、IAM 等)
gsutilCloud Storage 専用(旧、現在は gcloud storage に置き換え推奨)
bqBigQuery 専用
kubectlKubernetes 操作(GKE)
terraformIaC(GCP プロバイダ)

よく使う代表コマンド

# gcloud
gcloud auth login                              # 認証
gcloud config set project PROJECT_ID           # プロジェクト切替
gcloud compute instances list                  # VM 一覧
gcloud run deploy my-app --image=IMAGE         # Cloud Run デプロイ
gcloud iam service-accounts list               # SA 一覧

# gsutil / gcloud storage
gsutil cp file.txt gs://bucket/                # アップロード(旧)
gcloud storage cp file.txt gs://bucket/        # 新コマンド(推奨)
gcloud storage ls gs://bucket/

# bq
bq query --use_legacy_sql=false 'SELECT 1'
bq mk --dataset mydataset
bq load --source_format=CSV ds.table file.csv

# kubectl (GKE)
gcloud container clusters get-credentials CLUSTER --region=REGION
kubectl get pods
kubectl apply -f manifest.yaml

# Cloud Deploy
gcloud deploy releases create rel-$(date +%s) \
  --delivery-pipeline=app-pipeline \
  --region=asia-northeast1

# Cloud Build
gcloud builds submit --config=cloudbuild.yaml .
💡 gsutil → gcloud storage gsutil の機能は gcloud storage に統合されつつある。CI/CD では gcloud storage を推奨。

📘 ③ Google API クライアントライブラリ

GCP の操作は REST API が本体。クライアントライブラリ を使うとリトライ・認証・ページング等を自動化できる。

言語ライブラリ
Pythongoogle-cloud-*google-cloud-storage 等)
Javacom.google.cloud:google-cloud-*
Gocloud.google.com/go/*
Node.js@google-cloud/*
.NETGoogle.Cloud.*
PHP / Ruby同様

認証の基本(重要)

認証方式用途
ADC(Application Default Credentials)デフォルト推奨。実行環境の認証を自動取得
Service Account Key (JSON)旧式、漏えいリスクあり、極力避ける
Workload IdentityGKE 内 Pod を SA に紐付け(鍵不要)
Workload Identity Federationオンプレ / 他クラウドから OIDC で GCP 認証(鍵不要)
# Python の例
from google.cloud import storage
client = storage.Client()  # ADC で自動認証
bucket = client.bucket("my-bucket")

ベストプラクティス

  1. ADC を使う(環境別に自動切替)
  2. 指数バックオフ でリトライ(クライアントライブラリは内蔵)
  3. Idempotency を意識(重複呼出に対する冪等性)
  4. Quotas を意識(429 エラー → バックオフ)
  5. 同時並列度 を制限(多数の API を叩きすぎない)
  6. Service Account のキー直書きは避ける

📘 ④ Gemini Code Assist と Gemini Cloud Assist

サービス役割
Gemini Cloud AssistGCP 運用全般 の AI 支援(コンソール内)
Gemini Code AssistIDE 内のコード補完(VS Code / IntelliJ / Cloud Shell Editor)
Vertex AI Gemini API開発者向け LLM API
Gemini Enterprise Agent Platformエージェント構築(旧 Vertex AI Agent Builder)

Gemini Cloud Assist の対応場面

設計

アーキ提案、ベストプラクティス参照

実装

gcloud コマンド生成、Terraform スニペット生成、コードレビュー

運用

ログ解析支援、エラー原因推定、修復手順提案

トラブルシュート

障害時の関連リソース横断検索

ドキュメント

自然言語検索、要約

Investigations

障害時の関連リソース・ログ・メトリクス横断分析、原因仮説生成

🔑 試験で問われる使い分け
  • 「Terraform を書くのを手伝って」→ Gemini Code Assist(IDE 内)
  • 「障害発生時のログ解析を手伝って」→ Gemini Cloud Assist(コンソール内)
  • 「gcloud コマンドを忘れた、教えて」→ Gemini Cloud Assist
  • 「アーキ図のドラフトを作って」→ Gemini Cloud Assist
  • 「単体テストを生成して」→ Gemini Code Assist

🔧 認証戦略の選定

環境認証
ローカル開発gcloud auth application-default login(ADC)
GCE / GKE / Cloud Run / Cloud Functionsメタデータサーバ経由の SA(自動)
GKE PodWorkload Identity(K8s SA ↔ GCP SA)
オンプレ / 他クラウドWorkload Identity Federation(OIDC / SAML)
緊急時のみSA Key(漏えいリスク注意)

🔧 リトライ戦略(指数バックオフ)

1 回目 失敗 → 1 秒待機
2 回目 失敗 → 2 秒待機
3 回目 失敗 → 4 秒待機
...(指数バックオフ + ジッター)
  • クライアントライブラリは 指数バックオフ + ジッター を内蔵
  • リトライ対象: 5xx、429(Too Many Requests)、一部 408
  • リトライ不可: 4xx 系(認証エラー、Bad Request など)

🔧 冪等性(Idempotency)

状況対策
POST で作成Idempotency Key ヘッダ送信
Pub/Sub PublisherOrdered Delivery + Deduplication ID
Cloud FunctionsAt-least-once 配信前提で設計
BigQuery InsertinsertId を指定

🔧 バッチング・ページング

操作推奨
大量 GETページング(pageToken
大量 INSERTバッチ API(List / BulkInsert)
BigQuery 取込バッチ Load Job、Storage Write API
Pub/Sub PublishPublisher のバッチ設定

🔧 クライアントライブラリと REST API の使い分け

場合推奨
言語サポートありクライアントライブラリ
シェルスクリプトgcloud / curl + REST
マイナーな言語REST + 自前 OAuth トークン取得
プレビュー APIREST(クライアントが未対応のことが多い)

🔧 REST API の呼び出し例

# アクセストークン取得
TOKEN=$(gcloud auth print-access-token)

# Compute Engine 一覧
curl -H "Authorization: Bearer $TOKEN" \
  https://compute.googleapis.com/compute/v1/projects/PROJECT/aggregated/instances

🔧 gRPC との使い分け

  • gRPC: 高性能、ストリーミング、Spanner / Bigtable / Pub/Sub などは内部 gRPC
  • REST: 互換性重視、ブラウザから直接呼び出し可能

🔧 Cloud Workstations の構成例

[Cloud Workstations Cluster] ↓ [Workstation Config] ├── Container Image(プリインストール SDK) ├── Machine Type(n1-standard-4, GPU 可) ├── Persistent Disk(Home 領域永続化) └── Network Config(プライベート VPC) ↓ [Workstation インスタンス] ├── ブラウザから IDE アクセス ├── VS Code / JetBrains 対応 └── Gemini Code Assist 統合

⚡ Cloud Shell / Cloud Code / Cloud Workstations(即答)

ツール用途
Cloud Shell Terminalブラウザの bash、5GB 永続、gcloud/kubectl/terraform 入り
Cloud Shell Editorブラウザ版 VS Code、Gemini Code Assist 統合
Cloud Codeローカル IDE 拡張(VS Code / IntelliJ)、GKE/Cloud Run テンプレ
Cloud Workstationsフルマネージド開発環境(高性能、プライベート VPC 可)

⚡ 認証(即答)

認証方式用途
ADCデフォルト推奨
メタデータ SAGCE/GKE/Cloud Run/Functions で自動
Workload IdentityGKE Pod ↔ GCP SA
Workload Identity Federationオンプレ・他クラウドから OIDC で鍵なし
SA Key (JSON)極力避ける、漏えいリスク

⚡ Gemini AI 支援の使い分け

要件サービス
IDE 内コード補完・生成・テスト生成Gemini Code Assist
GCP コンソール内のアーキ設計・トラブルシュートGemini Cloud Assist
LLM API として呼出Vertex AI Gemini API
エージェント構築Gemini Enterprise Agent Platform(旧 Vertex AI Agent Builder)

⚡ サービスリネーム(最新)

旧名新名
Container RegistryArtifact Registry
StratozoneMigration Center
Vertex AI Agent BuilderGemini Enterprise Agent Platform
Cloud Functions Gen2Cloud Run functions

⚡ 暗記必須の数値・名前

  • Cloud Build デフォルトマシン: E2-medium、最大 E2_HIGHCPU_32
  • Cloud Shell ホーム: 5GB 永続
  • Cloud Run リクエスト最大時間: 60 分
  • Cloud Run functions 最大時間: HTTP 60 分 / イベント 9 分
  • DMS サポート: MySQL、PostgreSQL、SQL Server、Oracle → AlloyDB
  • Datastream ソース: Oracle、MySQL、PostgreSQL、SQL Server、AlloyDB
  • Artifact Registry URL: *-docker.pkg.dev
  • Workload Identity Federation: OIDC / SAML / AWS で GCP 認証

📌 章末まとめ — 実装管理の翻訳パターン

要件デフォルト解
CICloud Build
成果物保管Artifact Registry
CD(環境間進行)Cloud Deploy
デプロイ戦略(即時切戻し)Blue-Green
デプロイ戦略(段階リリース)Canary
API フルライフサイクルApigee
サーバーレス API ゲートウェイAPI Gateway
負荷テストLocust / JMeter / k6
DB 移行(最小ダウン)Database Migration Service
CDC ストリーミングDatastream
VM → ContainerMigrate to Containers
大量データ移行Transfer Appliance
移行アセスメントMigration Center
ローカルテストCloud Emulators
IaC 汎用Terraform
IaC K8s ネイティブConfig Connector
ブラウザ開発Cloud Shell Editor
IDE 拡張Cloud Code
AI 支援(IDE)Gemini Code Assist
AI 支援(コンソール)Gemini Cloud Assist
認証(推奨)ADC + Workload Identity (Federation)
未署名イメージ拒否Binary Authorization
🔑 試験中の判断フロー
質問を読む
  ↓
「実装・デプロイ系」キーワード抽出
  - ビルド・テスト → Cloud Build / Emulators
  - パッケージ管理 → Artifact Registry
  - 環境間進行 → Cloud Deploy
  - API 公開 → Apigee / API Gateway / Endpoints
  - データ・DB 移行 → DMS / Datastream / 移行 4 種
  - ローカル開発 → Cloud Shell / Cloud Code / Workstations
  - インフラコード → Terraform / Config Connector
  - 認証 → ADC / Workload Identity / Federation
  ↓
要件の制約を確認(ダウンタイム、ポータル、ハイブリッド、コンプラ)
  ↓
最も「制約を満たす最小構成」を選ぶ
💡 次のステップ