2019/02/27
こんにちは。IPFSって言葉を聞いたけど、イメージがわかないし、意味がわからない。
全体的に、なんの話をしているか知りたいし、分散型ファイルシェアサービスだって聞いたけどよくわからないとか。パソコンは詳しくないけど、IPFSがどういったものがイメージを持ちたいって疑問に答えます。
たぶん、IPFSって言葉、これからインターネットや仮想通貨の話で、ときどき出てきます。意味はわからない方が普通だし、わからなくても、まったく問題ないです。
でも、Google検索はエンジニア向けの説明しかない。仕事として携わっているエンジニアと、ある程度、どんなものかイメージがわけばいいんだけどなって人で、説明して欲しいことって違うはずなので、
今日はパソコンが得意じゃないよって人向けに、IPFSのイメージを説明します。ポイントだけわかっちゃえばいいので。知ってしまいましょう!そんなに難しくないですよ。
必要なところだけ拾い読みして見て下さい。でも、まずはこれ。IPFSって、なんの話をしているの?ってところ。全体的には、
1 インターネットがつながる仕組みのこと
です。これバージョンアップしようって。とくに、今のインターネットにつながる仕組み。HTTP方式っていう「接続方式」だと問題あるからもっと良くしたい。やり取りできるデータの量を多くして、接続スピードをものすごく早くしたい!ってのが一番メインにあります。
HTTP方式って、知っているように、URL「http://…」ってアドレスから、欲しいコンテンツを見たりするやり方だけど。ちょっと問題があるのでIPFS方式に変えることで問題解決しちゃおうっ!て話をしています。
だから、ユーザーとしてはブログを見たり、動画を見たり、メールを見たりするところが変わるわけじゃないけど、その背後の事業者の人。
たとえば、プロバイダーだったり、サーバーとか設備を持ってプログラムを動かしているところが、新しい接続方法でも対応できるように、自分のところの設備に、新しいIPFS方式の機能を盛り込んでくよって話です。
くくりとしては、インターネット全体がつながる仕組みの大きな設計図のところです。ファイルとかデーターのやり取りとか、プロトコルと呼ばれるインターネットの接続方式の新しいやり方。
ここでいうと、IPFSっていうアイデアをスペックという「技術仕様書」に落とし込んで、その後、プログラムに書き換えてあげる。それがコード。そして、関連するマシンに書き込む。
今後は、このやり方みたいなものにも対応できるように、設計図や考え方を決めるので、関係するところは、設備に機能を盛り込んでねって話をしてます。
アイデアが全世界に反映されるので、これもホントはすごいことなんですよ。
2 IPFS方式で解決したい
ちなみに、IPFS方式ってHTTP方式をなくして置き換えるって発想でなくて、併用運用です。機能追加。HTTP方式に、IPFS方式の機能も実装させて、タンデムで動かす。
動画は、アメリカ スタンフォード大学で行われたセミナーです。最初の方で言っているけど、IPFSだと、今あるネット接続の問題をほとんど解決できるってところに期待をしています。
興味がある人は、内容がわかりやすいので、よかったら見て下さい。ただ、インターネットのつながる仕組みを聞いたことがある人じゃないと難しいので、そういう人は、わかるところだけ流し見でいいかと思います。
少し、この動画から画像を引用します。
1 今のHTTP方式のつなぎ方って
メールがわかりやすいかな。インターネットでやっていることって、データのやり取りです。データをもらったり、送ったり。基本は文字をデータにしたもの。
それがまとまると、文字ファイルとか、画像ファイルとかいったりするけど。メールでやり取りしているのは、文字とか画像とかをデータにしたものの固まり。
ブログもそうで、あなたが今見ている、この記事も「文字とか画像」とかのデータがまとまった。文字ファイルや、画像ファイルを見ています。
実際にパソコンで見ているときには、サーバーってところにデータが入っているので、あなたがサイトにアクセスした後、あなたのパソコンに、文字とか画像とかが送られています。
ブログに興味がある人は、すごく安定しているし、サポートが気持ちいいからエックスサーバーをおすすめするけど。どうつながっているかのシンプルな図もあった方がいいので、少しこのサイトから画像を引用しますね。
https://business.xserver.ne.jp/
こんな感じです。右側のサーバーにブログ用に書いたことをアップしておいて、読む人は、ここからデータをもらって中身を読む。
もちろん、ブログを書いている人も、自分のパソコンに。文字ファイルとか画像ファイルのもとになるものを持っているけど。
それをサーバーっていう一箇所において、みんながアクセスできるようにしています。もちろん、この間の雲(クラウド)がインターネットのイメージだけど。
ほんとは、この間にもデータセンターみたいなビルがあって、DNSサーバーとかルーターみたいな機械がつながっていて、どこにファイルがあって、そのデータを送りましょうねみたいなことをしています。
でも、とりあえずファイルを一箇所において、使い人は、URLをベースにその場所にアクセスして、欲しいものを引っ張ってくる。こういったやり方を、集中システムといってます。分散してファイルをもっているやり方の反対の言葉。
(画像引用:スタンフォード大学動画:上記URL)
イメージ図はこれです。真ん中の赤いところにサーバーがあって、他の点になっているパソコンとかから、みんながアクセスします。インターネットの仕組みは今ほとんどこれです。
1箇所だけが、正規のファイルを持ってますよってところ。もちろん、ブログを作っている人のパソコンにオリジナルに元データがあるから、仕組みとしては、そこにアクセスしてもいいんだろうけど。
電源落とすと見えなくなっちゃうから、こういった24時間動いているところに管理してもらっています。あとは、ここではあまり説明しないけど、セキュリティも関係しています。色々なところで共有、同じファイルを持たすと、悪意ある人が、書き換えしたりもするので、出入口のところで、セキュリティもやってもらっているんですね。
だから、もちろん、この仕組み自体は合理的です。
2 それじゃあ。1箇所にデータを置くと何が問題なの?
故障とかでもそうだけど、1箇所でデータを持っていると、なにかあったときに、アクセスできなくなります。
なにかあったときに。バックアップのように、ファイルをみんなで分散して持ってしまって、ネットワークを途切れさせない。いつでも必要な情報を取り出せるようにする。
だから、持っているファイルを、みんなのパソコンに分散させちゃおう!って考え方。
アルファベットのZ型で簡単に見ると、
①もっとコスト安く効率的につなげるようにしたい
②メディアとしてはすごくもろい。サイトに書いてくれている情報が簡単に消える
③イノベーションによる飛躍や、みんなに平等アクセスが必要なのに、検閲することが出来てしまう
④簡単にダウンする。ネットワーク障害に弱い
ここには書いてないけど、ちょっとだけ意見をいれますね。あなたが通信の仕事で働くと、たぶん、必ずいわれることがあって「僕らの仕事って人のコミュニケーションにかかわる仕事だよ」って、聞くことあるはずです。
もちろん、言い回しは違うけどね。でも、だから、つなげることが大事だし。なくなったりする仕事じゃないよって。必ず、いわれます。
ベースにあることって、「すべての人が、欲しいときにいつでも必要な情報にアクセスできるようにしたい。コミュニケーションの手段をとぎれさせたくない」っていうのは、絶対に思っています。
問題意識って「①必要な情報にすぐアクセスできるよう」にしたいってことと。「②途切れさせたくない」ってこと。
3 いつでもつながるように
だから、まずサービス断とか。ダウンさせたくないです。地震・津波・火事とかもそうだけど。集中システムって、ファイルを1箇所で持っているので、そこがダウンしたら、まず終わりです。
プラス、間にあるネットワークもそう。データの送り手と受け手の2点間の話だから、真ん中のどこかがダウンしたときも、何もできなくなります。
画像だと、端末側で、ネット接続できる環境がないということで飛行機(JALは無料wi-fiとかもってますけどね)。あとは、サービスプロバイダーが落ちているときを出しています。
下のサイトが日本語訳をつけてくれているので、画像を一部引用しますね。
これが、バックボーンに依存しないってこと。真ん中に「惑星間通信」ってあるけど。これ、たとえです。
IPFS方式の一番目標にしていることだけど、IPFSって、「Inter Planetary File System」:惑星間ファイル転送システムの略。プラネットって単語が見えるでしょ?
惑星と惑星の間で、ファイルをやり取りするシステム作るよって。ものすごく距離がある場所との通信でもサクサクつなげたいってことです。IPFS方式が最終的に目的にしているところ。
ちなみに、これはなにを言っているかというと。ネット接続も完全にフリーな国だけじゃないよってことを言っています。
これですね。エジプト政府がある日、インターネット規制をかけてトラフィックがなくなって書いてあります。検閲です。
それに、もともと自由でない国もあります。右の地図の紫のところは、そもそもなんでもアクセスできるわけではないし、黄色のところも制限があります。
自由なネット接続が認められているところは、意外と、少数派なんですよ。1箇所で持っていると、権力が情報のコントロールできちゃいます。
あとは、コンテンツの寿命も短い。荷物として、100kgのミネラルウォーターを1人で持つのと、100人でわけて持たせるのでは負担が違います。
結構コンテンツも、1箇所で持たせるとものすごいデータ量になるし、そこの判断で簡単に削除されちゃうって話です。残りにくい。
なので、1箇所だけに情報やコンテンツ置くのをやめて、みんなのパソコンにファイルを分散させたいと思っています。
そうすれば、ファイルを持っている1箇所や、そこまでの間がダウンしていても、他のパソコンから違ったルートでファイルを渡せます。
ちなみにレジリエントっていうのは、もとに戻せるって意味です。ほら、今は1つのところでファイルもっているけど。消した場合も他のパソコンでデータが残っている可能性が高いでしょ。ファイルの履歴を管理しているので、どこかに残っている可能性は高いってことです。
とくに、このHTTPではファイルを1度に1つのマシンからしかダウンロードできないってのは、そうですよ。
スタンフォード大学の動画でも、有名なカンナムスタイルの音楽動画とか200MBだとしても、1度につなげる人の数もあるし、1つのセッションごとに送れるデータ量もあります。
もらう側は遅くなるし、送る側は1つのマシンなのでけっこう負荷がかかりますよね。23億人が見ている動画なので、テラバイトの1000倍の単位でペタがでてきているけど、500ペタものやり取りをしているって書いています。
ちょっとイメージわかないけど、地理的な場所からしても、色々なルーターを通ってコンテンツを見ているだろうしね。
ちなみに、この動画は知っている人の方が多いけど、これです。31億回再生されています。僕は同じ動画でも、キム・ヒョナがでているバージョンの方がいいけど、これだって7億回は再生されています。
これ、わざわざ遠くまで行ってつなげているってことです。どう解決しますか?
3 分散させればいいんじゃないの?
1 ファイルを持っているところが、1つのマシンだけだとおぼつかない
集中システムって、1つのマシンがファイルを持っているから、受け手の方は、遠くまで取りにいかないといけないし、どこかに障害があるだけで、簡単にダウンしてしまうというのがありました。
まず、ファイルにアクセスして来そうなマシンにも持ってもらうことにします。ファイルは分散して、みんなにもってもらう。
2 データをもらうだけじゃなくて、きみのマシンもデータを送るの手伝って!
もう1つネックがありました。1つのマシンから、たくさんのマシンにファイルをだすと、スピードが遅くなるという問題。
これは送るマシンが1個なのに。受ける側はたくさんくれくれってぶら下がっている問題。
これは役割分担があるから。基本サーバーとかは送るだけ。ブログとか見ている人は、データをもらうだけってのがネックにあります。
IPFSでは、それぞれのパソコンが送る方も手伝うって考え方でスピードを上げようって考えています。ちょっとわかりずらいですよね。
3 BitTorrence(ビットトーレンス):ファイル共有を高速化するための通信プロトコルを参考にしょう
この考え方は、すでに仕組みがあります。ファイルを1回分散して、ファイルが必要なマシンみんなで送受信に協力するってやり方。
BitTorrenceってファイル共有ソフトがあるんだけど。人気があるコンテンツほど、早く配信がされるって仕組みになっています。
ちょっとCornelさんの動画から引用します。
画像で説明します。
通常は、ファイルを分割して、ちょっとしたパーツで送ります。
もちろん、たくさんのユーザーがいれば、ものすごく時間がかかります。
だけど、こうやって一度パーツをもらってきたら。
メインのマシンからデータをもらうだけじゃなくて、他のパソコンが足りてないパーツをお互いに送受信して埋めることもできます。
人気のあるファイルほど、配信が速いってこういうことです。ファイルにアクセスしたことのあるマシンの数が送信する側にかわるから。
こういうマシンが「受け手だけじゃなく、送り手にもなること」をP2P(ピアツーピア)といいます。どのマシンも役割が対等だよ!って意味です。
でも、まだ問題が残りますよね。このファイルって、どのパソコンが持っているの?ってところがわかりません。
これは、トラッカーっていうサーバーが、どのパソコンがパーツを持っているか把握しています。
IPFSの考え方も、これを参考にしています。
4 分散されたデータって誰が受け持ってるの?
1 コンテンツ指向型?なにそれ。
今まではシンプルでした。1つのマシンがファイルを持っていたから、URLのアドレスを機械が読めるIPアドレスにして、コンテンツがあるところまでつなげていました。
IPFSだとファイルを持っている人。いっぱいます。なので、探すときも、パソコンとしても、コンテンツを持っている人だれなの?で探します。IPFSの検索ってコンテンツから辿っています。一番近くで持っているとこ。
でも、このイメージですよ。持っている人は、1度ファイルにアクセスした人が持っています。なので。トラッカーっていうサーバーが、どのパソコンがパーツを持っているか把握しています。
IPFSでもこのやり方になるはずです。だから、そのファイルにアクセスしたことがあるパソコンが持っていて、人気があるコンテンツ程。他のパソコンとかもデータを送るのを手伝ってくれるので、サクサクしているはずです。
ちなみに、ここはユーザーとしては何も意識していないですからね。
ユーザーとしては、インターネットに接続するという、すっごくベーシックなところだから、やり方はそんな変わらない。アドレスの表記はちょっと見た目が追加されるだろうけど。
Google検索でサイトにアクセスし、ブログを読んだり、動画を見たり、ツイートする。もちろん、新たにパソコンを買い替えたり、ソフトをダウンロードする必要はない。
このIPFSの話は、全部事業者とかバックヤードがやることです。スペック表をもとに、データセンターの設備とか持っているところが、新しい接続方法のファイルを更新してあげる。たぶん、そんなやり方。目で見えないプログラムで走っているところだから。
とくに、HTTPとIPFSが併用でやるっていっているし、導入されても意識しないかなって思います。
ただね。
2 テスト環境でさわっている人は当然操作が必要
今 IPFSのソフトってダウンロードできます。ダウンロードの意味がわからない人もいるだろうけど。
IPFSの仕組みを作っている人は、色々なエンジニアに触ってもらって、この考え方の不具合を洗い出して欲しいと思っています。シンプルにいきなりインターネットの接続方式を変えて商用のサービスにボンッ!ってだしちゃうと、どんな悪影響があるかわからないから、
なので、今、テスト環境として、IPFSってソフトをダウンロードしてきて、動かすことができます。もちろん、将来的には黙っていてもネットワークに機能が盛り込まれるけど。
その前に、ソフトをダウンロードして、色々な意見を言うことができます。
場所としては、インターネット上のGitHub(ギットハブ)ってところに公開しています。
https://github.com/ipfs/go-ipfs
これですね。ちなみに、GitHub(ギットハブ)って、インターネット上で、開発中のソフトとかをシェアするときに使われる場所です。テスト環境として、コミュニティの中の人だけとか。ちょっと使う人を絞りたいってときに使われます。試験運用をしたい場所です。
だから、今、IPFSのソフトの動作を試すような人は、ほんとだったら機械がやってくれることを自分の手で操作するからめんどくさいはずです。
ソフトを持ってきて、コマンドとかで、自分の持っているファイルをアップしてシェアしないといけないでしょ?
このコマンドラインを打つってところが、やっぱり試験環境なんですよ。あと、スピードも、まだそんなサクサクしてないはずです。理由は、そのファイルにアクセスしているパソコンが多くないと、送り手になってくれないからです。
ちなみに、「ノード」って言葉が気になる人もいるかもしれないけど。基本は各パソコンのことです。ただ、パソコンだけじゃなくて、その間にある事業者が持っているマシンも含みます。
ハードというより、その「機械の機能」でくくっている言葉。僕が理解しているのは「ノード」って「リンク」と機能を分けている言葉で、信号やデータをただ横に流す機械や伝送路のことを「リンク」って言っています。
ノードは、主にプログラム処理。データを見て、どこからどこに何を送る。そのときに、こういった処理をするって役割をもったマシン群です。
3 データは書き換えられない
ここは、すみません。わからないところが多いです。
IPFS上のファイルは、いじれないです。消すことができません。とはいっても、永続性が保証されないってのはわかります。ちょっといつまで残るかはわかりません。
ホントはソフトとかアプリを作る人は気になるところでしょうけどね。でも、大きなファイル共有システムみたいなものだから、ウイルスとか付け足せないように、データ自体がいじれないというやり方を取っています。
ユーザー操作としては、よくわからないです。変更は、違ったファイルのバージョンとして残るので、ワードファイルとか、ブログのテキストファイルとか。文章書き換えたいときどうするの?アイコンとか形をかえたときって意味では、当然自由に変更できるはずだけど。
文字とかって結構、書き直すので、どのタイミングで違ったファイルのバージョンとして残るのかはちょっとわかりません。
ただ、ファイルとしては、ハッシュ値っていう暗号化されたアルファベットで扱われます。ここだと、example.comってファイルを、QmW98pJrc6FZ6って見えますよね。
ネットワーク上は暗号化された番号で管理してますよってことと、ファイルの内容が変わると、このハッシュ値もかわります。
IPFSは、2013年の12月頃から開発が開始されていますが、今後、内容が少しずつ公開されていくのかなって思っています。
それでは、本日も記事を読んで頂きありがとうございました。