エピソード

  • #34: PostgreSQLのロック:アプリ開発の「はまりどころ」から内部実装まで(後編)
    2026/06/09

    PostgreSQLのロックの仕組みについて、データベース内部実装(SpinlockやLWLockなど)のディープな世界を深掘りする2回エピソードの後編です。


    今回は、DBAやデータベース開発者、並行プログラミングに関心がある方向けに、PostgreSQLの内部的な排他制御を解説します。CPUのアトミック命令であるCAS (Compare-and-Swap) を前提知識として、WAL (Write-Ahead Logging)の書き込みなどで使われ競合時にスリープする「Lightweight Lock (LWLock)」と、スリープせずにCPUを回し続けてロック獲得を待つ「Spinlock」の仕組みや用途の違いを整理します。


    さらに、Linux 7.0環境で話題になったPostgreSQLの性能劣化問題の真相に迫ります。カーネルのスケジューラ変更(プリエンプションの挙動変化)がSpinlockに与えた影響や、PostgreSQLコミッタが指摘する、Spinlockをfutexに置き換えることの構造的な難しさを紹介します。また、この性能劣化報告の根本的な原因が「Huge Pages」の未設定によるTLBミスとページテーブル探索のオーバーヘッドにあったことを挙げ、OS・CPUレベルの適切なパラメータ設定がいかに重要であるかを議論します。


    PostgreSQL内部実装 / CAS命令 (Compare-and-Swap) / Lightweight Lock (LWLock) / Spinlock / WAL書き込み / Linux 7.0性能劣化問題 / プリエンプション / futex / Huge Pages / パラメータチューニング


    参考リンク

    • ⁠PostgreSQLのロックでハマりがちな挙動5選⁠
    • ⁠AWS Engineer Reports PostgreSQL Performance Halved By Linux 7.0, But A Fix May Not Be Easy⁠
    • ⁠I really dislike the use of spinlocks in postgres
    続きを読む 一部表示
    30 分
  • #33: PostgreSQLのロック:アプリ開発の「はまりどころ」から内部実装まで(前編)
    2026/05/26

    PostgreSQLのロックの仕組みについて、アプリケーション開発者向けの視点から、データベース内部実装(SpinlockやLWLockなど)のディープな世界までを2回に分けて深掘りします。


    前編となる今回は、アプリケーション開発者が気を付けるべき「はまりどころ」を解説します。複数トランザクションの同時更新や本番環境でのDDL(ALTER TABLEなど)実行時など、ロックの理解が不可欠なケースを取り上げ、4種類のテーブルロックと行ロック(FOR UPDATE)の基本を整理します。


    さらに、実践的な5つのトラブルケースとその対策を紹介します。長時間のSELECTとALTER TABLEが引き起こす連鎖的なブロックや、外部キー・ユニーク制約の暗黙的ロックによるINSERT同士のデッドロックを解説します。また、例外的に自動キャンセルされない「トランザクションID周回防止バキューム」や、テーブルファイル末尾のページ切り詰め処理に潜む罠など、予期せぬサービス停止を防ぐための知識を議論します。


    PostgreSQLのロック / MVCC / テーブルロックと行ロック / FOR UPDATE / Access Exclusive / デッドロック / ALTER TABLEの連鎖ブロック / 外部キー・ユニーク制約の暗黙的ロック / トランザクションID周回防止バキューム / ページ切り詰め


    参考リンク

    • PostgreSQLのロックでハマりがちな挙動5選
    • AWS Engineer Reports PostgreSQL Performance Halved By Linux 7.0, But A Fix May Not Be Easy
    • I really dislike the use of spinlocks in postgres
    続きを読む 一部表示
    44 分
  • #32: AIエージェントのためのサンドボックス入門! Boundary、Policy、Lifecycleの3軸と Claude Code / Codex Sandbox の裏側や設定上の注意について
    2026/05/12

    Lonが「A Field Guide to Sandboxes for AI」というMistral AIのエンジニア Luisさんが書いたブログを紹介しながら、AIエージェントを安全に実行するためのサンドボックス環境について勉強した内容を共有しています。サンドボックスを正しく理解するための3つの軸(Boundary、Policy、Lifecycle)と、4種類のBoundary(コンテナ、gVisor、microVM、Wasm)の違いを学びます。また、Claude CodeやCodexが採用しているSeatbelt(Mac)やBubblewrap(Linux)についても紹介しています。


    配信プラットフォーム追加のお知らせ / サンドボックスとは何か / Boundaryの4種類 / コンテナの仕組み(namespaces、capabilities、cgroups、seccomp) / gVisorとSentry / microVMとゲストカーネル / WebAssembly / Policyの重要性 / Lifecycle / Claude CodeのサンドボックスとSeatbelt・Bubblewrap / Credentialの安全な扱い方 / Proxyパターン


    補足・訂正

    • Wasm の説明で「ランタイムで定義されたシステムコールだけがホストカーネルを呼ぶ」と表現しましたが、正確には Wasm モジュール自体は system call を行えず、WASI (WebAssembly System Interface) API を介してランタイムが host system call に翻訳する形になります。


    参考リンク

    • A Field Guide to Sandboxes for AI: https://www.luiscardoso.dev/blog/sandboxes-for-ai

    • Claude Code Sandboxing: https://code.claude.com/docs/en/sandboxing

    • Securely Deploying AI Agents (Claude Code): https://code.claude.com/docs/en/agent-sdk/secure-deployment#containers

    • WebAssembly System Interface (WASI): https://wasi.dev/

    続きを読む 一部表示
    40 分
  • #31: システムや機能の「非推奨と廃止」はどう進める?Google/Kubernetes/SQL Server/PostgreSQLに学ぶコードの終活
    2026/04/28

    システムや機能の「非推奨」と「廃止」について議論します。PostgreSQLに20年以上前から残る古いCOPY構文を削除したいという課題意識から出発し、様々なプロダクトの機能廃止ポリシーを比較します。O'Reilly『Googleのソフトウェアエンジニアリング』で語られる「コードは資産ではなく債務である」という考え方や、廃止を難しくする3つの要因、そして勧告的廃止と強制的廃止の違いについて解説します。さらに、Kubernetesにおける厳格なAPI・メトリクスの廃止ルールとそれを活用したGKEの自動アップグレードの仕組み、SQL Serverの非推奨機能のトラッキング機能などを紹介します。最後に、明確な廃止ルールのないPostgreSQLの現状に触れ、今後の「非推奨機能の使用統計を取る機能」の提案に向けた展望について語ります。


    システム・機能の非推奨と廃止 / Googleのソフトウェアエンジニアリング / コードは資産ではなく債務 / 勧告的廃止と強制的廃止 / KubernetesのAPI Deprecation Policy / GKEの自動アップグレード機能 / SQL Serverの非推奨機能メトリクス / PostgreSQLの廃止ポリシー


    参考リンク

    • Googleのソフトウェアエンジニアリング
    • Kubernetes Deprecation Policy
    • Google Kubernetes Engine (GKE) | Feature and API deprecations
    • SQL Server, Deprecated Features object
    • PostgreSQL: A deprecation policy


    続きを読む 一部表示
    35 分
  • #30: Claude Code を活用するためのスキルパック gstack - その思想と哲学を読み解く
    2026/04/14

    Y Combinator CEO の Garry Tan が公開した Claude Code 向けスキルパック「gstack」について紹介します。gstack は think, plan, build, review, test, ship, reflect というスプリントを回すためのプロセスを定義したものです。ETHOS.md に書かれた「Boil the Lake」「Search Before Building」「User Sovereignty」という3つの哲学や、CEO レビュー・エンジニアレビューなど様々な役割を持つスキルの設計思想について深掘りしました。


    gstack / ETHOS.md / Boil the Lake / Claude Code スキルパック / Y Combinator / Garry Tan / AI エージェント / User Sovereignty


    参考リンク

    • gstack GitHub リポジトリ: https://github.com/garrytan/gstack/tree/main

    • Boil the Ocean (Garry Tan のブログ記事): https://garryslist.org/posts/boil-the-ocean

    続きを読む 一部表示
    34 分
  • #29: PostgreSQL向けMCPサーバーを比較してみた (後編: 自作MCPサーバ開発)
    2026/03/31

    データベース向けMCP (Model Context Protocol)サーバーについて読み解く2回エピソードの後編となる今回は、PostgreSQLエンジニアのShinyaが自作した「PostgreSQL開発補助用MCPサーバー」のアーキテクチャや設計思想について深掘りします。


    PostgreSQLの開発はメーリングリスト(pgsql-hackers)で行われており、情報の検索性やAIエージェントからのアクセスに課題がありました。この課題を解決するため、Claudeと壁打ちしながら設計を進めたプロセスを紹介します。


    pg_trgm(3文字区切り)やtsvector(単語区切り)といったPostgreSQLの組み込み・拡張機能を用いた強力な全文検索インデックスの活用方法について、データベースエンジニアの視点から解説します。また、長大な引用メールによるトークン消費問題などの課題や、MCPサーバー実装での学びについても議論します。


    PostgreSQL開発とメーリングリスト / 自作MCPサーバー / Claudeとの壁打ち設計 / FastMCP / pg_trgmとtsvectorによる全文検索 / 長大な引用とトークン消費問題

    続きを読む 一部表示
    36 分
  • #28: PostgreSQL向けMCPサーバーを比較してみた (前編: DBHubブログ解説)
    2026/03/18

    DBHub が公開したテックブログを元に、PostgreSQL 向け MCP (Model Context Protocol) サーバーの現状について読み解きます。2回に分けたエピソードの前編となる今回は、Google のToolBox for Databases、Supabase、そして DBHub の3つの MCP サーバーの実装と特徴を比較します。各サーバーにおけるコンテキストウィンドウ(トークン消費量)節約の工夫や、OIDC 認証と RLS (Row-Level Security) を連携させたアクセス制御について解説します。さらに、MCP を経由した SQL インジェクションやプロンプトインジェクションの実例を挙げ、AI エージェントにおける最小権限の原則などセキュリティ対策の重要性について議論します。


    なお、冒頭では番組の隔週配信化とクオリティ向上への取り組みについても報告しています。


    番組の隔週配信化 / MCP (Model Context Protocol) とデータベース / Google ToolBox for Databases / OIDC 認証と RLS (Row-Level Security) / Supabase MCP サーバー / DBHub とトークン消費の最適化 / MCP 経由の SQL インジェクション / プロンプトインジェクションと AI エージェントの権限管理


    参考リンク

    • The State of Postgres MCP Servers in 2025
    • googleapis/genai-toolbox
    • supabase-community/supabase-mcp
    • MCP vulnerability case study: SQL injection in the Postgres MCP server
    • Supabase MCP can leak your entire SQL database


    続きを読む 一部表示
    32 分
  • #27: バーで対面雑談!キャリア・開発環境・ガジェットをゆるく語る
    2026/03/10

    今回も引き続きポッドキャストバー「雑談」での対面収録。対面での収録はリモートと比べて話しやすく、アイコンタクトや目配せができるなど、コミュニケーションの違いを実感しました。キャリアの深掘りとして、お互いが情報系・物理系に進んだきっかけや、 Shinya がデータベースを選んだ理由について語り合いました。また、開発環境やガジェット、エディター、便利ツール、仕事での英語使用、最近ハマっていることなど、幅広いトピックについて雑談しました。


    対面収録の感想 / キャリアの原点(情報系・物理系を選んだ理由) / ガジェット紹介(キーボード・ディスプレイ・椅子) / VS CodeとVim / Coding agent (Claude Code・Gemini CLI・CodeX) / 仕事での英語 / 最近ハマっているもの

    続きを読む 一部表示
    37 分