Solidさわってみた - ティム・バーナーズ=リーさんの想い

こんにちは。秋月です。
TECHSCORE Advent Calendar 2018 20日目の記事です。

Webの父、ティム・バーナーズ=リーさんがオープンソースプラットフォーム「Solid」の開発プロジェクトを立ち上げ、というニュースが出回りましたね。Inruptというスタートアップでプロジェクトを進めているそうです。この記事はそのSolidがどんなものなのか触ってみた系の記事です。

目次

Solidプロジェクトとは

I've always believed the web is for everyone.

バーナーズ=リーさんがもともと描いていたビジョンからWebが遠ざかっていて、便利さと引き換えに一部のテックジャイアント(例えばGAFAとかですかね)に個人のデータを引き渡さなければならない現状を変え、自分のデータは自らが完全に管理できるようにしたい、というプロジェクトです。

参考
https://www.inrupt.com/blog/one-small-step-for-the-web
https://solid.inrupt.com/about

Solidの概要

Solid POD(Personal Online Data Store: 以降POD)という個人のストレージ領域に個人のデータを保存し、他の人やサービスに読み書き権限を与える機能を持ちます。具体的な機能としては、多くのSNSが持っているような以下の機能です。

  • ID管理
  • 認証とログイン
  • 認可とアクセス許可リスト
  • メッセージングと通知
  • フィードの集約や購読
  • コメントやディスカッション

またここでいう個人のデータとは、氏名、生年月日や住所、電話番号といったもの以外に、自分の書いたなんらかのコメントや写真、アドレス帳、カレンダーのイベント、ジョギングで走った距離なども含まれます。またPODはSolid Server上に配置できるのですが、そのSolid Serverは個人で立ててもいいし、自分の会社やその他リストアップされたプロバイダーからも選択できます。PODはいくつでも所持でき、またそのPODはSolid Server間を自由に移動させることもできるそうです。

イメージ図

なんとなくイメージできました??

参考
https://github.com/solid/solid
https://solid.inrupt.com/how-it-works

Getting Startedやってみた(Solidのサンプルアプリ作成)

Getting StartedでSolidのサンプルアプリを作成します。(「fuga社のApplicationX」部分です)

Step 0

まずはテストデータが必要なのでマイPODを作成します。

 

プロバイダーは適当にバーナーズ=リーさんのInrupt社選択

 

登録画面に進めると、、、なるほど、最後の行

We will generate a WebID when you register, but if you already have a Web ID hosted elsewhere that you’d prefer to use to log in, enter it here

マイPODが複数持てる意味がこれですね。WebIDと呼ばれているIDで管理する形ですね。

 

マイPOD ゲット!私のWebID、これですね。

https://akizuki.inrupt.net/profile/card#me

 

上記のWebIDにアクセスしてみると、公開ページもできていました。

Step 1 ~ Step 5

次に本題のサンプルアプリを作成していきます。

書かれている通りに作業。適当にWebサーバーたててユーザー認証用のsolid-auth-clientライブラリ追加してと。動くかテスト。

「Log In」ボタンクリックしてウィンドウがポップアップ。だがプロバイダにInruptが無い、、、プロジェクト推進してる会社が何でリストに出てこないねん、、、
「Log in with custom provider」をクリックするとURL入力欄現れたのでWebID入力してユーザー名とパスワードを入力すると、、、

 

無事ログイン完了

Step 6

ログアウトボタン追加。ちゃんと動いてます。

Step 7 ~ 10

他人のプロファイルを表示するためにテキストボックスを準備し、RDFlib.jsなるものを追加。RDFlib.jsはPODに格納されたデータを操作するためのライブラリとのこと。他人のプロファイルを取得し、その人の名前を指すtripleを探し表示するコードを追加します。

は?triple???

まぁとりあえず気にせず先に進めます。(RDF、tripleという名前はあとで出てきます)
友人の情報が表示できるようにコード追加。自分のPODには友人がいないのでチュートリアルにある通りテストとしてInrupt社のRuben VerborghさんのPODの情報(フルネームと彼の友人を表示)を参照してみました。

https://ruben.verborgh.org/profile/#me

Step 11

友人のリストをリンク表示に変更。以上、Getting Started終了。おつかれさまでした。

ところでtripleって何???

tripleって何だろうと、気になったので調べてみました。普通に英単語の意味を調べましたがよくわかりません。
SolidのDocsをあさると用語集があり、

Triples - An RDF concept that comprise of subject, predicate, and object. For example, storing the data “I have the name John” would be represented as a triple.

ここから芋づる式にずるずると、、、

バーナーズ=リーさんのSolidにかける想い

どうやら1999年にバーナーズ=リーさんによって提唱されたセマンティックWebの世界がSolid内で展開されていることがわかりました。SolidはすべてのデータをLinked Dataとして表すことによって他のPODのリソースと接続し、そのデータ表現にセマンティックWebのRDF(Resource Description Framework)やオントロジーが用いられています。そもそもSolidの略は「Social Linked Data」。なるほどです。お恥ずかしながらセマンティックWebがよくわかっていませんでしたが、以下のリンク先の情報でなんとなく概要がわかりました。リンク先の皆様、感謝。とてもわかりやすかったです。

またSolidのDocsに具体的な例が挙がっていました。

例)「あなたのビーチの写真に対しての私のコメント」データの表現


上記の場合は、Subject(主語)、Predicate(述語)、Object(目的語)と、RDFのtripleというモデルで表現されます。ちなみに述語にあるhasTargetというリンクタイプがオントロジーです。

感想

今回Solidを調べるうちに、バーナーズ=リーさんのSolidというか、Webにかける想い、そしてこのプロジェクトが彼の集大成に近いプロジェクトであるようにみえます。技術的な面で疑問や懸念は色々と思い浮かびますが(例えばSolid Serverを提供するプロバイダーは色々な外部サービスからアクセスされる膨大な負荷に耐えられるのか?など)、個人的には高貴で素晴らしいビジョンだと思います。
もしSolidのプロジェクトが広く普及されるようになってくれば、個人の情報は自身が管理できるようになり、フェイクニュースのような問題も(無くなりはしないだろうけど)緩和、テックジャイアントの独り勝ち状態がリセットされGDPRのような法律も不要となりますね。そして我々シナジーマーケティングのCRM(Customer Relationship Management)もVRM(Vendor Relationship Management)へとビジネスを転換していく必要もでてくるでしょう。

 

またSolidのキーワードは「非中央集権」だと思いますが、最近は他にもブロックチェーンやIPFSもそうですね。世間の潮流は徐々にこちらに傾いているのでしょうか。10年もすれば、また今とは全然想像もできない世界に変わってそうで、今後世界がどうなることやら楽しみです。
Comments are closed, but you can leave a trackback: Trackback URL.