IPFSはWeb3.0時代のP2Pデータストレージシステムです。分散化されたデータ保存で安全性と利便性を追求します。IPFSとブロックチェーンの統合も注目されており、Web3.0ビジネスでの活用が期待されています。
本記事ではIPFSの概要、従来のデータストレージサービスとの比較、IPFSの活用方法を解説いたします。
この記事の構成
IPFSとは?
参照画像:https://ipfs.tech/
IPFS(InterPlanetary File System)はインターネットを利用した分散型のファイル/ストレージシステムです。データファイリングとデータストレージ、両方の機能を持ちます。ブロックチェーン技術と似た分散型システムのため、中央集権型データストレージ※1に比べてセキュリティの向上が期待できます。
※1 データストレージはデータを記録し保存する場所のことです。
IPFSの特徴
- 分散型とP2P
- ハッシュベースのアドレッシング
- 永続性
分散型とP2P※2
IPFSは中央サーバーに依存しません。ネットワーク上のノード※3によってデータの保管と配信を行います。データが特定の場所やサーバーに依存しないため、システムの一部がダウンしてもアクセスが保証されます。
※2 P2P(Peer to Peer)はネットワークに接続されたコンピューター同士が対等にデータを共有する通信方式を指します。
※3 ノードはネットワークをサポートするPCやサーバーです。
ハッシュベースのアドレッシング
IPFSではファイルやデータブロックはそれぞれ特定のハッシュ値※4によって識別されます。このハッシュ値はファイルの内容から生成されるため、同じ内容のファイルは常に同じハッシュ値を持ちます。このハッシュベースのアドレッシングにより保存データの重複を避け、整合性を確保できます。
※4 ハッシュ値はハッシュ関数によって得られる値です。ハッシュ値自体は「20f2f2 152514d7 …(例)」といった英数字の羅列です。
永続性
IPFSのハッシュベースのアドレッシングは、URLの「リンク切れ」という問題を解決します。IPFSではデータがネットワーク全体に分散して保存され、ハッシュ値で参照されます。特定のノードが停止してもデータは消失しません。
IPFSと既存データストレージの比較
個別のデータストレージサービスの特性はそのシステムの設計や実装によります。例えば、一部のクラウドストレージプロバイダーはデータの冗長性やデータ重複排除などの機能を提供します。機能の詳細は各プロバイダーに問い合わせが必要です。
ブロックチェーンストレージはIPFSを利用していないもの(Arweave、Storjなど)も含めた評価となります。FilecoinはIPFSを導入しています。
IPFS
IPFSはプロトコルです。ブロックチェーンベースのストレージにも導入されています。FilecoinやNFT.StorageはIPFSを基盤としています。
ローカルストレージ
ローカルストレージはエンドユーザーによるハードウェア保存を指します。使用料などはありませんが、ハードウェアを購入する際にコストがかかります。
クラウドストレージ
- Amazon (Amazon S3)
- Google (Google Cloud Storage)
- Microsoft (Azure Blob Storage)
- Dropbox
- Box
クラウドストレージは多くの企業によって提供されています。Web2.0においては主要なデータストレージです。
ブロックチェーンストレージ
- Filecoin
- Storj
- Arweave
- Sia
ブロックチェーンストレージはブロックチェーン技術を基にした分散型ストレージです。IPFSを導入しているプロジェクトも含まれます。
IPFSの開発元
参照画像:https://protocol.ai/
IPFSはホアン・ベネット (Juan Benet) 氏が2016年3月に提唱したプロトコルです。IPFSの開発/運営はベネット氏が設立したProtocol Labsが中心となって進められています。
Protocol LabsはFilecoin※5やlibp2p※6などのプロジェクトを進めています。いずれもIPFSを基盤としたP2P分散型のネットワーク構築を目指すものです。
※5 ブロックチェーン、暗号資産を活用した分散ストレージネットワーク。
※6 P2Pアプリケーションの開発を可能にするIPFSのオープンソースプロジェクト。
IPFS参加ノードの種類/役割
IPFSはP2Pネットワークであり、ネットワークの参加者は「ノード」と呼ばれます。ノードはデータストレージの提供者(ホスティングノード)になることも、データの消費者(ユーザーノード)になることもあります。これらの役割について詳しく見ていきましょう。
ホスティングノード
ホスティングノードは自分のコンピューターストレージをIPFSに提供します。他のノードのデータを保持し、参照できる状態にします。IPFS自体に報酬システムは組み込まれていませんが、Filecoinプロジェクトではホスティングノードが報酬を得ることが可能です。
FilecoinはIPFSを基盤としたプロジェクトです。ホスティングノードはFIL※7で報酬を得ることができます。
※7 FILはFilecoinネットワークで使用される暗号資産です。海外の暗号資産取引所で売買ができます。
ユーザーノード
ユーザーノードはネットワークからデータを取得するノードです。ユーザーノードはデータを必要とするとき、ネットワーク上のノードに要求を送ります。データはネットワークを通じてユーザーノードに伝送されます。
データ提供者に対する報酬の支払い方法はプロジェクトごとに異なります。Filecoinは使用時に支払いますが、Pinataはプリペイド式です。
参加ノードの役割は固定ではない
ホスティングノードとユーザーノードの役割は固定されていません。同じノードが両方の役割を果たすことも可能です。ノードは自分が持っているデータを提供する一方で、自分が持っていないデータを他のノードから取得することもできます。
IPFSの活用
- 分散型ウェブサイトの構築
- 大規模データの分散ストレージ
- ブロックチェーンとの統合
- データの永続性と更新管理
- ネット環境が不安定でもデータにアクセス
- 分散型アプリケーション(DApps)の開発
分散型ウェブサイトの構築
IPFSはウェブサイトやアプリケーションのデータを分散型ネットワーク上に保存します。中央集権型サーバーへの依存が減少し、データへのアクセスが高速化できる可能性があります。
大規模データの分散ストレージ
大量のデータを効率的に保存したい場合にもIPFSが役立ちます。科学分析などに使用されるビッグデータ、リアルタイムで蓄積されていく気象、交通、金融などの大規模データを安全に分散して保存できます。
ブロックチェーンとの統合
IPFSはブロックチェーン技術と組み合わせて利用することができます。Filecoinは現在進行中のプロジェクトですが、他のチェーンでも統合が期待できます。例えば、EthereumのスマートコントラクトにIPFSのハッシュ値を含めることで、大量のデータを効率的に管理できます。
データの永続性と更新管理
IPFSはデータの永続性と更新管理を提供します。ウェブのリンク切れ(404エラー)問題を防ぎ、データは永続的に保存されます。
また、IPNS(InterPlanetary Naming System)※8を使用した更新管理にも注目です。データ更新時には新たなハッシュ値が生成されるので、アクセスする側にとっては不便です。しかし、IPNSを用いれば一貫したハッシュ値をアクセスの窓口にすることができます。
※8 IPNSはハッシュ値をノードIDに紐付け、コンテンツにアクセスする際にノードIDを経由するシステムです。
ネット環境が不安定でもデータにアクセス
IPFSはデータをローカルにキャッシュ※9します。一度アクセスしたデータはそのコンピューターのローカルストレージに保存されます。ネット環境が不安定な場合でも、ローカルストレージから直接データを読み込むことができます。
※9 キャッシュはアクセスしたデータを一時的に保存することで、再度アクセスする際に高速に表示できるようにすることです。キャッシュには保持期限が設定されています。
分散型アプリケーション(DApps)の開発
IPFSは分散型アプリケーション(DApps※10)の開発にも利用できます。DAppsは中央集権的なサーバーに依存せず、ユーザー間で直接データを共有できます。IPFSはDAppsにおけるデータの保存と配信をサポートします。
※10 DApps(Decentralized Applications)はブロックチェーン技術を基盤とした分散型アプリケーションです。
IPFSの使用手順
IPFSの使用手順をIPFS Desktopを用いて解説します。IPFSにはいくつかの異なる実装環境※11があり、それぞれが異なるプログラミング言語で書かれています。Go-IPFS、JS-IPFSなどが主要なIPFS実装ソフトですが、ターミナル※12が苦手という方はIPFS Desktopを選択してみましょう。
※11 コンピューター関連用語としての「実装」はOSやデバイスドライバなどのソフトウェア、ハードウェアなどを実際に動作させることを指します。
※12 ターミナルはキーボードでコマンドを入力して操作するアプリケーションです。
IPFS Desktopのインストール
参照画像:https://ipfs.tech/#install
最初にIPFSの公式サイトからIPFS Desktopをダウンロードし、自分のコンピューターにインストールする必要があります。
IPFSはIPFS Desktopの他にもGo-IPFS、JS-IPFS、IPFS Liteなどで利用できます。
主要なIPFS実装環境には以下のものがあります。
IPFS Desktop
IPFS Desktopは、IPFSノード、ファイルマネージャ、ピアマネージャ、コンテンツエクスプローラーを1つのアプリケーションにまとめたGUIソフトです。直感的に使うことができるのでコマンド入力が苦手という方はIPFS DesktopでIPFSを利用しましょう。
Go-IPFS
Go言語を使用したIPFSの主要なコマンドラインツールです。Go言語は可読性が高く、シンプルなコード記述が特徴です。
JS-IPFS
JavaScriptを使用したIPFSのコマンドラインツールです。Webブラウザ内で直接動作するように設計されています。
IPFS Lite
Go言語を使用したIPFSのコマンドラインツールです。Go-IPFSより軽量であり、モバイルデバイスやIoTデバイスで動作を想定しています。
IPFSDesktopの起動
参照画像:https://docs.ipfs.tech/install/ipfs-desktop/#windows
インストールが完了したら、IPFS Desktopを起動します。
ファイルの追加
左側メニューから「Files」を選択します。その後、「+ Import」ボタンをクリックし、追加したいファイルを選択します。ファイルを選択すると、IPFSに追加されて独自のCID(Content Identifier)※13が生成されます。
※13 CIDはコンテンツを識別するためのハッシュ値です。
CIDの使用
+ Importで生成されたCIDを使用して、IPFSネットワークでファイルにアクセスできるようになります。
ファイルの共有
CIDを使用してファイルを他の人と共有することもできます。CIDがあれば生成者でなくてもファイルをダウンロードすることが可能です。
IPFS Desktopの場合、コマンドラインを通じて直接ハッシュ値を操作することはありません。CIDがデータの識別、アクセス、共有に使用されます。
IPFSソリューションツールの紹介
IPFSを使用する上で便利なソリューションツールを紹介します。
Brave
Web3.0ブラウザとして高い知名度を誇るBraveですが、IPFSもサポートしています。コンテンツの場所を指定するHTTP(S)と異なり、CIDを使用してコンテンツをダウンロードします。「ipfs://~」のURI※14をアドレスバーに入力することでIPFS上のデータを直接指定できます。
※14 URI(Uniform Resource Identifier)はWebページ、画像、音声、動画、APIなど、Web上のあらゆるリソースを識別するために使用される識別子です。
IPFS Companion
参照画像URL:https://docs.ipfs.tech/install/ipfs-companion/#prerequisites
IPFS CompanionはIPFSをブラウザで使用するための拡張機能です。Braveを使用しなくてもGoogle Chrome、Opera、Edge、FirefoxにIPFS Companionをインストールし、IPFSコンテンツをロードできます。
Pinata
参照画像URL:https://www.pinata.cloud/
PinataはIPFSのピン留め※15サービスを提供します。Pinataを使用することで、データを無料でIPFSにアップロード※16できます。NFTデータの保存にも使用可能です。
※15 ピン留めは特定のデータをノードに永続的に保持させる手段です。データはノード上のローカルリポジトリに保存されます。
※16 1GBまでの制限があります。
IPFSについてのQ&A
IPFSに関する疑問を分かりやすい言葉で回答していきます。
元データはどこにあるの?
IPFSでは、データは「ノード」(ネットワークに参加しているコンピューター)に分散して保存されます。
元データをアップロードしたユーザーのコンピューターは最初のノードです。データは他のノードにも複製されます。特定のデータを要求すると、ネットワークはそのデータのコピーを持っている最も近いノードを見つけ出します。
保存は暗号化されているの?
IPFSによるデータの保存は暗号化されません。しかし、ユーザーはデータをIPFSに追加する前に自分で暗号化することができます。
IPFSはデータのプライバシーを保証するものではなく、データの分散型保存と永続性を保証するものです。
保存データが失われる可能性は?
IPFSに保存されたデータが失われる可能性はあります。データがネットワーク上のノードから削除され、そのデータのコピーを持つノードがなくなった場合に起こります。
削除を回避するために「ピン留め」を使用してデータを永続的に保存することができます。
データは消せるの?
IPFSはデータをネットワーク全体から削除する機能を提供していません。個々のノードは自分が持っているデータを削除することができますが、そのデータが他のノードにコピーされていた場合、それらのノードから削除されません。IPFSがデータの永続性と完全性を重視して設計されているためです。
IPFSは無料で使えますか?
IPFS自体は無料で使用することができます。ただし、ノードを運用する場合はハードウェア、インターネット接続、電力などのコストが発生します。また、IPFSのソリューションサービス(Filecoin、Pinataなど)を利用する場合は利用料がかかります。
まとめ
IPFSは従来のローカル・クラウドストレージと比べてセキュリティ、コスト面で大きなアドバンテージがあります。ブロックチェーンとの統合が進むことで、Web3.0において大きな役割を果たしていくでしょう。
本記事ではIPFSの概要、従来のデータストレージサービスとの比較、IPFSの活用方法を解説させて頂きました。Web3.0ビジネスのお役に立てる情報となれば幸いです。