🐘 PG-PAD ・ POSTGRESQL ON WASM
ブラウザ の 中 で、
本物 の PostgreSQL が 動く。
サーバー も インストール も 登録 も 不要。 PGlite (WASM 版 PostgreSQL) を 読み込んで、 JOIN ・ 集約 ・ ウィンドウ関数 ・ EXPLAIN まで 本物 の SQL を その場 で 実行 できる プレイグラウンド です。
仕組み
WASM で Postgres を 読む
ページ を 開く と、 PostgreSQL を まるごと WebAssembly に ビルド した 『PGlite』 (約 3.7MB) を CDN から 読み込む。 これ は エミュレータ や 簡易 SQL では なく、 本物 の PostgreSQL エンジン そのもの。 一度 読み込め ば、 以降 は ネットワーク も サーバー も 使わ ず、 あなた の ブラウザ の 中 だけ で 動く。
本物 の SQL を 実行
標準 的 な PostgreSQL の SQL が ほぼ そのまま 使える。 CREATE TABLE / INSERT は もちろん、 複数 テーブル の JOIN、 GROUP BY 集約、 RANK() などの ウィンドウ関数、 CTE (WITH 句)、 EXPLAIN による 実行計画 の 確認 まで。 初期 状態 で 社員 ・ プロジェクト の サンプル テーブル が 入って いる ので、 開いて すぐ 試せる。
結果 を 表 で 確認
クエリ を 実行 する と、 返って きた 行 が その場 で 表 に 描画 さ れる。 実行 文 数 ・ 行数 ・ 実行 時間 (ms) も 表示。 自分 で テーブル を 作り 直しても よい し、 『データ リセット』 で いつでも 初期 状態 に 戻せる。 Ctrl / ⌘ + Enter で 即 実行。
すべて 端末 内 で 安全
入力 した SQL も、 作った データ も、 一文字 も サーバー に 送ら れ ない。 PostgreSQL エンジン 自体 が ブラウザ の 中 で 動いて いる ので、 機密 性 の ある スキーマ や データ を 安心 して 試せる。 アカウント 登録 も 不要。 開発者ツール の Network タブ で、 起動 後 は 通信 が 発生 し ない こと を 確認 できる。
よく ある 質問
Q1
SQL道場 と は 何 が 違う?
SQL道場 は 段階 的 な レッスン で SQL を 学ぶ 『教材』。 pg-pad は 教材 では なく、 本物 の PostgreSQL が 丸ごと 動く 『自由 な 実行 環境 (プレイグラウンド)』 です。 自分 で 好きな テーブル を 作り、 好きな クエリ を 投げ、 EXPLAIN で 実行計画 を 見る ── といった、 手元 に DB を 立てず に 試したい 場面 に 向く。 学び 始め は SQL道場、 自由 に 触り たく なったら pg-pad、 という 使い分け。
Q2
本当 に 本物 の PostgreSQL?
はい。 PGlite は PostgreSQL の ソース を WebAssembly に コンパイル した もので、 SQLite や 自作 パーサ では なく PostgreSQL エンジン そのもの が 動いて いる。 だから ウィンドウ関数 ・ CTE ・ JSON 型 ・ 多く の 組み込み 関数 など、 PostgreSQL 固有 の 機能 が そのまま 使える。 SELECT version() で バージョン も 確認 できる。
Q3
データ は 保存 さ れる?
現在 は メモリ 上 で 動作 する ため、 ページ を 再読み込み する と 初期 状態 に 戻る (= いつでも まっさら から 試せる)。 入力 や データ は サーバー に 送ら れ ず、 端末 内 で 完結 する。 永続 化 し たい 場合 は ローカル に エクスポート する 等 の 拡張 を 今後 検討。
Q4
重く ない?
初回 のみ WASM 本体 (約 3.7MB) を 読み込む ため 数秒 かかる が、 一度 読み込め ば クエリ は 高速。 GPU や 特別 な 環境 は 不要 で、 一般 的 な PC / スマホ の ブラウザ で 動く。
Q5
ai-lab の 他 サービス と の 関係 は?
ブラウザ内 で 重い ランタイム を 動かす シリーズ。 Python REPL の py-pad (Pyodide / CPython on WASM) と 対 で、 pg-pad は PostgreSQL on WASM を 受け持つ 姉妹 サービス。 『サーバー なし で 本物 の 言語 / DB が 動く』 という 同じ 驚き を、 Python と SQL の 両 軸 で 提供 する。