#fedibird #fedibird_info 画像まわり、さらにいろいろいじりました。
・heic, heif, avif, bmpの対応を改善。avif以外は受け取ったあとwebp変換して扱います。
・カラープロファイルが抜けることがあったので、保持されるようにしました。
・サイズの大きいGIF animationを受け取って縮小するようにしました。従来よりも大きなサイズに対応しています。
・メディアプロキシのレートリミットを緩くしました。
動画のサムネイル生成がちょっとおかしい気がしますが、他はだいたい整備できたと思いますので、このへんで一区切りです。
MisskeyやPleromaなどMastodon以外のActivityPubサーバからやってくるメディアとの互換性が向上しました。
添付画像の他、アバターやヘッダー画像が受け取れないケースをだいぶ減らせたのではないかと思います。
この画像が表示されないという実例をみつけたら可能であれば対処していきますので教えてください。
Mastodonのメディアプロキシについては、恐らくほとんど知られていないと思いますので、少し解説。
まず、Mastodonはリモートから届いた投稿やユーザー、カスタム絵文字などのメディアを、自身の管理下のストレージに保存(キャッシュ)します。
Mastodonは、ユーザーの行動を解析・トラッキングさせない工夫として、外部へのアクセスをサーバが代行し、タイミングをずらし、直接参照させないようにしています。
また、不安定なネットワークではなく、キャッシュした情報から提供することで安定したアクセスを保証し、
不正な情報の埋め込みや、位置情報などの意図しない漏洩を避けるための事前処理をしています。
軽量なサムネイルも生成します。
さて、キャッシュはずっと保持していると延々と増え続けるため、運用上、古いキャッシュを定期的に破棄することが多いです。
この時、メディアが見られなくなってしまっては不便なので、ユーザーが表示しようとしたタイミングで再取得するようになっています。
この代行をメディアプロキシが行っています。
Mastodonは、メディアのURLの代わりにメディアプロキシのURLを渡します。ブラウザやクライアントがそれを表示しようとすると、そのタイミングで再取得してから渡しています。
#fedibird #fedibird_info 低解像度サムネイル関係の設定が増えました。
低解像度サムネイルを使う設定を有効にした時に、
WebUIのアカウントのカラムでフルサイズの画像を表示するための機能を追加しました。
アバターとヘッダーが別になっています。
タイムライン上では低解像度の軽い画像を見つつ、しっかり確認したい場合に綺麗に見られるという設定です。
この設定を有効にすると、サーバがAPIで返すアカウントの情報に、avatar_fullとavatar_full_static、header_fullとheader_full_staticを追加するようになります。URL文字数分、わずかですが、転送データが多くなりますので承知しておいてください。
なお、転送量を少なくする設定には他にもあります。
『アニメーションGIFを自動再生する』をオフにしておくと、アバターや絵文字のアニメーションがオフになりますが、同時にデータもかなり軽くなります。
『被フォロー状態をフォローボタンに反映する』をオフにしておくとrelationship確認のAPIコールが減ります。
『リアクションのストリーミングを無効にする』ことでストリーミングも少なくなります。
上手に活用してください。
あ、『タイムライン上にフォローボタンを表示する』『タイムライン上に購読ボタンを表示する』もオフじゃないと減らないな。
まあ、多分デフォルトがオフなので大丈夫でしょう……。