「Winnyの技術」を読みました

■  Posted by ひぐま (Higmmer) on 2005-11-09 at 00:54:36

◆共有テーマ: 読んだ本。 [本・雑誌]



発売日にAmazonさんから届いていた「Winnyの技術」をようやく読み終えました。作者さんさんがどういう考え方に基づいてWinnyの開発を進めていったかがよく分かって非常に参考になりました。また何より開発を表明してからわずか1ヶ月でβ版の公開に漕ぎ着けていたことに改めて敬服しました。

技術的な内容は既に各所の記事・情報で大体のイメージは知っていましたが、実際のキーの拡散や検索がどのように実装されているかを知ることができ、それらがどのような根拠に基づいてそのようになっているかを知ることができました。以前どこかでWinnyの中継段数には上限があると言われていたのを目にしたのですが、本書を読んでそうではないことが分かったのも収穫でした。この中継動作(とキャッシュ機構)による匿名性の確保がWinnyの特徴として挙げられることが多いですが、実は回線速度別に階層化されたネットワークを構成していることにも注目すべきだと思いました。Skypeにおけるスーパーノードに近い考え方ですが、多層的になっている点が異なります。一方で検索方式に関しては作者さん自身も認めている通り、遠くにいるノードへの検索を諦めてしまうためネットワークが拡大するほど発見率が低下するという欠点があります。Winnyではキーワード指定による自動ダウンロード機構が実装されていることと、クラスタリングという概念を導入したことが功を奏してあまり問題とはならなかったようですが、改善の余地はあるように思います。本書でもDHT(分散ハッシュテーブル)の採用が考えられるという記述がありますが、そのままでは人気のあるキーを保持するノードに負荷が集中しそうですし、基本的に完全一致検索しかできないのでキーワードを形態素解析等で分割して登録するなど、厄介な問題が色々とありそうです。結局、現状のWinnyの方式が現実解としてはうまく機能するのではと思いました(だからこそ今に至るまで使われ続けているのでしょう)。

本書ではP2Pアプリケーションの開発手法について、シミュレーションやテストの過程についても細かく記述されています。実は作者さんだけはネットワーク全体を観察できる機構を組み込んでいるのでは?と思っていたので、それが無いと分かって驚きました。そういった困難な状況にも関わらず、問題発生時に迅速に対処することがコミュニティ維持に重要だという作者さんの主張には感服すると同時に耳が痛い話でもありました。これは最近Skype API(A2A)を利用したソフトを作成した時にも思ったことですが、様々な不具合やバグにきめ細かく対処したり、通信のチューニングを行うにはやはりネットワークトポロジ・プロトコル・パラメータを自分で設計するのが結局は近道になるのかなとも思いました。勿論、そこまでの知識と技術力があればの話ですが…。

ところで本書では匿名性よりも共有効率を重視したと述べられており、そのための様々な技術に関して多くのページ数が割かれています。この辺のことは現在係争中の事案でもあり真意をうかがい知ることはできませんが、少なくとも匿名性を上げるために効率を犠牲にするようなことは行っていない(と主張している)ようです。しかし作者さんの意図はどうであれ、実際には匿名性がなければWinnyネットワークがここまで拡大し、今日まで維持されることはなかったと思われます。「WinMXの次」として開発がスタートした以上、Winnyが主にどのような目的で使用されるかは容易に推測可能であったはずで(個別犯罪を幇助する意図までは無かったとしても)、それに対する十分な対策を行わなかったために作者さんが逮捕・起訴される事態にまでに至ったのは残念です。とはいえ、仮に匿名性を一切排除したWinnyを作成していたところで誰も使わない→テストできない→開発が進まないというジレンマに陥ったでしょうし、不法ファイルに対する監視・削除機構を導入していたとしても、今度は(2ちゃんねるのひろゆき氏のように)管理責任を問われていたかも知れません。結局作者さんもあとがきで述べているようにアイデアの検証目的で作成したはずのソフトウェアがその目的を越えて社会現象化するまでに広まってしまったことが不運だったとしか言いようがないですが、これによって得られた知見を活かして今後とも活躍されることを期待したいです。

トラックバック

この記事について書く(FC2ブログユーザー)
※言及リンクの無いトラックバックは無効です

PageTop▲

コメント

PageTop▲

コメントの投稿

 
 
 
 
 
 (後で編集・削除したいなら必須)
 
  

PageTop▲