『クラスメソッドのAWS CDK事情大公開スペシャル#3~JAWS-UG CDK支部#19~コラボ回』 を開催しました

『クラスメソッドのAWS CDK事情大公開スペシャル#3~JAWS-UG CDK支部#19~コラボ回』 を開催しました

Clock Icon2025.03.16

みなさんこんにちは、リテールアプリ共創部エンハンスチームの塚本です。

2025年2月21日(金)に "クラスメソッドのAWS CDK事情大公開スペシャル#3 JAWS-UG CDK支部#19コラボ回" を開催しました。
クラスメソッドから1名、外部から4名の合計5名の方にご登壇いただきました。

今回は、JAWS-UG CDK支部とのコラボ開催でした!

イベント概要

イベント名 JAWS-UG CDK支部#19 クラスメソッドコラボ回
日時 2025年2月21日(金) 19:30~21:30
現地開催場所 クラスメソッド 日比谷本社オフィス(東京都港区西新橋1-1-1 日比谷フォートタワー26階)
現地参加者 18名 + 現地LT4名
オンライン開催場所 Youtube Live
オンライン参加者 80名

https://jawsug-cdk.connpass.com/event/343974/

登壇内容

登壇内容を紹介していきます。

CDKを使ったPagerDuty連携インフラのテンプレート化

渋谷翔悟さん(クラスメソッド)にご登壇いただきました。

https://dev.classmethod.jp/articles/cdk-3-cdk-pagerduty/

運用保守を担当する部署でPagerDuty(インシデント管理SaaS)を導入する際の効率化についての発表でした。複数のプロジェクトに同じPagerDuty通知用Lambdaを追加する必要があり、手動でのCDKソースコード編集が非効率だったという課題に対し、CloudFormationテンプレートとクイック作成リンクを組み合わせた解決策が紹介されました。

具体的な実装として、CDKプロジェクトでLambda関数を作成し、CloudFormationテンプレートを生成、S3に配置してクイック作成リンクを作成するという流れが説明されました。この方法により、ソースコード編集が不要になり、新規プロジェクトへの導入も容易になったとのことです。

AWS CDKを活用する上で、裏で動くCloudFormationの機能を理解することの重要性も強調されていました。実務に直結する内容で、すぐに活用できる知見が得られる発表でした。

コミュニティ駆動 AWS CDK ライブラリ「Open Constructs Library」

k.gotoさんにご登壇いただきました。

https://speakerdeck.com/gotok365/community-cdk-library

コミュニティ駆動のAWS CDKライブラリ「Open Constructs Library(OCL)」についての発表でした。このライブラリは、AWS CDKを使用する開発者がより効率的にクラウドインフラを構築できるよう、ベストプラクティスを取り入れた再利用可能なコンストラクトを提供するオープンソースプロジェクトです。

コミュニティ主導のプロジェクトとして、様々なレベルでの貢献(コード貢献、ドキュメント作成、バグ修正など)を歓迎しているとのことで、AWS CDKエコシステムの発展に興味がある方にとって参加しやすい環境が整っていることが伝わってきました。

OCL発足の背景からCDKの歴史を知ることができて、面白かったです!
k.gotoさんの丁寧なレビューが受けられるということで、コントリビュートしたいけど本家CDKに手がでない方でもおすすめできる内容でした。

CDK開発におけるコーディング規約の運用

yamanashiさんにご登壇いただきました。

https://speakerdeck.com/yamanashi_ren01/cdkkai-fa-niokerukodeingugui-yue-noyun-yong-3db0c3c1-f3fe-47d0-9968-0a531090e453

CDK開発における効果的なコーディング規約の運用方法についての発表でした。特にJavaScript/TypeScriptを使用した開発環境を前提に、コード品質を維持するためのツール選定と規約の実装方法に焦点が当てられていました。

発表では、Linterの選定について詳しく解説され、ESLint、Biome、Oxlintの特徴と違いが比較されました。発表者の見解では、型情報を用いたLintルールが提供されることやプラグインの豊富さ、カスタムルール作成の柔軟性から、現状ではESLint(typescript-eslint)が最適とのことでした。また、速度面が気になる場合はOxlintとの併用も推奨されていました。

さらに、CDK開発特有の規約としてJSDocの活用法も紹介され、interfaceのプロパティやConstructで公開するプロパティにはJSDocを必須とし、オプショナルなプロパティには必ず@defaultを記述するなど、具体的なルールが示されました。これらのルールは「eslint-cdk-plugin」で提供されているとのことで、実践的な内容でした。

コーディング規約を自前で運用するのではなく、LinterやFormatterを使用して自動化することの重要性が強調された、実務に即した有益な発表でした。

「CDKで利用するLinter」という切り口での発表は初めて聞いたので、面白かったです!

CDKのコードを書く環境を作りました with Amazon Q

NobuhitoMoriokaさんにご登壇いただきました。

https://speakerdeck.com/nobuhitomorioka/cdknokodowoshu-kuhuan-jing-wozuo-rimasita-with-amazon-q

Windows 11環境でCDKのコード開発環境を構築した経験が共有されました。特に、追加アプリケーションのインストールを最小限に抑え、VS CodeとAmazon Qを活用した再現性の高い環境構築方法に焦点が当てられていました。

発表では、WSL2(Ubuntu)上にDockerを導入し、VS CodeのRemote DevelopmentとDev Containers拡張機能を使用してコンテナ化された開発環境を構築する手順が詳細に解説されました。具体的には、devcontainer.json、docker-compose.yml、Dockerfileの設定内容が示され、Amazon Q拡張機能の導入方法も含まれていました。

この環境構築により、CDKコードの開発からデプロイまでをVS Code上で一貫して行える利点が強調されました。また、環境の起動・停止方法や再開手順も明確に説明され、実際にcdk bootstrapやcdk deployコマンドを使ったテスト方法も紹介されました。

Amazon Qで Dev Container上で開発環境を構築するというテーマは特にセキュリティに厳格なプロジェクトで必要になりそうで、CDKだけではなく今後のAIツールを利用した様々な開発で参考にできそうだと思いました!

CDKでカスタムランタイムを作成して、Lambdaをnode.js23+TypeScriptで動かしてみた

makky12さんにご登壇いただきました。

https://speakerdeck.com/smt7174/cdkdekasutamurantaimuwozuo-cheng-site-lambdawonode-dot-js23-plus-typescriptdedong-kasitemita

Node.js v23.6.0からTypeScriptのネイティブ実行が正式サポートされたことをきっかけに、AWS LambdaでTypeScriptを直接実行する環境をCDKで構築する方法についての発表でした。AWSの標準ランタイムではNode.js v22.xまでしかサポートされていないため、カスタムランタイムを作成する必要があるという背景から始まりました。

CDK自体の実装は比較的シンプルである一方、カスタムランタイム特有の「bootstrap」やJavaScriptランタイム(runtime.js)の定義、node_modules用のLambdaレイヤーの読み込み制限などの課題についても言及されており、実践的な内容でした。

TypeScriptのネイティブ実行サポートからの、CDKでのカスタムランタイム実装ということで、Lambdaの挙動やCDKの実装知識など、様々な知見が得られる登壇でした!

OST&懇親会

今回は、初めての試みで軽めのOST(オープン・スペース・テクノロジー)を開催しました!
OSTでは、4つのテーブルを作り、それぞれのテーブルでテーマを決めてざっくばらんに話合う感じでした。
テーマがある分、普段の懇親会よりも深い話ができたと思います。

OSTのテーマには以下のようなものがありました。

  • AWS CDKのリンターは何を使っている?
  • AWS CDKのチーム開発
  • モノレポ、マルチレポ構成
  • AWS CDKのコントリビュート
  • 実際AWS CDKって普及してるの?

最後に

今回はAWS CDK単体のテクニックというより、周辺環境含めた登壇が多く、勉強になりました!
OSTでは皆さんのCDK愛を感じる話が沢山あり、普段の懇親会よりも皆さんの話を聞けたのが面白かったです!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.