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
【ORM不要論の歴史】運用の問題は、いまの責務論に直結する
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
赤神青空
PRO
September 11, 2026
Video
Programming
55
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
【ORM不要論の歴史】運用の問題は、いまの責務論に直結する
赤神青空
PRO
September 11, 2026
Video
More Decks by 赤神青空
See All by 赤神青空
【AWS資格のニュース】SAP が SAP-C03 に変わります
akagami
PRO
0
2
【力学 #5】単振り子と小角近似
akagami
PRO
0
5
【AIニュース】Genie 4 とは何か
akagami
PRO
0
15
【基本情報対策】IPアドレスとサブネットマスク
akagami
PRO
0
15
GPT-6 Cyber とは何か
akagami
PRO
0
15
【AWSの新サービス】Amazon ECS Gateway とは何か
akagami
PRO
0
20
【力学 #4】単振動:ばねの運動方程式を解く
akagami
PRO
0
9
【力学 #4】単振動:ばねの運動方程式を解く
akagami
PRO
0
10
Cloudflare の AI で他人の会話が混ざった?
akagami
PRO
0
27
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
240
Seven New Principles of Software Engineering
yegor256
0
470
TS 7.0 で baseUrl が使えなくなった今、パスエイリアスをどうするか
bicstone
2
590
LLM 101: Exploring LLMs, Starting with Tokens.
dalinaum
0
100
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
1.7k
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
140
Modernizing iOS Apps
seyfoyun
0
150
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
820
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
370
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
650
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
170
オーケストレーション記述言語 Katari
yukikurage
0
250
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1370
210k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
470
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
370
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Amusing Abliteration
ianozsvald
1
390
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.6k
HDC tutorial
michielstock
2
1k
How Software Deployment tools have changed in the past 20 years
geshan
3
35k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
18k
ラッコキーワード サービス紹介資料
rakko
5
5.8M
Transcript
2026年9月 ORM不要論を、20年ぶんさかのぼる 第3回 運用の問題は、いまの責務論に直結する 赤神 青空
▪モデルではなく、運用と組織から来る問題 所有権と、二重スキーマ スキーマの所有権 最初は白紙のDBを自由に設計できるが、その状態は長続きしない 他部署のレポート要求とDBAの性能責任で、スキーマは凍結に向かう 判別用のカラムは、レポート生成ツールから見ると意味不明な列になる 二重スキーマ 同じ知識が、DDLとオブジェクト定義の2箇所に置かれる コードの修正よりDBの修正のほうが重い。既存データの移行が要るため 今ココ
2006年 2/11
▪取得の書き方は3種類あるとされている 2006年時点でのクエリビルダ批判 QBE(テンプレートを埋める)/ QBA(クエリオブジェクトを組む)/ QBL(SQL風の別言語)。QBAが、いま言うクエ リビルダ。 SQLの書き方に比べて、一般に冗長になる outer join のような書き方は、難しいか、そもそも表現できない
テーブル名もカラム名もただの文字列で、実行時まで検証されない QBLはQBLで、SQLの部分集合にしかならない SQLに似た言語を使うなら、SQLを使うのと何が違うのか、という話になる 今ココ 2006年 3/11
04 ORMは何を引き受けているか 名前で呼ぶのをやめて、中身を棚卸しする 今ココ 責務の分解 4/11
▪ORMと呼ばれるライブラリがやっている仕事 7つの責務 a b c d e f g クエリの組み立て
行とオブジェクトの変換 関連の解決 スキーマの単一情報源 マイグレーション インジェクション対策 トランザクション管理 今ココ 責務の分解 SQL文字列を直接書かずにクエリを作る 取得した行をオブジェクトに詰め替え、書き戻す 関連レコードを属性のように辿る テーブル定義を一箇所に置き、そこから型を導く スキーマの変更を差分として記録し、順に適用する 値をプレースホルダとして扱う 一連の操作をまとめて確定または取り消す 5/11
▪表で色を付けた2つ 批判が集中するのは b と c 2006年に「解けない」とされた食い違いは、 b(変換)と c(関連) に集中している。 bとc
構造から来るので解けない。今の不要論もここが中心。 a・d・e 争点にはなるが、別のツールに任せられる。 「ORM不要」と書かれているものの多くは、bとcを指しています。 今ココ 責務の分解 6/11
▪ひとまとめで提供されるものではない 責務は別々に取り外せる それぞれを単体で引き受けるツールが、実際に存在します。 dbmate … マイグレーション(e)だけ。素のSQLでup/downを書く Atlas … スキーマを宣言的に書いて差分を計算(d と
e) Kysely … TypeScriptのクエリビルダ(a・f・g)。b・c は持たない SafeQL … ESLintプラグイン。生SQLのまま、スキーマから型を検証する 今ココ 責務の分解 7/11
▪構成ごとに、どこを誰が持つか 責務の割り当てとして見る a b c d e f g 組み立て
変換 関連 情報源 移行 注入対策 トランザクション フルスタック ORM a から g までを1つのライブラリが抱える Kysely + Atlas Kysely なし 生 SQL + SafeQL 生SQL なし Atlas なし Kysely dbmate ドライバ 自分で担保 + dbmate 手放しているのは b と c だけ 「ORM を使う/使わない」は、実際にはこの割り当ての問題だった SafeQL は生SQLに型検証を足すもので、いずれかの責務を置き換えるものではない 責務ごとに、別のツールへ割り当て直せる 今ココ 責務の分解 8/11
▪特定のコミュニティの流行ではない 同じ形が、言語をまたいで並んでいる 【SQL前提の軽量ORM】SQLは開発者が書き、ライブラリはマッピングとバインドだけ Dapper sqlx MyBatis 実態はSQLを書く前提の軽量マッパー 標準ライブラリの薄い拡張 SQLを外に置いて結果を詰める C#
Go Java 【SQLファーストな型安全ORM】SQLを書く前提で、壊れないよう型で縛る sqlc TypedSQL SQLx jOOQ SQLからコードを生成する Prismaに載っている機能 コンパイル時にクエリを検証 SQL中心で型と高度なクエリ Go TypeScript Rust Java ORMを捨てたというより、ORMに期待しすぎない、という態度に近い 今ココ 責務の分解 9/11
▪まとめて決めなければならないものではない 実は組み合わせの問題だった ORMを外しても、d・e を Atlas に、a・f を Kysely に任せられる。 このとき手放しているのは
b と c だけ。 「ORMを使う/使わない」は、もっと細かい選択の集まりです。 今ココ 責務の分解 10/11
▪第4回 次回 2026年の不要論は何を言っているか 20年前の指摘は、責務の言葉に置き換えられる。 では今年、実際に何が言われたのか。 1月と9月、2つの波の中身に入ります。 今ココ おわりに 11/11