GCP Professional Data Engineerに2週間で合格したので勉強方法を共有

GCP(Google Cloud Platform)のProfessional Data Engineer試験に合格しましたので、勉強方法を共有したいと思います。学習期間は**2週間程度**です。

ネットで色々と情報を調べましたが、本記事執筆時点では参考となる情報がほとんどなかったのでまず何を取り組んだらいいのか方針を探すのに苦労しました。

本記事は、これがあったら良かったのに、と私自身が思うような内容を書いています。

#目次
■基本情報
[・試験について](#試験について)
[・私の受験前の知識・経験](#私の受験前の知識・経験)
■受験方法
[・試験日程の予約](#試験日程の予約)
■勉強方法
[学習の基本方針と課題](#学習の基本方針と課題)
[①公式のチュートリアル動画を見る](#公式のチュートリアル動画を見る)
[②入門書「プログラマのためのGoogle Cloud Platform入門」を読む](#入門書を読む)
[③公式の模擬試験を受ける](#公式の模擬試験を受ける)
[④Udemyの講座を受講する](#講座を受講する)
[⑤Udemyの問題集を解く](#問題集を解く)
[⑥追加で問題集を解く](#追加で問題集を解く)
■おまけ
[本試験受験後の所感](#本試験受験後の所感)
[試験のテクニック的なものを紹介](#試験のテクニック的なものを紹介)
[最後に](#最後に)

#試験について

■GCP Professional Data Engineerの公式ページはこちらです
https://cloud.google.com/certification/data-engineer

- 試験は2時間50問で、合格ラインは非公開ですが70%くらいだと思います。
- 問題は**選択式(一部複数選択式あり)のみ**で、記述や計算問題はありません。
- 試験は各地のテストセンターで受験します。
- 費用は1回2万円程度です(200ドル×ドル円レート)。
- **再受験は2週間後、3回目は60日後**と期間を開ける必要があるようです。
- 詳細については「よくある質問」から再試験ポリシーを確認してください
- 試験時間は2時間ですが、1時間程度で解き終えられるため見直す時間も十分あります

■FAQ（再試験ポリシーなど）
https://cloud.google.com/certification/faqs/

■Google Cloudのその他の資格についてはこちらに一覧があります
https://cloud.google.com/certification/

#私の受験前の知識・経験
データベースを扱ったシステム開発経験はありますが、GCPの運用経験は特に無い状態で受験しました。

「推奨される経験: 業界経験が 3 年以上（GCP を使用したソリューションの設計と管理の経験 1 年以上を含む）」と公式には書かれていますが、**特に実務経験がなくても問題ない**と思います。

また、GCPのエントリー資格的なAssociate Cloud Engineerなど他の認定資格も持っていません。

Professional Data Engineerは、GCPの各サービス知識の概要知識と、具体的なビジネス要件・ケースに応じたGCPサービスの選定やコンサル能力を試すもので、私自身がデータエンジニアリング・データコンサルに関心があるためピンポイントでこれだけ受けてみました。

#試験日程の予約
こちらから**JAPAN**と検索してお近くの試験センターで予約します。東京・横浜・京都・大阪・福岡あたりはありますが、地方の方は厳しいかもしれません。
https://www.kryteriononline.com/Locate-Test-Center

申し込むとメールが来るので、そのメールを印刷して持っていきます。

会場では免許証＋保険証など二種類の本人確認資料をチェックされ本人確認をきちんとしているので、ある程度受けられる場所が限定されるようです。試験の持ち込みは一切なしです。

私は2週間後の土曜の夕方に予約しました。午前中にすると直前の詰め込みの時間が無くなるので、**土曜か日曜の夕方に設定するのをおすすめします**。



#学習の基本方針と課題
GCP Professional Data Engineer試験では、実際にありそうなビジネス要件が提示され、その中からキーワードを読み取って最適なGCPサービスを選択する形です。

そのためGCPの各サービス(BigQuery, Bigtable, Dataflowなど)の概要を薄く広く知ることが必要ですが、**ただGCPドキュメントをひたすら読むのではなく「この場合はBigQueryとBigtableどちらが適切？」など問題として聞かれることで、より知識が定着しやすく**、GCPインフラのコンサルのための基礎能力の習得にも繋がると思います。

**問題を解いて、その都度関連のドキュメントを読んで知識を整理**していくことが重要です。

特に**ストレージ周りは自分で表を書いてBigQuery, Bigtable, CloudSQL, Cloud Spanner, Cloud Datastoreの違いを理解**することは必須です。

##課題
とはいったものの、この試験の最大の課題は**(日本語での)問題集の少なさ**です。ケーススタディをたくさんこなさないとなかなか難しいと考えていますが、該当するものが公式の模擬試験しか見当たりません。他の試験ではよくある問題集的なものがないので困りました。

そこで、Udemy上の英文の講座や問題集を探して対策しました。詳細は下記で紹介します。


##英語について
Google社のドキュメントは基本日本語も用意されていますが、最新情報や一部の情報は英語のままだったりするので、英文で技術情報を読める力があると何かと役に立つと思います。

特にクラウドサービスを扱う人にはほぼ必須のスキルなのでは？と思いますので、**この機会にIT技術情報の英文に慣れておくことをおすすめします**。一般的な大卒程度の英語力があれば読んで理解するだけならそこまで難しくないと思います。

SQLがエスキューエルじゃなくて「シークウェル」になってたりとか最初は違和感あるかもしれませんが


※ここからは具体的な学習手順です。

#公式のチュートリアル動画を見る
公式のトレーニングにある動画では、試験でどのようなスキルが試されるのか、どのような形式の問題が出るのかなど試験の概要を説明してくれます。1日程度で見終えられると思います。

**単純な知識を問うものではなく、ビジネス要件を読み取り、そこから適切なGCPサービスを選定するコンサル能力が試される**、といった内容です。

https://cloud.google.com/certification/data-engineer
公式ページから、「Preparing for the Professional Data Engineer Examination」のリンクに進み、オンデマンド(take this course on demand)のページに進みます。

オンデマンド動画
https://www.coursera.org/learn/preparing-cloud-professional-data-engineer-exam

分かりづらいですが、**下の方のシラバスから各動画のタイトルをクリックすれば視聴できます**。各セクションごとに一番上だけクリックができて、次の動画は再生が終わると続けて再生されます。学習教材とかは飛ばしました。

![1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/0e6476d5-508f-aaf0-d0bc-cee5d89010f3.png)

動画は右下に日本語字幕があります。ただ
今後を考えると、**英語字幕にして英語音声のヒアリング**をしてみることをおすすめします。

##内容紹介(引用)
Googleおじさんが分かりやすく解説してくれます。

![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/6f42f7d9-4970-110a-baba-c76de56abb0a.png)

![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/8ede0a90-dfab-afb9-f77b-739fb5a8516e.png)


（引用開始）
■試験について
「Professional Data Engineer認定資格は 理論的知識を問う資格ではありません
**一般的な情報に関する知識を測るだけではなく データエンジニアとして考え 問題を解決できるかを問います**
知識のみをテストする他の資格 よりも困難と言えます
しかし この点がこの認定資格の価値を高め 業界で高く評価される理由です
実践能力を測る試験であるため 取得が難しい分 価値も高いです」


■必要なスキルの違いについて
「クラウドエンジニアは データエンジニアと同じ技術を活用します
 ただし職務の目的が異なるため スキルも異なります
 データ エンジニアは顧客要件に合わせて Dataprocクラスタを設計する方法を検討します
 クラウド エンジニアはクラスタでジョブを実行し クラスタの監視や パフォーマンスの測定と維持に重点を置きます

 **データエンジニアは ソリューションを設計して実装します**
 クラウドエンジニアは ソリューションを運用、監視、維持し ビジネス環境の変化に応じて発展させます」
（引用終わり）

どちらかというとデータコンサル寄りのスキルを問うもの、ということです。そのため、本試験もケーススタディ中心にビジネス要件からGCPサービスによる最適解（ベストプラクティス）を考えさせる内容となっているようです。


#入門書を読む
[「プログラマのためのGoogle Cloud Platform入門」](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E3%81%9F%E3%82%81%E3%81%AEGoogle-Cloud-Platform%E5%85%A5%E9%96%80-%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E5%85%A8%E4%BD%93%E5%83%8F%E3%81%8B%E3%82%89%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E6%A7%8B%E7%AF%89%E3%81%BE%E3%81%A7-%E9%98%BF%E4%BD%90/dp/4798137146)
※Amazonへのリンクです
![6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/8cd495ca-4db9-982f-b626-4939b8af07e7.png)


**基本的なIT知識を補完しつつ、GCPサービスの全体像が掴める**のでおすすめです。2日くらいで読めると思います

GCPアカウントを実際に登録してプロジェクトを作るところもウォークスルーしてくれます。GCP上での細かい操作やコーディングなどは飛ばしても問題ないです（実務レベルでは練習が必要となると思いますが、試験上は不要というだけです）。

HTTP通信の仕組みやIPアドレスなど、既存のネットワークやインフラの基礎知識から入ってGCPの位置付けを知れるので、インフラ周りに詳しくない人も入りやすく、知識のある人には既存技術との比較にもなると思うのでわかりやすいと思いました。

#公式の模擬試験を受ける
公式サイトの模擬試験(30題・日本語)をとりあえず受けてみて、試験の形式を一通り知っておきます。
https://cloud.google.com/certification/practice-exam/data-engineer

最初はほとんどわからないとおもいますが気にしなくて大丈夫です。
**回答を見てその都度関連するGCPドキュメントを調べて理解できる箇所を増やしていく**ことが重要です

ここで聞かれている問題がもし出てくれれば、**ボーナス問題**になると思います。つまり、そのくらい模擬試験は易しめになっているので、これで満足せずに追加で学習が必要です。

###例
こんな感じです。※無料で公開されている情報です

![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/624123a0-683a-304b-92e6-077c160c10d0.png)

問題文のビジネス要件に**「Hadoop」**とキーワードが出てくるので、**Cloud Dataproc**と機械的に判断でき、絞れます。

次に、データの格納先をHDFSのままDataprocに移行するのか、Cloud Storageに移行するのかどちらがGoogle推奨の方法（＝**ベストプラクティス**）なのかという判断となります。どちらも正解の場合はベストプラクティスが正解となります。

問題として問われるビジネス要件に対して、キーワードを読み取って**Googleのベストプラクティスを導き出す能力を身に付けてください**、ということです。ベストプラクティスはGCP公式ドキュメントに掲載されています。


#講座を受講する
Google Cloud Professional Data Engineer Course [2019 Update]
https://www.udemy.com/course/learn-gcp-become-a-certified-data-engineer-express-course/

UdemyでビッグデータエンジニアのSamuel Leeさんの講座を受講しました。

GCPデータエンジニア試験の範囲を網羅する、ほぼ唯一の講座だと思います。レビューの評価も高く、講師のクラウドサービスへの知識が深いようで内容も充実しており勉強になります。


![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/0ba6f63e-5f2a-d4fb-a27f-e846fa9d51dc.png)

- 動画は4.5時間程度なので2日程度で見終えられます。
- 英語ですが、字幕が全編ついているので読むだけでも理解できます。
- 簡単な問題集もついています。全て重要です。
- **字幕はスクショを取っておき、試験直前に復習**することをおすすめします。
- 価格は2400円(本記事執筆時点)ですが、たまに半額になったりするのでキャンペーンの時期を狙えたら狙ってください。
- 2019Updateとなっており、毎年更新しているらしく信頼性が高いです

※無料で公開されている動画のスクショです
![8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/7a8fd890-f1d4-41b4-c390-ee5f4c751264.png)
![7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/f533dcb5-4cd1-84bd-8380-b91ba4ef5fe7.png)

#問題集を解く
Google Cloud - Professional Data Engineer Practice Exams
https://www.udemy.com/course/google-cloud-certified-professional-data-engineer-practice-exams/

ここが一番重要です。Udemyで問題集を解きました。

- 価格は6,000円と高いですが、その価値はあると思います(キャンペーン価格では1,320円になっていました)
- 50問×4の200題構成で、重複を除くと**150題のオリジナル問題**です
- 結果はUdemy上に保存され、間違った箇所はあとで見返せるので便利です。
- 解説文には**関連のGCPドキュメントの関連箇所が長文で引用**されていて効率的に学習できます
- **全て英文**ですが、この機会にIT英文に慣れることをおすすめします。

解答画面はこんな感じです。※有料のためマスクしています
![10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521008/d54b86fa-a838-f449-026b-3e8612ba0295.png)


##進め方
私はこれを2周しました。2周目の解説を見る時に、問題を横断して知識をノートにとって整理しました（ストレージの比較表などを書いたり）

1週目は平均正答率55%程度でしたが、2周目は85%まで上がり、自信になりました。

ケーススタディからビジネス要件を読み取る必要があるため、中には問題を読み解くのも大変なものもありますが、本試験はさらに一段階難しいので理想は**90%以上正答できるようになるまで繰り返しやっておく**ことをおすすめします。


MariaDBのMySQLコネクターなど**「こんなのGCP関係ないし出るわけないじゃん」**と思うような細かい問題も、念のため飛ばさずに解いておくことをおすすめします。問題作成者が載せているのにはそれなりの意味がありそうなので


#追加で問題集を解く
これはやらなくても大丈夫ですが、上記だけでは足りないなという場合はこれも紹介します。

GCP Data Engineer 2019 (New Exam) - Practice Test
https://www.udemy.com/course/gcp-data-engineer-2019-new-exam-practice-test/

- 20問×2の全40問
- 全文英語です。

同じくビッグデータエンジニアのAniruddha Anikhindiさんによる問題集ですが、質が若干低めです。解答も一部間違っている箇所があると思いましたが、上記の問題集をやっていればそれに気付けるので、気付けるレベルになったのでよしとしました。

また、似たような問題が多いのでもしかしたらコピペかも？と思うようなものも多いですが、**一部オリジナルの問題が混ざっていて、やっててよかったと思いました。**

質は低めと書きましたが、**似たような問題としても違う角度で聞かれるので、練習問題としては十分**です。私はこれを2周しました。


#本試験受験後の所感
**難しくてかなり焦りました**。解きながら、最初の1問目を見た時点で再試験も覚悟しはじめましたが、なんとか1回で合格出来て良かったです。

当たり前ですが、ほとんどの問題がオリジナルのケーススタディーで出題されます。一部サービス問題みたいな簡単なものも出ますが、どちらを選んだらいいか2択で迷うようなものや、意外と細かい点も聞かれて焦りましたが、全問出来なくても合格できるのでそういうのは諦めて鉛筆転がす感じで次の問題へ頭を切り替えるのがいいと思います。

他の合格体験記事を読むと簡単に受かった感が出ていて尊敬しますが、GCPやインフラ実務経験のある方には易しめなのかもしれません。

しかしながら、日本語で学習できる情報が少ない上に内容もそこそこ高度なので受かったら自慢していいのではないかなと思います。



#試験のテクニック的なものを紹介
・当たり前ですが、Google社の認定資格のため、例えばHadoopのHDFSか、GCPのCloud Storageかの2択になれば迷わずGCPに移行、を選びます。AWSに移行する、とか、他社やオープンソースを優先することは基本ないです。

**■ストレージ関係は重要です**
・**どれがOLTPでどれがOLAPなのか**忘れるので直前に復習をおすすめします。BigQueryはOLAP、Cloud SQLやCloud SpannerはOLTPです。ケーススタディで**「トランザクション」とでてきたらOLTP**を連想します

・**時系列＝Bigtable**としておけば大体当たり。

・**NoSQL**に該当するものをまとめておく（Bigtable, Cloud Datastore, HBase, MongoDB, Cassandra)

・**データが小さい→Cloud SQL**を連想します。数TBはCloud SQLの範囲内ですが、ぎりぎりなのでそこはケースバイケース。数百GBだったらCloud SQLを聞いていることが多い印象です

・Cloud SQLは既存アプリケーションを**調整せずに**移行できるが、Cloud Spannerは調整が必要、という違いがある
・グローバルで水平（Horizontal)、となると大体Cloud Spannerです
・**ANSI SQLやアナリティカル・分析**とかがでてきたら大体BigQueryです。データ変換を「分析」と呼んでいるときはDataflowだったりするので注意が必要

・**ストレージコスト**を重視するときはCloud Storageでデータ保管してBigQueryで分析、**パフォーマンス**を重視するときはデータをBigQueryに移してデータ保管も分析もBigQueryで行う


**■パイプライン**
・Cloud Pub/Sub(データ授受） → Cloud Dataflow(データ変換) → BigQuery（分析) and Cloud Storage(保管)のコンボは飽きるほど出てくるので基本パターンとしておさえておきます。

・DataflowのSideInput(副入力)とSideOutput(副出力)をそれぞれ使う状況を整理しておく

・**だいたいセッションウィンドウ**！複数のユーザーの30分ごとのセッション分析とかだと、時間をずらして測定するのでこうなる。それの応用で、「過去1時間アクセスがあるかどうかを5分毎に判断」のケースを理解する

・**Dataflowのupdate**コマンドを理解。サービスを止めずにupdateできるのかとか。

**■データの移動・移行**
・Storage Transfer ServiceとBigQuery Data Transfer Serviceと、Transfer Appliance の違いを理解する

・HadoopとかSparkとかのキーワードが出てきたら**大体Dataprocに移行**でokです

**■IAM**
IAM=Identity & Access Management　→ データのアクセス権限設定やユーザーロールなどを指しています

・権限は「データセット」で設定します。**テーブルではなくデータセット**、と理解を試す問題は多そう

・**WriterとReaderのできること（の違い）**を理解
・ViewerとEditorとOwnerのそれぞれできることを理解。紛らわしい

**■セキュリティ**
・CSEKとCMEKとCSEの違いと使われる状況を理解する
顧客指定の暗号鍵（CSEK）Customer-Supplied Encryption Keys
顧客管理の暗号鍵（CMEK）Customer Managed Encryption Keys
クライアント側の暗号鍵(CSE) Client-side encryption keys

→クラウドにデータを上げるのが不安という企業は当然いると想像できると思いますが、**クラウドの管理者側でもデータの内容や暗号鍵自体を知られないようにしたいときはどうすればいいですか？**といった内容です。

**■機械学習**
・ML = Machine Learning = 機械学習
・Google Cloud DatalabとDataprepの違いを理解。DataprepはPGMできない人でも使える
・Classification（分類）はsupervised（教師アリ）、Clustering（クラスター分析）はunsupervised(教師無し)
・Cloud AutoMLと、その他GCPの**機械学習関連のAPIの使われ方の違い**を理解
Vision AI　→　画像をタグ付け
Natural Language　→　自然言語から①エンティティ抽出②感情分析の2パターンあり
Cloud Speech-to-Text API　→　動画講座の字幕を自動生成する、とか
Cloud Video Intelligence API → YouTube動画のOffensive(不適切)コンテンツを抽出、とか

Cloud AutoMLは割といちおしなのか、ドキュメントを詳しめに見ておくことをおすすめします


**■問題集でもカバーできないもの**
25%くらい、未知のものがでてくる印象です。これまで学んだ知識を応用して考えれば**消去法等で最低でも2択には絞れるはず**なので、正答率はかなり上がると思います


#最後に
本記事がGCP Professional Data Engineer試験を受験される皆様にとって少しでも参考になれば幸いです。良い結果となる事をお祈りします。頑張ってください。