This commit is contained in:
kakkokari-gtyih 2023-12-02 13:42:11 +09:00
commit 55de3ab8b6
578 changed files with 51547 additions and 200 deletions

View File

@ -12,11 +12,11 @@ Release date: **TBD未定**
## Docsの書き方
`/content/.README.md` をご覧ください
**必ず [`/content/.README.md`](./content/.README.md) をご覧ください**
## NuxtLinkについて
内部リンク・外部リンクに関する処理を強化した[`<GNuxtLink>`](./tree/master/components/g/NuxtLink.vue)を使用していますので、**リンクを追加する際は`<NuxtLink>`ではなく`<GNuxtLink>`を使用してください。**
内部リンク・外部リンクに関する処理を強化した[`<GNuxtLink>`](./components/g/NuxtLink.vue)を使用していますので、**リンクを追加する際は`<NuxtLink>`ではなく`<GNuxtLink>`を使用してください。**
## Setup

View File

@ -1,8 +1,9 @@
export default defineAppConfig({
notice: {
title: {
ja: "v2023.11.0 をリリースしました!",
ja: "2023年のMisskeyを振り返ろう",
en: "Recap Misskey in 2023",
},
to: "/docs/releases/"
to: "/blog/2023-12-01-2023recap/"
},
});

View File

@ -113,7 +113,7 @@ useHead((): Record<string, any> => ({
{
property: "og:image",
// TODO
content: () => route.meta.thumbnail ? route.meta.thumbnail : `${baseUrl}/img/logo.jpg`,
content: () => route.meta.thumbnail ? route.meta.thumbnail : `${baseUrl}/img/og/misskey-hub-screenshot-l.png`,
},
...(head.value.meta?.map((e) => ({ property: e.property, content: e.content, })) || []),
],

View File

@ -1,4 +1,5 @@
import type { NavItem } from '@nuxt/content/dist/runtime/types';
import type { LocaleObject } from '@nuxtjs/i18n/dist/runtime/composables';
import { parseURL } from 'ufo';
/**
@ -45,7 +46,9 @@ export function isLocalPath(link: string, base?: string): boolean {
export function sanitizeInternalPath(path: string): string {
const runtimeConfig = useRuntimeConfig();
return path.replace(new RegExp(`^(\/(${runtimeConfig.public.locales.map((l) => l.code).join('|')})\/?){2,}(.*)$`, 'g'), '$1$2');
return path
.replace(/^(\/((?!ja)[a-z]{2}))?\/blog\/(.+)/g, '/ja/blog/$3')
.replace(new RegExp(`^(\/(${(runtimeConfig.public.locales as LocaleObject[]).map((l) => l.code).join('|')})\/?){2,}(.*)$`, 'g'), '$1$2');
}
/**

View File

@ -2,9 +2,12 @@
defineProps<{
summary?: string;
}>();
const { t } = useI18n();
const clickToExpand = computed(() => `'${t('clickToExpand')}'` === "'clickToExpand'" ? '' : `'${t('clickToExpand')}'`);
</script>
<template>
<details class="group my-4">
<details class="group my-4" :style="`--details-i18n: ${clickToExpand}`">
<summary class="cursor-pointer outline-none p-2 border dark:border-slate-700 rounded-lg bg-white dark:bg-slate-700 shadow-md group-open:rounded-b-none group-open:bg-slate-200 dark:group-open:bg-slate-800 group-open:shadow-none group-open:border-b-0">
{{summary}}
</summary>
@ -16,6 +19,6 @@ defineProps<{
<style scoped>
summary::after {
@apply text-sm hidden md:inline;
content: "(クリックで展開)";
content: var(--details-i18n);
}
</style>

View File

@ -13,7 +13,7 @@
<div class="notice h-9 w-9 rounded-full mr-2 p-2">
<MegaphoneIco class="h-5 w-5 text-white -rotate-12" />
</div>
<div class="font-bold text-sm md:text-base mr-2">{{ notice.title[locale] ?? notice.title.ja }}<ArrowRightIco v-if="isLocalPath(notice.to)" class="ml-0.5" /><ArrowUpRightIco v-else class="ml-0.5" /></div>
<div class="font-bold text-sm md:text-base mr-2">{{ notice.title[locale] ?? notice.title?.en ?? notice.title.ja }}<ArrowRightIco v-if="isLocalPath(notice.to)" class="ml-0.5" /><ArrowUpRightIco v-else class="ml-0.5" /></div>
</div>
</GNuxtLink>
</div>
@ -44,6 +44,10 @@ const showTagline = ref(false);
const colorMode = useColorMode();
const mobileScreenShot = computed(() => (colorMode.preference === 'dark') ? '/img/hero/screenshot-mobile-en.png' : '/img/hero/screenshot-mobile.png');
//
const localeState = useState('miHub_blog_originalLocale', () => locale.value);
localeState.value = locale.value;
onMounted(() => {
setTimeout(() => {
showTagline.value = true;

View File

@ -28,6 +28,17 @@ VuePressでは末尾が`.md`となるパス形式でしたが、Misskey-Hub-Next
ただし、リンクは自動的に言語ごとのものに変換されますので、**マークダウン内で`/ja/`などの言語プレフィックスを付与しないようにしてください。**
## AiScriptハイライトについて
Misskey Hubでは、AiScriptのシンタックスハイライトに対応しています。言語識別子は、**大文字小文字を区別し `AiScript` と正確に**入力する必要があります。[こちら](./ja/docs/4.for-developers/plugin/create-plugin.md)のソースを参考にしてください。
## 独自コンポーネントについて
Nuxt Contentは、内部的にはmarkdownの拡張言語であるMDCを採用しています。
MDC記法でのVueコンポーネントの書き方は、[こちら](https://content.nuxt.com/usage/markdown#vue-components)をご確認ください。
(特に、コンポーネントをネストする際の記法に気を付けてください)
## 独自Frontmatterについて
### `date`

View File

@ -0,0 +1,150 @@
---
ignoreDirBasedNav: true
description: Misskeyについてのドキュメントです。
---
# Misskeyについて
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。
開発は日本でsyuiloによって2014年から開始されました。
ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。
当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
:::tip
Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
:::
誰でも開発に参加することができ、現在でも活発に開発が続いています。
## 分散型とは何か?
<b>分散(distributed)型</b>とは、<b>非中央集権(decentralized)</b>とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に<b>通信(連合、federation)</b>することでコンテンツ共有<b>ネットワーク(Fediverse)</b>を形成していることが特徴のサービスです。
単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。
分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。
## 常にオープンソース
Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うと<b>ソフトウェアのソースコード(プログラム)が公開されている</b>ことです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。
Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。
オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。
上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。
再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
:::tip
技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリは[GitHub上でホスティングされています。](https://github.com/misskey-dev)
:::
## 開発に参加する、プロジェクトを支援する
Misskeyを気に入っていただけたら、ぜひプロジェクトを支援してください。プロジェクトに貢献するには、以下で紹介するようにいろいろな方法があります。方法によっては開発のスキルは不要なので、誰でも気軽に参加し貢献することができます。いつでもお待ちしています。
### 機能を追加したり、バグを修正する
ソフトウェアエンジニアのスキルをお持ちの方であれば、ソースコードを編集する形でプロジェクトに貢献することができます。
貢献についてのガイドは[こちら](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)です。
### 議論に参加する
新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。
そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。
### テキストを翻訳する
Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。
その翻訳作業に加わっていただくことでもMisskeyに貢献できます。
Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey)
### 感想を投稿する
不具合報告等だけではなく、Misskeyの良い点、楽しい点といったポジティブな意見もぜひ共有してください。開発の励みになり、それは間接的ですがプロジェクトへの貢献です。
### ミスキストを増やす
ミスキストとは、Misskeyを使用する人のことです。
知り合いに紹介するなどしてMisskeyを広めていただければ、ミスキストが増え開発のモチベーションが上がります。
### 寄付をする
[こちらをご覧ください](/docs/for-users/resources/donate/)
## よくある質問
### プロジェクトは何を目指していますか?
強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。
Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。
それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。
<!-- TODO: ここにロードマップへのリンク -->
### 企業によって開発されていますか?
いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。
開発メンバーも基本的にはボランティアです。
また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。
### 誰が運営していますか?
Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。
また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。
サーバーの運営者は、サーバーの情報ページで確認することができます。
あなたがサーバーを作成すれば、あなたが運営者になります。
### どのサーバーを選べばいいですか?
[サーバー一覧が公開されています。](/servers/)
サーバーによってコミュニティのテーマ(特定のこと、ものが好き 等)が決められている場合があるので、自分に合ったテーマのサーバーがあれば、そこを選ぶと良いかもしれません。
他にも、サーバーの規模、ユーザー層、国および言語、運営者が信頼できるかどうか、などの観点があります。
なお、Misskey公式のサーバーというものはありません。自身で新しくサーバーを作成するという選択肢もあります。
基本的にどのサーバーを選んだとしても、他の全てのサーバーのユーザーと繋がることができます。
### サーバーを建てるにはどうしたらいいですか?
Misskeyサーバーの作成に興味を持っていただきありがとうございます。
2022年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。
サーバーの作成方法については[こちら](/docs/for-admin/install/)をご覧ください。
### どのような技術を使用していますか?
Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。
- サーバーサイド: Node.js
- データベース: PostgreSQL、Redis
- UIフレームワーク: Vue.js
- プログラミング言語: TypeScript
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか
いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。
開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。
同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。
詳しくは[こちら](/docs/for-users/resources/apps/)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。
なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。
### Misskeyのロゴ、アイコンはどこで入手できますか
[こちら](/brand-assets/)
### 時折目にする猫耳の可愛い女の子は?
:::fukidashi{chara="doya\_ai" charaName="藍"}
わたしについては[このホームページ](https://xn--931a.moe/)をご覧ください!
:::
:::fukidashi{chara="syuilo" charaName="しゅいろ" direction="right"}
Misskeyの守り神、藍ちゃんです。アイチャンカワイイヤッター!
:::

View File

@ -0,0 +1,5 @@
# ユーザー向けガイド
このセクションでは、Misskeyを初めて利用する方はもちろん、すでに利用されている方にも役立つ一般的な機能についてご紹介しています。
<MkIndex />

View File

@ -0,0 +1,14 @@
# Misskeyをはじめよう
ここでは、Misskeyでの活動を始めるチュートリアルを掲載しています。
おもに、
- 分散型プラットフォームの注意点
- サーバーとは?サーバーの選び方は?
- 登録の手順
- 最低限の基礎知識
などについて解説していますので、この通りに進めることで、とりあえずMisskeyを使い始めることができると思います。
それでは、早速始めましょう!(「次へ」を押して進んでください。)

View File

@ -0,0 +1,14 @@
---
description: Misskeyサーバーにアカウントを作成する前の基本的な注意事項です。
---
# 基本的な注意事項
Misskeyを使ったサービスを利用するにあたり、いくつか注意が必要な点があります。
- 分散型のため、一度アップロードしたデータは削除したとしても他の全てのサーバーから削除されることは保証されません。(ただし、これはインターネット全般に言えることでもあります。)
- 非公開で行った投稿でも、相手のサーバーがそれを同じように非公開として扱うかは保証されません。個人情報、機密情報を投稿する際は十分注意してください。(ただし、これはインターネット全般に言えることでもあります。)
- アカウントの削除は負荷の高い処理であるため、長い時間がかかることがあります。アップロードしたデータが多いケースではアカウントの削除が不可能なこともあります。
- サーバーによっては、広告収入により運営費を賄っていることがあります。また、アドブロッカーは広告とは全く関係のないコンテンツや機能を誤ってブロックすることがよくあり、クライアントの動作に支障をきたし、正常にMisskeyを使用できなくなるおそれがあります。そのため、Misskeyではアドブロッカーやそれに類する機能はオフにしてご利用ください。
これらをご理解いただいたうえで、楽しくサービスをご利用ください。

View File

@ -0,0 +1,35 @@
---
description: Misskeyサーバーへのユーザー登録や、基本的な操作について解説しています。
---
# Misskeyサーバーをさがす
Misskeyはソフトウェアおよびそのプロジェクトです。
インターネットに公開されている、Misskeyを動かしているサーバーのことを**サーバー**と呼びます。
Misskeyを利用するには、どこかのサーバーにアカウントを作成し、そのサーバーを利用します。
[サーバー一覧](/servers/)から、好きなサーバーを選ぶことができます。
:::tip
どのサーバーを選んでも、他のサーバーのユーザーとやり取りすることができます。
:::g-details{summary='詳細'}
Misskeyには連合機能が備わっています。
連合機能によって、別のサーバーのユーザーであっても、同じサーバーのユーザーと同じようにフォローやリアクション、Renoteなどができるようになっています。
Misskeyが搭載している連合機能はActivityPubというオープンな共通規格に基づいていて、MastodonやPleromaといったほかのソフトウェアとも互換性があります。
:::
:::
## サーバーの選び方
### サーバーのテーマ
サーバーによっては、例えば「特定のこと、ものが好き」といったテーマが決まっている場合があります。
自分にあったテーマのサーバーを探すのもおすすめです。
:::tip
サーバーの一覧は[こちら](/servers/)からご覧いただけます。
:::

View File

@ -0,0 +1,34 @@
# サーバーに登録する
登録するサーバーが決まったら、さっそくアカウントを作成しましょう。
:::tip
ここでは、Misskey.ioを例にとって紹介していますが、他のサーバーでも登録方法はおおむね同じです。
ただし、入力事項はサーバーによって異なることがあります。詳しくは、サーバー管理者にお問い合わせください。
:::
## 登録する
まずは、トップページから「**このサーバーに登録する**」ボタンを探し、クリックします。
![このサーバーに登録ボタン](/img/docs/for-users/onboarding/join-server/1.ja.png)
次に、画面の指示に従い、規約の確認や必要事項の記入を進めてください。
主に記入すべき事項は、以下の通りです。
- 招待コード(登録が招待制の場合のみ。お持ちでない場合は登録できません。)
- ユーザー名(**後から変更はできません。一度退会すると同じユーザー名を取得することはできません。**
- メールアドレス(必要ないサーバーもあります)
- パスワード
![必要事項の記入](/img/docs/for-users/onboarding/join-server/2.ja.png)
必要事項の記入が終わると、メールアドレスを登録するサーバーの場合、確認メールが届きますので、速やかにメール内のリンクをクリックしてください。
![確認メール](/img/docs/for-users/onboarding/join-server/3.ja.png)
以上で、Misskey サーバーへの登録が完了しました!
これであなたも[ミスキスト](../resources/glossary/#ミスキスト)!楽しいコミュニケーションをお楽しみください。

View File

@ -0,0 +1,23 @@
# Misskeyの基礎知識
アカウントを作成したあなたにとりあえず知っておいてほしいことをまとめました!
## ノート
Misskeyへの投稿は、「ート」と呼ばれます。Twitterなどの一般的なSNSに比べたくさんの機能がありますので、初めての投稿を行う前に必ず確認して、上手に投稿しましょう
:::tip
詳細は、「[ノート](/docs/for-users/features/note/)」をご覧ください。
:::
## タイムライン
Misskeyは、複数のタイムラインを持っています。名前だけでは少々わかりにくいかと思いますので、それぞれがどのような働きをするのかを知っておきましょう。
:::tip
詳細は、「[タイムライン](/docs/for-users/features/timeline/)」をご覧ください。
:::
## その他
その他にも、Misskeyには、使って楽しい機能が盛りだくさんすべての機能に関する説明は[こちら](/docs/for-users/features/)に記載されていますので、ぜひご覧ください!

View File

@ -0,0 +1,9 @@
---
description: Misskeyの大きな特徴である、多彩な機能について解説しています。
---
# さまざまな機能
Misskeyの大きな特徴は、ほかのマイクロブログシステムには見られない多彩な機能にあります。ここでは、それらについて解説していきます。
<MkIndex :sort="(a, b) => b.name - a.name"></MkIndex>

View File

@ -0,0 +1,13 @@
# 広告
Misskeyではサーバーによる広告をタイムラインなどに表示できる機能があります。
広告の右上に表示されるアイコンをクリックすることで、当該の広告の表示頻度を下げることができます。
:::tip
広告の総数が少ない場合は、表示頻度を下げた後も連続で表示される可能性があります。
:::
## 広告の設定(管理者)
サーバーのコントロールパネルから広告の追加、編集、削除を行えます。
広告には任意の画像、遷移先URL、形状、表示割合を設定できます。

View File

@ -0,0 +1,5 @@
# アンテナ
アンテナは、自由に条件を設定して、合致するノートを自動で収集することができる機能です。
条件を設定したアンテナが作成された状態で、条件に合致するノートが投稿されると、リアルタイムでそのアンテナのタイムラインにノートが追加されます。

View File

@ -0,0 +1,74 @@
# チャート
Misskeyはサーバーの様々なデータソースに対するチャートを生成し表示する機能を備えています。
チャートを利用することで、サーバーの利用状況や連合の状況、各ユーザーのアクティビティなどを視覚的に把握することができます。
サーバーのチャートはサーバー情報ページから表示することができます。
以下は各チャートとその各項目の説明です。
## 連合チャート
連合しているサーバー化ついてのチャートです。
### Pub
アクティビティを配送しているサーバーの数。
言い換えると、自サーバーのユーザーをフォローしているリモートユーザーの所属サーバーのユニークなカウントを表します。
### Sub
アクティビティを受信しているサーバーの数。
言い換えると、自サーバーのユーザーがフォローしているリモートユーザーの所属サーバーのユニークなカウントを表します。
### Received
アクティビティを送ってきたサーバーの数。
### Delivered
アクティビティを配送したサーバーの数。
### Stalled
アクティビティを配送する際、エラーになったサーバーの数。
## アクティブユーザー数チャート
自サーバーのユーザーの利用状況についてのチャートです。
### Read & Write
閲覧と書き込みを行ったユーザーの数。
### Read
閲覧を行ったユーザーの数。
### Write
書き込みを行ったユーザーの数。
### < Week
閲覧を行ったユーザーのうち、アカウント作成日時が1週間未満であるユーザーの数。
### < Month
閲覧を行ったユーザーのうち、アカウント作成日時が1ヶ月未満であるユーザーの数。
### < Year
閲覧を行ったユーザーのうち、アカウント作成日時が1年未満であるユーザーの数。
### > Week
閲覧を行ったユーザーのうち、アカウント作成日時が1週間以上前であるユーザーの数。
### > Month
閲覧を行ったユーザーのうち、アカウント作成日時が1ヶ月以上前であるユーザーの数。
### > Year
閲覧を行ったユーザーのうち、アカウント作成日時が1年以上前であるユーザーの数。

View File

@ -0,0 +1,8 @@
# クリップ
クリップは、複数のノートをまとめることができる機能です。自分のノート・他者のノートは問いません。
クリップは複数作ることができ、それぞれに名前や説明を設定して管理することが可能です。また、クリップを他のユーザーに公開するかどうかも選択することができます。
クリップを作るには、クリップ管理ページから「追加」をクリックします。
クリップにノートを追加するには、対象のノートのメニューから「クリップ」をクリックし、追加先のクリップを選択します。

View File

@ -0,0 +1,8 @@
# カスタム絵文字
カスタム絵文字は、サーバーで用意された画像を絵文字のように使える機能です。
ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。
カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。
テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。
サーバーにどのようなカスタム絵文字が用意されているかは、Misskey Webの **サーバー情報** にある **カスタム絵文字** `/about#emojis`にアクセスすると見ることができます。

View File

@ -0,0 +1,26 @@
# デッキ
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。\
なお、メインカラムを追加しておくと、ノートやプロフィールをページで表示した際、メインカラムに内容が表示されます。
## カラムの追加
デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。
## カラムの移動
カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。
## カラムの水平分割
カラムは左右だけでなく、上下に並べることもできます。
カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。
上下分割を解除するには、カラムメニューの「右に出す」を選択します。
## カラムの設定
カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。
## デッキの設定
デッキに関する設定は、[settings/deck](/settings/deck)で行えます。

View File

@ -0,0 +1,25 @@
# ドライブ
ドライブは、Misskey上でファイルを管理できる機能です。
:::tip
技術的に言うと、Misskeyのシステム上、すべてのファイルが一元管理されており、それをユーザーにも公開したインターフェイスがドライブと捉えることができます。
:::
Misskey Webのドライブページから任意のファイルをアップロードできるほか、アバターに設定した画像や、ートに添付したファイルなどもすべてドライブにアップロードされます。
ドライブにアップロードされたファイルは、いつでもダウンロードすることができるほか、ノート作成時に「ドライブからファイルを添付」することでファイルを再利用することもできます。
ドライブ内にフォルダを作り、複数のファイルをまとめて整理することもできます。
:::warning
現時点で、ドライブからファイルを削除すると、そのファイルが添付された **すべてのコンテンツ(ノート、ページなど)** も同時に消えます。
:::
## センシティブ (NSFW)
センシティブまたはNSFW (Not safe for work) は、ドライブのファイルに設定することができるフラグです。
センシティブフラグを設定されたファイルは、表示される際に閲覧者の操作なしには表示されなくなります。
このフラグは、例えば職場や公共の場で閲覧するのに適切でないと思われる画像などに設定し、そのような画像が突然表示されてしまうことを防ぐ目的で使われます。
このフラグは手動でオンオフを切り替えられるほか、モデレーターの判断で設定される場合もあります。

View File

@ -0,0 +1,10 @@
# お気に入り
[ノート](./note)をお気に入りとして登録できる機能です。
<!--TODO:「お気に入りページ」をMisskey Webに飛ばすリンクで置き換え-->
お気に入り登録したノートは、お気に入りページで一覧することができます。
お気に入りに登録したことは相手に通知されず、お気に入りは自分しか見ることができません。
ノートをお気に入り登録するには、ノートメニューの「お気に入り」を押します。お気に入り解除するには、ノートメニューの「お気に入り解除」を押します。

View File

@ -0,0 +1,4 @@
# フォロー
ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。
ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。

View File

@ -0,0 +1,9 @@
# ハッシュタグ
ハッシュタグとは、投稿に検索可能なタグをつけることができる機能の一つです。
世界ではじめてのハッシュタグ── #barcamp は、[2007年8月24日の午前4:25](https://twitter.com/chrismessina/status/223115412?lang=en)にクリス・メッシナ氏[@chrismessina@mastodon.xyz](https://mastodon.xyz/@chrismessina)によって考案されました。後にこの「ポンド記号`#`を用いて検索を容易にする」という案は、英語で「刻む、ハックする」を意味する「ハッシュ」と、「札」を意味する「タグ」を合わせた造語──「ハッシュタグ」として生まれ変わり、当時のTwitter社に公式採用されました。ちなみにクリス・メッシナ氏が`#`を選んだ理由は、IRCのチャンネル名が`#`で始まることからの連想だからだそうです。
![Screenshot of Chris Messina's first hashtag tweet that says "how do you feel about using # (pound) for groups. As in #barcamp \[msg\]?"](/img/docs/for-users/features/hashtag/1.ja.png)
FediverseでのハッシュタグはXやInstagramなどといった中央集権的なサービスとでのものと多少仕様が異なります。Fediverseでは全文検索が難しい場合などがあり、特定の投稿を探し出すのは困難ですが、投稿にハッシュタグがついていれば、その投稿をハッシュタグをたどって容易に見つけ出すことができます。また、投稿にハッシュタグをつけるだけで様々なサイトに自動で届けてくれるハッシュタグリレーと呼ばれるサービスなどが連合宇宙には存在し、ここではハッシュタグにそこそこの重みがあったりするのです。

View File

@ -0,0 +1 @@
# メンション

View File

@ -0,0 +1,358 @@
---
description: MFMは、Misskeyの様々な場所で使用できる専用のマークアップ言語です。
---
# MFM
MFMは、Markup language For Misskeyの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。
:::tip
一部の構文はMarkdownやHTMLと互換性があります。
:::
## MFMが使用可能な場所の例
- ノート本文
- CW注釈
- ユーザーの名前
- ユーザーの自己紹介
## 構文
### メンション
アットマーク + ユーザー名で、特定のユーザーを示すことができます。
:::tip
メンションについての詳細は[こちら](./mention.md)を参照してください。
:::
```
@ai
```
<MfmPreview text="@ai"></MfmPreview>
```
@repo@p1.a9z.dev
```
<MfmPreview text="@repo@p1.a9z.dev"></MfmPreview>
### ハッシュタグ
ナンバーサイン + タグで、ハッシュタグを示すことができます。
:::tip
ハッシュタグについての詳細は[こちら](./hashtag.md)を参照してください。
:::
```
#misskey
```
<MfmPreview text="#misskey"></MfmPreview>
### URL
URLを示すことができます。
```
https://example.com
```
<MfmPreview text="https://example.com"></MfmPreview>
### リンク
文章の特定の範囲を、URLに紐づけることができます。
```
[example link](https://example.com)
```
:::tip
リンクテキストの前に`?`をつけると、リンクプレビューを非表示にすることができます。
```
?[example link](https://example.com)
```
:::
<MfmPreview text="[example link](https://example.com)"></MfmPreview>
### カスタム絵文字
コロンでカスタム絵文字名を囲むと、カスタム絵文字を表示させることができます。
:::tip
カスタム絵文字についての詳細は[こちら](./custom-emoji.md)を参照してください。
:::
```
:misskey:
```
<MfmPreview text=":misskey:"></MfmPreview>
### 太字
文字を太く表示して強調することができます。
```
**太字**
```
<MfmPreview text="**太字**"></MfmPreview>
### 目立たなくする
内容を小さく・薄く表示させることができます。
```
<small>MisskeyでFediverseの世界が広がります</small>
```
<MfmPreview text="<small>MisskeyでFediverseの世界が広がります</small>"></MfmPreview>
### 引用
内容が引用であることを示すことができます。
```
> MisskeyでFediverseの世界が広がります
```
<MfmPreview text="> MisskeyでFediverseの世界が広がります"></MfmPreview>
### 中央寄せ
内容を中央寄せで表示させることができます。
```
<center>MisskeyでFediverseの世界が広がります</center>
```
<MfmPreview text="<center>MisskeyでFediverseの世界が広がります</center>"></MfmPreview>
### コード(インライン)
プログラムなどのコードをインラインでシンタックスハイライトします。
```
`<: "Hello, world!"`
```
### コード(ブロック)
複数行のプログラムなどのコードをブロックでシンタックスハイライトします。
```
~ (#i, 100) {
<: ? ((i % 15) = 0) "FizzBuzz"
.? ((i % 3) = 0) "Fizz"
.? ((i % 5) = 0) "Buzz"
. i
}
```
### 反転
内容を上下または左右に反転させます。
```
$[flip MisskeyでFediverseの世界が広がります]
$[flip.v MisskeyでFediverseの世界が広がります]
$[flip.h,v MisskeyでFediverseの世界が広がります]
```
<MfmPreview text="$[flip MisskeyでFediverseの世界が広がります]
$[flip.v MisskeyでFediverseの世界が広がります]
$[flip.h,v MisskeyでFediverseの世界が広がります]"></MfmPreview>
### フォント
内容のフォントを指定することができます。
```
$[font.serif MisskeyでFediverseの世界が広がります]
$[font.monospace MisskeyでFediverseの世界が広がります]
$[font.cursive MisskeyでFediverseの世界が広がります]
$[font.fantasy MisskeyでFediverseの世界が広がります]
```
<MfmPreview text="$[font.serif MisskeyでFediverseの世界が広がります]
$[font.monospace MisskeyでFediverseの世界が広がります]
$[font.cursive MisskeyでFediverseの世界が広がります]
$[font.fantasy MisskeyでFediverseの世界が広がります]"></MfmPreview>
### ぼかし
内容をぼかすことができます。ポインターを上に乗せるとはっきり見えるようになります。
```
$[blur MisskeyでFediverseの世界が広がります]
```
<MfmPreview text="$[blur MisskeyでFediverseの世界が広がります]"></MfmPreview>
### 検索
検索ボックスを表示できます。
```
misskey 検索
```
<MfmPreview text="misskey 検索"></MfmPreview>
### 文字色・背景色
文字色と背景色を変更することができます。
3,4,6桁のカラーコードで色を表現します。
```
$[fg.color=f00 赤字]
$[bg.color=ff0 黄背景]
```
<MfmPreview text="$[fg.color=f00 赤字]
$[bg.color=ff0 黄背景]"></MfmPreview>
### 角度変更
指定した角度で回転させます。
```
$[rotate.deg=30 misskey]
```
<MfmPreview text="$[rotate.deg=30 misskey]"></MfmPreview>
### 位置変更
位置をずらすことができます。
```
😏$[position.x=0.8,y=0.5 🍮]😀
```
<MfmPreview text="😏$[position.x=0.8,y=0.5 🍮]😀"></MfmPreview>
### 拡大
文字を引き延ばして表示します。
```
$[scale.x=4,y=2 🍮]
```
<MfmPreview text="$[scale.x=4,y=2 🍮]"></MfmPreview>
```
$[x2 x2]
$[x3 x3]
$[x4 x4]
```
<MfmPreview text="$[x2 x2]
$[x3 x3]
$[x4 x4]"></MfmPreview>
### アニメーション(びよんびよん)
```
$[jelly 🍮] $[jelly.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[jelly 🍮] $[jelly.speed=5s 🍮]]"></MfmPreview>
### アニメーション(じゃーん)
```
$[tada 🍮] $[tada.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[tada 🍮] $[tada.speed=5s 🍮]]"></MfmPreview>
### アニメーション(ジャンプ)
```
$[jump 🍮] $[jump.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[jump 🍮] $[jump.speed=5s 🍮]]"></MfmPreview>
### アニメーション(バウンド)
```
$[bounce 🍮] $[bounce.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[bounce 🍮] $[bounce.speed=5s 🍮]]"></MfmPreview>
### アニメーション(回転)
```
$[spin 🍮] $[spin.left 🍮] $[spin.alternate 🍮]
$[spin.x 🍮] $[spin.x,left 🍮] $[spin.x,alternate 🍮]
$[spin.y 🍮] $[spin.y,left 🍮] $[spin.y,alternate 🍮]
$[spin.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[spin 🍮] $[spin.left 🍮] $[spin.alternate 🍮]
$[spin.x 🍮] $[spin.x,left 🍮] $[spin.x,alternate 🍮]
$[spin.y 🍮] $[spin.y,left 🍮] $[spin.y,alternate 🍮]
$[spin.speed=5s 🍮]]"></MfmPreview>
### アニメーション(ぶるぶる)
```
$[shake 🍮] $[shake.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[shake 🍮] $[shake.speed=5s 🍮]]"></MfmPreview>
### アニメーション(ブレ)
```
$[twitch 🍮] $[twitch.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[twitch 🍮] $[twitch.speed=5s 🍮]]"></MfmPreview>
### レインボー
```
$[rainbow 🍮] $[rainbow.speed=5s 🍮]
$[rainbow 色なし文字]
$[rainbow $[fg.color=f0f 色付き文字]]
```
<MfmPreview text="$[rainbow 🍮] $[rainbow.speed=5s 🍮]
$[rainbow 色なし文字]
$[rainbow $[fg.color=f0f 色付き文字]]"></MfmPreview>
### キラキラ
```
$[sparkle 🍮]
```
<MfmPreview text="$[x2 $[sparkle 🍮]]"></MfmPreview>
### プレーン
内側の構文を全て無効にします。
```
<plain>**bold** @mention #hashtag `code` $[x2 🍮]</plain>
```
<MfmPreview text="<plain>**bold** @mention #hashtag `code` $[x2 🍮]</plain>"></MfmPreview>
## 開発者向け情報
MFMのパーサー実装はライブラリとして公開されており、簡単にクライアントにMFMを組み込むことが可能です。
- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptパーサー実装

View File

@ -0,0 +1,56 @@
# ミュートとブロック
好みではないユーザーがいる場合は、ミュートを行うことでそのユーザーが自分から見えないようにすることができます。
また、より強力な措置として、ブロックを行うことでそのユーザーから自分のコンテンツが見えないようになるほか、自分に対して関わることができないようにすることができます。
ミュートされていることは相手は分かりませんが、ブロックされていることは相手に分かります。どちらを選ぶかはご自身の判断で行ってください。
:::tip
ミュートとブロックは併用できます。
:::
:::warning
利用規約に違反するような、迷惑なユーザーがいる場合は運営者に報告することも検討してください。
:::
Misskey Webでは、設定>ミュートとブロック から、自分がミュートまたはブロックしているユーザー一覧を確認することができます。
## ミュート
ユーザーをミュートすると、そのユーザーに関する次のコンテンツがMisskeyに表示されなくなります:
- タイムラインや投稿の検索結果内の、そのユーザーの投稿(およびそれらの投稿に対する返信やRenote)
- そのユーザーからの通知
- メッセージ履歴一覧内の、そのユーザーとのメッセージ履歴
- など
Misskey Webでユーザーをミュートするには、対象のユーザーのユーザーページのメニューを開き、「ミュート」ボタンを押します。
:::tip
ミュートを行ったことは相手に通知されず、ミュートされていることを知ることもできません。
:::
## ブロック
ユーザーをブロックすると、そのユーザーからあなたのコンテンツが見えないようになり、またあなたに対して以下のようなアクションをすることができなくなります。
- フォローする
- ユーザーリストに追加する
- 返信する、Renoteする
- リアクションする、アンケートに投票する
- メッセージを送信する
- など
また、
- ブロックする際に既にそのユーザーからフォローされていた場合はフォローが解除されます。
- ブロックする際に既にそのユーザーがあなたをユーザーリストに入れていた場合はそのリストからあなたが削除されます。
Misskey Webでユーザーをブロックするには、対象のユーザーのユーザーページのメニューを開き、「ブロック」ボタンを押します。
:::warning
ブロックを行ったこと自体は相手に通知されませんが、フォローを行ったりなどの上記のアクションが行えなくなるので間接的にブロックされていることは分かります。
:::
:::warning
相手から自分のコンテンツが見えなくなりますが、相手がアカウントを切り替えたりログアウト状態になれば見ることができます。あくまで簡易的、補助的なものとしてお考えください。
:::

View File

@ -0,0 +1,72 @@
# ページ
Misskey上でートとは別にページを作成できます。v13では静的ページに特化しています。
:::warning
v13よりページによる動的ページ作成の代わりにMisskey Playが使用できます。
:::
## ページ設定
ページに関する項目を設定します。次の項目を入力できます。
- タイトル
- ページの要約
- ページURL
- 中央寄せ
- フォント
- ピン留めされているときにタイトルを非表示
- アイキャッチ画像
### タイトル
このページのタイトルを入力します。一覧に表示されます。
### ページの要約
簡単な説明を入力します。一覧に表示されます。
### ページURL
`https://サーバー名/@ユーザー/pages/●●●``●●●` を任意に設定できます。
### 中央寄せ
有効にすると、中央に寄せて表示します。
### フォント
**セリフ** と **サンセリフ** を選択します。
### ピン留めされているときにタイトルを非表示
ピン留めされているときにタイトルを非表示にします。
### アイキャッチ画像
**アイキャッチ画像を設定** より画像を設定できます。一覧表示などで表示する事が可能です。
## コンテンツ
ページ本体を編集します。次のブロックを一つまたは複数組み合わせてページを生成できます。
- セクション
- テキスト
- 画像
- ノート埋め込み
### セクション
タイトルを設定する事で見出しとして表示します。更に中のブロックを設定できます。
### テキスト
テキスト本文を入力します。MFMやカスタム絵文字を使用できます。
### 画像
画像を表示します。ドライブより画像を設定します。
### ノート埋め込み
ノート ID を入れる事で、そのートを表示します。他のサーバーを埋め込みたい場合は検索でそのURLを入れ、表示させた時のIDを貼り付けて下さい。

View File

@ -0,0 +1,5 @@
# プラグイン
Misskey Webにはプラグイン機能があり、ユーザーがMisskey Webの機能を拡張することができます。
プラグインの作成方法については[こちらのドキュメント](../../for-developers/plugin/create-plugin)を参照してください。

View File

@ -0,0 +1,47 @@
# アンケート
アンケートは、他の人からの意見を簡単に聞くことができる機能です。
## アンケートをノートに添付する
アンケートは、[ノート](/docs/for-users/features/note)に添付する形で投稿することができます。ノートにアンケートを添付するには、投稿フォームの下部にある「アンケート」ボタンを選択します。
## 選択肢を増やす
アンケートには、選択肢を10個まで作ることができます。選択肢の入力欄は、「追加」ボタンを押すことで追加することができます。
追加しすぎてしまった入力欄は、入力欄の横の☓ボタンを押すことで削除することができます。
:::warning
いずれかの入力欄が空白だった場合、そのアンケートが添付されたノートは投稿できません。
:::
## 複数回答を可能にする
「複数回答可」スイッチをオンにすると、アンケートに回答する人が複数の選択肢に投票できるようになります。
## アンケートの期限を設定する
アンケートには、終了する期限を、日時指定か経過指定のいずれかで設定することができます。
設定するには、「期限」の欄から「日時指定」もしくは「経過指定」をクリックします。
一度設定した期限を取り消す場合には、「期限」の欄から「無期限」を選択します。
## アンケートに投票する
アンケートが添付されたノートがタイムラインに流れてきたときは、アンケートに投票してみましょう。
アンケートに投票するには、各選択肢をクリックします。アンケートを投稿したユーザーが複数回答可に設定していない場合は、その時点でのアンケートの結果が表示されます。
アンケートを投稿したユーザーが複数回答可に設定していた場合、他の選択肢にも投票することができます。この場合、結果は自動では表示されません。
複数回答の設定に関わらず、自動でアンケートの結果が表示されなかったり、投票前に結果を見たい時は、選択肢の下にある「結果を見る」をクリックしてアンケートの結果を表示することができます。
未投票のアンケートの結果を見たあと、もう一度隠すときは「投票する」をクリックします。
:::tip
未投票アンケートには、結果を表示した状態でも投票できます。
:::
投票をすると、自分の投票した選択肢に✔がつきます。

View File

@ -0,0 +1,23 @@
# リアクション
他の人のノートに、絵文字を付けて簡単にあなたの反応を伝えられる機能です。
Misskey Webでリアクションするには、ートの + アイコンをクリックしてピッカーを表示し、絵文字を選択します。
リアクションには[カスタム絵文字](./custom-emoji.md)も使用できます。
## リアクションピッカーのカスタマイズ
Misskey Webでは、ピッカーに表示される絵文字を自分好みにカスタマイズすることができます。
設定の「リアクション」で設定します。
## リモート投稿へのリアクションについて
リアクションはMisskeyオリジナルの機能であるため、リモートサーバーがMisskeyでない限りは、ほとんどの場合「Like」としてアクティビティが送信されます。一般的にはLikeは「お気に入り」として実装されているようです。
## リモートからのリアクションについて
リモートから「Like」アクティビティを受信したとき、Misskeyでは「👍」のリアクションとして解釈されます。
## 自分のリアクション一覧を見る
Misskey Webでは、自分のプロフィールページの「リアクション」タブを開くことで、自分の行ったリアクション一覧を見ることができます。
設定から、このリアクション一覧を公開するようにすることもできます。

View File

@ -0,0 +1,58 @@
# 共有フォーム
Misskey Webの`/share`を開くと、共有用の投稿フォームを開くことができます。この共有フォームを利用すると、外部のWebページから、ページの内容をユーザーにMisskeyで共有してもらいたいときに便利です。
URLにクエリパラメータとして共有内容をはじめとするいくつかのオプションを指定できます。
## クエリパラメータ
:::tip
すべてのパラメータは**オプション**であり、必須ではありません。
:::
| 名前 | 説明 |
| ------- | ------------------------- |
| `title` | タイトル。本文の先頭に\[ … ]と挿入されます。 |
| `text` | 本文。 |
| `url` | URL。本文の末尾に挿入されます。 |
### リプライ情報
以下のいずれかを指定すると、指定のノートに対するリプライにすることができます。
| 名前 | 説明 |
| ---------- | ----------------------------- |
| `replyId` | リプライ先のートID。 |
| `replyUri` | リプライ先のURL。リモートのートオブジェクトを指定 |
### Renote情報
以下のいずれかを指定すると、指定のートに対するRenote(引用)にすることができます。
| 名前 | 説明 |
| ----------- | ------------------------------- |
| `renoteId` | Renote先のートID。 |
| `renoteUri` | Renote先のURL。リモートのートオブジェクトを指定 |
### 公開範囲
以下のオプションで公開範囲の指定を行えます。
| 名前 | 説明 |
| ---------------- | ------------------------------------------------- |
| `visibility` | `public`, `home`, `followers`, `specified` のいずれか |
| `localOnly` | 0(false) or 1(true) |
| `visibleUserIds` | 対象ユーザーID(カンマ区切り) |
| `visibleAccts` | 対象ユーザー[acct](../resources/glossary/#acct)(カンマ区切り) |
:::warning
`visibility`に`specified`を指定した場合は、`visibleUserIds`または`visibleAccts`の指定も必要です。
:::
### 添付ファイル
以下のオプションで添付ファイルの指定を行えます。
| 名前 | 説明 |
| --------- | ------------------- |
| `fileIds` | 添付するファイルのID(カンマ区切り) |

View File

@ -0,0 +1,8 @@
# サイレンス
サイレンスは、アカウントに設定される状態のひとつです。
アカウントがサイレンス状態になると、ノートの公開範囲をパブリックにできなくなります。
ホーム、フォロワー、ダイレクトは選択可能なため、サイレンスを受けた場合でもフォロワーやあなたのユーザーページを直接訪れた場合は投稿を閲覧できますが、GTL(連合タイムライン)やLTL(ローカルタイムライン)には投稿が流れません。
アカウントのサイレンス状態は、サーバーのモデレーターによって有効化/無効化されます。

View File

@ -0,0 +1,110 @@
# テーマ
テーマを設定して、Misskeyクライアントの見た目を変更できます。
## テーマの設定
設定 > テーマ
## テーマを作成する
テーマコードはJSON5で記述されたテーマオブジェクトです。
テーマは以下のようなオブジェクトです。
```js
{
id: '17587283-dd92-4a2c-a22c-be0637c9e22a',
name: 'Danboard',
author: 'syuilo',
base: 'light',
props: {
accent: 'rgb(218, 141, 49)',
bg: 'rgb(218, 212, 190)',
fg: 'rgb(115, 108, 92)',
panel: 'rgb(236, 232, 220)',
renote: 'rgb(100, 152, 106)',
link: 'rgb(100, 152, 106)',
mention: '@accent',
hashtag: 'rgb(100, 152, 106)',
header: 'rgba(239, 227, 213, 0.75)',
navBg: 'rgb(216, 206, 182)',
inputBorder: 'rgba(0, 0, 0, 0.1)',
},
}
```
- `id` ... テーマの一意なID。UUIDをおすすめします。
- `name` ... テーマ名
- `author` ... テーマの作者
- `desc` ... テーマの説明(オプション)
- `base` ... 明るいテーマか、暗いテーマか
- `light`にすると明るいテーマになり、`dark`にすると暗いテーマになります。
- テーマはここで設定されたベーステーマを継承します。
- `props` ... テーマのスタイル定義。これから説明します。
### テーマのスタイル定義
`props`下にはテーマのスタイルを定義します。
キーがCSSの変数名になり、バリューで中身を指定します。
なお、この`props`オブジェクトはベーステーマから継承されます。
ベーステーマは、このテーマの`base`が`light`なら[\_light.json5][_light.json5]で、`dark`なら[\_dark.json5][_dark.json5]です。
つまり、このテーマ内の`props`に`panel`というキーが無くても、そこにはベーステーマの`panel`があると見なされます。
[_light.json5]: https://github.com/misskey-dev/misskey/blob/develop/packages/frontend/src/themes/_light.json5
[_dark.json5]: https://github.com/misskey-dev/misskey/blob/develop/packages/frontend/src/themes/_dark.json5
#### バリューで使える構文
- 16進数で表された色
- 例: `#00ff00`
- `rgb(r, g, b)`形式で表された色
- 例: `rgb(0, 255, 0)`
- `rgb(r, g, b, a)`形式で表された透明度を含む色
- 例: `rgba(0, 255, 0, 0.5)`
- 他のキーの値の参照
- `@{キー名}`と書くと他のキーの値の参照になります。`{キー名}`は参照したいキーの名前に置き換えます。
- 例: `@panel`
- 定数(後述)の参照
- `${定数名}`と書くと定数の参照になります。`{定数名}`は参照したい定数の名前に置き換えます。
- 例: `$main`
- 関数(後述)
- `:{関数名}<{引数}<{色}`
#### 定数
「CSS変数として出力はしたくないが、他のCSS変数の値として使いまわしたい」値があるときは、定数を使うと便利です。
キー名を`$`で始めると、そのキーはCSS変数として出力されません。
#### 関数
「ボタンの上にカーソルを合わせたときだけ色を明るくしたい」のように、既存の色から少し変更した色を使いたい場合に、関数を使うと便利です。
`:{関数名}<{引数}<{色や他のキーの参照}`の形で使うことができます。
```js
props: {
accent: '#86b300',
accentDarken: ':darken<10<#86b300',
accentLighten: ':lighten<10<@accent'
}
```
##### 使用できる関数
- `lighten` ... 渡された色の輝度(0 \~ 100)に対して引数(0 \~ 100)を加算した色を返します。
- `darken` ... 渡された色の輝度(0 \~ 100)に対して引数(0 \~ 100)を減算した色を返します。
- `alpha` ... 渡された色の透明度を引数(0.0 \~ 1.0)に設定した色を返します。
- 0.0のとき完全に透明、1.0で完全に不透明になります。
- `hue` ... 渡された色の色相(-360 \~ 360)に対して引数(-360 \~ 360)の値だけ回転させた色を返します。
- `saturate` ... 渡された色の彩度(0 \~ 100)に対して引数(0 \~ 100)を加算した色を返します。
## テーマを配布する
v2023.11.0以降では、あなたのウェブサイトから、ワンクリックでテーマを直接インストールできるようになっています。
テーマのインストール機能を提供する場合は、あなたのサイト上にAPIを実装する必要があります。詳しくは[こちら](../../for-developers/publish-on-your-website/)をご覧ください。

View File

@ -0,0 +1,15 @@
# スレッドミュート
:::tip
バージョン 12.95.0 以降の機能です。
:::
スレッドミュートは、指定したノートのスレッドをミュートします。スレッドとは、起点のノートから繋がった全てのリプライのことです。
スレッドをミュートすると、そのスレッドへの新たなリプライおよびリプライに含まれるあなた宛てのメンションが、通知されなくなるほか「あなた宛て」にも載らなくなります。
Misskey Webでスレッドをミュートするには、対象のスレッドに属する任意のートもしくは起点のートのメニューを開き、「スレッドをミュート」を選択します。
:::warning
スレッド内のどのノートからミュート操作を行ったかに関わらず、そのスレッド全体がミュートされます。
:::

View File

@ -0,0 +1,39 @@
# タイムライン
タイムラインは、[ノート](./note)が時系列で表示される機能です。
タイムラインには以下で示す種類があり、種類によって表示されるノートも異なります。
なお、タイムラインの種類によってはサーバーにより無効になっている場合があります。
## ホーム
自分のフォローしているユーザーの投稿が流れます。HTLと略されます。
## ローカル
全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。LTLと略されます。
## ソーシャル
自分のフォローしているユーザーの投稿と、全てのローカルユーザーの「ホーム」指定されていない投稿が流れます。STLと略されます。
## グローバル
全てのローカルユーザーの「ホーム」指定されていない投稿と、サーバーに届いた全てのリモートユーザーの「ホーム」指定されていない投稿が流れます。GTLと略されます。
## 比較
| ソース | | | タイムライン | | |
| ------------ | ----- | --- | ------ | ----- | ----- |
| ユーザー | 公開範囲 | ホーム | ローカル | ソーシャル | グローバル |
| ローカル (フォロー) | 公開 | ✔ | ✔ | ✔ | ✔ |
| | ホーム | ✔ | | ✔ | |
| | フォロワー | ✔ | | ✔ | |
| リモート (フォロー) | 公開 | ✔ | | ✔ | ✔ |
| | ホーム | ✔ | | ✔ | |
| | フォロワー | ✔ | | ✔ | |
| ローカル (未フォロー) | 公開 | | ✔ | ✔ | ✔ |
| | ホーム | | | | |
| | フォロワー | | | | |
| リモート (未フォロー) | 公開 | | | | ✔ |
| | ホーム | | | | |
| | フォロワー | | | | |

View File

@ -0,0 +1,154 @@
# Webhook
:::tip
バージョン 12.109.0 以降の機能です。
:::
:::warning
実験的な機能であるため、動作が不安定だったり今後仕様が変更される可能性があります。
:::
MisskeyにはWebhookが用意されています。Webhookを利用すると、Misskey上の様々なイベントをリアルタイムに受け取ることが可能です。
設定>Webhook でWebhookの管理を行えます。
Webhookが登録されると、指定したイベントが発生した際に、指定したURLにHTTPリクエストが送信されます。リクエストのメソッドはPOSTで、ボディはJSONです。
さらに、リクエストヘッダーには`X-Misskey-Hook-Secret`という名前で、登録時に設定したシークレットが含まれます。このシークレットが正しいか検証することで、リクエストが正規のものか判定することができます。
リクエストペイロードは以下のプロパティが入ります。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
hookId: {
type: 'string',
description: 'Webhook ID',
},
userId: {
type: 'string',
description: 'Webhook作成者のユーザーID',
},
eventId: {
type: 'string',
description: 'イベントのID',
},
createdAt: {
type: 'integer',
description: 'イベントが発生した日時(UNIX time、ミリ秒)',
},
type: {
type: 'string',
description: 'イベントの種類',
},
body: {
type: 'object',
description: 'イベントのペイロード',
},
}
}"/>
送信先サーバーが5xxエラーを返すか、応答しなかった場合は時間を開けてリクエストが再送されます。
Webhookは管理画面から個別にアクティブ状態を設定でき、一時的にリクエストの送信を停止させることができます。
## イベント
イベントごとに説明とペイロードを示します。
### follow
自分が誰かをフォローした際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
user: {
$ref: 'misskey://User',
description: 'フォローしたユーザー',
},
}
}"/>
### followed
自分が誰かからフォローされた際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
user: {
$ref: 'misskey://User',
description: 'フォローを行ったユーザー',
},
}
}"/>
### unfollow
自分が誰かをフォロー解除した際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
user: {
$ref: 'misskey://User',
description: 'フォロー解除したユーザー',
},
}
}"/>
### note
自分がノートを投稿した際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: '作成されたノート',
},
}
}"/>
### reply
自分のノートに返信された際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: '返信',
},
}
}"/>
### renote
自分のートがRenoteされた際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: 'Renote',
},
}
}"/>
### mention
自分にメンションされた際に発生します。
<MkSchemaViewerItemObject :schema="{
type: 'object',
properties: {
note: {
$ref: 'misskey://Note',
description: 'メンションを含むノート',
},
}
}"/>

View File

@ -0,0 +1,139 @@
# ウィジェット
ウィジェットは、MisskeyのUI上に設置できる小型の情報表示、操作が行えるパーツです。
ウィジェットを編集するには、ウィジェット編集モードに切り替えます。切り替え方法はUIによって異なります。
ウィジェット編集モードでは、ウィジェットの追加、削除、並び替え、およびそれぞれのウィジェットの設定を行えます。
## 利用可能なウィジェット一覧
- プロフィール
- サーバー情報
- 付箋
- タイムライン
- カレンダー
- RSSリーダー
- RSSティッカー
- トレンド
- 時計
- アクティビティ
- フォト
- デジタル時計
- UNIX時計
- 連合
- サーバークラウド
- 投稿フォーム
- スライドショー
- サーバーメトリクス
- オンラインユーザー
- ジョブキュー
- ボタン
- AiScriptコンソール
- AiScript App
- 藍
- ユーザーリスト
- クリッカー
### プロフィール
名前・ユーザー名・アバター画像・バナー画像を表示します。複数アカウントを使用している時に使用しているユーザー名が見やすくなります。
### サーバー情報
サーバー名・ドメイン・アイコン画像・バナー画像を表示します。
### 付箋
テキストを保存しておけます。
### タイムライン
ライムラインを表示します。ホーム・ローカル・ソーシャル・グローバルを切り替え表示できます。
### カレンダー
今日の年月日・曜日、今日・今月・今年をパーセント表示します。デフォルトUIでは最初から表示されています。
### RSSリーダー
RSS フィードタイトルを一覧表示します。
### RSSティッカー
RSS フィードを順次スクロール表示します。
### トレンド
最近よく使用されているハッシュタグを表示します。
### 時計
アナログ時計で現在時間を表示します。
### アクティビティ
稼働状況をドット表示します。
### フォト
最近のドライブ中身を表示します。
### デジタル時計
デジタル時計で現在時刻を表示します。
### UNIX時計
UNIX時間で現在時刻を表示します。
### 連合
主に通信している他のサーバーを表示します。
### サーバークラウド
他のサーバーを球状に表示します。
### 投稿フォーム
ノートを投稿するッフォーム を固定表示します。
### スライドショー
ドライブ内の特定フォルダ内を順次表示します。
### サーバーメトリクス
サーバのCPU・メモリ・ネット送受・ストレージ容量を表示します。サーバ環境によっては表示できない場合があります。
### オンラインユーザー
現在オンタイン状態になっているユーザー数表示します。
### ジョブキュー
他サーバーとの送受しているノートなどのキュー状態を表示します。
### ボタン
ボタンを表示します。動作は AIScript で記載していきます。
### AiScriptコンソール
AiScript を実行できるコンソールを表示します。
### AiScript App
AIScript ソースを用いてアプリを表示します。Misskey Play と同じ UI を使用できます。v13 より追加されています。
### 藍
藍を表示します。カーソルに合わせて視線を変えたりします。
### ユーザーリスト
リストを表示します。もっと! - リスト で設定できます。
### クリッカー
クッキーを表示します。表示されたクッキーをクリック・タップして下さい。

View File

@ -0,0 +1,23 @@
# ワードミュート
ワードミュートの設定をすると、条件に合致したノートが表示されなくなります。
ワードミュートには、ソフトワードミュートとハードワードミュートの2種類があります。それぞれについて設定の方法と挙動を説明します。
## ソフトワードミュート
ソフトワードミュートは、クライアント(アプリ)側でミュートを判断するワードミュートです。
ノートが設定した条件に合致すると、「(ユーザー名)が何かを言いました」という表示で隠れます。\
クリックすると元の通りに表示されます。
## ハードワードミュート
ハードワードミュートは、アンテナのようにサーバーが新しいノートの本文に対して条件に合致するかどうか判断し、タイムラインから対象となったノートを除外します。
つまり、ハードワードミュートには、以下のような特徴があります。
- 条件設定後、新しい投稿のみがミュートの対象になります。
- 条件を変更しても、過去にハードミュートされたノートはミュートされたままになります。
- 「○○が何かを言いました」でタイムラインが埋まることがありません。
- ソフトミュートに非対応のアプリでも、ハードミュートは適用されます。

View File

@ -0,0 +1,82 @@
---
description: 問題が発生したときは、まずこちらをご確認ください。
---
# トラブルシューティング
:::tip
[よくある質問](./faq.md)も合わせてお役立てください。
:::
問題が発生したときは、まずこちらをご確認ください。
該当する項目が無い、もしくは手順を試しても解決しない場合は、サーバーの管理者に連絡するか[不具合を報告](../../about-misskey/#議論に参加する)してください。
## クライアントが起動しない
ほとんどの場合、お使いのブラウザまたはOSのバージョンが古いことが原因です。
ブラウザおよびOSのバージョンを最新のものに更新してから、再度試してみてください。
これは稀ですが、それでも起動しない場合は、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。
## ページが読み込めない
クライアントが起動するもののページが読み込めないというエラーが出る場合は、ネットワークに問題がないか確認してください。また、サーバーがダウンしていないか確認してください。
これは稀ですが、キャッシュが原因の場合があります。ブラウザのキャッシュをクリアして、再度試してみてください。
まだ問題がある場合は、サーバーの問題と思われるのでサーバーの管理者に連絡してください。
## クライアントの動作が遅い
インターネットサービスプロバイダーの障害やメンテナンス予定の確認、ネットワークの通信速度の状態やネットワーク設定の確認、そしてサーバー側で何らかの障害やメンテナンスが発生しているかどうかを確認した上で、以下の設定を試すまたは確認してください:
1.Misskey Webの設定
メニューから設定を開き、クライアント設定の全般を開いて以下の設定を試してみてください。
- アピアランスの「UIのアニメーションを減らす」を有効にする
- アピアランスの「モーダルにぼかし効果を使用」を無効にする
- アピアランスの「システムデフォルトのフォントを使う」を有効にする
- アピアランスの「OSネイティブの絵文字を使用」を有効にする
以下の設定は、一部のMisskeyの機能が動かなくなることを了承した上で、試してみてください。
- 動作の「Pagesのスクリプトを無効にする」を無効にする
- アピアランスの「動きのあるMFMを無効にする」を有効にする
2.Webブラウザの設定
- お使いのWebブラウザの設定でハードウェアアクセラレーションを有効にする
- お使いのWebブラウザのアドオンや拡張機能の設定を確認するか、それらの機能をオフにする
- お使いのWebブラウザのその他の設定を確認する
3.その他
- お使いのPCやスマートフォンのシステム設定を確認する
## Misskey WebのUIの一部表示がおかしい(背景が透明になっている等)
アップデートによりUIの改修が行われたときに、テーマのキャッシュシステムの影響でそのような表示になることがあります。
クライアントの設定の「キャッシュをクリア」すると直ります。
:::warning
「クライアントの」キャッシュクリアです。「ブラウザの」キャッシュクリアは行わないでください。
:::
## 通知やアンテナ等の点滅が消えない
点滅は、未読のコンテンツがあることを示しています。通常点滅が消えない場合は、コンテンツを遡ると未読なコンテンツが残っています。
すべて既読にしたと思われるのに、それでもなお点滅が続く場合(おそらく不具合と思われます)は設定から強制的にすべて既読扱いにすることができます。
## Renoteができない
公開範囲がフォロワー限定のートおよびDMはRenoteすることはできません。
## Misskey WebのUI上で特定の要素が表示されない
Webブラウザで広告ブロッカーなどのアドオンや拡張機能を使用していると、そのような不具合が発生することがあります。それらの設定を確認するか、オフにしてご利用ください。
## Misskey WebのUI上で未翻訳の部分がある
ほとんどの場合、Misskey WebのUIの翻訳が間に合っていないことが原因ですので、不具合ではありません。翻訳が終わるまで申し訳ありませんが、しばらくお待ちください。
もし、あなたがMisskeyの翻訳についてご興味があるなら[翻訳に参加](../../about-misskey/#テキストを翻訳する)していただくことは、もちろん可能です。

View File

@ -0,0 +1,22 @@
---
description: Misskeyを使うためのアプリを紹介します。
---
# アプリ
Misskeyを使うためのアプリクライアントを紹介します。
ブラウザからMisskeyサーバーにログインすると、タイムラインが表示されます。このとき表示されているのがMisskey唯一の公式クライアント、**Misskey Web**です。ブラウザで動くアプリですが、PWAにも対応しているので、モバイルOSのネイティブアプリのように動作させることもできます。詳しくは[こちら](TODO)をご覧ください。なお、Misskeyプロジェクトではネイティブアプリを開発していません。
Misskey Webに慣れてきたら、有志が開発する非公式アプリを試してみるのもいいでしょう。ここでは、広く使われているアプリを紹介しますアルファベット順
- **Kaiteki** (Web, Android, Windows, Linux): 幅広いプラットフォームで動作する。Mastodon, Pleroma, Twitterにも対応。[公式サイト](https://kaiteki.app)。[ソースコード](https://github.com/Kaiteki-Fedi/Kaiteki)。
- **Milktea** (Android): タイムラインや特定の検索結果にタブから素早くアクセスできる。他のユーザーにニックネームを与えることができる。[Google Play](https://play.google.com/store/apps/details?id=jp.panta.misskeyandroidclient)。[ソースコード](https://github.com/pantasystem/Milktea)。
- **Miria** (iOS, Mac, Android): タブにカスタム絵文字を設定できる機能や、MFMの入力補完等のMisskeyに特化した独自機能を持つ。[公式サイト](https://shiosyakeyakini.info/miria_web/index.html)。[App Store](https://apps.apple.com/jp/app/miria/id6449201469)。[Google Play](https://play.google.com/store/apps/details?id=info.shiosyakeyakini.miria)。[ソースコード](https://github.com/shiosyakeyakini-info/miria)
- **MissRirica** (iOS, Android): Misskey用iOS/Androidクライアント。ほぼMisskey Web(v13)のUI、Push通知が届く。[App Store](https://apps.apple.com/app/missririca/id1659214999)。[Google Play](https://play.google.com/store/apps/details?id=space.riinswork.missririca)。[ソースコード](https://github.com/fruitriin/missRirica-client)
- **Misscat** (iOS): スマホに適した直感的な操作性を提供することを目標に開発されている。[公式サイト](https://yuiga.dev/misscat/)。[App Store](https://apps.apple.com/app/id1505059993)。[ソースコード](https://github.com/YuigaWada/MissCat)。
- **SocialHub** (iOS): Misskey, Mastodon, Twitter, Slack, Tumblrにも対応した有料アプリ。[公式サイト](https://uakihir0.github.io/socialhub/)。[App Store](https://apps.apple.com/us/app/socialhub-socialmedia-client/id1474451582)。
- **ZonePane(ぞーぺん)** (Android): タイムラインやリスト、チャンネルをタブ化できる。既読管理が優秀。TwitterアプリTwitPaneのMisskey版でMastodonにも対応。 [Google Play](https://play.google.com/store/apps/details?id=com.zonepane)。
- **TootRain** (Mac): タイムラインやリストの投稿をリアルタイムに、コメント風に画面上に表示するMacアプリです。 [サイト](https://b123400.net/tootrain/ja)、[ソースコード](https://github.com/b123400/TootRain)。
とはいえ、Misskeyは活発に機能が更新されているため、最新の機能への対応が遅れることもあります。特にこだわりがなければMisskey Webの利用をおすすめします。

View File

@ -0,0 +1,33 @@
# プロジェクトへの寄付
Misskeyはビジネスではなく、利用は無料であるため、収益は皆様からの寄付のみです。(サーバーによっては広告収入を得ているような場合もありますが、それは運営者の収入であり直接開発者への収入にはなりません)
寄付をしていただければ、今後も開発を続けることが可能になり、プロジェクトへの貢献になります。以下の方法で受け付けています。
- 継続支援
- [Fanbox](https://syuilo.fanbox.cc/)
- [Patreon](https://www.patreon.com/syuilo)
- 単発支援
- Kyash: @syuilo
- [PayPal](https://paypal.me/syuilo)
- 仮想通貨: `0xF1121108E21C92aAC7814137DD67e0d48eAC7Fdc`
- [Amazonの欲しいものリスト](https://www.amazon.jp/hz/wishlist/ls/4JG4P6XKX9KD?ref_=wl_share)
:::tip
高額の寄付(例えば5万円以上)をされる場合は、PayPal等ですと手数料が高額になってしまいますので、Kyashをご検討いただくか、ご連絡いただければ銀行口座をお伝えいたします。
:::
:::tip
額に応じて以下の返礼を用意しています。
- 1,000円以上: お使いのmisskey.ioアカウントにmiバッジ付与
- 3,000円以上: ↑ + Misskeyのクレジットへのお名前の記載
- 10,000円以上: ↑ + Misskeyのクレジットへのお名前+任意のアイコンの掲載
:::
:::warning
**バッジ付与やクレジットへの記載は自動で行われないため、ご希望の方は寄付されたことが分かる情報を添えて@syuilo\@misskey.ioまでお申し付けください。**
(メンション気づかない場合があるので返信がなければ複数回メンションお願いします。また、misskey.io以外のサーバーからはメンション届かない場合があります)
:::
また、サーバーの運営者も、基本的には収益を得ていません。サーバーの運営にはコストがかかるので、運営者の支援をすることもご検討ください。
開発には直接関係しませんが、サーバーがあってこそのプロジェクトなので、運営が維持されるというのは開発と同じくらい重要なことです。

View File

@ -0,0 +1,78 @@
---
description: Misskeyを利用する際のよくある質問について掲載しています。
---
# よくある質問
ここではMisskeyを利用する際のよくある質問について掲載しています。<br>
Misskeyプロジェクト自体についてのよくある質問は[こちら](../../about-misskey#よくある質問)をご覧ください。
## Android/iOSのアプリはありますか
MisskeyプロジェクトではそういったモバイルOS向けのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。詳しくは[こちら](./apps)をご覧ください。<br>
ただ、サードパーティ製アプリはMisskeyの最新機能への対応がどうしても遅れてしまうため、特にこだわりがなければMisskey公式のWebクライアント、Misskey Webの利用をおすすめします。なお、Misskey WebはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。詳しくは[こちら](todo)をご覧ください。
## Mastodon向けのアプリでログインできますか
MisskeyはMastodonのAPIと互換性がないため、一部を除いてサードパーティー製のMastodon向けのアプリやWebクライアントなどではMisskeyを利用することはできません。<br>
Misskey公式のWebクライアント、Misskey Webをご利用ください。
## misskey.ioはMisskeyプロジェクトの公式サーバーですか
misskey.ioはMisskey公式サーバーではなく、またMisskeyプロジェクトには含まれません。misskey.ioは特定のテーマを持たず汎用的で、かつ気軽に登録できる、Misskeyで最も規模の大きいサーバーです。
## 株式会社MisskeyHQとの関係は
株式会社MisskeyHQは、misskey.ioの運営を目的とした会社です。そのため、Misskey開発プロジェクトとの直接的な関係はありません。
ただし、Misskeyプロジェクトリーダーであるsyuiloも役員として参加しており、協力してMisskeyを発展させていく関係です。
## 「Misskey」の名前の由来は何ですか
メイン開発者のsyuiloがその名前を考えていたときに偶然聴いていた、May'nの楽曲『Brain Diver』の歌詞から採られています。
## 他のMisskey・PleromaサーバーやMastodonサーバーなどのユーザーをフォローするには
メニューから検索を選び、ユーザーアカウントを以下の形式で入力します。ユーザーアカウントは、ユーザー名とユーザーが属するサーバーまたはサーバーのホスト名を含めたものになります。Misskeyに限らずMastodonやPleromaなどの多くの分散型ソフトウェアでは、以下の様なユーザーアカウントの形式が一般的です。<br>
ユーザーアカウントの形式: `@ユーザー名@Misskey・PleromaサーバーやMastodonサーバーのホスト名`<br>
ユーザーアカウントの例: `@syuilo@misskey.io`<br>
ユーザーアカウントの形式は全ての分散型ソフトウェアで共通ではありませんが、この形式によって、様々な分散型ソフトウェアが実装された他のサーバーやサーバーのユーザーをフォローすることができます。
## Renoteを削除するには
Renoteの時刻表示の隣にある「...」を押し、「Renote解除」を選択します。<br>
Renoteについて詳しくは[こちら](../features/note/#renote)をご覧ください。
## ート内のURLのプレビューを表示させたくない
MFM(Markup language For Misskey)というMisskey独自のマークアップ言語には、URLのプレビューを無効にする構文があります。詳しくはMFMチートシートをご覧ください。MFMチートシートは、あなたが属するサーバーで次のアドレスを入力すると見ることができます。`https://あなたのサーバーのホスト名/mfm-cheat-sheet`
## カスタム絵文字を追加、編集、削除したい
あなたが属するサーバーの管理者のみが、カスタム絵文字を追加、編集、削除できます。それらを希望する場合は、サーバー管理者に直接連絡してください。
## Botを開発したい
Misskey APIを利用したBotの開発が可能です。詳しくは[こちら](../../for-developers/api/)をご覧ください。
## ノートの翻訳機能はどのサービスを使用していますか?
機械翻訳サービスの[DeepL翻訳](https://www.deepl.com/)を使用しています。
## サーバーを作成しましたが、電気通信事業の届出は必要ですか?
### 短い答え
**ビジネス目的**で運営するのであれば、**はい**。そうでなければ、**いいえ**。
### 長い答え
「事業者」の定義は、[総務省のドキュメント](https://www.soumu.go.jp/main_content/000477428.pdf)によると「サービスの提供により、その対価として料⾦を徴収することにより収益を得ようとする者」とされています。したがって、ビジネスとして収益を得る目的でサーバーを運営しない限り届出は必要ありません。そのため、寄付や広告などで収益があったとしても、あくまでもサーバーの運営費に充てるための収益なのであれば届出が必要な事業者には該当しません。(総務省に確認済み)<br>
詳しくは総務省の[電気通信事業参入マニュアル](https://www.soumu.go.jp/main_content/000477428.pdf)などの資料をご覧いただくか、総務省までお問い合わせください。
## 名称に「Misskey」を含むサービスを公開しても良いですか
「Misskey」はMisskeyプロジェクトによる登録商標(日本)ですが、名称に「Misskey」を含む(例: Misskey Tools等)サービスを公開しても問題ありません。
また、その場合でも使用料の徴収などを行う予定もありません。

View File

@ -0,0 +1,128 @@
---
description: Misskeyに関する用語集です。
---
# 用語集
Misskeyに関する用語集です。
## Acct
特定のユーザーを示す`@username@host`形式の文字列。メンションをする際などに使われます。
## ActivityPub
(読み: あくてぃびてぃぱぶ)<br>
Fediverseと呼ばれる、非中央集権型で連合したソーシャルネットワークを形成するために用いられる、オープン標準のプロトコル(仕様)。このプロトコルに則ってサーバー同士が接続され、コンテンツや通知などの情報を相互のサーバーでやり取りします。Fediverseのネットワークを形成するために欠かせません。
## AiScript
(読み: あいすくりぷと)<br>
Misskeyで使用できる、JavaScript上で動作するプログラミング言語です。詳しくは[こちら。](https://github.com/aiscript-dev/aiscript/blob/master/README.md)
## API
(読み: えーぴーあい)<br>
Misskeyのサーバーが公開している、プログラムからMisskeyを扱うためのインターフェース。詳しくは[こちら。](../../for-developers/api)
## Bot
(読み: ぼっと)<br>
プログラムによって動作しているアカウントです。
## CW
(読み: こんてんつわーにんぐ)<br>
Contents Warningの略。ートの内容を、操作なしには表示しないようにできる機能。主に長大な内容を隠すためや、ネタバレ防止などに使われます。詳しくは[こちら。](../features/note/#cw)
## Fediverse
(読み: ふぇでぃばーす)<br>
「Federated(Federation)」と「Universe」を組み合わせた造語。Misskeyを含む、様々な分散型ソフトウェアを実装したサーバーで構成された、非中央集権的で連合したソーシャルネットワーク。Misskey以外の分散型ソフトウェアとしては、MastodonやPleromaやPixelfedなどがあります。
## GTL
グローバルタイムライン(Global TimeLine)の略。タイムラインについて、詳しくは[こちら。](../features/timeline)
## HTL
ホームタイムライン(Home TimeLine)の略。タイムラインについて、詳しくは[こちら。](../features/timeline)
## LTL
ローカルタイムライン(Local TimeLine)の略。タイムラインについて、詳しくは[こちら。](../features/timeline)
## MFM
(読み: えむえふえむ)<br>
Markup language For Misskeyの略で、Misskey上で使用できるマークアップ言語です。詳しくは[こちら。](../features/mfm)
## Misskey Web
(読み: みすきーうぇぶ)<br>
Misskey公式のWebクライアント(インターフェイス)。MisskeyサーバーにPC・スマートフォンなどのWebブラウザからアクセスすると、自動的に表示されます。
## NSFW
(読み: のっとせーふふぉーわーく)<br>
Not Safe For Workの略。画像を「センシティブ」扱いにし、操作なしには表示しないようにすることができる機能です。
## Renote
(読み: りのーと)<br>
既にあるノートを引用、もしくはそのノートを新しいノートとして共有する行為、またそれによって作成されたノート。詳しくは[こちら。](../features/note/#renote)
## STL
ソーシャルタイムライン(Social TimeLine)の略。タイムラインについて、詳しくは[こちら。](../features/timeline)
## 藍
(読み: あい)<br>
Misskeyの看板娘(公式キャラクター)です。詳しくは[こちら。](https://xn--931a.moe/)
## サーバー
todo
## カスタム絵文字
各Misskeyサーバーの管理者やユーザーによって独自に作られる絵文字。カスタム絵文字ではない通常の絵文字は「Unicode絵文字」と区別して呼ばれます。詳しくは[こちら。](../features/custom-emoji)
## コントロールパネル
Misskeyサーバーの設定画面のことを指します。
## 凍結
(読み: とうけつ)<br>
アカウントが使用不可に設定されている状態を指します。
## ドライブ
Misskeyのサーバーでユーザーがアップロードした画像や音楽などのファイルを管理する機能です。詳しくは[こちら。](../features/drive)
## ノート
Misskeyのサーバー上でユーザーが投稿する文章のこと。画像や音楽などのファイル、アンケートなど、Misskey独自の様々なコンテンツを含めることができます。詳しくは[こちら。](../features/note)
## ミスキスト
Misskeyのサーバーにアカウントを持つユーザー。またはその中でもヘビーユーザーを指す言葉です。
## モデレーター
スパムの凍結およびサイレンスや不適切な投稿の削除など、サーバーの運営に関する権限を持つユーザー。多くの場合、サーバー管理者がサーバー内でモデレーターを募集して採用します。
## リモート
他サーバーやサーバーのことを指します。リモートユーザーといったように接頭辞としても使われます。ローカルの逆です。
## 連合
(読み: れんごう)<br>
複数のサーバーやサーバー同士が相互に接続され、コンテンツや通知などの情報を相互のサーバーやサーバーでやり取りする集合体を意味します。
## ローカル
自サーバーのことを指します。ローカルユーザー、ローカルタイムラインといったように接頭辞としても使われます。リモートの逆です。

View File

@ -0,0 +1,14 @@
# Misskey Hubについて
Misskey Hubは、Misskeyに関するナレッジなどのドキュメント、開発ブログ、プラグインストアなどを提供するMisskeyのオフィシャルサイトです。
「Misskeyの全てがここにある」を目指しています。
Misskey Hubも[オープンソースで公開されています。](https://github.com/misskey-dev/misskey-hub)
:::tip
Misskey HubはNuxtを使ってビルドされた静的サイトです。
:::
## Misskey Hubに貢献する
ドキュメントの追加や、翻訳など歓迎です。

View File

@ -0,0 +1,9 @@
---
description: サーバー管理者向けの機能の説明です。
---
# サーバーの機能
Misskeyではサーバー運営に役立つ様々な機能が提供されています。
<MkIndex :sort="(a, b) => b.name - a.name"></MkIndex>

View File

@ -0,0 +1,26 @@
# お知らせ
お知らせ(announcement)はMisskeyで利用可能なサーバー機能のひとつです。
お知らせ機能を使用すると、ユーザーにサーバー全体のお知らせを掲示することができるほか、ユーザー個別にサーバーからのメッセージを送ることができます。
:::warning
アクティブなお知らせの数が多いと、特に新規ユーザーの確認作業が増え、UXが低下する可能性があります。その場合、以下のオプションを検討できます。
- 「既存ユーザーのみ」オプションを有効にしてお知らせを作成する
- 「非通知」オプションを有効にしてお知らせを作成する
- 終了したお知らせはアーカイブする
:::
## 表示形式
お知らせの表示形式を以下の種類から選択することができます。
- **通常** ... お知らせ一覧ページにお知らせが掲載されます。
- **バナー** ... お知らせ一覧ページへの掲載に加えて、クライアントの画面上部にバナーとして表示されます。
- **ダイアログ** ... お知らせ一覧ページへの掲載に加えて、クライアント起動時にモーダル ダイアログとして表示されます。
- ダイアログ形式のお知らせが同時に2つ以上ある場合、UXに悪影響を及ぼす可能性が非常に高いため、使用は慎重に行うことを推奨します。
## お知らせの作成
TODO

View File

@ -0,0 +1,19 @@
# Fan-out Timeline Technology (FTT)
FTTはMisskeyで利用可能なサーバー機能のひとつです。
有効にすると、各種タイムラインを取得する際のパフォーマンスが大幅に向上し、データベースへの負荷を軽減することが可能です。ただし、Redisのメモリ使用量は増加します。サーバーのメモリ容量が少ない場合、または動作が不安定な場合は無効にすることができます。
コントロールパネル → 全般 から設定を行えます。
## データベースへのフォールバック
- 有効にすると、タイムラインがキャッシュされていない場合にDBへ追加で問い合わせを行うフォールバック処理を行います。
- 無効にすると、フォールバック処理を行わないことでさらにサーバーの負荷を軽減することができますが、タイムラインが取得できる範囲に制限が生じます。
## FTTが適用可能なタイムライン
- ホームライムライン
- ローカルタイムライン
- ソーシャルタイムライン
- ユーザーリストタイムライン

View File

@ -0,0 +1,97 @@
# ロール
ロールはユーザーに割り当てることのできる属性で、ロールごとにバッジを表示させたりポリシー設定でユーザーの権限を調整したりできます。
ユーザーのロール割り当て(アサイン)は手動で行うことも、条件を指定して自動で行うようにすることもできます。
ロールは一人のユーザーに対して複数アサインすることができます。
## ベースロール
全てのユーザーにデフォルトで適用されるポリシーの設定はベースロールの設定で行うことができます。
ベースロールの設定はコントロールパネルの「ロール→ベースロール」で行えます。
## アサインの種類
アサイン方法はマニュアルまたはコンディショナルから選択できます。
- **マニュアル** ... 手動でユーザーをアサインしたりアサイン解除します。(マニュアル ロール)
- アサインする期間を設定することも可能です。
- **コンディショナル** ... 条件を設定し、それに合致するユーザーが自動で含まれるようになります。(コンディショナル ロール)
:::warning
コンディショナル ロールは、マニュアル ロールと比較して以下の制限があります。
- 手動でのアサイン/アサイン解除は行えません。
- 指定したコンディショナル ロールに含まれるユーザー一覧を取得することはできません。
:::
## 権限
ロールの基本的な権限は以下から選択できます。
- **一般ユーザー** ... 特別な権限はありません。
- **モデレーター** ... 基本的なモデレーションに関する操作を行えます。
- **管理者** ... サーバーの全ての設定を変更できます。
より詳細な権限はポリシーの設定で行います。
## ポリシー
ロールのポリシーを調整して、権限や機能の制限を変更できます。
ポリシーはベースロールに設定された値を継承するように設定することもできます。
### 優先度
複数のロールが割り当てられていて、同じポリシーがそれぞれ異なる値で定義されている場合に、他の定義よりどれくらい優先するかを設定できます。
優先度を高く設定するほど他の定義より優先されます。
優先度はポリシーごとの設定であり、ロールごとの設定ではありません。また、ベースロールでは設定できません。
**優先度が同じ場合、デフォルトで最も大きい、または最も権限が広い値が選択されます。**
:::tip
例えば、ユーザーにロールAとロールBがアサインされていて、ロールAのドライブ容量ポリシーが 500MB、ロールBのドライブ容量ポリシーが 300MB に定義されている場合、
- 優先度が同じ、もしくはロールAのドライブ容量ポリシーの優先度の方が高い場合 500MB の値が採用されます。
- ロールBのドライブ容量ポリシーの優先度の方が高い場合 300MB の値が採用されます。
また、ユーザーにロールCとロールDがアサインされていて、ロールCのパブリック投稿可否ポリシーが「いいえ」、ロールDのパブリック投稿可否ポリシーが「はい」に定義されている場合、
- 優先度が同じ、もしくはロールDのパブリック投稿可否ポリシーの優先度の方が高い場合「はい」の値が採用されます。
- ロールCのパブリック投稿可否ポリシーの優先度の方が高い場合「いいえ」の値が採用されます。
:::
### ベースロールの値を使用
この設定をオンにすると、ポリシーの値をベースロールから継承します。
## ロールの作成
コントロールパネルの「ロール」から新しいロールを作成することができます。
## ロール情報の確認、編集、および削除
コントロールパネルの「ロール」で行うことができます。
## ユーザーへのロールのアサイン、アサイン解除
ユーザーの「モデレーション→ロール」で行うことができます。
また、ユーザーのメニューから直接アサインすることもできます。
アサインする際にアサインされる期間を設定することが可能です。
:::tip
ロールのアサイン/アサイン解除が反映されるまで時間がかかることがあります。
:::
:::warning
コンディショナル ロールには手動でのアサインはできません。
:::
## ユーザーのポリシーの確認
ユーザーの「モデレーション→概要→ポリシー」で行うことができます。

View File

@ -0,0 +1,29 @@
---
description: Misskeyサーバーの作成方法についての案内です。
---
# Misskeyサーバーの作成
Misskeyサーバーの構築に関心をお寄せいただきありがとうございます。サーバーの作成方法はいくつかあるので、下記から選んでガイドをお読みください。
:::danger
一度使用を始めたサーバーのドメイン・ホスト名では、データベースを作り直さないでください!
:::
:::warning
自分のサーバーに対して Cloudflare を使用する場合、 Auto Minify 設定は使用しないようにしてください。
Misskeyのソースコードは既にMinifyされているため意味がないばかりでなく、Cloudflare が最新の JavaScript を解釈せず、中のソースコードを破壊するため、Misskey が正常に動作しません。
詳しくは [misskey-dev/misskey #9791](https://github.com/misskey-dev/misskey/issues/9791) をご覧ください。
:::
## Xserver VPSでインストール
[Xserver VPS](https://vps.xserver.ne.jp/)では標準でMisskeyのアプリイメージが提供されているため、簡単にMisskeyサーバーを作成することが可能です。
詳細については、[「Misskeyアプリイメージを利用する」](https://vps.xserver.ne.jp/support/manual/man_server_app_use_misskey.php)をご覧ください。
## インストール方法一覧
<MkIndex />

View File

@ -0,0 +1,265 @@
# Misskey install shell script v3.0.0
Misskeyを簡単にインストールするためのシェルスクリプトができました
いくつかの質問に答えるだけで、UbuntuサーバーへMisskey(v12)を簡単にインストールできます!
また、アップデートスクリプトもあります。
[v12の場合はこちら](https://github.com/joinmisskey/bash-install/blob/a096e874f93d493aa68975a31be9ce12d644e767/README.md)\
[**English version**](./README.en.md)
## ライセンス
[MIT License](./LICENSE)
## 準備するもの
1. ドメイン
2. Ubuntuがインストールされたサーバー
3. Cloudflareアカウント推奨
:::danger
一度使用を始めたサーバーのドメイン・ホスト名では、データベースを作り直さないでください!
:::
Let's Encryptの認証を試行できる回数が少ないので、サーバーのネットワークやDNSの設定を十分確認してからインストールを開始してください。
## Cloudflareの設定
Cloudflareを使う場合、Cloudflareのドメインの設定を完了してからインストールを開始するようにしてください。\
ネームサーバーの適用には最大で3日程度かかる場合があります。
また、nginxとCloudflareを設定する場合、Cloudflareの設定画面にて、
- DNSを設定してください。
- SSL/TLS設定にて、暗号化モードを「フル」に設定してください。
## 操作
### 1. SSH
サーバーにSSH接続します。\
(サーバーのデスクトップを開いている方はシェルを開きましょう。)
### 2. 環境を最新にする
すべてのパッケージを最新にし、再起動します。
```
sudo apt update; sudo apt full-upgrade -y; sudo reboot
```
### 3. インストールをはじめる
SSHを接続しなおして、Misskeyのインストールを始めましょう。
ただ、インストール前に[Tips](#tips)を読むことを強くお勧めします。
```
wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/ubuntu.sh -O ubuntu.sh; sudo bash ubuntu.sh
```
example.comは自分のドメインに置き換えてください。
### 4. アップデートする
アップデートのためのスクリプトもあります。
アップデートスクリプトは、環境のアップデートは行いません。CHANGELOG日本語および[GitHubのリリース一覧英語](https://github.com/joinmisskey/bash-install/releases)を参考に、適宜マイグレーション操作を行なってください。
まずはダウンロードします。
```
wget https://raw.githubusercontent.com/joinmisskey/bash-install/main/update.ubuntu.sh -O update.sh
```
アップデートしたいときにスクリプトを実行してください。
```
sudo bash update.sh
```
- systemd環境では、`-r`オプションでシステムのアップデートと再起動を行うことができます。
- docker環境では、引数に更新後のリポジトリ名:タグ名を指定することができます。
## 動作を確認した環境
### Oracle Cloud Infrastructure
このスクリプトは、Oracle Cloud InfrastructureのAlways Freeサービスで提供されている2種類のシェイプのいずれにおいても動作します。
- VM.Standard.E2.1.Micro (AMD)
- VM.Standard.A1.Flex (ARM) \[1OCPU RAM6GB or greater]
iptablesを使うようにしてください。
## Issues & PRs Welcome
上記の環境で動作しない場合、バグの可能性があります。インストールの際に指定された条件を記載の上、GitHubのIssue機能にてご報告いただければ幸いです。
上記以外の環境についてのサポートは難しいですが、状況を詳しくお教えいただければ解決できる可能性があります。
機能の提案についても歓迎いたします。
# Tips
選択肢の選び方や仕様についてなど。
## Systemd or Docker?
v1から、インストールメソッドにsystemdとDockerとを選べるようにしました。
Dockerと言っても、**MisskeyだけをDockerで実行**し、RedisやPostgresなどはホストで直接実行します。\
[docker-composeですべての機能を動かす方法については、mamemonongaさんが作成したこちらの記事がおすすめです。](https://gist.github.com/mamemomonga/5549bb69cad8e5618e5527593d4890e0)
Docker Hubイメージを使う設定であれば、Misskeyのビルドが不要になるため、**一番お勧めです**。\
ただし、マイグレーションは必要なので、アップデート時にMisskeyを使えない時間がゼロになるわけではありません。\
また、Misskeyのビルド環境を準備しない(git pullしない)ので、フォークを動かしたくなった時に設定が面倒になります。
ローカルでDockerをビルドする方式は、パフォーマンス面で非推奨です。
systemdは、Docker Hubにイメージを上げるまでもないものの、フォークを使いたい場合にお勧めです。
お勧めする順番は次の通りです。
1. Docker Hub
2. systemd
3. Dockerビルド
## nginxを使うかどうか
サーバー1台でMisskeyを構築する場合は、nginxの使用をお勧めします。
ロードバランサーを設置する場合にはnginxをインストールせず、[Misskeyのnginx設定](../resources/nginx/)を参考にロードバランサーを設定するのがよいと思います。
## Add more swaps!
スワップを設定している場合、メモリが合計で3GB以上でなければスクリプトが動作しないようになっています。
## 途中で失敗してまたスクリプトを実行する場合
万が一途中で失敗してもう一度スクリプトを動作させる場合、次のことに注意してください。
- RedisやPostgresのインストールが終わっている場合、「install locally」はNoにしてください。\
host・port設定はそのままEnterを押します。
ユーザー名やパスワードは、前回実行した際に指定したものを入力します。
## .envファイルについて
インストールスクリプトは、2つの.envファイルを作成します。\
アップデートの際に使用します。
### /root/.misskey.env
misskeyを実行するユーザーを覚えておくために必要です。
### /home/(misskeyユーザー)/.misskey.env
systemdの場合に生成されます。\
主にディレクトリを覚えておくのに使用します。
### /home/(misskeyユーザー)/.misskey-docker.env
Dockerの場合に生成されます。\
実行されているコンテナとイメージの番号を保存しています。\
コンテナの番号はアップデートの際に更新されます。古いイメージは削除されます。
## 自分で管理する
インストール後、構成を変更する際に役立つかもしれないメモです。
"example.com"を自分のドメインに置き換えて読んでください。
### Misskeyディレクトリ
Misskeyのソースは`/home/ユーザー/ディレクトリ`としてcloneされます。\
ユーザー、ディレクトリの初期値はともにmisskeyです。
Misskeyディレクトリへは、以下のように移動するとよいでしょう。
```
sudo -iu ユーザー
cd ディレクトリ
```
もとのユーザーに戻るにはexitを実行します。
```
exit
```
### systemd
systemdのプロセス名はexample.comです。\
たとえば再起動するには次のようにします。
```
sudo systemctl restart example.com
```
journalctlでログを確認できます。
```
journalctl -t example.com
```
設定ファイルは`/etc/systemd/system/example.com.service`として保存されています。
### Docker
DockerはMisskeyユーザーでrootless実行されています。
sudo でMisskeyユーザーに入るときは、`XDG_RUNTIME_DIR`と`DOCKER_HOST`を変更する必要があります。
```
sudo -iu ユーザー
export XDG_RUNTIME_DIR=/run/user/$UID
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock
# プロセス一覧を表示
docker ps
# ビルド (リポジトリ: local/misskey:latest)
docker build -t local/misskey:latest ./misskey
# docker run
docker run -d -p 3000:3000 --add-host=docker_host:10.0.0.1 -v /home/misskey/misskey/files:/misskey/files -v "/home/misskey/misskey/.config/default.yml":/misskey/.config/default.yml:ro --restart unless-stopped -t "local/misskey:latest"
# ログを表示
docker logs --tail 50 -f コンテナID
```
ワンライナーなら次のようにします。
```
sudo -u ユーザー XDG_RUNTIME_DIR=/run/user/$(id -u ユーザー) DOCKER_HOST=unix:///run/user/$(id -u ユーザー)/docker.sock docker ps
```
### nginx
nginxの設定は`/etc/nginx/conf.d/example.com.conf`として保存されています。
### Redis
requirepassとbindを`/etc/redis/misskey.conf`で設定しています。
## Q. アップデート後に502でアクセスできない
Dockerでは、起動後にマイグレーションをするため、すぐにアクセスできません。\
マイグレーションが終わっているかどうか確認してみてください。
systemdの場合では、pnpm installに失敗している可能性があります。
Misskeyディレクトリで次の内容を実行し、もう一度アップデートを実行してみてください。
```
pnpm run clean-all
```
journalctlでログを確認すると、たいていre2が云々という記述が見当たります。
## Q. 同じサーバーにもう1つMisskeyを建てたい
スクリプトは同じサーバーに追加でMisskeyをインストールすることは想定していません。\
幾つかの設定が上書きされるか、途中でエラーになってしまうでしょう。

View File

@ -0,0 +1,81 @@
---
description: このガイドはDockerを使ったMisskeyセットアップ方法を説明します。
---
# Docker Composeを使ったMisskey構築
このガイドはDocker Composeを使ったMisskeyセットアップ方法を説明します。
:::danger
一度使用を始めたサーバーのドメイン・ホスト名では、データベースを作り直さないでください!
:::
:::tip{label='前提条件'}
- DockerおよびDocker Composeがインストールされていること。
:::
## リポジトリの取得
```sh
git clone -b master https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master
```
## 設定
下記コマンドで、各種設定ファイルのサンプルをコピーします。
```sh
cp .config/docker_example.yml .config/default.yml
cp .config/docker_example.env .config/docker.env
cp ./docker-compose.yml.example ./docker-compose.yml
```
`default.yml`と`docker.env`をファイル内の説明に従って編集してください。\
また、必要に応じて、`docker-compose.yml`を編集します。(ポートを変更したい場合など)
## ビルドと初期化
次のコマンドでMisskeyのビルドとデータベースの初期化を行います。
これにはしばらく時間がかかります。
```shell
sudo docker compose build
sudo docker compose run --rm web pnpm run init
```
## 起動
お疲れ様でした。以下のコマンドでMisskeyを起動できます。
```sh
sudo docker compose up -d
```
GLHF✨
## Misskeyのアップデート方法
:::warning
アップデートの際は必ず[リリースノート](https://github.com/misskey-dev/misskey/blob/master/CHANGELOG.md)を確認し、変更点や追加で必要になる作業の有無(ほとんどの場合ありません)を予め把握するようにしてください。
:::
```sh
git stash
git checkout master
git pull
git submodule update --init
git stash pop
sudo docker compose build
sudo docker compose stop && sudo docker compose up -d
```
アップデート内容、およびデータベースの規模によっては時間がかかることがあります。
## cliコマンドを実行する方法
```sh
sudo docker compose run --rm web node packages/backend/built/tools/foo bar
```

View File

@ -0,0 +1,57 @@
# Kubernetes/TrueNASを使ったMisskey構築
このガイドでは、Kubernetes と HelmChartを使用したMisskeyセットアップ方法について説明します。
:::danger
一度使用を始めたサーバーのドメイン・ホスト名では、データベースを作り直さないでください!
:::
## TrueCharts と TrueNAS Scale
MisskeyのHelmChartsはTrueNAS Scaleで使用するためのTrueChartsで公開されていますが、HelmChartsとしてインストールすることもできます。
[TrueCharts](https://truecharts.org/charts/description_list) のサイトには利用可能なすべてのChartsやインストール方法などのドキュメントがあります。
また、不明な点があればTrueChartsの[Discord](https://discord.gg/Ax9ZgzKx9t)サーバーで質問をすることもできます。
現在、Misskeyは_incubator_ trainで進行中です。
:::前提条件
- TrueNAS Scale
または
- KubernetesクラスターとHelm
:::
## TrueNAS Scale
[TrueCharts Guide](https://truecharts.org/manual/guides/Adding-TrueCharts/)の手順に従ってください。
_incubator_ trainを追加し、Misskeyをインストールします。
設定の URL の欄は必ず変更してください。
TrueChartsはデフォルトでTraefikを使用してサービスをHTTPSで外部に公開しますが、手動ですることにより他のソフトウェアを使用することもできます。
## Helmを使用して手動で構築
TrueNAS Scaleを使用していない場合はHelmを使用して、Misskeyをインストールすることができます。
values.yamlの `misskey:``url:` を必ず書き換えてください。
他の個所は、必要に応じて書き換えてください。
このChartでは現在Misskeyコンテナ内でTLSを有効にすることに対応していないので、サーバーへのアクセスを保護したい場合はリバースプロキシを使用することが推奨されています。
```
helm repo add TrueCharts https://charts.truecharts.org
helm repo update
helm install misskey TrueCharts/misskey
```
## Misskey のアップグレード
Misskey をアップグレードするには、TrueNAS Scale に内蔵されているアップグレード機能を使用するか、kubernetes を手動で実行している場合は [helm repo update](https://helm.sh/docs/helm/helm_repo_update/) または [helm upgrade](https://helm.sh/docs/helm/helm_upgrade/) を使用することができます。
問題が発生する可能性も考え、アップグレード前にデータをバックアップすることを強くお勧めします。

View File

@ -0,0 +1,163 @@
---
description: このガイドではMisskeyのインストール・セットアップ方法について解説します。
---
# Misskeyを手動で構築する
このガイドではMisskeyのインストール・セットアップ方法について解説します。
:::danger
一度使用を始めたサーバーのドメイン・ホスト名は、決して変更しないでください!
:::
:::tip{label='前提条件'}
#### 以下のソフトウェアがインストール・設定されていること
- **[Node.js](https://nodejs.org/en/)** (20.4.x以上)
- **[PostgreSQL](https://www.postgresql.org/)** (15以上)
- **[Redis](https://redis.io/)**
- **[FFmpeg](https://www.ffmpeg.org/)**
Debian/Ubuntuをお使いであれば、`build-essential`パッケージをインストールしておくと良いです。
#### corepackが有効化されていること
```sh
sudo corepack enable
```
:::
## ユーザーの作成
Misskeyはrootユーザーで実行しない方がよいため、代わりにユーザーを作成します。
Debianの例:
```sh
adduser --disabled-password --disabled-login misskey
```
## Misskeyのインストール
```sh
sudo -iu misskey
git clone --recursive https://github.com/misskey-dev/misskey.git
cd misskey
git checkout master
git submodule update --init
NODE_ENV=production pnpm install --frozen-lockfile
```
## 設定
設定サンプルの`.config/example.yml`をコピーし、`default.yml`にリネームします。
```sh
cp .config/example.yml .config/default.yml
```
`default.yml` をファイル内の指示に従って編集します。
## ビルドと初期化
次のコマンドでMisskeyのビルドとデータベースの初期化を行います。
これにはしばらく時間がかかります。
```sh
NODE_ENV=production pnpm run build
pnpm run init
```
## 起動
お疲れ様でした。以下のコマンドでMisskeyを起動できます。
```sh
NODE_ENV=production pnpm run start
```
GLHF✨
::::g-details{summary="systemdを用いた管理"}
systemdサービスのファイルを作成
`/etc/systemd/system/misskey.service`
エディタで開き、以下のコードを貼り付けて保存:
```ini
[Unit]
Description=Misskey daemon
[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=journal
StandardError=journal
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
```
:::warning
CentOSで1024以下のポートを使用してMisskeyを使用する場合は`ExecStart=/usr/bin/sudo /usr/bin/npm start`に変更する必要があります。
:::
systemdを再読み込みしmisskeyサービスを有効化
```sh
sudo systemctl daemon-reload
sudo systemctl enable misskey
```
misskeyサービスの起動
```sh
sudo systemctl start misskey
```
:::tip
`systemctl status misskey`と入力すると、サービスの状態を調べることができます。
:::
::::
## Misskeyのアップデート方法
:::warning
アップデートの際は必ず[リリースノート](https://github.com/misskey-dev/misskey/blob/master/CHANGELOG.md)を確認し、変更点や追加で必要になる作業の有無(ほとんどの場合ありません)を予め把握するようにしてください。
:::
masterをpullし直し、インストール、ビルド、データベースのマイグレーションを行います:
```sh
git checkout master
git pull
git submodule update --init
NODE_ENV=production pnpm install --frozen-lockfile
NODE_ENV=production pnpm run build
pnpm run migrate
```
アップデート内容、およびデータベースの規模によっては時間がかかることがあります。
アップデートが終わり次第、Misskeyプロセスを再起動してください。
```sh
sudo systemctl restart misskey
```
:::tip
ビルドや起動時にエラーが発生した場合は、以下のコマンドをお試しください:
- `pnpm run clean`または`pnpm run clean-all`
- `pnpm rebuild`
:::

View File

@ -0,0 +1,619 @@
# Ubuntu版Misskeyインストール方法詳説
## その他のMisskeyインストール方法
- [基本版 Misskey構築の手引き (manual)](./manual/)
- [その他のインストール方法一覧](/docs/for-admin/install/guides/#インストール方法一覧)
## シェルスクリプトのお知らせ
コピペばかりならシェルスクリプトでいいじゃん、と言うことで**シェルスクリプトでほぼ全部やってくれるやつを作ってみました!**\
[**シェルスクリプトの詳細と使用方法はこちらから!**](./bash/)
:::tip
シェルスクリプトでの開発環境へのインストールは想定されていません。
:::
:::tip
ドメインの購入とCloudflareのセットアップ、サーバーの確保についてはご自身でご準備ください。
:::
不具合があれば[ @aqz@p1.a9z.dev へのメンション](https://p1.a9z.dev/@aqz)にてお知らせいただければと思います。
## この記事について
この記事では、[Misskey構築の手引き (manual)](./manual/)で紹介されている通り、systemdでMisskeyを動作させています。
[docker-compose](./docker/)なら、手作業でももうちょっと簡単に実行できるはずです。
:::danger
一度使用を始めたサーバーのドメイン・ホスト名では、データベースを作り直さないでください!
:::
## はじめに
この記事では、[Misskey構築の手引き (manual)](./manual/)を基に、一般的なUbuntuサーバーへMisskeyをインストールし公開する方法の一挙手一投足を解説する。
Bashのコマンド入力、いくつかの設定ファイルの編集、そしてブラウザの操作だけで設定が完了するようにしている。インストールするソフトウェアについて簡単に説明しているが、気にする必要はない。
この記事では、具体性を重視し、特定の環境に特化した記述をしている。
OSの違い、Misskey本体や依存するソフトウェアのバージョンアップで変わってしまった部分等があるかもしれないが、ご容赦いただきたく思う。
わからない単語については、[『「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典』](https://wa3.i-3-i.info/) で調べて分かった気になってほしい。
## 環境と条件
- OSは**Ubuntu 22.04.1 LTS**を利用する。
- ハードウェア要件としては、CPUは最近のものなら最小限で動く。アーキテクチャはamd64及びarm64を想定している。
- メモリは1.5GB程度あればよい。Viteの導入等により、1.5GB程度でもビルド可能になった)
- 独自のドメインを購入し、CloudFlareを使用する。
- ドメインは[Google Domains](https://domains.google/intl/ja_jp/)などで予め用意しておくこと。
- ここではドメインをexample.tldとして解説を進めるので、自分が買ったドメインに適宜置き換えて読むこと。開発環境の場合はlocalhostと読み替えます設定ファイルの項で別途説明
:::danger
一度使用を始めたサーバーのドメイン・ホスト名は、決して変更しないでください!
:::
## nanoの使い方
今回はテキストエディターにnanoを使う。次のように起動する。
```sh
nano /path/to/file
```
一般的な矢印ボタンやHome/Endなどを利用してカーソルを移動できる。
終了はCtrl+Xで、変更を保存するか聞かれた場合Y(Yes)を入力しEnterすると保存できる。
下部にコマンド一覧が表示されるので、^をCtrl、M-をAltと読み替えて参考にしよう。
## ユーザーの作成
Misskeyはrootで実行しない方がよいため、専用のユーザーを作成する。
```sh
sudo adduser --disabled-password --disabled-login misskey
```
:::tip
開発環境の場合はユーザーを分ける必要はありません
:::
## 基本的なソフトウェアのインストールと設定
基本的なソフトウェアのインストールを行う。
### Node.js
Node.jsは、サーバーサイドJavaScript環境であり、Misskeyの基本的な実行環境である。
```sh
sudo apt install -y curl
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs
# Node.jsがインストールされたので、バージョンを確認する。
node -v
# corepack enable
sudo corepack enable
```
v20.x.xなどと表示されればOK。v8.x.xのように低いバージョンが表示された場合は、正しくインストールが行えていないため、サーバーを再起動してもう一度インストールし直すなどしてみよう。
### PostgreSQL
PostgreSQLは、オブジェクト関係データベース管理システムであり、Misskeyの種々のデータを保存するために必要不可欠なソフトだ。
#### インストール
シェルスクリプトを実行し、最新バージョンv15をインストールしよう。
```sh
sudo apt install -y postgresql-common
sudo sh /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh -i -v 15;
# systemctlでデーモンの状態を確認。
systemctl status postgresql
```
activeならOK。
#### ユーザーとデータベースの作成
psqlを起動。
```sh
sudo -u postgres psql
```
Misskeyで使うユーザーを作成する。\
ユーザー名をmisskey、パスワードをhogeとする場合は次のようになる。\
LinuxのユーザーとPostgreSQLのユーザーは別物なので、混同しないよう注意すること。
```sql
CREATE ROLE misskey LOGIN PASSWORD 'hoge';
```
データベースを作成。データベース名をmk1としている。
```sql
CREATE DATABASE mk1 OWNER misskey;
¥q
```
### Redis
Redisは、NoSQLのインメモリデータベースソフトであり、データベースや連合との通信を管理するなどのために必要だ。
redis.ioのドキュメントに従いインストールする。 https\://redis.io/docs/getting-started/installation/install-redis-on-linux/
```sh
sudo apt install -y curl ca-certificates gnupg2 lsb-release
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt update
sudo apt install -y redis
```
systemctlでデーモンの状態を確認。
```sh
systemctl status redis-server
```
activeならOK。
### nginx
nginxは、主としてリバースプロキシに用いられるWebサーバーソフトである。Misskeyには必須ではないが、キャッシュ等をするとパフォーマンスが向上したり、httpからhttpsへの転送などをするために、インストールしておこう。
:::tip
開発環境の場合はnginxのセットアップは不要です
:::
nginx.orgのドキュメント http\://nginx.org/en/linux\_packages.html#Ubuntu に従ってインストールする。
```sh
sudo apt install ubuntu-keyring
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
gpg --dry-run --quiet --no-keyring --import --import-options import-show /usr/share/keyrings/nginx-archive-keyring.gpg
```
このとき出力に 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 とあるか確認する。
```sh
echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" | sudo tee /etc/apt/preferences.d/99nginx
sudo apt update
sudo apt install -y nginx
```
systemctlでデーモンの状態を確認。
```sh
systemctl status nginx
```
activeならOK。そうでなければ、次のコマンドを実行。
```sh
sudo systemctl start nginx
sudo systemctl enable nginx
```
http\://localhost にアクセスし、\*Welcome to nginx!\*と表示されればOK。\
curlで確認するのもよいだろう。
```sh
curl http://localhost
```
### その他
Gitバージョン管理ソフトおよびbuild-essentialMisskeyのビルド時に必要をインストールする。
```sh
sudo apt update
sudo apt install -y git build-essential
```
## 追加の設定とインストール
サーバーをインターネットに公開する準備をする。
:::tip
開発環境の場合はファイヤーウォールやCloudFlare、Certbotの設定は不要です
:::
### ファイヤーウォール
今回は、ファイヤーウォールとしてufwを使用する。
次では、接続許可をホワイトリスト形式とし、22番SSHポートを接続回数制限を設けながら開放、80番HTTPポート及び443番HTTPSポートを開放とした。
```sh
sudo ufw enable
sudo ufw default deny
sudo ufw limit 22
sudo ufw allow 80
sudo ufw allow 443
```
ufwのステータスを確認しておく。
```sh
sudo ufw status
```
systemctlで永続化する。
```sh
sudo systemctl enable ufw
```
:::tip
ufwは、netfilter(iptables)を人間が操作しやすいようにするアプリだ。インストールスクリプトは、OCI環境ではnetfilterを直接操作する。
:::
### CloudFlare
CloudFlareは、自分のドメインに対してDNSサーバー・リバースプロキシ・CDNをいっぺんに提供してくれるたいへん便利なサービスである。\
CloudFlareを経由せずにサーバーを公開することも可能だが、たいへん便利なので導入することをお勧めする。
[**→ CDNの設定**](../resources/cdn/)
[CloudFlareにサインアップ](https://dash.cloudflare.com/sign-up) し、購入したドメインを案内に従って登録する。
DNSの登録画面でサーバーのIPアドレスを入力しておくとよい。
ドメインを購入した所によっては適用に3日程度かかる場合がある。
### Certbot (Lets Encrypt) の設定
HTTPS・WSS通信に使用する証明書をCloudFlareを使う方式でLets Encryptから取得する。
certbotとCloudFlareプラグインをインストール
```sh
sudo apt install -y certbot python3-certbot-dns-cloudflare
```
CloudflareのAPIキーを取得する。以下の手順で取得されたい。
1. https\://dash.cloudflare.com/profile/api-tokens にアクセス
2. Global API KeyのViewを選択
3. パスワードを入力しhCaptchaを解除、Viewを選択
CloudFlareの情報を記載した設定ファイル/etc/cloudflare/cloudflare.iniを作成する。
```sh
mkdir /etc/cloudflare
nano /etc/cloudflare/cloudflare.ini
```
dns\_cloudflare\_email下の例ではbar\@fuga.fooにはCloudFlareで登録しているメールアドレスを設定する。
```sh
dns_cloudflare_email = bar@fuga.foo
dns_cloudflare_api_key = xxxxxxxxxxxxxxxxxxxxxxxxxx
```
これを保存し、パーミッションを600に設定。
```sh
sudo chmod 600 /etc/cloudflare/cloudflare.ini
```
準備ができたのでコマンドを実行する。**途中の2箇所のexample.tldは自分のものに置き換えること**。
```sh
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /etc/cloudflare/cloudflare.ini --dns-cloudflare-propagation-seconds 60 --server https://acme-v02.api.letsencrypt.org/directory -d example.tld -d *.example.tld
```
\*Congratulations!\*と表示されたらOK。生成された.pemファイルのパスは今後使うので記録しておくこと。
自動更新の設定はインストールと同時に行われているため不要。
## Misskeyのインストール
これで前準備はあらかた終わったので、Misskeyを準備していく。
misskeyユーザーに変更。
```sh
sudo su - misskey
```
Gitでファイル類を展開。
```sh
git clone -b master https://github.com/misskey-dev/misskey.git --recurse-submodules
cd misskey
git checkout master
```
必要なnpmパッケージをインストール。
```sh
NODE_ENV=production pnpm install --frozen-lockfile
```
## Misskeyを設定する
### default.yml
設定ファイル.config/default.ymlを作成。
```sh
nano .config/default.yml
```
次の内容を貼り付け、適宜置き換える。設定値の変更が必要な箇所は●で、これまでの流れの中で設定した値を用いる箇所は〇で示した。
この設定ファイルはYAML形式で書かれており、行頭のスペースの数などを間違えるとMisskeyが動かないので、特に注意すること。
設定できる値と記述方法は[.config/example.yml](https://github.com/syuilo/misskey/blob/develop/.config/example.yml)に書かれている。
:::tip
開発環境の場合、urlは`url: http://localhost:3000`と指定します。
:::
```yml
# ● Misskeyを公開するURL
url: https://example.tld/
# ポートを3000とする。
port: 3000
# ● PostgreSQLの設定。
db:
host: localhost
port: 5432
db : mk1 # PostgreSQLのデータベース名
user: misskey # PostgreSQLのユーザー名
pass: hoge # ● PostgreSQLのパスワード
#   Redisの設定。
redis:
host: localhost
port: 6379
#   IDタイプの設定。
id: 'aid'
#   syslog
syslog:
host: localhost
port: 514
```
指定できたら保存する。
### nginxの設定
nginxの設定を行う。
ルート権限で行う。
```sh
exit
```
/etc/nginx/conf.d/misskey.confを作成する。
```sh
sudo nano /etc/nginx/conf.d/misskey.conf
```
[Misskey Hub](https://misskey-hub.net/docs/admin/nginx/)の設定例をnanoへコピーペーストし、次の部分を自分のものに書き換える。
- 18行目と30行目のドメイン名
- 34-35行目の証明書へのパスをCertbotで取得したものに (基本的にexample.tldを置き換えるだけでOK)
- 56行目 (If it's behind another reverse proxy or CDN, remove the following.) から4行を削除
変更を保存する。
設定ファイルがきちんと機能するか確認。
```sh
sudo nginx -t
```
OKならば、nginxデーモンを再起動。
```sh
sudo systemctl restart nginx
```
ステータスを確認。
```sh
sudo systemctl status nginx
```
activeであればOK。
## Misskeyのビルド
misskeyユーザーにログインし直す。
```sh
sudo su - misskey
```
ビルドをする。yes we can…
```sh
cd misskey
NODE_ENV=production pnpm run build
```
:::tip
開発環境の場合、`NODE_ENV=production`は不要です。以降のコマンドでも同様に削除してください。
:::
### サーバーでビルドできない場合
RAMの不足が考えられる。
Misskeyのビルドやデータベースのマイグレーション初期化を含むには、RAMが2GB以上必要になっている。\
RAMが足りない場合、以下のような解決策が考えられる。
- サーバーにスワップを追加する
- ローカルでビルドしたものbuiltディレクトリをsftpで転送する
## データベースの初期化
```sh
pnpm run init
```
## Misskeyを起動する
```sh
NODE_ENV=production pnpm run start
```
**Now listening on port 3000 on** [**http://example.tld**](http://example.tld) と表示されたら、設定したURLにアクセスする。
Misskeyのウェルカムページが表示されるはずだ。
アカウントの作成、ノートの作成やファイルのアップロードといった一通りの操作が正しく行えるか確認しよう。
### アクセスできない場合
#### CloudFlareのDNSを確認する
CloudFlareのDNS設定が正しいIPアドレスになっているかもう一度確認しよう。
#### ルーターの設定を確認する
自宅サーバーの場合、ルーターがサーバーと外部との80ポート・443ポートの通信を許可する設定になっているかどうか確認しよう。
クラウドの場合でも、ネットワーク設定でポート開放が必要な場合が多い。
## Misskeyのデーモンを作成
:::tip
開発環境の場合、デーモンの作成は不要です。
:::
いったんCtrl+Cでプロセスをキルし、Misskeyをデーモンで起動する設定をしよう。
ルート権限で行う。
```sh
exit
```
/etc/systemd/system/misskey.serviceを作成する。
```sh
sudo nano /etc/systemd/system/misskey.service
```
次の内容を貼り付け、保存する。
```ini
[Unit]
Description=Misskey daemon
[Service]
Type=simple
User=misskey
ExecStart=/usr/bin/npm start
WorkingDirectory=/home/misskey/misskey
Environment="NODE_ENV=production"
TimeoutSec=60
StandardOutput=journal
StandardError=journal
SyslogIdentifier=misskey
Restart=always
[Install]
WantedBy=multi-user.target
```
systemdを設定し、misskeyデーモンを開始。
```sh
sudo systemctl daemon-reload
sudo systemctl enable misskey
sudo systemctl start misskey
```
systemctlでデーモンの状態を確認。起動に少し時間がかかるため、15秒程度待ってからのほうが良い。
```sh
sudo systemctl status misskey
```
activeならOK。
**これでMisskeyのインストールはほぼ完了だ。**
Misskeyサーバーに自分のアカウントを登録・ログインし、設定を続けよう。
## Misskeyの設定を続ける
- [**Misskeyサーバーで最初に設定するべきサーバー設定とその他設定の説明**](https://hide.ac/articles/Y504SIabp)
- [**Squidプロキシを設定してMisskeyを守る**](https://hide.ac/articles/MC7WsPDqw)
- [**Misskeyのデータベースをバックアップしよう【OCIオブジェクトストレージ編】**](https://hide.ac/articles/E2Ea3cauk)
## Misskeyのアップデート
[Misskeyのアップデート方法](./manual/#misskeyのアップデート方法)
作業中はMisskeyを使うことができません。
```sh
sudo systemctl stop misskey
su - misskey
git pull;
NODE_ENV=production pnpm install --frozen-lockfile
pnpm run clean;
NODE_ENV=production pnpm run build;
pnpm run migrate;
exit
```
### Case 1: apt upgradeをする場合
```sh
sudo apt update -y
sudo apt full-upgrade -y
sudo reboot
```
再起動後はMisskeyは自動で起動します。
### Case 2: そのまま起動
```sh
sudo systemctl start misskey
```

View File

@ -0,0 +1,21 @@
# CDNの設定
Misskeyサーバーを公開するときは、[Cloudflare](https://www.cloudflare.com/)などのCDNを使用することを強くおすすめします。
CDNを使用することで、以下のようなメリットがあります。
- 静的なコンテンツをキャッシュしてもらうことができ、サーバーの負荷が低減する
- サーバーのIPアドレスが露出しにくくなることで、DoS攻撃などを緩和できる
## キャッシュ
Misskey Webは、完全に静的であり、動作にサーバーを必要としません。したがってMisskey Web全体をCDNでキャッシュすることができます。
Misskey APIはキャッシュすることはできません。
CDNで以下の設定を行なってください。
- `/api/*`以外のリクエストをすべてキャッシュする
:::tip
Misskeyをアップデートした際にキャッシュのクリアは不要です。
:::

View File

@ -0,0 +1,88 @@
# Nginxの設定
1. `/etc/nginx/conf.d/misskey.conf`もしくは`/etc/nginx/sites-available/misskey.conf`を作成し、下の設定例をコピーします。\
ファイル名はmisskeyでなくても構いません。
2. 次のように編集します。
1. example.tldを自分が用意したドメインに置き換えます。\
`ssl_certificate`と`ssl_certificate_key`はLet's Encryptで取得した証明書のパスになるようにします。
2. CloudflareなどのCDNを使う場合は、「If it's behind another reverse proxy or CDN, remove the following.」から4行を削除します。
3. `/etc/nginx/sites-available/misskey.conf`を作成した場合は、`/etc/nginx/sites-enabled/misskey.conf`としてシンボリックリンクを作成します。\
`sudo ln -s /etc/nginx/sites-available/misskey.conf /etc/nginx/sites-enabled/misskey.conf`
4. `sudo nginx -t` で設定ファイルが正常に読み込まれるか確認します。
5. `sudo systemctl restart nginx` でnginxを再起動します。
## 設定例
```nginx
# For WebSocket
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=cache1:16m max_size=1g inactive=720m use_temp_path=off;
server {
listen 80;
listen [::]:80;
server_name example.tld;
# For SSL domain validation
root /var/www/html;
location /.well-known/acme-challenge/ { allow all; }
location /.well-known/pki-validation/ { allow all; }
location / { return 301 https://$server_name$request_uri; }
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.tld;
ssl_session_timeout 1d;
ssl_session_cache shared:ssl_session_cache:10m;
ssl_session_tickets off;
# To use Let's Encrypt certificate
ssl_certificate /etc/letsencrypt/live/example.tld/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.tld/privkey.pem;
# To use Debian/Ubuntu's self-signed certificate (For testing or before issuing a certificate)
#ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
#ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
# SSL protocol settings
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_stapling on;
ssl_stapling_verify on;
# Change to your upload limit
client_max_body_size 80m;
# Proxy to Node
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_redirect off;
# If it's behind another reverse proxy or CDN, remove the following.
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
# For WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# Cache settings
proxy_cache cache1;
proxy_cache_lock on;
proxy_cache_use_stale updating;
proxy_force_ranges on;
add_header X-Cache $upstream_cache_status;
}
}
```

View File

@ -0,0 +1,27 @@
# GitHub Actionsを使用してDocker Hubへpushする方法
[/.github/workflows/docker.yml](https://github.com/misskey-dev/misskey/blob/develop/.github/workflows/docker.yml) に\
GitHub ActionによりDocker Hubへpushするワークフローが記述されています。
オリジナルリポジトリでは、リリースされたタイミングで `latest`, `<リリース名>` それぞれのタグでDocker Hubにpushされます。\
※ Docker Hub に`<ブランチ名>`のようなタグがあるかもしれませんが、こちらは自動push対象ではありません。
Fork先でこのワークフローを実行すると失敗します。
以下では、Fork先で自分のDocker Hubリポジトリにpushするようにする方法を記述します。
## 自分のDocker Hubリポジトリにpushするように設定する方法
1. Docker Hubでリポジトリを作成します。
2. ワークフローファイルの [images](https://github.com/misskey-dev/misskey/blob/53f3b779bf16abcda4f6e026c51384f3b8fbcc62/.github/workflows/docker.yml#L20) を作成したリポジトリに置き換えます。
3. GitHubにて [暗号化されたシークレット](https://docs.github.com/ja/actions/reference/encrypted-secrets#creating-encrypted-secrets-for-a-repository) を作成します。\
作成が必要なのは `DOCKER_USERNAME``DOCKER_PASSWORD` で、それぞれDocker Hubのユーザーとパスワードになります。
## pushする方法
上記設定によりリリース時に自動的にDocker Hubにpushされるようになります。\
具体的には、GitHubのリリース機能でリリースしたタイミングで `latest`, `<リリース名>` それぞれのタグでDocker Hubにpushされます。
また、GitHub上から手動でpushすることも出来ます。\
それを行うには、Actions => Publish Docker image => Run workflow からbranchを選択してワークフローを実行します。\
ただし、この場合作成されるタグは`<ブランチ名>`になります。

View File

@ -0,0 +1,69 @@
# Misskeyサーバーのスケールアウト
サーバーの利用者が増えるにしたがって、サーバーマシンのスペックを強化したり台数を増やして負荷に対応する必要が生じます。この記事ではMisskeyサーバーのスケールアウトに関するTipsを紹介します。
## PostgreSQLのレプリケーション
PostgreSQLのレプリケーションを行うと、データベースの負荷を複数のサーバーマシンに分散させることができます
レプリケーションについての詳細はPostgreSQLのドキュメントを参照してください。
MisskeyではPostgreSQLのレプリケーションに対応しており、configファイルで以下のように設定します。(一部抜粋)
```yml
# レプリケーションを使用する場合は true にします
dbReplications: true
# リードレプリカのリストをここで設定します(いくつでも設定可能)
dbSlaves:
-
host: foo
port: 5432
db: misskey
user: xxxxx
pass: xxxxx
-
host: bar
port: 5432
db: misskey
user: xxxxx
pass: xxxxx
```
このように設定すると、Misskeyがデータベースに対してreadクエリを発行するとき設定した`dbSlaves`の中からランダムにreadレプリカ選択してクエリを送信するようになり、データベースの負荷が分散されます。
## 役割に応じたRedisの分割
Misskeyは以下のように様々な用途でRedisを使用します。
- ジョブキューの管理
- レートリミットの管理
- キャッシュ
- 通知などの情報の保存
- グローバルなイベントのPub/Sub
Misskeyでは、これらの用途ごとに異なるRedisサーバーを使用するように設定することができ、負荷を複数のサーバーマシンに分散させることができます。
configファイルで以下のように設定します。(一部抜粋)
```yml
redisForPubsub:
host: foo
port: 6379
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
#pass: example-pass
#prefix: example-prefix
#db: 1
redisForJobQueue:
host: bar
port: 6379
#family: 0 # 0=Both, 4=IPv4, 6=IPv6
#pass: example-pass
#prefix: example-prefix
#db: 1
```
現在設定可能なのはメインのRedisに加えて上記のように「グローバルなイベントのPub/Sub」と「ジョブキューの管理」用のRedisです。
## リモートのチャートの無効化
個々のリモートユーザーのアクティビティなどのチャートや個々のリモートサーバーのチャートが必要無い場合、それらの生成を無効にするとパフォーマンスが向上します。
コントロールパネルから、「リモートユーザーのチャートを生成」および「リモートサーバーのチャートを生成」をオフにすることで無効にできます。

View File

@ -0,0 +1,263 @@
# マニュアルインストール時のトラブルシューティング
<small>2018年10月07日 / 2021年12月20日 最終更新 / 文責 aqz/tamaina</small>
MisskeyInstallBattle参加者が増えましたが、それに伴い時期を追うごとに重軽傷者が増加しています。\
この記事ではそのような負傷者を減らすため、過去に事故が起きてしまった個所の傾向と対策をわかりやすく解説します。
**まず最初に、[構築の手引き](../guides/manual/)を熟読してください。**
また、拙著の[Ubuntu向けsystemd版解説](https://hide.ac/articles/iFwm5HDvH)、[Oracle Cloud版詳細解説](https://hide.ac/articles/csERs-7SU)も参考までにお読みいただけると幸いです。
# Ubuntu向けシェルスクリプトのお知らせ
Ubuntu向け解説はコピペばかりでつまらない時間がかかるとにかく面倒
……あれ、コピペだけでできるなら、つまり完全自動化できるのでは?
というわけで、**シェルスクリプトでほぼ全部やってくれるやつを作ってみました!**\
[**詳細と使用方法はこちらから!** https://github.com/joinmisskey/bash-install#readme](https://github.com/joinmisskey/bash-install#readme)
ドメインの購入とCloudflareのセットアップ、サーバーの確保についてはご自身でご準備ください。
シェルスクリプトに不具合があれば[製作者(aqz)](https://p1.a9z.dev/@aqz)にお知らせいただければと思います。
# インストールとビルド
[構築の手引き](../guides/manual/)をよく読みましょう。
## ImageMagick関連
_**ImageMagickは不要です**_
## ビルドが失敗する
Misskeyのビルドには、経験則上、最低でも2GBのメモリが必要となっています。\
サーバーをスケールアップする手もありますが、お使いのPCでビルドしてサーバーにデプロイするという手もあります。
## なんだかうまくいかない
- [構築の手引き](../guides/manual/)をよく読みましょう。
- node.jsのバージョンが古いかも
- 新しめのバージョンにしましょう。
- インストールやビルドの際にErrorとかWARNとかが出てくることがありますが、問題ない場合もあります。とりあえず`npm start`して動作確認しちゃいましょう。
- node-gypがインストールされていないかも
- `apt install build-essential`を試す。
- Windowsは[この記事](https://qiita.com/AkihiroTakamura/items/25ba516f8ec624e66ee7)も参考にしてみる。
- これでもだめそうだったら、最初から[構築の手引き](../guides/manual/)の手順に従ってやり直してみてください。
## バージョンアップ後に不具合が発生した
- [構築の手引き](../guides/manual/)およびリリースノートをよく読みましょう。
- Misskeyのバージョンアップ時にはしっかり`pnpm install`や`pnpm run migrate`してください。それでも直らない場合、`pnpm run clean-all && pnpm install`を試し、`pnpm run build && pnpm run migrate && pnpm start`してみてください。
- これでもだめそうだったら、最初から[構築の手引き](../guides/manual/)の手順に従ってやり直してみてください。
***
# 設定
[構築の手引き](../guides/manual/)をよく読みましょう。
`.config/default.yml`で設定を行います。
[`.config/example.yml`](https://github.com/misskey-dev/misskey/blob/develop/.config/example.yml)をコピーし、コメントに従って記述します。
YAML形式では、`#`から行末まではコメントとして扱われます。)
## URLとポート番号
URLとポート番号のしくみは、少し分かりにくいと思います。
### URL, ポートとTLS証明書の設定Port and TLS settingspart A: example.ymlの解説
リビジョン番号[85a0f69](https://github.com/misskey-dev/misskey/blob/85a0f696bcea779b02749dae596fff94a1df2467/.config/example.yml)時点での[.config/example.yml](https://github.com/misskey-dev/misskey/blob/develop/.config/example.yml)に、「Port and TLS settings」として説明図付きで順に書かれていますので、それに沿って設定をしていきましょう。
本文の解説を日本語訳しながらやっていきます。
#### URLの設定
```yml
# Final accessible URL seen by a user.
# 最終的にユーザーがアクセスするURL
url: https://example.tld/
```
**`url: `には、サーバーにブラウザでアクセスしたときアドレスバーに表示される**(したい)**URLを書きます。**
#### ポートと証明書の設定
```yml
# ┌───────────────────────┐
#───┘ Port and TLS settings └───────────────────────────────────
#### ポートと証明書の設定 ####################################
#
# Misskey supports two deployment options for public.
# Misskeyは2つのサーバー開設方法をサポートしています。
#
# Option 1: With Reverse Proxy
# 方法その1 リバースプロキシを挟む
#
# +----- https://example.tld/ ------------+
# +------+ |+-------------+ +----------------+|
# | User | ---> || Proxy (443) | ---> | Misskey (3000) ||
# +------+ |+-------------+ +----------------+|
# +---------------------------------------+
#
# You need to setup reverse proxy. (eg. Nginx)
# この方法では、リバースプロキシ(例: Nginxをセットアップする必要があります。
# You do not define 'https' section.
# 'https'セクション(後述)は設定せず、コメントアウトしたままにします。
# Option 2: Standalone
# 方法その2 スタンドアロン
# (リバースプロキシを挟まず、nodeのプロセスで直接ユーザーからのアクセスを受ける)
#
# +- https://example.tld/ -+
# +------+ | +---------------+ |
# | User | ---> | | Misskey (443) | |
# +------+ | +---------------+ |
# +------------------------+
#
# You need to run Misskey as root.
# この方法では、Misskeyをルート(の権限をもたせた状態)で実行する必要があります。
# You need to set Certificate in 'https' section.
# 'https'セクション(後述)で証明書の設定を行う必要があります。
```
##### 方法1 リバースプロキシを挟むとき
```yml
# To use option 1, uncomment below line.
# オプション1で設定する場合、以下の行をコメントアウトします → しました
port: 3000 # A port that your Misskey server should listen.
```
以上の3行は、リバースプロキシを挟むときの話です。
この例では、Misskeyはポート3000で通信します。
リバースプロキシでは、ローカル側の宛先にこのポート番号を指定します。
##### 方法2 リバースプロキシを挟まないとき
```yml
# To use option 2, uncomment below lines.
# オプション2で設定する場合は、以下の6行をコメントアウトします → しました
port: 443
https:
# path for certification
key: /etc/letsencrypt/live/example.tld/privkey.pem
cert: /etc/letsencrypt/live/example.tld/fullchain.pem
```
以上の8行は、リバースプロキシを挟まないときの話です。
ポート443(https)で直接ユーザーと通信しますポート443を利用するのでMisskeyのプロセスにはルート権限が必要です
TLS証明書を別途取得し、取得した証明書のディレクトリを`https:`で設定します。
ここ書かれているのは、Let's Encryptで`example.tld`に対する証明書を発行したときの例です。
***
### URL, ポートとTLS証明書の設定Port and TLS settingspart B: 全体像
example.ymlの解説文を省くと、default.ymlにおけるポートとTLS証明書の設定は以下のようになります。
#### 方法1 リバースプロキシを挟むとき
```yml
url: https://example.tld/
port: 3000
# https:
# # path for certification
# key: /etc/letsencrypt/live/example.tld/privkey.pem
# cert: /etc/letsencrypt/live/example.tld/fullchain.pem
```
#### 方法2 リバースプロキシを挟まず直接通信するとき
```yml
url: https://example.tld/
# port: 3000
https:
# path for certification
key: /etc/letsencrypt/live/example.tld/privkey.pem
cert: /etc/letsencrypt/live/example.tld/fullchain.pem
```
***
# `npm start`やアクセス時によく遭遇するエラー
`npm start`でサーバーを立てられたものの、その後不具合に遭遇してしまう場合もあります。
まず、[構築の手引き](../guides/manual/)をよく読みましょう。
## YAMLのエラーが出る
`default.yml`の構文にミスがある可能性があります。
行頭に余分なスペースはありませんか?
## redisに接続できない
redis-serverは起動していますか
何らかの接続数の上限に達していませんか?
11.20.2より前のバージョンのMisskeyはredisのパスワードを解くことができません。以下の2点を確認してください。
- redisにパスワードを設定しない。
- `default.yml`の`redis:`の`pass:`の行をコメントアウトする。
## 上部に「開発ビルドです」と書かれた赤いバーが表示される
サーバーを公開する場合は必ずproductionビルドを使いましょう。
製品ビルドにするには、環境変数が`NODE_ENV=production`になるように設定し`npm run build && npm start`します。
## 新規登録できない
APIに接続できないようです。
`default.yml`の冒頭の`url:`が正しく設定されているか確認しましょう。
Node.jsのバージョンや、インストールの設定ももう一度よく確認しましょう。
また、正しく`default.yml`が書かれていますか?
## タイムラインの表示に問題が発生する、リアルタイムでTLが更新されない
タイムラインの読み込みに失敗する場合、mongoDBやPostgreSQLのバージョンが古い可能性があります。
PostgreSQLはなるべくv13にしてください。
redisの接続も確認した方がよいでしょう。 [→ redisに接続できない を参照](#redisに接続できない)
## 永遠に「再接続中」と右下に表示される、リアルタイムでTLが更新されない
プロキシを利用している場合、それがWebSocket通信を阻害している可能性が考えられます。
## オブジェクトストレージ使用時、不具合が出る
オブジェクトストレージの権限の設定が厳しくなっている可能性があります。「ファイル(オブジェクト)が誰でも取得可能」なように権限を設定してみてください。
また、`default.yml`をもう一度確認してみてください。
### S3 example (with CDN, custom domain)
S3 example (with CDN, custom domain)は、AWSのデフォルトのドメインではなく独自ドメインでストレージを公開したい場合の設定です。
endpointと公開ドメインが同じサービスの場合はS3 exampleのように`baseUrl`は明記しなくてよく、さらにregionの概念がないサービスの場合はregionの行は必要ありません。
### S3互換サービスでの設定
Misskeyではオブジェクトストレージの接続に[aws-sdk](https://www.npmjs.com/package/aws-sdk)を利用しています。
Amazon S3に互換性のあるオブジェクトストレージであれば利用できる可能性があります。
各サービス/ソフトウェアのドキュメントをよく読み、設定してみてください。
***
# まったく解決しなかった場合
以下の順序を試してみてください。
1. Misskeyのドキュメントをよく読む。
2. Googleで検索してみる。
3. [MisskeyリポジトリのIssues](https://github.com/misskey-dev/misskey/issues)を検索してみる同じエラーに遭遇している場合や、Misskeyのバグの可能性もあります
4. [Misskey Forum](https://forum.misskey.io/)を検索してみる。
5. 検索してどうしても見つからなかったら、専門家に質問してみてください。
1. Forumや[MisskeyのDiscordサーバー](https://discord.gg/P4yYqYBjEp)もしくは[「鯖缶工場」](https://discord.gg/mJJGAHv)で聞いてみる
2. 開発者([aqz](https://p1.a9z.dev/@aqz)やしゅいろ)にリプライやダイレクト投稿を送信して聞いてみる

View File

@ -0,0 +1,14 @@
# LTL/STL/GTLの無効化
Misskeyでは、LTL/STL/GTLをそれぞれ無効化することができます。有効/無効を切り替えるには、サーバーコントロールパネルで設定します。
LTLやSTLは、そのサーバー全員の投稿が見れるため、新規のユーザーにとってはユーザーを探す必要がなくなり、興味のあるユーザーを見つけやすいという利点があります。
しかし同時に、フォロー機能が活用されなくなったり、不適切な投稿が目につきやすくなったり、チャットのようになることで内輪感が生じて逆に新規ユーザーが参加しにくくなるといったデメリットも持ち合わせています。
サーバーによってメリット/デメリットどちらが優勢かは異なるので、オプションとして無効にできるようになっています。
もしデメリットの方が上回っていると感じたら、それらのタイムラインを無効化することも検討してください。
:::warning
無効化を行うと、ユーザーが困惑し、短期的に見て利用者が減る可能性があります。そのため、無効化の際は影響を慎重に検討し、事前に説明してフォローを整える期間を一定程度設けることを推奨します。
:::
なお、管理者/モデレーターは、これらのタイムラインの無効化状態は適用されず、引き続き利用することが可能です。

View File

@ -0,0 +1,14 @@
---
description: MisskeyはAPIを公開しています。APIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発することができます。
---
# Misskey API
MisskeyはAPIを公開しています。APIを使ってMisskeyクライアント、Misskey連携Webサービス、Bot等(以下「アプリケーション」と呼びます)を開発することができます。
ストリーミングAPIもあるので、リアルタイム性のあるアプリケーションを作ることも可能です。
:::tip
Misskey公式SDKやサードパーティライブラリを使うことによって、このドキュメントで説明するいくつかの手順を簡略化できるなど、より便利にAPIを利用することができます。\
:::
<MkIndex />

View File

@ -0,0 +1,33 @@
---
description: Misskey APIに関連するライブラリの一覧
---
# ライブラリの一覧
## JavaScript
- [misskey.js](https://github.com/misskey-dev/misskey.js)
## Java
- [misskey4j](https://github.com/uakihir0/misskey4j)
## Python
- [Misskey.py](https://github.com/YuzuRyo61/Misskey.py)
## .Net
- [Misq](https://github.com/syuilo/Misq)
## Dart / Flutter
- [misskey](https://github.com/misskey-dart/misskey)
## Go
- [go-misskey](https://github.com/yitsushi/go-misskey)
## Rust
- [misskey-rs](https://github.com/coord-e/misskey-rs)

View File

@ -0,0 +1,11 @@
---
description: アプリケーションが要求する権限の一覧
---
# 権限の一覧
:::tip
このページは[misskey-js](https://github.com/misskey-dev/misskey/tree/develop/packages/misskey-js)から自動生成しているため、ドキュメントや翻訳が不完全な場合があります。
:::
<ApiPermissions></ApiPermissions>

View File

@ -0,0 +1,213 @@
---
description: ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、リアクションされた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます。
---
# ストリーミングAPI
:::tip
最初に[Misskey API](../index.md)のドキュメントを読むことをお勧めします。
:::
ストリーミングAPIを使うと、リアルタイムで様々な情報(例えばタイムラインに新しい投稿が流れてきた、リアクションされた、フォローされた、など)を受け取ったり、様々な操作を行ったりすることができます。
## ストリームに接続する
ストリーミングAPIを利用するには、まずMisskeyサーバーに**websocket**で接続する必要があります。
以下の形式のURLにwebsocket接続します:
```
wss://{host}/streaming?i={token}
```
ここで、
- `{host}`の部分は、接続したいサーバーのホストに置き換えます。
- `{token}`の部分は、ユーザーのアクセストークンに置き換えます。
:::tip
アクセストークンは省略することもできますが、その場合非ログインでの利用ということになり、受信できる情報や可能な操作は限られます。
:::
ストリームに接続すると、後述投稿の購読を行ったりすることができますが、まだこの段階では、例えばタイムラインへの新しい投稿を受信したりすることはできません。
そのようなイベントを受信するには、ストリーム上で後述する**チャンネル**に接続する必要があります。
**ストリーム上のやり取りはすべてJSONで行われます。**
## チャンネル
MisskeyのストリーミングAPIにはチャンネルという概念があります。これは、送受信する情報を分離するための仕組みです。
ストリーム上でチャンネルに接続することで、様々な情報を受け取ったり情報を送信したりすることができるようになります。
:::tip
ひとつのストリーム接続上で、同時に複数のチャンネルに接続することができます。
:::
以下では、チャンネルの使用方法を説明します。どのようなチャンネルがあるかは、[チャンネル一覧](./channel/index.md)を参照してください。
### チャンネルに接続する
チャンネルに接続するには、次のようなデータをJSONでストリームに送信します:
```js
{
type: 'connect',
body: {
channel: 'xxxxxxxx',
id: 'foobar',
params: {
...
}
}
}
```
ここで、
- `channel`には接続したいチャンネル名を設定します。[チャンネル一覧](./channel/index.md)を参照してください。
- `id`にはそのチャンネルとやり取りするための任意のIDを設定します。ストリームでは様々なメッセージが流れるので、そのメッセージがどのチャンネルからのものなのか識別する必要があるからです。このIDは、UUIDや、乱数のようなもので構いません。
- `params`はチャンネルに接続する際のパラメータです。チャンネルによって接続時に必要とされるパラメータは異なります。パラメータ不要のチャンネルに接続する際は、このプロパティは省略可能です。
:::tip
IDはチャンネルごとではなく「チャンネルの接続ごと」です。なぜなら、同じチャンネルに異なるパラメータで複数接続するケースもあるからです。
:::
### チャンネルからのメッセージを受け取る
例えばタイムラインのチャンネルなら、新しい投稿があった時にメッセージを発します。そのメッセージを受け取ることで、タイムラインに新しい投稿がされたことをリアルタイムで知ることができます。
チャンネルがメッセージを発すると、次のようなデータがJSONでストリームに流れてきます:
```js
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
```
ここで、
- `id`には前述したそのチャンネルに接続する際に設定したIDが設定されています。これで、このメッセージがどのチャンネルからのものなのか知ることができます。
- `type`にはメッセージの種類が設定されます。チャンネルによって、どのような種類のメッセージが流れてくるかは異なります。
- `body`にはメッセージの内容が設定されます。チャンネルによって、どのような内容のメッセージが流れてくるかは異なります。
### チャンネルに向けてメッセージを送信する
チャンネルによっては、メッセージを受け取るだけでなく、こちらから何かメッセージを送信し、何らかの操作を行える場合があります。
チャンネルにメッセージを送信するには、次のようなデータをJSONでストリームに送信します:
```js
{
type: 'channel',
body: {
id: 'foobar',
type: 'something',
body: {
some: 'thing'
}
}
}
```
ここで、
- `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。これで、このメッセージがどのチャンネルに向けたものなのか識別させることができます。
- `type`にはメッセージの種類を設定します。チャンネルによって、どのような種類のメッセージを受け付けるかは異なります。
- `body`にはメッセージの内容を設定します。チャンネルによって、どのような内容のメッセージを受け付けるかは異なります。
### チャンネルから切断する
チャンネルから切断するには、次のようなデータをJSONでストリームに送信します:
```js
{
type: 'disconnect',
body: {
id: 'foobar'
}
}
```
ここで、
- `id`には前述したそのチャンネルに接続する際に設定したIDを設定します。
## 投稿のキャプチャ
Misskeyは投稿のキャプチャと呼ばれる仕組みを提供しています。これは、指定した投稿のイベントをストリームで受け取る機能です。
例えばタイムラインを取得してユーザーに表示したとします。ここで誰かがそのタイムラインに含まれるどれかの投稿に対してリアクションしたとします。
しかし、クライアントからするとある投稿にリアクションが付いたことなどは知る由がないため、リアルタイムでリアクションをタイムライン上の投稿に反映して表示するといったことができません。
この問題を解決するために、Misskeyは投稿のキャプチャ機構を用意しています。投稿をキャプチャすると、その投稿に関するイベントを受け取ることができるため、リアルタイムでリアクションを反映させたりすることが可能になります。
以下では、投稿のキャプチャ機能の使用方法を説明します。どのようなキャプチャイベントがあるかは、[キャプチャイベント一覧](./note-capture-events.md)を参照してください。
### 投稿をキャプチャする
投稿をキャプチャするには、ストリームに次のようなメッセージを送信します:
```js
{
type: 'subNote',
body: {
id: 'xxxxxxxxxxxxxxxx'
}
}
```
ここで、
- `id`にキャプチャしたい投稿の`id`を設定します。
このメッセージを送信すると、Misskeyにキャプチャを要請したことになり、以後、その投稿に関するイベントが流れてくるようになります。
例えば投稿にリアクションが付いたとすると、次のようなメッセージが流れてきます:
```js
{
type: 'noteUpdated',
body: {
id: 'xxxxxxxxxxxxxxxx',
type: 'reacted',
body: {
reaction: 'like',
userId: 'yyyyyyyyyyyyyyyy'
}
}
}
```
ここで、
- `body`内の`id`に、イベントを発生させた投稿のIDが設定されます。
- `body`内の`type`に、イベントの種類が設定されます。
- `body`内の`body`に、イベントの詳細が設定されます。
### 投稿のキャプチャを解除する
その投稿がもう画面に表示されなくなったりして、その投稿に関するイベントをもう受け取る必要がなくなったときは、キャプチャの解除を申請してください。
次のメッセージを送信します:
```js
{
type: 'unsubNote',
body: {
id: 'xxxxxxxxxxxxxxxx'
}
}
```
ここで、
- `id`にキャプチャを解除したい投稿の`id`を設定します。
このメッセージを送信すると、以後、その投稿に関するイベントは流れてこないようになります。

View File

@ -0,0 +1,3 @@
# チャンネル一覧
<MkIndex />

View File

@ -0,0 +1,25 @@
---
description: グローバルタイムラインのノートが流れるチャンネルです。
---
# `globalTimeline`
グローバルタイムラインのノートが流れるチャンネルです。
## パラメータ
なし
## イベント
### `note`
<MkSchemaViewer :schema="{
$ref: 'misskey://Note'
}"/>
グローバルタイムラインに新しいノートが追加されたときに発生します。
## 操作
なし

View File

@ -0,0 +1,25 @@
---
description: ホームタイムラインのノートが流れるチャンネルです。
---
# `homeTimeline`
ホームタイムラインのノートが流れるチャンネルです。
## パラメータ
なし
## イベント
### `note`
<MkSchemaViewer :schema="{
$ref: 'misskey://Note'
}"/>
ホームタイムラインに新しいノートが追加されたときに発生します。
## 操作
なし

View File

@ -0,0 +1,25 @@
---
description: ソーシャルタイムラインのノートが流れるチャンネルです。
---
# `hybridTimeline`
ソーシャルタイムラインのノートが流れるチャンネルです。
## パラメータ
なし
## イベント
### `note`
<MkSchemaViewer :schema="{
$ref: 'misskey://Note'
}"/>
ソーシャルタイムラインに新しいノートが追加されたときに発生します。
## 操作
なし

View File

@ -0,0 +1,3 @@
# チャンネル一覧
<MkIndex :sort="(a, b) => b.name - a.name"></MkIndex>

View File

@ -0,0 +1,25 @@
---
description: ローカルタイムラインのノートが流れるチャンネルです。
---
# `localTimeline`
ローカルタイムラインのノートが流れるチャンネルです。
## パラメータ
なし
## イベント
### `note`
<MkSchemaViewer :schema="{
$ref: 'misskey://Note'
}"/>
ローカルタイムラインに新しいノートが追加されたときに発生します。
## 操作
なし

View File

@ -0,0 +1,113 @@
---
description: 基本的な情報が流れるチャンネルです。
---
# `main`
基本的な情報が流れるチャンネルです。
## パラメータ
なし
## イベント
### `notification`
<MkSchemaViewer :schema="{
$ref: 'misskey://Notification'
}"/>
通知を受け取ったときに発生します。
### `mention`
<MkSchemaViewer :schema="{
$ref: 'misskey://Note'
}"/>
メンションされたときに発生します。
### `reply`
<MkSchemaViewer :schema="{
$ref: 'misskey://Note'
}"/>
返信されたときに発生します。
### `renote`
<MkSchemaViewer :schema="{
$ref: 'misskey://Note'
}"/>
Renoteされたときに発生します。
### `follow`
<MkSchemaViewer :schema="{
$ref: 'misskey://User'
}"/>
自分が他のユーザーをフォローしたときに発生します。
### `followed`
<MkSchemaViewer :schema="{
$ref: 'misskey://User'
}"/>
他のユーザーが自分をフォローしたときに発生します。
### `unfollow`
<MkSchemaViewer :schema="{
$ref: 'misskey://User'
}"/>
自分が他のユーザーをフォロー解除したときに発生します。
### `messagingMessage`
<MkSchemaViewer :schema="{
$ref: 'misskey://MessagingMessage'
}"/>
メッセージを受け取ったときに発生します。
### `readAllNotifications`
全ての通知が既読になったときに発生します。
### `unreadNotification`
新しい通知があるときに発生します。
### `unreadMention`
新しいメンションがあるときに発生します。
### `readAllUnreadMentions`
全てのメンションが既読になったときに発生します。
### `unreadSpecifiedNote`
新しいダイレクト投稿があるときに発生します。
### `readAllUnreadSpecifiedNotes`
全てのダイレクト投稿が既読になったときに発生します。
### `unreadMessagingMessage`
新しいメッセージがあるときに発生します。
### `readAllMessagingMessages`
全てのメッセージが既読になったときに発生します。
## 操作
なし

View File

@ -0,0 +1,51 @@
# 投稿キャプチャイベント
## `reacted`
<MkSchemaViewer :schema="{
type: 'object',
properties: {
reaction: {
type: 'string',
description: 'リアクションの種類',
},
userId: {
type: 'string',
description: 'リアクションを行ったユーザーのID',
},
}
}"/>
対象のノートにリアクションがされた場合に発生します。
## `pollVoted`
<MkSchemaViewer :schema="{
type: 'object',
properties: {
choice: {
type: 'number',
description: '選択肢ID',
},
userId: {
type: 'string',
description: '投票を行ったユーザーのID',
},
}
}"/>
対象のノートに添付されたアンケートに投票がされた場合に発生します。
## `deleted`
<MkSchemaViewer :schema="{
type: 'object',
properties: {
deletedAt: {
type: 'string',
description: '削除日時',
},
}
}"/>
対象のノートが削除された場合に発生します。

View File

@ -0,0 +1,125 @@
# アクセストークンの取得
APIを使い始めるには、APIを利用するアカウントに紐づいた**アクセストークン**を取得する必要があります。
このドキュメントでは、アクセストークンを取得する手順を説明した後、基本的なAPIの使い方を説明します。
基本的に、APIはリクエストにはアクセストークンが必要となります。
アクセストークンは、ユーザーに紐づいた認証情報で、APIを利用するユーザーを識別するとともに、アクセストークンごとにどういった操作の権限を持っているかが管理されます。
:::tip
ユーザーとそのユーザーに紐づいたアクセストークンは一対多の関係であり、あるユーザーに対して複数のアクセストークンが発行され得ます。
:::
あなた自分自身のアクセストークンは簡単に取得できるほか、あなたのアプリケーションを使用することになる不特定のユーザーのアクセストークンを取得することもできます。
- 前者の場合: **「自分自身のアクセストークンを手動発行する」** に進む
- 後者の場合: **「アプリケーション利用者にアクセストークンの発行をリクエストする」** に進む
### 自分自身のアクセストークンを手動発行する
Misskey Webの「設定 > API」で、自分のアクセストークンを発行できます。
:::danger
アクセストークンは他人に知られないようにしてください。
:::
### アプリケーション利用者にアクセストークンの発行をリクエストする
アプリケーションを利用するユーザー(以下単に「ユーザー」と呼びます)のアクセストークンを取得するには、以下の手順で発行をリクエストします。
:::tip
以下に説明する方法は、アプリを作成せずインスタントにアクセストークンを発行する、MiAuthと呼ばれるものです。
[アプリ作成方式でのアクセストークン取得方法もあります(旧来型)。](./app)
:::
#### Step 1
UUIDを生成する。以後これを**セッションID**と呼びます。
:::danger
このセッションIDは毎回生成し、使いまわさないようにしてください。
:::
#### Step 2
アプリケーション認証フォームをユーザーのブラウザで表示させる。認証フォームは、以下の形式のURLで開くことができます:
```
https://{host}/miauth/{session}
```
ここで、
- `{host}`の部分は、ユーザーのサーバーのホストに置き換えます。通常ホストはユーザーが入力します。
- `{session}`の部分は、セッションIDに置き換えます。
また、URLにクエリパラメータとしていくつかのオプションを設定できます:
| 名前 | 説明 |
| ------------ | ----------------------------------------------------------------------------- |
| `name` | アプリケーション名。 |
| `icon` | アプリケーションのアイコン画像URL。 |
| `callback` | 認証が終わった後にリダイレクトするURL。<br>リダイレクト時には、`session`というクエリパラメータでセッションIDが付きます。 |
| `permission` | アプリケーションが要求する権限。<br>要求する権限を`,`で区切って列挙します。権限の一覧は[こちら](./permission.md)で確認できます。 |
:::tip{label='例'}
```
https://misskey.io/miauth/c1f6d42b-468b-4fd2-8274-e58abdedef6f?name=MyApp&callback=https%3A%2F%2Fmyapp.example.com%2Fcallback&permission=write:notes,write:following,read:drive
```
:::
#### Step 3
ユーザーがアプリケーションアクセスを許可した後、次の形式のURLにPOSTリクエストすると、レスポンスとしてアクセストークンを含むJSONが返ります。
```
https://{host}/api/miauth/{session}/check
```
ここで、
- `{host}`の部分は、ユーザーのサーバーのホストに置き換えます。
- `{session}`の部分は、セッションIDに置き換えます。
レスポンスに含まれるプロパティは以下の通りです:
| 名前 | 説明 |
| ------- | -------------- |
| `token` | ユーザーのアクセストークン。 |
| `user` | ユーザーの情報。 |
## APIの利用
アクセストークンが取得できたら、各種エンドポイントにリクエストすることでAPIの利用が行えます。
:::tip
- HTTP APIはすべてPOSTで、リクエスト/レスポンスともにJSON形式ですdrive/files/createを除く
- 要求ヘッダーに`Content-Type: application/json`を指定します。
- アクセストークンは、`i`というパラメータ名でリクエストボディJSONに含めます。
- ベースURLは`https://{サーバーのドメイン}/api`です。
:::
アクセストークン付きのボディの例metaの場合:
```json
{
"i": "HogEFugA1341",
"detail": false
}
```
<!--TODO:「APIリファレンス」をリンクに差し替え-->
APIの詳細は、APIリファレンスを参照してください。
:::warning
MisskeyはRESTを採用していません。
:::
また、MisskeyはHTTP APIだけでなく、ストリーミングAPIも提供しています。ストリーミングAPIの詳細は[こちらのドキュメント](./streaming/index.md)を参照してください。

View File

@ -0,0 +1,14 @@
# Botの作成
[Misskey API](/docs/for-developers/api/)を利用してBotの開発が可能です。
また、いくつかのBot実装が公開されているため、ぜひ参考にしてください。
- [syuilo/ai](https://github.com/syuilo/ai) ... Node.js上で動く、TypeScript製Bot実装
Botを作成したときは、プロフィール設定からBotフラグをオンにしておくことを強くおすすめします。
## 関連リソース
- [Misskey API](/docs/for-developers/api/)
<MkIndex />

View File

@ -0,0 +1,77 @@
# プラグインの作成
Misskey Webクライアントのプラグイン機能を使うと、クライアントを拡張し、様々な機能を追加できます。
このドキュメントではプラグインの作成方法について説明します。
## AiScript
プラグインはAiScriptを使って記述されるスクリプトです。
## メタデータ
プラグインは、AiScriptのメタデータ埋め込み機能を使って、デフォルトとしてプラグインのメタデータを定義する必要があります。メタデータの例は以下の通りです。
```AiScript
/// @ 0.12.4
### {
name: "プラグイン名"
version: "4.2.1"
author: "作者名"
description: "説明文"
}
```
メタデータは次のプロパティを含むオブジェクトです。
### name
プラグイン名
### author
プラグイン作者
### version
プラグインバージョン。数値を指定してください。
### description
プラグインの説明
### permissions
プラグインが要求する権限。MisskeyAPIにリクエストする際に用いられます。
### config
プラグインの設定情報を表すオブジェクト。
キーに設定名、値に以下のプロパティを含めます。
#### type
設定値の種類を表す文字列。以下から選択します。
string number boolean
#### label
ユーザーに表示する設定名
#### description
設定の説明
#### default
設定のデフォルト値
## API
Misskey Webはプラグインに対してAPIを公開していて、それらを利用することでクライアントの機能を拡張できます。
どのようなAPIがあるかは[プラグインAPIリファレンス](./plugin-api-reference/)を参照してください。
## プラグインを配布する
v2023.11.0以降では、あなたのウェブサイトからワンクリックでプラグインを直接インストールできるようになっています。
プラグインのインストール機能を提供する場合は、あなたのサイト上にAPIを実装する必要があります。詳しくは[こちら](./publish-on-your-website.md)をご覧ください。

View File

@ -0,0 +1,61 @@
# プラグインAPIリファレンス
## `Mk:dialog(title text type)`
ダイアログを表示します。typeには以下の値が設定できます。\
`info` `success` `warn` `error` `question`\
省略すると `info` になります。
## `Mk:confirm(title text type)`
確認ダイアログを表示します。typeには以下の値が設定できます。\
`info` `success` `warn` `error` `question`\
省略すると `question` になります。\
ユーザーが"OK"を選択した場合は `true` を、"キャンセル"を選択した場合は `false` が返ります。
## `Mk:api(endpoint params)`
Misskey APIにリクエストします。第一引数にエンドポイント名、第二引数にパラメータオブジェクトを渡します。
## `Mk:save(key value)`
任意の値に任意の名前を付けて永続化します。永続化した値は、AiScriptコンテキストが終了しても残り、Mk:loadで読み取ることができます。
## `Mk:load(key)`
Mk:saveで永続化した指定の名前の値を読み取ります。
## `Plugin:register_post_form_action(title fn)`
投稿フォームにアクションを追加します。第一引数にアクション名、第二引数にアクションが選択された際のコールバック関数を渡します。\
コールバック関数には、第一引数に投稿フォームオブジェクトが渡されます。
## `Plugin:register_note_action(title fn)`
ノートメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。\
コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。
## `Plugin:register_user_action(title fn)`
ユーザーメニューに項目を追加します。第一引数に項目名、第二引数に項目が選択された際のコールバック関数を渡します。\
コールバック関数には、第一引数に対象のユーザーオブジェクトが渡されます。
## `Plugin:register_note_view_interruptor(fn)`
UIに表示されるート情報を書き換えます。\
コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。\
コールバック関数の返り値でノートが書き換えられます。
## `Plugin:register_note_post_interruptor(fn)`
ノート投稿時にノート情報を書き換えます。\
コールバック関数には、第一引数に対象のノートオブジェクトが渡されます。\
コールバック関数の返り値でノートが書き換えられます。
## `Plugin:open_url(url)`
第一引数に渡されたURLをブラウザの新しいタブで開きます。
## `Plugin:config`
プラグインの設定が格納されるオブジェクト。プラグイン定義のconfigで設定したキーで値が入ります。

View File

@ -0,0 +1,43 @@
# プラグイン・テーマを配布する
Misskey v2023.11.0以降では、様々な追加リソースをあなたのウェブサイトから直接インストールできるようになりました。特に、プラグインやテーマなどをたくさん制作している方や、プラグイン配布サイトを作りたい方にとっては便利な機能です。
## 外部からのインストールに対応しているリソース
- [プラグイン](./plugin/create-plugin/) ... `plugin`
- [テーマ](../for-users/features/theme/) ... `theme`
## しくみ
インストール時に、Misskey Webで受け取るリソースに予期せぬ改ざんが起こらないようにするため、配布サイト側とMisskey双方でハッシュ値を計算し、Misskeyで照合を行います。
ハッシュ値が照合できない場合はリソースをインストールすることができないようになっています。
## 実装方法
### 配布ページ側
「インストール」ボタンに、以下のようなURLを持つリンクを作成する
```
https://{HOST}/install-extentions?url={API_URL}&hash={HASH}
```
- `{HOST}`: ユーザーのサーバーのホストに置き換えます。ホストはユーザーが入力できるようにすることが一般的です。
- `{API_URL}`: リソース配布用API後述のURLに置き換えます。相対パスは不可
- `{HASH}`: 配布するリソースのSHA-512ハッシュに置き換えます。**リソース内での改行コードはLFに統一してください。**
### リソース配布用API側
上記 `{API_URL}` で指定したエンドポイントから、以下のようなJSONオブジェクトを返してください。
```json
{
"type": "theme",
"data": "{\n\tid: '4dca6e53-9c1b-41bb-a1ac-c62c3b710536',\n\tbase: 'light',\n\tname: 'Misskey Design',\n\tprops: {\n\t\tX2: ':darken<2<@panel',\n\t\tX3: 'rgba(0, 0, 0, 0.05)',\n\t\tX4: 'rgba(0, 0, 0, 0.1)',\n\t\tX5: 'rgba(0, 0, 0, 0.05)',\n\t\tX6: 'rgba(0, 0, 0, 0.25)',\n\t\tX7: 'rgba(0, 0, 0, 0.05)',\n\t\tX8: ':lighten<5<@accent',\n\t\tX9: ':darken<5<@accent',\n\t\tbg: '#f9f9f9',\n\t\tfg: '#5f5f5f',\n\t\tX10: ':alpha<0.4<@accent',\n\t\tX11: 'rgba(0, 0, 0, 0.1)',\n\t\tX12: 'rgba(0, 0, 0, 0.1)',\n\t\tX13: 'rgba(0, 0, 0, 0.15)',\n\t\tX14: ':alpha<0.5<@navBg',\n\t\tX15: ':alpha<0<@panel',\n\t\tX16: ':alpha<0.7<@panel',\n\t\tX17: ':alpha<0.8<@bg',\n\t\tcwBg: '#b1b9c1',\n\t\tcwFg: '#fff',\n\t\tlink: '#44a4c1',\n\t\twarn: '#ecb637',\n\t\tbadge: '#31b1ce',\n\t\terror: '#ec4137',\n\t\tfocus: ':alpha<0.3<@accent',\n\t\tnavBg: '@panel',\n\t\tnavFg: '@fg',\n\t\tpanel: ':lighten<3<@bg',\n\t\tpopup: ':lighten<3<@panel',\n\t\taccent: '#FF6B63',\n\t\theader: ':alpha<0.7<@panel',\n\t\tinfoBg: '#e5f5ff',\n\t\tinfoFg: '#72818a',\n\t\trenote: '#229e82',\n\t\tshadow: 'rgba(0, 0, 0, 0.1)',\n\t\tdivider: 'rgba(0, 0, 0, 0.1)',\n\t\thashtag: '#ff9156',\n\t\tmention: '@accent',\n\t\tmodalBg: 'rgba(0, 0, 0, 0.3)',\n\t\tsuccess: '#86b300',\n\t\tbuttonBg: 'rgba(0, 0, 0, 0.05)',\n\t\tswitchBg: 'rgba(0, 0, 0, 0.15)',\n\t\tacrylicBg: ':alpha<0.5<@bg',\n\t\tcwHoverBg: '#bbc4ce',\n\t\tindicator: '@accent',\n\t\tmentionMe: '@mention',\n\t\tmessageBg: '@bg',\n\t\tnavActive: '@accent',\n\t\taccentedBg: ':alpha<0.15<@accent',\n\t\tcodeNumber: '#0fbbbb',\n\t\tcodeString: '#b98710',\n\t\tfgOnAccent: '#fff',\n\t\tinfoWarnBg: '#fff0db',\n\t\tinfoWarnFg: '#8f6e31',\n\t\tnavHoverFg: ':darken<17<@fg',\n\t\tswitchOnBg: '@accent',\n\t\tswitchOnFg: '@fgOnAccent',\n\t\tcodeBoolean: '#62b70c',\n\t\tdateLabelFg: '@fg',\n\t\tdeckDivider: ':darken<3<@bg',\n\t\tinputBorder: 'rgba(0, 0, 0, 0.1)',\n\t\tpanelBorder: '\" solid 1px var(--divider)',\n\t\tswitchOffBg: 'rgba(0, 0, 0, 0.1)',\n\t\tswitchOffFg: '@panel',\n\t\taccentDarken: ':darken<10<@accent',\n\t\tacrylicPanel: ':alpha<0.5<@panel',\n\t\tnavIndicator: '@indicator',\n\t\twindowHeader: ':alpha<0.85<@panel',\n\t\taccentLighten: ':lighten<10<@accent',\n\t\tbuttonHoverBg: 'rgba(0, 0, 0, 0.1)',\n\t\tdriveFolderBg: ':alpha<0.3<@accent',\n\t\tfgHighlighted: ':darken<3<@fg',\n\t\tfgTransparent: ':alpha<0.5<@fg',\n\t\tpanelHeaderBg: ':lighten<3<@panel',\n\t\tpanelHeaderFg: '@fg',\n\t\tbuttonGradateA: '#FC4774',\n\t\tbuttonGradateB: '#F9E001',\n\t\thtmlThemeColor: '@bg',\n\t\tpanelHighlight: ':darken<3<@panel',\n\t\tlistItemHoverBg: 'rgba(0, 0, 0, 0.03)',\n\t\tscrollbarHandle: 'rgba(0, 0, 0, 0.2)',\n\t\tinputBorderHover: 'rgba(0, 0, 0, 0.2)',\n\t\twallpaperOverlay: 'rgba(255, 255, 255, 0.5)',\n\t\tfgTransparentWeak: ':alpha<0.75<@fg',\n\t\tpanelHeaderDivider: 'rgba(0, 0, 0, 0)',\n\t\tscrollbarHandleHover: 'rgba(0, 0, 0, 0.4)',\n\t},\n\tauthor: '@kakkokari_gtyih@misskey.io',\n}"
}
```
- `type`: 上記「外部からのインストールに対応しているリソース」のコードを参照して入力してください。
- `data`: リソースのソースコードを**文字列で**入力
- この際、改行コードは**LF**としてください

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,150 @@
---
ignoreDirBasedNav: true
description: Misskeyについてのドキュメントです。
---
# Misskeyについて
Misskeyはオープンソースの分散型マイクロブログプラットフォームプロジェクトです。
開発は日本でsyuiloによって2014年から開始されました。
ドライブ、リアクションなどの豊富な機能や、高いカスタマイズ性を備えたUIを持つことが特徴です。
## 歴史
開発当初は掲示板がメインのサービスでしたが、ユーザーが短文を投稿し、それを時系列で流れるタイムライン機能を追加したところ人気が高まり、徐々にそれがメインとして開発が進むようになりました。
当初は分散型ではありませんでしたが、2018年にActivityPubを実装し分散型になったことで、より多くの方に認知され利用されるサービスになり、現在に至ります。
:::tip
Misskeyという名前は、syuiloが当時聴いていたMay'nというアーティストの楽曲、Brain Diverの歌詞に由来します。
:::
誰でも開発に参加することができ、現在でも活発に開発が続いています。
## 分散型とは何か?
<b>分散(distributed)型</b>とは、<b>非中央集権(decentralized)</b>とも呼ばれ、コミュニティが多数のサーバーに分散して存在し、それらが相互に<b>通信(連合、federation)</b>することでコンテンツ共有<b>ネットワーク(Fediverse)</b>を形成していることが特徴のサービスです。
単一のサーバーしか存在しない、もしくは複数存在しても互いに独立している場合は中央集権なサービスと言われ、例えばTwitterやFacebookなどほとんどのサービスがそれに該当します。
分散型のメリットは、自分に合った運営者やテーマのサーバーを選択できることです。自分でサーバーを作成することもできます。連合するおかげで、どのサーバーを選んでも、同じコミュニティにアクセスできます。
## 常にオープンソース
Misskeyはこれまでもこれからも、オープンソースであり続けます。オープンソースとは、簡単に言うと<b>ソフトウェアのソースコード(プログラム)が公開されている</b>ことです。ソースコードの修正や再配布が可能であることを定義に含めることもあります。
Misskeyのすべてのソースコードは[AGPL](https://github.com/misskey-dev/misskey/blob/develop/LICENSE)というオープンソースライセンスの下に[公開](https://github.com/misskey-dev)されていて、誰でも自由に閲覧、使用、修正、改変、再配布をすることができます。
オープンソースは、自分で好きなように変えたり、有害な処理が含まれていないことを確認することができたり、誰でも開発に参加できるなどの、様々なメリットがあります。
上述の分散型を実現するためにも、オープンソースであるということは必要不可欠な要素です。
再び引き合いに出しますが、TwitterやFacebookなどの利益を得ているほとんどのサービスはオープンソースではありません。
:::tip
技術的に言うと、MisskeyのソースコードはGitで管理されていて、リポジトリは[GitHub上でホスティングされています。](https://github.com/misskey-dev)
:::
## 開発に参加する、プロジェクトを支援する
Misskeyを気に入っていただけたら、ぜひプロジェクトを支援してください。プロジェクトに貢献するには、以下で紹介するようにいろいろな方法があります。方法によっては開発のスキルは不要なので、誰でも気軽に参加し貢献することができます。いつでもお待ちしています。
### 機能を追加したり、バグを修正する
ソフトウェアエンジニアのスキルをお持ちの方であれば、ソースコードを編集する形でプロジェクトに貢献することができます。
貢献についてのガイドは[こちら](https://github.com/misskey-dev/misskey/blob/develop/CONTRIBUTING.md)です。
### 議論に参加する
新しい機能、または既存の機能について意見を述べたり、不具合を報告したりすることでも貢献できます。
そのようなディスカッションは[GitHub](https://github.com/misskey-dev)上か、[フォーラム](https://forum.misskey.io/)等で行われます。
### テキストを翻訳する
Misskeyは様々な言語に対応しています(i18n -internationalizationの略- と呼ばれます)。元の言語は基本的に日本語ですが、有志によって他の言語へと翻訳されています。
その翻訳作業に加わっていただくことでもMisskeyに貢献できます。
Misskeyは[Crowdinというサービスを使用して翻訳の管理を行っています。](https://crowdin.com/project/misskey)
### 感想を投稿する
不具合報告等だけではなく、Misskeyの良い点、楽しい点といったポジティブな意見もぜひ共有してください。開発の励みになり、それは間接的ですがプロジェクトへの貢献です。
### ミスキストを増やす
ミスキストとは、Misskeyを使用する人のことです。
知り合いに紹介するなどしてMisskeyを広めていただければ、ミスキストが増え開発のモチベーションが上がります。
### 寄付をする
[こちらをご覧ください](/docs/for-users/resources/donate/)
## よくある質問
### プロジェクトは何を目指していますか?
強いて言うと、漠然的になりますが広く使われる汎用的なプラットフォームになることを目指しています。
Misskeyは他のプロジェクトとは違い、何らかの思想(例えば、反中央集権)やビジョンに基づいて開発が行われているわけではなく、その点ではフラットです。
それが逆に、特定の方向性に縛られないフレキシブルさを生み出すことに繋がっていると感じています。
<!-- TODO: ここにロードマップへのリンク -->
### 企業によって開発されていますか?
いいえ。Misskeyの開発は個人で行われており、商業的でもないため、特定の企業の関りはありません。
開発メンバーも基本的にはボランティアです。
また、開発に対し企業のスポンサーがつくこともありますが、その場合でもやはり開発は個人のコミュニティが主体です。
### 誰が運営していますか?
Misskeyは分散型なため、各サーバーにそれぞれ異なった運営者がいます。従って、特定の個人や企業によって、Misskeyの全てが運営されているわけではありません。
また、開発チームが運営を行うわけでもないため、運営に関する連絡は、お使いのサーバーの運営者に行ってください。
サーバーの運営者は、サーバーの情報ページで確認することができます。
あなたがサーバーを作成すれば、あなたが運営者になります。
### どのサーバーを選べばいいですか?
[サーバー一覧が公開されています。](/servers/)
サーバーによってコミュニティのテーマ(特定のこと、ものが好き 等)が決められている場合があるので、自分に合ったテーマのサーバーがあれば、そこを選ぶと良いかもしれません。
他にも、サーバーの規模、ユーザー層、国および言語、運営者が信頼できるかどうか、などの観点があります。
なお、Misskey公式のサーバーというものはありません。自身で新しくサーバーを作成するという選択肢もあります。
基本的にどのサーバーを選んだとしても、他の全てのサーバーのユーザーと繋がることができます。
### サーバーを建てるにはどうしたらいいですか?
Misskeyサーバーの作成に興味を持っていただきありがとうございます。
2022年現在、Misskeyのホスティングサービスは存在しないため、サーバーの作成にはある程度の知識が必要です。
サーバーの作成方法については[こちら](/docs/for-admin/install/)をご覧ください。
### どのような技術を使用していますか?
Misskeyは開発が進むにつれ使用する技術も大きく変わってきました。開発当初はMySQL + PHP + jQueryといった構成でしたが、現在は以下のようになっています。
- サーバーサイド: Node.js
- データベース: PostgreSQL、Redis
- UIフレームワーク: Vue.js
- プログラミング言語: TypeScript
また、MFMやAiScriptなどの、Misskeyから派生して独自の技術も開発しています。
### Mastodonのフォークですか
いいえ。MisskeyはMastodonやその他のプロジェクトとは全く別のプロジェクトです。
開発に関しても、Misskeyの方が昔から開発されています。ただし、分散型になったのはMastodonの登場より後です。
同じActivityPubという分散のためのプロトコルを実装しているという点以外、両者に特に関りがあるわけでもありません。
### iOS/Androidのアプリはありますか
公式にはそういったOSのネイティブアプリを開発していませんが、サードパーティ製のアプリがいくつかあります。
詳しくは[こちら](/docs/for-users/resources/apps/)をご覧ください。
ただ、サードパーティ製アプリはどうしても機能への対応が遅れてしまうため、とくに拘りがなければ公式のWebクライアントの利用をおすすめします。
なお、MisskeyのWebクライアントはPWAに対応しているので、ネイティブアプリのように動作させることも可能です。
### Misskeyのロゴ、アイコンはどこで入手できますか
[こちら](/brand-assets/)
### 時折目にする猫耳の可愛い女の子は?
:::fukidashi{chara="doya\_ai" charaName="藍"}
わたしについては[このホームページ](https://xn--931a.moe/)をご覧ください!
:::
:::fukidashi{chara="syuilo" charaName="しゅいろ" direction="right"}
Misskeyの守り神、藍ちゃんです。アイチャンカワイイヤッター!
:::

View File

@ -0,0 +1,5 @@
# ユーザー向けガイド
このセクションでは、Misskeyを初めて利用する方はもちろん、すでに利用されている方にも役立つ一般的な機能についてご紹介しています。
<MkIndex />

View File

@ -0,0 +1,14 @@
# Misskeyをはじめよう
ここでは、Misskeyでの活動を始めるチュートリアルを掲載しています。
おもに、
- 分散型プラットフォームの注意点
- サーバーとは?サーバーの選び方は?
- 登録の手順
- 最低限の基礎知識
などについて解説していますので、この通りに進めることで、とりあえずMisskeyを使い始めることができると思います。
それでは、早速始めましょう!(「次へ」を押して進んでください。)

View File

@ -0,0 +1,14 @@
---
description: Misskeyサーバーにアカウントを作成する前の基本的な注意事項です。
---
# 基本的な注意事項
Misskeyを使ったサービスを利用するにあたり、いくつか注意が必要な点があります。
- 分散型のため、一度アップロードしたデータは削除したとしても他の全てのサーバーから削除されることは保証されません。(ただし、これはインターネット全般に言えることでもあります。)
- 非公開で行った投稿でも、相手のサーバーがそれを同じように非公開として扱うかは保証されません。個人情報、機密情報を投稿する際は十分注意してください。(ただし、これはインターネット全般に言えることでもあります。)
- アカウントの削除は負荷の高い処理であるため、長い時間がかかることがあります。アップロードしたデータが多いケースではアカウントの削除が不可能なこともあります。
- サーバーによっては、広告収入により運営費を賄っていることがあります。また、アドブロッカーは広告とは全く関係のないコンテンツや機能を誤ってブロックすることがよくあり、クライアントの動作に支障をきたし、正常にMisskeyを使用できなくなるおそれがあります。そのため、Misskeyではアドブロッカーやそれに類する機能はオフにしてご利用ください。
これらをご理解いただいたうえで、楽しくサービスをご利用ください。

View File

@ -0,0 +1,35 @@
---
description: Misskeyサーバーへのユーザー登録や、基本的な操作について解説しています。
---
# Misskeyサーバーをさがす
Misskeyはソフトウェアおよびそのプロジェクトです。
インターネットに公開されている、Misskeyを動かしているサーバーのことを**サーバー**と呼びます。
Misskeyを利用するには、どこかのサーバーにアカウントを作成し、そのサーバーを利用します。
[サーバー一覧](/servers/)から、好きなサーバーを選ぶことができます。
:::tip
どのサーバーを選んでも、他のサーバーのユーザーとやり取りすることができます。
:::g-details{summary='詳細'}
Misskeyには連合機能が備わっています。
連合機能によって、別のサーバーのユーザーであっても、同じサーバーのユーザーと同じようにフォローやリアクション、Renoteなどができるようになっています。
Misskeyが搭載している連合機能はActivityPubというオープンな共通規格に基づいていて、MastodonやPleromaといったほかのソフトウェアとも互換性があります。
:::
:::
## サーバーの選び方
### サーバーのテーマ
サーバーによっては、例えば「特定のこと、ものが好き」といったテーマが決まっている場合があります。
自分にあったテーマのサーバーを探すのもおすすめです。
:::tip
サーバーの一覧は[こちら](/servers/)からご覧いただけます。
:::

View File

@ -0,0 +1,34 @@
# サーバーに登録する
登録するサーバーが決まったら、さっそくアカウントを作成しましょう。
:::tip
ここでは、Misskey.ioを例にとって紹介していますが、他のサーバーでも登録方法はおおむね同じです。
ただし、入力事項はサーバーによって異なることがあります。詳しくは、サーバー管理者にお問い合わせください。
:::
## 登録する
まずは、トップページから「**このサーバーに登録する**」ボタンを探し、クリックします。
![このサーバーに登録ボタン](/img/docs/for-users/onboarding/join-server/1.ja.png)
次に、画面の指示に従い、規約の確認や必要事項の記入を進めてください。
主に記入すべき事項は、以下の通りです。
- 招待コード(登録が招待制の場合のみ。お持ちでない場合は登録できません。)
- ユーザー名(**後から変更はできません。一度退会すると同じユーザー名を取得することはできません。**
- メールアドレス(必要ないサーバーもあります)
- パスワード
![必要事項の記入](/img/docs/for-users/onboarding/join-server/2.ja.png)
必要事項の記入が終わると、メールアドレスを登録するサーバーの場合、確認メールが届きますので、速やかにメール内のリンクをクリックしてください。
![確認メール](/img/docs/for-users/onboarding/join-server/3.ja.png)
以上で、Misskey サーバーへの登録が完了しました!
これであなたも[ミスキスト](../resources/glossary/#ミスキスト)!楽しいコミュニケーションをお楽しみください。

View File

@ -0,0 +1,23 @@
# Misskeyの基礎知識
アカウントを作成したあなたにとりあえず知っておいてほしいことをまとめました!
## ノート
Misskeyへの投稿は、「ート」と呼ばれます。Twitterなどの一般的なSNSに比べたくさんの機能がありますので、初めての投稿を行う前に必ず確認して、上手に投稿しましょう
:::tip
詳細は、「[ノート](/docs/for-users/features/note/)」をご覧ください。
:::
## タイムライン
Misskeyは、複数のタイムラインを持っています。名前だけでは少々わかりにくいかと思いますので、それぞれがどのような働きをするのかを知っておきましょう。
:::tip
詳細は、「[タイムライン](/docs/for-users/features/timeline/)」をご覧ください。
:::
## その他
その他にも、Misskeyには、使って楽しい機能が盛りだくさんすべての機能に関する説明は[こちら](/docs/for-users/features/)に記載されていますので、ぜひご覧ください!

View File

@ -0,0 +1,9 @@
---
description: Misskeyの大きな特徴である、多彩な機能について解説しています。
---
# さまざまな機能
Misskeyの大きな特徴は、ほかのマイクロブログシステムには見られない多彩な機能にあります。ここでは、それらについて解説していきます。
<MkIndex :sort="(a, b) => b.name - a.name"></MkIndex>

View File

@ -0,0 +1,13 @@
# 広告
Misskeyではサーバーによる広告をタイムラインなどに表示できる機能があります。
広告の右上に表示されるアイコンをクリックすることで、当該の広告の表示頻度を下げることができます。
:::tip
広告の総数が少ない場合は、表示頻度を下げた後も連続で表示される可能性があります。
:::
## 広告の設定(管理者)
サーバーのコントロールパネルから広告の追加、編集、削除を行えます。
広告には任意の画像、遷移先URL、形状、表示割合を設定できます。

View File

@ -0,0 +1,5 @@
# アンテナ
アンテナは、自由に条件を設定して、合致するノートを自動で収集することができる機能です。
条件を設定したアンテナが作成された状態で、条件に合致するノートが投稿されると、リアルタイムでそのアンテナのタイムラインにノートが追加されます。

View File

@ -0,0 +1,74 @@
# チャート
Misskeyはサーバーの様々なデータソースに対するチャートを生成し表示する機能を備えています。
チャートを利用することで、サーバーの利用状況や連合の状況、各ユーザーのアクティビティなどを視覚的に把握することができます。
サーバーのチャートはサーバー情報ページから表示することができます。
以下は各チャートとその各項目の説明です。
## 連合チャート
連合しているサーバー化ついてのチャートです。
### Pub
アクティビティを配送しているサーバーの数。
言い換えると、自サーバーのユーザーをフォローしているリモートユーザーの所属サーバーのユニークなカウントを表します。
### Sub
アクティビティを受信しているサーバーの数。
言い換えると、自サーバーのユーザーがフォローしているリモートユーザーの所属サーバーのユニークなカウントを表します。
### Received
アクティビティを送ってきたサーバーの数。
### Delivered
アクティビティを配送したサーバーの数。
### Stalled
アクティビティを配送する際、エラーになったサーバーの数。
## アクティブユーザー数チャート
自サーバーのユーザーの利用状況についてのチャートです。
### Read & Write
閲覧と書き込みを行ったユーザーの数。
### Read
閲覧を行ったユーザーの数。
### Write
書き込みを行ったユーザーの数。
### < Week
閲覧を行ったユーザーのうち、アカウント作成日時が1週間未満であるユーザーの数。
### < Month
閲覧を行ったユーザーのうち、アカウント作成日時が1ヶ月未満であるユーザーの数。
### < Year
閲覧を行ったユーザーのうち、アカウント作成日時が1年未満であるユーザーの数。
### > Week
閲覧を行ったユーザーのうち、アカウント作成日時が1週間以上前であるユーザーの数。
### > Month
閲覧を行ったユーザーのうち、アカウント作成日時が1ヶ月以上前であるユーザーの数。
### > Year
閲覧を行ったユーザーのうち、アカウント作成日時が1年以上前であるユーザーの数。

View File

@ -0,0 +1,8 @@
# クリップ
クリップは、複数のノートをまとめることができる機能です。自分のノート・他者のノートは問いません。
クリップは複数作ることができ、それぞれに名前や説明を設定して管理することが可能です。また、クリップを他のユーザーに公開するかどうかも選択することができます。
クリップを作るには、クリップ管理ページから「追加」をクリックします。
クリップにノートを追加するには、対象のノートのメニューから「クリップ」をクリックし、追加先のクリップを選択します。

View File

@ -0,0 +1,8 @@
# カスタム絵文字
カスタム絵文字は、サーバーで用意された画像を絵文字のように使える機能です。
ノート、リアクション、チャット、自己紹介、名前などの場所で使うことができます。
カスタム絵文字をそれらの場所で使うには、絵文字ピッカーボタン(ある場合)を押すか、`:`を入力して絵文字サジェストを表示します。
テキスト内に`:foo:`のような形式の文字列が見つかると、`foo`の部分がカスタム絵文字名と解釈され、表示時には対応したカスタム絵文字に置き換わります。
サーバーにどのようなカスタム絵文字が用意されているかは、Misskey Webの **サーバー情報** にある **カスタム絵文字** `/about#emojis`にアクセスすると見ることができます。

View File

@ -0,0 +1,27 @@
# デッキ
デッキは利用可能なUIのひとつです。「カラム」と呼ばれるビューを複数並べて表示させることで、カスタマイズ性が高く、情報量の多いUIが構築できることが特徴です。\
\
なお、メインカラムを追加しておくと、ノートやプロフィールをページで表示した際、メインカラムに内容が表示されます。
## カラムの追加
デッキの背景を右クリックし、「カラムを追加」して任意のカラムを追加できます。
## カラムの移動
カラムは、ドラッグアンドドロップで他のカラムと位置を入れ替えることが出来るほか、カラムメニュー(カラムのヘッダー右クリック)から位置を移動させることもできます。
## カラムの水平分割
カラムは左右だけでなく、上下に並べることもできます。
カラムメニューを開き、「左に重ねる」を選択すると、左のカラムの下に現在のカラムが移動します。
上下分割を解除するには、カラムメニューの「右に出す」を選択します。
## カラムの設定
カラムメニューの「編集」を選択するとカラムの設定を編集できます。カラムの名前を変えたり、幅を変えたりできます。
## デッキの設定
デッキに関する設定は、[settings/deck](/settings/deck)で行えます。

View File

@ -0,0 +1,25 @@
# ドライブ
ドライブは、Misskey上でファイルを管理できる機能です。
:::tip
技術的に言うと、Misskeyのシステム上、すべてのファイルが一元管理されており、それをユーザーにも公開したインターフェイスがドライブと捉えることができます。
:::
Misskey Webのドライブページから任意のファイルをアップロードできるほか、アバターに設定した画像や、ートに添付したファイルなどもすべてドライブにアップロードされます。
ドライブにアップロードされたファイルは、いつでもダウンロードすることができるほか、ノート作成時に「ドライブからファイルを添付」することでファイルを再利用することもできます。
ドライブ内にフォルダを作り、複数のファイルをまとめて整理することもできます。
:::warning
現時点で、ドライブからファイルを削除すると、そのファイルが添付された **すべてのコンテンツ(ノート、ページなど)** も同時に消えます。
:::
## センシティブ (NSFW)
センシティブまたはNSFW (Not safe for work) は、ドライブのファイルに設定することができるフラグです。
センシティブフラグを設定されたファイルは、表示される際に閲覧者の操作なしには表示されなくなります。
このフラグは、例えば職場や公共の場で閲覧するのに適切でないと思われる画像などに設定し、そのような画像が突然表示されてしまうことを防ぐ目的で使われます。
このフラグは手動でオンオフを切り替えられるほか、モデレーターの判断で設定される場合もあります。

View File

@ -0,0 +1,10 @@
# お気に入り
[ノート](./note)をお気に入りとして登録できる機能です。
<!--TODO:「お気に入りページ」をMisskey Webに飛ばすリンクで置き換え-->
お気に入り登録したノートは、お気に入りページで一覧することができます。
お気に入りに登録したことは相手に通知されず、お気に入りは自分しか見ることができません。
ノートをお気に入り登録するには、ノートメニューの「お気に入り」を押します。お気に入り解除するには、ノートメニューの「お気に入り解除」を押します。

View File

@ -0,0 +1,4 @@
# フォロー
ユーザーをフォローすると、タイムラインにそのユーザーの投稿が表示されるようになります。ただし、他のユーザーに対する返信は含まれません。
ユーザーをフォローするには、ユーザーページの「フォロー」ボタンをクリックします。フォローを解除するには、もう一度クリックします。

View File

@ -0,0 +1,9 @@
# ハッシュタグ
ハッシュタグとは、投稿に検索可能なタグをつけることができる機能の一つです。
世界ではじめてのハッシュタグ── #barcamp は、[2007年8月24日の午前4:25](https://twitter.com/chrismessina/status/223115412?lang=en)にクリス・メッシナ氏[@chrismessina@mastodon.xyz](https://mastodon.xyz/@chrismessina)によって考案されました。後にこの「ポンド記号`#`を用いて検索を容易にする」という案は、英語で「刻む、ハックする」を意味する「ハッシュ」と、「札」を意味する「タグ」を合わせた造語──「ハッシュタグ」として生まれ変わり、当時のTwitter社に公式採用されました。ちなみにクリス・メッシナ氏が`#`を選んだ理由は、IRCのチャンネル名が`#`で始まることからの連想だからだそうです。
![Screenshot of Chris Messina's first hashtag tweet that says "how do you feel about using # (pound) for groups. As in #barcamp \[msg\]?"](/img/docs/for-users/features/hashtag/1.ja.png)
FediverseでのハッシュタグはXやInstagramなどといった中央集権的なサービスとでのものと多少仕様が異なります。Fediverseでは全文検索が難しい場合などがあり、特定の投稿を探し出すのは困難ですが、投稿にハッシュタグがついていれば、その投稿をハッシュタグをたどって容易に見つけ出すことができます。また、投稿にハッシュタグをつけるだけで様々なサイトに自動で届けてくれるハッシュタグリレーと呼ばれるサービスなどが連合宇宙には存在し、ここではハッシュタグにそこそこの重みがあったりするのです。

View File

@ -0,0 +1 @@
# メンション

View File

@ -0,0 +1,358 @@
---
description: MFMは、Misskeyの様々な場所で使用できる専用のマークアップ言語です。
---
# MFM
MFMは、Markup language For Misskeyの略で、Misskeyの様々な場所で使用できる専用のマークアップ言語です。
:::tip
一部の構文はMarkdownやHTMLと互換性があります。
:::
## MFMが使用可能な場所の例
- ノート本文
- CW注釈
- ユーザーの名前
- ユーザーの自己紹介
## 構文
### メンション
アットマーク + ユーザー名で、特定のユーザーを示すことができます。
:::tip
メンションについての詳細は[こちら](./mention.md)を参照してください。
:::
```
@ai
```
<MfmPreview text="@ai"></MfmPreview>
```
@repo@p1.a9z.dev
```
<MfmPreview text="@repo@p1.a9z.dev"></MfmPreview>
### ハッシュタグ
ナンバーサイン + タグで、ハッシュタグを示すことができます。
:::tip
ハッシュタグについての詳細は[こちら](./hashtag.md)を参照してください。
:::
```
#misskey
```
<MfmPreview text="#misskey"></MfmPreview>
### URL
URLを示すことができます。
```
https://example.com
```
<MfmPreview text="https://example.com"></MfmPreview>
### リンク
文章の特定の範囲を、URLに紐づけることができます。
```
[example link](https://example.com)
```
:::tip
リンクテキストの前に`?`をつけると、リンクプレビューを非表示にすることができます。
```
?[example link](https://example.com)
```
:::
<MfmPreview text="[example link](https://example.com)"></MfmPreview>
### カスタム絵文字
コロンでカスタム絵文字名を囲むと、カスタム絵文字を表示させることができます。
:::tip
カスタム絵文字についての詳細は[こちら](./custom-emoji.md)を参照してください。
:::
```
:misskey:
```
<MfmPreview text=":misskey:"></MfmPreview>
### 太字
文字を太く表示して強調することができます。
```
**太字**
```
<MfmPreview text="**太字**"></MfmPreview>
### 目立たなくする
内容を小さく・薄く表示させることができます。
```
<small>MisskeyでFediverseの世界が広がります</small>
```
<MfmPreview text="<small>MisskeyでFediverseの世界が広がります</small>"></MfmPreview>
### 引用
内容が引用であることを示すことができます。
```
> MisskeyでFediverseの世界が広がります
```
<MfmPreview text="> MisskeyでFediverseの世界が広がります"></MfmPreview>
### 中央寄せ
内容を中央寄せで表示させることができます。
```
<center>MisskeyでFediverseの世界が広がります</center>
```
<MfmPreview text="<center>MisskeyでFediverseの世界が広がります</center>"></MfmPreview>
### コード(インライン)
プログラムなどのコードをインラインでシンタックスハイライトします。
```
`<: "Hello, world!"`
```
### コード(ブロック)
複数行のプログラムなどのコードをブロックでシンタックスハイライトします。
```
~ (#i, 100) {
<: ? ((i % 15) = 0) "FizzBuzz"
.? ((i % 3) = 0) "Fizz"
.? ((i % 5) = 0) "Buzz"
. i
}
```
### 反転
内容を上下または左右に反転させます。
```
$[flip MisskeyでFediverseの世界が広がります]
$[flip.v MisskeyでFediverseの世界が広がります]
$[flip.h,v MisskeyでFediverseの世界が広がります]
```
<MfmPreview text="$[flip MisskeyでFediverseの世界が広がります]
$[flip.v MisskeyでFediverseの世界が広がります]
$[flip.h,v MisskeyでFediverseの世界が広がります]"></MfmPreview>
### フォント
内容のフォントを指定することができます。
```
$[font.serif MisskeyでFediverseの世界が広がります]
$[font.monospace MisskeyでFediverseの世界が広がります]
$[font.cursive MisskeyでFediverseの世界が広がります]
$[font.fantasy MisskeyでFediverseの世界が広がります]
```
<MfmPreview text="$[font.serif MisskeyでFediverseの世界が広がります]
$[font.monospace MisskeyでFediverseの世界が広がります]
$[font.cursive MisskeyでFediverseの世界が広がります]
$[font.fantasy MisskeyでFediverseの世界が広がります]"></MfmPreview>
### ぼかし
内容をぼかすことができます。ポインターを上に乗せるとはっきり見えるようになります。
```
$[blur MisskeyでFediverseの世界が広がります]
```
<MfmPreview text="$[blur MisskeyでFediverseの世界が広がります]"></MfmPreview>
### 検索
検索ボックスを表示できます。
```
misskey 検索
```
<MfmPreview text="misskey 検索"></MfmPreview>
### 文字色・背景色
文字色と背景色を変更することができます。
3,4,6桁のカラーコードで色を表現します。
```
$[fg.color=f00 赤字]
$[bg.color=ff0 黄背景]
```
<MfmPreview text="$[fg.color=f00 赤字]
$[bg.color=ff0 黄背景]"></MfmPreview>
### 角度変更
指定した角度で回転させます。
```
$[rotate.deg=30 misskey]
```
<MfmPreview text="$[rotate.deg=30 misskey]"></MfmPreview>
### 位置変更
位置をずらすことができます。
```
😏$[position.x=0.8,y=0.5 🍮]😀
```
<MfmPreview text="😏$[position.x=0.8,y=0.5 🍮]😀"></MfmPreview>
### 拡大
文字を引き延ばして表示します。
```
$[scale.x=4,y=2 🍮]
```
<MfmPreview text="$[scale.x=4,y=2 🍮]"></MfmPreview>
```
$[x2 x2]
$[x3 x3]
$[x4 x4]
```
<MfmPreview text="$[x2 x2]
$[x3 x3]
$[x4 x4]"></MfmPreview>
### アニメーション(びよんびよん)
```
$[jelly 🍮] $[jelly.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[jelly 🍮] $[jelly.speed=5s 🍮]]"></MfmPreview>
### アニメーション(じゃーん)
```
$[tada 🍮] $[tada.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[tada 🍮] $[tada.speed=5s 🍮]]"></MfmPreview>
### アニメーション(ジャンプ)
```
$[jump 🍮] $[jump.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[jump 🍮] $[jump.speed=5s 🍮]]"></MfmPreview>
### アニメーション(バウンド)
```
$[bounce 🍮] $[bounce.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[bounce 🍮] $[bounce.speed=5s 🍮]]"></MfmPreview>
### アニメーション(回転)
```
$[spin 🍮] $[spin.left 🍮] $[spin.alternate 🍮]
$[spin.x 🍮] $[spin.x,left 🍮] $[spin.x,alternate 🍮]
$[spin.y 🍮] $[spin.y,left 🍮] $[spin.y,alternate 🍮]
$[spin.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[spin 🍮] $[spin.left 🍮] $[spin.alternate 🍮]
$[spin.x 🍮] $[spin.x,left 🍮] $[spin.x,alternate 🍮]
$[spin.y 🍮] $[spin.y,left 🍮] $[spin.y,alternate 🍮]
$[spin.speed=5s 🍮]]"></MfmPreview>
### アニメーション(ぶるぶる)
```
$[shake 🍮] $[shake.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[shake 🍮] $[shake.speed=5s 🍮]]"></MfmPreview>
### アニメーション(ブレ)
```
$[twitch 🍮] $[twitch.speed=5s 🍮]
```
<MfmPreview text="$[x2 $[twitch 🍮] $[twitch.speed=5s 🍮]]"></MfmPreview>
### レインボー
```
$[rainbow 🍮] $[rainbow.speed=5s 🍮]
$[rainbow 色なし文字]
$[rainbow $[fg.color=f0f 色付き文字]]
```
<MfmPreview text="$[rainbow 🍮] $[rainbow.speed=5s 🍮]
$[rainbow 色なし文字]
$[rainbow $[fg.color=f0f 色付き文字]]"></MfmPreview>
### キラキラ
```
$[sparkle 🍮]
```
<MfmPreview text="$[x2 $[sparkle 🍮]]"></MfmPreview>
### プレーン
内側の構文を全て無効にします。
```
<plain>**bold** @mention #hashtag `code` $[x2 🍮]</plain>
```
<MfmPreview text="<plain>**bold** @mention #hashtag `code` $[x2 🍮]</plain>"></MfmPreview>
## 開発者向け情報
MFMのパーサー実装はライブラリとして公開されており、簡単にクライアントにMFMを組み込むことが可能です。
- [misskey-dev/mfm.js](https://github.com/misskey-dev/mfm.js) - JavaScriptパーサー実装

Some files were not shown because too many files have changed in this diff Show More