9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IPFSにファイルを保存してそれをブラウザに表示するまで

Last updated at Posted at 2020-01-22

IPFSを使ってみた

分散型のファイルストレージである、IPFSを使ってみたのでその流れについてメモしておく。
IPFSの特徴などはここで確認!!

やったことは、

  • ファイルをIPFSに保存する
  • Gatawayサーバーを通じて、ブラウザにファイルの内容を表示する

の2つ。

では、スタート。

IPFSのインストール

このサイトに書いてある通りに行った。

まずはここからOSに合ったものをダウンロードする
次に、解凍しgo-ipfsのフォルダに入り、install.shを実行する。

$ tar xvfz go-ipfs.tar.gz
$ cd go-ipfs
$ ./install.sh

以上のコマンドを順に実行した後に、

$ ipfs help

を実行し、helpが表示されると、無事にipfsが利用できるようになっている。ここでIPFSを初期化するために

$ ipfs init

を実行する。

ファイルをIPFSに保存する

ここでは、IPFSに保存したいファイルからIPFSオブジェクトを作成し、IPFS上に保存する。
今回保存するのは、test.txtという名前のファイルで中身はhelloとだけ書いてあるもの。

まずは、

ipfs add test.txt

出力結果

added QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN test.txt
 6 B / 6 B [============================================================================] 100.00%

ここで表示されたハッシュ値のようなものが、ファイルの識別子となる。

HTTPがロケーション指向型と呼ばれるのに対して、IPFSはコンテンツ指向型と呼ばれるのは、「どこのどのファイル」としてコンテンツを探すのではなく、この識別子だけを頼りに探すため。

出力されるハッシュ値はファイルにより異なるため、以下の作業は自身のファイルのハッシュ値を利用してください。

次に以下を実行

$ ipfs name publish QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN

出力結果

Published to QmUymJjNPcPny11LaonPjUSLvm73BQUpvxGFFmFP3MjXfE: /ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN

次に、IPFSのネットワークに参加し、自身のファイルを周りのノードに保存してもらう。

ipfs daemon

出力結果

Initializing daemon...
go-ipfs version: 0.4.22-
Repo version: 7
System version: amd64/darwin
Golang version: go1.12.7
Swarm listening on /ip4/127.0.0.1/tcp/4001
Swarm listening on /ip4/192.168.11.2/tcp/4001
Swarm listening on /ip6/::1/tcp/4001
Swarm listening on /p2p-circuit
Swarm announcing /ip4/127.0.0.1/tcp/4001
Swarm announcing /ip4/192.168.11.2/tcp/4001
Swarm announcing /ip6/::1/tcp/4001
API server listening on /ip4/127.0.0.1/tcp/5001
WebUI: http://127.0.0.1:5001/webui
Gateway (readonly) server listening on /ip4/127.0.0.1/tcp/8080
Daemon is ready

以上のようになるとOK

このターミナルは閉じずにそのままにしておき、以下の作業は別の画面で行う。

IPFSのネットワークに接続できているか確認するためには、以下のコマンドを実行する

$ ipfs swarm peers | head

出力結果

/ip4/129.204.135.89/tcp/4001/ipfs/QmaeVNMY5ru6uHEFiyDRbV4LWMMmdu7uS9vU7dLYUofkgy
/ip4/138.201.67.219/tcp/4001/ipfs/QmUd6zHcbkbcs7SMxwLs48qZVX3vpcM8errYS7xEczwRMA
/ip4/147.75.195.153/tcp/4001/ipfs/QmW9m57aiBDHAkKj9nmFSEn7ZqrcF1fZS4bipsTCHburei
/ip4/147.75.45.187/tcp/4001/ipfs/QmSPz3WfZ1xCq6PCFQj3xFHAPBRUudbogcDPSMtwkQzxGC
/ip4/147.75.70.221/tcp/4001/ipfs/Qme8g49gm3q4Acp7xWBKg3nAa9fxZ1YmyDJdyGgoG6LsXh
/ip4/147.75.80.110/tcp/4001/ipfs/QmbFgm5zan8P6eWWmeyfncR5feYEMPbht5b1FW1C37aQ7y
/ip4/147.75.90.11/tcp/4001/ipfs/QmVLb8bi8oAmLwrTdjGurtVGN7FaJvhXP5UM3s56uyqfxL
/ip4/147.75.94.95/tcp/4001/ipfs/QmXygeCqKjpcbT9E7jgSbAvcDnPaJp9gQDzEVFZ6zzjVc2
/ip4/147.75.96.47/tcp/4001/ipfs/QmVjLyXj8NtBUt1XoEWLmwwb9NPZJrRUsjppi8a3uw29CZ
/ip4/207.148.19.196/tcp/20074/ipfs/12D3KooWGXBbSZ3ko3UvoekdnnSrdmuFic3XHuNKvGcZyrH1mVxr

次に以下のコマンドで先ほどIPFSのネットワークに伝達したファイルを保持してくれてるノードの一覧を取得することができる

$ ipfs dht findprovs QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN

出力結果

QmUymJjNPcPny11LaonPjUSLvm73BQUpvxGFFmFP3MjXfE
QmQzustKyCbyy3BbpetySYk88D8mtS9No8xEJP7B5tV324
Qma8hyz3B3BWgSLyXBdDn6v4hCQv347XgMjszZoQZb1kss
QmYR4jxcGUTQZ7mH5DkfBSxpdJW5Y4CsfgHFfARLAV3goA

IPFSのファイルをブラウザから確認する

IPFS上のファイルをブラウザから確認するためには、IPFSのゲートウェイサーバーを利用する。

以下のURLでアクセスする。

https://ipfs-gateway.decentralized-web.jp/ipfs/QmZULkCELmmk5XNfCgTnCyFgAVxBRBXyDHGGMVoLFLiXEN

そうすると、先ほどのtest.txtの内容であるhelloと表示される。

今回利用したGateWay以外にも、https://ipfs.io/ipfs/ハッシュ値で利用できるものもある。
また、個人でGatewayを立てることもできる。

HTMLファイルを保存すれば、Webサーバーの代わりに利用することができる。

まとめ

IPFS???みたいな状態から初めて使ってみた。具体的なシステムの中身はこれから勉強します。

9
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?