ゼロから始めるAWSの資格試験

## 概要
こんにちは、kuwana-kbと申します。
今週、AWS認定試験のSysOpsアソシエイトに合格し、晴れてアソシエイト３種類の認定を得ることができました。

今回は、「普段からAWS触ってるけど資格勉強は…」という方や「まだAWS触ったことすらないけどそのうち…」という方に向けて、AWSの認定試験とその学習方法についてまとめていきたいと思います。

## 想定読者
* AWSの資格試験に興味がある人
* AWSをこれから使おうと思っている人
* AWS普段から使ってるけど資格試験は億劫な人

## AWSの資格試験って？
この試験はAWSの知識とスキルを証明することができる公式の試験です。
2018年になってから試験が刷新されて、以下の画像のように11個の試験分野があります。

![スクリーンショット_2019-06-15_12_25_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/295017/efad9836-4935-77b5-202c-faecec605840.png)
引用：[AWS認定（公式）](https://aws.amazon.com/jp/certification/)

私がこれまで受けた試験はアソシエイトに分類される3つです。このアソシエイトレベルは、多くの方が最初に受けるAWSの試験でしょう。アソシエイトレベルの資格を大別すると以下のような知識が求められます。（かなりざっくりなので、詳しく知りたい方は後述する試験ガイドを参照してください）

* Solution Architect Associate（SAA）： AWSを用いた設計を中心とした知識
* Developer Associate(DVA)： AWSを用いた実装やCI/CDを中心とした知識
* SysOps Administrator Associate(SOA)：  AWSを用いたシステム管理を中心とした知識

今この３つの試験を同時に受けたとすると、難易度的には *「SysOps > Developer > Solution Architect」* の順で難しいと個人的には思います。難易度の要因は、普段自分の行う作業領域に左右されると思います。AWSを用いた設計をよく行うのであればSAAが最も身近な領域だと思いますし、組織内におけるAWSの標準的なルールの策定や設定を行う方であればSysOpsが身近な領域になるんじゃないでしょうか。

## 認定試験を通じてAWSの知見を深める

本来資格試験というのは、ある程度経験のある人がそのスキルを証明するための手段として受験するものだと思います。なので、この記事で、次に紹介するような「AWSを扱うのに必要な前提知識」を扱うのは若干おかしい気もするんですが、私自身が資格の取得を目標にAWSの学習を始めた背景がありますし、そのおかげもあって今ではある程度AWSを業務で扱えるようになりました。
AWSは展開するサービスの広さと奥深さがすごいので、学ぼうとするとキリがありません。認定試験は役割別に特化した内容になっているため学習の範囲を決めやすいです。なので、試験を一つの目標にするのはありだと思います。もちろん試験勉強に特化し過ぎて、試験の点数は取れるけど実務では使えないような学習は本末転倒ですので注意が必要です。

## AWSを扱うのにあった方がよい前提知識
こちらは、エンジニアとしての経験が殆どない方向けの情報なので、普段から業務でAWSを活用している方は飛ばしてくださって大丈夫です。

ここで紹介するのは私がエンジニアになりたての頃、実際に必要だと感じた知識達です。
あった方がよい前提知識は以下の３つです。

* マークアップ言語とプログラミング言語の基礎的な知識とスキル
* Linuxコマンドの基礎的な知識とスキル
* ネットワークの基礎的な知識

##### 1.マークアップ言語とプログラミング言語の知識とスキル
そもそもアプリケーションをホストする手段としてAWSを使うので、当たり前といえば当たり前なのですが…AWSを学習する際には、動作確認の手段としても使うことになるでしょう。具体的には、AWSのサービスからHTMLのページを表示させたり、PHPで動的にサーバのIPを表示させたりできた方がよいでしょう。
私の場合は、Udemyの「[フルスタック・Webエンジニア講座](https://www.udemy.com/completeweb2_jp/)」という講座で基礎を学習しました。

##### 2.Linuxコマンドの知識とスキル
エンジニアの人がよくPC上で出してる黒い画面です。こちらもサーバーを構築したあとの動作確認やサーバーの操作を行う際に必要になります。AWSのサーバーではGUI（画面上でカーソル動かして操作するやつ）が基本的に使えないので、Linuxコマンドを用いたCUIの操作が必要になります。
私の場合は、Udemyの「[【5日でできる】はじめての Linux 入門](https://www.udemy.com/5dayslinux/)」という講座で基礎を学習しました。

##### 3.ネットワークの知識
AWSのサービスは、既存のネットワークをクラウド化したものになります。なので、元となるネットワークの規格や仕組みを知っておかないと、AWSのサービスを理解したり、実際に設定を行うのが難しくなったりします。
私の場合は、「[ネットワークはなぜつながるのか](https://www.amazon.co.jp/dp/4822283119/ref=cm_sw_em_r_mt_dp_U_hOgbDbHWM5JM8)」という書籍で基礎を学習しました。ユーザーのPCから企業のサーバーまでどういう経路で通信が行われるのか、探検のような形で記述されています。読みやすくておもしろいのでおすすめです。

## AWSの資格取得に向けた学習
ここではSAAの学習で使用した教材を紹介します。
当時の私はエンジニアになりたてでAWSを触った経験が全く無い状態だったので、実務と資格試験両方で役立つように心がけました。具体的には、月並みですが教材で知識を得つつ自分の手で実践するような形にしました。

##### 1.[試験ガイド](https://d1.awsstatic.com/training-and-certification/docs-sa-assoc/AWS%20Certified%20Solutions%20Architect%20-%20Associate%20Exam%20Guide%20001%20v1.5%20JPN.pdf)（Webページ）
AWSの公式が配布している試験ガイドです。試験範囲を把握するために読みましょう。リンク先はSAAの試験ガイドです。たまに試験が改訂されて、出題内容が変わったりするので注意です。（直近では2018年に改訂されました。）

##### 2.[Amazon Web Services 基礎からのネットワーク&サーバー構築 改訂版](https://www.amazon.co.jp/dp/4822237443/ref=cm_sw_em_r_mt_dp_U_pFgbDbWN064H1)（書籍）
１からAWSの環境構築について解説された本です。AWSだけでなく、ネットワークの基礎的な知識についても解説されている点がよかったです。実際にAWSアカウントを取得して、自分で構築しながら読むと良いでしょう。

##### 3.[初心者でも安心！基礎から学ぶAWSで作るシステム構築](https://udemyfun.com/?p=349)（動画）
動画をみながら実際にAWS環境を構築できる動画です。実際にAWSのコンソール画面の操作を映像として見られるのは安心感があります。ただ、動画の収録環境があまり良くなかったり、次の動画でいきなりサーバが立ち上がってたりして不親切な部分もありました。内容としては２の書籍と重複する部分があるので、どちらか片方で良いと思います。

##### 4.[AWS クラウドサービス活用資料集](https://aws.amazon.com/jp/aws-jp-introduction/)（Webページ）
AWSが公式で配布している各サービスの紹介資料です。膨大な量があってどれを読めばよいか混乱すると思うので、
↑のNo2や3でAWSを体感してから、各サービスの資料を読みつつ触ってみるのが良いと思います。

##### 5.[AWS よくある質問](https://aws.amazon.com/jp/faqs/) (Webページ)
こちらもAWS公式のページです。AWSのサービスを利用する際につまづきがちなポイントがまとめられているので、時間に余裕がある場合は見ておくとよいと思います。

個人的には以下の順序で学習するのがおすすめです。
1. 「No.1」の試験ガイドで学習範囲を把握する
2. 「No.2 or 3」の教材で AWS を実際に触ってみる
3. 「No.4 or 5」 の資料を読んで触ってみる
これならAWSの資格勉強用の知識と実務スキルの体得を両立できるかなと思います。
とにかく自分の手で実際にAWSを触ってみるのがよいですね。

##### 普段からAWSを触っている方向けの学習方法
[Whizlabs - AWS Certified Solutions Architect Associate (SAA-C01)
](https://www.whizlabs.com/aws-solutions-architect-associate/)

AWSに慣れている方はこの問題集をやるのが手っ取り早いと思います。試験対策としてはこれが最強なんじゃないでしょうか。問題数、解説共に充実しています。間違ったり、わからなかった問題を通じてAWSのサービスの理解を深めることができると思います。実際、私はこの問題集で初めて知ったサービスもありました。また、アソシエイトだけでなく、プロフェッショナルやスペシャリティの問題も用意されています。
難点を強いて挙げるとすると英語表記である点ですが、そこまで難しくないと思います。日本にも問題集のWebサイトがありますが、問題数と解説の充実度合いの点から私はこちらの方が好みでした。
DeveloperとSysOpsの時は、試験対策はこれだけで済ませました。１認定あたり3テストくらい合格点が取れたらもうバッチリだと思います。

## 参考：資格勉強に費やした時間
参考までに、どれくらいの勉強時間を要したかまとめます。

|取得日|資格名|学習時間|
|---|---|---|---|
|2018/08|Solution Architect Associate|60h|
|2019/01|Developer Associate|16h|
|2019/06|SysOps Associate|8h|

最初のソリューションアーキテクトは、未経験だったこともあって結構時間を要しました。学習方法の項目でも紹介している通り、書籍や動画を通じて環境を構築したのに時間が掛かった感じです。デベロッパー以降の試験は、業務経験を積めていたこともあってかなり学習時間の短縮ができました。やはり、経験に勝るものはないですね。

## 終わり
AWSの試験はエンジニア市場でそこそこ評価される（求人の歓迎要件にあったりする）のに対して、難易度がそこまで高くない点で結構コスパがいいように思います。実際、私もエンジニアのキャリアを始めたこの１年間で、３種類のアソシエイトを取得することができました。資格の取得はわかりやすい目標にもなるので、AWSを触ったことがない方もこれを機に挑戦してみはいかがでしょうか？