GCP認定Professional Data Engineer受験対策

# はじめに
取得してからだいぶ経っていますが、Google Cloud認定資格の中では、Professional Cloud Architectに次いで、Professional Data Engineerを受験する方が多いのかなと思い要点をまとめてみました。  
本記事を読んだだけで合格できる、ということを保証するものではありませんので、ご了承ください。

(2024/11/2追記)
2024/10 に本資格を更新した際のアップデートを下記記事にまとめていますので、併せてご参照ください。

https://qiita.com/yutakon/items/8907d4293c2b5c74505f

# もくじ
- Professional Data Engineerについて
- 要点
- 勉強法
- まとめ

# Professional Data Engineerについて
本資格ではデータ処理システムの設計や構築、運用に関することが問われます。問題は50～60問の選択式であり、試験時間は2時間、受験費用は$200 (税別) です。  
[試験ページ](https://cloud.google.com/learn/certification/data-engineer?hl=ja)では、以下のことが評価されるとあります。

- データ処理システムの設計
- 機械学習モデルの運用化
- ソリューションの品質の確保
- データ処理システムの構築と運用化

難しいことが書いてありますが、要はデータ処理 (ETLとかELT) をどうするかやどのデータベースやストレージサービス使うか、的なことが問われると言うことです。

Professional Data Engineerの[試験ガイド](https://cloud.google.com/learn/certification/guides/data-engineer?hl=ja)には試験に出題される可能性があるトピックについて記載があります。全て知りたい方は試験ガイドのリンクに飛んでいただきたいですが、ここでは主に重要だと思われるトピックについてピックアップしました。

## 重要トピック
- データモデリング
- レイテンシ、スループット、トランザクションに関係するトレードオフ
- スキーマの設計
- BigQuery
- Dataflow
- Dataproc
- Pub/Sub
- Cloud Composer
- オンプレからのデータ移行
- マネージドストレージサービス
- MLモデル
- データセキュリティ

試験ページにアクセスすると分かりますが、2023年9月19日現在、ベータ試験の登録が始まっています。ベータ試験というのは試験を一般提供する前に用意した試験の難易度が適切かどうかなどを調査するために行われます。このベータ試験では「Google Cloudのデータ保存、データ共有、データガバナンスの更新事項に対応しています。新しい試験は、MLモデルの運用化に関する話題から重心をシフトし、データの利用度と価値を高めるデータエンジニアの役割に焦点を当てた内容」となっており、ベータ試験が一般提供されたら、従来のProfessional Data Engineerから多少試験範囲や試験問題の傾向が変わるかもしれません。そのため、本記事では新しい試験を網羅できない恐れがあることをご了承ください。ベータ試験の試験範囲が気になる人は[ベータ版試験ガイド](https://services.google.com/fh/files/misc/professional_data_engineer_beta_exam_guide.pdf?hl=ja)を参照ください。ちなみにベータ試験は試験時間4時間で全問英語というかなりハードな試験なので興味がある方はぜひ受験してみてください。


# 要点
ここではProfessional Data Engineerでよく出題されるGoogle Cloudサービスを4つの分野にカテゴライズして紹介します。
- データ処理
- ストレージ・データベース
- データセキュリティ
- ML

## データ処理
例えば、データを分析したい場合、使うデータを成型して分析しやすいフォーマットにしたり、膨大な量のデータから分析に必要なデータだけ抽出したりとデータを処理する必要があります。Professional Data Engineerではこうしたデータ処理について、Google Cloudではどんなサービスを使ってデータの[ETL(抽出・加工・取込)](https://cloud.google.com/learn/what-is-etl?hl=ja)をするかについて問われます。ここではデータ処理でよく使われるサービスについて挙げています。
  
- [**Pub/Sub**](https://cloud.google.com/pubsub/docs/overview?hl=ja)  
これはメッセージングサービスじゃないの？と思われてしまいますが、データ処理でも使えます。データ処理では主にDataflowと組み合わせてストリーミング分析やデータ統合パイプラインに使用されます。

- [**Dataflow**](https://cloud.google.com/dataflow?hl=ja)  
サーバレスかつ梗塞で、費用対効果の高い、ストリームデータ処理とバッチデータ処理を可能にするサービスです。特徴としては1回限りの処理をすることです。これにより、データの欠落や重複を防いでいます。上述したようにPub/Subと組み合わせることでストリーミングパイプラインなどが構築できます。詳細は以下リンクをご参照ください。

https://cloud.google.com/dataflow/docs/concepts/streaming-with-cloud-pubsub?hl=ja

- [**Dataprep by Trifacta**](https://cloud.google.com/dataprep?hl=ja)  
分析と機械学習のデータを視覚的に探索、クリーニング、準備できるサービスです。ドキュメントからはTrifactaの[公式ドキュメント](https://docs.trifacta.com/display/dp/)にもアクセスできますが、キーワードとしては"視覚的に"ということを覚えておけばよいでしょう。"GUI"でも構いません。コード作成不要でデータ処理が出来ます。

- [**Dataproc**](https://cloud.google.com/dataproc?hl=ja)  
Apache Hadoop、Apache Spark、Apache Flink、Prestoをはじめとしたオープンソースツールやフレームワークを実行するためのフルマネージドサービスです。Dataprocを使用するとこれらオープンソースのデータツールを利用して、バッチ処理、クエリ実行、機械学習を行うことができる。問題文に「Apache Hadoop」や「Apache Spark」があればこれが正解と疑って良いかもしれません。
※そのほかの部分で、他の選択肢が正解の可能性もありますので、過信は禁物です。

- [**Cloud Data Fusion**](https://cloud.google.com/data-fusion?hl=ja)  
データパイプラインを迅速に構築し管理するための、フルマネージドかつクラウドネイティブなサービスです。ETL/ELTデータパイプラインを構築し、管理できます。GUIで操作でき、実行環境はDataprocであるため、DataprocのGUI版と覚えて良いかもしれません。

- [**Cloud Composer**](https://cloud.google.com/composer/docs/concepts/overview?hl=ja)  
フルマネージドのワークフローオーケストレーションサービスです。クラウドとオンプレミスにまたがるワークフローパイプラインの作成などが行えます。DAGでワークフローを定義できます。

データ処理とは言えないかもしれませんが、オンプレミスからデータを取り込む場合などに用いるサービスについて紹介します。

- [**Transfer Appliance**](https://cloud.google.com/transfer-appliance/docs/4.0/overview?hl=ja)  
大容量のストレージデバイスであり、データをGoogleのアップロード施設に安全に配送・データ転送を行います。Googleアップロード施設に届いたデータはCloud Storageにアップロードされます。転送にかかるプロセスなどを押さえておくと良いです。

- [**Storage Transfer Service**](https://cloud.google.com/storage-transfer-service?hl=ja)  
Google Cloud、AWS、Azure、オンプレミスなどにまたがるファイルストレージとオブジェクト間で迅速かつ安全にデータ転送ができます。Cloud Storageへのデータ移行などのユースケースについては公式ドキュメントで一読しておくと良いです。  

データ移行に関するプロセスについては以下ドキュメントをご参照ください。

https://cloud.google.com/architecture/migration-to-google-cloud-transferring-your-large-datasets?hl=ja


## ストレージ・データベース
Google Cloudのストレージサービスでは用途により大きく「ブロックストレージ」「ファイルストレージ」「オブジェクトストレージ」に分けられます。それぞれに対して試験でよく出題される以下オプションの概要を以下のリンクから押さえておきましょう。

| ストレージの種類 | オプション |
| :-: | :-: |
| ブロックストレージ | Persistent Disk、Google Cloud Hyperdisk、ローカルSSD |
| ファイルストレージ | Google Cloud Filestore |
| オブジェクトストレージ | Cloud Storage |

https://cloud.google.com/architecture/storage-advisor?hl=ja#file-storage


データベースについては、問題文にあるユースケースに該当するGoogle Cloudのデータベースサービスを選択する問題が頻出します。データベースの種類が何なのか、どのような要件が求められているのか、から正解を絞ります。以下の記事にGoogle Cloudのデータベースサービスがあるのでここからキーワードを押さえると良いです。

https://cloud.google.com/products/databases?hl=ja

上記記事にあるデータベースをまとめたのが以下の表です。AlloyDBは現行の試験で出題されないので、省いています。  
※今後出題されることがあれば、記事を更新します。

| データベースの種類 | Google Cloudサービス | 概要 | ユースケース例 |
| :-: | :--: | :-- | :-- |
| RDB | [**Cloud SQL**](https://cloud.google.com/sql/docs?hl=ja)   | フルマネージドのMySQL、PostgreSQL、SQL Server。DMSをりようすることでCloud SQLへの移行を簡素化。 | SRM、ERP、eコマース |
|  | [**Cloud Spanner**](https://cloud.google.com/spanner?hl=ja) | 無制限のスケール、グローバルな整合性、最大99.999%の可用性、クラウドネイティブデータベース | ゲーム、功利、グローバルの財務元帳 |
|  | [**Bare Metal Solution**](https://cloud.google.com/bare-metal?hl=ja) | OracleワークロードのGoogle Cloudへのリフト&シフト | レガシーアプリケーション |
|  | [**BigQuery**](https://cloud.google.com/bigquery/docs/storage_overview?hl=ja) | サーバレスのマルチクラウドデータウェアハウス、最大99.99%の可用性。[Datastream for BigQuery](http://cloud.google.com/datastream-for-bigquery?hl=ja)で監視データに関するほぼリアルタイムの分析情報を取得可能。 | マルチクラウド分析、リアルタイム処理、組み込みのML |
| Key-Value | [**Cloud Bigtable**](https://cloud.google.com/bigtable/docs?hl=ja) | 大規模な分析ワークロードにも運用ワークロードにも対応できる高性能なフルマネージドNoSQLデータベース。最大99.999%の可用性。高スループットのデータ処理に最適。 | パーソナライズ、レコメンデーションエンジン |
| ドキュメント | [**Firestore**](https://cloud.google.com/firestore/docs?hl=ja) | スケーラブルなドキュメントデータベースサービス。多用で高速なクエリと最大99.999%の高可用性。 | モバイル/ウェブ/IoTアプリケーション、リアルタイム同期、オフライン同期 |
| インメモリ | [**Memorystore**](https://cloud.google.com/memorystore/docs?hl=ja) | フルマネージドRedisとMemcachedによるミリ秒未満のデータアクセス。 | キャッシュ、ゲーム |

他にも以下記事がデータベース選定に関する参考になると思います。

https://cloud.google.com/architecture/framework/system-design/databases?hl=ja#key-services

データベース関連では、データベースのスキーマ設計についても問われます。例えば、Cloud Spannerではホットスポットを防ぐためにUUIDを使用したり連続した値をビット反転したりします。ここら辺に関しては、以下のデータベースパフォーマンスの最適化に関する記事から各Google Cloudサービスのスキーマ設計ベストプラクティスへアクセスして押さえておきましょう。中身まで詳細に知る必要は無く、見出しレベルで覚えておく程度でも問題ありません。

https://cloud.google.com/architecture/framework/performance-optimization/databases?hl=ja

## データセキュリティ
データを保護するために用いるセキュリティサービスについて紹介します。

[**Cloud KMS**](https://cloud.google.com/kms/docs?hl=ja)  
デフォルトでGoogle Cloudに保存されているデータは暗号化されていますが、それ以上に暗号化が必要な場合はCloud KMSの顧客管理の暗号鍵 (CMEK) などを使用して暗号化します。

[**Cloud IAM**](https://cloud.google.com/iam/docs/overview?hl=ja)
Google Cloudにおけるアクセスを管理できるサービスです。クラウドでは「最小権限の原則」に従うことが推奨されており、データにアクセスする人が最小限になるようにする必要があります。試験でも権限周りを問われたら必要以上な権限を持たせていないか確認しましょう。

[**Cloud Data Loss Prevention**](https://cloud.google.com/dlp/docs?hl=ja)  
こちらはSensitive Data Protectionの一部となりましたが、現行の試験ではこの名前で出題されるかもしれないので、この名前で載せておきます。これを使うと機密データに対する匿名化等ができます。

## ML
機械学習についてはGoogle Cloudの他の認定資格であるProfessional Machine Learning Engineerで詳細に問われますので、ここでは概要だけ述べます。

- 機械学習に関する用語  
試験ガイドにある「特徴、ラベル、モデル、回帰、分類、推奨、教師ありの学習と教師なしの学習、評価指標」について各用語がどういう意味なのかネットで押さえておきましょう。

- [**AutoML**](https://cloud.google.com/automl/docs?hl=ja)  
機械学習の知識がない人でも機械学習を行えるサービスです。GoogleのML機能を基にして独自のカスタムML学習モデルを作成することもできます。

- [**BigQuery ML**](https://cloud.google.com/bigquery/docs/bqml-introduction?hl=ja)  
Google SQLクエリを使用して機械学習モデルを作成して実行できるサービスです。既存のSQLツールなどを使ってモデルを構築できる。BigQueryにデータがあれば、データを移動することなく機械学習ができるため開発スピードを向上できます。

- トレーニング済API
Professional Data Engineerでは機械学習にする深い知識までは問われず、Google Cloudにあるトレーニング済みAPIを使用する程度の知識で問題ありません。よく出るサービスとして、Vision API、Natural API、Speech-to-Text APIなどがあります。これらのAPIについてどんなことができるのか押さえておけば良いです。


最後に、Google Cloudアーキテクチャセンターで試験に関係しそうなドキュメントを載せておきます。

https://cloud.google.com/architecture/framework/system-design/storage?hl=ja

https://cloud.google.com/architecture/framework/system-design/databases?hl=ja

https://cloud.google.com/architecture/framework/system-design/data-analytics?hl=ja

https://cloud.google.com/architecture/framework/system-design/ai-ml?hl=ja

# 勉強法
私が勉強した方法を一例として紹介します。
1. [試験ガイド](https://cloud.google.com/learn/certification/guides/data-engineer?hl=ja)を読む
2. Qiitaの受験対策記事や[G-gen](https://blog.g-gen.co.jp/entry/professional-data-engineer)で試験でよく問われることを押さえる
3. [模擬試験](https://docs.google.com/forms/d/e/1FAIpQLSd4j4bcgbYenBRFIL6Kb0cvXp13qCQ-z6JzowgDxRaPITn56g/viewform?hl=ja)を受験する
4. [Udemy](https://www.udemy.com/course/google-cloud-professional-data-engineer-s/)などの問題集を利用して知識強化を図る

個人的には、4の方法で解答を見ながら問題を読んでいき、キーワードを押さえて行くのが効率的な勉強方法かなと思います。
# まとめ
以上がProfessional Data Engineer合格に向けた要点です。この内容がこれからProfessional Data Engineerを目指される方の参考になれば幸いです。  
また、私が別で書いたGoogle Cloud認定資格11種の難易度などについての記事もございますので、こちらも参照ください。

https://qiita.com/yutakon/items/73fa3e853e60620fd777