「失敗から学ぶRDBの正しい歩き方 (そーだい本)」を読んで
はじめに
先日のPHPer Kaigi 2019で賞品としていただいた「失敗から学ぶRDBの正しい歩き方」を今更ながら読み終わりました。
賞品として無料でいただいたからには感想をアウトプットする義務があると思うので、ブログにしたためます。
読者(私)の背景
普段はアプリケーションエンジニアとして働いていますが、インフラ(DB)周りも扱うことは多いです。
RDBとしては、MySQLやOracle Database、AWS RDS (Aurora)などを扱っています。
失敗から学ぶRDBの正しい歩き方
「失敗から学ぶRDBの正しい歩き方」とは曽根壮大さん(@soudai1025さん)の著書で、全20章で構成されていて、具体例に基づいたアンチパターンとその回避策などが載っています。
そーだい本と呼ばれているそうです。
感想
全20章というと長いような気もしますが、1つの章自体は短くて完結に書かれていてるのでとても読みやすいです。
章の冒頭では営業とエンジニアやエンジニア間でのやりとりが会話ベースであげられています。
さらに、その内容があるあると頷けるようなものになっていて、それがそのままアンチパターンに繋がっています。
教科書的な抽象的な話ではなく実際にあるような具体的な話をベースにしているため、アンチパターンのイメージが湧きやすく、実際に似たような場面に遭遇したときに「そーだい本で読んだやつだ!」となる可能性が高い気がします。
アンチパターンの紹介だけでなく、なぜそのようなことが起こるのか、それを回避するためにはどうすれば良いのか、付随した補足説明など、丁寧に解説されているので、大変わかりやすいです。ただし、難易度が低い入門者向けというわけではなく、理解して読むためにはある程度の知識は必要です。もちろん用語の解説なども十分あります。
そして、それらの解説が「アンチパターンなんてもってのほかで、ありえない!」というスタンスで書かれたものではなく、「こういうことってよくあるし、そうなってしまうのも仕方ないよね、わかる」というスタンスで書かれているので、読んでいる側としても気が楽になります。
そのアンチパターンも、テーブル設計やSQLの書き方に留まらず、バックアップや監視などの運用面での話もあり、さらにはキャッシュなどアプリケーションレベルの話もあり、実用範囲が広いです。
また、章タイトルが端的でキャッチーであり1つのアンチパターンとして確立できているので、共通認識さえあれば意思疎通が楽にできそうだと感じました。
「失われた事実」「隠された状態」「キャッシュ中毒」「ノーチェンジ・コンフィグ」など共通言語として使えると便利そうです。
基本的にはRDBの話なのですが、適材適所でNoSQLを使うことを提案したり、RDBに留まらずアプリケーション全体として関係ある内容であったり、学ぶことは多いです。
「転んだ後のバックアップ」「見られないエラーログ」「監視されないデータベース」「キャッシュ中毒」「ノーチェンジ・コンフィグ」「塩漬けのバージョン」などの章はアプリケーション開発全体を通してアンチパターンになりうるものなので、特に刺さりました。
本の表紙には「MySQL・PostgreSQLの設計と運用を見直す」と書かれていますが、RDB自体の設計や運用の経験があればMySQLとPostgreSQLの片方もしくは両方の経験が無くても問題はなさそうです。
確かにそれらを普段遣いしている方が理解が早くより役立つ可能性も高いとは思います。
全体的に大変読みやすく理解しやすく実務に有益な本でした。
蛇足...
あえて1点だけ気になったところをあげるとすれば、なんとなく校正が甘そうな点です。
たとえば、章の冒頭の会話でのやりとりのところで、
営業: 〜
エンジニア:〜
エンジニア: 〜
などのように、コロンの扱いがマチマチであったり、細かい点です。
大筋には全く影響は無いです!
誰が読めばいいか?
個人的な理解としては、RDBの入門者には向かないと思います。
普段からRDBを扱っているような初級者〜中級者で、特に設計と運用に携わっているようなエンジニアに最適です。
スライドシェアとして紹介されている章もあるようです。
さいごに
PHPer Kaigi 2019の賞品としていただいた結果として読むに至りましたが、とても良い本でした。
社内で布教したいと思います。