
ズバリ次世代のHTTPです。
まずHTTPってなに?って人から
私たちはブラウザからWEBにアクセスするときに 毎回、欲しいコンテンツをサーバに問い合わせているわけです。
その手順をHTTPと言います。
例
自分:「Facebook上の俺のページちょうだい。」(リクエスト)
Facebook:「了解。探してみたらあったのでブラウザに返すね。」(レスポンス)
HTTPとは、要求して(リクエスト)、返す(レスポンス)という、この超シンプルな手順のことです。
URL(http://なんちゃら〜)というのはコンテンツの在りかがわかる住所です。もう本当シンプル。
一方でIPFSってなんでしょうね?
ちょっと遊んでみたのでざっくりメモ。
みなさんも、ぜひお試しあれ。
IPFSってなに?

一言で言うと、コンテンツをP2Pで分散化管理できるファイルシステム。
httpは直接サーバーにコンテンツを問い合わせるのに対して、ipfsはネットワーク中に散らばっている全ノードにコンテンツのハッシュを要求します。
ハッシュってのは、コンテンツを暗号化した文字列だと思ってください。
例だとイメージしやすいかもしれません。
httpは「Facebookサーバーにあるesディレクトリ以下の猫の画像をちょうだい。」
http://facebook.com/es/猫の画像.jpg
ipfsは「誰かこのQmTKZgRNwDNZwHtJSjCp6r5FYefzpULfy37JvMt9DwvXse(猫の画像のハッシュ)も持っている人いる?いたら誰でもいいのでちょうだい。」
http://localhost:8080/ipfs/QmVc6zuAneKJzicnJpfrqCH9gSy6bz54JhcypfJYhGUFQu/play#/ipfs/QmTKZgRNwDNZwHtJSjCp6r5FYefzpULfy37JvMt9DwvXse
HTTPというのは、「何があるか」より「どこにあるか」なのです。IPFSは逆で、「どこ」はあまり重要でなく、「何(コンテンツ)」を直接問い合わせるイメージです。
IPFSを使うと何がいいの?
ぶっちゃけ、HTTPでも問題ないのですけどねw
シンプルだし、そのシンプルさ故ここまでインターネットが発達しわけです。
それでもHsTTPには弱点があります。
- サーバーがシャットダウンされるとコンテツが見れない。
- リンク切れを起こす。
- ハックされても同じ、コンテンツやサービスが使えなくなる。
- サーバーを増設するとコストがかかり、中央集権化したサービスに頼りざるを得ない
- 故、HTTPは中央集権化したサービスを生み出す。
- HTTPは無駄が多い。(無駄な帯域を使う。無駄に遠くまで問い合わせる。)
歴史を振り返ると、焚書というのがあったと思います。政権や権力者の思想に合わない本を燃やすアレですね。
同じことをネット上のコンテンツにもできるわけです。 気に入らないサイトを削除したり、サーバーをシャットダウンするだけでいいので簡単です。独裁者が、自分に都合の悪いコンテンツを、バシバシ消していったらどうでしょう?
これまでの人類の叡智が失われるだけでなく、情報統制なんて簡単にできてしまいます。それはなんでできるかって IPアドレスで場所が簡単に特定できるからです。
一方でIPFSは、THE Permanent Webと説明されています。永続的なWEBです。
サーバーで管理せず、ビットコインみたいに全世界のノードで分散管理します。
- P2Pで分散管理するので、特定のサーバーに依存しない。
- HTTPがIPアドレスを問い合わせるのに対して、IPFSはコンテンツ(ハッシュ)そのものを問い合わせる。
- リンク切れを起こさない。
- 自分に一番近いノードに問い合わせるので早い。
- コンテンツはGitみたいにヴァージョン管理できる。
IPFSってのは、そもそもそのインターネットの思想に近いわけです。みんなでコンテンツを共有しあって、権力者からも情報統制されない世界。
どうですか?人類の叡智が永続化する世界ですよ。
IPFSの立ち上げ方
※わたしは:Mac OS X
tarで解凍してipfsフォルダを/usr/local/bin/以下に移動。 (実際のファイル名はもっと長いです。)
tar xvfz go-ipfs.tar.gz
mv go-ipfs/ipfs /usr/local/bin/ipfs
ipfs helpってコマンド叩いて、以下が表示されたらおめでとう! 必ず最初にipfsってコマンドがつきます。
> ipfs help
USAGE:
ipfs - Global p2p merkle-dag filesystem. ...
Gitに似てますね。 initするとRSA公開鍵ができますね。これで自分のPeerのIDができます。
> ipfs init
initializing ipfs node at /Users/jbenet/.go-ipfs generating 2048-bit RSA keypair...done peer identity: Qmcpo2iLBikrdf1d6QU6vXuNb6P7hwrbNPW9kLAH8eG67z to get started, enter:
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme
catコマンドでreadmeファイルが読めますね。
ipfs cat /ipfs/QmYwAPJzv5CZsnA625s3Xf2nemtYgPpHdWEz79ojWnPbdG/readme以下が表示されるはず。
Hello and Welcome to IPFS!
〜以下省略
早速オンラインにつなげてみましょう。
別ターミナルを開いて、daemonを起動してください。
これで自分がPeerとなり、外部と接続可能になりました。
> ipfs daemon
Initializing daemon... API server listening on /ip4/127.0.0.1/tcp/5001 Gateway server listening on /ip4/127.0.0.1/tcp/8080
本ターミナルに戻って、ipfs swarm peersと入れてみましょう。実際に接続された外部のノードが表示されます。
> ipfs swarm peers /ip4/104.131.131.82/tcp/4001/ipfs/QmaCpDMGvV2BGHeYERUEnRQAwe3N8SzbUtfsmvsqQLuvuJ /ip4/104.236.151.122/tcp/4001/ipfs/QmSoLju6m7xTh3DuokvT3886QRYqxAzb1kShaanJgW36yx /ip4/134.121.64.93/tcp/1035/ipfs/QmWHyrPWQnsz1wxHR219ooJDYTvxJPyZuDUPSDpdsAovN5 /ip4/178.62.8.190/tcp/4002/ipfs/QmdXzZ25cyzSF99csCQmmPZ1NTbWTe8qtKFaZKpZQPdTFB
ブラウザ経由のWebコンソールで見るとつながっているのがわかりますね。画像だと565台と繋がってます。 (今回はChromeで開きました。Safariは何故かダメでした・・・)

ある程度他のノードと接続されたのを確認できたら、コンテツにアクセスしてみましょう。以下はquick-startにあった動画です。
ipfs cat /ipfs/自分のハッシュ/./quick-start
↓動画 http://localhost:8080/ipfs/QmVc6zuAneKJzicnJpfrqCH9gSy6bz54JhcypfJYhGUFQu/play#/ipfs/QmTKZgRNwDNZwHtJSjCp6r5FYefzpULfy37JvMt9DwvXse
ブラウザで立ち上げると、水鳥が魚群を襲う動画が出てくると思います。サクサク動いてました。接続されるノード数が多いのと関係あるのか?

ポイントは、これはサーバーから配信されているわけでなはないです。 近い人のノードから寄せ集めたのですね。
コンテンツはサーバーに預けず、IPを問い合わせるのではなく、コンテンツはハッシュにして、全世界のノードから集めるってことですよ。
コンテンツを追加するのは簡単
追加はaddコマンド+ファイル名です。アクセスする方法も簡単。ハッシュになったURLをブラウザに入力すればOK。httpじゃなくてipfs.ioになっているのを注目です。
> ipfs add cat.jpg
added Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
これでアクセス。
ipfs.io/ipfs/Qmd286K6pohQcTKYqnS1YhWrCiS4gz7Xi34sdwMe9USZ7u
まとめ
とまあ、今回はコマンドラインからやりましたけど。こんなのが当たり前にスマホからできるようになったら、サクサクとコンテツをやり取りできるようになりますね。
実はこれ、ブロックチェーンと親和性が高いです。なぜなら、ブロックには容量がでかいコンテンツそのものでなく、文字列だけのハッシュだけ格納すればいいわけです。大事なコンテンツがコピーやハックされることなく、より安全に管理されますね。
参考:HTTP is obsolete. It's time for the distributed, permanent web
オススメWebサービス:Kamakura Travel Chatbot