我々は公共性の進化に見あった速度で進化しているか

まつもとさんのこのエントリから凄い騒ぎになっているようだけど、ここで一番重要なことは、PHPRubyがどうのこうのでなくて

Webアプリケーションをなめるな

こっちの方だと思う。

「初心者にやさしい言語(技術、方法論)の開発」→「本質的な問題の隠蔽と関係者の人口増加の同時進行」→「問題の拡散」というパターンはこれまで何度も繰り返されてきたことだ。

たとえば、VisualBasicAccessExcelのユーザが増えはじめた時は、「DBをなめるな」と私は思った。データベースというものは、しっかり業務分析をした上で、論理設計と物理設計をきちんとしないと、最後には破綻する。イージーなツールにも使い道はあるけど、明かに想定を超えた使い方で業務ソフトを作ってしまい、つぎはぎだらけになって収拾がつかなくなる例を何度も見てきた。

でも、「DBをなめるな」と「Webアプリケーションをなめるな」には重要な違いがある。DBをなめて困るのはなめた本人だけど、WEBをなめて困るのは本人だけではない。

会社の中で動くソフトウエアの利害関係者は、その会社の関係者だけだ。だから、その人たちが、コストとメリットのバランスを判断すればいい。適切な判断の為には、それだけで金がいるけど、その金をかけるのがもったいなかったら、金をケチって不適切な判断をして自滅すればいい。それは本人の自由である。

でも、WEBアプリに脆弱性があったら、関係者だけでなく世界中に迷惑がかかる。WEBアプリを作る時には自滅する自由はない。

WEBアプリがクラックされたら、そのサイトのデータが盗まれたり書き換えられたりするだけではなくて、そこを踏み台にして、他のサイトを攻撃することが可能になる。

つまり、WEBアプリは公共性に露出している、ということだ。

そこが、これまで繰り返されてきた「初心者問題」と違う。「自分は初心者だし、これはたいしたシステムではないので失敗してもいいんです」という言い分が通用しない世界だ。

だから、むしろこれは、発注者やユーザの側を啓蒙すべき問題だと思う。WEBアプリを発注する側に立つなら、それが一定の公共財産であるという認識が必要だ。「セキュリティ面で手を抜くと自分が困るだけではなくて、みんなに迷惑がかかる」ということを理解すべきだ。

そして、ソフトウエア開発者は、そういう理想的な発注者を想定して自分のポジションを吟味すべきだと思う。セキュリティ面で失敗しないだけの技術を簡単に覚えられる言語は何なのか、セキュリティ面を考慮した上で簡単に安く開発できる言語はなんなのか、セキュリティ面だけはきちんとわかっていて他はそこそこの技術者を大量にタイムリーに手配できる言語はなんなのか。

もちろん、現状では発注者は理想的とは言えないけど、そこがわかってない発注者は結局世界に迷惑をかけるので、できる範囲で啓蒙していくべきだと思う。

そして、この「啓蒙」において最も困難なことは、技術的な話ではなくて、「WEBの中では世界が密接につながっている」ということを理解してもらうことである。

WEBの外では、自分が世界に迷惑をかけるなんてことは、やろうと思ってもできることではない。世界に迷惑をかけることができる、そのポジションにつくには、相当な才能と努力と時間が必要だ。

でも、100Mの回線につながったサーバを1週間くらい踏み台に使われたら、どれだけのスパムやウィルスをばらまくことができるのか。そういう踏み台になり得るWEBアプリを開発することは、どんな初心者プログラマーにも可能なことである。

要するにWEBの中では「公共性」というものが、凄まじい勢いで変化し、進化しているのだ。

これは、昨今の偽装問題と似ているような気がする。いろいろな場面で「内々の話」というのが通じなくなってきている。筋を通して誰から見られても困らないようにしないと簡単に炎上するケースが増えている。

我々は、その「公共性の進化」に見当った速度で進化しているだろうか。

一つ言えるのは、私は学びたい、のではなく、学び続けたい、ということだ。だから学び続けやすい言語に魅力を感じる。PerlRubyも、最近ではJavaScriptもそうだ。C/C++Lisp/Schemeは一生ものの師という感じがする。Haskellはこの両方の師の薫陶を受けた「若い師」で、いろいろなことを学び直させてもらっている。しかし、PHPには「教官」までしか感じない。それが多分、私がPHPに共感できない一番の理由なのだろう。

だから、この指摘は重要だ。

プログラミング言語は、そのコミュニティとともに進化し続けてこそ、公共的な役割を果たせると思う。そういう意味で「学び続けたい人」にとって魅力的な言語が長い目で見ればセキュアな言語であるのではないか。

(追記)

私がここで言っている「啓蒙」が進んだら、PHPという言語自体の地位は低下するけど、今現在、PHPをしっかりやっている人たちの地位は浮上すると思う。というかそうなってほしい。

という文を書いてから推敲の時に削ったのけど(あまりPHPのことをよく知らないので)、こんなトラックバックをいただいたので復活させることにした。

コマンドラインからのCUIツールとして始めたのは、あながち間違いではなかった、と思う。

大人の事情により、まだWebアプリには(本格的には)立ち入りません。

大人の事情、それはHTTP, Apache, Webアプリならではのセキュリティ。Part2でもその片鱗に触りましたが、Webアプリは巷間のPHP入門書が唄うほど簡単な代物ではありません。