スクラムフェス2023で登壇してきたので、そのふりかえりをしていこうと思います。
登壇準備
今回は技術面にめちゃくちゃ振り切ったセッションで、自身に取っては初めてのチャレンジとなるセッションでした。
話のベースは「Refactoring Test Smells With JUnit5 Why Should Developers Keep Up-to-Date」というSurveyにある、JUnit5の機能を活用してテストコードのリファクタリングを実施したらOSS開発者から広く受け入れられた(超ざっくりまとめ)という話で、そこに対してそもそもなんでTest Smellsが発生するのかや具体的なリファクタリングコードを肉付けしていくような形での準備になりました。
話の構成としてはプロポーザルを出すタイミングである程度できていましたし、肉付けとして使うSurveyや書籍についても自分の中で見当がついていたので、最初の方スムーズに準備を進めることができていたのですが、具体的なソースコードを書いてみるタイミングで躓くことになりました。
というのも、Surveyで紹介されているリファクタリング事例の幾つかには、JUnit5だからどうこうという話ではないものがあったり、リファクタリングすることで可読性が低くなるリスクもあると思えるような事例があり、適切な事例を考えるのに苦労しました。(実際にSurveyをもとにJUnit5を使ってリファクタリングされたコードのPRを漁ってみたのですが、同様の感想を抱くPRもありました)
例えばException HandlingのTest SmellsはJUnit4でも取り除くことができるのですが、JUnit5から取り除けるようになったように受け取れる例が書かれていたり、@ParameterizedTestを使ってTest code duplicationのTest Smellsを取り除けたもののテストコード自体の可読性が下がったりといったのはその一例です。
また、JUnit5を活用してTest Smellsの一部を消すことができるのは事実ですが、JUnit5の機能を使う前に「xUnit Test Patterns」に書いてあるようなフレームワークのバージョンに依存せずとも消せるTest Smellsを幾つか紹介した方が参加者のアウトカムにはつながるのでは?という想いも資料を作りながら出てきて、どうしたものか頭を悩ませました。
ただ、フレームワークのバージョンに依存せずとも消せるTest Smellsを紹介するとなると、ほぼ間違いなく「xUnit Test Patterns」以上のことは聞けなかった、となりますし、「xUnit Test Patterns」に書かれている内容の整理は他の多くの方々がされていることが分かり、独自性が出ないなあと思って却下しました。
登壇中
タイトルにJUnitを入れたことでセッションを聞きに来る方はある程度限定されるかと思っていたのですが、結構多くの方々が聞きに来てくれた上に、技術に明るい方々も多くいらっしゃったのでいつもとは全然違った緊張感がありました。
序盤で練習では喋れていたことがすっかり飛んだりして、一旦落ち着こうと思って意図的にセッションを止めてDiscordを見る時間を作ったりしたのですが、最後まで緊張は続いていました。*1
緊張がほぐれたのは発表が終わった後にみんなが拍手してくれているのが画面越しで見たタイミングでした笑
お聞きくださったみなさん、どうもありがとうございました!
登壇後
今回はテストがテーマの新潟ということで、JUnitを題材にして技術的なセッションにチャレンジしましたが、また別のテーマで技術的なセッションにチャレンジしてみたいです。
資料は公開しようと思っているのですが、現在ちょっとバタバタしており、もう少々時間がかかるかと思います。
*1:ただ、それでもそのまま話し続けるよりは明らかによかったと思っています