Perl入門ゼミ

テキスト処理、Linuxサーバー管理、Web開発ならPerl

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年耐えられるようになると思うよ。

  • Perlとはテキスト処理の記述性とパフォーマンスに優れ、正規表現が言語に組み込まれているプログラミング言語です。
  • Linuxサーバーでのフィルタリングプログラム、複数行の文字列を処理、ファイル内容の検索・置換などが得意
  • Perlはgitopensslなど広く普及したUnix/Linuxミドルウェアの補助ツールとして採用実績あり。後方互換性とポータビリティの高さがひとつの理由と推測。
  • 大量のテキストを扱うWeb開発も得意。ロングテールSEOを意識したWebサイト、アドテクやソーシャルゲームでの50ms以内のJSONの生成など。