そうだ、クライアントアプリ自作しよう

この記事は Fediverse Advent Calendar 2024 の 12 月 6 日分になります。

2018 年頃から使い続けていた自作のマストドンクライアントを今年の 2 月に App Store でリリースしました。開発に至る経緯や自作のメリットデメリットなどをまとめます。

私が作ったクライアントアプリの App Store のリンクを貼っておきます。興味があれば見に来てね → KrazyTown on App Store

目次
  1. 簡単な自己紹介
  2. クライアントの自作に至った経緯
  3. 自作クライアントの設計思想
  4. 自作するメリット
  5. 自作することによるデメリット
  6. 最後に

簡単な自己紹介

まずは軽く自己紹介します。

普段はおひとり様インスタンスでマストドンライフを満喫しております。

マストドンを始めたのは 2017 年 12 月に ますとどんちほー にアカウントを作ったのが最初でした。それ以降、メインアカウントを ますとどんちほーmstdn.jp → 玉子丼 (閉鎖済み) → Fedibird → 再び玉子丼 と点々とした後、2022 年 11 月に おひとり様インスタンス を建てて今に至ります。

たぶんこれが Fediverse での私の初めての投稿です。

クライアントの自作に至った経緯

私がマストドンを始めた 2017 年当時はマストドンクライアントと言えば、私が知る範囲では次のようなものしかありませんでした。

ニコフレや Pawoo のクライアントは他のインスタンスでも使えるようになっていましたが、当然の流れとして Tootodon と Tootle を使っていました。

流速の速い LTL チャット主体の ますとどんちほー を iPad から見ていた私には次のような不満点がありました。

マストドンは初期から API のドキュメントが整っていたので、それならば自作してしまおうと思い至りました。(この時 iOS アプリはおろか、WebAPI を呼び出すようなプログラムすら実装したことが無かったのに、よくやったよ)

自作クライアントの設計思想

クライアントを自作するにあたり「これだけは絶対にやろう」という仕様をいくつか決めました。

iPad で動かしたときに横幅が広がりすぎないようにする

今では UIKitreadableContentGuide を使えば容易に実装できますが、当時はこの API が無かったので AutoLayout で頑張って実装した記憶があります。現在は readableContentGuide を使用するコードに書き換えています。

タイムラインを見ながら投稿を入力できるようにする

実装してみると結構面倒でした。世の中のマストドンクライアントアプリの大多数がタイムラインと入力画面を別画面にしている理由が分かった気がします。

通信量を極力抑えたい

2017 年当時の自宅回線は ADSL の 2Mbps だったため、通信量を抑えるのは必須でした。この回線速度のために、マストドンをブラウザで見ると読み込み時間が大変長かったように記憶しています。

ゼロ幅スペースでつなげた絵文字を隙間なく表示する

ブラウザだと隙間なく見れるのに、同じように表示できるクライアントアプリが無かったことは不満でした。

最近は misskey で横長のカスタム絵文字が表示できるため、ゼロ幅スペースで絵文字をつなげて表示する人は少ないかもしれませんが、マストドンでは必須機能だと思っています。

自作するメリット

2018 年頃にクライアントアプリを作り、それ以降改良を続けながら使い続ける中で感じたメリットを上げます。

究極のフルカスタマイズ

これは言うまでもありません。

タイムラインや画像を読み込むタイミング、文章とボタンの隙間、CW の投稿を開くときのアニメーションの有無など、全てを自分で決められます。iOS 自体が対応していない動作もあるので、完全に自分の好みに出来るわけではありませんが、カスタマイズの限界まで攻めることができます。

(自分がやめない限り) アプリの開発終了は無い

他人が作ったアプリだと開発が終了することがあります。終了してしまうと App Store のシステムでは新しくインストールできないばかりか、バックアップから復元することもできません。(Tootodon をもう一回使いたいな~)

その点、自作ならば自分が続けたいと思う限り終了することはありません。

古い端末や OS に対応できる

古いバージョンの OS のサポートを切ってしまうアプリもありますが、自作ならば対応バージョンは完全に自分でコントロールできます。

自作することによるデメリット

もちろんデメリットもあります

スマホの OS 乗り換えがしづらい

最近の iPhone は高価格な機種ばかりなので、比較的安価な Pixel に乗り換えたいと思った時期があるのですが、自作クライアントは完全に iOS 用に作ってしまったので、またゼロから Android 用を作るのは気が引けます。そんなこともあり、OS の乗り換えのハードルはかなり高くなってしまいます。

mstdn.jp ではストリーム受信できない

これは自作クライアントのデメリットではないかもしれません。

mstdn.jp は きぼうソフトが管理していた頃に Tootodon、Tootle などの当時よく使われていたクライアント以外はストリーム API を使えないようにしてしまいました。それが現在でも続いているようです。もう jp に戻る気は無いので問題ないですけど。

最後に

マストドン API はドキュメントが揃っています。また、マストドン自体は後方互換性を極力維持するように開発が進められているように感じます。そのため、クライアントアプリの開発の敷居はとても低いです。

なので、この記事を読まれている皆さんも気軽にマストドンクライアントを自作されてみてはいかがでしょうか? その先には、より楽しいマストドンライフが待っているに違いありません。