届いた。全体に去年のLL Saturdayの雰囲気を活字でよく再現している。 行かなかった(行けなかった)人も、これを読めば大丈夫。 追加されている記事もあるので、行った人も楽しめると思う。
私の原稿は3本。
Lightweight Language Magazineに寄せて
Larry Wall(Perl), Guido van Rossum(Python), Zeev Surasuki(PHP), そして私(Ruby)、 という言語デザイナーによる献辞。 なんて豪華な。注目点は実はそれぞれの写真だったりするかも。
Lightweight Languageとは?
LLの定義について。Matz流「俺定義」が炸裂します。
Language Update
Rubyの最近と将来について。他の言語に比べておとなしすぎるかなあ。
LLMで思い出したけど、Pythonに最近加わった。 List Comprehension(p.136)って記法としてはあんまり嬉しい気がしないんだけど。 いっそ、Haskellのみたいにすれば良かったのに。 Pythonが記号的な表現を嫌うのはわかるけど、 もっとコンパクトな記法の方が元々のPythonの性格に合っているのではないかと(そのためにblock by indentationとか導入したんだと思うし)。 まあ、言語の性格はだんだん変わるものではあるけどな。
Python版:
def qsort(list): if not list: return [] x, xs = list[0], list[1:] return qsort([y for y in xs if y < x]) + [x] +\ qsort([y for y in xs if y >= x])
Haskel版:
qsort [] = [] qsort (x:xs) = qsort elts_lt_x ++ [x] ++ qsort elts_ge_x where elts_lt_x = [y | y <- xs, y < x] elts_ge_x = [y | y <- xs, y >= x]
Rubyには要らないと思う。Enumerableとブロックの組み合わせが十分強力だから。
def qsort(list) if list.size == 0 return [] end x, *xs = *list elts_lt_x, elts_ge_x = xs.partition{|y| y < x} qsort(elts_lt_x) + [x] + qsort(elts_ge_x) end
ちゅーか、ブロックのパワーに比べたらList Comprehensionは中途半端。 Pythonにもlambdaがあるからいくらでも似たようなことができるはずなのに。 Guidoはlambdaは好きじゃないらしい。
末娘を見せびらかせに妻の実家である山口へ。 例によって国道9号を西へ。出雲市内で渋滞したが、 後は普段よりは遅いもののまあまあのペースで移動。
今回は先日(だいぶ遅れた妻への誕生日プレゼントとして購入した)ポータブルDVDプレイヤーで 映画を見せることができたので子供たちがおとなしくしていた。 酔うのではないか心配したが、一番酔いやすい体質の長女は平気な顔をしていた。 逆に酔ったことはほとんどない次女が「ちょっと気分が悪い」と言っていた。
津和野の手前でどうしても眠くなったので12分間の仮眠。 今回は移動に5時間かかった。
例示による学習法を用いたRuby入門。 本当に一時間で覚えられるのか、Rubyを知らない人をつかまえて試してみたいものだ。 私の身近な(Rubyを知らない)人は、 Rubyどころかコンピュータを使うまでに100時間くらい必要そうな人ばかりで、 参考にならない。
朝から移動。空港まで山陰道(高速)で移動しようと思ったが、 ぼーっとしていて一般道に降りてしまう。あわててUターン。
なんとか間に合って、東京へ。
会場は京急蒲田の近く。駅が近くてありがたい。
ついたら、Ingyが話をしていた。 Pugsの話は聞きそこなったなあ。
その後、MighTyVの話の後、 私の番。
今回のタイトルは「Ruby on Perl(s)」。ただ、これは単なる駄洒落で深い意味はない。 今回はトラブルなく表示された。
今回の主要なテーマは以下の通り。
で、「不可能でない」ことを示すと負けず嫌いのPerl陣営がPerl6でCSIを実装してくるかもしれない。
昼食はwakatonoさんたちと中華料理の店(金春)へ。 食事が終わってから先日雑誌で見た「餃子の名店」であることに気付く。 しまった。餃子を頼むべきであったか。
後はいろいろと話を聞きながら、ハック。 先日の多値を実装し、テストケースの修正まで行った。 まあ、こんなものか。 統一性という意味ではまだまだ不満だが、 現状で(ルールが複雑でわかりにくいという以上には)あまり不満が出ていないところに あまり力を入れてもしょうがないのかもしれない。
懇親会は、また別の中華料理の店(ニーハオ)へ。 ここもwakatonoさんの選択だそうだ。地元なんだって。
中華料理はおいしかったが、おなかいっぱいになった。 私のテーブルは隣がDamian Conway、その隣がLarry Wall、 向かい側に弾さんとえらい濃いポジションであった。 隣のテーブルにはIngyとかいるし。
Damianと言語設計の話をする。私にもLarryにとってのDamianのような人がいるといいなあ。
以下、引用。
今、Ruby がマスコミなどで取り上げられることが多くなりました。インタ ーネット市場の楽天がRubyでシステムを構築し直すとか、サンマイクロシステ ムズがJavaとRubyを結合させ、JRuby(OSS)を開発したり、といった動きがあ ります。また、Rubyの開発者のまつもとゆきひろさん(松江市在住)が2007年 日経BP技術賞大賞を受賞することが決まりました。これにより、Rubyはもちろ んのこと、これを支援する松江市の取り組みもいっそう注目されることになる でしょう。Rubyを使えばプログラムの作成が容易にできること、オープン・ソ ース・ソフトウエアであることから、今後Rubyの活用は飛躍的に伸びるものと 思います。
しかし、何もしなくていいということではありません。Rubyを使いこなせる 技術者をたくさん育てることが必要です。松江市ではテルサ別館に開発交流プ ラザをオープンさせ、まつもとさんなどの指導の下、研修・交流を盛んに行っ ています。まつもとさんの指導がいつでも受けられるという本当に恵まれた環 境に松江はあるということです。こうした点に着目して、IT企業が研究開発 のスペースをテルサ周辺に求める動きもあります。松江市では、来年度予算と して情報関連企業が事務所を開設する際の経費に対しての助成制度を創設する ことにしています。松江駅周辺がアメリカのシリコンバレーのようになればす ばらしいと思います。
また、IT企業がRubyを使った製品の開発を進め、上記の開発交流プラザで 育てた技術者の技能向上を図る必要があります。そして、基幹システムへの Rubyの活用を目指していくことが肝要です。このため、まずは行政が率先して 製品を購入していかなければいけません。松江開府400年祭のホームページは Rubyを使っています。これからも積極的にRubyの製品を使うようにしていきた いと思います。
松江といえばRuby、Rubyといえば松江といわれるように、松江をRubyのメッ カに育てていきたいと思います。松江は、歴史、文化、自然と並んでRubyとい う大きなまちづくりの資源を手に入れました。今後、市民の皆さんへの理解を 深めていきたいと思います。
さて、これをどう読むか。
少なくとも市長は「地域資源」とは「まつもとのこと」ではなくて、 「松江にいるまつもとが開発しているRuby」と捉えていることは分かる。 また、市が率先してRubyを採用しようとしていること、開発交流プラザ(私が普段いるところ)を用意したことも分かる。
ところで、上の文章を見て思い出したけど、 シリコンバレー近辺の地図を90°時計回りに回転させると 松江市周辺の地形にちょっと似てる。ベイを囲む半島の様子と、 宍道湖を囲む地形が。
松江市はちょうどオークランドの辺りか。
オフショアなみの値段にならないかと値下げ交渉される話。 ひどい話だ。
いや、価格競争は当然だと思うけど、 オフショアの問題は嫌だけど値段は下げたいというのは 単なるわがままだと思う。
ところで、終始「オフシェア」と書いてあるのが気になる。
「Pythonは変化がゆっくり過ぎではないか」という心配。
これも難しいところで、仕事で使ってたりすると、 些細でも非互換な変更は許せないわけだし、 一方、新機能は欲しいし、 性能も向上してほしい。
で、RubyとPythonではおおむね違う選択をすることが多い。 どちらを選んでも100%満足する人はいない。 ある意味しょうがないわけだが。
「Pythonの方が責任感がある」ということは言えるかもしれない。
チェンジビジョンの平鍋さんと、英和永和の角谷さんと私で対談。
その内容は近日中に@ITに掲載される、はず。
キーワード
でも、ビデオとかとってたけど、ポスプロがめちゃめちゃ大変そう。 どうするんだろう?