2017年〜日本のマストドン

325 Views

September 08, 23

スライド概要

JANOG40での発表資料
janogdonを設定した際に感じたこと等を発表している

profile-image

SlideShareが使いにくくなってしまったのでこちらに全部移してみた。 - 勉強会で使った資料 - イベントでの登壇資料 等を中心に上げてあります。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2017年 日本のマストドン 2017/7/27 JANOG40 Meeting 発表資料 DMM.comラボ 佐々木 健

3.

インターネットの価値

5.

JANOGの価値

6.

今回も盛り上がっていきましょう Twitterハッシュタグ #janog

7.

Twitter???

8.

Twitter???

9.

パンがないなら ケーキを食べれば 良いじゃない

11.

JANOG40のテーマ 「今までを振り返る、これからを知る」

12.

本日の内容 ● 枕 ● 今までの分散SNSの振り返り ● Mastodonの特徴 ● 今後の展開予想 ● ディスカッション

14.

Mastodonブームに便乗 4/10〜 4/17 4/26 5/1 5/2 5/10 5/10 6/5 6/26 7/11 7/27 Mastodonがメディアに取り上げられ突然ブレイク JANOG40プログラム募集締切日 エイヤでMastodonプログラム応募 プログラム選考会議 janogdon.net のインスタンス立ち上げ 内輪向けに細々とアナウンス JANOGのメーリングリストでアナウンス IPv6対応 バージョンアップ(1.3.2→1.4.1) バージョンアップ(1.4.1→1.4.6) バージョンアップ(1.4.6→1.4.7) JANOG40ミーティング ← Now!!

15.

janogdon.net とは https://janogdon.net/about の内容↓ 注意書き↓ とりあえず立ててみただけ。気まぐれで落とすかもしれない。 JANOGer っぽい人用?、と思ってるけど、JANOG運営委員とは連係してないよ。 janogdon ≠ JANOG だよ、と。 自由に遊んでくれてOK。 でも mastodon はアカウント削除機能が未実装なので覚悟してアカウント登録し てね。(※バージョン1.4.2で実装されました) 裏側のこととかは、どこかのJANOGの発表で使わせてもらうかもしれない。 サーバはさくらのVPS、非力なスペックなので、あんまりいじめないでね。

16.

2017/7/24時点

17.

Mastodonの技術的概観

18.

多機能なMastodon ● Twitterに似たモダンなウェブインターフェイス ● Twitterに似たAPI ● バックエンドにデータベースを持つ ● インスタンス間通信の仕組み(OStatus)

19.

clocコマンド ● cloc(Count Lines of Code) – https://github.com/AlDanial/cloc ソースコード中の行数を数えるツール 有効な行のみをカウント 多数の言語に対応

20.

clocコマンドでMastodonを調べる % cloc mastodon-1.4.7.tar.gz 3275 text files. 3237 unique files. 1970 files ignored. github.com/AlDanial/cloc v 1.70 T=9.37 s (139.9 files/s, 8238.7 lines/s) ------------------------------------------------------------------------------Language files blank comment code ------------------------------------------------------------------------------Ruby 651 6092 1410 22216 YAML 148 196 144 16284 JavaScript 212 2375 141 12167 JSON 36 0 0 6832 SASS 23 936 5 5154 Haml 88 300 22 1466 ERB 117 374 0 627 27 67 0 304 HTML 6 4 0 73 XML 2 0 0 11 Bourne Shell 1 4 3 7 Markdown ------------------------------------------------------------------------------SUM: 1311 10348 1725 65141 ------------------------------------------------------------------------------- 65,141

21.

Mastodonのコード ● 6万行程度のコンパクトなコード ● Ruby on Rails というモダンなウェブフレームワークで書かれている ● JavaScriptのコードも多い ● モダンな拡張言語も活用 ● – SASS:スタイルシート言語 – Haml:HTMLテンプレート言語(Railsで良く使われる) – ERB:HTMLへのRubyスクリプト埋めこみ技術 教科書的な綺麗なコード

22.

他のソフトウェアと比較 ● bind-9.11.0-P5 – ● inn-2.6.1 – ● みんな大好きDNS だいぶ前にお世話になったNetNewsサーバ IRCD-Hybrid – だいぶ前にお世話になったIRCサーバ

23.

bind-9.11.0-P5 % cloc bind-9.11.0-P5 4722 text files. 4434 unique files. 2568 files ignored. github.com/AlDanial/cloc v 1.70 T=8.49 s (255.2 files/s, 102860.2 lines/s) --------------------------------------------------------------------------------------Language files blank comment code --------------------------------------------------------------------------------------C 768 66345 56380 363251 Bourne Shell 444 19049 20143 133091 HTML 116 548 795 44516 C/C++ Header 609 10477 42156 31248 XML 13 1258 138 21412 m4 32 1989 818 17860 C++ 74 3487 3129 17191 Perl 61 1571 1771 8472 XSLT 7 146 138 1588 Tcl/Tk 2 174 149 842 Windows Module Definition 9 20 52 513 Python 5 64 63 366 13 112 70 319 Windows Resource File 2 41 47 249 diff 1 31 74 240 awk 5 69 145 236 CSS 1 31 28 140 Markdown 1 22 0 64 Protocol Buffers 1 49 170 49 Windows Message File 1 8 1 29 DTD 1 8 33 20 TeX 1 3 6 8 make --------------------------------------------------------------------------------------SUM: 2167 105502 126306 641704 --------------------------------------------------------------------------------------- 641,704 Mastodonの 10倍

24.

inn-2.6.1 % cloc inn-2.6.1 894 text files. 885 unique files. 406 files ignored. github.com/AlDanial/cloc v 1.70 T=1.55 s (314.1 files/s, 138891.9 lines/s) ------------------------------------------------------------------------------Language files blank comment code ------------------------------------------------------------------------------C 262 16751 20114 94598 Bourne Shell 28 6071 6476 35541 m4 37 1091 986 10219 C/C++ Header 94 1390 3311 4503 make 24 579 230 3556 Perl 22 343 1355 3107 Visual Basic 5 341 0 2588 yacc 1 212 19 842 10 137 445 343 lex 1 46 12 197 CSS 1 3 7 79 XSLT 1 8 42 78 Korn Shell 1 26 81 18 Oracle Forms 1 3 0 15 Python 155,684 ------------------------------------------------------------------------------SUM: 488 27001 33078 155684 ------------------------------------------------------------------------------- Mastodonの 2.4倍

25.

IRCD-Hybrid % cloc hopm-1.1.4 101 text files. 94 unique files. 14 files ignored. github.com/AlDanial/cloc v 1.70 T=0.26 s (331.9 files/s, 230088.4 lines/s) ------------------------------------------------------------------------------Language files blank comment code ------------------------------------------------------------------------------Bourne Shell 10 4133 4547 24884 m4 16 1009 131 9678 C 23 1903 2632 8746 C/C++ Header 30 195 443 814 yacc 1 147 28 552 lex 1 60 26 285 make 5 6 0 70 YAML 1 5 1 19 ------------------------------------------------------------------------------SUM: 87 7458 7808 45,048 45048 ------------------------------------------------------------------------------- Mastodonよりちょっと小さい

26.

比較結果 ソフトウェア Mastodon 総コード数 主な言語 65,141 Ruby,JavaScript bind 641,704 C inn 155,684 C 45,048 Shell,C IRCD-Hybrid Mastodonは高機能なのにコンパクト モダンな開発フレームワークの威力

27.

Mastodonが利用するソフトウェア ● Ruby on Rails →ウェブ開発フレームワーク ● PostgreSQL →RDBサーバ ● Sidekiq →非同期ジョブキューサーバ ● Redis →KVS ● Node.js →サーバサイドJavaScriptエンジン ● Docker →コンテナ管理フレームワーク

28.

運用上必要になるソフトウェア ● Linux OS基盤 ● リバースプロキシ(Nginx等) ● メールサーバ(Postfix等) ● 監視ツール

29.

技術的概観まとめ ● 多機能を少ないコードで実現 ● 新しめの技術を利用 ● 複数の外部ソフトウェアを活用 ● コンテナ技術を活用したパッケージング

30.

Mastodonの技術的課題

31.

運用が大変 ● インストールが簡単ではない ● アップデートも簡単ではない ● 理解すべき技術要素が多い ● トラブルシュートが難しい

32.

商用サービスとしては機能不足? ● アカウント削除機能がない (※バージョン1.4.2で実装された) ● 管理機能が弱い (※バージョンアップの度に強化されている) ● 外部認証が実装されていない (※開発者が実装予定と言っている) ● 高負荷時にボトルネックポイントがある (※バージョンアップ時に改良されている)

33.

プロトコル(OStatus)が発展途上 ● まとまった仕様書がない ● インスタンスをまたいだメッセージ削除ができない ● URIをキーに用いてしまっている ● 安全なインターネットを前提にしている

34.

耳にしたことがあるクレーム ● PosgreSQLじゃなくてMySQLを使って欲しい ● React.jsを使ってるのはダサい ● UIが絶望的に良くない ● APIとUIは分離させるべき

35.

Mastodonの今後の展望

36.

継続的なソフトウェア開発 ● GitHub上で開発が続けられている ● 開発ペースは速い ● 開発者のモチベーションも高い ● コントリビューションも多い ● 不足機能は継続的に追加されている

37.

プロトコルの進化 ● OStatus → ActivePub ● Pubsubhubbub → WebSub ● OpenID → WebFinger ● Atom → Activity Streams

38.

別実装の出現 ● ● Mastodonの拡張 – Pawoo – friend.nico OStatus通信可能な別実装 – stat.ink

39.

Mastodonをいじってみた感想

40.

なつかしい気分になった ● ● ● インスタンス間でメッセージをやりとりするのは NetNewsやIRCを彷彿とさせる 昔のノウハウがそのまま生きる – ストレージを圧迫するのは画像 – 繋がる相手を選ぶことでストレージ圧迫を減らせる 小さいコミュニティの面白さ

41.

新しい技術は楽しい ● 少ないコード量で超高機能なサービスを実現 ● 強力なモダンフレームワーク ● 複数のソフトウェアを統合的に管理できるDocker

42.

こうなると嬉しい ● 簡単にインストール可能 – apt install mastodon – kubectl run mastodon --option... ● 運用が楽な別実装の出現 ● 既存のSNSのOStatus(ActivePub)サポート – ● mixiの復活、Twitterという巨大インスタンスの出現 クラウドサービスの出現(SaaS、BaaS) – 一般人はサーバ管理はしたくない

43.

最後に言いたいこと ● 人と人とを繋ぐのはインターネットの大きな価値、 それを実現するツールはなくならない ● 新しいものは面白い ● 古い知識も意外と役に立つ ● Mastodonがなくなっても知見は後で役に立つ ● 一緒にMastodonで遊びましょう

44.

インターネットの価値

45.

おしまい Special thanks to いらすとや