触れる環境ができたので、Personiumを利用しどんな風にアプリケーションを構成するべきなのか整理してみる。ドキュメントの一番先頭に、以下のような図で説明されています。それはどんな構造でどんな風に実現されているか、なかなかわかりづらいですね!?たぶん"私"の位置が重要なのでしょうね。矢印が「一方通行」と「双方向」の違いも大きいのかと想像できます。"ペルソニウム"ではなく"ペルソニアム"なのでした。会とかでOSSチームの皆さんとお会いしても、どうしても意識しないと"ペルソニウム"と発音してしまうのですが、プロダクトの名称を間違って呼ぶのは大変失礼なこととは認識していても、"ペルソニアム"とは発音しづらく...この年齢になると、音で覚えたことって身体に染み付いていてなかなか修正できなく、いつもすみません。簡単にお伝えしましょう。サーバーサイドでAPIを提供するサービスです。APIを利用して「ユーザー認証」「データの保管」「データの参照」機能を利用すれば、アプリケーションは作れます。APIに任せてしまうことによる効果は大いにあります。利用するのであれば、厳密なPDSとしての利用方法を目指すべきですよね。サンプルやドキュメント上もこちらのアプリを前提に記載されていて、いろいろ把握しておかなければならないお作法などもありますので、早いうちにこの"厳密なPDSとしての利用"について理解しておくべきでしょう。上記を簡単に説明されているドキュメントが以下になります。使ったアプリ」に逃げ込む事はできません。アプリ」をどう構造すべきで何がメリットなのかが、当初本当に分からず苦労した経験があります。興味を持ち始めたばかりの方々にも素早く理解を深めてもらえるのではないかと考えます。前のエントリーで構築したユニット内に、ユーザーCellやアプリCell、データをストアするBoxなどで構成されます。ここをちゃんとわかりやすく説明するドキュメントも見つけられませんでした。ユーザーという概念の中にアプリが埋め込まれているのです。一般的なWebアプリケーションは、1つのアプリケーション(システム)の中に、複数のユーザーの"マスター"が存在し、1箇所に集められているデータの中の、マスターに登録されたユーザーに関連するデータを抽出し、目的のために利用する構造ですよね。逆!!そして、そんな意表をつく構造なのに、それを実現している構造は以下のように、すこぶる淡白に説明してくれています。構造を想像することすらできませんでした。"そんなの簡単に想像できるじゃん!"という内容かもしれませんが、私が把握している内容を整理してみることとします。上で稼働しパーソナルデータストア(PDS)機能を提供する。Unitは唯一の存在ではなく、複数の運営者により分散的にエコシステムの一部を担うことができる。複数のUnitのユーザー間で、アプリ単位でデータの連携を取ることができる。Cell)を基本の単位となる。Cell内に保持することができる。Box内では、WebDavとOdataのインターフェースで情報にアクセスができる。Cell)も存在する。Personiumサーバーは、APIやサーバーサイドスクリプトを介しユーザーのリクエストに対しレスポンスする。Cellの内部に暗号化されて保管されている。認証成功後に発行されるTokenの受け渡す事で、ログイン状態であることを確認しレスポンスを返す。提供し、一般のアプリにはログイン機能を必要としない環境が実現されている。TokenやCookieを利用しログイン完了状態である事を確認できるため、アプリ内に認証機能は必須ではない。こんな画面からログインします。使ったアプリ」"コトバで言うのは簡単なのですが、なかなか正確にこの差異を伝えるのは難しいのです。Personiumのドキュメントの中にはこの違いを明確に伝えるイメージを見つけられません。私はこの差異については、もくもく会に参加しOSSチームのメンバーの方々と直接会話し、根掘り葉掘り質問してようやくイメージが整いました。今回はそのイメージを示し説明したいと思います。実際に伝えたいことを1つのイメージをまとめてみようと思うと、これがまた難しかったぁ...イメージで表現できていない内容も含め以下に説明します。自身のデータをストアする基本の単位として宣言される。インポートすることで実現する。ファイルとして提供される。ファイルをインポートする事が、WebDavやOdataの定義を実態として作成し、ユーザーがアプリケーションを利用することができる状態にすることである。渡すことで認証とし、ユーザーの情報にアクセスする権限を得る。呼ばれるアプリケーションの提供者以外の運営者(PersoniumエコシステムではOSSチーム)が提供するアプリケーションで実現する。ブラウザのローカルストレージやCookieを利用し、アプリケーションに渡す。インポートする機能も提供する。インストールすることができる。同一ユニットに限らず別のユニットのアプリケーションをインストールすることも可能である。自身のデータをストアする基本の単位として宣言される。