【GCP認定資格】一発合格したから勉強方法をまとめておく【Professional Data Engineer】

![EvtFccNUcAQni14.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148317/389a9b08-fac7-a3c8-557f-fa81f92f4492.jpeg)

先日試験を受けて合格してきました。学習期間は1ヶ月程度です。
まだまだ他の資格に比べたら情報量が少ないので、自分も合格記を書いて今後受ける方の参考になればと思います。

# 試験について
こちらは既存の記事にすでにまとまっていますので、リンクを貼る形にします。
[GCP Professional Data Engineerに2週間で合格したので勉強方法を共有](https://qiita.com/endw0901/items/5ebc530de3e9ffee4416)

# 筆者の概要
業務でBigQueryを中心にGCPによるデータ基盤運用に約1年半ほど携わっています。

取得したことのある資格は
・AWS Solution Architect Associate
・GCP Professional Cloud Architect
の2つです。

GCPの広く浅い知識はあり、ビッグデータ周りでいうとBigQueryに関しては比較的知識を持っており、それ以外のリソースの知識はないといった感じです。

ビッグデータエンジニアとしての知識を包括的に身につけたかったので、今回Professional Data Engineerを受験しようと思いました。

# 受験した所感
先に所感を述べておくと、**難しさは感じたものの最低でも8割程度(40問)は正解している自信があった**といったところです。
他の合格記にもありましたが、2択まで絞れてから問題文の微妙なニュアンスを読み取って答えを選ぶといったものが多かったです。

また、練習問題を多く解いたことで**類似した問題・同様の問題**も出てきました。
この問題については自信をもって即答できたので、**心理的な余裕**と**時間的な余裕**も持つことができたのが大きかったです。
(1周目は1時間程度で回答して、自信がない問題を30分程度で再考して提出しました。)

# 方針
今回は練習問題を多く解くことに注力しました。
というのもGCP認定資格の練習問題をといた時にCloud Architectに比べて専門性を問われる問題が多く、どの程度の深い専門性が問われるのかを把握する必要があると感じたからです。

勉強フローとしては、
1. 公式のGCP認定資格の練習問題を解く
2. 試験に関連するリソースの基礎知識を習得(オンライン講座,ドキュメント読み込み) 
3. 練習問題を解きまくる 
→ 4. 知識が足りない苦手のリソースの洗い出し 
→ 5. 苦手リソースの専門知識を習得(ドキュメント読み込み)

といった流れで最初に1,2を実施したあとは3から5のサイクルをだいたい2周しました。

# 勉強方法
## 1. 公式のGCP認定資格の練習問題
★ ***公式ページの模擬試験***

GCP認定資格の受験を考えたことがある方にはおなじみですが、[公式ページの模擬試験](https://cloud.google.com/certification/sample-questions/data-engineer?hl=ja)になります。
1番最初に受けておいて、本試験前に再度受けて成長を実感するためのものと思っておけばよいです。

## 2. 基礎知識の習得 
★ ***オンライン講座の受講***
★ ***ドキュメントの読み込み***

* ![スクリーンショット 2021-03-08 19.41.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148317/68931cf6-3a67-631e-1be9-8bc76e37b64d.png)


GCP資格の勉強には、AWSのような資格勉強用のテキストがあるわけではないので基本的には
**ドキュメントの読み込み**
だと思っています。

しかし、試験範囲もわからず漠然とドキュメントを読むのは辛いと感じたので自分は
**オンライン講座の受講**
によって試験範囲とレベル感の把握を行いました。

具体的には
**Coursera** の [**Preparing** **for** **the** **Google** **Cloud** **Professional** **Cloud** **Architect** **Exam** **日本語版**](https://www.coursera.org/learn/preparing-cloud-professional-cloud-architect-exam-jp)
という講座です。

この講座で試験範囲をある程度確認してからドキュメント読み込みで各リソースの基礎知識をインプットしました。
下記にざくっと(あくまでざくっと)書き出しておきましたので、よければ参考にしてください。

☆ データベース(ストレージ)関連

- BigQuery
- BigTable
- Datastore
- Cloud SQL
- Cloud Spanner
- (Cloud Storage)

☆ データ加工関連

- Dataflow
- Dataproc
- Dataprep
- Pub/Sub

☆ 機械学習関連

- AutoML Tables
- AutoML Natural Language
- AutoML Translation
- AutoML Vision
- Cloud Speech-to-text
- AI Platform
- Cloud TPU

☆ その他

- Logging
- Monitoring
- Stackdriver
- Data Loss Prevention

自分はこれらのサービスそれぞれのドキュメントを読み込んで特徴を紙にまとめていく作業をしておいて、暇があれば読み返すというインプット作業をしていました。

![スクリーンショット 2021-03-08 20.05.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148317/e4fd9b0c-7199-2336-d61d-1202991b1aab.png)


データベース周りはかなり詳細な知識が要求されます。
例えば、BigTableのパフォーマンステストを行う時の注意事項は？ とか BigQueryでキャッシュが効かない時原因として考えらえるものは？ など。
ここらへんは下記の練習問題解きまくることで実感できると思います。

## 3.練習問題を解きまくる
★ ***模擬試験問題集の購入***

![スクリーンショット 2021-03-08 19.42.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/148317/9d6a3bf1-124c-1346-166e-4571665fdca1.png)


方針として上記にあるように今回の勉強フローで最も効果のある部分でした。

具体的には
**Udemy** の **[Google Cloud Professional Data Engineer Practice Exam 2021](https://www.udemy.com/course/google-cloud-professionals-data-engineer-practice-exam/)**
という問題集になります。

内容は50問1セットで4セット含まれています。重複している問題もありますが、その問題はそれだけマストの知識であるということ(だと思ってる)なので確実な知識とすることをおすすめします。

この問題集の良かった点は、
**各設問の解説にどのドキュメントを参考にすればよいかURLが掲載されいている**
というところです。間違ったら速攻ドキュメント読んでインプットしましょう。

この問題集から5問くらいは似たような問題・同様の問題が出題されていたような印象です。

ちなみに1週目のそれぞれの正解率は、

* Practice Test01： 76%(38/50)
* Practice Test02： 68%(34/50)
* Practice Test03:　76%(38/50)
* Practice Tets04: 　70%(35/50)

って感じでした。そこそこ知識は定着していたけど、試験ならではの問題には対応できていないといった印象です。

## 4. 苦手なリソースの洗い出し
★ ***模擬試験問題集の復習***

問題集を復習してみると不正解しているリソースが偏っているかもしれません。
自分の場合は機械学習周りの知識とBigTableの詳細な知識が足りないことが分かりました。

ここで洗い出した分野を重点的にドキュメントやネット記事で知識を身につけていきました。

また、復習する際には選択肢をみないでも
**問題文からある程度答えを予測できる**
という状態を心がけました。
そうすることで、試験中の回答までの反応が速くなって時間に余裕を持たせることにもつながります。

では、どうやって上記の状態を作るかですが、
**問題文と答えと解説をまるっと暗記**
しました。問題集はすべて英語なので翻訳してまるっと。正しい勉強法かはわかりませんが自分はこれでうまくいきました。


## 6. 3→4→5 をもう1週

上記をやってもう1度試験を受け直しました。

2週目の正解率は、

* Practice Test01： 86%(43/50)
* Practice Test02： 98%(49/50)
* Practice Test03:　100%(50/50)
* Practice Tets04: 　98%(49/50)

でした、Test01が点数が悪かったので非常に反省しました。
2周目であれば1問間違えるか間違えないかくらいまでになれていると安心できるかと思います。

必要に応じてドキュメント読み込みと解説暗記を行えばOKです。

## 7. 公式問題をもう1回
ここまで準備して、公式問題をもう１回解いてみると結構な速さで解けてるのではないでしょうか？

ここでの正解率は

* 90%(27/30)

でした。手応えもあったので自信を持って試験に臨むことができました。

ちなみに本試験では回答が不安またはわからない問題にはフラグをつけて後から見直しました。
試験を1週解き終わったら10問くらいフラグつけていました。
その後、冷静に考えてみて最後まで自信がなかったのは5問くらいでした。

# 問題集でこんな問題を間違えた
を晒してみます。

* 費用対効果が高く、可用性が高く、ACIDに準拠したSQLクエリをサポートするソリューションは？
* 100TB以上の安全かつ効率的な方法でHDFSからGoogleストレージにデータを移行方法は？
* BigTableのHDDからSDDの変更方法は？
* AutoML Visionのモデル精度を修正方法は？
* BQのデータインポート時のデータスキューの原因は？
* 1000以上のテーブルにクエリできない、テーブルの集約方法は？
* BQでユーザーのアクセス制御をしつつ、ストレージコストを最小限に、他のプロジェクトからアクセスを許可する方法は？
* 期限切れログのアーカイブ方法として正しいものは？
* BigTableのクラスタサイズ増加の判断の基準は？
* データ加工する際のDataflowの概念で正しいものは？

などなど。かなり深い知識がないと自信を持って回答するのは難しいのではないでしょうか。

# さいごに
一発合格できて良かったです。
やっぱり問題集を解いて、本番と似たような問題文になれていくのは大事だと感じました。

なれていないと50問解くのは精神的にもしんどいと思います。

Professional Data Engineer の取得を考えている方の助けになればと思います。

# 参考
## 記事
* https://trainz.jp/media/learningtoai/1545/
* https://qiita.com/endw0901/items/5ebc530de3e9ffee4416
* https://techblog.nhn-techorus.com/archives/17559