問題集 セクション2:アプリケーションの構築とテスト
セクション2「構築とテスト」を、本番同様のシナリオ形式で固める問題集です。全 10問、目標 80%以上。
Q1 📘 単一選択
新規プロジェクトでコンテナイメージを保存するリポジトリを選ぶ。Google が推奨する選択肢は?
- A. Container Registry (gcr.io)
- B. Docker Hub
- C. Artifact Registry
- D. Cloud Storage バケット
▶ 正解と解説
正解:C
Artifact Registry は GCP のコンテナ + 言語パッケージ用マネージドリポジトリ。Container Registry は非推奨で、新規プロジェクトでは Artifact Registry を使う。
- ❌ A:非推奨。新規利用は禁忌。
- ❌ B:プライベートとは限らず、Cloud Build や IAM 統合がない。
- ❌ D:GCS は BLOB ストレージ。イメージレジストリの機能(タグ管理、脆弱性スキャン)がない。
📖 関連:02_学習資料/02_構築とテスト/01_基礎.md § Artifact Registry
Q2 🔧 単一選択
Cloud Build の YAML 内で DB パスワードを使いたい。env: に直書きはセキュリティ上問題。正しい方法は?
- A. ステップ内で
gcloud secretsを直接呼ぶ - B.
availableSecrets.secretManagerで Secret を参照し、step にsecretEnvを指定 - C. Cloud Build の trigger 設定に環境変数として登録
- D. Dockerfile に ARG として埋め込む
▶ 正解と解説
正解:B
Cloud Build は Secret Manager 連携が標準。availableSecrets.secretManager で Secret バージョンを宣言し、step に secretEnv: ['VAR'] を指定。Build ログにも平文出ない。
- ❌ A:可能だが冗長。標準機能を使うべき。
- ❌ C:trigger の環境変数は substitution であり、シークレットには向かない。ログに平文が出る。
- ❌ D:Dockerfile の ARG はビルドコンテキストに残る。漏洩源。
📖 関連:02_学習資料/02_構築とテスト/02_応用.md § secrets の扱い
Q3 📘 単一選択
Dockerfile を書かずに Python アプリを Cloud Run にデプロイしたい。最もシンプルなコマンドは?
- A.
docker build && docker push && gcloud run deploy --image=... - B.
gcloud run deploy SERVICE --source . - C.
kubectl create deployment - D.
gcloud builds submit && gcloud run deploy
▶ 正解と解説
正解:B
gcloud run deploy --source . は Buildpacks を内部で利用し、Dockerfile 不要でソースコードをコンテナ化 → Artifact Registry に push → Cloud Run にデプロイを一括実行。
- ❌ A:Dockerfile が必要。
- ❌ C:GKE 向け。
- ❌ D:可能だが冗長。
--source .でこの手順は内部的に1コマンドに統合される。
📖 関連:02_学習資料/03_デプロイ/01_基礎.md § ソースコードからのデプロイ
Q4 🎯 単一選択
「改ざんされたイメージのデプロイを本番でブロックしたい」。Cloud Build → Artifact Registry → GKE のパイプラインで実装すべき仕組みは?
- A. Cloud Armor で IP 制限
- B. Binary Authorization のポリシーで、特定 attestor の署名を必須にする
- C. VPC Service Controls でレジストリへのアクセス制限
- D. Artifact Registry の IAM だけで対応可能
▶ 正解と解説
正解:B
Binary Authorization は GKE / Cloud Run のデプロイ時に attestation 署名の検証ポリシーを強制する。Cloud Build で provenance(SLSA L3)を生成・署名し、デプロイ前に Binary Authorization が検証することで、改ざんイメージをブロック。
- ❌ A:Cloud Armor は WAF。デプロイ制御ではない。
- ❌ C:VPC SC はネットワーク境界。イメージの真贋検証はしない。
- ❌ D:IAM はアクセス制御。署名検証の機能はない。
📖 関連:02_学習資料/02_構築とテスト/02_応用.md § Binary Authorization と Artifact Analysis の統合
Q5 🔧 単一選択
ローカル PC で Pub/Sub を使ったユニットテストを書きたい。本番 Pub/Sub に課金されない構成として最適なのは?
- A. テスト用に新規プロジェクトを作成
- B.
gcloud beta emulators pubsub startでエミュレータ起動 +PUBSUB_EMULATOR_HOST環境変数を設定 - C. Pub/Sub Lite を使う
- D. テストを Cloud Build 上で本物の Pub/Sub を使って実行
▶ 正解と解説
正解:B
Pub/Sub エミュレータを起動し、環境変数 PUBSUB_EMULATOR_HOST=localhost:8085 を設定すれば、Cloud Client Libraries が自動でエミュレータに接続。コード変更不要・無料。
- ❌ A:本物の Pub/Sub に課金される。
- ❌ C:Pub/Sub Lite は別サービス(よりコスト最適化されたバージョン)。エミュレートではない。
- ❌ D:本物の Pub/Sub に課金される。
📖 関連:02_学習資料/02_構築とテスト/01_基礎.md § gcloud CLI のエミュレータ
Q6 🔧 単一選択
開発者の PC 環境が統一されておらず「俺の環境で動く」問題が頻発。管理者がイメージ・拡張機能・企業ポリシーをテンプレ化し、開発者が起動するだけで使える環境を作りたい。最適なサービスは?
- A. Cloud Shell
- B. Cloud Workstations
- C. Compute Engine + カスタムイメージ
- D. GKE + Dev Container
▶ 正解と解説
正解:B
Cloud Workstations は管理者が **Configuration(OS イメージ、リソース、拡張機能)**をテンプレ化し、開発者はそれを起動するだけで使える。永続ボリューム、企業ポリシー強制、Gemini Cloud Assist 統合。
- ❌ A:Cloud Shell は個人の軽量シェル。テンプレ化・永続化機能は限定的。
- ❌ C:CE + カスタムイメージは自前運用が重い。
- ❌ D:GKE + Dev Container も自前運用が重い。
📖 関連:02_学習資料/02_構築とテスト/01_基礎.md § Cloud Workstations
Q7 🎯 単一選択
Cloud Build でビルド時間を短縮したい。最も効果的な施策の組み合わせは?
- A. ステップを順次実行で正確に書く
- B. マシンタイプを E2_HIGHCPU_32 に + 並列ステップ + マルチステージ Dockerfile
- C. すべての依存をビルドコンテキストに含める
- D. テストステップを省略する
▶ 正解と解説
正解:B
ビルド短縮の3本柱:①マシンタイプ強化(E2_HIGHCPU_32 / N1_HIGHCPU_32)、②並列ステップ(waitFor: ['-'])、③マルチステージ Dockerfile で最終イメージを小さく。さらに kaniko cache や GCS ライブラリキャッシュも有効。
- ❌ A:順次実行は遅い。並列化が必須。
- ❌ C:ビルドコンテキスト肥大化は逆効果。
- ❌ D:品質を犠牲にしてはいけない。
📖 関連:02_学習資料/02_構築とテスト/02_応用.md § multi-step ビルドの並列化
Q8 🔧 単一選択
PR ごとに自動でユニットテスト・統合テストを実行し、結果を PR にコメントしたい。Cloud Build の設定は?
- A. Schedule トリガーを設定
- B. Manual トリガーで毎回手動実行
- C. Pull Request トリガーを設定し、
cloudbuild.yamlにテストステップを記述 - D. Push to Branch トリガーを
main以外に設定
▶ 正解と解説
正解:C
Cloud Build の Pull Request トリガーは、PR が作成・更新されたタイミングで自動実行し、結果(成功/失敗)を PR の Status Checks に反映する。標準的な PR レビュー連携。
- ❌ A:Schedule は定時実行。PR 連動ではない。
- ❌ B:Manual は手動。自動化要件を満たさない。
- ❌ D:PR とブランチ Push は別概念。PR ベースで動かしたいなら PR トリガーを使う。
📖 関連:02_学習資料/02_構築とテスト/01_基礎.md § Cloud Build の trigger 設計
Q9 📘 複数選択(2つ)
🆕 2026改訂で追加・強化された AI 駆動開発ツールに該当するものを 2つ選べ。
- A. Gemini Cloud Assist
- B. Cloud Trace
- C. Container Registry
- D. MCP(Model Context Protocol)サーバー
▶ 正解と解説
正解:A, D
A:Gemini Cloud Assist は GCP 全体に統合された AI アシスタント。コード生成・説明、ログクエリ生成、可観測性支援など。
D:MCP サーバーは、AI モデルが外部リソース(GitHub、DB、API)に接続するための標準プロトコル。AI コーディングアシスタントとセットで出題される可能性。
❌ B:Cloud Trace は分散トレースサービス。AI 駆動開発ツールではない。
❌ C:Container Registry は非推奨のレジストリ。
📖 関連:02_学習資料/02_構築とテスト/01_基礎.md § AI コーディングアシスタント / MCP サーバー
Q10 🎯 複数選択(2つ)
「サプライチェーンセキュリティを強化したい」。Cloud Build → Artifact Registry → GKE のパイプラインに組み込むべき仕組みを 2つ選べ。
- A. Cloud Build で SLSA L3 相当の provenance を生成し、Binary Authorization で attestation を検証
- B. すべてのコンテナを
:latestタグでデプロイ - C. Artifact Analysis で脆弱性スキャンを有効化し、HIGH/CRITICAL があればデプロイをブロック
- D. Cloud Run の
--allow-unauthenticatedで公開し、利便性を優先
▶ 正解と解説
正解:A, C
A:Cloud Build は SLSA L3 相当の provenance を自動生成。Binary Authorization のポリシーで attestor 署名を必須にすることで、改ざんを防ぐ。
C:Artifact Analysis はイメージの脆弱性スキャンを実施。Cloud Build のステップで深刻度を判定し、HIGH/CRITICAL が含まれていればパイプラインを失敗させる(デプロイブロック)。
❌ B:
:latestタグは「何のバージョンか不明」「ロールバック不可」。サプライチェーン強化に逆行。❌ D:認証なし公開はセキュリティの観点で逆方向。
📖 関連:02_学習資料/02_構築とテスト/02_応用.md § サプライチェーンセキュリティ
自己採点
| 得点 | 評価 | 次のアクション |
|---|---|---|
| 9-10 | 🎯 合格圏 | 次セクションへ |
| 7-8 | 🔧 もう一押し | 誤答セクションを 03_要点と暗記.md で復習 |
| 5-6 | 📘 基礎再学習 | 01_基礎.md を読み直し |
| 0-4 | 📚 シラバスから | シラバス詳細の該当範囲を再学習 |