AWS認定 専門知識5種を平均9割合格したので振り返り

# はじめに
ちょうど約1年前、私は「AWSを本格的に勉強しよう！」と決心して資格勉強を始めました。そして時は流れ、先週 AWS Certified Advanced Networking に 972/1000で合格し、ようやく専門知識 5種を制覇したので、一つの節目として振り返りの記事を書こうと思います。特に専門知識は日本語の学習商材が致命的に少なく、学習の見通しを立てにくいと感じる方も多いかと思うので、少しでもご参考になれば幸いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1348507/2d41ca21-9dce-cadc-4dd2-4c700d524f8e.png)

気持ちよく「専門知識全取得」と書きたかった矢先、新しい専門知識の [SAP on AWS - Specialty](https://aws.amazon.com/jp/certification/certified-sap-on-aws-specialty/) の試験が今年の 4月から始まったようなので、誤解を招かないように 5種と書いています。
　

#### 受験履歴
|試験名|コード|受験日|スコア|学習時間|
|:--|:--|:--|:--|:--|
|AWS Certified Machine Learning - Specialty|MLS-C01|2021/09/26|941|74h|
|AWS Certified Data Analytics - Specialty|DAS-C01|2021/12/05|853|58h|
|AWS Certified Database - Specialty|DBS-C01|2022/01/10|884|72h|
|AWS Certified Security - Specialty|SCS-C01|2021/03/21|905|83h|
|AWS Certified Advanced Networking - Specialty|ANS-C00|2021/05/29|972|107h|

DAS-C01だけ試験範囲を網羅できておらずやたら点数が低くなってしまいましたが、トータルでは平均得点率 **91.1%** という結果となりました。なお学習前の私のバックグラウンドは、
 - 日経SIer 5年目社員（インフラエンジニア歴 2年）で、
 - 実業務で EC2や VPC周りのサービスを触ったことがあり、
 - ずっと前に座学ベースで SAA-C01を取得していた

というレベルでした。また、各試験を上記の順番で受けた理由ですが、この次に Solutions Architect - Professional（以下SAP）を受けることを見据えて、①SAPに関連が薄い順番に受ける、②試験範囲が近いものを順番に受ける、という作戦でした。改めて振り返ってみても、やはりこの順番が一番スムーズだと思います。


# 何のために資格を取るのか
前提として、資格取得に対する私の考え方を共有します。
私の身の回りで資格取得について議論すると、
以下大きく 3つの派閥に分かれがちです:
 - **スピード重視派**（たった **XXX週間** の学習時間で合格しました！）
 - **得点率重視派**（試験結果は **XXX点** 超えで合格しました！）
 - **現場が命派**（資格勉強は**意味ない**、現場経験の方が大事！）

私はこの中だと**得点率重視派**に該当します。
そもそも、私が資格を取得するメリットは大きく 3つあると考えています:
 - **①錯覚資産としてアピールに使い、新しい挑戦の機会を増やせる**
	- 資格主義は経験主義と対をなすわけではなく、経験の自由度を増やす手段
 - **②対象分野の全体像を、構造的に一通りなぞることができる**
    - 資格試験は「広く浅く」、現場経験は「狭く深く」と住み分ける
    - 特にパブリッククラウドはシーン毎にサービスを使い分ける広い視点が重要
 - **③合格実績がプレッシャーや自信になり、GRIT（やり抜く力）が向上する**
	- 周りからの期待に応えられるようにさらに努力する習慣がつく
	- 「一番努力した自分でも苦戦するなら他に誰がやるんだ」と思えたら勝ち

このうち、特に②③の恩恵をより多く受けるために、私は資格を取得する際は得点率を重視します。例えば資格試験にギリギリで合格するような勉強だと、大量に理解漏れを残したまま全体像を知った気になる上に、「運良く合格しただけなので実際はよく分かってないです笑」という逃げ道を残してしまいます。そうならないように私は得点率を重視するのですが、一方で拘りだすとキリがないのも事実なので、私は合格ラインをざっくり **87%** と定めています。数字遊びになってしまいますが、例えば 4択問題の試験だと、8割の問題さえ解けてしまえば、残り 2割の問題を適当に解答しても得点率 85%、 2択まで絞れたら得点率 90%くらいになります。せめて 2択までは絞れないとダメだろうと言いたいところですが、実際の試験ではケアレスミスも出るため、少し甘めに 87%ルールにしています。（はい、DAS-C01届いていません。笑）小手先のテクニックだけだと達成できない基準にするのも資格勉強で重要なポイントです。

そんな私も過去にスピード重視派のようなタイトルで記事を書いていたりしますが、こちらの記事の本質は「繁忙期にいかに時間を捻出し、隙間時間の学習を設計するか」なので、決して「少ない学習時間で点数を上げる」ことを目指してしているわけではないです。実際、相当な学習時間をかけてます...。笑

https://qiita.com/yamazombie/items/1d546dbc7c06e6d53c41



# 各試験の比較
#### どのAWSサービスの理解が重要なの？
完全に主観ですが、各専門知識で問われるサービス（横軸）とその勉強時間（縦軸）は
大まかに下図の関係になりました。個人的には「**まさにこのグラフが欲しかった**」です。
※もはやこのグラフを共有するために記事を書いたといっても過言ではありません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1348507/21e22ab2-a2b9-129e-f9f2-57a100cd08a8.png)



なお、ここでの勉強時間は SAA-C01の取得後を前提としています。私は物覚えが悪い方なので、縦軸の目盛りが約3時間程度（つまり、例えば一番左の Site-to-Site VPN の学習時間は約 12時間）かかりました。当然人によって学習時間は違うとは思いますが、各試験で相対的にどのサービスが重要視されているかの目安にはなるかと思います。ご自身のバックグラウンドと照らし合わせながら、どの試験を受けるか、どの順番で受けるかのご参考になれば幸いです。例えば RDSや Auroraの仕様や運用に精通している方であれば、DBS-C01の資格はかなり楽に取れると思います。全取得を狙う方であれば、やはりグラフの右から順番に、 **MLS→DAS→DBS→SCS→ANS の順に取るのが最もオススメです。**

#### どの試験が一番難しいの？

各試験の難易度ですが、**(易)DBS→SCS→DAS→MLS→ANS(難) の順に難しかったです。**
特に DASや MLSは情報が少なく、出題傾向がよく分からないまま受験したので試験当日はかなり疲れました。


|難易度|コード|難しいポイント|
|:--|:--|:--|
|1位|ANS-C00|学習内容（覚えること）が多い。ルーティングの優先度（プレフィックス、AS_PATH、MED...）や推移的な接続の可否、ポート番号等、**Direct Connectや VPN、VPCにおける各通信の仕様を詳細に問われる。** また料金体系や監視設計など、運用に関する知識も幅広く問われる。|
|2位|MLS-C01|学習内容が多く、日本語教材が特に少ない。一般的な機械学習の知識（深層学習、混同行列、ポアソン分布、CNN、対数変換...等々）が幅広く問われる。AWSサービスは **SageMakerについて重点的に問われる**ため、適当な記事に沿ってハンズオンを行うことを強く推奨。(参考: [私のSageMakerハンズオン記事](https://qiita.com/yamazombie/items/b7cf47a01f037a69de5b))|
|3位|DAS-C01|日本語教材が特に少ない。問われるサービスの種類は少ないが、**ビッグデータ系（EMR、Redshift、Kinesis）の実感が沸きづらい**ため、これらだけでも BlackBeltや 公式ブログで理解を深めることを推奨。|
|4位|SCS-C01|対象サービスの幅が広い。その中でも特に**各サービスにおける IAM、KMSの使われ方や、通信の制御、暗号化、監視**について問われる。KMSは各鍵タイプの特性、IAMは具体的なポリシー条件まで覚えておくと安心。|
|5位|DBS-C01|**RDSや Aurora、および DBエンジン（Oracle、PostgreSQL...）の理解を集中的に問われる**。出題のバリエーションはあまり多くなく、各種データベースサービスの可用性、運用、移行をはじめとした各機能を抑えれば比較的簡単。|

#### どんな勉強をしたの？

既に先駆者の方々が様々な記事を書かれているため詳細は割愛しますが、
私はいずれの資格も、大まかに以下のような流れで勉強を進めました。
（ありがたいことに、会社の補助で Udemyは無料で受けることができました。）
- まず、対策本（有料/日本語）をざっと読んで大まかな概念を掴む（5h-10h程度）
    - 書籍名が『要点整理から攻略する『AWS認定 〇〇〇-専門知識』』のシリーズ
- 次に、Udemyのハンズオン講座（有料/英語）を受講する（20-30h程度）
- その後、Udemyの問題集（有料/英語）を 5回分程度解く（20-30h程度）
    - 解説に公式ブログのリンク付きのものであれば比較的どれでも OK
    - 理解が不充分な分野が見えてきたらハンズオン講座に戻って復習
- 最後に、[Skill Builder](https://explore.skillbuilder.aws/learn)（無料/英語）や公式サンプル問題で最終チェック（5-10h程度）

また、特定のサービス（例えば DynamoDBなど）について
集中的に理解を深めたい場合には、追加で以下のことも行いました。

- Youtubeで AWS公式の [Black Belt](https://www.youtube.com/playlist?list=PLzWGOASvSx6FIwIC2X1nObr1KcMCBBlqY)動画（日本語/無料）を見る（5h-10h程度） 
- AWSコンソール上で実際にリソースを作成し、設定項目を一通り見る（5h-10h程度）

もちろんこれらを全てのサービスについてやるのが一番良いのですが、時間に限りもあるので、
ここまでやるのは下記赤線以上のサービスだけで充分かと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1348507/572dae0e-9e09-eb3e-5c14-aeee1c58431f.png)

# おまけ
本題からは逸れますが、結局私は AWSの勉強をほとんど英語で行う羽目になりました。ここで TOEICで 950点を取った経験が活きたものの、当然分野が ITに変われば分からない英単語もたくさん出てきて普通に辛かったです。その中でも特に頻出した英単語を 20個厳選して以下にまとめました。他にもたくさんの IT英語があったのですが、全部書くとそれだけで記事が長くなってしまうため、完全版は外出しして別記事に公開しようと思います。一つでも知らない単語があれば、これを機に覚えておいて損はないと思います。
  
|英単語|意味|登場する文脈|
|:--|:--|:--|
|**cost effective** |**費用対効果の高い**|マネージドサービス全般|
|**provisioned** capacity|**割り当てられた** 容量|DynamoDB: WCU/RCU|
|**at-rest** encryption| **保管時**の暗号化|RDS: EBS暗号化|
|**in-transit** encryption|**転送中**の暗号化|RDS: SSL/TLS暗号化|
|**inter-node** encryption|**ノード間転送中**の暗号化|EMR: クラスタ間通信の暗号化|
|**up-to-date** data|**最新の**データ|Kinesis: リアルタイム分析|
|**dedicated** connection|**専有の**回線|Direct Connect: 専用線|
|1-minute **granularity**|1分**毎の**|CloudWatch: メトリクス収集間隔|
|**distributed** computing|**分散**コンピューティング|EMR: 分散処理|
|**legitimate** user|**正しい**ユーザ|AWS Shield: DDoS攻撃|
|**malicious** user|**悪意のある**ユーザ|GuardDuty: 不正アクセス検知|
|**retention** period|**保持**期間 |RDS: 自動バックアップ|
|**two-tier** architecture|**2層**アーキテクチャ|VPC: Public/Privateサブネット
|least **privilege** |最小限の**権限**|EC2: セキュリティグループ|
|**store** data|データを**保管する**|Kinesis Firehose: S3に出力|
|**ingest** massive data|大量データを**投入する**|Kinesis Firehose: S3に出力|
|**intermittently** access|**断続的なアクセス**|Kinesis: Stagger Windows|
|**granular** access|**きめ細かい**アクセス|Athena: テーブル単位の権限設定|
|**cipher**|**暗号化方式** (AES256-SHA等)|ELB: セキュリティポリシー|
|**blast radius**|**爆発半径** (影響範囲)|KMS: 鍵流出時の影響範囲|

# おわりに
まだまだ通過点ですが、あまり時間が経ってしまうと試験の記憶が薄れてしまうため、このタイミングで一度記事に書き出しました。各 AWS専門知識の試験について、少しでもイメージを掴めていただけると幸いです。引き続き SAPや他の資格取得に向けて勉強を継続しますが、晴れて AWS資格を全取得した暁には、各サービスの詳細な解説にもチャレンジしていきたいと思います。