Misskeyカスタム絵文字で表示される画像がMFMの倍率によって変わるという話
この記事は経験則に基づく推測です。ソースコードを読めばより詳細な情報はわかるでしょうが、私には分かりませんでした。
同じショートコードでもMFMの倍率で表示される画像は変わる
事例
ある日、ぼすきーというサーバーの絵文字でとある異変が発生しました。ぼすきーには:tea_mikoto:というショートコードを持つ絵文字があるのですが、MFMで$[x3 :tea_mikoto:]を行うと表示されないといった不具合が発生していました。この時、不思議だった点として:tea_mikoto:とだけ書いた場合には表示されることにありました。
私はこれを疑問に思い、HTML要素を確認しました。すると、:tea_mikoto:と$[x3 :tea_mikoto:]では参照している画像のURLが異なることに気がつきました。
(:tea_mikoto:の場合)
"https://voskey.icalo.net/proxy/image.webp?url=https%3A%2F%2Fvoskeyfiles.icalo.net%2Fdrv%2F726dec37-2342-4fe2-ae3d-2b0b2887bc68.webp&emoji=1"
($[x3 :tea_mikoto:]の場合)
"https://voskeyfiles.icalo.net/drv/726dec37-2342-4fe2-ae3d-2b0b2887bc68.webp"
上で書かれている通り、倍率が異なると指し示すURLが異なることがあります。
結果として表示されない問題というのは$[x3 :tea_mikoto:]で呼び出してたファイルだけ破損していたということで、話は終わります。
オリジナル画像とProxied imageの違いを知る
上で紹介した事例では、モデレーターが画像サイズが650×650のオリジナル画像を絵文字として登録し、登録した際にMisskeyの内部で画像サイズが128×128のProxied imageが生成されました。このようにProxied imageとは自動で生成されるもので、特にサーバー管理者が手作業で用意しているものではありません。
Proxied imageの解像度は申請された絵文字の長辺が128となるように縦横比を保存しながら変形しているように見えます。そのため、Proxied imageは画質低いが、容量は軽いリアクションなどに向いた形式のバージョンとして生成されたと考えられます。
カスタム絵文字の追加申請を考える
カスタム絵文字は画像のデータ容量が許す限り高画質にした方が良いでしょう。これはMFMなどで拡大した際に高画質でカスタム絵文字を表示することが可能だからです。また、普段のリアクションではデータ容量の小さいProxied imageを使うため「この絵文字は通信量を必要以上に消費するのではないか」といった懸念はしないで良いでしょう。
オリジナル画像として表示される条件
わかりません。現状どのようなトリガーでオリジナル画像を参照するようになっているのかは私には分かりません。たぶんすごい人がソースコードの中身を読んで教えてくれるはずなので私はそれを待っています!!!一応、スケールアップしたらオリジナル画像が使われやすい傾向にある気がします。