休み明けでボケているが、〆切は迫る。
Linux Magazineでの『初等Ruby講座』の連載は今月発売の11月号で最終回を迎えたのだが、 実は間を空けずに新連載が始まるのであった。
「まつもとに入門は無理だろう」という(本人も含めた)予想にもかかわらず、 2年にも渡って連載が続いたのは大したものだが(自画自賛)、 とはいえ、正直なところ入門ではないような領域も結構あったように思う。
そこで今回は『探訪Ruby』と題して、Ruby界のあちこちから目新しいトピックを紹介する ような連載にしたいと思う。 言語設計者としては、ほっとくと文法とかインタプリタの実装といった コアの部分に集中してしまう傾向があるけれども、 冷静に考えれば、言語なんてプログラミングという活動全体からみれば小さな一部分に過ぎない。 Rubyを出発点にして、いろいろなアプリケーションや、プログラミングテクニック、 ひいてはプログラミングそのものまで解説できたらと考えている。
今月は第1回なので、Rubyの紹介と全体の概観に終始すると思うけど。 あいかわらず〆切直前にならないと書けない人なのだった。
ちゅーわけで、今月からもよろしく。
総務省がDRMの開発する、とか。国内だけでDRM規格を作って本当に物になるのか、という疑問はぬぐえないが、 DRMと言えば、権利者保護、消費者そっちのけ、という印象が多い中で、
新たに開発する著作権保護技術は、家庭内LANに限ってコンテンツの二次利用を許可し、LAN内のほかのパソコンやテレビ、携帯端末でも視聴できるというもの。
という消費者のことを少しは考えた態度は評価したい。
そもそも、CCCDとかコピーワンスとはコンテンツ権利者のことしか考えていない。 我々がなにかを買う時には基本的にその所有権を買ったと考える。 これは長年の商習慣の中で培ったイメージであり、 (明示的にそうでないと示されない限り)我々消費者が当然と感じる権利である。
「マイクロソフト日本法人で法務本部長を務める弁護士の水越尚子氏」は、 「ユーザー側はダウンロード販売の時点でもはや『物を買っている』という意識はなく、ASPに至ってはソフトを複製しているという意識すらなく、完全に利用に主眼が置かれている」とおっしゃるが、 サービスを売っているASPはともかく、 ダウンロード販売によって「入手」したものに対して、 そんな風に思ってる消費者が本当にそんなにいるだろうか。 むしろ「買ったものは自分のもの」と思ってるんじゃないだろうか。 私には、彼女の意見はコンテンツ権利者の願望から生まれた幻想のように感じられる。
ところが、音楽、テキスト、プログラム、など情報にすぎないものについては、 コンテンツ権利者は、そういう幻想に基づいて、彼らの当然の権利のように 「我々のものは我々のもの、あなたたちは我々の所有物にアクセスする権利を一時的に買っただけ」と 押しつけてくる。それもけっこうな値段で。
もちろん、コンテンツを作るのにはお金がかかり、 一方で情報のコピーにはほとんどコストがかからない以上、 なんらかの保護を行わなければならないことには同意しよう。
だからといって、今まで認められてきた私的利用を制限し、 かつフェアユースの概念の導入は拒否すると言う世の中の流れには反対したい。
海の向こう、コンテンツ権大国のアメリカでさえ、 DMCRA(Digital Madia Consumers' Rights Act)で消費者保護の揺り戻しが起きている。
DMCRAについては「妖精現実 フェアリアル」が参考になる。簡単にまとめると
技術的保護手段の回避: 非侵害的であれば合法
誰にも迷惑をかけていない行為をいちいち禁止しない。
侵害的技術の開発等: 実質的な非侵害的用途があれば合法
「侵害に用いられている」というだけでは 携帯プレーヤーや iPod や Windows や P2Pソフトなどの開発を違法呼ばわりできない。
プロテクトされた音楽: 消費者の利益を不当に害してはならない
音楽CDでない円盤を音楽CDと紛らわしい仕方で販売して、CDプレーヤーを故障させたりしてはいけない。
ということだ(「妖精現実」から引用)。これまたしごくもっともだ。
デジタル放送のプロテクトの運用(インターネットでの配布は黒、私的利用は白)といい、 ところどころでまともな判断が出てくるところが、アメリカという国の不思議なところだ。
日本でもパブリックコメントの募集が行われている。消費者側の立場に立ったコメントが集まることを期待したい。私もなんか書きたいけど、どうしようかなあ。
18日はRuby講習会の講師をする予定であったが、 突然の天からの声により、この日はプレゼンのための出張になってしまった。普段は3日くらいの候補から選べるのに、 今回に限っては18日限定なのだそうだ。
「18日は間違いなく私が教えます」なんて書いたのに、 私は教えられない。急遽、講師は前田くんにお願いする。 今朝までに夜更かしして40枚のスライドを用意しておいたので(後日公開予定)、 これを前田くんに渡して、あわてて引き継ぎ。
で、出張のプレゼンのための用意がはじまる。 これはこれで大変だったりする。
Linux Magazineも残ってるしなあ。
Continental Breakfastなのだそうだ。それってなんなんだろう。 なんとなく日本でいうバイキングのような「好きなだけ取る」方式のような気がするんだけど。
ホテルのトースターのギミックが秀逸であった。 コンベアの上にパンを乗せると焼かれながら次第に奥に引き込まれていく。 いちばん奥までいくと、ポトンと下に落ちて、その時には焼き上がっているという仕掛け。
感動した。
David Alan Blackがごあいさつ。 少々古めかしいこのホテルはもともとナイトクラブだったとか。 また会場になっている地下のBall Roomは 映画「トップガン」でバーのシーンの撮影に使われた場所だそうだ。
全般にその場の記録は卜部くんのレポートを読んだ方が確実だと思うので、 私のは感想にとどめる。
無線LANの接続に苦労してあまり聞いていない。ごめん、Francis。
テストを網羅的に行うのはいろいろ難しいよね、というような話だったか。 Mockオブジェクトを作るのにいちいち全部作ってたらMockのテストが必要になって本末転倒。 だったら、本番クラスの一部だけ差し替えてMockにしようというような話をしていた...ような気がする。
あと、$LOAD_PATHを置き換えてロードするライブラリをすり替えちゃうっていうアイディアは Rubyならではのmock実装法だと思う。下手なDIコンテナを使ってクライアントコードに無理させるより、ずっと自然だよね。
DIコンテナってあまり好きになれないのは、将来のなにか(この場合にはmockへのすり替えの容易さとか、実装の(一時的)変更とか)のためにいまコストを払えという点なのかな。
open-uriについて説明すると同時に、 良いAPIのデザインとは何かについて語るプレゼン。
いやもう率直というか、歯に衣着せないというか、 出来のわるいAPIはけちょんけちょんにされていた。
ちゅーか、脳力とか、そういう話をするんですな、akrさんって。
英語のプレゼンでも「だから」というakrさんの口ぐせが健在だったのが内心ウケた。
JVM上で動くRubyインタプリタであるJRubyの現状。
15人くらいの開発者。アクティブなのは4,5人くらい。 活発に開発が行われている。
だいたいCで書かれたRubyの半分くらいの速度で動く。 いくつかの機能は実装できていない。が、そもそも無理なものもある(forkとか)。
Continuation Passing Style (CPS) の開発を行っていて、 こちらは再帰レベルの制限がない(緩い?)。実際にデモしていたが、 Rubyや通常のJRubyがstack level too deepの例外が発生するようなケースでも ちゃんと動いていた。
YARVの現状報告、...のはずが笹田くんの現状報告になっている。 「るびま」について、とか。聴衆には大ウケであった。
Riteの将来は笹田くんの双肩にかかっている。
ところで、笹田くんと私を混同した人がいるんだけど、 そんなに似ているのか(ヒゲが)。
Ruby自身(のサブセット)でRubyを作り、Ruby2CでコンパイルしてRubyインタプリタを作ろうという試み。Squeakが似たようなことをしてるよね。
ま、Ruby自身で書いた方が簡単なところがあるのは事実なのだが、 どこまでできるか、温かく見守ろうと思う。
くたびれてうとうとしているとDHHともう一人が部屋をノック。
実は約束があったのだ。カリフォルニア州弁護士の彼は、OSSのLegal Issueについて 関心があり、RubyのLicenseがどうかとかいう話の相談に乗ってくれるとのこと。 いろいろ相談したが、とりあえず大丈夫だろう、ということになって一安心。
あと、「Webのクリックで著作権譲渡の手続きが出来たら楽でいいのに」というアイディアが DHHから出るが、彼の返答は「要研究。単なる合意であるライセンスと違って、財産の譲渡は一般的に紙を要求する」だそうだ。これができるとみんな楽なのになあ。
とか話しているうちにみんなディナーにいってしまい、 取り残されたので、弁護士の彼と一緒にホテルの向かいでロシア料理。 変わった味だがおいしかった。ちょっとハーブがきついものがあったのと、 Red October(漬物のようなもの)はすっぱすぎたけど。
やたら長い(1時間半)のだが、準備しなくていいだけ気持ちは楽。
内容はこちらを参照のこと。
新しいネタはあんまりない。未来の言語に要求される(から、Ruby2で対応したい)のは スケーラビリティ(ライブラリの数、処理するデータ量 etc.)だという話は公然としたことはなかったかもしれない。
苦労したあげく書き上げる。気がついたら朝になってるよ。
テーマは「MVC」。MVCの説明はなかなか面倒なのだが、 簡単なテキストベースのプログラムを使うことで 比較的小さな分量での解説を試みる。
さらにRailsが採用しているMVCと古典的なMVCの違いについても言及する。 っていうか、これらって実は同じ名前でも違うものだよね。 ちゃんとそういうことを書いてくれた文章を読んだ事ないんだけど、 それは「知られざる事実」なのかなあ。それとも「常識」?
なお、今回の記事で解説するMVCは古典的なもので Pluggable MVCとか、ましてやmorphicなどはカバーしていない。
新たにチュートリアルを書いてくれる人が増えてきた。 最近もふたつも新しいものが紹介された(英語)。
Haskellで知られている構文解析技術Parsecを Javaに移植したJParsecを さらにRubyに移植したもの。
結構面白い。実際の使い心地とか性能とかはどうなのかなあ。
先週ユタで開かれた総大会のビデオを衛星中継で見るために米子へ。
出張から帰ったばかりで疲れていたせいか、 午後の部あたりではかなり集中力が途切れてた。 っていうか、私の集中力はいつも長持ちしないんだけど。
集会終了後、実家に。 両親としばらく会えないので、この機会に親族集まろうということで。 楽しかった。
あと、両親が先週までアメリカに行っていた時の写真を見せてもらう。 あちこちを観光してて楽しそうだった。 私もアメリカにはときどき行くけれど、いつも最初から最後まで仕事だものなあ。