本連載では分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っています。
今回は2023年のMisskeyの開発についての振り返りとまとめを行いたいと思います。
Note:全体的な視点での2023年のMisskeyをまとめた記事は、Misskey Advent Calendar 2023のほうに
2023年のMisskey開発
今年も残りわずかとなりました。Misskeyは2014年ごろから開発を始めたので、来年で10年目突入ということになります。ここまで開発を続けられているのは皆様のサポートのおかげです。本当にありがとうございます。
ロードマップに対しての進捗
Misskeyでは簡単なロードマップ
- Dependency Injectionを使用したバックエンド書き直し
(=Nest. js導入) - OAuth2.
0サポート (実験的) - カバレッジ計測
- バックエンドのTypeScriptの型エラーを0にする
さらに以下の実装も現在進行中です。
- モデレーション機能の強化
- スケーラビリティの強化
今後予定されているものとしては、以下のような事柄があります。
- ドキュメント拡充
- ユニットテスト、e2eテストの拡充
- ネイティブクライアント開発
振り返り:Keep編
このロードマップを念頭に置いた上で、振り返りをしてみます。
まずは、続けるべきことを見ていきます。
リファクタリング
リファクタリングとして大きいものは、以前取り上げたNest.
Nest.use
関数として外部に再利用可能な形で抽出できるようにもなりました。
リファクタリングは来年もKeepしていきます。
パフォーマンス改善
今までは目的を達成することを第一に考えて開発を行なっていました。しかし、Misskeyを運用するサーバーの規模が拡大するにつれてパフォーマンスへの関心が高まり、効率的な実装を意識するようになりました。
パフォーマンスの改善については、本連載でも2回取り上げています。
中でもインパクトの大きいものはやはりFTT
パフォーマンスについても、来年もKeepです。
安定性向上
安定性を高めるため、リリース時はリリース・
さらに、大きなリリースの前は積極的にベータ版を提供して、実際に運営されているサーバーに協力していただいてテストを行うようにもしました。そうするとで、ローカル環境では発見できなかったバグや改善の余地が見つかったり、様々な意見を直接ユーザーからいただけるので、リリースの安定性の向上に繋がっています。
また以前少し触れましたが、バージョニングをカレンダーバージョニングに変更しました。それに合わせてリリースサイクルも見直し、機能の追加や改修は短くとも1ヶ月に1回の間隔でしか行わないようにして信頼性の向上を図りました。
安定性向上の取り組みもKeepしていきます。
開発者体験の向上
そのほか、以下のような開発者体験の向上もKeepしていきたいです。
- Storybookを使用したコンポーネントのカタログ化
- GitHub Actionsを活用した各種チェック
振り返り:Problem & Try編
次に、課題や挑戦していきたいことを見ていきます。
ドキュメントおよびテストの不足
ロードマップにあるように、ドキュメント・
機能実装と同時にドキュメント・
開発の負担が高い
Misskeyの規模に見合わず、現在アクティブなMisskeyの開発者は私含め数人しかいません
今年はMisskey HubやAiScriptといったサブプロジェクトのメンテナンスを分散できつつありました。来年も自分から切り離せるところは切り離し、コミュニティ主導で開発を進められるようにTryしたいです。
スケジュール感を把握しにくい
現在Misskeyの開発では
スケジュールが決まっていれば、優先的に取り組むべき課題やタスクがわかり、コントリビュータにとって開発しやすくなると考えています。そこで来年はロードマップをより細かく決めたり、GitHubのマイルストーン・
フロントエンドの型が不完全
バックエンドの型エラーがゼロになったことはロードマップのとおりですが、フロントエンドのほうはVueがTypeScriptとの相性が悪かったことなどもあり
来年はフロントエンドの型についても問題をできるだけ解消し、開発者体験を向上させていくことにTryしていきます。
Vueのコンポーネントの書き方が統一されていない
歴史的な理由で、スタイルの設定がScoped CSSなものとCSS Moduleなものとが混在していたり、以前紹介したref sugarを使っていたりいなかったりと、コンポーネントの実装方法が統一されていない箇所があります。
統一されていないと、新しいコントリビュータがどの方法でコンポーネントを書けば良いのか混乱しますし、GitHub CopilotなどAIを使ったコード生成の品質にも悪影響があります。
そこで来年はコンポーネントの書き方を統一し、それらの問題を解決することをTryしていきます。
Vue Vaporへの移行
Vueでは、最近のフレームワークのトレンドである
このまま順調にVaporモードの開発が進めば、おそらく2024年内に利用可能になると予想していますので、その際はMisskeyをVaporモードを使用するように改修し、Misskey Webの軽量化に繋げたいと考えています。
Vue Vaporの動向については、何か動きがあれば本連載でも取り上げる予定です。
KPTまとめ
ここで紹介した以外にも細かなKPTはありますが、まとめると以下のようになります。
- 2023年
(今年) - ユーザーが急増したということもあり、大きな新機能の実装というよりはリファクタリングやパフォーマンスの改善といった今後Misskeyをより発展させていくために必要な下準備・
ソフトウェアとしての安定性向上に比重を置いて開発をしてきました。 - 2024年
(来年) - 今年のリファクタリングの成果を活かし、今後はドキュメント・
テストの拡充や、開発者体験の向上に取り組みます。そして、新しい機能の追加も並行して行っていきたいと思います。
数字で見る「Misskey 2023」
最後に、misskey-dev/
コミット数 | 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年から可視化してみたものが以下のグラフになります。
また、Gourceを使用して現在のリポジトリの2017年からのコミットログを可視化してみました。
まとめ
2023年はユーザー数が急激に増えたことで、開発の負担や責任がそれに比例して大きくなりました。それにどうやって対処していくかは今後の課題ですが、やはり誰かに使ってもらってフィードバックを得るということが原動力になっているので、Misskeyが多くの方々に認知され利用していただけるというのはありがたい限りです。
また、ユーザーだけでなくサーバーも増えたことで、ベータ版をテストしていただける機会も増えました。その結果、リリースの安定性の向上に繋がっています。改めてベータ版をテストしていただいたサーバー運営者の方々、その利用者の方々に感謝申し上げます。
2024年もMisskeyの開発と本連載を継続していきますのでよろしくお願いします!