最近「OpenSocialでOwnner毎 or Owner*アプリ毎の永続化方法 オプション」辺りでOpenSocialのパーミッションに関する疑問がいくつか挙っていたので、どういう場合にどのデータにアクセスできるのか、ついでに、FriendConnectにおけるパーミッションモデルについてもまとめてみます。

まずは最低限の知識としてビューアー(VIEWER)/オーナー(OWNER)という考え方と、基本情報/個人情報を押さえておきましょう。

ビューアーとオーナー #

ガジェットは貼られる場所によって呼び方が異なり、これをビュー(view)と呼びます。OpenSocialでは標準的にhomeビュー、profileビュー、canvasビューが用意されています。ここを参考にしてください。

ご覧いただくと分かると思いますが、homeビューのガジェットは自分が見るマイページに貼られる前提で,profileビューは他人が見るプロフィールページに貼られる前提になっています。では,「自分が見る」「他人が見る」は何を意味するのでしょう?

OpenSocialガジェットには所有者/オーナー(OWNER)という考え方があります。オーナーとは,ガジェットをページに貼付けたページの持ち主を指しています。反対に,ガジェットを見る人を閲覧者/ビューアー(VIEWER)と呼びます。

つまり,homeビューで「自分が見る」が意味するのは,オーナーでありビューアー。逆に,profileビューで「他人が見る」が意味するのは,ページを見ているビューアーと,ページの持ち主のオーナーです。もちろん,プロフィールページをオーナー自身が見ているケースでは,オーナーとビューアーは同一人物になります。canvasビューでも同様。

基本情報と個人情報 #

OpenSocialではプロフィール情報は大きく2つに分けられます。
goo Social Platformではこれを基本情報(id, profileUrl, thumbnailUrl, nickname)と個人情報(その他のプロフィール)と分けて呼んでいます。詳細はこちらをご覧いただいた方が早いと思います。

基本情報は、必要最低限の情報で、個人情報はさらに詳細で重要性の高いものと思ってください。

基本ルール #

これらを踏まえて、各種情報をやり取りする際に必要となるのが下記の基本ルールになります。

  • 個人情報を取得する場合、対象となるユーザー(オブジェクト)が同じガジェットをインストールしていること
  • オブジェクトが友達の場合、ガジェットをインストールしていなくても基本情報のみ取得可能
  • 更新・削除はビューアーが自分のデータを操作する場合のみ可能

ミソは、

  • 友達でもガジェットをインストールしていない人の個人情報は取得できない
  • 友達じゃなくてもガジェットをインストールしていれば個人情報が取得できる

ところ。

「なぜそんなに面倒なの?」「なんでガジェットインストールしてないと個人情報取れないの?」と思われる方も多いかと思いますが、理由はずばり、「プライバシーの保護」です。

  • 個人情報はコンテナがユーザーから取得したものである
  • 個人情報保護法では、収集した個人情報を事前に通告した目的外に利用してはならない
  • 個人情報はコンテナが取得したものであり、第三者に譲渡や開示する(ディベロッパーがガジェット上で利用する)場合はユーザーがそれを理解している必要である
  • ユーザーは誰が自分の個人情報を取得したかを把握できる必要がある
  • ディベロッパーは受け取った個人情報を外部に流出させることも、売り渡すことも、理論的には可能である
  • ネット上にパブリックになっている情報でも、受動的に(スクレイピング等)渡す場合と、能動的に(API経由)渡す場合では、法的意味が異なる(そういう意味では、mixiのようなクローズなSNSでも、gooホームのようなオープンなSNSでも扱いは変わらない)
  • ディベロッパーが故意または事故で個人情報を漏らす等した場合、責任はもちろんディベロッパー側にあるが、情報を提供したコンテナは、ディベロッパーとの連絡を確実に取れる手段を用意しておく必要がある

若干複雑ですが、こんな理由で、本人が意図して利用していないガジェットに対しては、基本的に個人情報を渡さない方向に倒されている、という訳です。これはgooホームだけの話ではなく、まだ明示されてはいませんが、mixiも含め、今後登場するであろうOpenSocialコンテナすべてで似たような実装になると思います。

なお、基本ルールに対する特別ルールについては複雑になるのでここでは説明しません。興味のある方はこちらをご覧下さい。

FriendConnectのパーミッションモデル #

さて、ここまで一般的なOpenSocialについて解説してきた訳ですが、FriendConnectにおけるガジェットのパーミッションについてここで考えてみましょう。

通常のSNS上のOpenSocialでは、ガジェットをインストールしているかどうかで個人情報を提供するか否かを決定していましたが、FriendConnectではちょっと事情が違います。それは、ガジェットのオーナーが人間ではなく、サイトである、という考え方に基づいている、という点です。

こちらの記事をご覧いただければ分かると思いますが、

Ownerはサイト。そういえば、FriendConnectガジェットを入れた時点では、自動的に自分がメンバーになったりはしていませんでした。Ownerは貼付けたサイトという仮想人格が担うようです。

サイトという仮想人格、というところがミソです。つまり、FriendConnectでは、ユーザーがオーナーになることはあり得ないのです。そのため、先に解説した一般的OpenSocialのパーミッションモデルをそのまま適用することはできません。

では、FriendConnectではどういう場合に個人情報を取得できるのでしょうか?

現実的には、私の把握している限り、まだFriendConnect上で基本情報以上の情報(個人情報)を取得することはできないので、必ずしも正しいとは言えないのですが、「そのサイトに参加しているか否か」がパーミッションを得るための条件のようです。

言い換えると FriendConnectの基本ルール:

  • 個人情報を取得する場合、対象となるユーザー(オブジェクト)がガジェットを動かそうとしているサイトに登録していること
  • オブジェクトが同じサイトに登録していれば、個人情報も含め取得可能(実際は取得できないので想像)
  • 更新・削除はビューアーが自分のデータを操作する場合のみ可能

となります。一般的OpenSocialの基本ルールと並べて比べてみると、違いが分かると思います。

まとめ #

今回は、先日のHackathonでも多数の質問が出たパーミッションモデルの話を解説してみました。開発者にとっては面倒なだけですが、コンテナやユーザーにとっては、プライバシーを守るためにとても重要なことです。

OpenSocialガジェット開発もある程度のレベルに達してきたら、この辺りの理解をしっかりやっておくことが重要だと思います。