土曜から秩父でゼミ合宿でした。帰ってきたのは月曜ですけど。 まわりに何もないので、勉強するか温泉につかるか 飲むかしかないという実に教育的な合宿でした。
俺は流行りものにはブームが終わりかけてから乗るのだ! 影響を受けた 5 冊を書いてみる。
俺が道を誤った原因その 1 (Linux とフリーソフトウェア編)。
俺が道を誤った原因その 2 (言語処理系編)。
(いまで言う) LL に開眼した一冊。 実は俺、これを読むまでは C 以外使う気なかったんだけど、 この本を読んで Perl 信者になりかけたのね。 なんでそれが Ruby になってしまったかと言うと、 それはそれでいろいろあったわけだ。
今度は雑誌かよ。Linux 256 倍を読んでえらく感動している俺がその足で 池袋の BIC に行ったら発見したのが創刊されたばっかの Linux Japan 3 号。 この号には Slackware 3.2 が付属しており、それが初めて使った Linux でもある。 さらに 6 号には Ruby を知ったきっかけである前田さんの記事が載っている。
誤った道を自発的・致命的に拡大再生産し、 ついに後戻りできないことが確定された一冊。 書いている途中に受けた影響にしても、その後の影響の広がりにしても、 これ以上の影響を受ける本は当分なさそうだ。
(17:37)
金子勇 『Winny の技術』 ASCII, 2005
http://www.amazon.co.jp/exec/obidos/ASIN/4756145485
ついに出たねってーか、実はもう一週間くらい前にもらってました。 合宿がなければ発売前にレビューを出せたんだけどな。惜しかった。
で、内容。
とりあえず、付録 C に Winny プロトコルがモロに載ってる。 Winny についてはあんまり調べてないのでよくわからんのだが、 これはたぶんかなり価値があるものだ。
もちろん本体もいい。 P2P によるファイル交換システムの歴史・概論から始まって、 Winny の特徴 (回線速度による上流・下流分割とクラスタリング)、 そして実装へと非常にきれいに構成されているので、 俺みたいな Winny 素人でも一冊読めば P2P について知ったかぶれる。
ちなみに、個人的に Winny の仕組みで一番気になってたのは ネットワークに参加するときの最初の一発をどこで知るかってことなんだけど、 「掲示板で教えてもらう」というとんでもない解答が書いてあって、有楽町線内で悶絶した。 いや確かに、言われてみればそれが一番簡単だよな……。これには本当に参った。
その他にも意外な情報がいろいろあった。 「実際に〜〜を試してみたがうまくいかなかった」 という話が率直に書いてあって説得力がある。 かと思えば、回線数などのパラメータはシミュレーションで 妥当性を検証しているという話もあった。 このシミュレーション結果 (画像) は巻末に少し載っている。
あと全体的に、Winny (あるいは P2P システム) は つくづく社会科学的なシステムなんだなあと感じた。 この点はつきつめればネットワークに関係するプログラムには すべて当てはまるはずだが、P2P の場合は特に際立っているように思える。 そのへんは攻撃に対する防御のところを見ていくとよくわかるだろう。
ちなみに、Winny の防御システムの中にはエンドユーザが Winny のコードを いじらないことを前提としているところが一部にあるので、 本書の出版以後は現状の Winny ネットワークの質は落ちる可能性がある (もしかしたらそんなことはとっくに知られていてすでに影響が出ているかもしれない)。 具体的には対上流コネクションの本数や、F5 連打対策のコードなど。 これに対抗するには、例えば身勝手なアクションを起こしたやつを Winny ネットワーク全体で検出してペナルティを与えるような仕組みを 使えばよさそうだけど、作るのは難しいだろうなあ。
(20:06)
Winny の仕組みが公開されると云々のところは最後まで読めば ちゃんと書いてあるなあ (p.157「なぜ Winny はオープンシステムではなかったのか」)。
ま、そのあたりも含めて、失敗したところを ちゃんと書いてあるところがすばらしい、ということで。
(20:57)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.