読者です 読者をやめる 読者になる 読者になる

姫路IT系勉強会で発表してきました(正規表現)

今回のスライドは発表前日の20:00頃だったかから作り始め,当日の7:00に完成しました.
今回,なんか深夜テンションで入門のはずがDFAとかNFAとか言い出してしまいどうしてこうなったんだ感.
結局対象者が不透明になってしまったなあ……と.反省.

この反省を活かして姫路IT系勉強会から派生として姫路正規表現勉強会をやろうと思ってます.大体全5回ぐらい?最後に予定と言うか草案とかを書いておきます.
ただ発表者が僕以外に出るんだろうか,というかなんというか.うぬぬ
もしくは神戸あたりで詳説 正規表現読書会とかもありだろうか,とか考えています.


草案ゆえ少々固めの文章ですが,実際はもっとゆったりとした雰囲気でやりたいと思っています.
姫路正規表現勉強会について
日程:第1土曜日を予定.第1回は2013年12月か2014年2月.次の勉強会は勉強会の来月もしくは再来月にやる形にする?
時間:13:30〜17:00,14:00〜17:30等.昼過ぎから3時間半程度行う.
人数:最大10人程度.4人程度が最小実行人数……かな?

場所:未定.姫路駅周辺で行う.
場所に関しての条件.
最低限:プロジェクターが貸し出し可能,10人程度収容できる
できれば:姫路駅から徒歩10分強(姫路市民会館まで11分),ホワイトボードが使用可能.

回数:全3回〜全5回程度.進行状況,どこまでやるかによって判断
目的:正規表現の動作原理,内部実装の詳細な理解.
対象:正規表現の基礎知識を有する者.簡単なメタ文字とかの最低限の知識程度で良い.
持物:オライリー・ジャパン社の詳説 正規表現があれば良い,という程度.
行程:有限オートマトン正規表現の動作原理.正規表現のパフォーマンス評価.何らかのvalidatorの動作解説.正規表現エンジンの製作.正規表現エンジンの最適化.
進行:途中途中の質問は全く構わない,むしろ励行する形式.疑問点等は質問によってその場で解消.すぐに解決しなければ話し合い等.参加者の確実且つ正確な理解を目標とする.途中の休憩は少々長めに取る.

進行の詳細
有限オートマトン.基礎から学ぶ.また,数学的な定義の話などもし,形からの理解だけでなく定義からしっかりと理解する.正規表現からDFAへの変換の過程等も学ぶ.
正規表現の動作原理.各メタ文字等の動作原理からNFA,DFAのエンジンの違いなども見る.
正規表現のパフォーマンス評価.DFAとNFAでの評価もするしNFAでも'[0123456789]','[0-9]','(0|1|2|3|4|5|6|7|8|9)'などの正規表現についての各パフォーマンスを見る.
何らかのvalidatorの動作解説.例えば郵便番号のような形式にマッチする正規表現は'[0-9]{3}-[0-9]{4}'等であるが,例えば000-から始まるものは使われていない.ちゃんと使われている郵便番号のみに対応する正規表現の動作解説等.
正規表現エンジンの製作.まずは.と*からなる正規表現エンジンを作り,更に拡張していきgrepと同程度のものまで製作する.
正規表現エンジンの最適化.敢えて劣悪な書き方をし,正規表現エンジンの最適化の重要性について学ぶ.また,最適化の手法の解説.