Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
【ORM不要論の歴史】運用の問題は、いまの責務論に直結する
Search
赤神青空
PRO
September 11, 2026
Video
Programming
10
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 赤神青空
【ORM不要論の歴史】なぜ生まれ、20年前に何を言われたか
akagami
PRO
0
15
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
84
【ORM不要論の歴史】「ORM」と呼ばれているものが3つある
akagami
PRO
0
38
【Vitest5.0大解剖】Vitest5.0で消えた記法とAPI
akagami
PRO
0
23
【Vitest5.0大解剖】Vitest5.0で増えた書き方
akagami
PRO
0
31
【Vitest5.0大解剖】Vitest5.0で静かに変わる挙動
akagami
PRO
0
24
【Vitest5.0大解剖】Vitest5.0のTrace View
akagami
PRO
0
26
【Vitest5.0大解剖】Vitest5.0は何が速くなったのか
akagami
PRO
0
28
1MBの壁にぶつかった話
akagami
PRO
0
27
Other Decks in Programming
See All in Programming
Vibes Containers 〜AIで変わるコンテナ設計と運用〜
tkikuc
2
500
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
650
Go × SIMDで高速化するベクトル検索 ~ルーフラインモデルでSIMDが効く境界を探れ! ~
po3rin
1
140
Foundry Localでエージェント開発
seosoft
0
140
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
20260828_品質と開発生産性を両立させる、AI時代のE2Eテストの考え方
magicpod
0
160
初めての模倣学習とVLA
natsutan
0
500
週末にAI-DLCを本気で回したら$1,600溶けた
hbashimizu
0
130
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
640
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
440
RSSとCodexを使ってX投稿自動化してみた
ochtum
0
110
デプロイ直後のレイテンシスパイクを調べたら、 Railsの仕様にたどり着いた
nhsykym
0
110
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
600
How to Think Like a Performance Engineer
csswizardry
28
2.8k
GraphQLとの向き合い方2022年版
quramy
50
15k
My Coaching Mixtape
mlcsv
0
310
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
How to Talk to Developers About Accessibility
jct
2
540
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
190
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
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