Fediverse Advent Calendar 2022の12日目の記事

atsu1125 Mastodon開発報告

まえがき

 この記事は Fediverse Advent Calendar 2022 第1会場の12日目の記事となります。昨年に引き続き執筆できることにお喜び申し上げるとともに、今年もいろいろと実りの多い年になりましたので早速書いていくものとします。
 私は現在も大学生をしております。専攻は経済学です。経済学といっても広いですから詳しく申し上げますと社会保障とか労働経済といったところを専門的に勉強してまいりました。現在は憲法学の卒業論文を執筆しております。もちろん憲法学など専門外なんですがゼミナールに所属しておりますので経済学部だけど書いてみようというわけです。
 趣味ではアマチュア無線をしておりますが、最近は少しコンピュータも触ってみるかということで、Fediverseのソフトウェア開発と運用に従事しております。別の機会に紹介しますが、最近はGroundpolisとMisskey v11とめいすきーのフォークを開発しつつ、Misskey v12のホスティングなどもしています。昨年はMastodonの運用について触れましたが、今回はMastodonの開発についてちょっと紹介していきたいかなと思います。

このサイトについて

 ご存知でおられない方もいるかもしれませんので簡単にこのサイトの紹介をさせていただきます。ここのサイトはPlumeというActivityPub互換のソフトウェアを使用したブログインスタンスとなっております。これ自体もただのブログサイトじゃなくてインスタンスなんですね。そのため一番下のブースト・いいねボタンを押すことでMastodonとかに投稿を共有することができます。

Mastodon開発について

 さてようやく本題に入ることとします。私は特に今年Misskeyの開発・運用をしているイメージが強いかもしれませんが、Fediverseのソフトウェア開発・運用で最も力を入れておりますのはMastodonであります。MastodonはActivityPubをしゃべるソフトウェアの中ではトップシェアを誇っておりデファクトスタンダードになりつつあります。しかし私としてはいくつか機能を改良・改変していきたいと思ったものですからフォークして開発しています。
ここでフォークという単語が出てきましたので少しMastodonフォークを整理しておきます。

Mastodonフォーク

 私が開発しているフォークはMastodon Glitch Editionが元となっております。こちらは日本ではあまりメジャーではないと思いますが、Fediverseでは割と頻繁に見かけます。とにかく機能面の改造が多くて、のちに紹介するFedibirdとなかなかいい勝負かなと思っています。開発者の方はいわゆるオリジナルのMastodonの開発もされている方でしてmain追従ですから開発速度が速いのも特徴です。こちらのフォークをさらにフォークしてコントリビュートしてるのが私というわけです。
 おそらくMastodonフォークみなさんに一番馴染みのあるのはFedibirdでしょうか。こちらはFedibirdで利用することを想定しているので、運用しているインスタンスは限られていると思いますが、ご存知の通り改造点数が多くて、それでも利用者がとにかく多い汎用インスタンスとして機能していることに驚いております。のえるさんの告知の効果というところでしょうか。
 他にもHometownというフォークもございまして、実はインスタンスを建ててみたい鯖缶さんにはちょっとお勧めしてみたいものなんです。先に取り上げたMastodon GlitchやFedibirdに比べると全然改造されていないのですが、その分安定性が高くて、かつフォークとして必要な改造は取り込まれているのです。便利そうなのはローカル限定投稿とExclusive listでしょうか。ローカル限定投稿はMastodon Glitchの機能でもあるんですが、MisskeyとAkkomaにはデフォルトでありますから馴染みがあるかと思います。Exclusive listはめいすきーに同じ機能があるんですが、簡単に説明するとリストに追加した人をホームタイムラインから除外できるっていう機能です。抜き出しているという感覚ですね。

atsu1125/mastodon 去年までの流れ

 さて私のフォークの紹介に入るとしましょう。リポジトリはatsu1125/mastodonになります。去年取り込んだ主要機能としては、cat機能とPGroongaによる全文検索機能とドメインタイムライン機能といったところでした。
 cat機能はMisskeyにあるので馴染みがあるかもしれません。投稿の単語がnyaizeされるのです。今年Fedibirdにも導入されかけたんですが、利用者の反対により中止されてしまいました。小田急丼からいただきました。
 Pgroongaによる全文検索機能は、MastodonはPostgreSQL単体での全文検索ができず、ElasticSearchの導入が必須なんですが、PGroongaというPostgreSQLの拡張機能で検索できるようにするものです。これの副次効果なんですが、インスタンス内の投稿のほとんど全部を検索できるようになっています。きちんとフォローしてない人のPrivate投稿とかDMは検索されないようにはなってますが、デフォルトですとElasticSearchを入れても自分に関係のある投稿しか検索できないのでめっちゃ不便でしたから、とても助かっています。小田急丼からいただいたので感謝です。板橋丼にも導入されてます。
 ドメインタイムライン機能はFedibirdからいただいたものです。特定のドメインの投稿だけをパブリックタイムラインから抜き出して表示することができてとても便利です。

atsu1125/mastodon 今年の成果

 今年導入した主な機能としてはフォロー承認制の追加オプションとフォロワー解除ボタンとインスタンステーマカラーの設定です。
 フォロー承認制の追加オプションとしては以下のような感じですね。 フォロー承認制オプション ほとんどめいすきーからアイデアを得ているのですが、今回Mastodonの方にも入れてみました。
 Mastodonの仕様上、フォロー許可制のアカウントへのフォローとインスタンスでサイレンスされているアカウントからのフォローは強制的にフォローリクエストを発行するんですが、特にそれ以外の差別を行なっていません。MisskeyだとBotからのフォローは承認制にするオプションがありました(現行のv12だとないです)が、MastodonではBotに対してなんらかの差別的取り扱いを行うと、意図的にBotフラグを設定しなくなる恐れがあることから導入されていません。
 私のところでは、設定にはありませんが、Botからのフォローは全てのアカウントに対して承認制になるようにしています。これは私のインスタンスの運用方針に関連しており、Botによる能動的なフォローは禁止しているためです。おそらくFedibirdではBotからのフォローを承認制にするか選択するオプションがあるはずです。
 他にもフォローリクエストを自動承認する設定とかは結構便利で、たとえば承認制のアカウントでフォローインポートを行なった際に、大量にフォローバックのためのリクエストが来て承認が大変といったことがありますが、それを軽減することができますし、通常の運用でも多くの場合はフォローしているならばフォローされることには抵抗がないという考えからです。Misskeyにもこの設定はあるのですが、Mastodonにはありません。

 次にフォロワー解除ボタンですが、今までもMastodonでフォロワー解除を行うことは可能でしたが以下のように結構煩雑な手順を踏まないとできませんでした。 フォロワー解除手順  タイムラインのプロフィール画面からフォロー解除・ミュート・ブロックを行うことは可能なのにフォロワー解除だけができないのも不自然であると考え、比較的簡単にフォロワー解除を行えるようにボタンを配置してみました。 フォロワー解除ボタン

 最後にインスタンスのテーマカラーの設定ですが、こちらは設定画面は未実装でソースコードにハードコーディングされていますが、Misskeyインスタンスから確認すると以下のようにthemeColorという情報があるのが分かります。16進数のカラーコードで設定できるようになっているのですが、これがMisskeyインスタンス上のInstance Tickerに反映されて、インスタンスごとに色が決まっております。Mastodonからでは全く変化がないんですが、Misskeyインスタンスとも比較的多く連合していて、未設定ですと黒く表示されてしまうため、独自色を出してみました。 atsuchanpageインスタンス情報

 他にも様々な機能がありますが全てを紹介することはできませんので、興味のある方はデモインスタンス(demo-mastodon.shc.kanagawa.jp)で試していってください。百聞は一見にしかずということわざもありますから、触ってみるのがおそらく一番分かりやすいと思います。

最後に

 今回はソフトウェアの開発を紹介するにとどめましたが、インフラ面でも昨年とは少し変更がありました。引き続きVultrにお世話にはなっておりますが、フォロワーと連合先が増えた関係で負担が大きくなってきましたので、冗長構成はなしとしておおよそスペックを2倍に増やしています。バックアップ体制は十分に構築しているので、おそらく問題はないでしょうと思っています。ドル高の影響をもろに受けていますね。なかなかおつらいところ。
 引き続きこれからも私たちをよろしくお願いします。