Friendica_28th_AshitanoKen

7,241 views

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,241
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
7
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Friendica_28th_AshitanoKen

  1. 1. Friendica 2012/3/6 第28回 あしたの研 ●インフォサイエンス 塩谷 沢生
  2. 2. Friendicaとは● オープンソースの分散型SNS(Distributed SNS)● オーストラリアのMike Macgirvin氏 によって創設● 元々の名前は"Friendika" ● "-ika" という字面がよろしくないということで最近改称 (発音は同じ)● 自分で手軽に「分散型」SNSを構築できるソフトウェア
  3. 3. 今さらながら、SNS● Social Network System の略● 「社会的ネットワークの構築が出来るサービスやウェブサイ ト(Wikipediaより)」 ○ 広い意味では、人や組織がつながる機能を提供していれば 何でもSNS : 電子メールやネットニュース、掲示板も!● 「人と人とのつながりを促進・サポートする、コミュニティ型の 会員制サービス(同上)」 ○ 現在有名なサービスとしては、Facebook・Google+ ○ 国産サービスとしてはGree・Mixiなど
  4. 4. SNSが提供する機能● SNSでよく提供される機能 ○ プロフィール ○ メッセージ交換 ○ 友人・知り合いのリンク ○ 日記・ブログ機能 ○ 掲示板、写真、動画など、コンテンツのシェア● ユーザ同士のコミュニケーションという体験や現象 そのものが、SNSのテーマ ○ 実物を電子的に置き換えるソフトウェアとは性質が異なる ■ メール ← 手紙 ■ HTML ← 出版物 ○ そういう意味で、SNSでは「何でもあり」…これはまぁ余談
  5. 5. 中央集権型SNS● 狭義のSNS(会員制SNS)は基本的にこのスタイル ○ 全てがSNS提供者の管理下に置かれている ○ 同じSNSのメンバー同士が、交流を持つ Facebook FacebookのAliceさん FacebookのBobさん
  6. 6. 中央集権型SNSの問題点● SNSをまたがった交流は難しい● 自分のSNSを構築しても、他のSNSと交流できない ○ (既存のSNS連携技術については後述) Facebook My SNS Google+ mixi 内輪でしか使えない…
  7. 7. 分散型SNS● SNS同士が、共通のプロトコルで連結する ○ 別々に管理されているSNS同士が通信 ○ プロトコルを守ってさえいれば、どのSNSとも連結可能 ○ 電子メールと同じ仕組み Alices SNS Bobs SNS My SNS どのSNSともつながっている…!!
  8. 8. Friendicaの特徴● オープンソースの分散型SNSシステム ○ SNSとしての機能は大体実装済み ○ 構造が整理されていて拡張性が高い http://portal.friendika.com/compare● セキュリティに配慮した設計 ○ プロトコルに再配布の制限やコンテンツの削除機能が 組み込まれている● DFRNプロトコル: ○ プライバシーやスパムへの対策を念頭に置いたプロトコル ■ 非対称な関係 ■ 公開・個人の二種類のコミュニケーション ■ ノード同士が直接通信(他者を介さない)
  9. 9. とりあえずデモ● 原則としてドメインかサブドメインが取れる環境が必要 ○ それ以外の場所にも置けるが、連携に制約あり● その他、Apache / PHP / MySQLなど● 今回は Sakura Internetのレンタルサーバで構築 ○ 無料ドメインへの設置はmod_rewriteの設定が まだうまく行かず● Chromeでないと動かない部分がいくつか… ○ IE8だと表示が乱れます
  10. 10. DFRNプロトコルの構成● 各利用者はプロフィールページと4つのURL (Web API)を用意する ○ 知り合いとなるためのURL ■ dfrn-request URL / dfrn-confirm URL ○ メッセージ交換用のURL ■ dfrn-notify URL / dfrn-poll URL● プロフィールへのURLが、ユーザーを指す識別符号 ○ http://friendica.example.com/info-taro ○ Webfingerに対応、メールアドレス形式でも可 ■ infotaro@friendica.example.com → Webfingerで問い合わせることで、上記のURLに変換 ○ プロフィールを見れば、上記の4つのURLも分かる
  11. 11. DFRNでのコミュニケーション(1)● 最初の一歩: 自己紹介 (introducution) ○ Alice に対し、 Bobが連絡を取ろうとする ○ Bob -> Alice : Alice の request URLへ送信 「僕へ連絡があれば、ここへ送って下さい」 ○ Bob <- Alice : BobにIDを発行し、Bobのconfirm URLへ送信 「私からのメッセージにはこういう印をつけます」 ※実際のやりとりは、詐称を防ぐためもう少し複雑
  12. 12. 自己紹介が成立すると…● AliceはBobにメッセージを送れるようになる ○ Aliceからのメッセージは、Bobのnotify URLへ送信 ○ BobからAliceにはまだメッセージを送れない● Bobへの連絡は、Aliceだけが出来る ○ Bobがメッセージを受け取るのは、許可した相手からだけ ○ AliceがBobのアドレスを漏らしても、意味がない● これでAlice -> Bobの「非対称な関係」が成立 ○ 次にAliceがBobに自己紹介することで、対称的な関係になる ○ もちろん、Aliceは即座に許可を出しても良い● DFRNではspamを送るのは、メールよりずっと難しい
  13. 13. DFRNのコミュニケーション(2)● 公開のコミュニケーション ○ 自己紹介不要のメッセージ配信 ○ 任意のメッセージを poll URLで公開する ○ フォロワーはpoll URLを定期的にチェックすれば、 フォロー先が公開した最新情報を得られる ○ 他のプッシュ型プロトコルで中継して良い ■ Pubsubhubbubを採用 ● Google提案の講読・配信プロトコル ● 全講読者がpoll URLに集中アクセスしないで済む ■ ただし、他プロトコルではセキュリティが保証されない ● そのため、中継は公開メッセージだけに制限されている
  14. 14. DFRNのコミュニケーション(小まとめ)● DFRNでは、二種類のメッセージを使い分ける ○ これにより、実装も効率化されている● 個人的なメッセージ ○ 許可を貰った相手にだけ送れる ○ 宛先となる notify URLを呼び出す、プッシュ型配信 ○ DFRNに対応したサイト間で直接送信するので、 セキュアに情報を管理できる● 公開メッセージ ○ 誰でも読むことが出来る ○ 配信者の poll URL から取得する、プル型配信 ○ Pubsubbubhubと組み合わせて、効率的なプッシュ型も可能 ○ 他のシステムを経由しての送信もありうる、 非セキュアな送信
  15. 15. メッセージの形式● メッセージの記述には、Atom と Bbcodeを使用する ○ Atom : RSSなどで使用されるXML仕様 ○ 以下の拡張を併用する ■ Atom tombstone: Atom のコンテンツを部分削除 ■ Atom threading : 要素をスレッド別に管理 ○ Bbcode: 電子掲示板向けの、簡易マークアップ言語 ■ [b] text [/b] というようにマークアップする ■ HTMLではJavascriptや特殊タグを埋め込まれるので、 それを避けるための措置
  16. 16. コメント機能● DFRNのメッセージには、コメントをつけられる ○ 個人的メッセージでも、公開メッセージでも● メッセージにつけたコメントは、再送信される ○ 一旦元メッセージの所有者宛に集約 → 再配布● 再送信するかどうかは、オリジナルの所有者が管理 ○ ポリシーの徹底のため、再々配信は禁止 ○ コメントの作者は、コメントの削除だけが可能● コメントのやりとりには、Salmon Protocolを使用 ○ Googleが開発した、コメント分散問題を解決するプロトコル ○ コンテンツに、コメントの投稿先を追加して配布する仕組み
  17. 17. DFRNでのコメント動作● コメント作成の流れ 1. Alice が自分の写真をBobとCathyのnotify URLに投稿する 2. Bobのサイトに、Aliceの写真が表示される 3. Bobは、自分のサイトでコメントを作成する 4. Bobのサイトで作成したコメントが、Aliceのnotify URLに送信される 5. Bobのコメントは、Aliceの写真とともにBob・Cathyに再送信される● この過程で、Bobは自分のサイトにしかアクセスしていないことに注目 ○ これは、公開メッセージを投稿した場合も同様
  18. 18. 比較:OpenIDによるSNS連携● OpenIDではシングルサインオンが可能になる ○ Aliceの写真を見たりコメントするには、 Aliceのサイトを使う ○ Aliceのサイトが、Bobのサイトに尋ねて認証を行う OpenIDで問い合わせ Alices SNS Bobs SNS BobはAliceのサイトへアクセス AliceのSNSに登録がなくてもOKAliceは自分のSNSに投稿 「ここではAliceがルールだ…」
  19. 19. OpenSocial APIの場合● 各SNSで共通のアプリケーションを開発するAPI ○ APIで実装されたサイトへ、自分のSNSからアクセス ○ たしかにSNSには束縛されないが… 写真共有サイト 共通APIで共有サイトへ Alices SNS Bobs SNS Bobは自分のSNSから 写真サイトへアクセスAliceは自分のSNSから 「今度は写真共有サイトが写真サイトに投稿  ルールか…」
  20. 20. DFRN/Friendicaの場合● Bobは自分のサイトで全てのことが出来る ○ あとはFriendicaサーバが面倒を見てくれる BobはDFRNにより 写真へアクセス Alices SNS Bobs SNS Good! コメントはSalmon Protocolで Bobは自分のSNSで Aliceの元へ 写真サイトへアクセスAliceは自分のSNSから 「自分のサイトが一番楽だね…」写真アプリに投稿
  21. 21. DFRNのまとめ(2)● 個人の公開プロフィールを表すDFRN-URLと、 4つのAPIで構成 ○ 自己紹介 要求 - 承認 ( request - confirm ) ○ メッセージ通知 - 配信 ( notify - poll )● 個人同士の認証とメッセージ送信に徹したプロトコル ○ メッセージの形式や、メッセージの内容は Atomなど標準的な仕様の組み合わせ ○ 電子メールで言えば、DFRNはSMTP(メッセージ交換) ■ メッセージの管理(POP/IMAP)や、 書式(MIME)は別の標準的仕様を採用
  22. 22. DFRNのセキュリティ● DFRNでは、プロトコルに従う限りセキュア ○ 個人的メッセージの再配信は禁止 ○ メッセージやコメントの作成者は、削除が出来る ○ 宛先の各サイトでは、削除通知を受け取ったら 確実に削除する義務がある● プロトコルに従わない場合があるのは、仕方ない ○ 他SNSなど、別のシステムに流れた場合 ○ DFRNを不正に実装している ○ ユーザが手元でコピペして再送信
  23. 23. FriendicaとDFRN● FriendicaはDFRNのリファレンス実装として開発 ○ 作者も同じMacgirvin氏 ○ PHP + RDB(MySQL) で構成 ○ MITライセンス ○ Friendica.comを始め、多数のサイトで運用中● 他のSNSとも、プラグイン等で連携可能 ○ Diaspora, Status.Net ○ Twitter ○ Facebook ○ Google +● 現在は2.4の開発が進行中 ○ DFRN改め、Zot!プロトコル へ ○ Diasporaとのメッセージ交換の実現 ○ Shared Social tag機能(#ハッシュタグの共通化)
  24. 24. 他のオープンソースの分散型SNS● Apple Seed http://opensource.appleseedproject.org/ ○ 最も古いOSS分散型SNS、2004年登場● Status.Net / identi.ca http://status.net/ ○ 2008年、Twitterのクローンとして登場(旧称Laconica) ○ GNU Socialのベースプロジェクト ○ OStatusプロトコル● One Social Web http://onesocialweb.org/ ○ VodafoneのR&D部門発、2010年に登場するも活動停止中 ○ メッセージングプロトコル XMPP● Diaspora https://www.joindiaspora.com/ ○ 2010年登場の新進気鋭のプロジェクト ○ Diasporaプロトコル
  25. 25. Federated Social Web● SNSでも「オープン」という意味は多様化している ○ Open ID : オープンな認証 ○ OpenSocial : オープンなAPI ○ オープンソースのSNS ○ APIがオープンな(公開されている)SNS● Federated Social Web ○ Friendicaのように、SNS同士が連携しているWeb ○ 2005年にW3CでFederated Social Web Inqubatorグループが発足
  26. 26. まとめ(1)● 中央集権型SNS ○ SNS管理者が全てを握っている ○ メールよりずっと便利なコミュニケーションが可能 ○ でも「ぼくのSNS」を作ってもあまり役に立たない● Distributed SNS / Federated SNS ○ 共通のプロトコルで連携するSNS ○ SNSとメールのいいとこどり ■ メールサーバのように自由に管理できる ■ なおかつ、SNSの豊富な機能はそのまま
  27. 27. まとめ(2)● Friendica ○ DFRN/Zot!プロトコルを実装する、多機能Distributed SNS ○ メールアドレスに代わり、4つのAPIでコミュニケーション ■ 自己紹介から始まる、非対称な関係 ■ 個人的・公開の二種類のメッセージ ■ 配信範囲の制限・削除機能を持つセキュアなプロトコル ○ メジャーなSNSの機能は大体サポート ■ 細かい部分は、標準的なプロトコルを上手く使用● SNSとメールを上手く折衷 ○ 個人ユーザより、むしろ企業ユーザにとって注目すべき オープンソースプロジェクト ○ かつてパソコン通信と電子メールが辿った歴史が、 もう一度繰り返されるか?
  28. 28. 備考 : 翻訳候補● 日本語の情報はほとんどなし ○● 翻訳候補としては… ○ 公式サイト(http://friendica.com/) ■ トップページ ■ features ○ Github上のWikiページ(まだfriend-ikaのまま) https://github.com/friendika/friendika/wiki ■ なぜかとても見つけにくい… ■ オンラインヘルプと大体同じ内容 ○ ユーザ向けマニュアルらしいものが見あたらない…

×