Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

青木峰郎『10年戦えるデータ分析入門』

版元のSBクリエイティブさんからいただきました。ありがとうございます。

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

青木峰郎さんといえば、プログラマとしてのご活躍によって高名でいらっしゃるのはもちろんのこと、『ふつうのLinuxプログラミング Linuxの仕組みから学べるgccプログラミングの王道』を始めとする「ふつうの」シリーズなどでも有名な著者として昔から大変お世話になっており、私にとってはついつい文体が尊敬語化してしまうような存在です。「正確無比であること」「わかりやすいこと」「退屈させない面白さ」というのは、ふつうはその3つを同時に満たすことはできないCAP定理のようなものなのですが、青木さんの本はどれも「ふつう」でないものばかり。それはSQLとデータ分析を話題にしたこの本でも同様です。

Webエンジニアが日常の開発において扱うRDBMSを用いたデータ処理は、Webアプリケーションへのユーザのリクエストに対してリアルタイムに応答を返す必要があるという文脈におけるものでしょう。そのようなOLTP(Online Transaction Processing)とは対照的な性質を持つ「データ分析」に本書は特化し、エンジニアのみならずプランナーをも対象として、そのためにどういう技術が必要なのかをいちから解説していきます。その射程は、ごく単純なselect文でのデータ抽出から始まり、joinによるテーブル結合を駆使したバスケット分析、果ては大規模なデータ分析基盤の構築にまで及びます。

また、SQLについてはそれなりに経験があるよというひとにとっても役に立つ本であり得ます。これはまあ僕がものを知らないだけという話ではありますが、第8章で紹介されるウィンドウ関数について、本書で初めて知りました(MySQLには実装されていない)。たとえばp.170からのrankウィンドウ関数による月毎の売上ランキングを出す場面など、アプリケーションコード側でやっちゃうだろうなあと思えるような処理も一発でできる。これは便利。本書が説明に利用するPostgreSQL特有の話もちょいちょいあって、あんまり使ったことがないので面白い。

あとの1/3は第2部として、著者の経験からきたのであろうデータ分析基盤システムの話。特に「SQL中心アーキテクチャ」の話が、自分でもそうしたものをなんとか作ろうと苦慮していたものとして、とてもためになりました。分析データベースの層を、ソースデータ層、DWH(データウェアハウス)層、アプリケーション層に分けること、バッチを冪等にしましょうという話、ワークテーブルやサマリテーブルはどんどん作って良いという指針など、あの時この本を読んでいれば手探りで試行錯誤する必要もなくてもっと楽だったのに、と思うことしきり。そういう意味では、直接の分析者のみならず、基盤作りを担当するひとも読んでおくとよいでしょう。

そんなわけで、データ分析を志すエンジニアおよびプランナーにSQLを教えるというスタートから、データ分析基盤の構築やその際の具体的なtipsまで、「ある意味混乱した構成」(p.320)と著者自身が書くほどに多岐にわたる本書は、多くのひとにおすすめできる本だと思います。てか、僕自身がもう一度勉強し直さないとな……。

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

10年戦えるデータ分析入門 SQLを武器にデータ活用時代を生き抜く (Informatics &IDEA)

  • 第1部 SQLによるデータ分析
    • 第1章 10年戦えるデータ分析の技術
    • 第2章 さわってみよう RDBMS
    • 第3章 簡単!select文でデータ探索
    • 第4章 すべての分析は集計から始まる
    • 第5章 関数で自由自在に新しいカラムを作り出す
    • 第6章 ジョインを制するものはRDBMSを制す―基礎編
    • 第7章 ジョインを制するものはRDBMSを制す―応用編
    • 第8章 遅れて来た分析SQL最強の武器―ウィンドウ関数
    • 第9章 縦と横は難しい
    • 第10章 アクセスログのセッション分析をする
  • 第2部 分析システムの構築
    • 第11章 10年戦えるデータ分析システム
    • 第12章 ビッグデータに立ち向かう
    • 第13章 SQLバッチの技法
    • 第14章 本書を読み終えた後に
    • 付録 PostgreSQLのインストール