Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
武田 憲太郎
September 03, 2026
Programming
170
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
LL言語やWebフレームワークの PostgreSQL対応 〜DBの機能がユーザーに届くまで〜
第57回 PostgreSQLアンカンファレンス@オンライン
2026-09-03 21:40 -
https://pgunconf.connpass.com/event/402653/
武田 憲太郎
September 03, 2026
More Decks by 武田 憲太郎
See All by 武田 憲太郎
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
1.1k
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
2
540
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
6
3.1k
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
2.2k
php-src is waitingfor your contribution or: How to Level Up Your PHP Skills with php-src
kentaroutakeda
0
120
REST API設計の実践 – ベストプラクティスとその落とし穴
kentaroutakeda
4
2.3k
Inertia.jsのサーバサイド実装から学ぶ依存逆転原則の応用
kentaroutakeda
1
250
私の愛したLaravel 〜レールを超えたその先へ〜
kentaroutakeda
13
6.7k
見えないメモリを観測する: PHP 8.4 `pg_result_memory_size()` とSQL結果のメモリ管理
kentaroutakeda
0
2.5k
Other Decks in Programming
See All in Programming
App Storeの外へ──日本のiOSサイドローディング入門 for iOSDC Japan 2026
yuukiw00w
0
320
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
370
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.5k
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
140
Rでドレミ/Do-Re-Mi_with_R
florets1
0
120
JRuby: Past, Present, and Future
headius
0
220
wkhtmltopdfの次どうするか問題2026
willnet
2
1.9k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
310
すこし踏み込む CancellationToken
htkym
2
1.6k
Verilogで学ぶCPU自作入門.pdf
uyuki234
8
4k
自サークルのIdPからログアウトできるようになるまで
taiseiue
0
110
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
160
Featured
See All Featured
Speed Design
sergeychernyshev
33
2.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.1k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
290
A Modern Web Designer's Workflow
chriscoyier
699
190k
How to make the Groovebox
asonas
2
2.5k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
350
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
WCS-LA-2024
lcolladotor
0
850
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
50
10k
Ten Tips & Tricks for a 🌱 transition
stuffmc
1
250
Transcript
LL言語やWebフレームワークの PostgreSQL対応 〜DBの機能がユーザーに届くまで〜 第57回 PostgreSQLアンカンファレンス@オンライン 武田 憲太郎 / @KentarouTakeda
自己紹介 武田 憲太郎 / @KentarouTakeda Webアプリケーション開発者 / OSSコントリビューター • PostgreSQLユーザー歴:
2001年〜 • Webアプリケーションのバックエンドとして利用 • Laravelコントリビューター: 2022年〜 • Eloquent ORMが中心 • PHP本体(php-src)コントリビューター: 2024年〜 • pdo̲pgsql(SQL抽象化レイヤーの PostgreSQLドライバ)が主 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 2
ドライバ開発を通じて見えた課題感 PostgreSQLの機能がLL言語のユーザーに届くまで(PHPの場合) API PostgreSQL PQsetSingleRowMode() 9.2 / 2012年 ext/pgsql libpqラッパ
pdo_pgsql 抽象化層 非対応 2025年(13年) PQenterPipelineMode() 14 / 2021年 断念(2023年) 非対応 PQsetChunkedRowsMode() 17 / 2024年 2024年11月(2ヶ月) 2026年11月予定 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 3
pdo̲pgsqlでのチャンクフェッチ対応 $statement = $pdo->prepare( 'SELECT * FROM bench', [Pdo¥Pgsql::ATTR_CHUNK_SIZE =>
1000] ); 対応PR: php/php-src#23210 (2026年11月 PHP 8.6 リリース予定) 補足: pdo̲pgsql(SQL抽象)ではなく ext/pgsql(libpqラッパ)は2024年11月に対応 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 4
対応前の予想と現実 予想: 数日で対応できるはず • 単一行モードの拡張で良いはず • PQsetChunkedRowsMode() のラッパー 現実: 所要時間2週間以上
→ 対応完了後の延長戦 • 対応中に既存機能のバグをいくつか発見 • バグの共通項は「状態管理」 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 5
フロントエンド側カーソル制御の既存バグ修正 • まだバックエンドに送っていない文を破棄 • バックエンドがエラーとして拒否した文を破棄 • エラー状態のトランザクション内での CLOSE 文 •
ロールバックされた WITH HOLD カーソルの解放 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 6
COPY とそれ以外との競合 PQresultStatus が致命的なエラーを示した場合 であっても、libpqがエラー情報を完全に処理でき るようにNULLポインタが返されるまで PQgetResult を呼び出さなければなりません。 PostgreSQL 18.4文書
32.4. 非同期コマンドの処理 より 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 7
COPY とそれ以外との競合(実例) • COPY_* 状態の drain はビジーループでハング • 多くの言語やツールがこのバグを経験している •
pgbenchはこのバグを6年間抱えていた • psqlは堅牢化のつもりでこのループを呼び込んだ • COPY と PQsetChunkedRowsMode() 組み合わせ • ここを「入口」に様々なものを見つける • COPY と PQsetSingleRowMode() 組み合わせ • 既存バグを直さないと新機能を実装できない 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 8
対応が断念されたパイプラインモード • 2023年3月: ext/pgsql パイプラインモード対応 • php/php-src#10868 • 2023年11月: PHP
8.3 GAの3日前にリバート • php/php-src#12735 • 再導入の動きはなく現在も非対応 「libpqの薄いラッパ」が既存の状態管理を壊し、 メンテナもレビュアーもそのことに気づかなかった 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 9
パイプラインモード: 他の言語やライブラリの状況 • node-postgres(古いが非同期前提) • 2021年11月: Issueからの要望 • (複数のPRが頓挫した末に) •
2026年8月: 対応 • psycopg3(リライト) • 2022年8月: 対応(3.1でPipeline mode) 「接続の状態」を設計に織り込んだライブラリは 実装成功に至る 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 10
バックエンド側の機能追加がユーザーに届かない • DBドライバは「初期に作られる」 • 「一度作ったらそう変えられない」領域 • 抽象化レイヤーを上るほど対応に時間がかかる • ドライバ →
言語 → ライブラリ → FW 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 11
WebアプリケーションFWの存在 • Web系プログラマーの多くは FWを通じてアプリを書いている • マルチDB対応のFWにベンダー固有機能を 入れるのはそれなりの理由が要る • 言語側も、FWの対応状況に モチベーションが左右される
2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 12
PostgreSQLの躍進(Laravelの場合) • 旧来: 「マルチDB対応が可能なら入れる」 • json演算子・全文検索・幾何データ型など • 最近: pgvectorがブレイクスルー •
2026年 コサイン距離: <=> をラップした様々なAPI • PostgreSQL先行 • 現在: 「DB依存機能も、有用なら入れる」 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 13
立場ごとの考え • Webアプリケーション開発者 • DBレイヤーの高度な機能を業務アプリに持ち込むのは避けたい • ただし、便利な機能なら使わせて欲しい、ごくシンプルに • FWのコントリビューター •
マルチDB対応製品は、デザインが難しくマージの障壁も高い • LL言語のコントリビューター • FW側の対応が見えないとモチベーションを保ちづらい • バックエンド開発者 • 皆さんの考えを教えてください • 新機能やAPIを検討する時、何を重視し、 どんなクライアント実装を想定しますか? 2026/9/3 LL言語やWebフレームワークのPostgreSQL対応 14
ユーザー あるいは 別レイヤーの開発者の立場から 見えた景色を共有しました ありがとうございました