この記事は NTTドコモソリューションズ Advent Calendar 2025 8日目の記事です。
NTT ドコモソリューションズの金子です。
RHEL 系のサーバ構築を自動化する業務に従事していますが、近年は AWS での自動化も求められ、このごろは AI も勉強しなくては、と専門領域を拡げるべく日々取り組んでおります。
AWS のインフラをコードで管理するとき、CloudFormation の巨大で複雑なテンプレートに悩まされたことはありませんか?
そんな悩みを一気に解決してくれたのが AWS CDK(Cloud Development Kit) です。
本記事では、私が実際に手探りで触って感じた AWS CDK の「ここがすごい!」ポイントと、開発をグッと楽にしてくれるイチ押しの関連ツールたちをご紹介します。
AWS CDK
AWS CDK は使い慣れたプログラミング言語を使用してクラウドインフラストラクチャをコードとして定義し、それを AWS CloudFormation を通じてデプロイするための OSS のソフトウェア開発フレームワークです。
どんなに素晴らしいものであるかは AWS 公式ウェブマガジン "builders.flash" の記事「使い慣れたプログラミング言語でクラウド環境を構築 ! AWS CDK をグラレコで解説」がとてもわかりやすいです。
本記事では 2 点だけ、特にすごい!というところをピックアップしたいと思います。
表現力がすごい
「使い慣れたプログラミング言語」とあるように、クラウドインフラストラクチャを TypeScript、JavaScript、Python、Java、C#/.NET、Go で表現できることが最大の特徴です。
"プログラミング"と聞くと難しそうに感じる方もいらっしゃるかもしれませんが、
プログラミング言語がもつ優れた表現力を活用できるので、CloudFormation テンプレートでは複雑に表現せざるを得なかったリソース定義を驚くほど簡単に表現することができます。
抽象化がすごい
AWS CDK アプリケーションの基本的な構成要素に"コンストラクト"というものがあります。
コンストラクトは 1 つまたは複数の AWS リソースを 1 つの"部品"として抽象的に表したものです。
コンストラクトによって、それぞれ独立していた AWS リソースは"意味のあるまとまり"になるため、複雑なクラウドリソースとパターンを簡単に作成できるようになります。
コンストラクトに与えるパラメータを指定しなければ、基本的には、ベストプラクティスな値がデフォルトで設定されます。開発者はカスタマイズしたい設定のみ指定すればよいので、CloudFormation でたくさんのパラメータを指定しなければならなかったリソースも AWS CDK であればわずかな記述量で作成することができます。
関連ツール
Projen
Projen は AWS CDK プロジェクトの開発を支援する OSS のツールです。
AWS CDK プロジェクトの開発を始めると、AWS CDK CLI 以外にもテストや静的コード解析、フォーマッター、ライブラリビルドやパブリックリポジトリでの CI/CD 設定、依存パッケージ管理などのために多くのツールを使いこなす必要があります。
Projen はそれらの設定や実行を一元的に担ってくれる開発支援ツールです。
Projen だけ使っていればよいので、AWS CDK プロジェクトの開発はかなり楽になります。
利用イメージとしては Amazon Web Services ブログ「Projen と AWS CDK のはじめ方」がわかりやすいです。
jsii
AWS CDK が多言語で利用できる理由が jsii というテクノロジーの存在です。
AWS CDK Constructs Library を TypeScript で実装すれば、jsii は他の言語で利用できるライブラリとして出力してくれます。すごい。
Projen では.projenrc.tsで awscdk.AwsCdkConstructLibrary のオプションとして publishToXXX を指定すれば、projen packageを実行するだけでXXXに対応する言語のライブラリが出力できます。
デフォルトでパッケージマネージャを使って公開するコマンドが実行されますが、公開しない場合は publishDryRun をtrueにしておくとよいでしょう。
integ-tests と integ-runner
integ-tests はインテグレーションテストのテストケースを定義することができるライブラリです。
integ-runner はそのテストケースを実行することができるツールです。
これらのツールは AWS に実際にデプロイし、事前定義されたテストを実行してくれます。
AWS CDK でコンストラクトを定義した場合、複数のコンストラクトを組み合わせたときの動作をテストしたくなるものです。
組み合わせのパターンを複数用意したり、パラメータを変えてみたり、といったテストケースを効率的に実環境でテストできるため、品質を高めるためには欠かせないツールです。
Projen では.projenrc.tsで awscdk.AwsCdkConstructLibrary のオプションとして experimentalIntegRunner をtrueに指定すれば、projen integでテストケースを実行できます。
まとめ
AWS CDK を使い始めて実感したのは、
「プログラミング言語の表現力でインフラを書く」という発想が、いかにクラウド構築を楽にし、保守性を高めるかということでした。
そして、それを支える Projen、jsii、integ-tests などのツール群があることで、
開発・テスト・デプロイが途切れずスムーズに回る環境が整い、本格的なインフラ開発がグッと身近になります。
これから AWS CDK を使う方、使い込んでいる方も、ぜひこれらのツールに挑戦してみてください。
記載されている会社名、製品名、サービス名は、各社の商標または登録商標です。