互換性方針と主要な制約
基本方針
判断の基準は「一般ユーザーまたはサードパーティークライアントから観測できるか」です。観測できるものは upstream Misskey との互換を優先し、観測できないもの(管理機能やインフラ固有の機能)は Cloudflare に合わせた最適化や改変を許容します。
| 対象 | 方針 |
|---|---|
| ユーザー向け API・ストリーミング | upstream との互換を堅持する。サードパーティークライアント(Miria など)での動作を保証する |
| Web クライアント | upstream のものをそのまま使う(下記) |
| ActivityPub | upstream と同じ形式で連合する |
| データベース | upstream と同じ PostgreSQL スキーマを使う |
| 管理者向け API・管理画面 | サードパーティークライアントから参照されないものは、最適化・改変・削除を許容する |
| インフラ固有の機能 | S3 の指定、SMTP サーバーの指定、ジョブキューの操作など upstream の基盤に依存する機能は、改変・削除を許容する |
| 機能追加 | 原則として行わない |
Web クライアント
Web クライアントは upstream Misskey のものがほぼそのまま動作しています。
| 項目 | 内容 |
|---|---|
| ソース | ピン留めした upstream のコミットを無改変でビルドし、静的ファイルとして配信する |
| 配信される HTML | upstream のサーバーが返すものと同じ構造(初期データ、OGP、ユーザー・ノートなどのページごとの描画)を Worker で生成する |
| 動作 | クライアントは upstream と同じ API とストリーミングに接続するため、画面と操作は upstream と同じ |
| 違いが見える箇所 | サーバーの制約に由来するもののみ(下の「主要な制約」と API 互換性一覧) |
データの互換
| 項目 | 内容 |
|---|---|
| スキーマ | upstream と同じ。スキーマの正は upstream のマイグレーションで、Worker はスキーマを変更しない |
| マイグレーション | upstream のマイグレーションを SQL に変換して同梱する。適用記録の形式も upstream と同じため、upstream で適用した DB と相互に引き継げる |
| 既存データ | 既存の Misskey の PostgreSQL をそのまま接続して使える |
| ID | upstream と同じ方式(aidx)で生成する。既存の DB では方式を変更しない |
主要な制約
upstream と挙動が異なる主な点です。エンドポイント単位の一覧は API 互換性一覧、その理由は Workers 固有の制約 にあります。
| 項目 | upstream | misskey-cf |
|---|---|---|
| データベース | PostgreSQL | PostgreSQL のみ。Cloudflare D1 は使えない(スキーマが PostgreSQL 固有の型に依存するため) |
| 全文検索 | Meilisearch など(任意) | SQL の部分一致のみ |
| チャート | 専用テーブルに記録 | 元のデータから都度集計。削除数と、連合・リクエスト数などイベント由来の系列は 0 |
| ランキング(注目ノート、トレンドなど) | Redis で集計 | PostgreSQL で同じ期間を集計した近似値 |
| タイムライン | Redis に保持 | PostgreSQL で同じ結果を返す。保持件数の上限は再現しない |
| 設定変更の反映 | 即時 | ほかの実行環境には最大 30 秒遅れて反映 |
| アップロード上限 | 250 MB(既定) | 100 MB(既定) |
| センシティブ画像の自動判定 | あり(任意) | なし |
| メール送信 | SMTP | Cloudflare Email Service。SMTP の設定は使われない |
| リアクションのバッファリング | あり(任意) | なし(常に即時反映) |
| ジョブキューの管理画面 | すべてのジョブを表示・操作 | 失敗・遅延したジョブのみ |
| サーバー情報 | マシンの CPU・メモリなど | 固定値 |
| 初期セットアップ | セットアップパスワードは任意 | セットアップパスワードが必須 |