素人がGCP Associate Cloud Engineerに合格する（2020/12）

# Associate Cloud Engineer
Google Cloud Platform認定試験の中で一番基礎的なもの。
素人はまずこの資格取得を目指すとGCPの全体像が見えるかも。
GCPについて以下の知識が問われる。
>クラウド ソリューション環境の設定
クラウド ソリューションの計画と構成
クラウド ソリューションのデプロイと実装
クラウド ソリューションの安定稼働の実現
アクセスとセキュリティの構成

詳細は以下参照
[Associate Cloud Engineerについて](https://cloud.google.com/certification/cloud-engineer?hl=ja)

# 筆者のスペック
データアナリストを2年半ほど。
GCPに関しては、SQL文書いてBigQueryからデータを抽出したり、BigQueryからデータをcsvとしてCloud Storageに移してローカルにダウンロードしたりはしたことがあった程度。

まあつまりGCPについてほぼ何も知らないズブの素人。GCPどころかインフラのこととかも全然わからんし、そもそもアプリ開発とかもしたことない人。
なので、勉強開始当初は出てくる単語がそもそも良くわからん状態だった。(サブネットとかDNSとかdockerとかイマイチわかってないし、Kubernetes？なにそれどう読むの？おいしいの？)

Qiitaの勉強法の記事とか見てるとけっこうインフラ経験者とかAWS経験者ですって感じの人が多かった印象なので、ズブの素人がどんな勉強すれば受かったのかということを書けたらいいな。とはいってもそんなに書くことも無いけど。(試験内容を書くわけにもいかないし)

# 必要なコンテンツ
①Googleアカウント
②[書籍][プログラマのためのGoogle Cloud Platform入門](https://www.amazon.co.jp/dp/4798137146/)
③[公式][Cloud Engineer 模擬試験](https://cloud.google.com/certification/practice-exam/cloud-engineer?hl=ja)
④[Udemy][【GCP認定資格】Google Cloud Platform Associate Cloud Engineer模擬問題集](https://www.udemy.com/course/gcp-ace-mogi/)
⑤[coursera][Architecting with Google Compute Engine 日本語版専門講座](https://ja.coursera.org/specializations/gcp-architecture-jp)
( ⑥[書籍][Google Cloud Platform エンタープライズ設計ガイド ](https://www.amazon.co.jp/dp/4822257908))

①はGCPを触るためのアカウント、②はGCPに慣れるための書籍、③④⑤は試験に合格するための勉強に使う。
⑥については、必須というわけではないが、GCPのいろいろなサービスが網羅されて紹介されているので1冊あると便利。

# 勉強の進め方
①から順に勉強を進めた。

## ①, ②について
まずはGoogleアカウントを作って実際にGCPを触ってみる必要がある。
GCPには新規ユーザーのトライアルがあって、
>新規のお客様には、Google Cloud Platform すべてを試し評価するための $300 分のクレジットも付与されます。アップグレードするまで請求されません。(https://cloud.google.com/free/)

ということなので、クレジットカードの登録は必要ではあるけどお試しに触るくらいだと課金は全く必要ない。
忘れて放置してても、無料試用期間の終了後に有料アカウントにアップグレードをしないと課金はされないようになっているらしいので安心。(https://support.google.com/cloud/answer/7006543?hl=ja)

②の書籍ではGCPの基本的な使い方を教えてくれる。トライアルの枠を使って、この本の通りにGCPを触っていけばGCE, GKE, GAEの基本的な機能や使い方はマスターできるはず。
しかもこの本の良いところはズブの素人でもわかるように、HTTP通信とは？IPアドレスとは？DNSとは？負荷分散とは？といったクラウド以前の本当に基本的なことも書いてくれているので助かった。

この本に沿ってGCPを触れば、GCE上で負荷分散されたWebアプリの実行基盤構築、GKEを使ったオンラインゲームのコンテナ実行環境構築、GAEを使った写真アルバムサービスのデプロイなどができる。この本を終えた時点でかなりGCPの全体像が見えるようになっていると思う。

一部、すでにバージョンが変わってしまっているからなのか、デプロイ時にエラーが出るときがあるので、自分がやった解決法を記載しておく。(ただ詳細を忘れてしまっていて、本に書いた自分の付箋メモを参照しているのでなにかおかしいかも)

・P197の"4.4 オンラインゲームのコンテナ実行環境構築"のリスト4.26を以下に修正する。

```{}
spec:# spec:の後に以下の記述を追加
  selector:
    matchLabels:
      name:backend-node
```
・P239の"5.3 写真アルバムサービスのデプロイ"のリスト5.8を以下に修正する。(ちょっと曖昧)

```{}
# skip_filesでcygrpc.soを除外するために以下を追加する
skip_files:
- cygrpc.so
```
・P243の"5.3 写真アルバムサービスのデプロイ"のリスト5.14を実行するためにコードを修正する。

```{python}
# pythonパッケージのwerkzeug==0.16.1
# file.pyのimport文の修正
from werkzeug.datastructure import FileStorage

# widget.py, validators.pyのimport文の修正
from werkzeug.urls import url_encode
```

## ③について
公式の模擬試験を解く。この時点では間違いなく解けない。回答と解説を確認して覚えていく。
解説だけだとよくわからない時に⑥の本や、公式のドキュメントが役に立つ。
公式のドキュメントでは以下のように各サービスについて調べることができる。
[例：Bigtableのドキュメント](https://cloud.google.com/bigtable/?hl=ja)

## ④について
公式の模擬試験だけだとすぐに答えを覚えてしまって、それ以上の勉強ができないので、Udemyの模擬試験教材を使って勉強する。
有料だが、セール時なら2,000円程度で買える。

この模擬試験教材は40問の模擬試験が3つ用意されているので、すべて解いて回答を見て解説を見て勉強していく。ちなみに最初にこれら3つの模擬試験に取り組んだ時、3つとも不合格だった…(8割以上正解で合格設定)。

40×3=120問の回答・解説を見て覚える頃には、GCE, GKE, GAE以外のGCPの各サービスについてもかなり把握できているはず。
自分は、間違えたり、間違えそうな問題について、ノートに書いて覚えた。やっぱ勉強はノートに書くというアナログなやり方が一番良い気がする。

## ⑤について
③と④を何周かしたら、解答も覚えてしまうので、試験日までのラスト1週間はcourseraのArchitecting with Google Compute Engine 日本語版専門講座を受けた。最初の1週間は無料なので、最後の復習にはピッタリ。
各サービスについての講義が動画で見られるが、動画は見ずに要所要所にあるテスト問題に取り組んで、問題を間違えたら動画で復習する、という感じで進めた。これで記憶がしっかり定着した感がある。
勉強が終わったら、無料期間内にサブスクリプションをキャンセルすることを忘れず。
もちろんさらに勉強を進めたい人はお金を払って継続したらいいと思う。

# 本番
時間:2時間
登録料:$125（税別）
合格ライン:非公開
問題数:50問

50問中30問は自信あったけど、20問はちょっと自信ない感じだった。けど試験終了ボタン押したら"合格"と表示されて一安心。
結果の詳細は何にも教えてくれないので、何を間違えたのか、何割正解だったのかは不明。
試験本番は初見の問題ばかりで戸惑った…。けどこれまでの勉強内容を思い出せば答えられるものも多かった気がする。
ちなみに公式の模擬試験とUdemyの模擬試験と同じ問題は全く出なかった。笑
でもまあ模擬試験を通じて勉強したことが本番でも活きたと思う。

# 勉強期間
・10月後半：書籍と公式模擬試験
・12月前半：Udemy模擬試験
・試験日前1週間：courseraで復習
※合計1か月くらい？1日あたり1-2時間くらいの勉強量

10月半ばに2週間くらいかけて、"プログラマのためのGoogle Cloud Platform入門"を終わらせて、公式の模擬試験を解いた。
そこから1か月くらい忙しくて、勉強さぼってた…。
12月に入って、焦ってUdemyの模擬試験を解き始めた。最初間違いばかりでかなり焦ったけど、とりあえずわからなかったところは公式ドキュメントや"Google Cloud Platform エンタープライズ設計ガイド"で片っ端から調べて覚えまくった。
最後の1週間でcourseraを受講し、12月中旬に本番試験を受けて合格って感じ。

# まとめ
インフラの知識も、アプリ開発経験もない素人がGCP Associate Cloud Engineerに合格するまでの勉強方法を書いた。おおよそ1か月勉強すれば試験には受かると思われる。しかし実務は未経験なので、資格を持っててもクラウドエンジニアの仕事は絶対にできないヨ。
これから実務経験を積む機会に恵まれることを祈る。触らなかったら絶対忘れそうだし…。
でもまあGCPについて勉強する最初の取っ掛かりとしては、この資格を取ることを目指すのは良いことだと思う。

以上！