8時ちょうど...ではなく、7時59分のあずさ6号に乗って東京へ。
松本から東京は思ったよりも近い。飛行機じゃないから気楽だしね。
東京ではニューヨークから来たRubyユーザと一緒にお昼。 Rubyのこと、ほめてもらえるのはうれしい。けど、照れ臭い。
あと、日本の食事は安いとか、日本のベーグルは本物じゃない、とか。 文化とか食べ物とかのこと。あと2週間日本にいるというのに RubyKaigiのこと知らなかったので紹介しておく。 が、今からチケット買えるんだろうか。
U20プロコン実行委員会。 今年はどのくらい集まるかなあ。
会合終了後、よしおかさんのポロシャツをほめたら できたばかりというレアモノのAsianuxポロシャツをいただいた。
ラッキー。
明日のLinux World/Expo Tokyo 2007での発表は 後半にRailsのデモをやってもらうように会社の人にお願いした。 が、あんまり発表とか経験がなかったので 緊張しまくり。とにかく準備するしかないと
の繰り返し。コストに見合うかどうかはともかく、熱意はすごい。 今後の成長の糧になるといいね。
稲荷町のホテル。古いのはともかく、 浴室がひどい臭い。もう泊まらない。
Railsでなく、Rail。Rubyとは関係ない。
RailはBefungeやPATHの流れを汲む二次元言語。 Railでの「Hello World」はこうなる。
$ 'main' (--): \ \-[Hello World!\n\]o-#
標準入力を標準出力にコピーするcatはこう。
$ 'main' (--):
 \
 | /---------\
 | |         |
 | \    /-io-/
 \---e-<
        \-#
ループが「ループ(輪)」として目に見えるのが特徴。
CodeGearのイベント記事をGoogle Translateで翻訳したら 出席するはずの私の名前が消えてしまったという話。
なぜ、むしろ翻訳しやすいひらがなの「まつもとさん」の名前を翻訳できず、漢字の木村明治さん(Akijiになっているけど、正しくはMeijiさん)が翻訳できるのか、不思議。
となっているが、実はひらがなの名前は機械翻訳泣かせである。 つまり、漢字の羅列は名前として認識しやすいが、 ひらがなだと、通常の文の一部として解釈することが多いようだ。 たとえば、
まつもとゆきひろ
を
「まつも」と「ゆきひろ」
と解釈し、「まつもってなによ」と混乱してしまうとか。
というわけで、6/5にはCodeGearデベロッパーキャップゲスト出演します。
デジカメにおいて、機能競争が飽和してきていて、 打開するためには「時流に反した割り切り」ではないか、という話を、 リコーを題材にして。
機能競争というのはソフトウェア(や言語)の世界でも日常的で、 なんだかんだ言っても「なにができるか」で評価されることが多いんだけど、 そういう時こそ違う評価軸(たとえばRubyなら「どのくらい気分が良いか」)を 提示することが成功の鍵になるのではないか、と思う。
連日PHPを話題にしているのは、 PHPを嫌いだからじゃなくて、PHPという言語の状況が素材として面白いからである。
今回のお話は
結果として開発者はPythonやRubyに逃げていき、PHPは死んでしまうのではないか、という懸念。
あらゆるソフトウェアについて新しいバージョンへの移行は 難しいことであるが、PHPの場合、それが顕著なのかもしれない。
Rubyでも1.8と1.9の間にギャップがあるので、 似たような状況にならないとは限らない。
全くの印象論なのでアレですが、OO とか新しいプログラミングパラダイムを理解しない人達がみんな移行を渋っているのだと思います。PHP しか知らないと、大分違う言語に見えますし、習得する気もなければ移行インセンティヴは低いでしょう。僕自身は PDO という database オブジェクトなしではもう不便すぎるので php4 を使う気はありませんが、それにしても、SQL やアプリの設計に興味がなければ全く利点とはなり得ない、というのはわかります。
今の PHP5 の状況というのは ASP.NET とかの出始めの頃と似ているのではないでしょうか。
全くの印象論でアレですが、言語やOSやライブラリが後方互換を突き詰めてちゃんとやらないってのは、利用者にとってはそれだけで新Verの価値半減だと思います。
公式サイトをたずねて20分でHello World的なWebアプリを書けるようにならない限り、RubyやPythonが初心者にPHPより好まれることはないでしょう。
つまりmod_ruby(13|20|22).dllを添付せよってこと?
Apache入れてASR入れてhttpd.conf書き換えてrequire 'cgi'してcgi.out("Hello, world!")してブラウザから起動するのは、初心者には20分では無理かもしれませんね。
でもはまりどころ的にはPHPもそう変わらない気がしますが、PHPだとそんなに楽ですか?
昔自分も初心者だったはずなのに、初心者ってどういう生き物だったか思い出せないけど…。
んー、PHPだと
<? printf("Hello, World!"); ?.
で、済んじゃうんです。
ところが、rubyにせよ、pythonにせよ、HTTPヘッダを送らないといけないんだけど、そのことは公式からはたどれないんです(厳密には探索してませんが、適当に探した限りでは行きあたらない)。
スクリプト言語に入る道は多分ふたつあって、ひとつは「作業をするためのプログラミング言語として」で、もうひとつは「Webアプリを書きたいから」。
で、言語屋さんが考えている以上に後者も多いと思うんです。
なのに一番手軽に参照できる公式ページにそういう知見が少ない。
そこらへんがPHPに対する最大の弱味なんじゃないかと思います。
初心者が(PHPのような形で)簡単にWebアプリケーションが書けるのは実は良くないことのような気がします。このことについては「後で書きます」。
私も不承不承PHPで仕事してるのだけど、PHPらしくやるなら拡張子を.phpにして(サーバは設定してある前提で書いているけど、PHPだとしても当然設定はしなきゃないよね。僕が想定する初心者にはコード書くことより難しい気がするんだけど。)プレーンテキストでHello, World!と書けばそのまま出るし、その方が早くて素直。せめてechoと思うんだけど、PHPの場合それは関数なのか構文なのかとか考えなきゃない時があるし、printfとCGI.new,etcetcと魔法っぷりはそう変わらない気がするし、魔法のままでいいならどっちでもいいじゃんというか、どっちでもいいならRubyのほうが言語として筋がいいじゃんとか思います。
HTTPヘッダについてもいくらでも文献は出てきますし(HTTPヘッダとは何ぞやとか調べる気力があるならRubyを使っておいた方が将来的には幸せな気がする)、ruby cgiでググればCGIクラスの使いかたぐらい簡単に見付かるでしょう。
検索するにはCGIという単語を知っていないといけませんが以下略。
PHPも言うほどとっかかりも将来的にも簡単でないと思いますが。まあなあんにも考えないならいいかもかもだけど。PHPのとっかかりが簡単というレベルならRubyを使ってもそんなに苦労しないのではないでしょうか。
PHPだとしてもApache入れてPHP入れてhttpd.conf書き換えてメモ帳開いてHello, world!と書いて拡張子.phpで保存してブラウザから呼び出すのは、僕が想定している初心者には20分では無理だと思ってるのですが、どの程度の初心者を想定してます?
僕が想定しているようなド初心者は論外でしょうが、でもウェブのコード書くというならばせめて、なんとなくTCP/IPでバケツリレーでコンピュータが継っててその上でHTTPdとウェブブラウザがHTTPでお話しをしてアプリケーションがごにょごにょした結果HTMLとかXHTMLをもらってきてウェブブラウザがパースして表示してるんだなあ、というイメージを持っていてくれないと困るし、PHPでも普通に出力したときContent-typeはtext/htmlなので素の文字列を出したければContent-typeを変更するのが筋とか、じゃあ何かを出力する前にheader('Content-Type','text/plain');しなきゃないねとか、何かを出力する前って何よとか、実はバッファ(が|も)あってねとか、言い始めるときりがないけど、そもそもコードを書くにはそういうことも知っているべきで、その辺まで考えるとPHPに存在するらしい導入畤のアドバンテージ(未確認)なんかどうでもよい気がして、で単にPHPはいけてないからお勧めしないという話なわけです。
別にRubyでなくてもいいけどPHPはとにかく嫌。
駄文でごめんなさい。
PHP派(という言い方はふさわしくないかもしれませんが)が想定している「初心者」には、自分でサーバーから仕立てる人は入れていないのではないでしょうか? つまり、レンタルサーバーなりで、吊りの背広のごとく調えられたものを使うだけの立場のユーザーが念頭にあるように思います。
>>吊りの背広のごとく調えられたものを使う
その条件下とすると、
>>PHPに対する最大の弱味
"最大"という言葉を使う割には、随分みすぼらしい強みになりますね。
Hello, worldの表示なんて、もはや言語の問題ではないでしょう。
わたしに対して「PHPに対する…」の部分をぶつけられても困ります。書いた本人じゃないので。
いや、そういう意図はないのかもしれませんけど。