
IPFS(InterPlanetary File System)は、2014年にJuan Benet氏が立ち上げたProtocol Labsが開発する分散型ファイルシステムです。ファイルをURLではなく「コンテンツのハッシュ値(CID)」で参照する点が最大の特徴で、中央集権的なサーバーに依存せず、世界中のノードがピアツーピアでデータを保持・配信します。Web3やNFT領域での画像・メタデータ配信、検閲耐性のある情報配信、研究データの恒久保存といった用途で利用が広がり、「分散型Web」のインフラ層を担うプロトコルとして注目を集め続けています。
この記事の目次
- URLでなくハッシュで指し示す思想
- IPFSのアーキテクチャ
- 実利用シーンと制約
- Webへの組み込み方
- まとめ
URLでなくハッシュで指し示す思想

従来のWebは「場所アドレス」、つまり https://example.com/photo.jpg のように「どのサーバーの、どのパスにあるか」でファイルを参照します。この方式はサーバーが落ちたりURLが変わったりすると参照できなくなる「リンク切れ問題」を生み、また同じファイルが世界中に重複保存されることでネットワーク全体の効率を下げてきました。IPFSは発想を逆転させ、ファイルの中身そのものをSHA-256などでハッシュ化し、QmXoy... や bafy... といったCID(Content Identifier)で指し示します。
CIDが同じであれば内容も必ず同じであり、世界中のどのノードから取得しても改ざんは即座に検出できます。また、複数ノードに同じCIDが分散していれば、最も近いノードや最も応答の早いノードから取得でき、自然と分散配信が成立します。Juan Benet氏は2014年の論文でこのアイデアをまとめ、git・BitTorrent・Kademlia DHT・Self-Certifying File Systemsといった既存研究を組み合わせる形でIPFSを実装しました。現在はProtocol Labs主導のもとオープンソースで開発が続いており、Go実装のKubo(旧go-ipfs)とRust実装のIrohが主要実装になっています。
IPFSのアーキテクチャ

IPFSノードは、ローカルにブロックストアを持ち、ファイルを「ブロック」と呼ばれる単位(既定で256KB)に分割してMerkle DAG(有向非巡回グラフ)として保持します。上位のオブジェクトのCIDは、子ブロックのCIDから計算されるため、構造が確定したらどこから取得しても同じ結果になります。ノード同士はlibp2pというネットワーキングライブラリで接続し、Kademlia DHTを使って「このCIDを持っているノードはどこか」を分散検索します。
コンテンツを保持し続けるには「ピン留め(pin)」が必要です。ピンされていないブロックはガベージコレクションで削除される可能性があるため、確実に残したいデータは自分のノードか、Pinataやweb3.storage、FilebaseのようなIPFSピンサービスにピン留めしておきます。Protocol LabsはFilecoinという経済インセンティブ層を別途運営しており、IPFSのデータをFilecoinストレージプロバイダに保存しておくことで、長期保存と経済的持続性を担保する仕組みも整っています。
実利用シーンと制約

実際の利用例として、NFTプロジェクトの画像・メタデータ配置はIPFSの代表的なユースケースです。OpenSeaのNFTの多くは ipfs://bafy... 形式のURIでメタデータを参照しており、Cloudflare IPFSやIPFS Gatewayを介してブラウザから閲覧できます。また、ブロックチェーンエクスプローラーのEtherscanはサイト自体のIPFS版を公開し、独自ドメインが落ちても閲覧できるよう備えています。研究データの分野ではArweaveと並んでデータ恒久保存の選択肢として採用が進んでいます。
一方で、IPFSは万能ではありません。DHT検索とP2P接続のためコールドキャッシュ時のレイテンシは高く、平均で数百ミリ秒〜数秒かかることもあります。プライベートデータの保管には不向きで、暗号化前提の利用が基本になります。また、ピンサービスを使わない場合、誰も持っていないコンテンツは取得不能になるため、可用性の担保には費用が必要です。「分散しているから無料で永続」というのは誤解で、実運用では商用ピンサービスやFilecoinとの組み合わせが現実解になります。
Webへの組み込み方

IPFSをWebサービスに組み込む場合、ブラウザネイティブ対応はまだ限定的なため、HTTPゲートウェイを利用するのが一般的です。Cloudflare、Pinata、Protocol Labsなどが運営する https://ipfs.io/ipfs/ 形式のゲートウェイ経由でアクセスでき、サブドメイン形式 https:// を使えば同一オリジンポリシーをCID単位で適用できます。DNSLinkを設定すれば、独自ドメインを最新CIDに紐づけて自動更新する運用も可能です。
より本格的に分散性を活かしたい場合、Helia(JavaScript実装)をブラウザに組み込んでP2Pで直接ノード参加させる方法もあります。また、Brave、Operaなど一部のブラウザは ipfs:// スキームをネイティブ対応しており、IPFS Desktopを入れることでチームで運用するのも実用的です。アプリケーション設計では、コンテンツ更新時のCID切り替えをどう扱うか(IPNS、DNSLink、スマートコントラクト連動など)、プライベートデータの暗号鍵管理をどうするかが重要な検討項目になります。
まとめ
IPFSは、URLからコンテンツアドレスへというWebの基礎概念を組み替える野心的なプロトコルです。実運用ではピン留めやゲートウェイ運用といった現実的な制約があるものの、NFT・分散Web・研究データの永続保存といった領域で確実に地歩を築いており、従来のクラウドストレージと併用する形で活用範囲を広げていくでしょう。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント