こんにちは。秋月です。
TECHSCORE Advent Calendar 2018 20日目の記事です。
Webの父、ティム・バーナーズ=リーさんがオープンソースプラットフォーム「Solid」の開発プロジェクトを立ち上げ、というニュースが出回りましたね。Inruptというスタートアップでプロジェクトを進めているそうです。この記事はそのSolidがどんなものなのか触ってみた系の記事です。
目次
- Solidプロジェクトとは
- Solidの概要
- Getting Startedやってみた(Solidのサンプルアプリ作成)
- ところでtripleって何???
- バーナーズ=リーさんの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にかける想い
- セマンティックWeb委員会
http://s-web.sfc.keio.ac.jp/ - セマンティックWebとLinked Data - 国立情報学研究所
http://www-kasm.nii.ac.jp/papers/takeda/08/takeda08swim.files/frame.html - セマンティック・ウェブ - Wikipedia
https://ja.wikipedia.org/wiki/セマンティック・ウェブ - Resource Description Framework - Wikipedia
https://ja.wikipedia.org/wiki/Resource_Description_Framework - Web Annotation Ontology - Wikipedia
https://www.w3.org/TR/annotation-vocab/#web-annotation-ontology
またSolidのDocsに具体的な例が挙がっていました。
例)「あなたのビーチの写真に対しての私のコメント」データの表現
1 2 3 |
<https://mypod.solid/comments/36756> ← 主語(私のコメント) <http://www.w3.org/ns/oa#hasTarget> ← 述語(リンクタイプ) <https://yourpod.solid/photos/beach>. ← 目的語(あなたのビーチの写真) |
上記の場合は、Subject(主語)、Predicate(述語)、Object(目的語)と、RDFのtripleというモデルで表現されます。ちなみに述語にあるhasTargetというリンクタイプがオントロジーです。
感想