※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

学籍番号:ナ・イ・ショ

氏名:エロむきん

テーマ:なぜWinnyはP2Pネットワークを確立できたのか。

題名:Winnyの仕組みを把握する。

概要:Winnyの歴史、Winnyの開発コンセプト、Winnyの技術を追っていく。


序論:共有ファイルに関する基礎知識 ~P2Pネットワークとは~

共有ファイルはP2Pというネット方式を取っている。
P2Pとは、各々のコンピュータ自身もサーバになることによって機能するネットワーク通信形態であり、クライアント/サーバ形態とは対照的な形態となっている。

 
本論:「Winny」とは・・・

1.Winnyの歴史

2002年4月1日、Winny製作者の金子勇氏が「Winny」の開発を宣言。
2003年4月7日にWinny公開を停止し、2003年4月9日に「Winny2」の開発を宣言する。
2004年5月10日、金子氏が著作権違反幇助の疑いで逮捕され、Winny2の開発が停止。
金子氏は現在裁判中である。
Winnyは「Freenet」という共有ファイルを基に、金子氏がFreenetの欠点を克服しようと作成した第三世代のファイル共有ソフトに当たる。


2.Winny開発者「金子勇」氏とは

※アスキー書籍編集部「Winnyの技術」P203より抜粋
―――昭和45年7月生まれ。茨城大学大学院にて博士(工学)の学位を取得。
情報システム学科専攻。専門はシュミレーション環境、OS、可視化など。
ネットワークは専門外であったが、原子力研究所勤務時代に複数のスーパーコンピュータをネットワークで接続し、その計算結果を可視化する研究に関わった。
その後はフリーソフトとして公開していたCGソフトの商用化、IPAの未踏ソフト事業などに参加したのち、東京大学で特任助手として実践的プログラミングの指導に従事した。
趣味は暇プロであり、何かアイディアを思いつくと、プログラムという形で表現し、検証してきた。
幼少時代からプログラムを趣味としており、数々のプログラムを作成して今に至る―――
 
今回取り上げた「Winny」に関しても、金子氏が持つ暇プロという趣味の延長に過ぎない。


3.Winnyが目指したもの

Freenetは『匿名性を最重視して開発された共有ソフト』である。
しかし匿名性を重視する余り、その共有効率には欠陥があった。
対するWinnyは、『プロクシーという概念をP2Pに取り入れ、共有効率を最重視し、尚且つFreenetにあった匿名性を備えた共有ソフト』というコンセプトで開発された共有ソフトである。



4.P2Pネットワーク確立のためにWinnyで実装された技術


4.1 大規模P2Pネットワーク環境を想定した上での負荷対策

FreenetやWinnyはまず始めに、断片化したファイルをネットワークに拡散させる。
Freenetの場合、ファイルを入手する際にはネットワークに検索をかけ、ネットワークに拡散した断片ファイルを回収するという手法でファイルを入手する。
この手法を用いると、大規模なP2Pネットワークが形成された場合、検索範囲が広大になってしまうために、検索能力の限界を超えてしまう。
この問題を解消するために、Winnyでは「キー」と呼ばれる軽量な情報ファイルを検索機能に導入した。
キーには、自分が入手したいファイルの断片が誰のパソコン内に保存されているのかが記憶されており、このキーを入手するだけで即座にファイルを入手できるようになった。
これによりWinnyの場合、検索範囲は「ファイル全てが見つかるまで」ではなく、「目的のキーが一つ見つかるまで」になり、検索にかかる負荷が激減したのである。


4.2 Freenetのような匿名性の実現

Freenetのように、ファイルを断片化させて拡散してしまえば匿名性は向上する。
しかしそれと引き換えに共有効率が悪くなり、検索にかかる負荷が大きくなる。
これを解決するために、Winnyでは「キャッシュ」と「中継」という機能を実装した。
キャッシュ(キャッシュファイル)とは、一次配布者の持つオリジナルファイルを複製したものである。
この複製されたファイルはネットワーク中に出回り、誰がオリジナルを配布したのかを不明にする機能を持っている。
中継とはその意味の通り、一次配布者とファイル要求者の間に入り、一次配布者の代わりにファイル要求者へファイルを転送する行為を指す。
中継が入れば、ファイル要求者が中継との新たな関わりを持つため、更なるネットワークの拡大が見込まれる。
これによりオリジナルファイルは広い範囲に拡散し、一次利用者の特定が難しくなるのである。 
 

4.3 P2Pネットワークの課題であった共有効率の悪さを改善

Winnyには、「上流」と「下流」という概念が存在している。
上流と下流の差は、回線速度の速い方が上流、遅い方が下流、という具合に判断する。
Winnyでは、先に挙げた「キー」や「キャッシュ」を上流に集中して集めるよう設計されている。
この設計により、まず始めに上流に検索を掛ければ、その豊富な情報量のお陰でファイルを発見しやすくなる、という仕組みになっている。
もしもこの概念が存在しなかった場合、検索は上流に限定することが出来ないため、広い範囲に検索を掛ける必要が出てきてしまう。
ネットワークの規模が大きくなればなるほど検索には負荷がかかるため、この上流と下流という概念による負荷の軽減は必要不可欠と言える。


4.4 クラスタリングによる更なる共有効率の向上

Winnyでは、初期設定時にまず「利用者の嗜好」を登録する。
利用者が要求するファイルは、利用者の嗜好に寄るものが多い。
Winnyにおいて、ある一つのネットワーク形成された利用者群を「ノード」と呼ぶ。
このノードを嗜好別に分類することにより、嗜好の似た者同士が密集するように仕向ける。
こうすることで同じ趣味を持った者同士が隣接するため、自分が求めているファイルをすぐ近くの誰かが持っていやすくなる。
すぐに目的のファイルを見つけることが出来ればその分だけ検索にかかる時間が減少し、キャッシュファイルの所有者が重複している可能性も出てくるため、多くの利用者から転送を受けられ、ダウンロード速度が上昇する。


5.Winnyを管理するプログラム

Winnyには、タスク管理、ノード管理、クエリ管理、キー管理という四つの主要プログラムが存在する。
タスク管理は、ファイルの検索からダウンロードまでの工程を管理する。
ノード管理は、自分以外のノード情報とそのノードとのコネクションなどを管理する。
クエリ管理は、ノード間のキー受け渡しなどを管理する。
キー管理は、キャッシュに対応したキーや、拡散や検索によって収集したキーを管理する。
Winnyではこれらの作業を「マルチタスク」と呼ばれる手法で同時並行処理している。


考  察:
本論で述べたような技術を導入し、それを正常に動作させるためには、実際にP2Pネットワークを形成して、正常に機能するかどうかを検証しなければならない。
P2Pネットワークを形成するには大勢の利用者の協力が必須であるため、その検証は困難とされている。
Winnyを開発向上させていく上で欠かせない協力者、それを担ったのは「2ちゃんねらー」達であった。
初期Winnyネットワークの基礎は彼ら2ちゃんねらーの協力により構築され、金子氏本人も述べている通り、彼らの意見はWinny開発にとって非常に貴重なものとなったのである。
Winnyがこれほどまでに完成されたP2Pネットワークを確立できたのは、開発に協力した彼ら2ちゃんねらーやそれを含める多くの人々が、Winnyを通じて大規模P2Pネットワークに関する数々の貴重なデータを製作サイドに提供したからだろう。

結  論:
Freenetに感銘を受けた金子氏は、本論で挙げたような新技術をP2Pに導入することにより、Freenetの欠陥を取り除くことに成功する。
よってFreenetという既存共有ソフトの存在がWinnyネットワーク形成に大きく影響していると言えるだろう。
また考察でも述べた通り、新技術の実装には利用者たちによる開発協力が大きく影響している。

Freenetという基盤、金子氏による奇抜なアイディア、そしてそれを支えた協力者たち。
こうして、Winnyネットワークは確立したのである。



参考文献:
Winnyの技術 / 金子勇著 ;アスキー書籍編集部編 東京 : アスキー 2005.10
はじめてのShare & BitTorrent /東京メディア研究会著 東京 : 工学社 2005.3
ファイル共有ツール入門 /東京メディア研究会著 東京 : 工学社 2005.2
超カンタン! BitTorrent :人気ファイル共有ツールのインストールと設定をやさしく解説!/ 東京メディア研究会著 東京 : 工学社 2005.6