SlideShare una empresa de Scribd logo
1 de 28
Descargar para leer sin conexión
Friendica
         2012/3/6 第28回 あしたの研




    ●インフォサイエンス 塩谷 沢生
Friendicaとは

●   オープンソースの分散型SNS(Distributed SNS)

●   オーストラリアのMike Macgirvin氏 によって創設

●   元々の名前は"Friendika"
     ● "-ika" という字面がよろしくないということで最近改称
       (発音は同じ)

●   自分で手軽に「分散型」SNSを構築できるソフトウェア
今さらながら、SNS


●   Social Network System の略

●   「社会的ネットワークの構築が出来るサービスやウェブサイ
    ト(Wikipediaより)」
    ○   広い意味では、人や組織がつながる機能を提供していれば
        何でもSNS : 電子メールやネットニュース、掲示板も!

●   「人と人とのつながりを促進・サポートする、コミュニティ型の
    会員制サービス(同上)」
    ○   現在有名なサービスとしては、Facebook・Google+
    ○   国産サービスとしてはGree・Mixiなど
SNSが提供する機能

●   SNSでよく提供される機能
    ○   プロフィール
    ○   メッセージ交換
    ○   友人・知り合いのリンク
    ○   日記・ブログ機能
    ○   掲示板、写真、動画など、コンテンツのシェア

●   ユーザ同士のコミュニケーションという体験や現象
    そのものが、SNSのテーマ
    ○   実物を電子的に置き換えるソフトウェアとは性質が異なる
        ■ メール ← 手紙
        ■ HTML ← 出版物


    ○   そういう意味で、SNSでは「何でもあり」…これはまぁ余談
中央集権型SNS

●   狭義のSNS(会員制SNS)は基本的にこのスタイル
     ○   全てがSNS提供者の管理下に置かれている
     ○   同じSNSのメンバー同士が、交流を持つ




                       Facebook


    FacebookのAliceさん
                                  FacebookのBobさん
中央集権型SNSの問題点

●   SNSをまたがった交流は難しい
●   自分のSNSを構築しても、他のSNSと交流できない
    ○   (既存のSNS連携技術については後述)


                Facebook


                                     My SNS




                           Google+
         mixi

                                      内輪でしか使えない…
分散型SNS

●   SNS同士が、共通のプロトコルで連結する
    ○    別々に管理されているSNS同士が通信
    ○    プロトコルを守ってさえいれば、どのSNSとも連結可能
    ○    電子メールと同じ仕組み


        Alice's SNS   Bob's SNS           My SNS




                                  どのSNSともつながっている…!!
Friendicaの特徴

●   オープンソースの分散型SNSシステム
    ○   SNSとしての機能は大体実装済み
    ○   構造が整理されていて拡張性が高い
        http://portal.friendika.com/compare


●   セキュリティに配慮した設計
    ○   プロトコルに再配布の制限やコンテンツの削除機能が
        組み込まれている

●   DFRNプロトコル:
    ○   プライバシーやスパムへの対策を念頭に置いたプロトコル
         ■ 非対称な関係
         ■ 公開・個人の二種類のコミュニケーション
         ■ ノード同士が直接通信(他者を介さない)
とりあえずデモ

●   原則としてドメインかサブドメインが取れる環境が必要
    ○   それ以外の場所にも置けるが、連携に制約あり

●   その他、Apache / PHP / MySQLなど

●   今回は Sakura Internetのレンタルサーバで構築
    ○   無料ドメインへの設置はmod_rewriteの設定が
        まだうまく行かず

●   Chromeでないと動かない部分がいくつか…
    ○   IE8だと表示が乱れます
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も分かる
DFRNでのコミュニケーション(1)

●   最初の一歩: 自己紹介 (introducution)
    ○   Alice に対し、 Bobが連絡を取ろうとする

    ○   Bob -> Alice : Alice の request URLへ送信
         「僕へ連絡があれば、ここへ送って下さい」

    ○   Bob <- Alice : BobにIDを発行し、Bobのconfirm URLへ送信
         「私からのメッセージにはこういう印をつけます」
           ※実際のやりとりは、詐称を防ぐためもう少し複雑
自己紹介が成立すると…

●   AliceはBobにメッセージを送れるようになる
    ○   Aliceからのメッセージは、Bobのnotify URLへ送信
    ○   BobからAliceにはまだメッセージを送れない

●   Bobへの連絡は、Aliceだけが出来る
    ○   Bobがメッセージを受け取るのは、許可した相手からだけ
    ○   AliceがBobのアドレスを漏らしても、意味がない

●   これでAlice -> Bobの「非対称な関係」が成立
     ○ 次にAliceがBobに自己紹介することで、対称的な関係になる
     ○ もちろん、Aliceは即座に許可を出しても良い


●   DFRNではspamを送るのは、メールよりずっと難しい
DFRNのコミュニケーション(2)

●   公開のコミュニケーション
    ○   自己紹介不要のメッセージ配信
    ○   任意のメッセージを poll URLで公開する
    ○   フォロワーはpoll URLを定期的にチェックすれば、
        フォロー先が公開した最新情報を得られる
    ○   他のプッシュ型プロトコルで中継して良い
        ■ Pubsubhubbubを採用
            ●   Google提案の講読・配信プロトコル
            ●   全講読者がpoll URLに集中アクセスしないで済む
        ■   ただし、他プロトコルではセキュリティが保証されない
            ●   そのため、中継は公開メッセージだけに制限されている
DFRNのコミュニケーション(小まとめ)

●   DFRNでは、二種類のメッセージを使い分ける
    ○   これにより、実装も効率化されている

●   個人的なメッセージ
    ○   許可を貰った相手にだけ送れる
    ○   宛先となる notify URLを呼び出す、プッシュ型配信
    ○   DFRNに対応したサイト間で直接送信するので、
        セキュアに情報を管理できる

●   公開メッセージ
    ○   誰でも読むことが出来る
    ○   配信者の poll URL から取得する、プル型配信
    ○   Pubsubbubhubと組み合わせて、効率的なプッシュ型も可能
    ○   他のシステムを経由しての送信もありうる、
        非セキュアな送信
メッセージの形式

●   メッセージの記述には、Atom と Bbcodeを使用する

    ○   Atom : RSSなどで使用されるXML仕様

    ○   以下の拡張を併用する
        ■ Atom tombstone: Atom のコンテンツを部分削除
        ■ Atom threading : 要素をスレッド別に管理



    ○   Bbcode: 電子掲示板向けの、簡易マークアップ言語

        ■   [b] text [/b] というようにマークアップする

        ■   HTMLではJavascriptや特殊タグを埋め込まれるので、
            それを避けるための措置
コメント機能

●   DFRNのメッセージには、コメントをつけられる
    ○   個人的メッセージでも、公開メッセージでも

●   メッセージにつけたコメントは、再送信される
    ○   一旦元メッセージの所有者宛に集約 → 再配布

●   再送信するかどうかは、オリジナルの所有者が管理
    ○   ポリシーの徹底のため、再々配信は禁止
    ○   コメントの作者は、コメントの削除だけが可能

●   コメントのやりとりには、Salmon Protocolを使用
    ○   Googleが開発した、コメント分散問題を解決するプロトコル
    ○   コンテンツに、コメントの投稿先を追加して配布する仕組み
DFRNでのコメント動作

●   コメント作成の流れ
    1. Alice が自分の写真をBobとCathyのnotify URLに投稿する
    2. Bobのサイトに、Aliceの写真が表示される
    3. Bobは、自分のサイトでコメントを作成する
    4. Bobのサイトで作成したコメントが、Aliceのnotify URLに送信される
    5. Bobのコメントは、Aliceの写真とともにBob・Cathyに再送信される

●   この過程で、Bobは自分のサイトにしかアクセスしていないことに注目
     ○ これは、公開メッセージを投稿した場合も同様
比較:OpenIDによるSNS連携

●   OpenIDではシングルサインオンが可能になる
    ○   Aliceの写真を見たりコメントするには、
        Aliceのサイトを使う
    ○   Aliceのサイトが、Bobのサイトに尋ねて認証を行う

                         OpenIDで問い合わせ
           Alice's SNS                          Bob's SNS




                                BobはAliceのサイトへアクセス
                                AliceのSNSに登録がなくてもOK


Aliceは自分のSNSに投稿          「ここではAliceがルールだ…」
OpenSocial APIの場合

●   各SNSで共通のアプリケーションを開発するAPI
    ○   APIで実装されたサイトへ、自分のSNSからアクセス
    ○   たしかにSNSには束縛されないが…

                        写真共有サイト


    共通APIで共有サイトへ



          Alice's SNS                 Bob's SNS



                                             Bobは自分のSNSから
                                             写真サイトへアクセス


Aliceは自分のSNSから                    「今度は写真共有サイトが
写真サイトに投稿                           ルールか…」
DFRN/Friendicaの場合

●   Bobは自分のサイトで全てのことが出来る
    ○    あとはFriendicaサーバが面倒を見てくれる

                          BobはDFRNにより
                          写真へアクセス

        Alice's SNS                                   Bob's SNS



                                              Good!
                      コメントはSalmon Protocolで                   Bobは自分のSNSで
                      Aliceの元へ                                写真サイトへアクセス




Aliceは自分のSNSから                            「自分のサイトが一番楽だね…」
写真アプリに投稿
DFRNのまとめ(2)

●   個人の公開プロフィールを表すDFRN-URLと、
    4つのAPIで構成
    ○   自己紹介 要求 - 承認 ( request - confirm )
    ○   メッセージ通知 - 配信 ( notify - poll )

●   個人同士の認証とメッセージ送信に徹したプロトコル
    ○   メッセージの形式や、メッセージの内容は
        Atomなど標準的な仕様の組み合わせ
    ○   電子メールで言えば、DFRNはSMTP(メッセージ交換)
        ■ メッセージの管理(POP/IMAP)や、
          書式(MIME)は別の標準的仕様を採用
DFRNのセキュリティ

●   DFRNでは、プロトコルに従う限りセキュア
    ○   個人的メッセージの再配信は禁止
    ○   メッセージやコメントの作成者は、削除が出来る
    ○   宛先の各サイトでは、削除通知を受け取ったら
        確実に削除する義務がある

●   プロトコルに従わない場合があるのは、仕方ない
    ○   他SNSなど、別のシステムに流れた場合
    ○   DFRNを不正に実装している
    ○   ユーザが手元でコピペして再送信
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機能(#ハッシュタグの共通化)
他のオープンソースの分散型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プロトコル
Federated Social Web

●   SNSでも「オープン」という意味は多様化している
    ○   Open ID : オープンな認証
    ○   OpenSocial : オープンなAPI
    ○   オープンソースのSNS
    ○   APIがオープンな(公開されている)SNS


●   Federated Social Web
    ○   Friendicaのように、SNS同士が連携しているWeb
    ○   2005年にW3CでFederated Social Web Inqubatorグループが発足
まとめ(1)

●   中央集権型SNS
    ○   SNS管理者が全てを握っている
    ○   メールよりずっと便利なコミュニケーションが可能
    ○   でも「ぼくのSNS」を作ってもあまり役に立たない



●   Distributed SNS / Federated SNS
    ○   共通のプロトコルで連携するSNS
    ○   SNSとメールのいいとこどり
         ■ メールサーバのように自由に管理できる
         ■ なおかつ、SNSの豊富な機能はそのまま
まとめ(2)

●   Friendica
    ○   DFRN/Zot!プロトコルを実装する、多機能Distributed SNS
    ○   メールアドレスに代わり、4つのAPIでコミュニケーション
         ■ 自己紹介から始まる、非対称な関係
         ■ 個人的・公開の二種類のメッセージ
         ■ 配信範囲の制限・削除機能を持つセキュアなプロトコル
    ○   メジャーなSNSの機能は大体サポート
         ■ 細かい部分は、標準的なプロトコルを上手く使用


●   SNSとメールを上手く折衷
    ○   個人ユーザより、むしろ企業ユーザにとって注目すべき
        オープンソースプロジェクト
    ○   かつてパソコン通信と電子メールが辿った歴史が、
        もう一度繰り返されるか?
備考 : 翻訳候補

●   日本語の情報はほとんどなし
    ○
●   翻訳候補としては…
    ○   公式サイト(http://friendica.com/)
         ■ トップページ
         ■ features
    ○   Github上のWikiページ(まだfriend-ikaのまま)
        https://github.com/friendika/friendika/wiki
         ■ なぜかとても見つけにくい…
         ■ オンラインヘルプと大体同じ内容
    ○   ユーザ向けマニュアルらしいものが見あたらない…

Más contenido relacionado

Más de あしたのオープンソース研究所   (14)

Apache Hive 紹介
Apache Hive 紹介Apache Hive 紹介
Apache Hive 紹介
 
Datomic&datalog紹介
Datomic&datalog紹介Datomic&datalog紹介
Datomic&datalog紹介
 
Red5
Red5Red5
Red5
 
Apache UIMA
Apache UIMAApache UIMA
Apache UIMA
 
Flume
FlumeFlume
Flume
 
Gephi Quick Start (Japanese)
Gephi Quick Start (Japanese)Gephi Quick Start (Japanese)
Gephi Quick Start (Japanese)
 
Gephi Tutorial Visualization (Japanese)
Gephi Tutorial Visualization (Japanese)Gephi Tutorial Visualization (Japanese)
Gephi Tutorial Visualization (Japanese)
 
Cassandra v0.6-siryou
Cassandra v0.6-siryouCassandra v0.6-siryou
Cassandra v0.6-siryou
 
MongoDB
MongoDBMongoDB
MongoDB
 
Rails.20110405
Rails.20110405Rails.20110405
Rails.20110405
 
S4
S4S4
S4
 
machine learning & apache mahout
machine learning & apache mahoutmachine learning & apache mahout
machine learning & apache mahout
 
20100831.あしたの研第14回座談会moses.スライド
20100831.あしたの研第14回座談会moses.スライド20100831.あしたの研第14回座談会moses.スライド
20100831.あしたの研第14回座談会moses.スライド
 
Cassandra 分散データベース
Cassandra 分散データベースCassandra 分散データベース
Cassandra 分散データベース
 

Último

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 

Último (11)

Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 

Friendica_28th_AshitanoKen

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