jointrashposs/content/blog/2023-12-03-inside-misskey-hub-next.md
かっこかり 811461f235
New Crowdin updates (#98)
* New translations thread-mute.md (Chinese Simplified)

* New translations webhook.md (Chinese Simplified)

* New translations 1.troubleshooting.md (Chinese Simplified)

* New translations donate.md (Chinese Simplified)

* New translations misskey-hub.md (Chinese Simplified)

* New translations announcement.md (Chinese Simplified)

* New translations role.md (Chinese Simplified)

* New translations 1.index.md (Chinese Simplified)

* New translations bash.md (Chinese Simplified)

* New translations docker.md (Chinese Simplified)

* New translations kubernetes.md (Chinese Simplified)

* New translations manual.md (Chinese Simplified)

* New translations ubuntu-manual.md (Chinese Simplified)

* New translations cdn.md (Chinese Simplified)

* New translations disable-timelines.md (Chinese Simplified)

* New translations 1.index.md (Chinese Simplified)

* New translations permission.md (Chinese Simplified)

* New translations 1.index.md (Chinese Simplified)

* New translations 2.miauth.md (Chinese Simplified)

* New translations 5.releases.md (Chinese Simplified)

* New translations 1.index.md (Chinese Simplified)

* New translations 3.oauth.md (Chinese Simplified)

* New translations ja-jp.yml (Chinese Traditional)

* New translations 1.about-misskey.md (Chinese Traditional)

* New translations 2.get-started.md (Chinese Traditional)

* New translations 3.join-server.md (Chinese Traditional)

* New translations 4.things-to-know.md (Chinese Traditional)

* New translations ads.md (Chinese Traditional)

* New translations drive.md (Chinese Traditional)

* New translations mfm.md (Chinese Traditional)

* New translations mute-and-block.md (Chinese Traditional)

* New translations pages.md (Chinese Traditional)

* New translations poll.md (Chinese Traditional)

* New translations share-form.md (Chinese Traditional)

* New translations thread-mute.md (Chinese Traditional)

* New translations webhook.md (Chinese Traditional)

* New translations 1.troubleshooting.md (Chinese Traditional)

* New translations donate.md (Chinese Traditional)

* New translations misskey-hub.md (Chinese Traditional)

* New translations announcement.md (Chinese Traditional)

* New translations role.md (Chinese Traditional)

* New translations 1.index.md (Chinese Traditional)

* New translations bash.md (Chinese Traditional)

* New translations docker.md (Chinese Traditional)

* New translations kubernetes.md (Chinese Traditional)

* New translations manual.md (Chinese Traditional)

* New translations ubuntu-manual.md (Chinese Traditional)

* New translations cdn.md (Chinese Traditional)

* New translations disable-timelines.md (Chinese Traditional)

* New translations 1.index.md (Chinese Traditional)

* New translations permission.md (Chinese Traditional)

* New translations 1.index.md (Chinese Traditional)

* New translations 2.miauth.md (Chinese Traditional)

* New translations publish-on-your-website.md (Chinese Traditional)

* New translations 5.releases.md (Chinese Traditional)

* New translations 1.index.md (Chinese Traditional)

* New translations 3.oauth.md (Chinese Traditional)

* New translations 1.about-misskey.md (English)

* New translations 2.get-started.md (English)

* New translations 3.join-server.md (English)

* New translations 4.things-to-know.md (English)

* New translations ads.md (English)

* New translations drive.md (English)

* New translations mfm.md (English)

* New translations mute-and-block.md (English)

* New translations pages.md (English)

* New translations poll.md (English)

* New translations share-form.md (English)

* New translations thread-mute.md (English)

* New translations webhook.md (English)

* New translations 1.troubleshooting.md (English)

* New translations donate.md (English)

* New translations misskey-hub.md (English)

* New translations announcement.md (English)

* New translations role.md (English)

* New translations 1.index.md (English)

* New translations bash.md (English)

* New translations docker.md (English)

* New translations kubernetes.md (English)

* New translations manual.md (English)

* New translations ubuntu-manual.md (English)

* New translations cdn.md (English)

* New translations disable-timelines.md (English)

* New translations 1.index.md (English)

* New translations permission.md (English)

* New translations 1.index.md (English)

* New translations 2.miauth.md (English)

* New translations 5.releases.md (English)

* New translations 1.index.md (English)

* New translations 3.oauth.md (English)

* New translations 1.about-misskey.md (Indonesian)

* New translations 2.get-started.md (Indonesian)

* New translations 3.join-server.md (Indonesian)

* New translations 4.things-to-know.md (Indonesian)

* New translations ads.md (Indonesian)

* New translations drive.md (Indonesian)

* New translations mfm.md (Indonesian)

* New translations mute-and-block.md (Indonesian)

* New translations pages.md (Indonesian)

* New translations poll.md (Indonesian)

* New translations share-form.md (Indonesian)

* New translations thread-mute.md (Indonesian)

* New translations webhook.md (Indonesian)

* New translations 1.troubleshooting.md (Indonesian)

* New translations donate.md (Indonesian)

* New translations misskey-hub.md (Indonesian)

* New translations announcement.md (Indonesian)

* New translations role.md (Indonesian)

* New translations 1.index.md (Indonesian)

* New translations bash.md (Indonesian)

* New translations docker.md (Indonesian)

* New translations kubernetes.md (Indonesian)

* New translations manual.md (Indonesian)

* New translations ubuntu-manual.md (Indonesian)

* New translations cdn.md (Indonesian)

* New translations disable-timelines.md (Indonesian)

* New translations 1.index.md (Indonesian)

* New translations permission.md (Indonesian)

* New translations 1.index.md (Indonesian)

* New translations 2.miauth.md (Indonesian)

* New translations 5.releases.md (Indonesian)

* New translations 1.index.md (Indonesian)

* New translations 3.oauth.md (Indonesian)

* New translations 5.releases.md (Korean)

* New translations ja-jp.yml (English)

* New translations docker.md (English)

* New translations ja-jp.yml (Indonesian)

* New translations 5.releases.md (Korean)

* New translations ja-jp.yml (Indonesian)

* New translations 1.about-misskey.md (Indonesian)

* New translations 1.index.md (Indonesian)

* New translations ads.md (Indonesian)

* New translations antenna.md (Indonesian)

* New translations charts.md (Indonesian)

* New translations clip.md (Indonesian)

* New translations custom-emoji.md (Indonesian)

* New translations deck.md (Indonesian)

* New translations drive.md (Indonesian)

* New translations favorite.md (Indonesian)

* New translations follow.md (Indonesian)

* New translations hashtag.md (Indonesian)

* New translations mention.md (Indonesian)

* New translations mfm.md (Indonesian)

* New translations 1.index.md (Indonesian)

* New translations announcement.md (Indonesian)

* New translations bash.md (Indonesian)

* New translations ja-jp.yml (Indonesian)

* New translations mute-and-block.md (Indonesian)

* New translations pages.md (Indonesian)

* New translations apps.md (Indonesian)

* New translations donate.md (Indonesian)

* New translations bash.md (Indonesian)

* New translations docker.md (Indonesian)

* New translations manual.md (Indonesian)

* New translations 1.about-misskey.md (Chinese Traditional)

* New translations 1.about-misskey.md (Chinese Traditional)

* New translations create-plugin.md (French)

* New translations create-plugin.md (Italian)

* New translations create-plugin.md (Polish)

* New translations create-plugin.md (Chinese Simplified)

* New translations create-plugin.md (Chinese Traditional)

* New translations create-plugin.md (Indonesian)

* New translations aiscript.md (French)

* New translations aiscript.md (Italian)

* New translations aiscript.md (Korean)

* New translations aiscript.md (Polish)

* New translations aiscript.md (Chinese Simplified)

* New translations aiscript.md (Chinese Traditional)

* New translations aiscript.md (English)

* New translations aiscript.md (Indonesian)

* New translations ja-jp.yml (Chinese Traditional)

* New translations ja-jp.yml (Chinese Traditional)

* New translations troubleshooting.md (French)

* New translations libraries.md (French)

* New translations troubleshooting.md (Italian)

* New translations libraries.md (Italian)

* New translations troubleshooting.md (Korean)

* New translations libraries.md (Korean)

* New translations troubleshooting.md (Polish)

* New translations libraries.md (Polish)

* New translations troubleshooting.md (Chinese Simplified)

* New translations libraries.md (Chinese Simplified)

* New translations troubleshooting.md (Chinese Traditional)

* New translations libraries.md (Chinese Traditional)

* New translations troubleshooting.md (English)

* New translations libraries.md (English)

* New translations troubleshooting.md (Indonesian)

* New translations libraries.md (Indonesian)

* New translations ja-jp.yml (Chinese Traditional)

* New translations ja-jp.yml (French)

* New translations 2.miauth.md (French)

* New translations ja-jp.yml (Italian)

* New translations 2.miauth.md (Italian)

* New translations ja-jp.yml (Korean)

* New translations ja-jp.yml (Polish)

* New translations 2.miauth.md (Polish)

* New translations ja-jp.yml (Chinese Simplified)

* New translations 2.miauth.md (Chinese Simplified)

* New translations 2.miauth.md (Chinese Traditional)

* New translations ja-jp.yml (English)

* New translations 2.miauth.md (English)

* New translations ja-jp.yml (Indonesian)

* New translations 2.miauth.md (Indonesian)

* Revert "New translations 1.about-misskey.md (English)"

This reverts commit 2b9572c2cf.

* Revert "New translations 2.get-started.md (English)"

This reverts commit 2fa05a5aee.

* Revert "New translations 4.things-to-know.md (English)"

This reverts commit 698c5e980d.

* Revert "New translations ads.md (English)"

This reverts commit f0e1cd2965.

* Revert "New translations mfm.md (English)"

This reverts commit 51dcc0fc10.

* Revert "New translations webhook.md (English)"

This reverts commit cfbebc5783.

* Revert "New translations 1.index.md (English)"

This reverts commit 67d2bec45c.

* Revert "New translations disable-timelines.md (English)"

This reverts commit 19ead90df6.

* Revert "New translations webhook.md (French)"

This reverts commit 52e6a8429a.

* Revert "New translations webhook.md (Chinese Traditional)"

This reverts commit 395f0fbc4a.

* Revert "New translations webhook.md (Polish)"

This reverts commit ac4e2c534e.

* Revert "New translations webhook.md (Korean)"

This reverts commit 14853e1eab.

* Revert "New translations pages.md (Korean)"

This reverts commit f88e73d1ce.

* Revert "New translations bash.md (Korean)"

This reverts commit 60c9fae6a8.

* Revert "New translations kubernetes.md (Korean)"

This reverts commit 2239e8fd23.

* Revert "New translations ubuntu-manual.md (Korean)"

This reverts commit 3aab982625.

* Revert "New translations 1.about-misskey.md (Chinese Traditional)"

This reverts commit 5ac92102db.

* Revert "New translations 2.get-started.md (Chinese Traditional)"

This reverts commit d090253e34.

* Revert "New translations 3.join-server.md (Chinese Traditional)"

This reverts commit 634db4d49b.

* Revert "New translations 4.things-to-know.md (Chinese Traditional)"

This reverts commit 383ee08013.

* Revert "New translations ads.md (Chinese Traditional)"

This reverts commit 6ed3b6885f.

* Revert "New translations drive.md (Chinese Traditional)"

This reverts commit 988cacb17e.

* Revert "New translations mfm.md (Chinese Traditional)"

This reverts commit 6b53e36fc4.

* Revert "New translations mute-and-block.md (Chinese Traditional)"

This reverts commit 44b1b3c723.

* Revert "New translations pages.md (Chinese Traditional)"

This reverts commit 4e60747a55.

* Revert "New translations poll.md (Chinese Traditional)"

This reverts commit 00385dc6a1.

* Revert "New translations share-form.md (Chinese Traditional)"

This reverts commit 8858eaf2f7.

* Revert "New translations thread-mute.md (Chinese Traditional)"

This reverts commit d07bd70000.

* Revert "New translations 1.troubleshooting.md (Chinese Traditional)"

This reverts commit 7405a91ff9.

* fix

* New translations aiscript.md (Korean)

* New translations ja-jp.yml (Chinese Traditional)

* New translations troubleshooting.md (Korean)

* New translations ja-jp.yml (French)

* New translations ja-jp.yml (Italian)

* New translations ja-jp.yml (Korean)

* New translations ja-jp.yml (Polish)

* New translations ja-jp.yml (Chinese Simplified)

* New translations ja-jp.yml (English)

* New translations ja-jp.yml (Indonesian)

* New translations 5.releases.md (Korean)

* fix

* fix

* fix

* fix
2024-01-23 13:18:36 +09:00

14 KiB
Raw Blame History

description date
Misskey Hubが新しくなります新しいMisskey Hubの機能やこだわり、今後のアップデートをご紹介。 2023-12-03

インサイド Misskey Hub Next

:::tip

この記事は、Misskey Alt Advent Calendar 2023 3日目の記事です。

:::

こんにちはMisskey 開発メンバーのかっこかりと申します。Misskey.ioで某公立高校の部活動広報アカウントの運営に参加したりもしています。

先日しゅいろママからも発表がありましたように、このたび、Misskeyプロジェクト公式サイト「Misskey Hub」の全面リニューアルを行うことになりました今回、私が開発主担として、いまご覧いただいているこのサイトを制作しております。そこで、今日はこの新Misskey Hubの機能・頑張った点・今後のアップデートについてご紹介していきます!

リニューアル後の構成

現行のMisskey HubはVuePressをベースに作成されています。これは、ドキュメントを用意さえすればサイトの部分はある程度よしなにやってくれるというものです。

しかし、もともとのMisskey Hubの計画上、ドキュメント以外のページもかなり必要になるということで、ドキュメント生成に特化したフレームワークではなく、より拡張性が高く、汎用的なNuxtをフレームワークとして採用しました。

:::warning

VuePressよりは、今はどちらかというとVitePressのほうがメジャーな感じがします。

:::

:::g-details{summary="詳しい技術スタックはこちら"}

フレームワーク

Nuxt Modules

その他

各種サービス

:::

Nuxtとは

Nuxtは、Vue.jsを使ったWebアプリケーションフレームワークです。静的サイトの作成に使うためのSSG (Static Site Generator) の他に、Nuxt自体がサーバー本体となって動作するSSR (Server Side Rendering)、さらにSSGとSSRのいいとこ取りをしたISR (Incremental Static Regeneration) があり、それらをサイトのディレクトリごとに切り替えて使うことができます。

・・・まとめて言うと、NuxtとはWeb制作に使えるとても万能なツールだということで大丈夫です。

そして、今回のMisskey Hub Nextでは、ドキュメントページとブログページにISRを、それ以外のページにSSGを適用しています。略称多くてこんがらがりそう。

:::tip

プロジェクト名にNextと入っているのでReactフレームワークのNext.jsのほうを思い浮かべたかもしれませんが、罠です。 Nuxtで作ってあります。

:::

ISRとは

SSGでは、サイトの生成時にまとめてすべてのページを書き出してしまう必要があります。しかし、Misskey Hubには大量のドキュメントとブログページ、さらには翻訳版ページもあります。それらをすべて前もって生成すると、とんでもなく時間がかかってしまいます。

ビルド時間: 27分49秒

そこで登場するのがISRです。ISR (Incremental Static Regeneration) を使用すると、サイトの書き出しのタイミングではページの生成は行わず、最初にそのページに訪問されたときにページの生成を行います。 これを、特にページ数の多いドキュメントページブログページに適用したことで、実に13倍も高速な生成が可能となりました。

ビルド時間: 1分32秒

デザイン

デザインに関しては、現行Misskey Hubのデザインをベースに、主に以下の項目を重視してリニューアルを行いました。

  • ページを見つける導線の改善
  • スマホでの操作感の改善
  • ドキュメント更新にかかる手間の改善

ページを見つける導線の改善

現行のMisskey Hubでは、ドキュメントページの一覧などがなく、パッと見てどこに何があるのかがわかりにくい状態でした。

そこで、Misskey Hub Nextでは、ドキュメントページをディレクトリ構造から抜本的に見直しました。利用者別にページ階層を分けたほか、各セクションに見出しページを設けられるようにしました。

ドキュメントのトップページもかなり整理されたかと思います。

また、同様にドキュメントページのデザインも変更しました。左側には各ページが階層で表示され、右側には現在のページのもくじが表示されます。

スマホでの操作感の改善

現行のMisskey Hubでは、モバイルナビゲーションが肥大化し、見にくくなってしまっていたほか、一部では文字が背景と重なって見えにくい部分もありました。 また、スクロールの際にアニメーションがもたついて背景がカクカクする・・・といった問題も起きていました。

そこで、Misskey Hub Nextではスマホ表示でのデザインを改善し、一部ではスマホ専用のUIを設けて対応しました。上で紹介したドキュメントページの各種UIも、スマホの小さい画面でもアクセスできるように配置してあります。

ドキュメント更新にかかる手間の改善

現行のMisskey Hubでは、ドキュメントは翻訳版も含めてすべてGithub上で管理されており、Githubを使ったことのない人にとって、ドキュメントの更新のハードルは高いものでした。

そこで、Misskey Hub Nextでは、翻訳の管理を外部サービスCrowdinで行えるように設計。技術的な知識不要で、翻訳に参加できるようになりました。

依然として新しいドキュメントの追加にはGithubが必要になってしまいますが、コレも今後どうにかしたいなぁ・・・と検討中です。Githubを使える方は、ドキュメントの拡充に引き続きご協力お願いします🙏

:::tip{label='お知らせ'}

現在、翻訳にご協力いただける方を募集中です! We are looking for translators for this site!

翻訳サイトをご覧頂いた上で、リストに既にある言語へ翻訳する場合は、そのままログインして作業を開始できます。

リストにない言語でも、ご連絡いただければ言語を追加します。

Misskeyをより多くの人に広めるために、ぜひご協力お願いします🙏

:::

:::g-details{summary="【マニアック】フォントのはなし"}

Misskey Hub Nextでは、フォントの改善も行いました。

現行のMisskey Hubで使われているフォントKosugi Maruは、英字が歪で、英単語や英文になると読みにくくなっていました。また、日本語の漢字部分が中国語とバッティングして不自然に見えてしまうという問題もありました。

そこで、Misskey Hub Nextでは、英字に欧文フォントを採用し、各種言語にはそれぞれの国ごとにフォントを切り替えるようにしました。

フォント一覧

欧文フォント

  • Capriola (キャッチコピーやタイトルに使用)
  • Nunito (本文に使用)

日本語

韓国語

中国語

:::

機能紹介

ここからは、Misskey Hub Nextに搭載された機能をご紹介します

Misskeyサーバー一覧

Misskeyのサーバー一覧を、Misskeyをはじめよう(joinmisskey)のシステムを使用して大幅に改良しました!

これにより、基本的にはサーバーを追加するのに特別な作業や申請は必要なくなり、新しく見つかったサーバーは自動的に追加されるようになりました!

:::tip

なので近日中にjoinmisskeyはMisskey Hubに統合されるかも…

:::

【新機能】ツール集

Misskey関連のさまざまな便利ツールを提供するページ「ツール集」を新たに開発しました!

現在

  • MFMお試しコーナー
  • aid/aidx変換ツール

をご利用いただけますが、今後も随時拡充していく予定です💪

:::tip

MFMお試しコーナーの再現精度は割と高いのでMFMアートづくりにもおすすめです

:::

【新機能】AiScriptに対応

Misskey Hub上で、AiScriptをハイライト表示することができるようになりましたプラグインの作り方やAiScript入門なども、Misskey Hub上で書けるようになるかも…

for (let i, 100) {
  <: if (i % 15 == 0) "FizzBuzz"
    elif (i % 3 == 0) "Fizz"
    elif (i % 5 == 0) "Buzz"
    else i
}

:::fukidashi{chara="doya_ai" charaName="藍"}

Misskey Hub Nextでは、わたし・藍も色々なところにいます
ほら、こんなところにも!

ほかにも色々なところに隠れているので、ぜひ探してみてくださいね♪

:::

さらに、いにしえのミスキストや、現行Misskey Hubのヘビーユーザーしか知らないであろう、知る人ぞ知る機能・藍モードも移植しました!

え?何が起きるのかって?
まあまあ、ものは試しです。やってみてください↓

:AiModeB

制作:しなむ 様

今後実装する予定の機能

※以下はすべて「予定」です。いつ実装されるかわかりませんし、そもそも実装されないかもしれません。

APIエンドポイント ドキュメント

こちらは、現在株式会社MisskeyHQ (村上さん)と連携しながら、ドキュメントの拡充に取り組んでいます。もう少しお待ち下さい🙏

:::tip

ドキュメントの拡充にご協力いただける方は、こちらをご覧のうえ、ぜひご参加ください!

:::

シェアボタン中継機能

MisskeyへWebページをシェアする機能を、Misskey Hubを中継して行えるようにする予定ですMisskey ShareDonShareにあたる機能を実装します)!

これにより、サーバーごとの投稿処理などの複雑な実装なしで、ウェブサイトにMisskeyへのシェアボタンを埋め込めるようになります🎉

プラグイン・テーマストア

Misskey v2023.11.0から、外部サイトを介してプラグイン・テーマをインストールすることが可能になりました。これを利用して、Misskey Hub上でプラグインやテーマを公開できる仕組みを構築予定です

まとめ

このように、Misskey Hubは様々な部分で改善・追加を行い、パワーアップします現在鋭意開発中で、近いうちに現行のMisskey Hubを置き換えてリニューアルを行う予定です。 それまでの間、Misskey Hub Next は現在のURLmisskey-hub-next.vercel.app)でご覧いただけます。ぜひ色々なページをご覧いただき、ご意見やご感想をお寄せください。

それでは、新しいMisskey Hubの正式リリースを楽しみにお待ちください♪