section2_問題集

問題集 セクション2:データの取り込みと処理

Google Cloud Professional Data Engineer 試験(2024年改訂版)対応の問題集です。 本セクションは出題比重 約25%の最重要セクション。パイプライン設計・サービス選定・ストリーミング処理(ウィンドウ/ウォーターマーク/トリガー/遅延データ/Exactly-once)・オーケストレーション・CI/CD を、本番に近いシナリオ形式で出題します。

使い方

問題数・形式


Q1 📘 単一選択

あるスタートアップが、IoTセンサーから途切れることなく届き続けるデータを、サーバーレスで、かつ将来は同じ処理コードをバッチにも流用できる形で処理したいと考えています。クラスタの管理は避けたいという要望もあります。最適な処理サービスはどれですか。

▶ 正解と解説

正解:B

解説: Dataflow は Apache Beam を実行するサーバーレスの処理サービスで、クラスタ管理が不要です。Beam は「Batch and Streaming Unified」を掲げており、同一コードでストリーミングとバッチの両方を記述できます。「途切れず届く(無界データ)」「サーバーレス」「バッチにも流用」という条件すべてに合致します。

📖 関連:01_基礎.md の「Dataflow(Apache Beam)の役割」


Q2 📘 単一選択

データパイプラインにおいて、送信側(パブリッシャー)と受信側(サブスクライバー)を疎結合にし、急なデータ流入を吸収するバッファとして機能する、グローバルなメッセージング基盤はどれですか。

▶ 正解と解説

正解:C

解説: Pub/Sub はグローバルなメッセージング基盤で、トピックとサブスクリプションを介して送受信を疎結合化します。急なトラフィック増加を吸収するバッファ、複数受信者へのファンアウトが主な役割で、ストリーミング取り込みの入口として定番です。

📖 関連:01_基礎.md の「Pub/Sub の役割」


Q3 📘 単一選択

データアナリストのチームが、コードを書かずにGUIのドラッグ&ドロップでソース→変換→シンクのETLパイプラインを組み立てたいと希望しています。対話的なデータクレンジング機能(Wrangler)も活用したいです。最適なサービスはどれですか。

▶ 正解と解説

正解:B

解説: Cloud Data Fusion は CDAP ベースのGUI(ノーコード/ローコード)ETLツールで、ドラッグ&ドロップでパイプラインを構築できます。Wrangler でデータを見ながら対話的にクレンジング・整形でき、「コードを書きたくない/書けないチーム」に最適です。

📖 関連:01_基礎.md の「Cloud Data Fusion の役割」


Q4 📘 単一選択

ある企業はオンプレミスで既存の Apache Spark / Hadoop(Hive を含む)ジョブを多数運用しており、これらをできるだけ書き換えずにそのままGoogle Cloudへリフト&シフトしたいと考えています。最適なサービスはどれですか。

▶ 正解と解説

正解:C

解説: Dataproc はマネージドな Spark / Hadoop クラスタで、OSSのビッグデータエコシステム(Spark, Hive, Pig 等)をそのまま動かせます。既存のSpark/Hadoopコード資産を書き換えずに移行したいケースの定番です。コスト最適化には ephemeral(一時)クラスタ+GCS が定石です。

📖 関連:01_基礎.md の「Dataproc の役割」


Q5 🔧 単一選択

ライブダッシュボードに「直近5分間の平均リクエスト数を1分ごとに更新」して表示したい、というストリーミング要件があります。Apache Beam で使用すべきウィンドウの種類はどれですか。

▶ 正解と解説

正解:B

解説: 「直近5分」という重なりのある集計を「1分ごと」に更新するには、スライディングウィンドウを使い、window=5分(集計対象の幅)、period=1分(出力間隔)を指定します。移動平均・直近N分の傾向を出す典型パターンです。

📖 関連:01_基礎.md の「ストリーミングのウィンドウ処理」


Q6 🔧 単一選択

動画ストリーミングサービスで、ユーザーの操作イベントを分析しています。「ユーザーが30分間まったく操作しなければ、その視聴セッションは終了したとみなす」という単位で集計したいです。最適なウィンドウはどれですか。

▶ 正解と解説

正解:C

解説: 「一定時間(30分)アクティビティが無ければ区切る」のはセッションウィンドウの定義そのものです。gap(ギャップ)=30分を指定すると、操作が途切れてから30分経過したところでセッションが閉じます。ウィンドウ幅は操作の連続性に応じて可変になります。

📖 関連:02_応用.md の「ウィンドウ選択の判断」


Q7 🔧 単一選択

グローバルに分散したクライアントからイベントが送られてくるストリーミングパイプラインで、ネットワーク遅延によりイベントが順不同・遅れて届きます。それでも「実際にイベントが発生した時刻」に基づいて時間集計を正しく行いたいです。どう設計すべきですか。

▶ 正解と解説

正解:B

解説: 順序の乱れや遅延がある中で正しく時間集計するには、イベント時刻(データが実際に発生した時刻)を基準にするのが原則です。ウォーターマークが「この時刻までのデータは出揃った」という境界を示し、ウィンドウ集計の確定タイミングを制御します。これによりネットワーク遅延に左右されない集計ができます。

📖 関連:01_基礎.md の「ウォーターマークと遅延到着データ」


Q8 🔧 単一選択

Pub/Sub から受信したメッセージを Dataflow で処理し BigQuery に書き込んでいます。Pub/Sub は配信保証の都合上同じメッセージを重複配信することがあり得ます。最終的に各レコードを重複なく・漏れなくちょうど1回だけ反映したいです。最も適切な方法はどれですか。

▶ 正解と解説

正解:B

解説: Pub/Sub は既定で at-least-once(重複あり得る)です。Dataflow は内部でチェックポイントと重複排除を行い、Pub/Sub の重複を吸収して Exactly-once を実現します。BigQuery への書き込みは Storage Write API を使うと Exactly-once セマンティクスが得られ、パイプライン全体で「ちょうど1回」を担保できます。

📖 関連:02_応用.md の「Exactly-once の実現」


Q9 🔧 単一選択

ストリーミングパイプラインで、特定のメッセージが処理に失敗し続け、リトライを繰り返してパイプライン全体の処理を滞らせています。健全なメッセージの処理を止めずに、問題のメッセージだけを切り離したいです。Pub/Sub の機能としてどれを使いますか。

▶ 正解と解説

正解:C

解説: デッドレタートピック(DLQ)は、規定の配信試行回数を超えても処理できなかったメッセージを別トピックへ退避する機能です。詰まりの原因となるメッセージを隔離することで、健全なメッセージの処理を継続でき、パイプライン停止を防げます。退避したメッセージは後で個別に調査・再処理します。

📖 関連:02_応用.md の「Pub/Sub の重要機能」


Q10 🔧 単一選択

データパイプラインにバグがあり、修正をデプロイしました。過去にPub/Subで配信済みのメッセージを、もう一度最初から再処理したいです(メッセージ保持期間は十分に設定済み)。Pub/Sub のどの機能を使いますか。

▶ 正解と解説

正解:B

解説: シーク(Seek)は、サブスクリプションの再生位置を過去のタイムスタンプやスナップショットへ巻き戻す機能です。これにより、確認応答(ack)済みのメッセージでも保持期間内であれば再配信させ、バグ修正後の再処理が可能になります。前提としてメッセージ保持が必要です。

📖 関連:02_応用.md の「Pub/Sub の重要機能(シーク)」


Q11 🔧 単一選択

複数のジョブからなる夜間バッチがあります。「BigQueryで集計 → 結果を検証 → 検証OKならレポート生成 → 関係者へ通知」という、複雑な依存関係・分岐・リトライを伴うワークフローをコードで管理したいです。チームには既存のAirflow DAGの資産もあります。最適なサービスはどれですか。

▶ 正解と解説

正解:C

解説: Cloud Composer はマネージドな Apache Airflow で、**DAG(有向非巡回グラフ)**として複雑な依存関係・分岐・リトライ・スケジュールをPythonコードで定義できます。豊富なOperatorでGCPサービスを呼べ、既存のAirflow DAG資産をそのまま活用できます。「複雑な依存・多数のデータジョブ」の定番です。

📖 関連:02_応用.md の「Cloud Composer vs Workflows」


Q12 🔧 単一選択

数個の Cloud Run サービスと外部API を「順番に呼び出すだけ」の軽量なイベント駆動連携を、インフラを管理せず・実行課金で低コストに実装したいです。複雑なDAGは不要です。最適なサービスはどれですか。

▶ 正解と解説

正解:B

解説: Workflows はサーバーレスなAPI/サービスのオーケストレーションで、YAML/JSONでステップを定義します。HTTP/API・Cloud Functions・Cloud Run の順次/分岐実行に向き、インフラ管理不要・実行課金で低コストです。「軽量・複雑なDAG不要」の連携に最適です。

📖 関連:02_応用.md の「Cloud Composer vs Workflows」


Q13 🔧 単一選択

セキュリティ要件として、Dataflow のワーカーVMを外部IPを持たせずに動かし、攻撃面を縮小しつつGoogle APIへ到達させたいです。どの構成が適切ですか。

▶ 正解と解説

正解:B

解説: Dataflow ワーカーの**外部IPを無効化(--no_use_public_ipsし、サブネットで限定公開のGoogleアクセス(Private Google Access)**を有効にすると、外部IPなしで内部から Google API へ到達できます。これが攻撃面を縮小するセキュアな基本形で、必要に応じて VPC Service Controls を併用します。

📖 関連:02_応用.md の「ネットワーキングのベストプラクティス」


Q14 🎯 単一選択

ある企業がコストを最優先でストリーミング基盤を選定しています。スループットは事前に予測可能で、可用性は単一ゾーン/リージョン単位でも許容でき、キャパシティの事前計画・管理も受け入れられます。最適な選択はどれですか。

▶ 正解と解説

正解:B

解説: Pub/Sub Lite はゾーン/リージョン単位で、スループットとストレージのキャパシティを事前に手動予約する代わりに、標準のPub/Subより大幅に低コストです。「コスト最優先・スループット予測可能・ゾーン単位で許容・キャパシティ計画OK」という条件に合致します。

📖 関連:02_応用.md の「Pub/Sub vs Pub/Sub Lite」


Q15 🎯 単一選択

既存のストリーミング Dataflow ジョブで、トラフィックの急増時にオートスケールの追従が遅く、ワーカーの状態管理が原因で不安定になっています。ウィンドウ状態の保持をワーカーから切り離して、オートスケールを高速・滑らかにし安定性を高めたいです。何を有効化しますか。

▶ 正解と解説

正解:B

解説: Streaming Engine はストリーミングジョブのウィンドウ状態の保持をサービス側へオフロードし、ワーカーを軽量化します。状態をワーカーから切り離すことで、オートスケールが高速・滑らかになり、ワーカーの障害やスケール変更に強くなります。今回の「オートスケール追従が遅い・状態管理で不安定」という症状の直接の対策です。

📖 関連:02_応用.md の「Dataflow Shuffle と Streaming Engine」


Q16 🎯 複数選択(2つ選べ)

ストリーミング集計で、確定前の途中経過を早めにダッシュボードへ出しつつ、ウォーターマーク通過後に遅れて届いたデータも結果へ反映したいです。Apache Beam で適切に組み合わせるべき設定はどれですか。2つ選んでください。

▶ 正解と解説

正解:A・B

解説: 「途中経過を早く出す」には、ウォーターマーク到達前に発火する早期発火(early firing)を含む複合トリガーを使います(A)。「遅れて届いたデータも反映」するには、**許容遅延(allowed lateness)**を設定し、**累積モード(accumulating)**で結果を再計算・更新します(B)。この2つの組み合わせが「早期結果+遅延更新」の定石です。

📖 関連:01_基礎.md の「トリガー」「ウォーターマークと遅延到着データ」


Q17 🎯 複数選択(2つ選べ)

EC企業のストリーミングパイプラインで、同一ユーザーのイベントだけは到着順序を保ったまま処理したい、かつ処理できない壊れたメッセージでパイプラインを止めたくないという2つの要件があります。Pub/Sub で使うべき機能はどれですか。2つ選んでください。

▶ 正解と解説

正解:A・B

解説: 「同一ユーザーのイベントの順序保持」には順序指定キー(Ordering Key)を使います。キー単位で順序が保証されます(A)。「壊れたメッセージで止めない」には、規定回数失敗したメッセージを退避するデッドレタートピックを使い、健全な処理を継続します(B)。

📖 関連:02_応用.md の「Pub/Sub の重要機能」


Q18 🎯 複数選択(2つ選べ)

Dataflow パイプラインと Cloud Composer の DAG を、Git管理し、テストを通過したものだけを dev→staging→prod へ自動デプロイして再現可能にしたいです。CI/CD の構成として適切なものを2つ選んでください。

▶ 正解と解説

正解:A・B

解説: CI/CD の中核は Cloud Build。Gitへの push/PR でトリガーし、cloudbuild.yaml に従ってテスト→ビルド→デプロイを自動化、dev→staging→prod へテスト通過分だけ昇格します(A)。Composer は DAG を Cloud Build から GCS の dags/ フォルダへ自動配置するのがベストプラクティスです(B)。Dataflow は Flex テンプレートをビルドして Artifact Registry に登録し、環境ごとにパラメータ実行します。

📖 関連:02_応用.md の「CI/CD の設計(Cloud Build)」、01_基礎.md の「CI/CD」


自己採点

項目 内容
総問題数 18問
形式 単一選択 15問 / 複数選択(2つ選べ)3問(Q16・Q17・Q18)
難易度内訳 📘 基礎 4問(Q1〜Q4) / 🔧 応用 9問(Q5〜Q13) / 🎯 発展 5問(Q14〜Q18)
目標正答率 80%以上(=15問以上正解)

補足:複数選択は Q16・Q17・Q18 の3問です(要件「3〜4問」を満たします)。

スコアの目安

頻出ひっかけ チェックリスト(復習用)