「Table-driven testing に縛られないGoのテストパターン」という表題で発表しました。初の技術系カンファレンス登壇、というか社外イベント登壇自体が初でした。楽しかった!
発表内容
スライドはこちら。後日録画も公開していただける予定。
プロポーサル応募のきっかけ
以前から「GoといえばTable-driven testing(以下TDT)みたいな風潮あるけど、どこでもそれ適用したら辛いことあるよね」と感じていたが、それは自分の環境だけかもと自信がなかった。また、合わないパターンはどういうものかの言語化がうまくできていなかった。
TDT微妙なことあるよね、という同志がいると感じたのがある時のgolang.tokyoの懇親会。他の現場でも同じ思い感じる人がそれなりにいることがわかった。これは整理してみる価値はあると実感。
また、テストの書き方として王道でもあるArrange-Act-Assertを頭にいれて、それとTDTで照らし合わせたらよくまとまりそう、とある日ふと頭によぎった。
そこから勢いでGo Conferenceのプロポーサル出してみたら無事通過という流れ。全体で倍率5倍という中、採択されて嬉しかった。
準備
採択決定が4/4、登壇が6/8と2ヶ月空く。5分枠だし…と油断してるとあっという間に時間すぎて結局ギリギリになるかも、という不安はあった。
そんな中、登壇者のひとり、のびしーさん( @shino_nobishii )が発表練習の場を用意してくださった。5/5と登壇の1ヶ月前ごろにこの機会があり、ちょうどよいマイルストーンになった。
ゴールデンウィーク使って資料を作成、そして数名で発表練習・お互いフィードバックを行った。率直な感想をこの時点で言い合えて、ブラッシュアップできてよかった。練習会に参加した皆さん、当日の発表・資料いずれも磨き込まれてて素晴らしかった。
発表練習会についてはのびしーさんの振り返りをご参考に。
#gocon 参加記...と見せかけて参加より前に行った発表練習会の振り返りです。参加記は別で書くはず...!https://t.co/WCAQUu6Bhv
— のびしー (@shino_nobishii) June 10, 2024
また、社内でも毎月のLTの場で発表練習した。このときも率直なフィードバックもらえてさらに磨くことができた。
発表
当日、発表は19時ごろと遅めの時間。LTは1トラックのみで、聴衆は少なく見積もっても100人は超えていたはず。若干緊張して早口になってしまったかもだけど、無事発表終えられて安心した。
後でTwitter見返して、好評なコメントを結構もらえてて嬉しかった。
他の方の発表
どれも登壇者の熱量が感じられるものだった。知識の深さはもちろん、スライドも時間かけてこだわったんだろうな…と感じられるものが多かった。
強いて挙げるなら、以下が特に興味深く参考になるところが多かった。
- Go1.21から導入された Go Toolchainの仕組みをまるっと解説 - Speaker Deck
- 雰囲気で扱ってたToolchainの仕組み、かなり理解度が深まった
- バイナリを眺めてわかる gob encoding の仕様と性質、適切な使い方 / understanding gob encoding - Speaker Deck
- 怖くないバイナリの読み方、凝られた資料で理解しやすかった
- Unified Diff 形式の差分から Go AST を構築して feature flag を自動計装する - Speaker Deck
- feature flag管理、業務で大変に思うこと多々あるので参考に改善考えてみたい
- 試してわかるGo ModulesとMinimal Version Selection - Google スライド
go get
の裏で動くMVSの仕組み、初見は直感に反するものの納得感ある動きで面白い
- Guide to Profile-Guided Optimization: inlining, devirtualizing, and profiling - lilyum ensemble
- PGOのお話。PGOに入る以前の最適化とは?というところもしっかり解説されてて入門者にやさしい内容だった
これら以外の資料はこちらにまとめていただいている。
GoConference2024の資料が集まるスレ #gocon
他の方々のもどれも素晴らしかった。まだ追えていないところもあるので資料・録画を追っていきたい。
まとめ
以上、簡単にですが初登壇の記録・参加者としての感想を記した。
初登壇を追えて、登壇者にしか見えない景色があるなと実感。懇親会で登壇者の方々と感想言い合えた場もとても良いものだった。
次機会があるとして、今度は長めのセッションにチャレンジしたいところ。また今回は内容としてはBeginner向けの比較的ライトな内容だったので、濃い目の発表ができたらなーと思うところ。ネタ探しを日頃からやっていこう。
謝辞
発表練習に付き合っていただいた登壇者の方々、社内の方々、アイデアの種になるGoのテストに関する議論をした方々。また、GoConferenceスタッフ・参加者の皆さん。おかげさまで大変良いイベントになり、自分としても良い成長の機会になりました。 本当にありがとうございました!