Shin x Blog

PHPをメインにWebシステムを開発してます。Webシステム開発チームの技術サポートも行っています。

「PHP 8 で作る JSON パーサ」を発表しました / PHP カンファレンス 2020

2020/12/12 にオンラインで開催された PHP カンファレンス 2020 にて「PHP 8 で作る JSON パーサ」を発表しました。

 

発表資料

これまでパーサを書いたことが無い方を対象に Lexer(字句解析器) と Parser(構文解析器) からなる JSON パーサの実装を解説しました。

JSON は LL(1) なので、先頭から 1 文字づつ読んでいけばパースできます。パーサと聞くと難しいものという印象を持つ方もいるかもしれませんが、この発表で紹介したような JSON パーサであれば日頃利用しているシンプルな機能を組み合わせることで実装できます。プログラミング言語の学習にも簡単すぎず、難しすぎない手頃な課題だと思うので、年末年始休みにでもチャレンジしてみて下さい。

発表の際にお話した match 式による instanceof 演算子の利用ですが、下記のように書けば使えることが分かりました。instanceof が並ぶことに違和感はありますが、こうすればどんな式でも書けるということでもあるので、色々と応用が効きそうです。

オンライン登壇、事前収録

今回はオンライン登壇だったので、発表全てを事前収録してみました。イベントとしてはオンラインで接続してライブで発表するのが基本なので、自分で収録したものを自分で流すという方式です。

収録は、自分で好きなときに撮れるので何度でもやり直せるのが良かったです。ただ、やり直せるだけにやめ時が難しいという問題はありました。ここはもう割り切りで、あくまでライブの録画なので、多少音質が良くなかったり、言い間違いはありましたが、それはライブでもあり得ることなので、そこは許容して終わらせることにしました。

準備中に収録した動画を見返すことで時間や内容といった改善点が分かりやすかったのは発見でした。これまで音声を録音して聞き返すというのはやったことがあるのですが、やはり動画の方が格段に分かりやすいです。なんとなくリハーサルやるより効果的だったので、オフラインでの登壇に戻っても活用したいところです。

当日は、動画を再生しつつ、YouTube / Discord / Twitter のコメントに反応してました。自分の発表中にリアルタイムでコメントしていくというのは新鮮な体験で、楽しかったです。オンラインでは、投稿されたコメントしか反応を知る方法は無いので、コメントして頂いた方には感謝です。ありがとうございました!

うまくやれば別トラックのセッションを見られるかなと思ったのですが、さすがにこれはやりませんでした。

次にオンライン登壇の機会があれば事前収録するかどうかは悩ましいところですね。当日は楽なのですが、リアルタイムのコメントや他のセッションの内容に反応して進めることができないのは勿体無い気もしました。*1  

オンラインカンファレンス

オンラインカンファレンスはいくつか参加していたのですが、毎年会場まで足を運ぶイベントのオンラインカンファレンスというのはまた特別なものでした。

まず、関西在住としては東京まで行かなくて良いのは圧倒的に楽です。前日に家で普段どおり過ごせるのは良いですね。今回は事前収録していたのもあって、楽でした。

セッションはオンラインに最適化されてるので、自分の環境で好きなように見られるのが良かったです。みんなで同じセッションに参加している感は Discord で味わうことができました。後でアーカイブが見やすいのも良いです。

ただ、当然なのですが、現地(PIO)のいつもの空気感を味わうことはできませんでした。何より一番違うのは、気軽に交流するのが難しいことです。あらためて、やっぱりカンファレンスの立ち話は良いなと再認識しました。もちろん、オンラインでのコメントのやり取りも楽しかったので、もしかすると自分がもっとオンラインでの交流をオフラインのようにできれば似た感覚が得られるのかもしれません。このあたりが解決すれば、オンラインカンファレンスも良いですね。 

さいごに

初のオンライン開催となった PHP カンファレンスですが、スタッフの皆さんのおかげで今年も楽しいイベントでした。特に登壇については事前の案内や接続テスト、当日の運用まで安心して発表できるようにサポートして頂いたおかけでスムーズにセッションが進められました。また、配信スタッフの方はとんでもないプレッシャーだったと思います。配信はスムーズで各セッションを視聴できました。今年もありがとうございました。

数えてみると PHP カンファレンス 10 回目の登壇でした。これだけ長い間(PHP カンファレンス全体から見ると半分ですが)開催されているということが素晴らしいです。2021 年は 2 days になるようなので楽しみですね。11 回目登壇できるようにネタを考えておきます :)

*1:特に成瀬さんのセッションを見た後だと、コメント拾ってやりたくなりますね :)