Mastodonについてのあれこれ

Mastodonについての話題がここ数週間の内に破竹の勢いでかけめぐっています。ここまでの勢いというのはTwitterができたばかりの2007年のころが思い起こされ、とてもなつかしい気持になっています。

Mastodonとの出会い

わたしがMastodonのアカウントを作ったのは日本で話題になり初めた四月十一日の夜遅くであり、少し遅いです。前職の同僚と飲んでいる際に話題となって、その場でmastodon.cloudにアカウントを作りました。その後、日本人が多くいるという話を聞いたmastodon.nil.nu (現 mstdn.jp) にアカウントを移して、mstdn.jpでの二度のデータベース削除の末にPawooに落ち着きました。

結果としてわたしとMastodonアカウントは@ykzts@pawoo.net@ykzts@mstdn.jp@ykzts@mastodon.cloudの三つに加えて、検証用に自分で立てたインスタンスのアカウントである@ykzts@omanko.pornの合計 四つです。少し作り過ぎてしまったかな? と思わなくもないので、これ以上のアカウントを取得する予定はありません。ほかのインスタンスで「@ykzts」というユーザー名のアカウントが存在していても、それはわたしではない別の人でしょう。

Pawooの運営元であるピクシブ株式会社は何年も前からイラスト投稿サイト「pixiv」を運営しています。そうしたつながりからか、Pawooには絵を描かれる方が多く参加しています。当然 Pawooにおいてもイラストを投稿されていて、ローカルタイムラインにおけるイラストの比率は非常に高くなっています。性的な話題も多くあり、人を選ぶようなインスタンスではあるかと思います。

ですが、だからこそわたしにとっては都合が良く、そしてとても居心地の良い環境です。わたしはこうした場所を待ち望んでいたのかもしれません。

Mastodonインスタンスの運用

さて、MastodonのバックエンドにはRuby on Rails (Rails) でフロントエンドにはReactが使われています。この両フレームワークはわたしがこれまで公私ともに使ってきたものであり、わたしの技術スタックと見事に合致するものでした。両フレームワークを用いたウェブアプリケーションの運用についての知見もありますし、また実装についての知識もないわけではありません。

技術的にある程度は触れそうだと思い、Mastodonのアカウントを最初に取得してからちょうど一週間後である四月十八日にさくらのVPSの契約をしてMastodonのインスタンスを作りました。勢いで取ってしまったomanko.pornというあまりにもはずかしい名前のドメイン名での運用になっています。

現在は登録の受け付けをしていませんが、ルール決めや説明文についての記載をおえたら登録の受け付けを開始しようかと考えています。これまでわたしが培ってきた知識を動員したものになっているのでさくらのVPS 1台で動かしているにしては高速に動かせるのではないかと思っています。このはずかしいドメイン名のインスタンスにどれほどの人が登録しようと思ってくださるかは未知数ですが、それなりの人数は抱えることができるのではないかと期待しています。

omanko.pornのインフラ面

サラリーマンであるわたしは平日の昼間に趣味で運用しているサーバーの面倒を見ることは難しい状況です。そのため、運用における手間を最小限に留められるようにDockerDocker Composeを使っています。使っているdocker-compose.ymlはGitHubのリポジトリーにNginxの設定ファイルと一緒にまとめてあるので、ある程度の参考にすることができるのではないかと思います。ただ、わたしのインスタンスに依存する記述も多いのでそのまま使うことはできないでしょう。あくまで参考にできるだけでしょう。

またMackerelのプラグインとしてmackerel-plugin-mastodonも作りました。これはMastodonインスタンスの「サーバー情報」のページから確認できるユーザー数、投稿されたトゥートの数、接続しているインスタンスの数を定期的に取得して、Mackerelでグラフにプロットしてもらえるようになります。Mackerelを使うことによって、ユーザー数が閾値に達しそうな時にアラートを鳴らすことができるので便利なのではないでしょうか。

Mastodonへのコントリビュート

前置きが長くなりました。ここからが本題です。

Mastodonはまだ生まれたばかりです。最初のコミットがされてから、まだ一年も経っていません。まだまだ成長の余地が多くあります。

「Mastodonインスタンス運用」の節でも書いたように、Mastodonで使われている技術はわたしの技術スタックと合致しています。MastodonはGNU Affero General Public License Version 3 (AGPL) でオープンソースソフトウェアとして公開されていることもあり、わたしの微力でも開発に少しでも役立てられるのではないかと思い、Mastodonの上流に対するコントリビュートも少しずつしています。

この記事を書いている時点で、32個のPull Requestsを送り、ありがたいことにその内 29個をmergeしていただいています。日本語への翻訳や細かいバグの修正が主ですが、少しでも貢献ができているのであればうれしく思っています。

Mastodonの原作者 (一番初めにコミットをした人) であるGargron氏は現在 Patreonで寄付者を募り、フルタイムでMastodoonの開発を行っています。日本からでも「Gargron is creating open-source software | Patreon」から簡単にGargron氏のパトロンになることができるので、比較的貢献はしやすいかと思います。

ここ数箇月で大きなお金を使う事情が何度かあったため、わたしは残念ながらGargron氏に対して月に10USDの貢献しかできていません。その分、開発での貢献ができれば……と考えています。

Mastodonに対して少しでもお世話になっている、もしくはなりそうだと思われた方は「Gargron is creating open-source software | Patreon」からGargron氏のパトロンになると良いでしょう。リターンとしてGargron氏を含めたMastodonの開発者やMastodonのインスタンスを管理している人たちが集まるチャット (Discord) への招待もあります。パトロンになっても損をする要素はないかと思います。

参考までにわたしのメールアドレスはykzts@desire.shです。Gargron氏のパトロンになった上で、余剰のお金があるのであればわたしにも寄付としてAmazonギフト券をいただけたらな、と思います。

Mastodonインスタンスの運用やMastodon開発における検証をするためのコストといったものが少なからずかかってしまいそうなので、金銭的な対価が少しでもあるととてもうれしく思います。わたしからのリターンとしてはMastodonの開発や運用における知見を共有することといったことしかできませんが、よろしければよろしくお願いいたします。

追記 (2017年5月3日 20:00)

そうこうしていたらMastodon (tootsuite/mastodon) のCollaboratorになりました。Mastodonに対するPull Requestのレビューをしたりすることになります。改めてよろしくお願いいたします。