Upgrade to Pro — share decks privately, control downloads, hide ads and more …

mastodon

 mastodon

mastodonについて話しました

Keiji Matsuzaki

April 28, 2017
Tweet

More Decks by Keiji Matsuzaki

Other Decks in Technology

Transcript

  1. 雑Con #6
    Mastodonについて
    [email protected]

    View Slide

  2. 自己紹介
    [email protected]
    ● freee K.K.
    ● ソフトウェアを実装する人
    ● 給与計算freee

    View Slide

  3. View Slide

  4. mastodon

    View Slide

  5. mastodon概要
    ● GNU Social compatibleなRails製のSNSサービスを実現するアプリ
    ● fist commit -> 2016年2月
    ○ https://github.com/tootsuite/mastodon/tree/9c4856bdb11fc9311ab30a972
    24cee3dfaec492f
    ● インスタンスという概念のもと、各ホストがmastodonをサービスとして運用する
    ● インスタンス間の連携も可能

    View Slide

  6. 流行り

    View Slide

  7. 2017年4月になってから急速に流行りだした
    ● アスキーでmastodon紹介の記事が出る
    ○ http://ascii.jp/elem/000/001/465/1465842/
    ● それを見たぬるかるさんがmstdn.jpを立ち上げ
    ● 4月15日〜ぐらいにTwitter上で拡散、各種メディアで取り上げ
    ● Dockerfileがgithubリポジトリにホスティングされており、個人で気軽に立ち上げら
    れるためインスタンスが爆発的に増える
    ● pixivがpawoo.netを立ち上げ
    ● ドワンゴがfriends.nicoを立ち上げ
    ● mstdn.jpの管理者ぬるかるさんがドワンゴに就職決定
    ○ http://www.itmedia.co.jp/news/articles/1704/24/news045.html

    View Slide

  8. 技術的な特徴
    Specs-and-RFCs-used.mdより
    OStatus / Salmon / Portable Contacts
    Atom / Atom ActivityStreams / Atom Threading
    PubSubHubbub / Webfinger / Link-based Resource Descriptor Discovery

    View Slide

  9. OStatus
    2012年にW3C標準化された技術。幾つかのプロトコルと取り込んだものの総称。
    ソーシャルネットでやりとりを行うために制定された。
    利用している技術:
    Atom, Activity Streams, PubSubHubbub, Salmon, Webfinger

    View Slide

  10. PubSubHubbub
    ● 発音しづらい
    ● Google発の技術
    ● データの送受信で、クライアント・サーバの負荷を軽減するための技術
    ○ 能動的にデータを送信したいクライアントが hub側にPush形式で情報を送信する
    ○ データを受け取るサーバは hubからデータを受信する
    ○ http://unoh.github.io/2009/08/19/what-is-pubsubhubbub.html
    ● 名前がWebSubに変わるみたい (Draft)
    ○ https://w3c.github.io/websub/

    View Slide

  11. Webfinger
    ● https://webfinger.net/
    ● HTTPを利用し、インターネット上で特定のユーザ情報を返す
    ● RFCで仕様が定義
    ● Mastodon内での実装
    ○ Gemを利用している (mastodon作者が実装)
    ○ Controller

    View Slide

  12. Salmon
    ● http://www.salmon-protocol.org/
    ● メッセージのやりとりに利用
    ○ フォローする
    ○ ブロックする
    ● Mastodonでの実装例
    ○ Gemを利用している (mastodon作者が作成)

    View Slide

  13. 運用面

    View Slide

  14. 運用面
    ● Ruby on Railsアプリ
    ○ Rack middleware (puma)を利用して運用する
    ○ 特に困ることはなかった
    ● 管理すべきプロセスは3つ
    ○ Web Application, API用サーバとなるプロセス
    ○ SidekiqにてMailer, Push, Pullを処理するジョブキュープロセス
    ○ Streamを処理するnodeプロセス
    ■ Websocketを利用する
    ■ タイムラインの処理を行う
    ■ source

    View Slide

  15. 試しに立ててみた
    mstdn.shisaku.tokyo

    View Slide

  16. View Slide

  17. お一人様インスタンスでは
    ● t2.mediumであれば1台で運用可能
    ○ CPU 2core, memory 4GB
    ● 誰かをリモートフォローしないと始まらない
    ● federation timeline が色々流れてくるけど余裕
    ● S3にメディアデータを保存する運用にしなければ予算推測しやすそう
    ● Sidekiqプロセスが頻繁にジョブキューを処理するのが気になるが、詰まることはな

    ● SSL証明書
    ○ 今回はACM使ったが、ちょっと面倒かも
    ● MTA(メールまわり)の設定が面倒だった
    ○ mailgunを利用した

    View Slide

  18. 雑感
    ● 本格的な流行りが始まって2週間ほど
    ○ 熱量が下がってきたらどうなるのかなという思いはある
    ○ 企業が管理しているインスタンスで今後問題が発生したらどう対応していくのかなという思いがある
    ● Twitterの代わりになるか...?
    ○ なることはないが細かなコミュニティ運営のためのツールとしてよさそう
    ○ 個人が管理しているインスタンスの mastodonがアップグレードされずに放置されていくのが増えて
    いくとどういう問題が発生するのだろう
    ● 個人運用おすすめ
    ○ APIもあるし、モバイルアプリの練習台になる (すでにいくつかのアプリが公開されている)
    ○ インフラ運用面のノウハウもたまる
    ● Mastodonの設計がきれいなので参考になる
    ○ Ruby on Railsでお仕事している面で大変参考になる

    View Slide

  19. 参考資料
    ● Github mastodon repository
    ● Mastodon instances
    ● Mastodonとその脱中央集権の仕組み
    ● https://medium.com/@Gargron
    ● gnusocial や mastodon の哲学

    View Slide