オルタナティブ・ブログ > プロジェクトマネジメント10.0 >

失敗しないウェブアプリケーション開発の処方箋

【One Social Web】MixiとFacebookが同期する時代が来るってほんと?

»

Oswv11

毎度まいどいい加減なことばかり書いていてすみません。
ループス岡村直人です。

今回もとっておきの偽情報をお届けします。まゆ毛をつばでべとべとにしながらご覧ください。

題材は「OneSocialWeb」というオープンなプロトコルです。荒っぽい調査を基に執筆しておりますので、認識違いや間違い等お気づきになった方は、コメントやメール(okamura@looops.net)などでご指摘いただけると嬉しいです。

複数のSNS間で情報の同期、そんなことが実際に可能になるのでしょうか。今回紹介するOneSocialWebでそういう世の中が実現するとどういう風になるのか、私の妄想を図にしてみました。

One_social_web_image

図:複数SNS間での連携イメージ(妄想)

色々なものが出てきていますが、実際の企業・技術などとは一切関係ございません。ご了承ください。妄想のきっかけとなったOneSocialWebがServer-ServerモデルとClient-Serverモデルの両方をサポートしていることもあり、用語の統一もいまひとつできていません。まあ、私はこのようなものをイメージしながら調査をしておったという、参考程度に掲載させていただきました。

------------------------------------------------------------------------------

◆はじめに

------------------------------------------------------------------------------

少し前、オープンなFacebookを作りたいという4人の学生がDiasporaというソーシャルネットワーキングサイトの構築をKickstarter.comでマイクロファンディング(投資家ではなく、一般人から少額投資を募るサイト)を実施し、最終的には$200,642を調達したことで話題を集めました(TechCrunch記事)。

この一件は、ちょうどFacebookのプライバシー問題のタイミングと重なったこともあり、自分のプライバシーが特定の会社の意向で危険にさらされると感じた人々や、OpenSocialPluginsの公開によるソーシャルグラフの独占的展開に戦慄を覚えた人々の不安を象徴する出来事と受け止められたように感じます。

その一方で、Diasporaの出現によって、それほど注目もされず(少なくとも日本では)、ひっそりと開発されてきたあるOSSの存在が引き合いにだされました。

それが Vodafone Group Research and Development が主導する、「OneSocialWeb」というプロジェクトでした。

------------------------------------------------------------------------------

◆OneSocialWebの概要

------------------------------------------------------------------------------

OneSocialWebは、その名の通り世界に複数あるソーシャルネットワークを一つにつなげようという試みです。サイトのトップページには以下のように記載されています。

私たちは、全てのソーシャルネットワークが相互に接続され、協調して動作する世界を夢見ている(それは現在のEmailがたくさんのプロバイダに支えられ、協調して動作している姿に似ている)。私たちのプロジェクトは、それぞれのソーシャルネットワークのかけ橋となる共通言語の策定を目指す。これによってソーシャルネットワークは相互に接続され、より広範な「Social Web」が形成されるだろう。あなたにも、これを現実のものとするための手助けをお願いしたい。

※初めてこのブログを見る方のために説明しておきますが、翻訳は主にExcite翻訳がやっています。
 誤訳が多いのでご注意ください。

私は当初、OneSocialWeb というのは Diaspora と同じようなSNS(ソーシャルネットワーキングサイト)なのだと考えていました。この思いこみのおかげで、OneSocialWebの全体像を理解するのにだいぶ 時間がかかったように思います。

実際はサイト(WEBアプリケーション)ではなく、XMPP(eXtensible Messaging and Presence Protocol)を中心とした複数のオープンな技術仕様を組み合わせたプロトコルに近いテクノロジのようです。実際、"our protocol" という表現が散見されるのですが、ダウンロード可能な成果物としてはクライアントアプリケーション(?)やXMPPサーバ用プラグインなどが中心です。

既存のSNSが頭にあると、OneSocialWebがどんなものかなかなか全容が腹に落ちないと思いますので、私が感じた方向性の違いを3点挙げておきます。

○OneSocialWebってこんなもの?

  • これまでのSNSでは、個人のアイデンティティは「場(SNS)」に属していた(別のSNSには別のIDがある)。OneSocialWebでは、アイ デンティティは現実世界の個人(具体的にはPCや携帯などの端末)とより密接に紐付いている。
  • これまでのSNSでは「コミュニケーションの場」と「相手との繋がり」と「共有するデータ」は不可分だった。OneSocialWebが志向するものは「コミュ ニケーションの場」から「繋がりとデータ」を引きはがすものだと思える。
  • 「場」については、「クライアント」という表現をされていることが多い。あまり広がりを感じるような提案はないように感じた。ただし、Openfireを拡張することで、データの保持など、現在のSNS(WEBアプリケーション)が持っている機能の多くを実現できると思われる。
    ※正直なところ、現在ある「コミュニケーションの場としてのSNS」と、OneSocialWebが考えている「クライアント」の類似点・相違点が、今でもよくわかっていません。

OneSocialWebのの動作イメージを 掲載されているプレゼンテーションスライド から抜粋します。

Working_image

図:OneSocialWebの動作イメージ

この図は、左下にあるユーザー(eschnou@vodafonernd.com)がポストした情報が、そのユーザーの参加するソーシャルネットワーク(vodafonernd.com)から、更に別のソーシャルネットワーク(betavine.net)へPush通知され、そのソーシャルネットワークから別のユーザー(alice@betavine.net)へリアルタイムで通知される様子を表しているのだと思います。

この図を見ると、OneSocialWebがソーシャルネットワークを相互接続するために「Emailのような」という比喩を用いている理由がなんとなく理解できます。(開発者の方はどうスライドに記載されているJavaコードを見ていただくとイメージしやすいと思います)

上図ではクライアントはスマートフォンのようですが、WEBアプリケーションとして実装した場合のクライアントイメージ(要はIEなどのブラウザから使う場合のイメージ)がOneSocialWebのサイト上に掲載されています。

Oswmainbig

図:OneSocialWebクライアントのWEBアプリケーション実装イメージ

この画面イメージですが、どこかで見たことがある気のする方もいらっしゃるのではないでしょうか。

私はどことなく先日一般公開されたGoogleWaveを彷彿とさせるなぁ、と感じました。
以下にGoogleWaveのイメージを掲載します。

Google_wave00

図:GoogleWave(GoogleImage検索から勝手に転載)

この連想はあながち的外れではなかったのかもしれません。

GoogleWaveのプロトタイプ実装であるFedOneはXMPPサーバであるOpenfireの拡張実装であるとのことでした(参考:Google Wave で遊ぼう!)。

たぶん、多分なんですがこのモデルでは各ソーシャルネットワークは自分を通過するデータしか保持しないのだと思います。ソーシャルグラフはどこかのサーバに貯めこまれるのではなく、OneSocialWeb自体がソーシャルグラフ全体を表して、ユーザーは自分のためだけにソーシャルグラフを使う、そういう世界なんだと思います。この世界ではMixiもFacebookも、データベースを持ったルータのように見えます。

------------------------------------------------------------------------------

◆OneSocialWebを支える技術

------------------------------------------------------------------------------

技術についてはめったなことが書けないので、できればお茶をにごしたいな、と思っていたのですが、せっかくなので調べたことをさらっとまとめておきたいと思います。

XMPP(eXtensible Messaging and Presence Protocol)

Jabber社が開発したXMLベースのIM(インスタントメッセンジャー)用のプロトコルだそうです。IMとは、マイクロソフトが出しているMSNメッセンジャー(Windows Live メッセンジャー)Yahooメッセンジャーなどのあれです。通常、これらのIMのプロトコルは非公開ですが、XMPPはオープンソースであり、その仕様が全て公開されているとのことです。

クライアント実装としては、XMPP.jpで複数のメッセンジャーを集約して相互に通信させるアプリケーションを公開しています。

Overview

図:XMPP.jpが複数のIMと協調して動作するイメージ

上図にあるGoogle Talk(Googleチャット)も jabber (XMPPの旧称) を核に実装されたアプリケーションのようです。XMPP、聞いたことがないプロトコルでしたが案外身の回りで使われていたんですね。目からうろこです。

Openfire(旧称:Wildfire、Jive Messenger)
XMPPサーバです。Javaで実装されており、proprietary(どこの?) ライセンスと Apache License 2.0のデュアルライセンスで公開されています。

以下のような機能が利用できるそうです(一部)。

  • WEBベースの管理ツール
  • プラグインインターフェース
  • 拡張性
  • SSL/TLSサポート
  • DB接続(Apache Derby または JDBC3ドライバの利用によるDBMS
  • LDAP接続

OneSocialWebサーバは上記「プラグインインターフェース」によってOpenfireサーバを拡張するプラグインという位置づけです。また、XMPPサーバの特徴として、権威ある中央サーバが存在しないように設計されており、これによって OneSocialWeb の重要なポリシーである「非中央集権型」の実現に寄与していると思われます。

○JID(Jabber ID)
XMPPにおける個人識別子。「[名前]+@+[ドメイン]+/+[リソース]」で定義される。

○XEP(XMPP Extension Protocols)
XMPPの拡張プロトコル。現在280程度が定義されており、やり取りするメッセージに紐付く様々な意味づけ(semantics)を行います。

PEP(Personal Eventing Protocol)
XEP-0163で策定されているプロトコル。XMPPで送信されるメッセージデータに、アカウントのステータス変更を紐付けるために利用されているようです。

Portable Contacts
概要についてはTender Surrenderさんに公式サイトの翻訳がありましたので転載させていただきます。

PortableContactsとは、従来のアドレス帳データと最近のソーシャルアプリケーションデータ(プロフィールと友達リスト)のいずれにも、セ キュアなアクセスを提供する、簡単に実装可能な”Peopleデータ”のAPIです。
Tender Surrender 本文より転載

OneSocialWebではvCardに代わるプロフィール情報の共有手段として採用されているようです。

XFN(XHTML Friends Network)
こちらも素晴らしい翻訳がありましたので転載させて頂きます。

XFNとは、ハ イパーリンクを使って人と人のつながりをシンプルに表現する方法です。近年、ブログやそれに類似したコ ンテンツがWeb上に急激に広まっています。XFNはWebページの所有者がそれを閲覧する人たち対して、自分の友人関係をrel属性、anchorタグを 使ってシンプルに示すことを可能にします。
tzmtkのブログ 本文より転載

OneSocialWebでは友人関係を表現する仕様として利用されているようです。XFNが表現できる友人関係は、単なる繋がりだけではなく、その方向性(Twitterで言う両思いとか片思いとか)や属性(恋人とか親戚とか家族とか)も指定できることのようです。属性は tzmtkのブログ にて、きれいな表で定義されています。

パーティーで出会ったAdamとBradの二人がお互いに知り合いだった時、各々が自分のサイトに以下のようなリンクを張ることで両思いの関係を表現できます。

<a href="http://brad-log.example.org/" rel="met friend">Brad</a>

<a href="http://adam-log.example.org/" rel="met acquaintance">Adam</a>

OneSocialWebのような分散環境でこういった人間関係を管理するとなると、検証がものすごく大変になりそうなんですが、実際はどうなるのでしょうね。

Activitystrea.ms
調べてみたところ、日本語の情報で一番上に来たのがこんなのです。

992 :名無しさん@英 語勉強中 :2009/09/04(金) 10:10:51
☆互換性のあるactivitystrea.msというフォーマットにすることで
 第三者サイト(TwitterやFacebookなど)とのつながりの可能性を広げる
 
activitystrea.msをよく知らないで使った物だからこんな結果になったと想像する。
英語あまり読めない人たちなのかな?w

いやぁ、この程度でドキドキしていてはだめですね。スルー力を磨かないと・・・。

それはともかく「その辺の他人がWEBで何をやっているのかを表現するAtomフィードの拡張」という雰囲気でしょうか。このフォーマットはすでにFacebookやMySpace、Windows Liveなどで利用されているようですので、かなり普及しているんでしょうか。もちろん私は今日まで全く知りませんでした。

------------------------------------------------------------------------------
◆まとめ
------------------------------------------------------------------------------

ちょっとした好奇心から調べ始めたのですが、知らないことだらけでびっくりしました。英語だからといって後回しにせず、きちんと向き合うことが大事だなぁ、とつくづく思います。

現時点ではOneSocialWebという仕組み自体はあくまでプロトコルであり、例えばFacebookの対抗馬になるようなものではないと理解しています。TechCrunchには「Vodafone Group Research and Developmentという私企業の研究プロジェクトであることが、メディアから無視されてきた原因 だろうか」という記述がありますが、「金のなる木」と目されているソーシャルグラフを企業が独占しずらいこの仕様は、採用する側、特に既存のソーシャルネットワーキングサイトにメリットが少ないように受け止められるということも、話題にならない理由ではないかと感じました。この点からは、OpenSocialが、専ら学習コストの低減と、それによる開発コスト削減のための共通フレームワークのように受け入れられ、ソーシャルグラフの共有という観点(そんな観点ありましたっけ?)ではいまひとつ成果をあげられなかったことが思い出されます。

ですので、タイトルに挙げたような「MixiとFacebook間で情報が同期する世界は実現可能か」という問いに対しては「OneSocialWeb が、現在ソーシャルネットワークを掌握しているベンダに採用されることはないような気がする。別のソリューションが出てくるのを待つことになるんじゃないか」というのが現時点での感想です。

それでもやはり、この高い志をもったプロジェクトを応援したいと思います。OneSocialWebのプレゼンテーションには「巨人の肩に乗るものは巨人より遠くを見る」というような文言がありました。「巨人」はオープンな開発コミュニティを指すのかもしれませんが、SNS界の巨人も当然意識しているのではないかと思います。多くの利用者と長年にわたって行われてきた機能拡張という重荷を抱える相手を、束縛のない自由な設計を武器にしたこの小さなコミュニティがどうやってからめ取ろうとするのか、今後が楽しみであります。

それでは、よろしくお願いいたします。

参考資料:

XMPP仕様簡単解説

OneSocialWebのロードマップ(2010年6月3日現在。夏の終わりごろに動くものが出てくるらしい)

Below is a glimpse in our roadmap moving forward. This is a living document, we’ll keep on updating as we move forward, and we are enthusiastic in receiving feedback on this !

0.6.1 (mid june)

  • Maintenance release with a few bug fixes and performance improvements across all projects.

0.7 (end july)

  • delete and update of content (cross domain, realtime)
  • more object types (links, videos, embeds, …)
  • cross-referencing of activities, thus enabling commenting, liking, sharing, etc…
  • result set management (paginate through past activities, messages, contacts,…)
  • and probably a lot of other little tweaks (uploading an avatar maybe :-0 )

0.8

  • filter and selective subscriptions (yup, filter and subscribe on a per activity verb & object type)
  • relationships (creating, inviting, and confirming relationships with other users)
  • REST API for third party applications (and devs who won’t want to learn XMPP :-)

0.9

  • public firehose via pubsub
  • search and discovery across networks

1.0

  • feature freeze and iterations to make the baby ready for 1.0 :-)
      
Comment(0)