Postgresの公式ドキュメントは網羅的だが、実務で詰まる論点にたどり着くまでが遠い。「クエリが遅いのではなく止まっている」ときに読みたいのはロックの章だけで、そこに行くまでに目次を何度も往復することになる。

pgbookpgrundev/pgbook・★56・MIT・Go製・2026-09-04時点)は、その論点だけを1ページに切り出してターミナルから1本ずつ読ませるCLIだ。pgbook read locks と打つと、ロックの話だけが端末に出る。リポジトリが作られたのは2026-09-02、v0.1.0のリリースはその翌日で、これを書いている時点で公開から2日しか経っていない。

この記事は紹介ではなく実際に v0.1.0 のバイナリを落として動かした記録である。★56という規模のとおり、できることは多くない。だからこそ「READMEに書いてあることのうち、いま本当に動くのはどこまでか」を確かめる価値がある。

pgbookの公開状況。READMEの目次は22項目だが pgbook list が返すトピックは8本。レベル別ではBeginner 1/6、Intermediate 6/8、Advanced 1/8
READMEの目次行数と pgbook list の実出力を突き合わせた。書き上がっているのは Intermediate に偏っており、初学者向けの章はまだほとんど埋まっていない。
30秒でわかるpgbook
・単一のGoバイナリ(macOS arm64 で 5.1MB)。Node も Postgres も要らない
・本文は pgbook.dev から取得。CLIはDBに接続もSQL実行もしない
・読めるのは8トピック。READMEの目次は22項目で、14項目は「in progress」
・READMEにある pgbook pdfまだ動かない(叩き先の /api/book が404)

学習コンテンツをCLIに載せる発想そのものは新しくない。むしろpgbookは「AIに要約させる」潮流とは逆を向いていて、人間が読む短い章をそのまま配る側に立っている。開発まわりの作業をどこまで道具に任せるかという全体の見取り図はAI自動化ツール|ノーコードからコードまで2026年版の比較と選び方にまとめている。

pgbookとは:Postgresの論点を1本ずつ配るGo製CLI

配布はGitHub Releasesのバイナリ、Homebrew、go install、インストールスクリプトの4通りある。バイナリを直接取るのがいちばん素性がはっきりしている。

# 公式リリースのバイナリを取る(macOS Apple Silicon)
curl -sfL -o pgbook.tar.gz \
  https://github.com/pgrundev/pgbook/releases/download/v0.1.0/pgbook_0.1.0_darwin_arm64.tar.gz
tar xzf pgbook.tar.gz
./pgbook --version
# → pgbook 0.1.0

Homebrew(brew install pgrundev/tap/pgbook)と go install github.com/pgrundev/pgbook@latest も用意されている。READMEの先頭は curl -fsSL https://pgbook.dev/install.sh | sh を勧めているが、スクリプトを読まずにシェルへ流し込む形なので、リリース資産を直接取るか go install を使うほうが素直だ。リリースには checksums.txt も付いている。

配布サイズは4プラットフォームで2.0〜2.3MBの範囲、展開後のバイナリは実測 5,080,290バイト(4.8MiB) だった。

配布経路は4つ。サイズは実測2.0〜2.3MB

経路 コマンド 実測サイズ 備考
GitHub Releases curl でtar.gzを取得 2.13 MB(darwin/arm64) checksums.txt 付き。展開後のバイナリは4.8MiB
Homebrew brew install pgrundev/tap/pgbook 独自tap
Go go install github.com/pgrundev/pgbook@latest 手元のGoでビルド
インストールスクリプト curl -fsSL https://pgbook.dev/install.sh \| sh READMEの推奨だが中身を読まずに実行することになる

リリース資産は macOS(amd64 / arm64)と Linux(amd64 / arm64)の4種で、いずれも 2,057,864〜2,274,272 バイトの範囲に収まっている。Windows 向けのバイナリは v0.1.0 時点では配布されていない。

pgbook list が返すのは8本

./pgbook list

実際の出力は次のとおり。

POSTGRES BOOK

01  Indexes                   beginner
02  Transactions & isolation  intermediate
03  JSON & JSONB              intermediate
04  Window functions          intermediate
05  Row-level security        intermediate
06  Vacuum & autovacuum       intermediate
07  Locks                     intermediate
08  Replication               advanced

Read a topic: pgbook read locks

READMEの目次は22項目あるが、pgbook list が返すのは8本だ。READMEは各行に「✅ pgbook read <slug>」か「in progress」を付けており、書き上がっていない14項目はMVCC・クエリプランナ・デッドロック・WALとチェックポイント・パーティショニング・接続プーリングなど、いずれも実務で効く論点が並んでいる。

READMEの番号(Locksは07、Indexesは04)とpgbook listの番号(Locksは07、Indexesは01)が一致しない点にも注意がいる。CLI側は書き上がった8本だけを1から振り直すので、READMEの番号を覚えて打っても意味がない。指定はスラッグ(locks / jsonb など)で行う。

8トピックの中身を APIの実データで確認する

GET /api/topics が返す内容をそのまま表にした(2026-09-04 実測・version: "0.1")。

# スラッグ タイトル レベル 想定読了 別名(alias) タグ
1 indexes Indexes beginner 8分 index / index-basics / btree performance, btree, explain
2 transactions Transactions & isolation intermediate 10分 isolation / transaction concurrency, mvcc, isolation
3 jsonb JSON & JSONB intermediate 9分 json / json-jsonb jsonb, gin, schema-design
4 window-functions Window functions intermediate 9分 windows / over / partition-by sql, analytics, aggregates
5 row-level-security Row-level security intermediate 10分 rls / row-security / policies security, multi-tenant, policies
6 vacuum Vacuum & autovacuum intermediate 10分 autovacuum / bloat mvcc, maintenance, bloat
7 locks Locks intermediate 10分 locking / lock / blocking concurrency, transactions, blocking
8 replication Replication advanced 11分 replicas / failover / standby wal, high-availability, streaming

合計77分。つまり現時点の「Postgres Book」は、通しで読んでも1時間20分足らずで読み切れる分量である。22項目すべてが埋まれば単純計算で3時間半前後になる計算だ。

内容の重心は明確で、8本中5本がMVCCまわり(transactions / vacuum / locks)と、それを前提にした運用の話に寄っている。タグの分布を見ても concurrency mvcc blocking bloat が繰り返し出てくる。「Postgresの入門書」ではなく「Postgresで実際に事故る場所の解説」という編集方針が、目次より先にこのメタデータから読み取れる。

aliases が効くので、pgbook read rls でも pgbook read row-security でも同じ章に着く。用語のゆれで空振りしないための配慮で、公式ドキュメントを引くときにいちばん困るところを潰しにいっている。

本文の見た目

pgbook read locks の冒頭は次のようになる。

LOCKS
Why a query is stuck, not slow

Intermediate · 10 min

WHAT POSTGRES LOCKS

A query that is "slow" every time has a plan problem. A query that is
usually instant but sometimes hangs has a lock problem.
本文は英語のみ
2026-09-04時点で日本語版は無く、CLIにも言語切り替えのオプションは見当たらない。1トピックあたりの想定読了時間は8〜11分と表示されるので、英語のまま読める分量ではあるが、日本語で読みたい向きには素直に不向きである。

pgbook search <語>(トピック横断の検索)と pgbook next(次のトピックへ進む)も動く。search index を実行すると4件がヒットし、next は最後に読んだ位置の次を出した。

オフラインで読めるのは「一度開いたトピック」だけ

READMEは「every topic you open is cached for offline reading」と書いている。これを陽性対照つきで確かめた。

pgbookのオフライン挙動。未キャッシュのjsonbは終了コード1で失敗、キャッシュ済みのlocksは終了コード0で表示される
HTTPS_PROXYHTTP_PROXY を閉じたポート(127.0.0.1:9)に向けて外向き通信を落とし、キャッシュの有無だけを変えて比較した。
# 通信を落とした状態で、まだ開いていないトピックを読む
HTTPS_PROXY=http://127.0.0.1:9 HTTP_PROXY=http://127.0.0.1:9 ./pgbook read jsonb
# → pgbook: cannot load topic "jsonb": Get "https://pgbook.dev/api/topics/jsonb":
#    proxyconnect tcp: dial tcp 127.0.0.1:9: connect: connection refused
条件 終了コード 結果
通信あり・未キャッシュの jsonb 0 本文が表示される(陽性対照)
通信なし・未キャッシュの jsonb 1 cannot load topic で失敗
通信なし・キャッシュ済みの locks 0 本文が表示される
通信なし・pgbook list 0 一覧が表示される
通信あり・存在しないスラッグ 1 エラー終了

キャッシュの実体は ~/.cache/pgbook/ にあり、topics.json(一覧・実測3,119バイト)と topics/<slug>.json(本文)に分かれていた。「オフラインで読める」は、事前に開いておいたトピックに限るということで、飛行機に乗る前に全部落としておくような一括取得コマンドは用意されていない。8本しかないので手で全部開けば済むが、章が増えたときは効いてくる差だ。

READMEに書かれていて、まだ動かない機能:pgbook pdf

READMEには pgbook pdf の節があり、期待される出力まで具体的に書かれている。

Downloading Postgres Book…

✓ Saved to ./postgres-book.pdf
  8 topics · 64 pages · version 0.1

--output / -o での保存先指定、上書き前の確認、一時ファイルへのダウンロードと成功後のリネーム、HTTPレスポンス・content type・ファイルサイズ・公開チェックサムの検証、失敗時の非ゼロ終了コード——挙動の仕様がひととおり列挙されている。実際に叩いてみた結果は次のとおりだった。

./pgbook pdf --output ./pb.pdf --force
# → pgbook: cannot fetch book metadata: https://pgbook.dev/api/book: not found

叩き先を直接確認すると、https://pgbook.dev/api/book404content-type: application/json)を返す。一方 https://pgbook.dev/api/topics200 で正常にJSONを返すので、サーバー自体は生きていて、このエンドポイントだけが存在しない。トップページのHTMLにもPDFへのリンクは見当たらなかった。

これは「壊れている」より「まだ無い」
リポジトリ作成が 2026-09-02、v0.1.0 のリリースが 2026-09-02、この検証が 2026-09-04。公開2日目である。READMEが実装より先に書かれている状態と読むのが妥当で、バグとして騒ぐ話ではない。ただしREADMEの記述をそのまま「できること」として読むと外れるので、導入判断の材料にするなら実際に叩いて確かめる必要がある。この記事の他の数値も同じ理由で、すべて実行して確認している。

公開APIの中身:ドキュメントとCLIとPDFが同じ原稿を見ている

pgbook は公開・読み取り専用のJSON APIを持っている。GET /api/topics の実測レスポンスは次の形だった。

{
  "version": "0.1",
  "topics": [
    {
      "slug": "indexes",
      "title": "Indexes",
      "description": "Why some queries are instant",
      "level": "beginner",
      "reading_minutes": 8,
      "order": 1,
      "aliases": ["index", "index-basics", "btree"],
      "tags": ["performance", "btree", "explain"]
    }
  ]
}

aliases があるので pgbook read index でも pgbook read btree でも同じ章に着く。READMEによれば、この API・CLIの本文・(将来の)PDF・Webサイトはすべて同じ topics/*.md から生成される。トピックは pgbook.dev から取得されるため、章が増えてもCLIを入れ直す必要がない——この設計のおかげで「CLIのバージョンと本の版がずれる」問題が起きにくい代わりに、上で見たとおり手元のバイナリだけでは何も読めないという依存が生まれている。

flowchart LR A["topics/*.md
(原稿)"] --> B["pgbook.dev
Web"] A --> C["/api/topics
公開JSON API"] A --> D["PDF
(/api/book は404)"] C --> E["pgbook CLI"] E --> F["~/.cache/pgbook/
topics/<slug>.json"] F --> G["オフラインで読める
(開いた章だけ)"]

誰に向いていて、誰に向いていないか

★56・公開2日目という前提を踏まえた評価を置いておく。

状況 判定 理由
ロック・VACUUM・分離レベルで詰まって今すぐ読みたい まさにその3本が書き上がっている側にある
Postgresをこれから学び始める Beginner は6項目中1項目しか書かれていない
日本語で読みたい 本文は英語のみ、切り替えオプションもない
オフライン環境に持ち込みたい 事前に開いた章だけ。一括取得コマンドは無い
PDFで通しで読みたい pgbook pdf の叩き先が404(2026-09-04時点)
自分のDBを診断したい CLIはDBに接続しない。読み物専用

Postgres本体を触る道具ではない点は繰り返しておきたい。稼働中のDBを覗きたいならsql-tapとは|アプリを無改修でSQLトラフィックをリアルタイムに覗くGo製プロキシ型TUI/Web監視ツールのようなプロキシ型の監視ツールが役割として近い。Postgres自体に機能を足す方向ならPgsemantic正式公開、PostgreSQLに即座にベクトル検索機能を実装Postgres LLMで「INSERTするだけでLLM処理」を実現するトリガー型OSSが別の入口になる。pgbookはそのどれとも重ならず、読むだけの道具として独立している。

まとめ:8本の完成度と、22本の約束を分けて読む

pgbookの設計判断は筋が通っている。DBに接続しないと決めたことで権限も設定も要らず、本文をサーバー側に置いたことで章を足すのにリリースが要らない。1章8〜11分という分量も、公式ドキュメントの章とは明確に違う狙いを示している。

一方で、いま手に入るのは22本の目次に対して8本であり、pgbook pdf は動かず、日本語もない。★56・公開2日目のOSSとしてはむしろ健全な状態だが、READMEを読んで期待する内容と、いま pgbook list が返す内容には差がある

判断としては「Intermediate の6本——ロック・分離レベル・JSONB・ウィンドウ関数・行レベルセキュリティ・VACUUM——が読みたいかどうか」に尽きる。そこが刺さるなら5MBのバイナリを置く価値はあるし、刺さらないなら残り14本が書かれるのを待ってからで遅くない。この記事の数値はすべて2026-09-04時点の実測なので、読む時点では章が増えている可能性が高い。pgbook list を叩けばその場で分かる。

参照ソース