Kaigi on Rails 2024 Day2 10:40 〜 10:55 「ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)」というタイトルで登壇させてもらいました。大きな技術カンファレンスでの登壇は初だったのでふりかえり記事を書き残しておこうと思います。
参加したセッションの感想などは以下に書いてます。
タイムライン
プロポーザル準備期(〜プロポーザル採択まで)
- 今年に入ったあたりから「CfP があるカンファレンスにプロポーザルを出して登壇する」を実現したいなとうっすら考えはじめる
- 自分が今現在取り組んでいることで出せそうなテーマがあればプロポーザルを出していくスタンスでやっていた
- 7/1 Kaigi on Rails のプロポーザル募集開始
- コアコンセプトは 「初学者から上級者までが楽しめるWeb系の技術カンファレンス」
- 募集要項なども見るに、Rails というテーマの中で多様なトピックを求めていそうと読み取った
- セキュアコーディングや Web セキュリティに関することはしばらく興味関心があり「Rails に特化したセキュアコーディングネタで1本考えてみるか」となった
- あと過去登壇などを眺めるにセキュアコーディングを扱った内容は少ない印象を持ち「採択目指すなら狙い目では?」という思いも少しよぎった
- ActiveRecord で SQL インジェクションになる実装パターンって周知できてるのだろう?あたりの疑問からクイズ作って社内でも出してみた
- ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)
- 思った以上に正答率が高くない=クイズとして成立しそうだし知識の共有ネタとしても良さそうという感触を得る
- Shinjuku.rb オーガナイザーであり同僚でもある @onigra さんから Shinjuku.rb でプロポーザルを書く企画どう?とお誘いを受ける
- Shinjuku.rb で参加者からフィードバックをもらいながらプロポーザルを書き上げて提出
- 後日、採択の連絡を受ける
うぉぉぉ!Kaigi on Rails2024プロポーザル採択された!やっていくぜ #kaigionrails
— Koji NAKAMURA (@kozy4324) 2024年8月17日
資料準備期(〜登壇直前まで)
- 全体構成を考えるところから資料作りをスタート
- ただクイズを出して終わりではなく、ちゃんとセキュアコーディングを啓蒙するような内容を目指したかった
- メインターゲットは初学者として、初学者以外の人も楽しめるよう内部実装に踏み込んだ話も盛り込みたいなと考えた
- とは言えプロポーザルの時点で骨子はだいたいできていたのでそれを逸脱しないように内容を肉付けしていった
- 当初は9月末までに資料を大体作って、10月入ったら練習&リファインを繰り返せばええやろというスケジュール感で考えた
- が、9月末時点の資料の出来は約50%という感じで通しの構成はできているけど細部が煮詰まっていないという状況、それなりに焦る
- 社のテックブログで登壇すること書かないか?と言われたので二つ返事で答えてブログも書いた
- 10月最初の週は書いてることが間違っていないかということを確かめるためにひたすら debugger を起動して ActiveRecord の内部処理をステップ実行していた記憶しかない
- おかげで postgresql と mysql2 アダプターにおけるクエリメソッド処理シーケンスが頭に叩き込まれた
- 詳しいから登壇するのではなく登壇するから調べて詳しくなる、を体現していた時かもしれない
- 普通に発表できるレベルの資料ができたのは 10/14 週で、ここからは登壇時間の15分で時間内に喋るれるかのテスト&テスト
- いくつか内容を削る
- 10/23 に社内メンバーに予行演習を付き合ってもらう
- 会場に挙手制でクイズ回答を投げかけるやつとかちゃんと時間とってやったほうがいいよねというフィードバックをもらい、その調整でさらに内容を削る
- 10/24 に発表する Ver. の資料が完成
- 結局ちゃんと完成したの、本番の2日前だった...
- Day1 へ移動する電車内とか、開場前の時間潰しする時間はひたすら15分に収める練習を繰り返していた
- 気を抜くと16分とかオーバーしてしまうので各スライドでこれだけは伝えるぞっていう内容を精査したり、逆にこれは余計だなってことは削ぎ落としたりしていた
- Day2 の発表当日はなんと 3:30 に目が覚めてしまった
- 自宅出発前に練習、電車移動中に練習、現地に開場1時間前に着いたのでベローチェで練習...
- だいたい時間通りに喋れるようにはなったなという自信はできた
現着。Day2やるぞ(早すぎ) #kaigionrails pic.twitter.com/Wzx73SnNn5
— Koji NAKAMURA (@kozy4324) 2024年10月25日
登壇
- どれほど緊張するかなって思ったけど、アホほど練習したので想像の1.15倍ぐらいの緊張度で喋れたとは思う
- 同僚の方が現地に来てくれて見守ってくれので、そーゆー意味だと誰も来なかったらもっと緊張していて危なかったと思う
- 発表中は下を見がちなので適度に前を見ながら喋ることは意識した
- オフィシャルの写真にはちゃんと前向いて撮ってもらえた気がしている
- 早口になりすぎないように、でも時間内にもちゃんと収まるようにってことを意識しながら喋った
- 途中内容が吹っ飛ぶこともなく、時間もほぼ15分ちょうどという感じで無事に登壇を終えることができた
同僚のこーじさんが発表されるのでClassi勢で最前応援待機している #kaigionrails_blue #kaigionrails pic.twitter.com/FwEdwKIJDe
— 桐生あんず (@anzu_mmm) 2024年10月26日
登壇終了後
- 発表資料は登壇後にすぐ公開した
- それなりにいいね!も付いており、一定内容の質は担保できているのかなとは思っている
- 資料だけ読んでもそれなりに内容が伝わるようには頑張って作ったので、資料だけでも見てもらえているのであればそれは良かったのかなと
- 気持ち的に解放されたのと、起床時間が早すぎたこともあり、以降はゆっくりと各セッションを拝聴させてもらった
発表資料です!
— Koji NAKAMURA (@kozy4324) 2024年10月26日
ActiveRecord SQLインジェクションクイズ (Rails 7.1.3.4)https://t.co/4KUb8TmJPE#kaigionrails #kaigionrails_blue
YWT
Y: やったこと
- まずはプロポーザルを出して細かいことは採択されてから考えようの精神でプロポーザルは提出させてもらった
- プロポーザル書いた時点で想定していた内容からそれなりに喋りたいことは削った
- 登壇するために自分で調べてその事柄について詳しくなるという流れは作れた
- 予行演習して社内メンバーからフィードバックをもらってブラッシュアップできた
- 時間内に収めることはアホほど練習した
W: わかったこと
- 9月末には資料できるやろと思いつつやはり直前になるまでちゃんと動作する成果物はできなかったのでパーキンソンの法則からは逃れられないということ
- 登壇に向けての2ヶ月ちょっとの準備期間はやはりあっという間に過ぎる
- 初学者向けの内容と技術的に尖った内容とを両立させることはやはり難しいなと思ってしまった
- 15分という登壇時間はとても短い、伝えたいこと・メッセージングをシャープにしておかないと苦労するんだなということ
- テーマアップした「ActiveRecord がどうSQLインジェクション脆弱性を防いでいるのか」という事柄についての深い理解を得ることができた
- 登壇駆動学習
T: 次にやること
- カンファレンス登壇チャレンジは続けるぞ!
- プロポーザルに出せるネタの幅は広げていく必要あるなと感じた
- 何か明確に OSS 活動ができているわけではないのでそういった部分は何かしら積み重ねていきたい
- 所属企業での事例という線もあるだろうからいい感じにやったことを抽象化しておくとか
- やっぱり技術的に尖った話もしたい
- 主催している Kashiwa.rb や定期的に参加している Shinjuku.rb 、それ以外の勉強会にも参加して何かしらアウトプットするというのも継続する
おわりに
プロポーザルを書くところで、Shinjuku.rb で書くキッカケを提案してくれたり、実際に会の中で具体的なフィードバックをしてくれた部分が採択に繋がったということもあり、同僚である @onigra さんにはめちゃくちゃ感謝しております。また同様にプロポーザルへのフィードバックをしてくれた Shinjuku.rb のメンバー、登壇資料へのフィードバックをしてくれた社内のメンバーにも感謝です。登壇までやり切ることができました。ありがとうございました!