Webアプリをなんとなく作れるようになった状態からAWSを勉強するにあたって
- 前提としてどんな知識をつけるといいか
- 手を動かすのにどういうことをしてみるといいか
などをまとめました。
自分は本で勉強する派なので、オススメの書籍も一緒に紹介していきます。
自分の AWS の知識
最初に自分の AWS の知識がどのくらいか目安を書かせていただきます。
分かりやすい認定資格で言うと、3 年ほど前に AWS 認定のアソシエイト資格 3 つとプロフェッショナル資格 2 つを取得しており、AWS は仕事で継続的に利用しています。
とはいえ AWS は膨大な数のサービスを提供していますし、アップデートも激しいので、まだまだ知らないこともたくさんあります。
勉強法紹介の流れ
では、勉強法について書いていこうと思います。
AWS の勉強といっても色々あるので、
- Step 1. AWS の前に知っておきたい前提知識
- Step 2. AWS の基本の勉強
- Step 3. さらに発展的な勉強
というステップに分けて書いていきます。
Step 1. AWS の前に知っておきたい前提知識
AWS を勉強する際の前提として知っておきたいことは
- 1-1. Web の仕組み・アプリの仕組み
- 1-2. サーバ操作の基礎
- 1-3. ネットワークの基礎
- 1-4. 暗号化や Web のセキュリティ
あたりだと思います。
それぞれ具体的にどんなことが分かっているといいか書いていきます。
1-1. Web の仕組み・アプリの仕組み
AWS の勉強の第一歩としては、Web アプリケーションを AWS 上で動かしてみることが多いのではないでしょうか。
そのためには、そもそも Web とは何か、Web アプリとは何か、その概要を知っておくことが望ましいです。
具体的には、
- ブラウザとサーバが HTTP で通信していて、ブラウザの開発者ツールなどでその様子を見られること
- サーバサイドのプログラムはサーバ上で動作し、フロントエンドのプログラムはブラウザ上で動作していること
などが理解できていると良いと思います。
これが最初はなかなか理解しにくいところですが、AWS の勉強に限らず絶対におさえておきたい重要なポイントです。
書籍としては『プロになるためのWeb技術入門』がオススメです。
2010 年の書籍ということで、Ajax の利用や SPA といった最近よく使われる構成については解説されていませんが、Web の仕組み・Web アプリの仕組みの基本を学ぶには定番の一冊です。
1-2. サーバ操作の基礎
AWS の入門では、サーバのサービスである EC2 をさわるケースがほとんどです。
そのためにも、サーバ操作の基礎は身につけておきたいです。
具体的には
- pwd, cd, ls, mv, cp, rm, mkdir などのファイル・ディレクトリ操作の基本コマンド
- yum や apt でパッケージをインストールする方法
あたりを最低限身につけておきたいです。
書籍としては『新しいLinuxの教科書』がオススメです。
これを機会として Linux の資格の LPIC レベル 1 くらいを取得してみるのもいいと思います。
実際に手を動かすには AWS の EC2 などを使うか、手元の PC に VirtualBox などで仮想マシンを入れるかになるケースが多いでしょう。
どちらでも全然構いませんが、例えば、後述する AWS のハンズオンの書籍を参考に、AWS 上でサーバをさわりながら学んでみるのもいいと思います。
1-3. ネットワークの基礎
インフラ周りの経験がない方が AWS の入門で最初につまづく原因になるのは、確実にネットワークの基礎知識不足です。
- TCP/IP の 4 階層モデル
- サブネットやルーティング、NAT
- curl や nc などのコマンドでネットワークの疎通を確認する方法
あたりを理解していないと、AWS の入門で登場するネットワーク関係の用語の理解したり、ハンズオンでつまったときに解決するのは難しいです。
書籍としては『ネットワークはなぜつながるのか』がオススメです。
ネットワークの基礎は全く勉強したことがないと訳が分からなくなってしまうかもしれませんが、じっくり勉強すれば乗り越えられる壁です。
AWS を学ぶ前提知識として必須なので、頑張ってください。
1-4. 暗号化や Web のセキュリティ
AWS をハンズオンとして少しさわるだけならいいかもしれませんが、実際に AWS 上でアプリケーションを公開したりしたいのであれば、暗号化や Web のセキュリティの基本もおさえておきたいです。
具体的には、
- HTTPS で使われる SSL/TLS はどんなもので、何から保護してくれるのか
- XSS や SQL インジェクションなど、定番の攻撃手法とその防ぎ方
などを学んでおきたいです。
暗号化については『暗号技術入門』がオススメです。
Web アプリケーションのセキュリティについては『体系的に学ぶ 安全なWebアプリケーションの作り方』がオススメです。
ここまで前提知識として色々書いてきましたが、もちろん AWS の勉強と前後しながら学んでも大丈夫です。
次は、AWS の基本を勉強する上でのオススメを紹介していきます。
Step 2. AWS の基本の勉強
AWS の勉強では、認定資格の取得が非常にオススメです。
AWS は膨大な数のサービスを提供しており、どこから勉強すればいいのか分からなくなりがちです。
認定資格の取得を目標にすることで、どこから手をつけていいのか明確になりやすいです。
AWS の基本の勉強では、「AWS 認定 ソリューションアーキテクト – アソシエイト」(以後、SAA と略します) の取得を目指すのがオススメです。
ここから、
- 2-1. まずはさわってイメージをつける
- 2-2. 資格対策本を手に取る
- 2-3. もう少し手を動かしてみるなら
という順番で、AWS の基本の勉強について書いていきます。
2-1. まずはさわってイメージをつける
さて、いきなり資格の参考書で勉強してもいいのですが、クラウドやサーバといったもののイメージがついていない場合、まずは AWS をさわってみるのが良いです。
ハンズオンには、『Amazon Web Services 基礎からのネットワーク&サーバー構築』という書籍が非常にオススメです。
とても丁寧な解説の書籍で、今までサーバやネットワーク周りをほとんど扱ったことがない方が手に取るのにも丁度良いです。
この本の内容を一通り手を動かしてみることで、VPC や EC2 の基本をしっかり理解することができます。
2-2. 資格対策本を手に取る
クラウド上でサーバを扱うイメージができたら、SAA 資格の対策本で体系的に勉強するのがオススメです。
一点注意事項としては、AWS SAA の試験は、2020 年から改定され、SAA-C02 というものになっています。
対策用の書籍などを購入する場合は “C02” に対応しているか確認したほうがいいです。
試験対策もしつつ AWS を体系的に学べる書籍としては、『改訂新版 徹底攻略 AWS認定 ソリューションアーキテクト − アソシエイト教科書[SAA-C02]対応』が非常にオススメです。
AWS の基本サービスや高可用アーキテクチャ、パフォーマンス、セキュリティ設計、コスト最適化など、各観点のベストプラクティスの解説が手厚いです。
もしも試験に不安があれば、もう 1 冊、『AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト 改訂第2版』も手に取るのがオススメです。
こちらは 1 冊目とは異なり、AWS の各サービスの説明が手厚く、模擬試験問題も付属しています。
2-3. もう少し手を動かしてみるなら
追加でもう少し手を動かしてみたい場合は、好きな言語・フレームワークの Web アプリケーションを VPC・EC2・RDB あたりを使って疎通させてみるのがオススメです。
これができれば、サーバの操作やネットワークの基礎も身についてきたということではないでしょうか。
また、「EC2 から S3 に IAM Role を使ってアクセスする」というのも、実戦で非常に役立ちますし、やってみると面白いと思います。
Step 3. さらに発展的な勉強
ここまでの内容が、AWS で簡単な構成を組む場合に必要な知識になってきます。
もう少ししっかり色々設計できるようになりたい場合は、さらに勉強が必要になります。
- 3-1. SAP 資格を目指す
- 3-2. 周辺エコシステムなども学ぶ
- 3-3. 前提知識を増やす
の順で少しだけ書いていきます。
3-1. SAP 資格を目指す
次の大きな目標としては、「AWS 認定ソリューションアーキテクト – プロフェッショナル」(以後、SAP と略します) の資格取得を目指すのがオススメです。
SAP 資格は正直かなり難しいのですが、その分取得していると自信もつきますし、信頼にも繋がります。
日本語の書籍として出ているのは『AWS認定ソリューションアーキテクト-プロフェッショナル ~試験特性から導き出した演習問題と詳細解説』の 1 冊くらいです。
あとは ホワイトペーパー を読んだり、Black Belt Online Seminar の資料 などで勉強するのが定番です。
きっとクラスメソッドさんのブログにもお世話になると思います。いつもありがとうございます。
3-2. 周辺エコシステムなども学ぶ
実際に AWS を使う上では、Terraform や Serverless Framework などの周辺エコシステムを利用することも多いです。
また、Docker などのコンテナ技術や Lambda などのサーバレスサービス、Amplify などの BaaS についても知っておきたいです。
GCP とか Azure など、他のクラウドプロバイダについて学ぶのも良いと思います。
Docker、GCP、Azure については、それぞれ別記事に書籍をまとめているので、ご興味あれば参照ください。
3-3. 前提知識を増やす
AWS をうまく活用できるようになるには、AWS の勉強だけすればいいわけではありません。
OS やネットワークの知識を深めるのもそうですが、
- SPA や SSR、SSG などの、最近よくあるアプリケーション構成
- OAuth 2.0 や Open ID Connect などの、認証認可関連技術
- 監視やプロダクションレディな設計、マイクロサービスアーキテクチャ
- ビッグデータや機械学習
などなど、知っておくと役立つことはたくさんあります。
おわりに
これだけ色々書いてきましたが、AWS はすでに膨大な数のサービスを提供している上、アップデートも激しく、私もまだまだ知らないことだらけです。
興味はあるけどさわったことがないサービスや面白いアップデートもたくさんありますし、今後も引き続き勉強していくつもりです。
こちらの記事が AWS を勉強しようという方に少しでもお役に立てば嬉しいです。