IPFSネットワークで画像を読み取る方法を解説!

IPFSとは、分散型ファイルストレージ(以下、「分散型ストレージ」)構築のためのシステムのことで、ブロックチェーンの課題を解決するのではと注目を集めています。

この記事にたどり着いた方は、IPFSの概要や仕組みを理解し、実際にIPFSを使ってみたいという方が多いのではないのでしょうか。

そこでこの記事では、

  • IPFSの使い方を知りたい方
  • IPFSネットワークに参加し画像を読み取る方法を理解してみたいという方

を対象に、IPFSネットワークへの参加方法からIPFSネットワークから画像を読み取る方法、IPFSネットワークに画像を共有する方法まで画像を用いてわかりやすくご紹介します。

なおこの記事で筆者が活用したPCは、MacBook ProとMccBook Airの13-inchで、バージョンはCatalinaです。

IPFSの使い方については「PFSの使い方をわかりやすく解説~環境構築からファイルのダウンロード方法まで~」を参考にしてみてください。

【前提】IPFSネットワークに参加しよう

画像を読み取るにはまず、IPFSネットワークに参加する必要があります。

IPFSネットワークに参加するまでの手順は下記の3つです。

  1. IPFSのインストール
     → go-ipfsのインストール
  2.  IPFSリポジトリの初期化
  3. IPFSネットワークにPeerとして参加
    →demonを起動させ、IPFSにPeerとして参加

では、それぞれの手順を画像を用いて順にご紹介します。

IPFSのインストール

IPFS distributionsのページに行き、go-ipfsをダウンロードしてください。

⑵ダウンロードしたファイルをデスクトップに移しておきましょう。

⑶ターミナルを開いてください。

※ターミナルとは

ターミナルとは、MACにインストールされているコマンドラインのことです。
コマンドラインとは、プログラムを記述したファイルを読み込み、プログラムとして実行するためのツールのことです。

command + spaceでスポットライト検索を開き、ターミナルと入力しenterキーを押せばターミナルは開くことが可能です。

⑸ターミナル上で、下記のコマンドを順番に実行(入力後にenterキーを押す)してください

cd Desktop (デスクトップディレクトリに移動)

cd go-ipfs(デスクトップディレクトリ内のgo-ipfsのフォルダに移動)

pwd(現在開いているディレクトを確認 )

→実行後 Desktop/go-ipfsを表示されれば問題ないです

./install.sh(go-ipfsをインストールするためのスクリプト)

⑹「ipfs help」コマンドを実行し正常にインストールができているか確認しましょう。

ipfs helpを入力し、

 

USAGE

  ipfs  – Global p2p merkle-dag filesystem.

と表示されれば、インストールは成功です。

なお、「USAGE  ipfs – Global p2p merkle-dag filesystem.」の下にメッセージが表示されますが、そちらは無視しても今回は問題ございません。

go-ipfsのインストールが完了したので、次にIPFSリポジトリの初期化をしていきましょう。

※リポジトリとは、ファイルを管理する場所のようなものです。
IPFSリポジトリでは、IPFSに関するファイルを管理します。

IPFSリポジトリの初期化

IPFSリポジトリを初期化するために、ターミナルで「ipfs init」コマンドを実行してください。

ipfs initを実行することで、ホームディレクトリにフォルダが生成されます。

これで、IPFSネットワークに参加する準備は終了です。次の章でIPFSネットワークへの参加方法を紹介します。

IPFSネットワークに参加

IPFSネットワークに参加するために、ipfs daemonコマンドを実行しましょう。

【必読】ipfs daemonコマンド実行時の注意点

daemonコマンドを実行し、IPFSネットワークに接続することで、リポジトリに登録した情報がネットワーク上に公開されます。そのため、公開したくない情報はネットワークに参加する前に、リポジトリを再度初期化するようにしましょう。

 

リポジトリの初期化コマンド

cd ~ /.ipfs(IPFSリポジトリに移動)

rm -rf .ipfs(IPFSリポジトリのデータを削除)

ipfs init(リポジトリの初期化)

 

①ipfs daemonコマンドを実行

daemonコマンドを実行することで、go-ipfsがネットワークに参加しているノードを自動的に探し、接続してくれます。

②ipfs swarm peersコマンドを実行し、ノードとの接続状況を確認しましょう。

ターミナル上で command + Tを実行して別タブを開いたら、下記のコマンドを順番に実行してください。

cd Desktop (デスクトップディレクトリに移動)

cd go-ipfs(go-ipfsディレクトリに移動)

ipfs swarm peers(ノードとの接続状況を確認するコマンド)

 

/ip4から始まる、各パラグラフが自分と接続しているノードの情報です。

ちゃんとノードと接続されているのが確認できますね。これで、IPFSネットワークへの参加は完了です。

次の章からはいよいよ、IPFSネットワークから画像を読み取る方法をご紹介します。

IPFSネットワークから画像を読み取る方法

出所:https://ipfs.io/

IPFSネットワークから画像を読み取る際には「cat」コマンドを活用します。

先ほどipfs swarm peersを実行したタブで、下記の「ipfs cat」コマンドを実行してください。※ipfs daemonを実行したタブではないので注意してください。

ipfs cat /ipfs/QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ/cat.jpg >cat.jpg
※これはIPFSネットワーク上に存在する、猫の画像を読み取るためのコマンドです。
「QmW2WQi7j6c7UgJTarActp7tDNikE4B2qXtFCfLPdsgaTQ」は猫の画像をハッシュ化した値です。

実行してから数秒経ち、下記のようになったら完了です。

ここで、猫の画像が表示されないじゃん!と思った方もいるかもしれませんね。

でも大丈夫です。デスクトップに移動させた、go-ipfsフォルダを開いてみたください。

猫の画像が追加されているのがわかりますね。

追加された画像を開き、下記のような愛くるしい猫の画像が開ければ成功です。

これで、画像の読み取り方法は理解できたのではないでしょうか。

次にIPFSネットワークに画像を共有する方法をご紹介します。

IPFSネットワークに画像を共有する方法

IPFSネットワークに画像を共有する手順は下記の3つです。

  1. IPFSリポジトリに画像を追加
  2. IPFSネットワークに参加
  3. IPFSネットワークに画像が共有されているか確認

では、それぞれの手順を画像を用いて順にご紹介します。

 

IPFSネットワークに画像を共有する場合は、著作権フリーの画像にするようにしてください。

著作権フリーの画像はPixabayなどでダウンロード可能です。

IPFSリポジトリに画像を追加

IPFSリポジトリに画像を追加する際には、「add」コマンドを活用します。

ターミナルで、ipfs add 「ファイル名」を実行してください。

なお今回は、下記のpuppy.jpegを使用します。

ターミナルで、ipfs add puppy.jpgを実行します。

実行したら、

added QmcBbeP1Cm5JR8g6jEYFnYgPtPaPM4dWQhnaT7qi2dVM2b puppy.jpg

と表示されましたが、「QmcB・・・」というのは画像をハッシュ化したデータのことです。これでリポジトリへの追加は終了です。

IPFSネットワークに参加

実は、ipfs daemonコマンドを実行すると、ネットワークにPeerとして参加するとともに、IPFSリポジトリにあるデータをネットワークに共有することが可能です。

そのため、ipfs daemonコマンドを実行すれば、先ほど保存した画像はネットワークに共有されます。

これで画像の共有は完了です。

次にちゃんと画像がネットワークに共有されているか確認していましょう。

IPFSネットワークに画像が共有されているか確認

IPFSネットワークに画像が共有されているか確認するために、ipfs dht findprovs 「画像のハッシュ値」を実行しましょう。

なお、子犬の画像のハッシュ値は

「QmcBbeP1Cm5JR8g6jEYFnYgPtPaPM4dWQhnaT7qi2dVM2b」です。

 

ターミナルで、

ipfs dht findprovs QmcBbeP1Cm5JR8g6jEYFnYgPtPaPM4dWQhnaT7qi2dVM2b

を実行した後に、「QM~」という文字列が表示されれば共有が完了しているということです。

IPFSで画像を管理する分散型アプリが増加中

この記事では、非エンジニアの方でも理解できるように、IPFSの環境構築から画像の読み取り、画像の共有方法までご紹介してきましたが、まとめると下記の通りです。

□  IPFSの環境構築方法

  • IPFS distributionsのページでgo-ipfswpダウンロード
  • ターミナルで./install.shを実行

□  IPFSのファイルの参照方法

  • ipfs cat ハッシュ値を実行

□  IPFSネットワークから画像を読み取る方法

  • ipfs cat ハッシュ値コマンドを活用

□  IPFSネットワークへの画像共有方法

  • ipfs add 「ファイル名」でリポジトリにファイルを追加
  • ipfs daemonコマンドでネットワークにPeerとして参加
  • ipfs dht findprovs ハッシュ値でファイルの共有状況を確認

環境構築から画像の共有方法まで紹介してきましたが、ご理解していただけたでしょうか。

実はブロックチェーンは画像などの大容量データの保存に向いておらず、ユーザーのプロフール画像(アバター)や証明書などの画像をIPFSで管理しているアプリケーションが増加しています。

つまり、今回みなさんはIPFSの活用方法を実際に試してみたということです。

なおIPFSは画像の共有以外でも多岐にわたって活用されていますので、気になる方はIPFSが活用されているサービスをリサーチしていくのも良いかもしれません。

【2020年版】IPFSを活用したサービス76選~加速するIPFSの利用~

IPFS参考情報

ちなみにIPFSについては、別の連載でも解説していますので、参考にしてみてください。

またこの記事は、下記サイトを参考にしながら執筆しています。

About 中井剛 98 Articles
ひろぴーが運営するCXR のメンバー。 これまでに、FXや仮想通貨関係の営業、メディア運営、新規サービス立上げ、広告運用、バイヤー業務、ウォレット営業、Webライティングなど、幅広く活動を行う。趣味はラジオ体操とジム、ラジオを聴くこと。