2016/11/03 に開催された PHP カンファレンス 2016 にて、「正規表現再入門」を発表してきました。
資料
内容は、正規表現のマッチングの動き、量指定子のマッチングパターン、バックトラックやパフォーマンスへの影響についてです。
下記のエントリを下地にして、マッチングの動きを分かりやすく伝えることを意識してお話しました。 blog.shin1x1.com
参加された方からは、「分かりやすかった」といった好意的なフィードバックを頂けたので、発表して良かったです。
これから正規表現を学ぶにしても、マッチングがどのように行われるかをざっくりと知っておけば、正規表現を書く際にも動きが想像できるので、この発表がお役に立てると嬉しいです。
偶然、同じ時間帯に発表があった徳丸さんのセッションでも正規表現に触れられていたようで、Twitter の TL が微妙に交錯しているのが面白かったです :)
SQL と似た感覚
下地となったエントリでも書いたのですが、正規表現と SQL はやはり似ているなあと感じます。 懇親会でも、発表を聞いて頂いた方との会話で話題になりました。
宣言的に書く言語は、記述しやすく理解しやすいのですが、どのように実行されるかはブラックボックスになります。 もちろん、それは利点(How ではなく、What に集中できる)なので、実行エンジンが良しなにやってくれる時は全く持って問題ありません。
ただ、今回のバックトラック爆発のように仕組み上発生しうる挙動に関しては、利用側がそれを意識して書く必要があります。
特に、正規表現はバリデーションで外部から来た値をそのまま扱う場面でよく利用されるため、問題があればすぐに影響を受けることになります。
SQL を書く時にデータベースエンジンの動きをざっくりでも意識するように、正規表現でも意識すると良いですね。
さいごに
今年は、午後最後のセッションで、途中にサイン会などもあったので、t_wada さんのセッションだけ参加しました。
このセッションは素晴らしくて、同じように参加した人からも大絶賛でした。 内容はもちろんのこと、構成や説明など伝え方がとても参考になりました。自分の発表にも取り入れられる要素があったので、今後に生かしていきたいです。
懇親会やその後の N 次会でも、色々な方とお話ができて、楽しい時間でした。毎年そうですが、蒲田の PHP カンファレンスは最高ですね!
運営のみなさん、今年も楽しいイベントをありがとうございました。