Misskeyのクライアントを作ってる話: Fediverse Advent Calendar 2024

Posted on Sun 22 December 2024 in 雑書き

この記事はFediverse Advent Calendar 202419日目の記事です。(遅刻してしまって申し訳ないです)

最初に

バタバタしすぎて遅れてしまって申し訳ないです。

何書こうかなーと考えていて、今作ってるMisskeyのクライアントがあったのでそれを紹介しようと思います。

なんで作ってるのか

一言でいえばロマンです。

もう一つ理由としてはMisskeyのAPIライブラリを作っている(ここで紹介してます)のでそれのサンプルとテストを兼ねて作っています。

どんなやつなのか

言葉で言うよりも実際のものを見たほうがわかりやすいと思うのでスクショを載せます。

ユーザーのプロフィール画面

タイムライン

簡単なノートの表示やタイムライン、アバターデコレーションなどを実装していました。

この他にもストリーミングやリアクションなどの機能もちょっとずつ追加しています。

大変だったところと問題点

このクライアントはC#(WinUI)を使って開発しているのですが、Misskeyの絵文字などで使われている形式のWebPやAPNGのアニメーションに全く対応していないので、アニメーションの部分は全部自力実装です(これのために半年潰しました)。

WebPのデコード部分はlibwebpに任せている部分以外は全部C#で実装しました。 が、その結果メモリ部分で解放がうまく行っておらず、ちょっと遡ってみるだけで2GBもメモリを食べる怪物に成長してしまう状況になっています。

メモリリーク

なので来年はこの典型的なメモリリークをなんとかしていこうと思います。

締め

今年の頭からこれを開発し始めていたのですが、一旦全部吹き飛ばしてコードを書き直したりなどだいぶ過酷な開発をしてきました。

なので、この調子だとまた振り出しに戻りそうですが、来年こそは安定するものに仕上げていきたいと思っています。