EmDashを紹介 — プラグインのセキュリティを解決する、WordPressの精神的後継
ソフトウェアを構築するコストは劇的に下がりました。私たちは最近、AIコーディングエージェントを使って1週間でNext.jsを再構築しました。しかし過去2か月間、エージェント達はさらに野心的なプロジェクトに取り組んでいました:WordPressオープンソースプロジェクトを一から再構築することです。
WordPressはインターネットの40%以上を支えています。それは誰もが発信者になれることを可能にし、世界中にWordPress開発者のコミュニティを生み出した大成功です。しかしWordPressのオープンソースプロジェクトは今年で24年になります。この間にウェブサイトのホスティングは大きく変わりました。WordPressが生まれたとき、AWS EC2は存在していませんでした。それ以降、このタスクは仮想プライベートサーバのレンタルから、ほぼコスト無でグローバルに配布されたネットワークへJavaScriptバンドルをアップロードする形へと移行しました。最も人気のあるCMSをこの変化に合わせてアップグレードする時です。
私たちがこの新しいCMSに付けた名前はEmDashです。これをWordPressの精神的な後継と考えています。EmDashは完全にTypeScriptで書かれています。サーバーレスで動作しますが、自分のハードウェアや任意のプラットフォーム上でも実行できます。プラグインは安全にサンドボックス化され、それぞれ独立したisolateで動作できるDynamic Workersを通じて実行されるため、WordPressプラグインアーキテクチャの根本的なセキュリティ問題を解決します。内部では、EmDashはコンテンツ駆動型のウェブサイト向けで最速のフレームワークであるAstroによって駆動されています。EmDashは完全にオープンソースでMITライセンス、GitHubで公開されています。
EmDashはWordPressの機能互換を目指しますが、EmDashの作成にWordPressのコードは一切使われていません。これにより、オープンソースプロジェクトをより寛容なMITライセンスで公開することができます。多くの開発者がEmDashを適応・拡張・参加しやすくなることを期待しています。
EmDash v0.1.0プレビューは、あなたのCloudflareアカウントや任意のNode.jsサーバに、早期開発者ベータの一環として今日デプロイできます。また、EmDash Playgroundで管理画面を試すこともできます。
WordPressが成し遂げたこと
WordPressの物語は、これまでにない規模での公開を可能にしたオープンソースの勝利です。インターネットで育った世代に対して同じくらい認知される影響を与えたプロジェクトは少ないでしょう。WordPressコアへの貢献者と多数のプラグイン/テーマ開発者は、何百万もの人々に公開を民主化するプラットフォームを構築しました。多くの人生や生計がこの普及したソフトウェアによって変わりました。
WordPressには常に居場所がありますが、コンテンツ公開の世界にはもっと成長の余地があります。10年前、人々がキーボードを手にするとき、普遍的にWordPressでブログを公開することを学びました。今日では同じように、その人はAstroや他のTypeScriptフレームワークを手に取り学び、構築することもあります。エコシステムには、幅広いオーディエンスを力づける選択肢が必要であり、それは23年前にWordPressが必要とされたのと同じです。
EmDashはWordPressが生み出したものに基づいて構築することを約束します:誰でも低コストでインストール・利用できるオープンソースの公開スタックであり、WordPress自体では解決できない中核的な問題を修正します。
WordPressプラグインのセキュリティ危機を解決する
WordPressのプラグインアーキテクチャは根本的に安全ではありません。WordPressサイトのセキュリティ問題の96%はプラグインに起因しています。2025年には、WordPressエコシステムで発見された高深刻度の脆弱性が過去2年の合計を上回りました。
なぜ、20年以上経ってもWordPressのプラグインセキュリティはこれほど問題なのか?
WordPressプラグインは、WordPressに直接フックするPHPスクリプトです。隔離がなく、プラグインはサイトのデータベースやファイルシステムに直接アクセスできます。プラグインをインストールすると、ほとんどすべてへのアクセスを委ね、あらゆる悪意ある入力やエッジケースを完璧に処理することを信頼していることになります。
EmDashはこれを解決します。EmDashでは、各プラグインはそれぞれ独立したサンドボックス(Dynamic Worker)で実行されます。基盤となるデータへの直接アクセスを与える代わりに、EmDashはプラグインがマニフェストで明示的に宣言した必要なものに基づいて、bindingsを介して機能(capabilities)を提供します。
このセキュリティモデルには厳格な保証があります:EmDashプラグインはマニフェストで明示的に宣言されたアクションしか実行できません。OAuthフローでサードパーティアプリに特定のスコープ付き権限を付与するように、プラグインをインストールする前に何を許可するかを正確に知り、信頼できます。
例えば、コンテンツが保存された後にメールを送信するプラグインは次のようになります:
import { definePlugin } from "emdash";
export default () => definePlugin({
id: "notify-on-publish",
version: "1.0.0",
capabilities: ["read:content", "email:send"],
hooks: {
"content:afterSave": async (event, ctx) => {
if (event.collection !== "posts" || event.content.status !== "published") return;
await ctx.email!.send({
to: "[email protected]",
subject: `New post published: ${event.content.title}`,
text: `"${event.content.title}" is now live.`,
});
ctx.log.info(`Notified editors about ${event.content.id}`);
},
},
});
このプラグインは明示的に2つの能力を要求しています:コンテンツライフサイクルにフックする read:content と content:afterSave、および ctx.email 関数にアクセスするための email:send。プラグインはこれらの能力以外のことを行うことは不可能です。外部ネットワークへのアクセスはありません。ネットワークアクセスが必要な場合は、定義の一部として通信する必要のある正確なホスト名を指定でき、特定のホスト名との通信のみが許可されます。いずれの場合も、プラグインのニーズは静的に事前宣言されるため、インストール時にそのプラグインがどの権限を求めているかが常に明確です。
プラットフォームや管理者は、承認された安全なプラグインの許可リストではなく、リクエストされた権限に基づいて特定のユーザーグループがインストールできるプラグインを定義するルールを設けることもできます。
プラグインのセキュリティを解決することはマーケットプレイスのロックインを解消すること
WordPressのプラグインセキュリティは非常に現実的なリスクであるため、WordPress.orgはマーケットプレイスの各プラグインを手動でレビューして承認しています。執筆時点でレビューキューは800以上のプラグインがあり、通過するのに少なくとも2週間かかります。WordPressプラグインの脆弱性のサーフェスは非常に広いため、実際には関係者全員がマーケットプレイスの評判、評価、レビューに頼っています。
さらに、WordPressプラグインはWordPress自体と同じ実行コンテキストで動作し、WordPressコードと深く絡み合っているため、一部ではGPLライセンスを引き継がなければならないと主張されます。これらの現実は、プラグインを作る開発者やWordPressサイトをホストするプラットフォームに寒心効果を生み出します。プラグインセキュリティがこの問題の根本です。
マーケットプレイスは、当事者が互いに簡単に信頼できないときに信頼を提供します。WordPressマーケットプレイスの場合、プラグインのセキュリティリスクが非常に大きく高確率であるため、多くの顧客はマーケットプレイス経由でのみプラグインを合理的に信頼できます。しかしマーケットプレイスに参加するには、あなたのコードをそのマーケットプレイス以外では無料で公開することを強制するようなライセンスである必要が出てきます。結果としてロックインが生じます。
EmDashプラグインには、このマーケットプレイスのロックインを緩和する2つの重要な特性があります:
- プラグインは任意のライセンスにできる:プラグインはEmDashから独立して実行され、コードを共有しません。ライセンスはプラグイン作者の選択です。
- プラグインコードは安全なサンドボックスで独立して動作する:プラグインはEmDashサイトに提供され、信頼できるが、そのEmDashサイトがコードを直接見る必要はありません。
最初の部分は単純です — プラグイン作者として、NPM、PyPi、Packagistなどのレジストリに公開するときと同じように、好きなライセンスを選べます。これは全員に開かれたエコシステムであり、プラグインとテーマのライセンスはコミュニティ次第であり、EmDashプロジェクトが一方的に決めるものではありません。
2つ目の部分こそがEmDashのプラグインアーキテクチャが中央集権的なマーケットプレイスから解放される点です。開発者はプラグインを使用・信頼する判断を下す際に、第三者のマーケットプレイスが十分に審査していることに頼る必要が少なくなります。
先ほどのメール送信プラグインの例を考えてください。プラグインは以下を宣言しています:
- 実行されるフック:
content:afterSave
- 要求する能力の1:
read:content
- 要求する能力の2:
email:send
プラグインは何万行ものコードを含んでいるかもしれませんが、WordPressプラグインのようにすべてにアクセスでき公開インターネットに自由に接続できるわけではありません。プラグインを追加する人は与えられるアクセスが正確に何であるかを知っています。明確に定義された境界は、セキュリティリスクに関して情報に基づいた決定を下すことを可能にし、プラグインに与えられた能力に直接関係するより具体的なリスクに絞り込むことを容易にします。
サイトやプラットフォームの双方がこのセキュリティモデルを信頼して制約を提供できるほど、サイトやプラットフォームはプラグインをより信頼できるようになり、マーケットプレイスと評判の中央集権的な管理から解き放たれます。
別の言い方をすると:街で食品衛生が確実に施行されていると信頼できれば、あなたは新しい店を冒険的に試すでしょう。スープの中に異物が混入されているかもしれないと信頼できなければ、新しい店に行くたびにGoogleで調べてしまい、新しいレストランを開くのは誰にとっても難しくなります。
すべてのEmDashサイトはx402対応を内蔵 — コンテンツへの課金を可能にする
ウェブのビジネスモデル、特にコンテンツ作成者や出版社のビジネスモデルは危機に瀕しています。トラフィックと引き換えにすべてのクライアントにコンテンツを無料で提供する古いやり方は、人間がサイトを見て広告を表示できないとき、クライアントが代わりにエージェントとしてウェブにアクセスする状況では破綻します。クリエイターはこの新しいエージェントの世界でお金を稼ぎ続ける方法を必要としており、人々のエージェントが必要とし支払うような新しい種類のウェブサイトを構築する必要があります。
何十年か前、新しい波のクリエイター達がウェブサイトを作り、それが優れたビジネスになりました(多くはWordPressを利用)。今日も似たような機会が存在します。
x402はインターネットネイティブな支払いのための公開で中立な標準です。これにより、インターネット上の誰もが容易に課金でき、クライアントはオンデマンドのペイパーユースで支払えます。クライアント(エージェントなど)はHTTPリクエストを送り、HTTP 402 Payment Requiredステータスコードを受け取ります。応答としてクライアントがアクセスの対価を支払うと、サーバは要求されたコンテンツへのアクセスを許可できます。
EmDashはx402を組み込みでサポートしています。これにより、EmDashサイトを持つ誰もが購読を必要とせず、エンジニアリング作業なしにコンテンツへのアクセスに課金できます。必要なのは、課金を必要とするコンテンツの設定、金額の設定、ウォレットアドレスの提供だけです。リクエスト/レスポンスのフローは次のようになります。
EmDashのすべてのサイトはAI時代のための組み込みのビジネスモデルを持ちます。
WordPressホスティングプラットフォームのscale-to-zero問題を解決する
WordPressはサーバーレスではありません:従来のウェブアプリケーションのようにサーバーのプロビジョニングと管理、スケールアップとダウンが必要です。パフォーマンスを最大化し、トラフィックスパイクに対応するには、事前にインスタンスをプロビジョニングして一定量のアイドルコンピュートを確保するか、性能を制限する形でリソースを共有する必要を避けられません。これは特に、サーバーサイドレンダリングが必須でキャッシュできないコンテンツを持つサイトに当てはまります。
EmDashは異なります:サーバーレスプラットフォーム上で動作するように構築され、Cloudflareのオープンソースランタイムworkerdのv8 isolateアーキテクチャを最大限に活用するよう設計されています。着信リクエスト時にWorkersランタイムは瞬時にisolateをスピンアップしてコードを実行しレスポンスを返します。リクエストがなければゼロにスケールバックし、実際に作業したCPU時間分のみが課金されます。
EmDashはどこでも(任意のNode.jsサーバ上でも)実行できますが、Cloudflare上では何百万...