YAPC::Kansaiでのメールフォームのリファクタリングは僕ならどう書くかな
3月4日はYAPC::Kansaiが新大阪でありましたね。熱気と楽しみに盛り上がっていましたね!!! 今週中には、自分のプレゼンテーションをアップしようと思っています。
ところで弾さんが実演でメールフォームのリファクタリングやってましたけど、僕ならどう書くかなぁって考えてました。
メール送信はMIME::LiteかEmail::Senderで置き換える
メール送信はCPANモジュールを使ってMIME::LiteかEmail::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年耐えられるようになると思うよ。