2024.10.21
お互い疑心暗鬼になりがちな、経営企画と事業部の壁 組織に「分断」が生まれる要因と打開策
リンクをコピー
記事をブックマーク
Aki@めもおきば氏(以下、Aki@めもおきば):では「Winnyのネットワークのおもしろさ」ということで話をしたいと思います。ふだん、技術系同人誌を「めもおきば」というサークルで出してるAkiと申します。15分ほどお時間いただきます。よろしくお願いします。
さて、今回の構成ですが、前半でWinnyのネットワークがどういうものだったかをおさらいをしながら、後半ではWinnyがたくさんのバージョンアップを重ねて最終的なかたちに至ったわけですが、そのバージョンアップのダイジェストみたいなものを振り返りながら、Winnyの開発史みたいな感じで振り返っていこうかなと思っています。
というわけでWinnyのネットワークがどういったものだったかをおさらいをしようと思うのですが、さらにその前に、WinnyはP2Pと言われる技術ですが、P2Pと(言っても)いろいろなものがあるので、その分類や基礎知識から入っていこうと思います。
P2Pには、いわゆる「ピュアP2P」と呼ばれるものと「ハイブリッドP2P」と呼ばれるものがあります。(スライドを示して)一番下にありますが、データの転送と通信先を探す、あるいはファイルを探すような検索の部分の2段階で、それぞれがいわゆるクライアントサーバーのサーバーでやるのか、あるいはいわゆるP2Pのネットワーク、どこかにサーバーがあるのではなくて、相互の通信だけで全体の機能を影響しようとするP2Pのモデルを使うものとの2種類に分けられて、それぞれがよくクライアントサーバー、ハイブリッドP2P、ピュアP2Pと呼ばれたりします。
当時はやはりPCの性能もインターネットの性能も正直あまりよくなかったので、「検索の部分はやはりサーバー使わないと厳しいよね」というところがあって。(それで)最初はハイブリッドP2Pから、(サーバーの)代替技術として入ってきた感じになります。
例えば、大元のファイル共有の最初に広まったNapsterとか、Winnyの前に流行していたWinMXだったりとか、BitTorrentなんかもそうですね。こういったものがあります。
それに対してWinnyをはじめとしたピュアP2Pとしては、GnutellaとかFreenetとか。BitTorrentのDHTのモードもそうだし、最近はEthereumとかIPFSとか、いわゆるブロックチェーン系のネットワークとか分散システムもピュアP2Pの仕組みでできています。
ピュアP2Pの検索ネットワークも大まかに2種類に分けられて、非構造化オーバーレイネットワークと構造化オーバーレイネットワークの2種類あります。Winnyは非構造化オーバーレイネットワークに属しますが、逆のほうから(説明を)言うと簡単で。
“構造化されている”というのは(つまり)何かと言うと、要はハッシュ値とかそういった数値がノードに割り当てられていて、そこからネットワークの構造が計算で定まるネットワーク(のこと)なんですね。
IPFSやEthereumっていうのは、Kademliaという分散ハッシュの仕組みをベースに一意にネットワークのかたちが決まるようになっていますが、WinnyやWinnyが元にしたと言われているFreenetやGnutellaはそういった構造化がされていないので、オーバーレイネットワークと呼ばれるアプリケーションのネットワークの中のネットワークでメッセージを投げて、「誰がこのリソース持ってるかな?」ということをどんどん順繰りに探していくような動作をします。
というわけで、WinnyはピュアP2Pの非構造化オーバーレイネットワークという分類になりますが、じゃあWinnyのネットワークがどういう仕組みで動いてるかというと、けっこうシンプルなんですね。
基本的には2種類の仕組みで動いています。1つはアプリケーションでネットワークが出来ていて。それぞれが動いてるPCのことをノードと言いますが、ノードの間でそれぞれが通信を張っていて。
Winnyでは検索リンクと呼んでますが、その検索リンクを介して「一番左下のノードAさんはどんなファイルを持ってますよ」という情報を、自分のIPアドレスとファイルの情報をセットにして、オーバーレイネットワークの上に流していきます。
点線で広まっていったとおりに検索リンクを通してファイル情報が広まっていきます。
今度は右側のBがポエムを探そうとして。そうすると、検索クエリを今度はオーバーレイネットワークの上に流していきます。そうすると、ノードCの上で左から来たファイルの情報と、右から来た検索クエリの結果がうまくマッチングされます。
その後、ノードBに返します。そこにはノードAのIPアドレスが書いてあるので、「じゃあそこに接続しにいきましょう」ということで転送リンクを別に張って、ファイル本体の転送をする。こういった仕組みが、Winnyのネットワークのすごくざっくりとしたあらましになります。要はこれだけのすごくシンプルな話なんです。
なので、やってることは左のほうからファイルの情報を広げていくのと、検索クエリを投げるとそれが数珠づたいに広まっていって、来た順に戻っていく。戻ってきた結果に書いてある内容から転送リンクを張って、ファイルを取りにいく仕組みになってるわけです。
Winnyのすごい特徴としてあげられるものに、自動ダウンロードという機能があります。これが何かと言うと、先ほどはファイルの情報がどんどん広まったと言いました。
こういったファイルの情報があっちこっちに広まっていった結果、自動ダウンロードを設定しているノードまでファイルの情報が届くと、それを自動的にダウンロードの対象として設定する。
いわゆる検索条件を指定していくと、地引き網のように手当たり次第にダウンロードをかけていくようなモードが、Winnyのすごく特徴的な動作の1つになっています。
もう1つのWinnyの特徴として、積極的にデータ中継を行う動作があります。これが何かって言うと、先ほど同じように左からファイルの情報が拡散されていきますが、その時に、Aさんから出た時はファイルの持ち主にはAのIPアドレスが書いてありますが、Cに届いた時にはその所有者、IPアドレスをCのものに書き換えます。そうすると、右の時に届いた時のファイルにはCのIPアドレスが書いてあるので、ノードBはノードCに接続しにきます。
ノードCは実はそのファイルの本体も持ってないけれど、Aが持っていることを知っているので、もう1回つなぎにいく動作をします。そうすると、Bから見た時にCを経由してAからファイルを取ってきているので、Cにはデータが全部中継されることになります。
その結果、ダウンロードが終わった時にはノードCのところにもそのキャッシュができるような仕組みになっています。
これも先ほど言ったとおり、ファイルの情報を拡散していく時に、そのキーの中身に書いてあるIPアドレスを書き換える動作で実現しています。
もう1つ。これだけだとやはり大規模は厳しいので、Winnyの検索ネットワーク全体が自己組織化するようになっています。1つは回線速度というものによって上流と下流が決まっていて、それぞれに対して「上流は何本まで」「下流は何本まで」といったように上下関係ができるようになっているのと、あと(もう1つは)検索キーワードという、先頭3つのキーワードを使うことによって、横方向でクラスタリングをしていくような構成になっています。
ここでは新規につながってきた検索キーワード1つに指定しますが、“ねこ”というキーワードをつないでWinnyのネットワークに参加しようとすると、いろいろなノードの情報を得ることができると思います。例えば、クラスタリングキーワードが“ポエム”というノードと“ねこ”というノードが両方が接続しようとしたら、“ねこ”のほうが優先されるような仕組みになっています。
こういった仕組みによって、ネットワークを自己組織化していきます。
こういったように、Winnyのネットワークはすごくシンプルなものの組み合わせでできています。
おさらいをすると、検索ネットワークによるファイル情報の拡散と検索。あとは回線速度とクラスタリングを使って、ネットワーク全体を自己組織化していく。ただ積極的にデータ中継をしていくことによって、キャッシュをバラ撒いていく。
これは細かくは説明しませんが、データ中継を使うことによって、いわゆるファイアウォール、ナットの裏にあるような外部から接続できないノード、WinnyではPort0と呼んでいましたが、Port0の対応をやっていました。
(次回に続く)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.21
40代〜50代の管理職が「部下を承認する」のに苦戦するわけ 職場での「傷つき」をこじらせた世代に必要なこと
2024.11.20
成果が目立つ「攻めのタイプ」ばかり採用しがちな職場 「優秀な人材」を求める人がスルーしているもの
2024.11.20
「元エースの管理職」が若手営業を育てる時に陥りがちな罠 順調なチーム・苦戦するチームの違いから見る、育成のポイント
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.19
がんばっているのに伸び悩む営業・成果を出す営業の違い 『無敗営業』著者が教える、つい陥りがちな「思い込み」の罠
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.15
好きなことで起業、赤字を膨らませても引くに引けない理由 倒産リスクが一気に高まる、起業でありがちな失敗