この記事のポイント
- AWS CDKの勉強方法についてまとめたYo
はじめに
AWS CDK(以下、本文ではCDK)を使い始めてだいたい1年くらい経過したので改めて学習方法をまとめようと思います。CDKの書き方や技術的なことについては書かないです。
CDKの使い方については用語解説を作成していますので参考にしていただけますと幸いです。
【AWS】用語を整理しながら学ぶAWS CDK(TypeScriptを利用)
なお、実際に使ってみた話は今後のアドベントカレンダーで掲載予定です。お楽しみに。
結論:いろいろある
いくつか試してみて、3パターンくらい学習方法があるかなと思いましたので書いてみたいと思います。
- 他の人が書いたCDKのコードを読むスタイル
- CDKのdocsを読み込むスタイル
- CloudFormationとCDKのdocs、AWS APIの仕様から読み解くスタイル
他の人が書いたCDKのコードを読むスタイル
まずは他人に倣えということでとりあえず数読めば身に付くということでやってみるんですが
この方法は素早く実装できるメリットがあれど、デメリットも多いなと経験上を思いました。
具体的には以下のとおりです。
- コピペになってしまうので身につかず、応用的なことができない
- トラブルシューティングができない
- 意図せず知らないリソースを作ってしまう
- バージョンごとにできるできないがあるのでコピーして持ってきてもそもそも動かない
そもそもCDKを根本的に理解できていないのでレビューで突っ込まれては調べてを繰り返してしまいます。たとえば、コンストラクトやスタックといった概念を理解せずに実装していると保守性の悪いコードが完成してしまいます。
であれば、時間をかけてしっかり書いてレビューを出した方がトータルコストは安くなります。
また、すべて完成してからチェックするでも良いですが、それはなかなか認知負荷が高いです。
なお、他の人コードを読む場合はAWSのサンプルリポジトリが参考になります。
aws-cdk-examplesには大量のサンプルがあるので迷ったら読んでみると良いでしょう。
CDKのdocsを読み込むスタイル
正面突破でとりあえず、CDKのdocsを読む方法です。
特定のバージョンをもとにほぼ正確な資料を読めるのでおおよそ間違いないです。
が、これにも落とし穴があります。具体的には以下のとおりです。
- 慣れていないと実は結構難しい(CDKの概念を理解できているかが重要になる)
- ちゃんと読んで書いてみるも違う結果になることがある。エラーでデプロイできないこともある
- docsでは細かい仕様まではわからない
この方法はAWSのプロフェッショナルレベルの人がすでにいくつかのコンストラクタやスタックを定義したことがある場合に適していると思います。
あるいは次に紹介する方法と同じく、今までCloudFormationを書いてきた人に適しています。
CloudFormationとCDKのdocs、AWS APIの仕様から読み解くスタイル
筆者はCloudFormationをずっと書いてきたタイプなのでこの方法がピッタリでした。
ドキュメントは以下のとおりです。
ただし、学習当時はTypeScriptで書くことに慣れていなかったのでCDK的に正解でも、言語の使い方としてこれは正解なのかと思うことが多かったです。
なお、CDKを先に学ぶかTypeScriptを先に学ぶかというところですが、個人的にはTypeScriptを先に学んだ方が良いと思いました。
※ソフトウェアの設計に携わっていると「CDKにもそういう、ソフトウェア設計の概念が必要なのか?」と勘繰ってしまいます。
これは悩みポイントですが、結論からいうと、CDKはCDKの書き方があるので言語の書き方に縛られる必要はないかなと思います。
ただ、最低限のNull Pointerや例外処理はしておかないとデプロイがうまくいかないので自然とソフトウェア設計について学習する必要が出てくるのかなと思いました。
+アルファでこんな方法もあるかも?
個人的にはAWS SDKをマスターするとCDKへの近道になるのかなと思いました。
CDKについて、何も知らない状態からスタートしてもなんやかんやでうまくいった理由としては
「AWS SDKを日頃から使っていたからなのでは?」とも考察しています。
なお、Qiitaにおける解説記事は以下のとおりです。
【AWS】用語を整理しながら学ぶAWS AWS SDK for Python (Boto3)
まとめ
なんやかんや1年間、AWS CDKを書いてみて思ったことを簡単に書いてみました。
色々書いてみましたが、今ではシンプルにやってみたいことをAIに聞いたりMCPにリクエストを送れば、だいたいのことがわかるので調べ方や学習方法についてはいずれ廃れていくのかもしれません。
ただ、どこを読めば何がわかるかだけは抑えておかないとAIから聞いたことの裏付けができないこともあるので基礎知識として持っておくと良いと思いました。