次世代Webの最前線を知る 「IPFS Workshop Tokyo」レポート

10月14日、東京・渋谷のNeutrinoで「IPFS Workshop Tokyo」が開催されました。IPFS(InterPlanetary File System)は、ハッシュ化とP2Pネットワークを組み合わせて動作するハイパーメディアプロトコルのシステムです。現在のインターネットで主要なプロトコルであるHTTP(Hyper Text Transfer Protocol)を補完または置換するプロトコルとして位置付けられています。

今回はIPFS開発陣がNeutrinoに集結して、IPFSの仕組みやエコシステム、使い方などを紹介するハンズオンセミナーを日本で初めて開催しました。台風の影響で当初の日程から延期されたにもかかわらず、50名から60名ほどが参加する盛況ぶりでした。初心者であってもIPFSとは何か、またその具体的な使い方を理解できる内容になっており、このレポートでは、ワークショップの様子を紹介します。

会場の様子(渋谷Neutrino)
会場の様子(渋谷Neutrino)

How does it work

まずはじめに、Go言語で実装されたIPFSクライアントの技術リーダーであるSteven Allen氏が登壇して、IPFSはどのような仕組みになっているかを説明しました。

Steven Allen氏の発表
Steven Allen氏の発表

IPFSではデータをアップロードする際に、256KBより大きければchunking(データを分割)し、UnixFS形式でファイルとそのすべてのリンクとメタデータを表すためのブロック(もしくはブロックのツリー)を形成します。その後、IPLD(InterPlanetary Linked Data)と呼ばれる仕組みによって、アドレス指定およびリンク可能な分散型データ構造(Merkle DAG:有向非巡回グラフ)を作成します。

UnixFSファイルとチャンキングしたファイルの例
UnixFSファイルとチャンキングしたファイルの例

IPFSでは各データにCID(Content Identifier)と呼ばれるラベルが付与されます。このCIDはコンテンツのhashに基づいているため、それぞれのコンテンツに個別のCIDが付与され、異なるIPFSノードに同じコンテンツを追加しても、それぞれのコンテンツのCIDは同じとなる特徴があります。次にPathについてです。IPFSでは、URLではなくpathでコンテンツにアクセスします。たとえば、/ipfs/QMfoo/index.htmlのような表記のパスです。また、IPFSではファイルを編集するとハッシュが変わるため、IPNSを利用することでファイルのハッシュの代わりに自分のPeerIdを結びつけて利用します。

次に、ルーティングについてです。ルーティングテーブルをピアが保持することでルーティングを決めますが、P2Pネットワークでは各ピアが接続しているため、ルーティングテーブルは巨大になるという懸念があります。そこで、IPFSではルーティングテーブルを細かく分けて分散化(DHT:分散ハッシュ―テーブル)しています。そして、アルゴリズムに合わせて分散化されたルーティングテーブルの一部を知ることができます。距離のメトリックとして、XOR(Hash(CID)、Hash(Peer))を用いており、自身が知っている一番近いピアに問い合わせをして、アクセスしたいデータがどこにあるかを発見できます。

最後に、データ配布についてです。IPFSではBitTorrent(P2Pを用いたファイル転送用プロトコルおよびその通信を行うソフトウェアに強く影響されたBitSwapプロトコルがあり、これに準拠したピア間のブロック交換によってデータが配布されます。各ピアは自身が所持したいブロックリストと、自身が提供できるブロックリストを保持することで、ピア間でデータを交換することができます。

IPFS Ecosystem Growth and Adoption

IPFSのプロジェクトリーダーであるMolly Mackinlay氏が2番目の発表者として登壇し、IPFSのエコシステムの成長と採用について説明しました。

Molly Mackinlay氏の発表
Molly Mackinlay氏の発表

まずはじめに、IPFSではHTTPで採用されているドメインネームではなく、ハッシュ値をベースとしたコンテントアドレスによるパス表記だということを伝えました。そして、IPFSがいま取り組んでいる問題として、中央集権、オフラインで使えない、リンク切れ、セキュリティ問題などを挙げました。

次に、IPFSのコミュニティの成長について説明をしました。IPFSでは現在4,000以上のIPFSのコミュニティコントリビュータが北米やヨーロッパを中心に世界中に存在しているとのことです。

IPFSを活用したアプリ一覧
IPFSを活用したアプリ一覧

さらに、IPFSを活用したアプリ数の増加についてふれ、特にD.tube(STEEMブロックチェーンを活用した動画サイト⁠⁠、EVERIPEDIA(EOSブロックチェーンを活用したWikipediaのような百科事典サイト⁠⁠、BitTube(動画視聴時にマイニングさせる動画サイト)はそれぞれ1ヵ月に数百万ものアクティブユーザが利用しているとのことです。IPFSの需要は年々高まってきていることが伺えます。

具体的な活用例として、IPFSネットワークを介して分散データベースやリモートストレージなどを提供するオープンソースのツールであるTextile、インターネットの接続やネットワークの信頼に関わらず動作するメッセージアプリのberty、Ethereumアドレスに名前などの個人情報を付帯することでログイン処理の一元化や分散管理を簡単で安全にできるuPortなどが紹介され、IPFSを活用したさまざまなDapps(分散型アプリケーション)があることを説明しました。

さらに、IPFSへのアクセスが容易になってきているという状況を説明しました。コマンドラインを使わずにデスクトップアプリでIPFSにアクセスできるIPFS Desktopの紹介、Google ChromeやFirefoxなどのブラウザで拡張機能として利用できるプラグインの紹介、分散型WebプロトコルのチュートリアルであるProto Schoolなどを紹介しました。

Keynoteスピーチ・基調講演 ―IPFSとWeb3

IPFSとFilecoinのクリエイターであるJuan Benet氏が3番目の登壇者です。Web3.0やlibp2p、Filecoinが対処する問題などについて説明しました。

Juan Benet氏の発表
Juan Benet氏の発表

まずWeb3.0についてです。インターネットの出現を振り返り、ホームページなどのreadだけができるWeb1.0、SNSやメールなどのreadとwriteでインタラクションできるWeb2.0があることを説明し、それに対し、Web3.0はブロックチェーン等によってreadとwriteにtrustが加わって検証可能なものになると主張しました。このWeb3.0の利点として、分散化によって中央集権でないところ、すべてのインタラクションが検証可能であるところ、安全にデータを保持し共有できるところ、安全に発信できるところ、リーダーならびにライターのプライバシーがあるところ、などを挙げました。

次にlibp2pについてです。libp2pはP2Pネットワークのモジュラー・ネットワーク・スタックであり、P2Pネットワークを構築できます。libp2pは、IPFSをはじめEthereum2.0やPolkadot、Metamask、OpenBazaarなどさまざまなアプリケーションに使われており、JavaScript、Go、Python、C++など6つの言語で使用できるようになっているとのことです。

libp2pが利用されているアプリケーション
libp2pが利用されているアプリケーション

最後にFilecoinについてです。Filecoinは人々の情報を分散化し、効率よく、強力な土台になる分散型ストレージです。Filecoinが対処できるものとして、Cloudの分散化、データのコントロール、最適化ならびに検証可能なストレージなどを挙げていました。

Using IPFS is Easy ―簡単で便利な使い方

このワークショップを主催したProtoSchool TokyoリーダーのSenshi Onions氏が4番目の登壇者として日本語と英語を混じえて、IPFSの簡単な使い方を説明しました。

※)
ProtoSchool TokyoはProtocol Labsによって各地でコミュニティづくりやオンラインチュートリアルを提供しています。
Senshi Onions氏の登壇
Senshi Onions氏の登壇

まずはじめに、IPFSとEthereumブロックチェーンで構成されているデモサイトでのファイルのアップロードならびに取得のデモンストレーションを行いました。デモサイトでファイルをアップロードすると、ハッシュ値を得ることができます。httpのアクセスに応じて、IPFSのネットワークにデータをアップロードしたり、取得したりすることがIPFSのゲートウェイでできると説明していました。そして、このハッシュ値とキー値であるユーザIDなどを入力すると、Ethereumブロックチェーンにこのハッシュ値を格納できます。ブロックチェーンでマイニングが成功すると、キー値であるユーザIDを入力することで、ハッシュ値を取得できます。そして、このハッシュ値を入力すれば、アップロードしたデータが取得できます。

また、IPNS Key Name Pairというしくみを利用できることを説明していました。これは、任意の名前でキーを作成すると、常に固有のIPNS Nameが与えられるしくみです。このIPNS Nameに対して、IPFSのハッシュ値を結びつけることができます。これによって、IPNSのキーを使ってIPNS Nameを取得し、IPNSで結びつけたIPFSのハッシュ値のファイルにアクセスできるのです。HTTPでいうと、DNSのような役割です。もちろん、別のIPFSのハッシュ値(つまりIPFSにアップロードした違うファイル)に変更して結びつけることも可能です。さらに、これらのデモサイトで使われているAPIはオープンソースになっており、開発者もAPIを使えばIPFSを使ったこのようなデモサイトを作成することもできると説明していました。

他にも、もっとIPFSを簡単に使える方法として、デスクトップアプリ(IPFS Desktop)を紹介しました。ローカルのファイルをドラッグ&ドロップするだけでハッシュ値を取得でき、リンクデータの構造やマルチハッシュをグラフやコードで可視化できるとのことです。

Backup Humanity's Information on Mars

IPFSMainの共同創業者のNeo Ge氏が5番目の登壇者として、人々の情報をバックアップするというテーマについて発表しました。

Neo Ge氏による発表
Neo Ge氏による発表

貨幣制度は紀元前4世紀からはじまり、地域ごとに競い合い、その後中央銀行で発行され、人々はその価値を信じてきたという人類の歴史を背景に、暗号資産が分散型台帳であることを説明します。さらに、世界中にある核爆弾や隕石によって、人間が恐竜の二の舞になるリスクについてふれます。ほかにも、アレクサンドリア図書館は全書物を収集してきたという典型的な中央型ストレージであり、Amazon、IBM、Microsoftなどは現代のアレクサンドリア図書館であると主張しました。このような人類の歴史背景を振り返ると、中央集権は偉大なものを創造してきて、分散型は永遠のものを創造するとの考えを述べました。

そこで、IPFSとFilecoinは人々の情報をバックアップする強力な土台になる分散型ストレージであると主張しました。なんと、SpaceXプロジェクトとともに、火星にIPFSのノードを設立する計画があるとのことです。人間社会にIPFSとFilecoinが分散型ストレージでブロックチェーン革命を実現できると主張していました。ある人は生活を、ある人は文明を保存し続けられるそんな中で、あなたは何をバックアップしますか? という呼びかけでIPFSとFileCoinの将来についてのセッションが終わりました。

IPFSノードを火星に構築する計画が予定されている
IPFSノードを火星に構築する計画が予定されている

フリートーク・Q&Aセッション

最後のセッションは、Juan Benet氏曰く"IPFSコードベースのすべてを知り尽くす男" Jeromy Johnson氏の意向で、質疑応答コーナーを設けました。

Jeromy Johnson氏による質疑応答
Jeromy Johnson氏による質疑応答

いくつかの質疑応答がされた中で、代表として3つを抜粋して紹介します。

まず1つ目は「IPFSがGo言語を使う理由はなぜか?」という質問です。これに対し、⁠個人的にGo言語が好きだから。また、長年にわたって優れた言語であることから」という返答でした。

次に2つ目は「IPFSはブロックチェーンであるか?Filecoinはどうか」という質問です。これに対しては、⁠IPFSはブロックチェーンではありません。IPFSは中央的な状態はなく、シンプルにノードからノードへデータを移動するプロトコルです。IPFSは誰がデータを保管するかという問題に答えていないのに対し、Filecoinはストレージを保管するために通貨を払うことができ、分散化したところでデータを保存するために支払えるシステムで、システムを構築して、その上で非常に高いレベルの回復力と保証を提供します。」と答えました。

3つ目は「IPFSが貢献した例は何かありますか?」という質問です。これに対しては「1つ目の例は2年前にあったトルコ政府のウィキペディアをブロックした例を挙げました。政府がアクセス禁止した後、人々がIPFSノードをダウンロードし、データをホスティングし、Peer to Peerで多くの人がウィキペディアにアクセスできるようになったというものでした。2つ目の例はカタロニアがスペインから独立しようとした例です。スペイン政府が選挙情報サイトで人々が投票するか否かを検閲しました。そこで人々はIPFSで情報を公開しましたが、スペイン政府がgateways.ipfs.ioをブロックしても、カタロニアの人々がIPFSをインストールしてコンテンツはIPFSのネットワークで共有され続けました。」というJeromy Johnson氏が興味深いと思った事例を話していて、聴衆にとっても興味深い内容であり分散型ネットワークの利点を活かした事例を聞くことができました。

まとめ

以上、日本で初めて開催されたIPFS Workshop Tokyoをレポートしました。このイベントの1週間前に大阪で開催されたDevcon5では参加者のほとんどが海外のエンジニアでしたが、IPFSリーダーの意向によって、あえて日本のエンジニアに来てもらえるよう日本人向けにConnpassを使って集客するなどの考慮があったとのことです。台風19号の影響により開催が危うくなったものの、日程の延期だけにその影響をとどめ、このようなワークショップを開催していただけたSenshi Onions氏に深く感謝いたします。IPFSの重鎮が勢揃いして、IPFSの利点や将来性などが語られ、IPFSの利用の拡大と成長の可能性を強く感じたワークショップでした。ブロックチェーンが話題の中心になりがちではありますが、P2Pネットワークを使ったIPFSが話題になり、これからますます発展し、利用者が増えていくことを期待しています。

ワークショップではIPFSのTシャツやシールの配布、休憩時間や終了後には、おにぎりやたい焼き、さらに抹茶が振る舞われるなど、いたせりつくせりのワークショップでした。

おにぎりや抹茶のおもてなし
おにぎりや抹茶のおもてなし

おすすめ記事

記事・ニュース一覧