2005/10/09
■[書評]Winnyの技術
Winny開発者の金子氏による、Winnyの技術解説書です。
開発者自身による本だけあって、初期のP2Pファイル共有ソフトとWinnyの比較、Winnyの設計と実装の詳細、そしてWinny開発の経験から生まれたP2Pアプリケーション開発のノウハウの紹介、と盛り沢山の内容になっています。
で、こう書くとすごく難しそうな本に見えてしまいますが、中の文章は、平易な表現で基本的な話から順を追って書かれていて、とても読みやすくて驚きました。Winnyに関する事前知識が無い人でも、これならすんなり読めるんじゃないでしょうか。
個人的に読んでいて面白かったのは、Winnyの設計に関する話と、P2Pアプリ開発のノウハウのところでした。そのあたりの感想をつらつらと書いてみます。
■ Winnyの設計
「上流と下流」「クラスタリング」という概念は一応知ってたのですが、この2つの概念を組み合わせた場合の効果は、本書の説明文と図を見てようやく理解できました。
どうやらWinnyは、下位のピアが上位のピアに検索を依頼すると――Winnyの用語で言うと下流と上流になるんですが――上位のピアはその上位のピア群の中で検索処理を行う、という設計になっているようです(105ページの図4-16などを参照)。これは、Skypeのスーパーノード群(Global Index)と一般ノードの関係と非常によく似ています。
また、この上位のピア群の中での検索処理についても、当初は「上位のピア群で一次元トーラスを形成して、検索クエリに方向性を持たせる」ということを検討していたそうです。2002年の4月にWinny 1の開発を宣言したあたりで、既にDHTに似た方式を考えていた、というのも結構スゴイ話です(そういえば代表的なDHTアルゴリズムが発表され出したのも2002年でした)。Structured P2Pと呼ばれるたぐいの技術を使わなくても、十分実用的な検索効率を持つ階層ネットワークを構築できる、というのは面白いですね。
その他の詳細は本を読んでもらうとして、以下は個人的に意外だった点のメモ。
上流のピアは検索クエリを(ほとんど)下流に転送しない
- ほとんどの検索クエリは下流から上流、または上流のピア間で流れる(1段下流のピアに転送することもある)。そのため、検索クエリが下流→上流→下流と流れることはほとんど無い。
- その代わりに、ファイルの情報を格納した「キー」は下流のピアから上流のピアに集まる仕組みになっていて、結果的に、異なるクラスタに属する下流のピア間でのファイル検索も実現している。
Winnyは検索クエリをフラッディングしていない
- 検索効率を上げるためには、検索クエリを実行するたびになるべく別のルートを経由するという方法を取っている。
自動ダウンロードを実現できるのは、Winny独自の特徴
- Winnyでは、あらかじめ拡散によってネットワーク上にキーが広まっているため、検索クエリの頻度を減らせる。そのため、各クライアントが自動ダウンロードを実行しても、ネットワークへの負荷は問題にならない程度に収まる。
■ P2Pアプリケーション開発のノウハウ
P2Pアプリの開発には十分な大きさのP2Pネットワークが必要で、そのためにはユーザの協力が欠かせない。また、そのようにして作り上げたP2Pネットワークは貴重なので、上位互換性が無くなるような大きな変更はなかなか加えられない。そのため、プロトコルの変更を出来るだけ最小限にするためには、初期の設計が重要で、問題が発生した場合は早い段階で対処する必要がある。初期の設計には、シミュレーションに一定の効果があった……。
5章「P2Pソフトの開発手法」の冒頭では、そんな話が述べられています。実際にうまく動作するP2Pアプリケーションを作り上げた人の言葉だけに、説得力があります。P2Pアプリケーションは、金さえ積めば誰でも作れるという類のものではないわけですね。
で、そう考えると……大規模なP2Pネットワークを構築する技術は、僕みたいな普通の人が考える以上に価値のあるものなのかもしれません。
最近eBayに26億ドルというとんでもない額で買収されたSkypeは、P2Pファイル共有ソフトのKaZaAで培ったFastTrack技術があった上で、大規模なネットワークを構築しています。現在では、同時に300万人ものユーザがオンラインするようになりましたが、特に動作が遅くなったという話も聞きません(ソフトのバグは増えた気がしますが)。
一方、金子氏はP2Pファイル共有ソフトのWinny 1で培われた技術を改良して、P2P掲示板ソフトのWinny 2を開発しようとしていたわけですが、著作権法違反幇助なんていうワケの分からない罪で逮捕されています。金子氏自身、173ページに
いまにしてみると、Winny 2にはファイル共有機能はなくてよかったのだと思います。BBS専用に設計していれば、また別の展開が考えられたでしょう。
と書いていますが、確かにWinnyがBBS専用ソフトになっていれば、もしくはこの「Winnyの技術」がもっと早く発表されていれば、P2Pネットワークを構築する技術の重要さがもっと多くの人に認識されていたかもしれません。それが、なんだか残念です。
また、この日記に無関係と判断したコメント及びトラックバックは削除する可能性があります。ご了承ください。