いけがみを召喚するには、出現予定を参考にしてください。三週間前までにメールをくだされば、日程を追加するなどしてスケジュールに組み込むことができるかもしれません。勉強会や個人的な会合、中途採用面接などに応じます。
去年のクリスマスに Pawel Karwowski からありがたいメールが来て、Pawel がメンテナに加わってくれました。0.1.8 が 155 KB, 0.1.9 が 1.72 MB です。どんだけがんばってくれたか、Pawel には感謝でいっぱいです。
僕自身は Ming/Ruby に愛想をつかしています。今後は Pawel とその後の仲間たちにおまかせしようと思っています。ChangeLog 読んだら "Kazuki" さんが重要な仕事をしてくださったみたいで、 Kazuki さんにも感謝しています。って Kazuki さんって誰?
もともと Ming の Ruby ラッパを作ろうと思ったのは、博士後期課程の研究がうまくいかなかったときの逃避行動でした。当時、SWF は出来たてほやほやのテクノロジで将来を感じさせるものでした。SWF player にはものすごい脆弱性がいくつもあって、こりゃ駄目だとは思ったけど、ブラウザでいろいろ動くのは楽しかったです。JavaScript は当時はへぼかった。
きっかけは、高林哲さんの zphoto: Flashベースのフォトアルバムを作るツールです。Unix Magazine: 横着プログラミング第7回でさとるさんが書いているように、当時、Ming の Ruby バインディングは作ってくれた人がいたんだけど、うまく動かなかった。これはバインディングを作ってくれた人が悪いんじゃなくて、SWIGの仕様がころころ変わっていたからなんである。で、SWIG の仕様がころころ変わっていたのは、R***の仕様がころころ変わっていたからでもある。当時の SWIG のメンテナはメジャーな言語へのラッパーに集中していて、マイナーな言語への対応は遅れがちであった。
Ming の Ruby ラッパを作ろうと決心したとき、僕には二つの選択肢があった:(1) SWIG の Ruby メンテナに加わって、ついでに Ming の Ruby メンテナにも加わる (2) Ming の Ruby ラッパを SWIG 抜きで作る。
僕が幸運だったのは、オープンソース万歳主義じゃなかったことにある。もしオープンソースをより安定させ、普及することにこだわっていたら、SWIG の Ruby メンテナになっただろうし、Ming の Ruby メンテナになっていただろうし、もしかしたら Ruby にもささやかな貢献(と、Ruby 界の親切な方々からのダメだしをもらう)をし続けることになっただろう。その結果、僕は自分を見失って大学を卒業できなかったことは想像に難くない。Linux や Windows などのインストーラも作っていただろう。恐ろしいことだ。
僕は、僕自身、Ming の Ruby ラッパを作ることが現実逃避行動であることを理解していたつもりだ。だから、ソースコードは書き捨てることにした。Haskell を学んだ今なら、Ming の C ソースコードから Ruby 拡張ライブラリのソースコードを自動生成するメタプログラミングをしたはずだ。でも、現実逃避だから、そこまで深入りすることはしなかった。だいたい、それは SWIG がやっていたことで、それは失敗に終わっていたことなのだ。SWIG の目指した手法は極めてまっとうだが、当時の Ruby には適用してはいけない方法だった。その代わりに、ただただコピーとペーストを繰り返す「駄目プログラマ」になりきることで、研究がうまくいかないことの鬱憤を晴らした。コーディングに頭を使うことはしたくなかった。
Ming の日本語化に貢献してくれた harpy さんと、Ming/Ruby のデバグにつきあってくれた(当時)京大の片山先生には感謝している。僕は現実逃避を心の底から楽しんだ。毎日、片山先生とメールのやりとりをした。C による Ruby の拡張ライブラリはすぐに bus error で死ぬから、gdb でひたすら追っかけ回す経験値が溜った。ついでに、Ruby の(特に GC 回り)の実装をよく読んだ。そのせいで GC の論文も読んだ。あやうく Ruby の GC を改良する仕事を始めるところだった。本当にそうしなくてよかった。
Ming/Ruby は一冊の本を産み出したようだ。アニメーションで見る線形代数というページがそれである。今も Ruby に貢献しているオーム社から発売されています!オーム社です!なお、僕の手元には残念ながら『プログラミングのための線形代数』という本がないです。線形代数はもう十分にわかっていたので、買う必要がありませんでした。でも、視覚化するという取組みはとても斬新である。こういう絵を数学屋は頭で描いているので、皆も描けばいいと思う。
さて、そろそろ昔話から本題に移ろう。Zed の "Rails Is A Ghetto"を読みました。僕も現状のRoR回りで大喜びしている人は大貧民だと思っています。大貧民は貧民と大貧民のポジションを行き来するゲームです。大富豪はゲームに参加しません。手持ちのカードをひたすら切るだけです。他の人は大富豪が出すカードをじっと眺めているだけです。パス、パス、パス...
Zed と僕はいろいろな意味で違う。Zed のほうがずっとプログラミングのセンスがあるし、なにより作ったものがすごい。Zed は不幸にして MBA を取得することができず、僕は、両親と日本育英会のサポート(1000万円の借金!)のおかげで卒業できた。Zed は Mongrel に注力し、僕は Ming/Ruby を見捨てた。僕の指導教官は僕の頭を死ぬほどぶったたき(表現は誇張されています)、僕をくだらないプログラミングから現実の研究に引き戻した。Zed は RoR が立ち上がった後に Mongrel を作り始めたようだが、Ming/Ruby は RoR よりもずっと前のプロジェクトだった。
Zed と僕には共通点がある。「RoR がすごい!」という声があがってから、メールボックスがパンクした。「RoR と一緒に使うためにはどうしたらいいのか?」という質問がたくさんきた。最初のころは僕も丁寧に答えようとした。Zed はもっと丁寧に答えていた。すごく時間かけて調べたのに、たいていの返事はひどかった。Zed みたいに僕は口が悪くないので(ほめ言葉)、ええと、時間の使いかたを学ばせていただきました。ありがとうございます。「RoR で仕事しませんか」というメールもいくつか来た。僕は幸い仕事があったので結局断ったけど、当時は相当迷った。だって、1年契約だったからね。来年は無職かもしれないという状況だった。Zed も迷ったようだ。結果、Zed は迷ったというより彷徨ってしまったようだ。
Web application は確かに魅力的ですが、それは単に「ユーザがインターフェースに慣れている」「ソフトウエアを配布しなくてもいい」「ソフトウエアに変更があってもすぐに対処できる」などといった現実的な理由にすぎません。理想的な理由ではないです。結果、僕等はクソったれな Web application という名前のシステムに縛られています。クリッククリッククリックします。なんか怪しげなデータベースに僕等のクレジットカードの情報が入っています。二コ二コ動画とかずーっと見てます。その陰で XSS とか CSRF とか Web server やブラウザの脆弱性が潜んでいます。僕の意見では、RoR がすごいのは「開発工程が短くなった」だけで、「安心安全素敵」なソフトウエアができあがったわけではありません。結果、喜んでいるのは上位ベンダーです。下々のプログラマの成果給にどのように影響するか、万が一の脆弱性のせいで社会的な問題が起きたときに誰が責任を取るのか、その結果は予測できていますか?
Zed も僕もいい勉強をしたんだと思う。Web application が「安心安全素敵」になるためには、いろいろな努力がまだ必要で(WebフレームワークにしてもWeb ServerにしてもブラウザにしてもなんとかスクリプトやSWF、そして開発言語も!)、今、「下っ端」として働くのはリスクが大き過ぎる。早めに痛い目にあって、抜け出した方がいいというのが僕の個人的な感想だ。Zed はまだ Python, Factor, Lua とか拘ってるけど、また同じ目に会うと思うよ...ほとんど MBA を取る寸前だったって書いてるけど、なんて自虐的なパロディなんだ。
一方で、Web application はプログラミングスキルがあまり要らないんだよね。誰かが作った API やライブラリ、何とかスクリプト、SWFなどを使えば目に見えるサービスができる。皆がスゲーと言ってくれる。アルゴリズムとか計算量とかそういう、いわゆる正規の計算機工学の勉強はほとんど必要ない。むしろ DB とかの経験やデザインのセンスが重要だ。入口は広いですよ。皆が入ってもまだ余地はある。ところで、ネズミ講でうまくやる秘訣は知ってるよね?(注:ネズミ講はillegalな行為です。逮捕されちゃうぞ)
計算機工学を活用した Web application は存在します。金を稼いでいるサービスもあれば、そうでないサービスもあります。
Web はそのうちぶっ壊れちゃうでしょう。僕の極論ですが。gopher もキャプテンもファミコントレードもみーんな消えたじゃない?白黒テレビがいつのまにかカラーテレビになったかと思ってたら、地デジなんとかじゃないと見れないんだって!とかいうことはあるのでござる。そんな感じで。もちろん、工学の進歩はゆっくりと寛容に進むので、Web が無くなる前の過渡期はあると思うけどね。今、Web アプリケーションを書いて仕事をしているひとが、気がついたら現在の Ada プログラマみたいなことになってた!なんてことはありうるんじゃないかな。それでも飯は食っていけるよ。ボーイング777 とか Ada で動いているらしいから(Wikipedia調べ)。
プログラマは二種類に分けられる:正規の計算機工学をこれからも学び続けるプログラマとそうでないプログラマ。勉強に費した投資に見合う収入は必ずしも得られるとは限らない。それが現状。僕の助言としては、くれぐれも、「声のでかい馬鹿」に騙されるなということ。Zed もそう書いてるよね。
僕自身は、収入はそんなにいらないな。勉強するために生きてるし、これからも生きるために勉強する。それに見合う分が身の丈にあっている。彷徨うくらいなら積極的に道を選択するほうを選びたい。たとえ、決める手段が分からなくて鉛筆倒しで決めたとしても。
そんな青臭いことを書いている自分ですが、今の仕事の任期が尽きたら、生きるためには靴も舐めます。ぴっかぴかにしてやるさ。どうせなら味はいちご100‰でお願いします。
二人は扉をあけて中にはひりました。
扉の裏側には、大きな字で斯う書いてありました。
「いろいろ注文が多くてうるさかつたでせう。お気の毒でした。
もうこれだけです。どうかからだ中に、壷の中の塩をたくさん
よくもみ込んでください。」
なるほど立派な青い瀬戸の塩壺は置いてありましたが、こんどといふこんどは二人ともぎよつとしてお互にクリームをたくさん塗つた顔を見合せました。
「どうもをかしいぜ。」
「ぼくもをかしいとおもふ。」
「沢山の注文といふのは、向ふがこつちへ注文してるんだよ。」
[注文の多い料理店,宮沢賢治, イーハトヴ童話, 1924.[青空文庫]より引用]
[追記:]『注文の多い料理店の序文』宮沢賢治, 大正十二年十二月二十日(青空文庫)は名文なので一読をお勧めする次第である。こういう序文で、こういう話を書くのだから。私もこのようなはなしをすきとほつた冬の風から聞いてみたいのです。
RSS feed を再開しました。RSS の思想を尊重するために全文配信はしません、あしからず。