YAPC::Kansaiでのメールフォームのリファクタリングは僕ならどう書くかな

3月4日はYAPC::Kansaiが新大阪でありましたね。熱気と楽しみに盛り上がっていましたね!!! 今週中には、自分のプレゼンテーションをアップしようと思っています。

ところで弾さんが実演でメールフォームのリファクタリングやってましたけど、僕ならどう書くかなぁって考えてました。

メール送信はMIME::LiteかEmail::Senderで置き換える

メール送信はCPANモジュールを使ってMIME::LiteEmail::Senderで置き換えるのがいいんじゃないかな。

どちらもsendmailを簡単に使うためのラッパーになっているよ。それ以外の送信方法もあるけど、デフォルトはsendmailを使う。

MIME::Liteは開発が終わっちゃたんだけど、ちょっと使う分には今でもやっぱりこれが便利ね。Eメールモジュール開発コミュニティの意向にそうのであれば、Email::Senderを使うのがいいんじゃないかな。

メールのバリデーションはEmail::Valid::Loose

メールのバリデーションは簡単にやるなら正規表現で「アスキー文字@アスキー文字」っていう正規表現を書くと思う。

CPANモジュールを使ってやるならEmail::Valid::Looseがいいんじゃないかな。日本の携帯電話のEmailは、メールの仕様を一部満たしていないようで、このモジュールはそれに対応している。

本当に正しいメールをフォームの時点で判定するよりは、ゆるやかに受け入れておいて、そのあとにバッチ処理とかで、無効なメールを処理するなんて方法もよいかもね。

送信フォームの部分はMojoliciousのテンプレートで

cgi-lib.plを使って、HTMLをprintして送るというのはちょっと辛いものがあるね。HTMLはMojoliciouのテンプレートで書いて、CGI対応させるとよい。MojoliciousはCGIに対応しているから、CGIフォームの書き換えがそのままできるよ。

CGIの出力フォーマットに合うデータをMojoliciousが書き出してくれる。

10年耐えられるメールフォームになる

本編では3日くらいしか耐えられなさそうだったけど、この三つをやると10年耐えられるようになると思うよ。