幸いに登壇のチャンスがいただけたので、Kaigi on Rails 2023に現地参加してきました。
E2E testing on Rails 2023 by Yusuke Iwaki - Kaigi on Rails 2023
2年前の「システムテスト解剖学」という発表の続編的な位置づけで、RailsのE2Eテストを取り巻く技術の解説に徹する発表でした。
自分の発表のスタイルとして、「◯◯したらいいよ」「△△ライブラリ使うといいよ」系の発表にはしたくないというちょっとしたこだわりがあり、とはいえ今回の発表は手を抜くと「Playwright最高だよ、めっちゃいいよ」になってしまうので、注意深くストーリー展開を練って本番に望みました。
- Node.jsベースのテストランナーを話す必然性
- Railsで何をしたら幸せになれそうか?の定義
- じつはあれもこれもしなくても、1個だけ仕組みを作ればいいんだという発見の導出
などなど、狙ったポイントについてはしっかり伝えられたかなーと思っています。
いっぽうで、DEMOのコンテンツの練習不足で、一部やることを忘れてしまうなどハプニングもありw、現地開催の面白さ・難しさも改めて実感しました。
(てか、そういえばリアル登壇これが初めてだよ自分...。Ginza railsもKaigi on Rails 2021もオンライン開催で自宅から話してたんだ。
Kaigi on Railsを引っ張る @okuramasafumi さん、および実行委員の皆様には本当に感謝です。Railsにゆかりのあるエンジニアが集まる場に参加して登壇できたことはエンジニアとして本当に至福の時間でした。
とりあえず登壇までにやったこと、当日のこと、などなどを忘れないように書き留めておこうと思います。(たぶん誰の参考にもならないw)
登壇ネタを決めるまで
今回は、おそらくかなりの倍率になろうかと思い、2つネタを出した。
たまたまE2E testingのほうが通ってしまった、というのが正直なところで、実はもう一個出していたネタ(Railsで作ってしまったものをRailsじゃなくSinatraへ移行する系のお話)のほうが渾身のネタではあった。
これはいずれどこかでまた発表するとして、まぁ世の中の期待というかお困りポイントとしてはE2Eテストなんだろなーという事情も察して、「E2E testing on Rails 2023」の準備を進めることにした。
登壇ネタの深掘り1 - Playwrightに詳しくなる
準備期間は2ヶ月もあるので、とりあえず最初にやったことは、Playwrightテストランナーのコンサルティング能力を上げること。中身を知り、どういうユースケースでどんな機能を使うべきか、詳しくなること。(はっきりいってRailsは何も関係がないw)
とりあえず日本で五番目くらいにPlaywrightテストランナーに詳しい人になってKaigi on Rails 2023に臨むぞ
— Yusuke Iwaki (@yi01imagination) 2023年8月27日
ただ、これをやったのにはいちおう理由も一応あって、Playwrightテストランナーは世の中のイケイケQAさん(いわゆるアーリーアダプター)がワッと使い始めているにすぎないフェーズで、もしかすると次の波がやってくるかもしれない。そうなるとPlaywrightテストランナーの何が凄かったのか?という話にもなる。つまり、現時点においてPlaywrightだけがすごい部分と、Node.jsベースのテストランナー全般としての利点と、べつに技術スタック関係ないけどPlaywrightでは利用しやすい機能と、など分けて考えておく必要がある。
Playwrightは公式の動画があり、開発してる人がかなりいろいろと紹介してくれているので、まずはそれを片っ端から見ていくことにした。
メモはこんなかんじでGoogleのメモに。
1.14から1.37まで、2年分のアップデートをとりあえず脳内に叩き込んで、次へ。
登壇ネタの深掘り2 - 必然性を感じられるストーリーの練り上げ
ここが結構時間かけたところ。Keynote触り始めるとそれだけで時間がかかってしまうので、今回もApple Pencilに投資をしてiPadでひたすら手書きメモで作っていった。
Kaigi on Railsの30分発表のスライドのストーリー練るためにApplePencil2に今さら投資したけど、やっぱり手書きは最高だな。そしてPencil初代より使いやすい二代目。消しゴムをダブルタップで変えられるのは良い
— Yusuke Iwaki (@yi01imagination) 2023年9月24日
こんな感じで、図で説明すべき部分と、文章やチャートで説明すべき部分と、いろいろ脳内整理が捗った。
8割くらい作ったところで、なんかわけわからんくなって、雑記もまた色々w
仕事の方もそこそこ忙しかったので、空き時間でメモ、空き時間でメモ、空き時間でメモ、って感じでネタを作り上げていきました。
スライドの枚数的な進捗でいうと、8/21の登壇確定から10/21まで2ヶ月にわたり0枚ww
Kaigi on Railsまであと二ヶ月。マジで準備すすめねば。二年前もそうだったけどいい感じに説明するための資料とテストサイトいっぱい作るので意外と仕事より大変なのだ
— Yusuke Iwaki (@yi01imagination) 2023年8月27日
Kaigi on Railsの発表準備の進捗0%なので流石にこの週末少し本腰入れて計画立てる
— Yusuke Iwaki (@yi01imagination) 2023年9月16日
Kaigi on Railsの話すネタは概ね固まりつつあるけど、サンプルコードもスライドも進捗ゼロで流石にやばいなー。
— Yusuke Iwaki (@yi01imagination) 2023年10月21日
iPadでの脳内整理メモの効果により、60枚近いKeynote資料をほぼほぼ一晩で書き上げたのでしたw
とりあえずKaigi on Rails 2023のスライド、荒削りながら完成。寝よう。
— Yusuke Iwaki (@yi01imagination) 2023年10月25日
登壇の反省
まず、なによりもDEMOの準備不足でした。焦って、VSCodeのPlaywright拡張機能の起動方法を忘れてしまうという大失態。
とはいえで、Playwrightの便利さが100%伝わらずとも、Node.jsのテストランナーが主流になってきているという事実づけから始めたストーリー展開により、DEMOの混乱が多少あっても、全体のストーリー理解には大きな支障が出なかったのが不幸中の幸い。
Shift + Command + Pでコマンドパレットを出すと、本来は Focus on Playwright viewが出て、うまくいくはずだったんだけど、なんか本番でやっても出なかったんだよなー・・・・必殺再起動が必要だったんだろうか・・・やっぱりわからんw
登壇発表のときに感じたこと
今回、現地の発表で、現場の様子を見ながら喋れるのが本当によかった。
2年前はオンライン開催で動画は事前収録だったこともあり、撮り直しができる最強のメリットはあったけど、やっぱり反響のないなかで喋り続けないといけない辛さも結構あった。
今回は、ONKさんらしき方が最前列でめっちゃウンウン聞いてくれているし、テスト書いてますか〜?みたいな挙手もリアルタイムにフィードバック得られるし、気分的にはかなり最高な発表だった。エンジニアリングのカンファレンスはこうじゃなくっちゃ!
発表資料
ちょっとTwitterに共有するタイミングが速すぎて、直前の方の発表に埋もれてしまったのが反省。
サンプルコードなど
これずっと共有しわすれてましたw
DEMOサイトはこれ↓
Railsとして協調するために作らないといけない部分はこれ、ってところで紹介していたのは、いちおうGemにしていて、これ↓
ぜひ併せて見てほしい動画
Playwright作者の一人が、「なぜPlaywrightテストランナーを作ったのか」語っているものが、結構印象的です。
自動テスト関係なく、ぜひみんな見てみるとよいです。
まとめ
冒頭にも書いたように、Railsにゆかりのあるエンジニアが集まる場に参加して登壇できたことはエンジニアとして本当に至福の時間でした。また来年いけるよう準備するぞ