NOTE: AIにまとめさせて加筆修正しました。コードは動作確認済み。参考リンク・情報ソースも確認済みです。
TL;DR(要約)
- 何これ?: 1つのPHPファイル(配布ファイルは
wiki-piplet.php)内にプログラム・UI・ノートデータがすべて同居する自己書き換え型Wiki。- 何がすごいの?: DB不要(MySQL不要)・ビルド不要・ライブラリ不要。ロード時間は数十ミリ秒台という超軽量・高ポータブル設計。
- なぜ作られた?: 複雑化しすぎた現代のWeb開発へのアンチテーゼとして、WordPress共同創設者Matt MullenwegがWordCamp USで再提示・公開した概念実証プロジェクト。
WebサイトやWebアプリケーションを立ち上げようとすると、データベース(MySQL等)の構築、パッケージマネージャー(npm, Composer)、ビルドツール(Vite, Webpack)、Dockerなどの複雑な環境設定が必要になるのが当たり前になっています。
そんな中、WordPressの共同創設者であるMatt MullenwegがWordCamp USのクロージング対談で再提示し、WordPress公式GitHub(WordPress/piplet)で公開された実験的プロジェクトが 「Piplet(ピプレット)」 です。
今回は、このユニークで革新的な「Piplet」の仕組み、特徴、誕生背景、そして動かし方までを分かりやすく解説します。
Pipletの概要:たった1つのPHPファイルで動くWiki
Pipletsは、「PHP、HTML、CSS、JavaScript、そしてすべてのデータ(ノート)が1つのファイルの中に同居する」 自己書き換え型のWikiアプリケーションです。
wiki-piplet.php
├── PHPによるデータ永続化とHTTP API
├── HTML、編集可能なCSS、ブラウザUI
├── __halt_compiler();
├── PIPLET-DATA/2
└── { generation(世代)、バージョン管理されたJSONノートデータ、外観設定 }
最大の特徴
- データベース不要: MySQLやSQLiteなどの外部DBは一切使いません。
- 依存関係ゼロ: Composerもnpmも不要で、外部ライブラリを一切読み込みません。
- ビルドステップ不要: トランスパイルやバンドル作業なしで即座に動作します。
- 超高速・超軽量: 外部通信もビルド済みアセットの読み込みもないため、わずか数十ミリ秒で軽快にロードされます。
どうやってデータを保存しているの?
「データベースがないなら、書いたノートはどこに保存されるの?」と疑問に思うかもしれません。
その秘密は、PHPの特殊な構文 __halt_compiler(); にあります。
<?php
// --- 前半:アプリケーション本体(PHP / HTML / JS / CSS) ---
// PHP処理やUIのコード...
?>
__halt_compiler();
PIPLET-DATA/2
{"format":2,"notes":{"welcome":{"title":"Hello, piplet","body":"..."}}}
__halt_compiler()より前: 通常のPHPプログラムやフロントエンドUIとして実行されます。__halt_compiler()より後: PHPコンパイラからは無視されるため、ここにJSON形式でノートデータが追記・保存されます。
ノートを作成・編集して保存すると、プログラム本体のコードを保持したまま末尾のJSONデータのみを書き換えた新しいファイルを作成し、アトミック(不可分)に自身を置き換えます。
自己書き換えなのに「壊れない」堅牢な設計
「自分自身を上書き保存する」と聞くと、「保存中にエラーが起きたらファイルが壊れるのでは?」と心配になるかもしれません。しかし、Pipletは徹底的に安全性を考慮して設計されています。
- アトミック置換(Atomic Rename): 保存時はまず同じディレクトリにプライベートな一時ファイルを作成し、
fsyncで確実にディスクに書き込んだ後、一瞬で元ファイルと置き換えます。保存途中で電源が落ちたりクラッシュしても、ファイルが中途半端に壊れることはありません(通常のプロセスクラッシュなら古い版か新しい版のいずれかが必ず残ります。ただし突然の電源断では、直前の保存が巻き戻る可能性はあります)。 - 排他ロックとinode再試行: 複数人が同時に保存してもファイルの書き込みが壊れないよう、
flockによるロック制御とファイル識別子(inode)の追跡を行っています。異なるノートの同時編集は問題なく、同じノートが競合した場合は HTTP 409 として検出・通知されます。 - セキュリティ対策: 厳格なContent Security Policy(CSP)により外部スクリプトの実行を遮断し、CSRF対策や同一オリジン分離、パスワードによるBasic認証を標準装備しています。
なぜ今、Pipletなのか? 〜誕生の背景とMatt Mullenwegの視点〜
WordPress公式ニュースの「WordCamp US 2026 Recap」やMatt Mullenwegの発表によると、Pipletには以下のような時代背景と思想が込められています。
- AIモデルが好む「シンプルで自己完結したファイル」への対応
AI時代において、複雑な多層構造のシステムよりも、単一の自己完結型ファイル(HTMLや単一スクリプト)の方がAIにとっても扱いやすく、理解しやすいという文脈があります。 - WordPressの進化(MySQL → SQLite → Playground)の延長線上にある実験
WordPressはこれまで、従来のMySQLからSQLite対応、そしてブラウザ上でWordPressを丸ごと動かす「WordPress Playground(WebAssembly)」へと軽量化・ポータブル化の実験を進めてきました。Pipletはそのさらに先にある「究極の単一アーティファクト(1ファイル・1プロセス)」の探求です。 - 将来構想:WordPress.org上のPipletディレクトリ
Matt Mullenwegは、将来的にWordPress.org上にユーザーがPipletを公開し、自由にフォーク(分岐)やリミックスができるディレクトリを設ける構想にも言及しています。 - Web開発の過剰な複雑化に対するアンチテーゼ
NotionやSubstackのようなクラウドSaaSに頼らずとも、index.phpを1つ持つだけで、自分のデータとアプリを完全に手元でコントロールできる自由を提供します。
実際に動かしてみよう!
Pipletを動かすのに必要なのは 64bit版のPHP 8.1以上 だけです。以下のいずれかの方法ですぐに試すことができます。
パターンA:【最速】ファイルを1つダウンロードして即起動
Pipletは単一ファイルなので、リポジトリ全体をクローンしなくても、curl でファイル1枚をダウンロードするだけで動かせます。
# 1. 適当な空ディレクトリを作って移動
mkdir my-piplet && cd my-piplet
# 2. wiki-piplet.php を1ファイルだけダウンロード
curl -O https://raw.githubusercontent.com/WordPress/piplet/main/wiki-piplet.php
# 3. パスワードを決めてPHP内蔵サーバーを起動
PIPLET_PASSWORD='your-password' php -S 127.0.0.1:8080 wiki-piplet.php
起動後、ブラウザで http://127.0.0.1:8080/wiki-piplet.php を開きます。 認証ダイアログが出たら、ユーザー名は任意(空欄または admin など)、パスワードに設定した文字列(例: your-password)を入力すれば完了です!
パターンB:【標準】Gitからクローンして動かす
テストスイートや非保護版(unsafe版)も含めてリポジトリ全体を手元にクローンしたい場合の手順です。
# 1. リポジトリをクローンして移動
git clone https://github.com/WordPress/piplet.git
cd piplet
# 2. 作業用ディレクトリを作成し、ファイルをコピー
# (※Pipletは自身を上書きするため、Git管理下の元ファイルを汚さないように別フォルダにコピーします)
mkdir piplet-local
cp wiki-piplet.php piplet-local/index.php
# 3. パスワードを指定して起動
PIPLET_PASSWORD='your-password' \
php -S 127.0.0.1:8080 -t piplet-local piplet-local/index.php
ブラウザで http://127.0.0.1:8080/ を開いてログインします。
パターンC:【Mac開発者向け】Laravel Valetで動かす
Laravel Valet環境をお使いの場合は、piplet-local ディレクトリに環境変数を設定してリンクするだけでHTTPS環境下で動作します。
cd piplet-local
valet link piplet
valet secure piplet
ディレクトリ内に .valet-env.php を作成し、パスワードを設定します:
<?php
return [
'*' => [
'PIPLET_PASSWORD' => 'your-password',
'PIPLET_PUBLIC_HTTPS' => '1',
],
];
これで https://piplet.test/ からアクセスできます。
まとめ
Pipletは、現在の巨大化したWordPress本体の代わりになるものではありません。しかし、「たった1つのファイルで、誰でも自由にWeb上に自分のノート空間を持てる」 という、Web本来の楽しさやシンプルさを思い出させてくれる素晴らしい実験的プロジェクトです。
自分用のメモ帳、社内の一時的なナレッジ共有、あるいは「PHPでここまでできるのか!」という技術的な学習リファレンスとして、ぜひ一度手元で動かしてみてはいかがでしょうか。
参考リンク・情報ソース
Pipletに関する公式リソースや、公開・発表の背景が確認できるリンクです。
- WordPress.org 公式ニュース(公式Recap)
WordPress.org News: WordCamp US 2026 Recap
※ 公式レポート内で、Matt Mullenwegが「AI時代における自己完結型ファイル」「MySQL→SQLite→Playgroundに続く実験」「将来のディレクトリ構想」としてPipletを紹介したことが明記されています。 - GitHub 公式リポジトリ
WordPress/piplet (GitHub)
※ ソースコード、テストスイート、アーキテクチャ仕様が公開されています。 - 解説記事(The WP Clan)
The WP Clan: WordPress Piplets: The Revived 2007 Single-File Thesis
※ WordCamp USのクロージング対談でMatt MullenwegがPipletを再提示した経緯や設計思想が詳しく解説されています。 - Matt Mullenweg 公式サイト・ブログ
ma.tt
※ WordPress共同創設者 Matt Mullenweg の公式ブログ。 - WordPress.tv
WordPress.tv
※ WordCamp US のクロージング対談(Fireside Chat)等の動画アーカイブ。