新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2011-07-10

[Perl]Shibuya Perl Mongersテクニカルトーク#16 に行ってきた

7月6日(水)にmixiさんで開催されたShibuya Perl Mongersテクニカルトーク#16に参加してきました。

テーマは正規↑表現↓・・・///

__gfx__サンの発表で、正規表現が正規↑表現↓と発音されていたのを機に、休憩時間のあいだに「正規表現の正しい発音とは何か?」のような議論がアツく繰り広げられていました(おもに弾さんとか)。一歩間違えばgenital expressionsとも捉えられかねないです><!

さて、一応ではありますが、各発表ごとに概要と感想が入り混じったようなものをまとめてみました。
  • Dan the (Irr|R)egular Expressionist [by @dankogai]
    • 「まどか☆マギカ」ネタが随所に散りばめてあった
      • 原作見てないからほんのりとしかわからなかった;;アニメとかあまり見ないので。。。
      • 「すべての魔女を消し去りたい」?なら「s/魔女//g;」!命かけずにコードかけ!
        • これが言いたかっただけじゃないかと・・・w
    • 正規表現の使いすぎに注意
      • /(foo|bar)/は無駄。
        • /(a|b|c|d)/にかかるコストは/[abcd]/の4倍以上
          • ここで言うコストはCPUコストのことでOK?
      • 素手で変態的な正規表現書くくらいなら・・・
        • Regexp::Common使いましょう。
    • Regexp::Assembleをつかうと、複数パターンのRegexのうちどれにマッチしたか検出可能。
      • なんか色々多機能っぽいモジュールなので、PODを熟読すべし
    • 正規表現についてはPerlがルール。
      • つまりperlを通して身につけた正規表現の技は他言語でもだいたい通用する!

  • スペシャルゲスト「正規表現メモ」 [by 木村浩一さん]
    • 「正規表現メモ」は黒歴史。
      • 出版社から過去数度お声がかかったらしいが、結構ボツになった原稿も多数あったのだそう。
        • 当該サイトは初見だったけど、非常によくまとめられており、regexを深く掘り下げるに十分な教科書となり得ると思います。
    • [=e=]って何にマッチするか知ってますか?
      • "e"のほか、ёなどにもマッチ。
        • tclの正規表現です!
          • マイナーすぎてわからんとです!><
    • JPerl5.6
      • 幻?!
        • Perl5.6で追加された戻り読みによって、JPerl5.6は幻の存在となった。
    • 3種類の正規表現

  • Hello, re::engine! [by __gfx__]
    • この人のイントネーション「正規↑表現↓」が後々いろんなところに影響をもたらす。
    • Perlの正規↑表現↓エンジンはpluggable
    • 素数判定の正規↑表現↓
    • そしてトーク中にcommit
      • git commit -m "Update"
      • ちょ、お行儀www
      • 一同爆笑w
    • re::engine::OnigurumaはバックトラックしてもSEGVが発生しない
    • re::engine::boostは遅すぎて使いもんにならない
      • 正規表現のデバッグになら使えそうという声も。

  • 正規表現の限界 [by sinya8282]
    • 正規表現愛
    • いろいろなものを正規表現であらわしたい癖がある
    • 魔女ネタに憧れ・・・
    • とある否定の正規表現
      • 正規表現の否定は難しい
        • というか変態的
      • DFAにしてしまえば否定も簡単ですよ!
        • DFAの状態遷移図をスライドに載せまくり
          • DFA祭りではないですねw
          • 「皆さんは正規表現がみたいんですよね?」
        • regex->NFA->DFA->否定のDFA->GNFA->否定の正規表現
          • not /abc/ = /((a?|ab)|((([^a]|a[^b])|ab[^c])|abc.).*)/
            • ここでdankogaiによるキャプチャ使用についてのツッコミ。
    • とある再帰の正規表現
      • \Rをつかった再帰処理
        • 140文字以内の四則演算
          • 69回が再帰上限。
          • 約40ゼタ文字に相当。。。
            • あたまいたいです><
    そしてLT。
    • 僕の考えた最強の正規表現エンジン [by sinya8282]
      • とにかく速度重視!
      • 正規表現ジェネレータRegen
        • Xbyakで動的に最適化されたコードを生成

    • Plaggerで覚えたPerlの正規表現 [by yusukebe]
      • ヘアースタイル(モヒカン)は某有名人のオマージュ
      • エロサイト収集用YAMLの数々に正規表現
        • そういえばいまどきYAMLは無しだよなあと思いながら聞いていた。
          • Plaggerって5年くらい前のプロダクトだし仕方ない

    • Regexp::Assembleで正規表現を作るとか [by yappo]
      • 正規↑表現↓のイントネーションに苦戦した結果、本題に入る前に銅鑼。
        • ホントはGroongaの話をするつもりだったらしい。。。
        • 正規↑表現↓の被害を露骨に食らった例

    • 再帰的正規表現 [by takesako]
      • 再帰的正規表現を駆使してJSON Validatorを実装。
        • (?R)や?(DEFINE)がでてきた
        • 今回のLTでもっとも正統派???

    • 僕と契約して、自己言及コードになってよ! [by sugyan]
      • quine(自分のソースそのものを出力するだけのプログラム)がQBを出力し、それをさらにPerlにくわせてやるとQBがいろいろ喋り捲るというもの
        • 厳密に言うと出力->入力ごとに異なる結果が出力されるので、quineとはいえない。
      • もともとRubyで実装されたものをPerlに移植。

    • いろいろなものを正規に表現してみよう [by nipotan]
      • RegEx
        • 正規表現共有サイト
          • 非常にすばらしいコンセプト。
          • しかし、残念な正規表現が多い
      • 郵便番号、電話番号に*正しく*マッチングする正規表現
        • 電話番号についてはNumber::Phone::JPで
          • 正規表現そのものではえらく長大なものになる
          • 素手で書くのは狂気の沙汰なので、モジュール化
        • 郵便番号向けにNumber::ZipCode::JPをshipped
          • この辺のソースを見ればわかると思いますが、まさに正規↑表現↓の狂気に取り憑かれたようなコード。
          • MySQLに郵便番号マスタを持たせるより多少早いですよ!!

    ちなみに、直ぐ隣の大きい部屋でmixiさんのご好意で開かれた懇親会では、jcode.pl開発者の歌代和正氏による乾杯のご発声がありました。(かなり豪華な食事が出ました!mixi++)
    そして、なぜか同じテーブルに集うHachioji.pmの面々。ここまでくればある種、異様な集団ですねw


    歌代氏。あのjcode.pl開発者がついにEncode.pmを使って一言。
    「いいですねぇ、あれ。使いやすいです!」

    閉会後、会場に入れなかったmakamakaさんがビルの前で途方にくれていた(正しくはAcme大全2011を販売していた)ので、Hachioji.pmのメンバーが拍手で労ったのでした。
    最後にはmakamakaさんの胃袋を満たすべく、ミニHachioji.pmを急遽開催(といっても、ただ飲み食いしに行っただけですけど)。1日に2つのpmに参加するという無茶苦茶をやってのけたのでした。たのしかったー!!

    mixiうちわについて

    すでにshinpei_cmykさんが当日のうちに解説記事をかいてくれています。
    こういう書き方もできるのがperlの面白いところだと僕は思います。

    0 件のコメント: