概要
2023-02-13 Monの午前中 (10:30頃?) に「Misskey著者syuiloによるgihyo.jpでの連載予告 | GNU social JP」で予告のあった、Misskey著者しゅいろによるgihyo.jpでのMisskey連載の1回目が「第1回 分散型SNS「Misskey」、それを支える技術スタック | gihyo.jp」で公開されたので紹介します。
連載は「Misskey-Webテクノロジー最前線 記事一覧 | gihyo.jp」という名前のようです。
以下の投稿にある通り前半は概要で、後半は技術に関する内容とのことです。
後半は技術的にゃ話ですが、前半は読みやすいと思うのでMisskeyとmisskey.ioの違いをよく分かっていにゃいにもおすすめです ginyo.jpにMisskeyと分散型SNSの解説記事を寄稿しました 今後もWeb技術についての連載を行います!!分散型SNS「Misskey」、それを支える技術スタック | gihyo.jp本連載は分散型マイクロブログ用ソフトウェアMisskeyの開発に関する紹介と、関連するWeb技術について解説を行っていきます。第1回はMisskey、ひいては分散型SNSの簡単な紹介とその内部実装の概略を説明します。
https://t.co/dW5wrzxxCFにMisskeyと分散型SNSの解説記事を寄稿しましたhttps://t.co/qp2pvBOG7s
— しゅいろ (@syuilo) February 13, 2023
今後もWeb技術についての連載を行います!!
特に気になったところを中心に取り上げます。
全般
Misskeyはオープンソースの分散型マイクロブログサービスを実現するソフトウェアです。2014年から開発を始めていいて、Twitter風のサービス用のソフトですが、リアクション機能、柔軟にカスタマイズ可能なUI、分散型、AiScriptが特徴のようです。詳細は以下の公式サイトにあるそうです。
- 公式サイト: Misskey Hub
- リポジトリ―: GitHub – misskey-dev/misskey: ? An interplanetary microblogging platform ?
旧Misskeyの第一コミットは2015-01-04なのですが、やはり2014年が開発開始らしいです。
元々Misskeyは分散型ではなく、反Twitter/反中央集権といった考えはなく、歴史としてはMastodonよりも古いものの、ActivityPubに対応したのはMastodonより後のため、分散型としての歴史はMastodonのほうが古いとのことです。
Misskeyでは、Misskeyを使ったWebサービスのことを「インスタンス」と呼んでいます。Misskeyの外で一般的には、サーバーやWebサイトと呼ばれているものです。オブジェクト指向型プログラミング言語のインスタンス生成のイメージでこのネーミングらしいです。
技術
Misskeyは2014年生まれということで、当初採用していた技術は今となっては古くなりました。ただ、常に新しい技術を採用しており、何度も一から書き直しているので、10年前のコードはほぼないそうです。
2014年当時は、高校生で技術力がなかったのもあり、PHP、オリジナルDB、フロントエンドはjQueryという構成だったそうです。
その後、DBがMySQL→MongoDB、フロントがRiot.jsなど変遷して、今はTypeScript/PostgreSQL/Fastify/Vue.js/Node.jsの構成だそうです。
また、開発環境もメモ帳→サクラエディタ→Brackets→Atom→VSCodeの変遷とのことです。
旧Misskeyの段階で、node.jsを使っていたので、旧MisskeyもPHPの本当の初期のコードではないようです。
貪欲に最新のWeb技術を取り入れる方針で、対応Webブラウザーが少なくても導入しているとのことで、最新技術のメリットを重視しているそうです。一種のWeb技術実験場のようにもなっているようです。
基本構成の他に今後連載で取り上げるような主要な技術は以下とのことです。
- TypeScript
- Node.js
- PostgreSQL: PostgreSQLは配列やJSONなどのサポートがありMySQLより優先。その他、スキーマ則ったデータ管理のためNoSQLから移行。
- Redis: Key/Value型のインメモリーDB。ジョブキューのタスク管理やプロセス感の通信ハブなどで使用。
- Bull: ジョブキューと呼ばれるソフトで、Node.js+Redis上で動作。RubyのSidekiq相当。アクティビティの配送など連合サーバー別の細かいタスクの処理。
- Nest.js: バックエンドのフレームワークでDIの設計手法用。2022年に導入したばかり。
- Fastify: バックエンドのWebフレームワーク。HTTPリクエストの処理など。expressが有名。express→koa→fastifyと繊維。
- Vue.js: 全体的なフレームワークの完成度はReactのほうが優れる感触があるも、データのリアクティビティの実現方法はVueが優勢の感触。
- Vite: フロントエンドのビルドツール。webpackから乗換。
私がよく把握していない、特に気になった部分を中心に触れました。
今後
Misskeyの今後として、まだまだ試したい技術があるそうです。例えば、OAuth2の導入をあげていました。
その他に、ドキュメント整備、ソフトウェアの安定性向上、メンテナンス性向上を課題と感じており、取り組んでいるそうです。
また、多数のユーザーに利用してもらうため、プロジェクトだけでなく、ビジネス化しやすいように、Misskey v13でのロール機能なども取り組んでいるそうです。
ここで言及した内容は「misskey/ROADMAP.md at develop · misskey-dev/misskey · GitHub」のロードマップにもあるようです。
その他、Misskeyはフリーソフトで、収益を寄付のみに頼っているようで、「プロジェクトへの寄付 | Misskey Hub」で寄付を呼び掛けていました。
結論
gihyo.jpでのMisskey連載の第1回でした。Webの最新技術を貪欲に取り入れているそうで、いろいろ連載する話題があるようです。
技術選定の理由が少し触れられていて参考になりました。個人的には、Misskeyが当初はPHPだったことが一番の驚きでした。
その他、MisskeyのNyaize機能のにゃ言葉を使っていなくて安心しました。
しゅいろ自身については、開発開始時に高校生だったことくらいしかわからなかったのが、やや物足りませんでした。
当分連載がなされそうなので、サイトでもウォッチしたいと思います。私はWebの最新技術への興味関心が薄いので、新鮮で勉強になりそうです。
詳細プロフィール。SNS: Twitter/GS=gnusocialjp@gnusocial.jp/WP=gnusocialjp@web.gnusocial.jp。2022-07-17からgnusocial.jpとweb.gnusocial.jpのサイトを運営しています。WordPressで分散SNSに参加しています。このアカウントの投稿に返信すると、サイトのコメント欄にも反映されます。
コメント
[…] 「gihyo.jpのMisskey連載第1回: 分散型SNS「Misskey」、それを支える技術スタック | GNU social JP」でも紹介した通り、Misskeyを利用したサイトの呼称は「インスタンス」 (例: Misskeyインスタンス、Mi […]
This Article was mentioned on web.gnusocial.jp