Mac環境でIPFS入門

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る
         

はじめに

最近ブロックチェーンを始めとする分散型技術が再度注目されているように感じます。

しかし、分散型の概念はブロックチェーンの専売特許ではなく、以前からP2Pネットワーク技術などの様々な手法を用いて提案されてきました。

今回はそのP2P技術を用いたIPFSという分散型ストレージ技術について、環境構築からWebサイトのデプロイまで試してみたいと思います。

動作環境

  • macOS High Sierra 10.13.3
  • ipfs version 0.4.14

IPFSとは?

一言でいうならP2Pネットワーク技術を活用した分散ストレージシステムです。

正式名称はInter-Planetary File Systemです。日本語だと惑星間ファイルシステムになります。名前からも分かるように、かなりクレイジーなプロジェクトです笑

イメージ的には分散化されたDropboxみたいなものだと考えて下さい。

このシステムに保存されたファイルはP2Pネットワーク上に分散されて格納されるため、全ノードが全滅しない限り管理者不在のままシステムが維持され続けます。

もちろん一度アップロードされたファイルは完全に削除することはできません。

この辺りはブロックチェーンの特徴に非常に親和性があります。

既存のファイルシステムとの違い

既存のファイルシステムでは、URLのドメインから対象のファイルが格納されている場所を特定してアクセスすることが出来ます。

それに対してIPFSでは、ファイルをアップロードした時にデータをハッシュ化し、そのハッシュ値によってファイルを特定します。

つまり、ファイルのハッシュ値をネットワーク全体に問い合わせ、そのファイルが格納されているノードと直接やりとりすることが出来るのです。

環境準備

具体的なイメージを掴むには実際にやってみるのが一番なので、IPFS環境を構築します。

IPFSを使うためには、まずgo-ipfsをインストールする必要があります。

go-ipfsはIPFSデーモンサーバ、コマンドラインツール、コンテンツをHTTPブラウザに提供するためのHTTPゲートウェイなどが含まれています。

IPFSインストール

darwin Binaryamd64をダウンロードします。

go-ipfs

ダウンロードが完了したらアーカイブを解凍し、インストールスクリプトが存在するディレクトリに移動します。

インストールスクリプトを実行します。

バージョン情報が確認できたらインストールに成功しています。

IPFSリポジトリの初期化

以下のコマンドで、自分のアカウントに紐付いたIPFSリポジトリをローカル環境に作成します。
その時にコンテンツに署名するためのキーペアが発行されます。

初期化が成功されていることを確認するためreadmeを実行します。

ipfs catコマンドで各マニュアルを参照することができます。

Webサイトを公開

IPFSでは単一ファイルのアップロードももちろん可能ですが、フォルダごとアップロードすることで静的Webサイトをホスティングすることが出来ます。

簡単なサンプルサイトを用意して、実際にIPFSでホスティングしてみます。

サンプルWebサイト準備

相対パス指定でのファイルの読み込みが実現できるのか試したかったので、CSSファイルと画像ファイルを読み込むだけのシンプルなWebサイトを用意しました。

ファイル構造はこちら。

index.htmlファイルではそれぞれ別ファイルを読み込んでいます。

CSSは次の通り。

IPFSデーモンを起動

公開する前にデーモンを起動させ、世界中のノードと接続します。

ローカルのデーモンが起動しました。これでP2P接続されている状態になり、IPFS上へファイルをアップロードする準備が整いました。

ノードの接続状況をGUIで確認が出来るツールも提供されています。

http://localhost:5001/webui

自分が現在どのノードと接続しているか分かったり、ブラウザ経由でファイルのアップロードなどが出来るので大変便利です。

ファイルをIPFSへアップロードする

ファイル単体でアップロードするときはipfs add [File name]で実行します。

今回はWebサイトをまるごとアップロードしたいので、フォルダを指定して再帰的に追加するオプションで実行します。

一番最後のフォルダを示すハッシュ値を使ってWebサイトへアクセスすることが出来ます。

ローカルゲートウェイへアクセスする場合は、フォルダのハッシュ値を含めたURLでアクセスします。

http://localhost:8080/ipfs/QmaBhUgkGCC61ERT3yBZwQCEwTeX7occXD8KvreggY3yVb/

パブリックなゲートウェイへアクセスする場合は、以下の通りにハッシュ値を含めたURLへアクセスします。

こちらが試しに公開してみたWebサイトです。

https://gateway.ipfs.io/ipfs/QmaBhUgkGCC61ERT3yBZwQCEwTeX7occXD8KvreggY3yVb/

最後に

IPFSをセットアップして、シンプルな静的サイトをホスティングするところまで試してみました。

少し動作が不安定なときもあるので、実運用する場合は気をつけて下さい。

とはいえかなり面白いプロジェクトなので、これからの開発に期待です。

個人的にはこれにブロックチェーンを絡めればもっと面白いことが出来る気がしてます。

それでは。

参考

IPFS

IPFS入門 : 新たなP2Pハイパーメディア分散プロトコル

IPFS (The InterPlanetary File System) について半日を費やして調べてみた

スポンサーリンク

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。