P2Pの定義2008年版
「P2Pじゃないとできないことって何ですか? - effyの日記」 に対して 「P2Pじゃないとできないことって、たぶんない」 を書いたんですけど、それに対する補足というか、 ここ数年の悩みでもある「P2Pの定義とは何か」の最新版として。
「Re:P2Pじゃないとできないことって何ですか? - IKeJI diary(2008-06-09)」 にある2例は、 どちらもユーザ間の直接通信に注目してますが、 ユーザ間の直接通信が即P2Pの定義かというと、そうではないと思うんです。 というのはユーザAがApacheを動かして、 ユーザBがwgetで取りにいく、というのでも、おお雑把には実装可能です。 SSHサーバとSSHクライアントでもいいです。 「SSHサーバとSSHクライアント」と言っているのだから、 クライアントサーバモデルそのものじゃないですか。 (あと僕はFukutommyではなくてFuktommyです)
まあクライアントサーバモデルはP2Pとは直交する概念で、 「サーバを使わないのがP2P」と言うときの「サーバ」とは別の概念なんですけどね。
そういうことを踏まえて、P2Pをどう定義するかというと、
- ユーザ間で直接通信をするもので
- ユーザからは1つのパッケージとして見えるもの
なんじゃないかなあと思う次第です。 ユーザ間通信については自明だとして、パッケージの形態について説明すると、 ファイル同期ツールみたいなのを1つインストールすればいいのがP2Pで、 DNSの設定、SSHサーバのインストールと設定、SSHクライアントのインストールと、 3つやらないけばならないのはP2Pではない、となります。
この差はSkypeと電子メールでも同じで、 あれだってネットワーク図を描けばほとんど同じになるんですけど、 DNSとMTAの2つの設定が要る電子メールと、 クライアントソフト1個で済むSkypeの差です。
このあたりは通信相手の検索が、DNSによる名前解決で実装するのか、 あるいはそのネットワーク専用のアカウント検索(DHTなどによって)で実装するのかの 差が大きいのかもしれません。 裏でDynamicDNSを使っている実装があったら、どういう扱いになるのかな。
WinMX型のファイル交換・共有ソフトであれば、 DNS+Apache+Wget+検索サーバに分割して実装することも可能かと。
Winny型だと、これは難しくて、 WinnyそのものをP2P以外の方法で実装するというのは無理かなあと思います。 このあたりは「P2Pだと便利なこと」と「P2Pでないとできないこと」の境界になって、 むしろ言葉の問題という気もしますが。
この辺は、よこたんの言う
たぶんP2Pの本質は仮想化です。
(6月10日 今日のTop「P2Pじゃないとできないことって何ですか?」 P2P today ダブルスラッシュ)
と似ているのかもしれない
(cf. [再掲]P2P再考(2) 我が手にサーバを P2P today ダブルスラッシュ)。
って、 「P2Pソフト=アップロード機能+ダウンロード機能 のまとめ」 と同じこと言ってる…