本記事では、2025年7月28日に開催され、約1,500名が申し込んだイベント「t-wadaさんに聞く!SQLアンチパターン第2版 - 全27章まとめて紹介!」の内容をお届けします。イベントでは、書籍『SQLアンチパターン 第2版 ―データベースプログラミングで陥りがちな失敗とその対策』の出版を記念して、監訳者であるt-wada(和田卓人)さんをお招きし、本書の魅力についてご講演いただきました。ぜひ本編のアーカイブ動画とあわせてご覧ください。
t-wada:
本日は『SQLアンチパターン 第2版』という本についてお話しします。第2版も私が監訳しています。本日の講演では、先日の「Developers Summit 2025 Summer」で講演した内容をより厚く、各章の内容に踏み込んで説明します。
はじめに
時は2025年、世界はバイブコーディングの炎に包まれました。
AIと一緒にコードを書くにとどまらず、AI「が」コードを書く、システムを作る時代になり、多くの人が自然言語で指示してシステム開発をするようになってきました。皆さんもバイブコーディングやAIエージェントと一緒にコードを書くことを体験し、日々活用している方も多いと思います。
このバイブコーディングのトレンドには良いところもあれば、気をつけるべき点もあります。バイブコーディングを含むAIエージェントを使ったプログラミングは「投機的プログラミング」、揶揄して「ガチャ」とも呼ばれます。うまくいかなければ作り直しやコードを再生成する、そんな側面があります。
ですが、データベースはそうはいきません。UIは「作り直せば済む」場合もありますが、いったんデータベースに入ったデータは戻せません。将来に向けて一貫性のある構造でデータを保護・保持するにはどうするか、ここが難しいところです。
後からどうにかなるもの、挽回できるけど大変なもの、挽回できないもの――このあたりを見分けて温度差をつけていくのが、設計者としての腕が問われるところだと思います。
その意味で、データベース設計は後から挽回しにくいジャンルです。だからこそ、失敗しにくくするには他の人の失敗から学ぶのが近道です。すでに知られた落とし穴があるのなら、わざわざ同じ落とし穴に落ちにいく必要はありません。
そこで、落とし穴に名前を付けて回避していきましょう。これが『SQLアンチパターン』のテーマの1つです。
書籍『SQLアンチパターン』
まずはここに初版『SQLアンチパターン』の説明文を持ってきました。
本書はDB設計やSQL記述の際に避けるべき事柄を1章で1つ、25個紹介する書籍です。
リレーショナルデータベースを中心に据えたシステム開発には、様々な場面で陥りやすい失敗(アンチパターン)があります。
本書はデータベース論理設計、データベース物理設計、クエリの記述、アプリケーション開発という4つのカテゴリに分かれて、それぞれの分野におけるアンチパターンを紹介し、失敗を避けるためのより良い方法を紹介します。
このアンチパターン形式はとても優れていて、私自身も原書を読んで翻訳企画をオライリー・ジャパンに持っていきました。本書は2013年1月発売で、(2025年時点で)12年前になります。以来、ありがたいことに多くの方に評価いただき、読んでいただきました。
第2版の全体像
第2版(2025年7月発売)は48ページ増の全400ページ。新章が3つ加わり、多くの章末に短い「ミニ・アンチパターン」計15本が追加されました。
削減された章
実は減った章もあります。初版では、Active Record パターンがアンチパターン扱いされていました。第24章「マジック・ビーンズ」で、Rails/Laravelでよく使われるいわゆるActive Record パターンはアンチパターンである、と記されており、議論を呼びました。
ですが、第2版ではこの章はなくなりました。Active Record パターンはアンチパターンとは言い切れない、という扱いになったわけです。この12年で、Rails/LaravelなどのActive Record 系 ORMが設計のシンプルさで価値を発揮し、事業を支えてきた結果、“Active Record パターンの採用=アンチパターンではない”という整理に変わったと考えられます。
既存の章の改善内容と構成
既存の章も大幅改訂されています。本文もかなり改訂されていて、監訳時に原文の変更箇所をマークしていくのですが、その数は400〜450カ所ほどありました。コード例も、PHPからPythonに刷新されています。これは、Pythonを読める人のほうが多いと踏んでの変更ではないかと思っています。
大きな構成は初版から変わらず、4部構成です。論理設計、物理設計、クエリ、アプリケーション開発のアンチパターンという4つの部がメインパートです。
この本は『SQLアンチパターン』という書名なので、SQLの書き方のアンチパターンの本だと受け取る人が多いです。翻訳書はタイトルを変えられないので『SQLアンチパターン 第2版』としていますが、実はテーブル設計や物理設計、インデックス設計、SQLインジェクションやパスワード、スケールを伴うアプリケーションのアンチパターンも紹介しています。書名から受ける“SQLのアンチパターン”は、第3部のクエリのアンチパターンだけなんですね。
世の中で評価が最も高いのは、実は第Ⅰ部、データベースの論理設計のアンチパターンで、テーブル設計を間違うと後々まで痛手になる、という点を教えてくれていることが、多くの方に評価いただいた理由だと思っています。