AWS CDK Conference Japan 2024 の CDKコントリビュートワークショップに参加しました
はじめに
私の一番大好きなAWSのCDKについての、年に一度の一大イベントである CDK Conference Japana 2024 に今年も名古屋から現地参加してきました!
今回はオープニングと、上級者向けワークショップである CDKコントリビューションワークショップについての参加記録です。
今年もスポンサーの皆様からの差し入れが!
昨年に引き続きバーガーとお水(とステッカー)を頂きました🙌#cdkconf2024 pic.twitter.com/sypkYGGepj
— あきた (@yoyoyo_pg) 2024年7月6日
オープニング
まずはウォーミングアップから!
ハッシュタグは #cdkconf2024 !
— あきた (@yoyoyo_pg) 2024年7月6日
今年も来れてよかった! pic.twitter.com/KBBMVB96SO
CDK支部の発表等の中で知れたベストプラクティスを自社でも多数取り入れているので、本当にこういったコミュニティの場に感謝です。
CDKのノウハウがどんどん溜まっているのは本当にありがたいです。運営の皆様、登壇者の皆様に感謝。#cdkconf2024 pic.twitter.com/xc10FhmUYi
— あきた (@yoyoyo_pg) 2024年7月6日
また、改めて振り返ってみると第四回から私も参加していたらしい。
ここまで継続してCDKやIaCについてキャッチアップ出来ているのも、テーマ別支部の醍醐味だなと改めて感じます。
そして今回は難易度が後半につれて難しくなる構成でした。
CDKスタックの運用も1年を超え、個人的にはコンストラクトの分割や再利用性と可読性の担保、そしてCDKをより深く知る事が直近の大きなテーマだったので、とても有難い構成でした。
とは言え、前半のセッションも気になるものばかりなので後で録画視聴します...!
今回は難易度別の設計がされているとの事。
— あきた (@yoyoyo_pg) 2024年7月6日
個人的にも、コントリビュートワークショップ→後々のセッション見れてありがたい!#cdkconf2024 pic.twitter.com/rpYJgqGyr4
~ 15:00 CDKコントリビューションワークショップ
以前からOSSのコントリビューションには関心があり、実はaws-samples内のBLEA等のドキュメント修正のコントリビューションはした事があったのですが ↓ CDKのコントリビューションについては挫折してしまっていたので、今回参加出来て本当に良かったです。
なんと、プルリクまで(ほぼ)実戦形式で行えるとの事で驚き!
CDKコントリビュートワークショップ、本家と同じようなリポジトリに対してプルリクを送れるらしい。準備が凄い...!
— あきた (@yoyoyo_pg) 2024年7月6日
#cdkconf2024
ワークショップで利用したリポジトリは以下。
ここまで詳細な物を準備頂き、本当にありがとうございます。
@WinterYukkyさんから本ワークショップとCFnを利用した環境構築等のついてレクチャー頂いたのちに、@365_step_techさん、@nixiemintonさんから実戦形式でビルド、テスト、PR作成まで演習する形式でした。
私は以前、CDKのリポジトリフォークからビルドまでは試していたので、TL上で説明を聞きながら一人実況を試みることに。
CDKのビルドに時間がかかるので、まずは先に
— あきた (@yoyoyo_pg) 2024年7月6日
CDKサンプルリポジトリのフォークとビルドを実施。
ビルド中に後藤さんからコントリビュートの流れについての説明との事!#cdkconf2024
alphaモジュールがaws-cdk-libから分かれている事は認識していましたが、具体的なディレクトリ構造は初耳でした!
・`packages/aws-cdk-lib` モジュールにCDKのコンストラクト
— あきた (@yoyoyo_pg) 2024年7月6日
・`aws-cdk` にはCLIとしてのコード
・`@aws-cdk` にはalphaモジュール
・`@aws-cdk-testing` にはintegrationテストなどのテストコード
が入っている!#cdkconf2024 pic.twitter.com/R3tWdzbn8h
L1コンストラクトの自動生成の方には時間がかかります。
以前手元のPCでこのビルドをかけたときには正にOOM(Out Of Memory)が発生してHeapを調整していたので、その辺りもケアされていて流石の準備だと感じました...!
yarn installでのビルドに加えて、CDKを構成するモジュールのビルド。(今回の環境だと15分程度)
— あきた (@yoyoyo_pg) 2024年7月6日
`--scope=aws-cdk-lib`の形で、単体のモジュールだけビルドすることも出来るのか。#cdkconf2024
コントリビュートのネタを探す際は、ラベルで絞り込みするのが良さそう。
■コントリビュートのラベルについて。
— あきた (@yoyoyo_pg) 2024年7月6日
・p1やp2は優先度のラベル
・good first issue が初めてコントリビュートする人におすすめのラベルとの事!ただし、なかなか無いらしい(笑)#cdkconf2024
unit(単体)・integration(統合)テストについて。
テストカバレッジの話や各テストの違いを知れました。
■テスト
— あきた (@yoyoyo_pg) 2024年7月6日
・unit(単体)テストとintegration(統合)テストがある。
・unitはファイル単体を指定し、integは実際のAWS環境にデプロイできるかを確認するテスト。#cdkconf2024
・integテストは1回目にCFnスナップショットが生成され、2回目以降はその差分を見る形。
— あきた (@yoyoyo_pg) 2024年7月6日
・想定範囲内のスナップショットの変更であれば、`--update-on-failed`オプションを利用してデプロイが実行される形となる#cdkconf2024
また、CDKリポジトリのソースコードが「L2として渡される引数を基に、L1コンストラクト(=CloudFormationテンプレート)を生成する為のロジックが書かれている」という事を今回触りながら理解できたのが非常に大きかったです。
■コントリビュートワークショップ
— あきた (@yoyoyo_pg) 2024年7月6日
・L2の中で、L1を利用してリソースを生成している
・L2に新しい引数を追加するときは、オプションという事で`?`の形で追加する
・デフォルトの挙動をコメントで書いておく#cdkconf2024
また、「フルビルドの際にはファイル差分が出る事があるが、破棄してOKな場合もある」、「ドキュメント関連の書き方」等、実践を通して理解できたことや、メモとして取り切れていないTipsも色々と知れたので、改めてCDK支部の資料等も含めて見直し、コントリビュートに挑戦できればと思います。
integ-testの為にはcdk bootstrapが必要との事。#cdkconf2024
— あきた (@yoyoyo_pg) 2024年7月6日
cdkへのプルリク作成時に、READMEのTypeScriptの記載もCIでチェックされるらしい。READMEの記載も気が抜けないなぁ。
— あきた (@yoyoyo_pg) 2024年7月6日
また、READMEの書き方もモジュールで異なるらしい。#cdkconf2024
@konokenjさんにも沢山写真を撮って頂き、嬉しい限りです!最後に記念写真をパシャリ。
※2枚目の前で白Tを着ているのが私です。
AWS CDKへコントリビュートしてみようワークショップの卒業生たち!これは日本がコントリビューターランキング1位になっちゃいますね🥰 講師のお二人もありがとうございました! @365_step_tech @nixieminton #cdkconf2024 #jawsug_cdk pic.twitter.com/mLD14zPoxK
— Kenji Kono (@konokenj) 2024年7月6日
CDKのトップコントリビューターのお二人から直接レクチャーを頂ける貴重な機会を頂き、この度は本当にありがとうございました!
コントリビュートの第一歩として、まずは一つPR上げていきます!
@WinterYukky さん、@365_step_tech さん、@nixieminton さんのCDKコントリビュートワークショップ、
— あきた (@yoyoyo_pg) 2024年7月6日
素晴らしいお膳立てのお陰で全然詰まらなかったし、一連の流れが体験出来て最高のワークショップでした!
私もコントリビュート挑戦していきたい!
本当にありがとうございました!#cdkconf2024