問題集 セクション4:Google Cloud サービスとの統合
セクション4「GCP 統合」を、本番同様のシナリオ形式で固める問題集です。全 10問、目標 80%以上。
Q1 🔧 単一選択
Cloud Run から Cloud SQL(PostgreSQL)に接続する。最も推奨される認証 + 暗号化方式は?
- A. インスタンス Public IP に DB パスワードで直接接続
- B. Cloud SQL Auth Proxy 経由(
--add-cloudsql-instancesまたは Connector ライブラリ) - C. Cloud Storage に接続情報を保存
- D. すべてのトラフィックを VPC SC でブロック
▶ 正解と解説
正解:B
Cloud SQL Auth Proxy は IAM 認証 + TLS 暗号化を提供。Cloud Run は --add-cloudsql-instances でインスタンスを宣言すれば、Unix Socket(/cloudsql/PROJECT:REGION:INSTANCE)経由で接続できる。パスワードベース + Public IP は禁忌。
- ❌ A:Public IP + パスワードは漏洩リスク。
- ❌ C:接続情報の保存先と認証方式は別問題。
- ❌ D:VPC SC は境界制御で、接続方式とは無関係。
📖 関連:02_学習資料/04_GCP統合/01_基礎.md § Cloud SQL Auth Proxy
Q2 📘 単一選択
Compute Engine 上のアプリから Cloud Storage を読みたい。サービスアカウントキー JSON を VM に配布したくない。最適な構成は?
- A. VM の Metadata に SA Key を保存
- B. ユーザー認証情報を環境変数に保存
- C. VM にサービスアカウントを割り当て、ADC(メタデータサーバ)で自動取得
- D. GCS バケットを公開する
▶ 正解と解説
正解:C
GCE / GKE / Cloud Run / Cloud Functions では VM/Pod/Service にサービスアカウントを割り当てれば、ADC が自動でメタデータサーバから取得する。SA Key の配布は不要。
- ❌ A:Metadata 保存も漏洩リスク。標準機能を使う。
- ❌ B:ユーザー認証情報は人間用。サーバー間では SA を使う。
- ❌ D:公開は最終手段で、要件にも反する。
📖 関連:02_学習資料/04_GCP統合/01_基礎.md § Application Default Credentials (ADC)
Q3 🔧 単一選択
Cloud Client Library で外部 API を呼び出すと、ときどき 503 エラーが発生する。最適な対処は?
- A. エラーを無視して次の処理に進む
- B. 即座に 100 回リトライ
- C. 指数バックオフ + ジッター付きリトライ(Cloud Client Library 標準の
Retry) - D. リトライ回数を 1回に固定
▶ 正解と解説
正解:C
指数バックオフ + ジッターが標準アンサー。Cloud Client Libraries は google.api_core.retry で組み込みサポート。即時リトライは衝突して下流をさらに過負荷にする。
- ❌ A:処理が完了しないまま流れる。データ欠損リスク。
- ❌ B:DDoS 化、下流崩壊。
- ❌ D:一過性の障害でも 1 回しかリトライしないと取りこぼす。
📖 関連:02_学習資料/04_GCP統合/02_応用.md § 指数バックオフ + ジッター
Q4 🎯 単一選択
複数の Cloud Run サービスをまたぐリクエストの遅延箇所を特定したい。標準的な実装は?
- A. 全サービスで
printを仕込んで時間を出力 - B. OpenTelemetry で計装 → Cloud Trace にエクスポート → サービス境界で
traceparentヘッダで Trace Context を伝播 - C. Cloud Profiler を全サービスで有効化
- D. Cloud Monitoring のレイテンシメトリックを見る
▶ 正解と解説
正解:B
サービス境界の遅延は分散トレースで可視化する。**OpenTelemetry(OTel)**で計装、Cloud Trace にエクスポート、**W3C Trace Context(traceparent)**でサービス間を貫通させる。1リクエストの span チェーンが Cloud Trace で 1つの trace として見える。
- ❌ A:printf デバッグでは構造化されず、サービス境界の対応付けができない。
- ❌ C:Profiler は CPU/メモリの hotspot。レイテンシ可視化には Trace。
- ❌ D:メトリクスは集計値で、個別リクエストの追跡には不向き。
📖 関連:02_学習資料/04_GCP統合/02_応用.md § 分散トレースの実装
Q5 🔧 単一選択
Cloud Logging のログから対応する Cloud Trace の trace に飛びたい。何が必要?
- A. ログにファイル名を入れる
- B. ログのタイムスタンプから推測
- C. ログに
logging.googleapis.com/traceフィールドを含める(値はprojects/PROJECT/traces/TRACE_ID) - D. Trace ID を URL に含める
▶ 正解と解説
正解:C
構造化ログに logging.googleapis.com/trace フィールド(値は projects/PROJECT/traces/TRACE_ID)を含めると、Cloud Logging UI から Cloud Trace に直接遷移できる。OTel と組み合わせて自動付与するのが標準。
- ❌ A, B:手動対応付けは煩雑で精度も低い。
- ❌ D:URL は関係ない。
📖 関連:02_学習資料/04_GCP統合/02_応用.md § 構造化ログと Trace の関連付け
Q6 🎯 単一選択
リトライしてはいけないエラーコードは?
- A. 503 Service Unavailable
- B. 403 Forbidden
- C. 429 Too Many Requests
- D. 502 Bad Gateway
▶ 正解と解説
正解:B
4xx クライアントエラー(特に 401 / 403 / 404)はリトライしても解決しない。権限不足や URL 誤りはリトライで直らない。例外は 408 Request Timeout と 429 Too Many Requests(バックオフ付きでリトライ可)。
- ❌ A, D:5xx はサーバ側の一過性エラー、リトライ対象。
- ❌ C:429 はレート制限。バックオフで間隔を空けてリトライする。
📖 関連:02_学習資料/04_GCP統合/02_応用.md § リトライ対象のエラーを正しく選ぶ
Q7 🔧 単一選択
100万件のオブジェクトを Cloud Storage から list したい。メモリを使い切らずに処理するには?
- A. すべて配列に格納してからループ
- B. iterator を直接
for blob in bucket.list_blobs(page_size=100):で回す(自動でページ送り) - C.
gsutil lsをsubprocess.runで呼ぶ - D. オブジェクトを 100万件未満に分割
▶ 正解と解説
正解:B
Cloud Client Libraries は 自動でページネーションを扱う。iterator を for で回せば内部で nextPageToken を処理し、メモリには現在のページ分だけ載る。
- ❌ A:100万件すべてをメモリ展開は OOM の原因。
- ❌ C:subprocess は非効率、ライブラリ標準を使うべき。
- ❌ D:データを分割するのは目的に反する。
📖 関連:02_学習資料/04_GCP統合/02_応用.md § ページネーション 3つのスタイル
Q8 🎯 単一選択
メモリリークが疑われる本番アプリ。CPU・メモリの hotspot を継続的に観測したい。最適なサービスは?
- A. Cloud Logging
- B. Cloud Monitoring
- C. Cloud Trace
- D. Cloud Profiler
▶ 正解と解説
正解:D
Cloud Profiler は継続的プロファイリングサービス。CPU・メモリ・ロック競合の hotspot を可視化。低オーバーヘッド(< 1%)で本番でも有効化可。
- ❌ A:ログ。プロファイリングではない。
- ❌ B:メトリクスは集計値。hotspot 関数までは分からない。
- ❌ C:Trace は分散レイテンシの可視化。関数単位の CPU 占有は分からない。
📖 関連:02_学習資料/04_GCP統合/01_基礎.md § Cloud Profiler
Q9 📘 複数選択(2つ)
未捕捉の例外が発生したら、自動的にグルーピング・通知したい。実装すべきものを 2つ選べ。
- A. アプリで例外を ERROR レベルで Cloud Logging に出力(スタックトレース付き)
- B. すべての例外を catch して握り潰す
- C. Error Reporting で通知チャンネル(メール / Slack / Pub/Sub)を設定
- D. Slack の Webhook URL をアプリにハードコード
▶ 正解と解説
正解:A, C
A:ERROR ログ + スタックトレースを Cloud Logging に出すと、Error Reporting が自動で同一スタックトレースをグルーピングする。
C:通知チャンネルを Error Reporting に設定すれば、新規エラー・回帰エラー時に自動で通知。
❌ B:握り潰しは禁忌。デバッグできなくなる。
❌ D:Webhook URL のハードコードはシークレット漏洩リスク + 通知設定の一元化に反する。
📖 関連:02_学習資料/04_GCP統合/01_基礎.md § Error Reporting
Q10 🎯 複数選択(2つ)
Cloud Logging のコストが高すぎる。下げる方法を 2つ選べ。
- A. Log Router の Exclusion Filter で DEBUG レベルや不要ログを破棄
- B. すべてのログ出力を停止する
- C. 長期保管が必要な分は Sink で BigQuery / Cloud Storage にエクスポート、Cloud Logging 自体の保持期間は短くする
- D. severity を全部 INFO に変更
▶ 正解と解説
正解:A, C
A:Exclusion Filter で DEBUG / health-check の繰り返しログ等を破棄。コスト削減の王道。
C:Sink で BigQuery(クエリしやすい長期保管)や Cloud Storage(アーカイブ)にエクスポートすれば、Cloud Logging 自体は短期保持で済む。
❌ B:可観測性が失われる。本末転倒。
❌ D:severity を変えてもデータ量は変わらない。コスト改善にならない。
📖 関連:02_学習資料/04_GCP統合/02_応用.md § ログのコスト最適化
自己採点
| 得点 | 評価 | 次のアクション |
|---|---|---|
| 9-10 | 🎯 合格圏 | 模擬試験へ |
| 7-8 | 🔧 もう一押し | 誤答セクションを 03_要点と暗記.md で復習 |
| 5-6 | 📘 基礎再学習 | 01_基礎.md を読み直し |
| 0-4 | 📚 シラバスから | シラバス詳細の該当範囲を再学習 |