Misskey & Webテクノロジー最前線

2023年Misskey開発まとめ

本連載では分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。

今回は2023年のMisskeyの開発についての振り返りとまとめを行いたいと思います。

Note全体的な視点での2023年のMisskeyをまとめた記事は、Misskey Advent Calendar 2023のほうにMisskey 2023 recapと題して投稿しています。興味のある方はそちらをご覧ください(一部内容が重複しますがご容赦ください⁠⁠。

2023年のMisskey開発

今年も残りわずかとなりました。Misskeyは2014年ごろから開発を始めたので、来年で10年目突入ということになります。ここまで開発を続けられているのは皆様のサポートのおかげです。本当にありがとうございます。

ロードマップに対しての進捗

Misskeyでは簡単なロードマップ(目標)策定していますが、その中でいうと、今年は以下の事柄を完了させることができました。

  • Dependency Injectionを使用したバックエンド書き直し(=Nest.js導入)
  • OAuth2.0サポート(実験的)
  • カバレッジ計測
  • バックエンドのTypeScriptの型エラーを0にする

さらに以下の実装も現在進行中です。

  • モデレーション機能の強化
  • スケーラビリティの強化

今後予定されているものとしては、以下のような事柄があります。

  • ドキュメント拡充
  • ユニットテスト、e2eテストの拡充
  • ネイティブクライアント開発

振り返り⁠Keep編

このロードマップを念頭に置いた上で、振り返りをしてみます。

まずは、続けるべきことを見ていきます。

リファクタリング

リファクタリングとして大きいものは、以前取り上げたNest.jsへの移行や、VueのComposition APIへの移行です。

Nest.jsのDIを利用することでバックエンドをテストしやすい実装にできました。また、フロントエンドではVueのComposition APIを利用することでコンポーネントをより柔軟に記述できるようになり、ロジックをuse関数として外部に再利用可能な形で抽出できるようにもなりました。

リファクタリングは来年もKeepしていきます。

パフォーマンス改善

今までは目的を達成することを第一に考えて開発を行なっていました。しかし、Misskeyを運用するサーバーの規模が拡大するにつれてパフォーマンスへの関心が高まり、効率的な実装を意識するようになりました。

パフォーマンスの改善については、本連載でも2回取り上げています。

中でもインパクトの大きいものはやはりFTT(Fanout Timeline Technology)[1]で、データベースに蓄積された投稿数が多いケースで効果が顕著に現れています。

パフォーマンスについても、来年もKeepです。

安定性向上

安定性を高めるため、リリース時はリリース・プルリクエストを作成し、必ず自分以外の1人以上のメンバーのapproveを必要にしました。リリース前にこのような手順を踏むことで「リリースする前にやっておいたほうが良いこと」などの見落としを防ぐことができます。

さらに、大きなリリースの前は積極的にベータ版を提供して、実際に運営されているサーバーに協力していただいてテストを行うようにもしました。そうするとで、ローカル環境では発見できなかったバグや改善の余地が見つかったり、様々な意見を直接ユーザーからいただけるので、リリースの安定性の向上に繋がっています。

また以前少し触れましたが、バージョニングをカレンダーバージョニングに変更しました。それに合わせてリリースサイクルも見直し、機能の追加や改修は短くとも1ヶ月に1回の間隔でしか行わないようにして信頼性の向上を図りました。

安定性向上の取り組みもKeepしていきます。

開発者体験の向上

そのほか、以下のような開発者体験の向上もKeepしていきたいです。

  • Storybookを使用したコンポーネントのカタログ化
  • GitHub Actionsを活用した各種チェック

振り返り⁠Problem & Try編

次に、課題や挑戦していきたいことを見ていきます。

ドキュメントおよびテストの不足

ロードマップにあるように、ドキュメント・テストの整備は後回しになりがちで現状不足しています。

機能実装と同時にドキュメント・テストも用意することを心がけることや、財政面でも余裕が出てきたためドキュメント・テストの整備に対してより積極的に報奨金を設定することなどをTryしていきます。

開発の負担が高い

Misskeyの規模に見合わず、現在アクティブなMisskeyの開発者は私含め数人しかいません(フルタイムでいうと私だけです⁠⁠。そのため自分の手が回らないことも多く、負担を分散させることは喫緊の課題です。

今年はMisskey HubやAiScriptといったサブプロジェクトのメンテナンスを分散できつつありました。来年も自分から切り離せるところは切り離し、コミュニティ主導で開発を進められるようにTryしたいです。

スケジュール感を把握しにくい

現在Misskeyの開発では「High priority」というIssueのラベルと冒頭で紹介した大雑把なロードマップがあるのみであり、細かなスケジュールについては決められていません。

スケジュールが決まっていれば、優先的に取り組むべき課題やタスクがわかり、コントリビュータにとって開発しやすくなると考えています。そこで来年はロードマップをより細かく決めたり、GitHubのマイルストーン・プロジェクトといった機能の活用をTryしたいです。

フロントエンドの型が不完全

バックエンドの型エラーがゼロになったことはロードマップのとおりですが、フロントエンドのほうはVueがTypeScriptとの相性が悪かったことなどもあり(Vue 3では改善⁠⁠、あまり型が意識された実装にはなっていません。そのため、何か変更によって予期せず型の不一致が発生したとしても、他のエラーに埋もれがちで問題の発見が難しいケースがあります。

来年はフロントエンドの型についても問題をできるだけ解消し、開発者体験を向上させていくことにTryしていきます。

Vueのコンポーネントの書き方が統一されていない

歴史的な理由で、スタイルの設定がScoped CSSなものとCSS Moduleなものとが混在していたり、以前紹介したref sugarを使っていたりいなかったりと、コンポーネントの実装方法が統一されていない箇所があります。

統一されていないと、新しいコントリビュータがどの方法でコンポーネントを書けば良いのか混乱しますし、GitHub CopilotなどAIを使ったコード生成の品質にも悪影響があります。

そこで来年はコンポーネントの書き方を統一し、それらの問題を解決することをTryしていきます。

Vue Vaporへの移行

Vueでは、最近のフレームワークのトレンドである「脱仮想DOM」を行うことで、より優れたランタイム時パフォーマンスを実現する「Vaporモード」が計画されています。実際に、実際今年11月ごろにVaporモードの開発リポジトリが公開されています。

このまま順調にVaporモードの開発が進めば、おそらく2024年内に利用可能になると予想していますので、その際はMisskeyをVaporモードを使用するように改修し、Misskey Webの軽量化に繋げたいと考えています。

Vue Vaporの動向については、何か動きがあれば本連載でも取り上げる予定です。

KPTまとめ

ここで紹介した以外にも細かなKPTはありますが、まとめると以下のようになります。

2023年(今年)
ユーザーが急増したということもあり、大きな新機能の実装というよりはリファクタリングやパフォーマンスの改善といった今後Misskeyをより発展させていくために必要な下準備・ソフトウェアとしての安定性向上に比重を置いて開発をしてきました。
2024年(来年)
今年のリファクタリングの成果を活かし、今後はドキュメント・テストの拡充や、開発者体験の向上に取り組みます。そして、新しい機能の追加も並行して行っていきたいと思います。

数字で見る「Misskey 2023」

最後に、misskey-dev/misskeyリポジトリにおいての開発や認知度を把握できそうな数字を、2023年1月1日時点の情報と本記事執筆時点(2023年12月ごろ)で比較して紹介します。

コミット数 21,351 ➡ 24,705 (+3,354)
編集されたファイル 2,287
ソースコード 159,976行の追加
83,166行の削除
Issue 1,700がオープン
1,100がクローズ
うち今年作成されたものは874
リリース 54回
コントリビュータ 21 ➡ 67 (+46)
Star数 3,695 ➡ 8,746 (+5,051)

このStar数の遷移ですが、2017年から可視化してみたものが以下のグラフになります。

misskey-dev/misskeyリポジトリのStargazers

また、Gourceを使用して現在のリポジトリの2017年からのコミットログを可視化してみました。

まとめ

2023年はユーザー数が急激に増えたことで、開発の負担や責任がそれに比例して大きくなりました。それにどうやって対処していくかは今後の課題ですが、やはり誰かに使ってもらってフィードバックを得るということが原動力になっているので、Misskeyが多くの方々に認知され利用していただけるというのはありがたい限りです。

また、ユーザーだけでなくサーバーも増えたことで、ベータ版をテストしていただける機会も増えました。その結果、リリースの安定性の向上に繋がっています。改めてベータ版をテストしていただいたサーバー運営者の方々、その利用者の方々に感謝申し上げます。

2024年もMisskeyの開発と本連載を継続していきますのでよろしくお願いします!

おすすめ記事

記事・ニュース一覧