Tender Surrender

6月9日にパシフィコ横浜にてGoogle Developer Dayが開催されました。
僕は基調講演に一瞬と、OpenSocial Panel Discussionのセッションに登壇させて頂きました。

基調講演デモ

基調講演では、先日一般ユーザー向けにも公開したgooホームのOpenSocialを使って、goo地図ガジェットとフォトビューアーガジェットがPhotomemoのガジェットに連動して動く、というソーシャルウェブ・ポータルというコンセプトを打ち出したgooホームならではのデモをお披露目しました。基調講演では言いそびれてしまったのですが、このアイディアは元々、先日行われたHackathonでディベロッパーの1チームが見せてくれたものを元にしています。

実装としては、OpenSocialに含まれるpubsubというフィーチャーを使っています。pubsubは、任意に作成されたチャンネルに対してオブジェクトをpublishすると、同じチャンネルをsubscribeしているガジェットのコールバック関数が呼ばれオブジェクトが届く、というかなり単純な仕組みです。pubsubについては、近いうちにgoo Developer’s Kitchenの方にもドキュメントを追加します。

また、今回のデモを行うため、PhotomemoチームにPhotomemoガジェットとフォトビューアーガジェットを開発して頂きました。ご協力ありがとうございました。

OpenSocial Panel Discussion

もうひとつ参加させて頂いたのがPanel Discussionでした。今回は先日のデブサミでもご一緒させて頂いたリクルートの川崎さんに加え、mixiの川岸さん、そしてGoogleの及川さんとのディスカッションになりました。

内容については、OpenSocialというよりはSocialWebを広い観点で捉え、その中で現状使えるOpenSocialというピース、およびこれから広がっていくSocialWebの世界に関して。僕の中でもmixiアプリとgooホームガジェットの目指す所がまるっきり違うことに気付いたのは割と最近なので、その辺りが分かりやすく伝わるようにお話しさせて頂きました。

まとめ

Panel Discussionの場でも言いましたが、日本のSocialWebという世界観にまだまだ伸びしろがあると感じています。海外に比べると実名が好まれなかったり、最大のSNSがクローズドだったりと、海外のそれを単純に輸入できないことは十分理解していますが、必ず近いうちに求めらる技術になっていくと思います。

共感された方はぜひ、SocialWeb Japanにご参加下さい。

Read on...

最近「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ガジェット開発もある程度のレベルに達してきたら、この辺りの理解をしっかりやっておくことが重要だと思います。

Read on...

 ついに、ようやく、mixiによるOpenSocial実装、mixiアプリが一般ディベロッパーにも公開されました。

個人の皆さまでもソーシャルアプリケーションの開発が可能に。「mixiアプリ」オープンβ版公開!

なんといっても1500万を超えるユーザーを抱えるmixiというプラットフォームに、誰でもガジェットを提供して一般ユーザーに使ってもらえるというのは魅力だと思います。OpenSocialを支持する者としては、ついにその時が来たか、という印象です。同時に、各所での盛り上がりを見るにつけ、羨ましい限り。

てことで、よういちろう氏と一緒にgihyo.jpで連載しているこちらの記事

http://gihyo.jp/dev/serial/01/opensocial/

でサンプルとして使っているはてブチェッカーガジェットを早速公開しました。

http://platform001.mixi.jp/view_appli.pl?id=682

 

 

gooホームで作ったガジェットですが、これをmixiアプリに対応させる上で気づいた点がいくつか・・・。

  • 現在の利用規約、ディベロッパー登録の方法だけでガジェットが原因で発生する法的問題をカバーする方法はちゃんと考えられているのか?
  • ガジェットを経由して個人情報を外部に流すことは理論的に可能だが、今の利用規約で一般ユーザーはそれを許容しているのか?
  • APIの不具合が散見、というかかなり見られる。
  • OpenSocialの拡張仕様がOpenSocialのスタイルを無視している。(opensocial.PersonFieldとか)

仕様周りは、よういちろう氏もmixiに移籍したことだし、今後改善していってもらいますか・・・。

Read on...

gooホームサンドボックス立ち上げと丁度タイミングが合ったこともあり、gooとOpenSocial Japanコミュニティリクルートメディアテクノロジーラボ共同開催で、OpenSocial Hackathonを開催することになりました。

Hackathon(ハッカソン)とは、Hack(ハック)とMarathon(マラソン)を組み合わせた造語で、参加者をグループに分け、その場で実際にコーディングを行いながらソフトウェアを作りあげていくものです。

これまでにもGoogleを中心に数回開催されていましたが、今回はgooホームサンドボックスをコンテナにしてやってみようというものです。


主催: gooホーム、リクルート メディアテクノロジーラボ、OpenSocial-Japanコミュニティ
** 日時: 2009年4月24日(金) 10:00〜18:00 (開場:09:30)
** 場所:
リクルート メディアテクノロジーラボ
** 人数:** 35名
** 条件: **

※ 参加者の方は4月14日に事前ミーティングも行いますので、ご参加ください。
** 日時:** 2009年4月14日(火) 18:30〜20:30 (開場:18:00)
** 場所: リクルート メディアテクノロジーラボ
** 内容:
Hackathonでのチーム分け等の手続き、アイディアの意見交換


参加をご希望の方は、下記2つのサイトにて登録を行ってください。

http://atnd.org/events/472

http://groups.google.com/group/opensocial-hackathon-0424
↑こちらに記載してある詳細をよくお読みください。

 

当日はOpenSocial入門を執筆されたよういちろうさん川崎有亮さん、Googleの方、そしてもちろん僕もチューターとして参加します。

OpenSocialに興味がおありの方は、ぜひご参加ください!

 

Read on...

3月26日、gooホームでOpenSocial対応に向けたサンドボックス環境を提供開始しました。

主な機能は下記の通り:

  • 基本的API(People、AppData、Activity)
  • homeビュー、canvasビュー、profileビューに対応
  • ユーザー属性情報ごとのプライバシー対応
  • requestCreateActivity、requestPermission、requestSendMessage、requestShareApp等の口コミ機能をすべて網羅
  • gooホーム絵文字フィーチャー
  • opensocial-jqueryフィーチャー

日本語であることはもちろんですが、仕様のカバー率という意味では、初めてOpenSocialに触れる方にとって、既存のどのコンテナより理想的な環境と自負しております。

また、ドキュメントはかなり力を入れて書きました。パーミッション周り等はなかなかちゃんと書いてあるドキュメントがないため、参考になると思います。ぜひご一読ください。

goo Developer’s Kitchenディベロッパードキュメント

 

 

サンドボックスへの登録はこちらから

goo Developer’s Kitchen

Read on...