トップ «前の日記(2009-03-18) 最新 次の日記(2009-03-20)» 編集

2009-03-19 [長年日記]

_ PHP使いは正規表現についてだけ間違っているわけじゃない

簡易チェックですと本文に言い訳が書いてあってもダメなんだってことが分かってない。(文字が目立つ目立たないは関係ない。)簡易チェックで意味がありませんと title に書いてないと検索した人を間違った情報に呼び寄せちゃうからダメってことが分かってない。正しい情報のように呼び寄せちゃう段階でダメなの。

はっきり言うけど、文字の装飾でどうにかなると思っているなら Web が分かってないよ。

で、実は解決策は簡単で title を

正規表現を使ってメールアドレスかどうか調べるフリをする

にしとけば ok. これで正しい情報を求めている人は寄ってこない。正しい情報なんか求めてないからとにかく簡単に動くコードを見せろやという人はやはり寄ってくるだろう。でもそういう人は目的がそもそも違うんだからいいの。


というかメールアドレスチェックになぜみんなそんな必死だ。

メールアドレスをチェックするシーンというのはいくつかパターンがあるけど、大別して

  • ユーザーの入力したアドレスにちゃんとメールが届かないと困る場合
  • ユーザーの入力したアドレスが間違っていてメールが届かなくてもそれは自己責任て言っちゃえる場合

の二つに分かれる。

前者なら実際にメールを送信して confirm させればいいだけで、別に正規表現で正確に判別できる必要はない。文字列上のチェックでは正しいメールアドレスかどうかは判別できても、実在するかどうかは分からない。*1後者も同じで、メールが届いても届かなくてもいいんなら正確に判別できる必要がそもそもない。これが分かっていればバカな正規表現チェックなんかしない。

もう一つ、良心的で力の足りない開発者は正規表現を使った中途半端なチェックを「じゃあもうちょっと厳密にすればいいのかな」と浅はかに考えてしまう。こういう良心的で力の足りない開発者がいると

実在するメールアドレスを登録できない

というおかしな問題が起きる。実はこれがいちばんタチが悪い。

だから本当はこう指摘すべきなのだ。

メールアドレスを正規表現でチェックする手法そのものが間違いです。チェックできた気になるだけです。

と。

実際にはこんな簡単に割り切れないケースが出てくるのは百も承知よ。でもさ、バータリーがバータリーだって自覚できるようにリードしてあげるのが先輩の役目だろ? ダンコーガイやあっきーなが言いたいことはそういうことだよ。

なんでそういうことを思うかというと、

携帯電話会社仕様のメールアドレスチェック正規表現を JavaScript で作っているところが意外に多い

から。

これ、やめてね。迷惑だから。なんで迷惑なのかはもう上に書いてある。読んで分からなかったら Web 開発やめよう。それがみんなの幸せだ。

Tags: PHP Mail Web

*1 もちろん confirm の仕組みを用意するのは単なる正規表現チェックよりも面倒くさい。