PHPerKaigi 2022 で JSON パーサーを作るライブコーディングをしました
PHPerKaigi 2022 にオンライン参加した
PHPerKaigi 2022 にオンライン参加しました。最近フロントエンドの発信をメインにしていますが、元々自分はエンジニアとしてのキャリアを PHP のサーバーサイドエンジニアから始めました。
前職の弁護士ドットコムではバックエンドに PHP を採用しているため、弁コムがスポンサーをしていた PHP Conference には何度か参加したことがありました。
現在の勤務先である BASE でもバックエンドは PHP のフレームワークである CakePHP を採用しており、PHPerKaigi のスポンサーでもあります。
私は PHPerKaigi には参加したことがありませんでした。かつて私がエンジニアとして最初に入った会社で「あのカンファレンスは PHP を使うすごい人たちが集まるところなんだ」と教えられ、なんとなく敷居が高いイメージがあったからです。
PHPerKaigi に参加した経緯
3月ごろ、今年の2022年の PHPerKaigi には BASE のバックエンドのメンバーに参加しないかと声をかけて貰いました。
自分は BASE でフロントエンドエンジニアとして働いており、WEB+DB Press で PHP のアップデートに伴う新機能の紹介記事を読むくらいで、それ以外は最近の PHP 事情をあまり追っておらず PHP のコードも1年以上書いていません。
最初は断ろうかと思っていました。しかし、よく話を聞いてみると資料を作成して登壇して発表するのではなく、アンカンファレンスというオーディエンスの方とインタラクティブなやり取りをする発表で良いこと、そのアンカンファレンスで先日私が Sofware Design に寄稿した TDD の話などをしてほしいということでした。
実際に過去の PHPerKaigi のアンカンファレンスの発表を見ると、開発や組織に関する意見交換や雑談のようなものだったり、みんなでコードリーディングをするような物がメインでした。
最新の開発状況を共有したりする必要もなく、事前の準備もそこまで必要なさそうだ。それなら一つやってみようと思い、ネタを探すことにしました。
発表内容の決定と事前準備
当日の発表内容は PHP8 で JSON パーサーを作るというものにしました。
自分は最新の PHP の言語事情も知れるし、JSON パーサーの作り方も学べる。また、ライブコーディングとすることで、JSON パーサーの作り方を自分から学ぶというのは腰が重いが、コーディングしているところを見るだけなら見ている方も一歩を踏み出しやすいだろうと思ったからです。
自分の想定していた対象者は、PHP である程度作りたいものを作れるようになった中級者の方でした。しかし、今回自分がオンライン参加だったこと、また全く同時刻に BASE とメルカリの社員が組織と開発について対談するという現地アンカンファレンスをすることが当日決まったことから、宣伝と集客の面で劣ってしまい、そもそも参加者が7名という少人数になっていました。
ライブコーディング当日
また、当日は70分の枠を確保したもののかなり駆け足でコーディングしており、こちらが一方的に書いて一方的に解説することになり、 Zoom で参加してくださった方との交流まではできませんでした。
私はライブコーディングの事前準備として時間を測りながら JSON パーサーの作成を 2周しました((GitHub にコードを掲載しています))。その結果、ライブコーディングを聞いてくださった方と自分の間で仕様の理解度に差がついてしまい、解説が早すぎたかもしれないと反省しました。
発表の枠は70分あります。最初の10分くらいは参加者が増えるのを待ったりしていたので、実質コーディングをしていた時間は60分です。その60分間では、緊張も相まって短距離走のように初めから全力コーディングをし(そうしないと終了に間に合わない)、しかも普段ペアプロでするようにずっと「今やっていること。そのコードの意図」を喋りっぱなしでした。
面白いことに、コーディングを初めてきっかり50分たったところから、タイポ言い間違い、言葉がすぐに出てこないことが頻発しました。集中が明らかに切れてしまったのです。それでもなんとかパーサーとレキサーの作成が完了し、事前に用意していたテストも全て通りました。
惜しむらくは、パーサーとレキサーを組み合わせて呼び出す main 処理だけが書けませんでした。たった数行なのですが、ギリギリのところで時間が来てしまい、Zoom の会議が無慈悲にも閉じられてしまいました。
それでも、Zoom で顔出ししてくださった方の反応が見れたり、BASE の現地参加メンバーが出展ブースでパソコンの画面に自分の発表を映してくれていて、パソコンを覗き込んでいる人が数名いるのが見えたことです。
オンラインでカンファレンスに参加する方は、ぜひ顔出しをして頂けると嬉しいです。発表者のモチベーションに直結すると思いました(録画型の発表は事情が別ではあると思いますが)。
さて、今回のライブコーディングで学んだことは、以下の3点です。
- 聴衆と発表者の間で仕様の理解度に差がありすぎるとよくない。誰でも知ってる題材か、どちらも詳しく知らない題材を選ぶ
- 50分を越えてコーディングをするのは体力、気力的に無理。今回は自宅からだったが、壇上からだと30分までにしたほうがいいかもしれない
- テストが落ちたりエラーが出ても、みんなでデバッグすればいい。誰かが気づいて教えてくれるので問題ない(モブプロのいいところ)
PHPerKaigi で発表をする、JSON パーサーの作り方を知る、PHP8 の機能を知るという当初の自分の目標は達成できました。また、発表を聞いてくださった方のおかげでライブコーディングについても学ぶことができました。
ただ、自分の目的は達成したものの、発表を聞いてくださった方には楽しんで貰えたのかが、オンライン参加だったため確認できませんでした。自分の後には発表枠がなかったので、オフライン参加であれば少し時間をオーバーしても最後までコードを書ききれたでしょう。
オンライン参加なので、「カンファレンスの廊下」という技術者同士の雑談もありませんでした。ただ、PHPerKaigi の週と自分の引っ越しと重なっており、新居に引っ越したばっかりでバタバタしていたため仕方なかったかなとも思います。
もし来年も PHPerKaigi に参加することがあれば、もっと参加者の方と交流できるような題材を選び、必ずオフラインで参加しようと思います。
それは全部の発表が終わった後、完全に自分のエンジンがかかっており、その熱がしばらく冷めなかったからです。
アンカンファレンスの発表をした後、たまたま上の階の方が挨拶に来てくださいました。初対面特有のしっとりした挨拶が求められる場面だったのですが、何分自分が全力で発表をした後だったので、勢いそのままに受け答えをしてしまって温度感に差が...(笑)。
まあそんな後日譚もありました。最後に、テーマの元になったスライドを作成してくださった @shin1x1 さん、PHPerKaigi の主催者・運営メンバーの方、参加者の方、声をかけてくれた BASE のメンバー、また関わってくださった全ての方に感謝して筆を置くことにします。
Happy Coding 🎉