カテゴリー
技術

phpspotの人は正規表現について語らないほうがいいのでは

「実用的なPHP用の正規表現x8」というphpspot開発日誌という記事で、 8 Practical PHP Regular Expressions – Web devlopment blogという、今日de […]

「実用的なPHP用の正規表現x8」というphpspot開発日誌という記事で、

8 Practical PHP Regular Expressions – Web devlopment blogという、今日del.icio.us/popularに出ていた記事の紹介がされている。このサイトの記事はいつもそうだけど、はてなブックマークでも人気で、既に50名を越えるユーザにブックマークされているようだ

1 メールアドレスチェック
$string = "first.last@domain.co.uk";
if (preg_match(
'/^[^0-9][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[@][a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)*[.][a-zA-Z]{2,4}$/',
$string)) {
echo "example 3 successful.";
} 

これは、”example@so-net.ne.jp”とか”example+tracer@gmail.com”をメールアドレスではないと判定する。この簡単さだと、メールアドレスじゃないものを通してしまう取りこぼしも多いはず。

2 IPアドレス
$string = "255.255.255.0";
if (preg_match(
'/^(([0-2]*[0-9]+[0-9]+).([0-2]*[0-9]+[0-9]+).([0-2]*[0-9]+[0-9]+).([0-2]*[0-9]+[0-9]+))$/',
$string)) {
echo "example 5 successful.";
} 

これなどは、サンプルの”255.255.255.0″が既に動かない。どういうこと?

さらに言うと、以下のようなケースも通してくれる。

  • “999999999999.255.255.10”
  • “000.255.255.10”
  • “11111111111.22222222222.33333333.44444444”

チェックになってない…

この人、以前にも正規表現のいいかげんな記事を書いていろいろ突っ込まれている。

メールアドレスのチェックってそんな簡単なものじゃないはず。

突っ込まれた肝心の記事は見つからなくなっている。でも依然として「PHP 正規表現」で検索すると当該のURLが上位に出てくるので影響は大きい。

これは提案なんだけど、突っ込まれたらちゃんと勉強しなおして正しい記事にするか、手に負えないと思ったらせめてより正確な記事を紹介するのがみんなのためなんじゃないかな。

Diggのトップページやdel.icio.us/popularで表示されたページの概要を訳しているだけなんだから、せめて自分で確かめてから紹介しようよ。僕も正規表現は苦手だけど、今回のはコピーして動かすだけでおかしいとわかるじゃない。(得意な人なら動かさなくてもわかりそうだが)

まあ、このエントリもphpspotメソッドで対処されそうな気もするけど。

[参考]

phpspotメソッド

[2007.10.22 追記]

phpspotの件の続報

phpspotの件のまとめ

「phpspotの人は正規表現について語らないほうがいいのでは」への28件の返信

IPアドレスのはドットで区切られていなくてもマッチするというおそろしさ。

それにしても、昔からこういういい加減な記事のおかげで、誤った知識が流布する例というのは後を絶ちませんね。困ったものです。

最初に書いてしまう人がいるのも問題ですが、それ以上に翻訳したり紹介する人がちゃんと確かめてからにしてくれれば、被害は少なくて済むはずなのに。

phpspotメソッドの存在忘れていました(苦笑
あのPukiWiki forkなCMSにあるコンテンツのサンプルは残念なクオリティのものも少なくないですね

IPアドレスのチェックはリンクしてある原文とも違いますねえ。
何でそのままコピペしてないんでしょう。

人気のあるサイトは叩かれやすい、のが現実。まぁ影響力があるのでしょうがないですが。

たしかに、間違いが広まるのは良いことではないですが、人間誰しもが間違えるわけで、間違いは絶対広めるなということなら、誰もブログなんか書けません。

今回のように間違った情報を取捨選択するのも閲覧者側の能力の一つだと思います。そもそも情報をすべて鵜呑みにするほうが問題だと思います。

有償で配信している情報サイトなどなら別ですが、一個人の無償のサイトなんですから、もうすこし大目に見てあげてもいいんじゃないでしょうか。

phpspotメソッドが有効になるのは、閲覧者がいてこそで、管理人の責任ではないでしょう。それに日々このブログから情報を得て利益(お金じゃなく)を得ている人も多いはず。

なんか、こういうちょっとした汚点のあら探しで叩くのは好きじゃないですね。

こうやって情報の間違いを指摘していただけるのはありがたいことですけども。

あら探しと形容するほどマシではないですね。
汚点が多すぎる

> 人気のあるサイトは叩かれやすい、のが現実。まぁ影響力があるのでしょうがないですが。

そのような言い方をされてしまうと、一般のブログではますます「情報の間違いの指摘」ができなくなるように思います。

幸い、このブログもsiさんの言われるところの「人気ブログ」に入っているようなので(各種ランキングで、ですよ。自分で主張するつもりはないです)、そういう言われ方はsiさん以外にはされてないですが、もしそうでなければ、「アクセス稼ぎのために人気ブログを叩いている」とか言い出す人はいたでしょうね。

間違うな、という主張は一切してないので、そのあたりをもう一度読んでみていただけると嬉しいです。

> なんか、こういうちょっとした汚点のあら探しで叩くのは好きじゃないですね。
>
> こうやって情報の間違いを指摘していただけるのはありがたいことですけども。

siさんて、phpspot開発日誌を書かれている方ですか?

そもそも…
phpspotメソッドなんて揶揄されるような、対話を拒絶する対応が問題なのでは…。

まずは正確に書くことが前提で、修正すべきところは修正する、なおした過程もできるだけ残す…その経緯が有用な情報になるということ、それにつきると思います。

「速くたくさん間違えて速く直す」これをオープンに対話を続けながら回転させる。発信する側もそれを受け取る側も参加する…理想ですけれど、そういう風にありたいですね。

いろいろ勉強になります。いつもありがとうございます。

> なんか、こういうちょっとした汚点のあら探しで叩くのは好きじゃないですね。

これだけとんでもない間違いに対する適切な指摘を「ちょっとした汚点」の「あら探し」と言ってしまうのはどうかと思いますね。日本語は正しく使いましょう。

あちらの該当記事が訂正されていますが、それによるとPHPSPOTの人はどうやら「簡単な目視のチェックのみで動作確認を行わなかった」そうです。こんな基本的なこともできないのなら、正規表現について語らないほうがいいというよりも、プログラミングについて語らないほうがいいとおもいました。

PHPDeveloper.org のような寛容さが書く方にも読む方にも求められていると思いますが、問題は phpspot開発日誌にコメント機能が無いことでしょうか。それが状況を無駄に大きくしている気がします。
“Comments on the post have helped even more, finding places where they might break or not catch all possibilities.”
http://www.phpdeveloper.org/news/8855

私はあのサイトの恩恵を受けているので、あのくらいのミスは特に気に掛かりませんけどね。

分かる人にはあんな感じで書いててもまともな検証フロー行ってれば大体分かるし。あとから補足修正する必要もないでしょ。

そんなことよりも、あなたのような余計なおせっかいは傍から見てて非常に腹が立ちます。他人の汚点探しもいいですが、あなた自身も自分が書いた内容を本当に実践できているか見直すべきではないでしょうか?

>これは、”example@so-net.ne.jp”とか”example+tracer@gmail.com”をメールアドレスではないと判定する。この簡単さだと、メールアドレスじゃないものを通してしまう取りこぼしも多いはず。

>これなどは、サンプルの”255.255.255.0″が既に動かない。どういうこと?

>チェックになってない…

上記の用に指摘できるのならば、あなたのコードを示しながら解説したら?役に立たない、間違ったものも情報ですから。。。
ちなみにコメントのメールチェックできてませんよ。

これは自分で未だに不安なのですが、PHP5 では namespace (名前空間)が実装されているバージョンがあるのでしょうか。

phpspotさんで普通に紹介されているのでずーーーーぅっと長いこと、使えるものだと思っていました。
(業務ではずっとPHP4で、また自分の趣味ではPerl,Rubyしか触っていなかったし・・・)

いつまでも下記記事がそのままなので、実は見守っています。
( http://phpspot.net/php/php5_topics.html )

#もし、「無い」と自信が持てればメールもするんですが・・・

こういう人たちに支えられて、テキトーにちょいちょい書いてみましたみたいな記事を書いて検証なしに載せるようになっちゃったんですかね… 怖い怖い。他山の石にしないとねw

> 普通の人さん

コメントのメールアドレスのチェックはこのブログシステムの問題でしょうね。そのバグのソースを公開して利用を薦めてるわけでもないので今回の問題とは無関係ではないでしょうか。

> 以前騙された?人

現段階では、次のPHP5.3で導入される可能性が高い、というところではないでしょうか。詳しくはphp.netのメーリングリストなどをウォッチしたほうがいいかと思いますが。

ですので、現行バージョンでは使えない、が正答となります。ただ、示されたURLの解説に関しては、5の最初のあたりに一度導入されそうになったことがあり、そのときの情報で予想的に解説されていたのではないでしょうか。古い情報とは言えますが、ネームスペース仕様の再浮上で実装がそちらに追いついてしまう?

以前計画されたときの仕様と次予定されている仕様がまったく同じかは僕は追ってないので、そこはやはりphp.netのメーリングリストのログを検索されることをおすすめします。

私の個人的な意見ですが、秋元さんのような指摘は非常にみんなの役に立つとは思います。
特にこのような技術に関する知識・ノウハウに関する間違いは、むしろ粗探しするくらいの細かさで指摘するのが丁度いいとさえ思います。

ただ、その指摘の仕方・言葉の使い方などにちょっと問題があるんじゃないでしょうか?
なんていうか・・・上手く言えませんが、とにかく「イヤミ」な感じがしますよ。

このエントリの件名、そして本文、あらゆるところにイヤミで悪辣な感情が見え隠れしています(書いている秋元さんご本人にそういった自覚があるかどうかは分かりませんが)。
なんだかチクチク・ネチネチと、いかにもオタク系の人が他人を攻撃するときの雰囲気があちこちに滲み出ていて醜い…と感じるのは私だけでしょうか。

こういうのは読んでいてあまり気持ちのいいものではありません。
イヤミ風な物言いとか攻撃的な態度でなく、普通に淡々と間違いだけを指摘することは出来ないのでしょうか? わざわざ「phpspotの人は正規表現について語らないほうがいいのでは」などと言う必要があるのでしょうか。

> じだそさん

文章が多少きつくなっているのはそのとおりだと思います。

過去にいろいろな人が間違いの指摘をブログで(というのはトラックバックやコメントがなく、メールでは反応が無いことが多いものですから。それぞれのブログの人の主張ですが)されていて、それらについても強い調子のものにだけは反応があった、という経緯があったものですから。

ですので、今回の文章に関しては、自分ではこう書く必要があった、と思っています。今回のエントリの文章を見て、僕のことを醜いと感じられる方がいるのであれば、それについても引き受ける覚悟です。

今さらですが、秋元さんの他のエントリも読みました。
この件について複数のエントリを書かれていたんですね。

で、それらを読んで思った感想です↓

たしかに、技術的な間違いがあれば、それを誰かが(たとえば秋元さんのように)指摘してくれれば、それは我々閲覧者からすれば非常にありがたいことです。特に、自分で記事の内容を精査できないレベルの人間(私もその一部だと思います)にとっては、これは特に重要なことです。私も間違った情報を見つけると、なんだよコレ…と思うことは多々あります。

指摘を元に、本家の人(この場合、phpspotの人)が元の記事を修正してくれれば、なお結構だと思います。

秋元さんをはじめ、間違いに気づいて指摘した人からしてみれば、その指摘を本家から無視されたり、あるいは自分の指摘には触れずにこっそり修正などしていれば、まあ腹が立つであろうことは想像に難くありません。

しかし、本家の方からしてみれば、それら指摘に応える義務はないと思います。にも関わらず、秋元さんの意見を要約しますと「俺が強い口調で言って、相手の態度を改めさせてやろう」という信念が伝わってきます。

でもそれは、秋元さんに何の権利があってそこまでやるんでしょうか?

どうやら秋元さんはじめ、「指摘派」の人々は、使命感やら正義感やらに燃えている傾向を感じます。しかしこういった強い正義感というのは、得てして間違った方向に狂信的に直進しやすいのが世の慣わしです。絶対的な正義など無いはずなのに、「正義感」の強い人たちは自分の正義に反する人をやたら攻撃したがります(私には、秋元さんもとても「正義感」が強いお方に見えます)。

「間違っているものは俺が正してやるしかない」という強迫観念にも似た思想を感じます。
己の使命感に燃えるのは結構なことですが、それが必ずしも絶対的な正義ではないことを自覚し、相手に押し付けたりすべきではないと思うのですが、いかがでしょうか。

また、「強い調子で指摘をすること」と、「相手を卑下したり貶めるような口調になること」とは必ずしもイコールではないと思います。すなわち、技術的な間違いについてのみ淡々と強烈に事実だけ指摘すればいいのであって、相手の行動とか人格まで攻撃(たとえば「●●は正規表現について語るな」とか)する必要はないと思うのですが・・・。

なるほど。「語らないほうがいいのでは」と書いてあるのを『たとえば「●●は正規表現について語るな」とか』のように、ソフトに書き換えながら誘導していくやりかたの方が、字面だけを見て「腰の低い物言いをしている人は良い人で、たぶん正しくもあるのではないか」と考えるような人には響くかもしれないですね。勉強になります。

人格を攻撃したつもりはないです。指摘された人に対して答えを強要したこともないですよ。自分が正しいと思えば無視するのもありなのでは。

あと絶対的な正義はない、というのはまったくもって同意です。

いろいろおっしゃっていますが、要するにまとめると次のように集約されますね。

つまり秋元さんという人は、他人のことは手厳しく批判するクセに、逆に自分が批判を受けると全く聞く耳を持たない人なんですね。あなたの「2007年10月22日 11:31」のコメントに見られるような意図的な馬耳東風っぷりは、もはやギャグでやってるのかな、とも思えます。

phpspotの人に対して、「批判を受け止めて修正しろ、そのような態度を改めろ」という旨の主張をぶつけているのに、ご自身はそういうことが実践出来ないとは、全く不思議なお方です。

「人格を攻撃したつもりはない」「答えを強要したこともない」ですか、なるほどなるほど。それだけ無自覚でいられたら、さぞかし幸せでしょうし、他人を思う存分攻撃できる性格になるでしょうね。私もあなたのように無慈悲で攻撃的になれたら、どれだけ楽な人生になるでしょうか。羨ましいです。

ちなみに秋元さんがこのような批判活動を行って、いったい誰が得をして誰が損をしたのでしょう? あるいは、もしこうした批判を行わなかったとしたら、誰が得をして誰が損をしたでしょうか? そしてこうした活動を行う必然性と正当性はどこにあって、誰がそれを担保しえたのでしょうか? 秋元さんがそこまで考えて批判活動を行ったのかどうか、私には想像もつきませんが。

私は先のコメントで、「強い正義感というのは、得てして間違った方向に狂信的に直進しやすい」と書きました。まさに秋元さんの猪突猛進ぶり、自分を省みずに他人攻撃をし続ける狂信者ぶりを見て、秋元さんほど素晴らしい「正義のヒーロー」は他にいないなと改めて思いました。「自分だけは絶対無謬で正しいのだ」の信念を貫いている秋元さんには敬服いたします。憧れちゃいます。

最後に、このような素敵な方を抱えているサイボウズさんは、温かくて立派な企業だなぁと思います。

じだそさんの批判が間違ってると思えばこちら側を修正する理由はないでしょう? phpspotの人は僕の批判した内容が間違ってるとおっしゃいましたか?

じだそさんご自身の主張からみてじだそさんご自身のコメントはどうか、考えてみてはどうでしょう?

ここまで我田引水で反省しない人だったとはガッカリだ。
各論指摘は無視ですかそうですか。
それとも論破されて反論できなかったのかしら?

とにかく偉そうに他人を批判する資格はないですな。

こちらの各論指摘を最初に無視されたのはじだそさんですが、僕は反論が必要なところには反論していますよ。

じだそさんの「個人的な考え」や「想像もつかない」ことに関しては特に反論することもありません。「上手く言え」るようになったら言ってください。

人格攻撃をされているのもじだそさんですよね? ご自身のコメントの中から、議論に無関係に僕のことを貶めている単語を探してみてくださいよ。たくさん見つかると思うのですけれど。

それにしても、旗色が悪くなると相手の所属する会社名を持ち出して恫喝するような人に議論の態度うんぬんは言われたくないですね。ご自分で恥ずかしくないのですか?

↑の文章にも議論とは関係のない言葉がふんだんに使われています。

他にも言いたいことは山ほどあるけど
秋山必至だな(笑)
人の振り見て我が振り直さない秋山氏こそ何も語らないほうがいいのでは。

コメントは受け付けていません。