プラグイン概要
このページで分かること
- プラグインでできること(イベントへの反応、データの保存、管理画面へのページの追加、APIルート、外部APIの呼び出し、メールの送信)
- サンドボックス型プラグインとネイティブ型プラグインの違いと、どちらを選ぶかの目安
- サイトの運営者向け・プラグインの作者向けに、次に読むページ
このページの目次
プラグインは、決められた拡張の仕組みを通してEmDashを拡張します。コンテンツのライフサイクルのイベントに反応し、独自のデータを保存し、管理者向けに設定を公開し、管理画面にページを追加し、APIルートを提供できます。
プラグインでできること
- イベントへの反応:コンテンツの保存、メディアのアップロード、コメントのモデレーション、スケジュールされたタスク、プラグインのライフサイクルのイベントに応じてコードを実行します。
- データの保存:インデックス付きのコレクションに、プラグイン独自のレコードを保存します。設定や状態の保存には、プラグインごとのキーバリューストアも使えます。
- 管理画面へのページの追加:管理画面にページとダッシュボードのウィジェットを追加します。設定のフォームは自動で生成されます。
- APIルートの提供:管理画面のUIや外部との連携のために、
/_emdash/api/plugins/<id>/<route>以下にエンドポイントを公開します。 - 外部APIの呼び出し:宣言した許可ホストのリストの範囲で、HTTPリクエストを送信します。
- メールの送信:設定されているメールの送信サービスを通して、トランザクションメールを送信します。
2種類のプラグイン
EmDashのプラグインには、2つの形式があります。
- サンドボックス型プラグイン は、設定したサンドボックスランナーが管理する、別の実行環境で動きます。管理者はプラグインレジストリからインストールでき、サイトの開発者は
astro.config.mjsのsandboxed: []に登録できます。ランナーは、プラグインが使えるEmDashのAPIを宣言したものに限定し、プラットフォームが対応するリソースの制限を適用します。 - ネイティブ型プラグイン は、Astroのサイトと同じプロセスで動きます。実行環境に完全にアクセスでき、Reactの管理画面のページやPortable Textの描画コンポーネントを含められ、公開ページにHTMLを挿入できます。npmから
astro.config.mjsを通してインストールし、デプロイが必要です。
Reactの管理画面のページ、Portable Textの描画コンポーネント、ページフラグメント、サイトのプロセスへの直接のアクセスのいずれかが必要な場合を除き、サンドボックス型プラグインを選びます。プラグインを作る場合は、プラグイン形式の選び方を参照してください。
本サイトの補足
やさしい解説
WordPressのプラグインは、サイト全体にアクセスできる状態で動きます。EmDashのサンドボックス型プラグインは、サイト本体から切り離された環境で動き、宣言した機能だけを使えます。管理画面のレジストリからインストールできるのも、このサンドボックス型です。ネイティブ型プラグインはサイトと同じプロセスで動き、できることが多い代わりに、npmでインストールしてデプロイし直す必要があります。
サイトの運営者向け
自分のサイトにプラグインをインストール・設定する場合:
- プラグインのインストール:インストール元を選び、サンドボックスを設定し、権限を確認し、更新を管理します。
プラグインの作者向け
プラグインを作る場合:
- プラグイン形式の選び方:サンドボックス型とネイティブ型の比較。ここから始めます。
- はじめてのサンドボックス型プラグイン:hello-worldのサンドボックス型プラグインを作り、登録して動かします。
- ネイティブ型プラグインの作成:Reactの管理画面、Portable Textのコンポーネント、ページフラグメントが必要な場合。