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
武田 憲太郎
September 03, 2026
Programming
160
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
530
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
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
110
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
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
iOSDC2026登壇資料.pdf
riofujimon
0
200
Java 27新機能 / Java 27 new features
kishida
2
190
難しいけど、読めた。- OSSの入口に立った話。
sts11142
0
130
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.3k
Security issues being discussed on Web Platforms
petamoriken
0
1.4k
FreeBSDでZabbixを動かす
kenkino
0
340
App Intentsのビルドプロセスを支える技術
kntkymt
0
490
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
380
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
140
Featured
See All Featured
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
910
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.3k
Why Our Code Smells
bkeepers
PRO
340
58k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Into the Great Unknown - MozCon
thekraken
41
2.7k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
290
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
2
930
YesSQL, Process and Tooling at Scale
rocio
174
15k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
66k
Raft: Consensus for Rubyists
vanstee
142
7.7k
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
ユーザー あるいは 別レイヤーの開発者の立場から 見えた景色を共有しました ありがとうございました