僕は以前、 P2P で Web を実現する為のソフトウェアとして、
に、ついて調べた事をブログに書いた様な記憶があるのですが、 今日は、それとは別のプロジェクトで、
と言う、似たようなプロジェクトについて調べたので、その辺りを書きます。
[datproject (dat protocol) とは何か?]
そもそも、前述した IPFS が何者か、と言うと、これは、
P2P ベースのネットワークで Web っぽい事をする
ための実装群であるのですが、実装の起点としては golang ベースで、それに追従する形で、node.js 等の実装が存在する、という感じになっています。
それに対して、 datproject の方が開発している dat protocol とは何か、というと、これは、
既存の Web も活用しつつ、大規模なデータを P2P も使って共有しやすくする
という感じのプロジェクトで、主に JavaScript の実装が起点となっており、 Node.js でも Browsers でも動く、という感じになっています。
また、大雑把なイメージとして、 [IPFS が P2P ベースで 馬鹿みたいにデカい Object Storage を作っている] 、と言うイメージ なら、 dat の方は P2P も使う大規模データ用の git っぽいのを作っている 、と言う感じのイメージになるかと思います。
ただ、とは言いつつも、どちらも実際には P2P ベースの 分散 Web が実装できない事もないので、 P2P ベースの分散 Web と言う文脈から見た限りでは、重複する部分も有るかなぁ、という印象です。
dat と ipfs は競合するか?
ぶっちゃけ、用途によります。
と言うか、先にも述べた様に、IPFS は Object Storage っぽさが有るのに対し、dat は git っぽさが有るので、この辺りは使い分けなんじゃないかなー、と僕は思ってます。
あと、dat は基本的には分散データベースとして使われるのを最初から想定していて、割と分散データベースとして使うには十分そうなライブラリが揃っているのに対し、 IPFS の方はちょっとその辺りが弱そうな感じなので、その辺りも含め、要は使い分けなんじゃないかと。
また、dat は基本 JavaScript ベースで、Node.js とかブラウザを念頭に作られているのに対し、IPFS は起点の実装が golang である様に、どちらかというと、それ単体で使うのを想定している感じなので、その辺りも、dat と IPFS の違いなんじゃないかなーと思います。
dat と ipfs の使い分けは?
基本、 IPFS は Object Storage みたく、例えば、
(Bitcoin 等で) 同期の時間を短くするために、既存の Blockchain を配布する
という用途に向いているのに対し、 dat は、
構造的なデータを共有できる様にして、アプリケーションからデータベース的に使う
という感じの用途が向いているのではないか、と僕は思っていて、そのため、なんと言うか、静的な ファイル配信に IPFS は向いている感じで、dat は 動的なデータを操作するのに向いている、と言う感じではないかな、と僕は考えています。
以上
まー、 P2P ベースの [分散 Web ] という文脈から言うんであれば、
データベースとして使うなら dat を使い 、 static なファイル配信には ipfs を使う、
と言うのが、それぞれの特徴を生かせる使い方なんではないかな、と僕は思います。はい。