@kyanny's blog

My thoughts, my life. Views/opinions are my own.

「Webエンジニアのための データベース技術[実践]入門」を読んだ

モバゲー本はてブやツイッターがひとしきり盛り上がった本日ですが空気を読まずに元モバゲーの人が書いた本の書評を書きます。

著者の松信さんはたぶん説明不要ですが MySQL のスペシャリストで先日 Facebook に転職された凄腕エンジニアです。その人が書いたデータベースの本なのでたいへん充実した内容、ではあったけど、率直に言って僕はLinux-DB システム構築/運用入門のほうが「濃い」と感じました。

「Webエンジニアのための〜」はデータベースを中心とした大規模ウェブアプリケーション運用の話が中心で、一方「Linux-DB システム構築/運用入門」はデータベースの話題に特化しているから、というのが一つ。それから、「Webエンジニアのための〜」は同じような話が繰り返されている箇所がけっこう目について、「もう読んだのに・・・」と若干内容の薄さを感じてしまったのが一つ。雑誌連載記事がもとになっているので、何ヶ月か間隔があいていれば同じ内容に触れていても違和感は無かったのかも、と思いました。

データベース技術や運用・チューニングに関する話題は、「Linux-DB 〜」なり他の本なり、もっと専門性の高い本を読んだほうが良いと思います。そういう話題を扱った本を読んだことがない人が一冊目に読むのならば得るものは多いでしょう。この本ではむしろデータモデリングの章に価値があると思います。大規模サイトの話はみんな大好きだしウェブでも雑誌でも書籍でもよく見かけるけど、ウェブサイト開発というコンテキストでデータモデリング手法に触れる記事はそう頻繁には見かけません。たぶん、ビジネスロジックと密接に関わりすぎていて表に出しづらかったり、一般化しすぎると具体的にイメージしづらくなってしまうからだと思うけど、だからそういう話題にそれなりのページ数を割いて触れられているのは良かったです。

「階層型部品表」タイプの例など、そういうモデリングが必要な状況でそういう知識を持たずに実装し始めたらかなり難しくなってしまうだろうな、と感じたので、知識としてそういうものもあるのだと、もっといえば「データモデリングのやり方次第でずいぶん差がでるのだ」という認識を持てること、そのきっかけを与えてくれるのが良いと思いました。詳しくは本を買って読んでみてください。

(データモデリングを学びたければその分野の専門書を読め、と本書の注釈にもあった覚えがあり、別の本を読むほうがおそらく良いのだけど、Webエンジニアがウェブサイト開発について勉強しつつデータモデリングの重要性も認識できる、というのが利点なので、ここは専門書に比べて内容が物足りなかったとしても構わないと思っています)

それから、僕が一番読みたかったのは MySQLソースコードリーディングについての章で、それは「大規模なソフトウェアのソースコードを読む人はどんな手法で取り組んでいるのだろう」という点が知りたかったからです。結論としては、やはり銀の弾丸は無かったのですが、松信さんクラスのひとでも grep(1) は使うんだなーとか、ソースコードビューアとしてなら Eclipse を使うのもアリかなーとか、だいたい自分のなかで考えてたことの認識を深め、再確認できたのは安心感があって良かったです。