[レポート] GCP Professional Data Engineer 認定資格の勉強方法と振り返り

# はじめに
- GCP Professional Data Engineerに**合格**することが出来たため、 記憶が新鮮なうちに自省を含めて、レポートを書きます。
 - （モチベーションとしては、**第一問目からいくつかの問題を見た後で「想定できていなかった問題が多く、やばい。」という心境だった**ので、この反省を受験する前の自分に伝えたい気持ちで書いています。）
- この記事で述べたいポイントは、**「試験ガイドに書かれている出題範囲はしっかり確認しよう。」**と、**「組織や状況を仮で想定して、自分が実際の現場に導入し運用する思考訓練しよう。」**になります。 

# 受験前の自分の知識・経験
- GCP Professional Data Engineerを受けるに当たって、この試験に対する自分の強みと弱みは、以下の状態でした。
  - 強み：
     - 実際にデータエンジニアとして、GCP上でBigQuery/Dataprocを使って、DWH/DMを構築。パイプラインとしてはCloud Composerを利用。BIとしてはData Studioを利用。
     - 過去にはデータアナリストとして、機械学習を学び、レコメンドロジックの作成とチューニングを実施。
  - 弱み：
     - 基幹システムやプロダクトのデータベースなどからバッチベースでのデータ取得は行うが、リアルタイムのパイプラインには詳しくない。
         - したがって、Pub/Sub, Dataflow, BigTable, DataStoreは勉強が必要。

# 受験までに自分が勉強したこと
**※ただし、自分の勉強では、本番で全50問中20問くらいしか自信をもって回答できませんでした。**

- 準備：
    - Googleで「Google Cloud Data Engineer」で検索すると、過去に合格された方々の有益な勉強方法の記事が出てきます。それを参考に、まずは問題を解き、理解の足りない分野の勉強を進めます。
- 試験対策の問題集：
  - [公式の模擬試験](https://cloud.google.com/certification/practice-exam/data-engineer?hl=ja)
  - [Courseraの Preparing for the Google Cloud Professional Data Engineer Exam 日本語版](https://www.coursera.org/learn/preparing-cloud-professional-data-engineer-exam-jp/home/welcome)
- 理解のためにインプットした情報：
  - [Data Engineering, Big Data and ML on Google Cloud 日本語版専門講座](https://www.coursera.org/specializations/gcp-data-machine-learning-jp)
     - この教材では、バッチ系サービス（BigQuery/Dataproc）、ストリーミング系サービス(Pub/Sub,Dataflow/BigTable)、機械学習系サービス(ML API, BigQueryML, AutoML)など、多くの関連サービスを体系的に勉強でき、Qwiklabsを通して実際にハンズオンを行い、理解を深められます。
  - [[Google 認定資格] GCP Professional Data Engineer の勉強方法と対策](https://trainz.jp/media/learningtoai/1545/)
     - ”合格するための tips”、”確認テスト”のポイントを元に、公式ドキュメントを読みました。
  - [GCP Professional Data Engineerに2週間で合格したので勉強方法を共有](https://qiita.com/endw0901/items/5ebc530de3e9ffee4416#%E8%A9%A6%E9%A8%93%E3%81%AE%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF%E7%9A%84%E3%81%AA%E3%82%82%E3%81%AE%E3%82%92%E7%B4%B9%E4%BB%8B)
     - ”試験のテクニック的なものを紹介”が、Tipsとして参考になります。
  - [Google Cloud™ の Professional Data Engineer に合格しました](https://blog.brainpad.co.jp/entry/2018/11/28/112907)
     - "模擬試験を受けてみて", "いよいよ本試験"の部分で、その他キャッチアップすべき領域が述べられているので、このポイントを元に、公式ドキュメントを読みました。

# 本番試験を受けた後の反省
  - 実際に１回目を受験する必要があると思います。というのも、自分の勉強した内容と実際の試験とのGAPがどの程度あるのか？は分からないと思います。1回目は、結果は問わない気持ちで受験した方が良いと思います。
     - ただし、次回に活かすために、テスト中に自分が何を理解できていないのか？については、２時間ギリギリまで時間をかけて把握することが重要です。 
  - **※ただし、自分の勉強では、本番で全50問中20問くらいしか自信をもって回答できませんでした。**と書いたように、自分の勉強方法だけだと不足していた内容がありました。それは、実践的な観点です。例えば、**[試験ガイド](https://cloud.google.com/certification/guides/data-engineer?hl=ja)**でも、説明されています。一例を挙げると、以下のような項目になります。
     - システムの可用性とフォールト トレランス
     - ストレージの費用とパフォーマンス
     - データ復旧の計画、実施、ストレステスト（フォールト トレランス、失敗したジョブの再実行、遡及的再分析の実行）
  - この一例を具体的な文言に変換すると、以下のような観点を把握しておく必要があるということです。
     - 各サービスで可用性を高めるにはどうするのか？（注：でもコストは最適化してください。）
     - 各サービスでのバックアップはどうするのか？（注：でもコストは最適化してください。）
     - 各サービスでのエラー処理をどうするのか？（例：データ欠損、未整備データの混入などのケースで。）
  - そのため、上記の問題に答えるためには、実際の状況を想定しながら、各サービスの公式ドキュメントを読んで答えを考える。という思考訓練が必要になるはずです。自分は、今回の受験時に、この部分をまともに取り組めていなかった。という反省です。
     - 今思えば、模擬試験や想定問題で問われていたのは、各サービスとその適切な"ユースケース”の正しい組み合わせが多くだと思います。そのため、現場では当たり前に出てくる問題を、疎かにしていたのだと思いました。

# おわりに
  - この試験を受けてみて得た気づきや反省をもとに、さらに勉強を続けていく。というのがこの試験の意義である。と思いました。