発端
Mastodon のサーバーを運用しつつ、Fediverse の世界を楽しんでいるわけですが、Misskey の絵文字リアクションという隣の芝が青く見えてきました。そこでこんな投稿をしました。
2 番目の投稿に返事があり、kmyblue を教えていただきました。
Mastodon による絵文字リアクションの実装と言えば Fedibird が有名で、こちらしか知らなかったのですが、Fedibird は Mastodon ver.3 ベースであり、現行の ver.4 に移植するのはかなりきつそうでした。
その点、kmyblue は ver.4 ベースですので多少は楽できるかもと思い、Mastodon v4.4.7 に kmyblue の絵文字リアクション関係のコードを移植する方針で作業を開始しました。
方法
方法は至って単純です。
- Mastodon を fork する。
- fork した Mastodon を clone し、v4.4.7 に switch。
- kmyblue を clone する。
- WinMerge で両者を比較。
- kmyblue で
grep emojiして該当するソースを検索。 - 前項で見つけたソースを WinMerge で差分を見て、関係ありそうなところを移植。
- kmyblue にしかないファイルについては、ファイル名に
emojiが含まれてればそのままコピー。 - 一通り移植したら、
bundle exec rails assets:precompileが通るか確認。 bin/devを実行してデバッグ。連合しなくてもわかるバグを取る。- 連合しないとわからないバグを取るため AWS にデプロイ。
- AWS 環境でデバッグ。
という感じです。だいたい一週間でエラー無く動くようになりました。
動作
Mastodon から Misskey にリアクションを送る
- Misskey に投稿します。

- Mastodon に Misskey アカウントの投稿が流れてきます。リアクションします。

- リアクションしました。

- Misskey にリアクションが表示され、通知が来ます。

Misskey から Mastodon にリアクションを送る
- Mastodon に投稿します。

- Misskey に Mastodon アカウントの投稿が流れてきます。リアクションします。

- リアクションすると、MMastodon にリアクションが表示されます。

- Mastodon に通知が来ます。

ついでにやったこと
横長絵文字のサポート
kmyblue からの移植です。絵文字はマウスカーソルを hover すると 2 倍に大きくするようにしました。
カスタム: 
オリジナル: 
絵文字ピッカーを大きくする
オリジナルは 8 列ですが、これを 5 列にして絵文字を 40px にしました。
カスタム: 
オリジナル: 
ソースコード
ここにあります。Mastodon のリリースに合わせて rebase していく予定です。