🛠️

Misskey体験の改善やカスタム:手段のヒント

2023/12/10に公開

はじめに

著者はどんな人

普段は、

  • 趣味や職業としてエンジニアをしたり
  • MisskeyのIssueやPRを円滑に進めるようにお手伝いしたり
  • なですきーを運営したり
  • 334 RankerのようなBotを作ったり
    • 汎用的に利用できるように作っていてGitHubでソースコードを公開しています
    • https://github.com/tai-cha/yamag
    • この成果(やFork)を利用したものとして@340observer@misskey.io, @sangatsu_tsuitachi@misskey.io, @akeome@misskey.backspace.fmなどがあります
  • プラグインやPlayを作ったり
  • 息をするようになですきーやBackspaceKeyなどにノートを投稿する

など多岐にわたる活動をしています。

GitHubはこちら:
https://github.com/tai-cha
なですきーはこちら:
https://mi.taichan.site/@taichan

この記事の目的

この記事はMisskey自体とコーディングをある程度理解している人を想定していますが、用語や関連情報を調べながら読むことで参考にできると思います。

この記事を通して、Misskey体験を向上させたりカスタムしたい際にどのような手段があるかを理解する手助けになれば幸いです。

やりたいことを考える

この記事は、主に手段にフォーカスするものですが、とはいえ自分が何を実現したいのかを考えることは非常に大事なことです。

アイデアはしばしば「こういう機能があれば便利だろうか?」、「なぜこの機能がないのだろう?」という思い付きで生まれます。しかし、十分に考えられていない機能を実現しようとすると、時には実現するのにかかった労力に見合わないほどの便利さではなかったり、期待した問題の解決に至らないなど、残念な結果に終わることもあります。

そのため、機能を作るときに

  • なぜほしいのか?
  • 何に困っているのか?
  • その方法で悩みは解決されるのか?
  • 逆に実現することでデメリットはないだろうか?

というようなことをある程度考えることで、理想の状態と実際に取り組むことへの乖離が減らせると思います。

やりたいことを実現する

さて、実際にやりたいことを実現するフェーズですがMisskeyでやりたいことを実現する方法はいくつも存在します

これら以外の方法もあるかもしれませんが、一旦思いつくものを列挙してみましょう。

Misskeyで何かを実現する手段

  • カスタムCSSの利用
  • プラグインの活用
  • ウィジェットの活用
  • Misskey Playを作成する
  • Botを作成する
  • 外部ツールを利用する
    • (ex. Misskey ToolsやMissTwiなど)
  • 非純正クライアントを利用したり開発する
    • (ex. Miria, Milkteaなど)
  • Misskey本体 misskey-dev/misskeyへのコントリビューション
  • MisskeyのForkを利用したり作成する
    • (ex. Ebisskey, firefish、etc...)
    • MisskeyのForkは上記以外にもたくさんありますし、自分で作成することも可能です

さまざまな手段が存在する中で、どの方法が構想の実現に最適かを考えるのは難しいですよね。次のセクションでは、これらについて一つずつ紹介し、それぞれの手段への理解を深めてみましょう。

詳細な手段の解説

カスタムCSSの利用

Misskey内での見た目のカスタマイズや特定の部分の非表示化を行うには、カスタムCSSが便利です。

Misskeyでは設定>(クライアント設定)全般内の下部にカスタムCSSという項目があるのでここから追加可能です

メリット

  • 手軽にMisskey内での見た目を変更することができる
  • どこのMisskeyサーバーでも適用できるものも多い

デメリット

  • 複数個のカスタムCSSを導入しようと思うと変更が競合してしまう可能性がある
  • 貼り付けをミスすると見た目が壊れることもある
  • サーバー全員などに適用したい場合は配布が(現状)むずかしい
  • バージョンアップの際などにクラス名が構造が変わり使えなくなることがある

プラグインの活用

プラグインは、タイムラインの表示や投稿の挙動などをカスタマイズする際に便利です。プラグイン作成の方法に関しては多くの参考情報がすでにあるため省略しますが、ここではその具体的な利用例をいくつか紹介します。

  • タイムラインに流れてくるノートにCWを付与する
  • 投稿者の見た目のアイコンを変更する
  • 投稿時にCWを付与するようにする
  • ボタンを押すと投稿内の文字列を置き換える

上記はあくまで一例ですが、様々なことができます。またMisskey自体のフックの改善や追加によってプラグインでカスタム可能な部分はもう少し増やせたらなと個人的には考えています。

メリット

  • Misskeyの機能に乗っかるものなので比較的容易
  • ソフト自体に変更を加えずにある程度自由に挙動を変更することができる
  • ソフトに変更を加えないので色々なサーバーで使ってもらいやすい
  • すぐに機能を実現できる

デメリット

  • MisskeyのバージョンやAiScriptのバージョンが変わると時々互換性問題が起きる
  • 配布方法に難がある(一応Webでの配布はできるようになったものの未だにコピペが主流)
  • Misskeyの提供しているプラグインAPIAiScriptで書けるものに実装可能な範囲が限定される

追加情報

misskey-hub-next(次期Misskey Hub)では現在プラグインストア・テーマストアの計画が進行中です

参考情報の紹介

https://misskey-hub.net/docs/advanced/create-plugin.html
https://misskey-hub-next.vercel.app/ja/docs/for-developers/plugin/plugin-api-reference/
https://qiita.com/taichan_/items/0a092bb59b42aeb1f47d

ウィジェットの活用

AiScriptを活用して、ウィジェットとして機能する簡易ツールを作成できます。プラグインとは異なり、ユーザーは専用のUIを通じて利用することが可能です。

ウィジェット
ウィジェットの例(リアクション連投用ツールと334を投稿するだけのボタン)

メリット

  • Misskeyの機能に乗っかるものなので比較的容易
  • ソフトに変更を加えないので色々なサーバーで使ってもらいやすい
  • すぐに機能を実現できる

デメリット

  • MisskeyのバージョンやAiScriptのバージョンが変わると時々互換性問題が起きる
  • 配布方法に難がある
  • Misskeyの提供しているAPIやAiScriptで書けるものに実装可能な範囲が限定される

Misskey Playを作成する

Misskey Playは遊び用のコンテンツだけでなく、UIを持つ実用ツールとしての利用も可能です。

Playで実現可能なことはウィジェットと似ていますが、サーバーに保存され、URLが発行されるため、他のユーザーに手軽に共有できます。一方でウィジェットと違いUIに常に表示するようにはできないので、それらの差を踏まえてどちらを採用するかを選ぶとよいでしょう。

メリット

  • Misskeyの機能に乗っかるものなので比較的容易
  • ソフトに変更を加えないので色々なサーバーで使ってもらいやすい
  • すぐに機能を実現できる

デメリット

  • Playの画面を毎回開く必要がある(し、先にPlayを使いたいサーバーに登録しておく必要もある)
  • MisskeyのバージョンやAiScriptのバージョンが変わると時々互換性問題が起きる
  • Misskeyの提供しているAPIやAiScriptで書けるものに実装可能な範囲が限定される

参考情報の紹介

https://qiita.com/saki-lere/items/e7f0eb6b7dc0af659a67
https://qiita.com/saki-lere/items/851c4500d56659d15c9c
https://zenn.dev/1step621/articles/a8eb3324ffad6a

Botを作成する

Botは、投稿に反応して特定のアクションを行う、定期的な集計や自動投稿などの用途に適しています。これらのタスクには、Botの作成が効果的です。

Botに関してはほかの手段と比較するものでもないと思うので、メリットやデメリットに関しては省略します。

Botの例

APIの利用に関する参考情報

https://misskey-hub.net/docs/api
https://misskey-hub.net/docs/api/endpoints.html
https://misskey-hub.net/docs/api/streaming/

外部ツールを利用する

Misskeyでの実現が困難、またはMisskeyに実装するのが適切でないものは、外部ツールの利用が一つの選択肢です。これらのツールは、さまざまな機能やサービスを提供し、Misskeyの体験を拡張するのに役立ちます。

(既存ツールの例: Misskey ToolsMissTwirenotes.ioなど)

自分で作る場合は一から開発する必要があるためほかの手段よりハードルは高いかもしれません。

非純正クライアントを利用したり開発する

標準と異なるユーザー体験を実現したい場合、またはWeb以外のプラットフォームでMisskeyを利用したい場合は、非純正クライアントの利用や開発が有効です。

(Misskeyのクライアントの一例: Miria, Milktea, など)

Misskeyに対応したクライアントも増えていますが、Misskeyは更新が早く変更も多いソフトウェアなので継続的な開発はやや難しく、利用する場合も更新がある程度ないソフトウェアを使うのは難しいかもしれません。

https://misskey-hub.net/docs/apps.html
https://wiki.misskey.io/ja/software/clients

Misskey開発へのコントリビューション

Misskeyに新機能を追加したい、または既存の機能を改善したい場合、misskey-dev/misskeyへのコントリビューションもご検討ください。

Misskeyのコードをある程度読み解けないとハードルは高いかもしれませんが、この方法はMisskey全体に変更を適用できるのとMisskeyのプロジェクトに還元できる、また問題の本質的解決はしやすいという利点があります。

実際に行う場合はIssueを立ててある程度議論をしてから実装することをおすすめします。

MisskeyのForkを利用したり作成する

MisskeyのForkは多く存在し、自分自身で新たに作成することも可能です。

(既存のForkの例: io, Ebisskey, 隠れ家, firefish, Sharky etc...)

まずは主要なForkを調べて、気に入った特徴や機能を持つものを見つけたら、そのForkを利用してみるのもよいと思います。

あまりメンテナンスされていないForkに関してはバグ修正やセキュリティ問題なども更新されない恐れがあるので注意が必要です。

もし既存のForkに望んでいる機能がなければ、自分自身で新たなForkを作成することも一つの選択肢です。その際、misskey-dev/misskeyをベースにするのも、ForkされたものをベースにForkを作成するのもありだと思います。

Forkを作る?misskey-devにコントリビューションする?

MisskeyのForkを作るか、misskey自体に貢献するかの選択は難しいと思います。
ここでは一例として私の考えを書いておきます(が、どちらを選択するのも自由です)。

Forkに機能を追加する方が好ましそうなもの

  • ニッチ(すぎるかもしれない)機能
  • misskey-devで十分な議論がされたうえで入れられない決定や方針の違う決定がされたもの
  • パフォーマンス面などでmisskey全体には入れるのがなかなか難しそうだが大きくメリットがないもの
  • 自分でもいい機能かわからないような実験的な機能
  • etc...

misskey自体に機能を追加する方がよいと思われるもの

  • バグ修正
  • 連合に関するもの
  • 一般的な大規模サーバーでも小規模サーバーでも恩恵を受けやすそうな機能
  • 細々していても体験が改善されていて機能が増えることにデメリットがないもの、あるいはデメリットをメリットが上回る場面が多いと思われるもの

なお、一般的にプロジェクトの方針に賛同できないことが多いなと感じたりメンテナーを信頼できないのであれば自分で追従するか洗濯したり改変することが可能なForkを使うのが安牌かもしれません。

さいごに

このように、Misskeyをより便利に使いたいなと思ったときに取れる行動は、Misskey自体の拡張性もあって様々な手段を選択することが可能です。より簡単に実現する、よりきめ細やかに体験を提供するなど目的に合わせてこれらの手段を選択できれば、よりMisskey体験がよくなるのではないでしょうか。

プラグインの配布に関しては新Misskey Hubでプラグインストアを提供することを目標として動いています。

簡単なものから少しハードルの高いものまで様々な手段を紹介しましたが、この記事が少しでも何らかの実現につながれば幸いです。

それでは、よいMisskeyライフを!


※最近多忙であったり健康上の理由でわたし自身が見れないことも多いのですが、misskey-dev/misskeyへのコントリビューションもぜひぜひお待ちしています
https://github.com/misskey-dev/misskey


また、なですきーも新規ユーザーを随時受け入れています
https://nadesskey.com

Discussion