『SQL実践入門』を読んだ

SQL実践入門 ──高速でわかりやすいクエリの書き方 WEB+DB PRESS plus

『SQL実践入門』は、サブタイトル「高速でわかりやすいクエリの書き方」にもあるように、SQLのパフォーマンス改善に焦点を当てた書籍。著者はSQL関係の書籍で定評のあるミック氏。

SQLのパフォーマンスチューニングは一朝一夕で身に付く技術ではない。RDBMSのアーキテクチャやSQLの基礎知識はもちろん必要だし、RDBMS製品に応じた実行計画の読み方やチューニングの勘所もある。それに加えて、アプリケーションの要件に合わせたチューニングも必要になる。

本書では、特定のRDBMS製品やアプリケーションに依存しない、汎用的なクエリチューニングのテクニックを、その前提となる基礎知識も含めて解説している。

SQLのチューニングはトレードオフが色々あるため、one-size-fits-allな解法はない。例えば、インデックスが使われていないSELECT文のチューニングではインデックスの活用が第一の選択肢に挙がるが、選択率次第ではフルスキャンの方が速いし、更新性能の劣化も考慮する必要がある。

このように、本書に登場する様々なテクニックは、それらが有効になる場面を見極めて活用しなければ効果は見込めない。

本書は、JOINのチューニングで困ったら6章を読む、といった風に辞書的に使うこともできるが、前章までの知識が前提となっていることもある。まず通読しておいて、後で必要に応じて読み返す、という使い方が良さそう。

『TCP/IPの絵本 第2版』を読んだ

TCP/IPの絵本 第2版 ネットワークを学ぶ新しい9つの扉

Webエンジニアとして日々TCP/IPを利用したアプリケーションを開発しているのだけど、アプリケーション層より下を意識することはあんまりない。

ということで、普段触れない部分の知識をもう少しつけておきたいと思い、『TCP/IPの絵本 第2版』を読んでみた。

本書はTCP/IPの入門書で、パケットをアプリケーション層から送り始めて、物理層に行き着くところまでを一通り解説している。

図が豊富でページ数が少なめなので、一通り読み通してざっくりとした理解を得るのには向いている。

普段よく使う知識(例えばIPv4のサブネットマスク等)については知ってるなーという感じだけど、IPv6はよくわからないなーとか、そういう感じで自分の現状が把握できたのはよかった。

次は、本格的な知識を仕入れるため『マスタリングTCP/IP 入門編』を読む予定。

『Engineers in VOYAGE』を読んだ

Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち

『Engineers in VOYAGE』は、VOYAGE GROUPの技術者へのインタビュー集。

個人的にVOYAGE GROUPはPHP関係の勉強会でたまに見かける会社で、AJITOは何かの勉強会で遊びに行ったことがある。

本書に主に登場するのはWebエンジニアで、歴史のあるWebサービスをどう保守していくか、新しいサービスをどう立ち上げるか、といった泥臭い部分の話が多く面白かった。

また、事例の点でも広告、ポイントサイト、メディア(ゲーム攻略サイト)など、さまざまな分野があってよかった。

自分はここ最近はずっとEコマースをやっているので、同じWebでも畑が違うと雰囲気が違うということを感じられた。

近年のWebエンジニアには以前にもまして、事業理解や事業貢献といったマインドが求められるようになっている。いち開発者としては事業に共感できる方が成果を出しやすいと思っていて、自分にはEコマースが向いているのかもなーと思う。メディアも興味はあるが、広告はあまり向かなそう(アドブロック常用してるし)。

ある程度経験のあるWebエンジニアなら楽しく読める1冊。

『Web配信の技術』を読んだ

Web配信の技術―HTTPキャッシュ・リバースプロキシ・CDNを活用する

『Web配信の技術』は、HTTPキャッシュ・リバースプロキシ・CDNなど、Webを使ってコンテンツを効率的に配信する際に必要になる技術について解説した書籍。

主にHTTPキャッシュについて解説した最初の3章は、Web開発を行っているソフトウェア開発者なら知っておくべき内容が詰まっている。4章のキャッシュ戦略についても、高トラフィックなWebサイトを開発・運営するなら知っておきたい。

5章はさらにプロキシ・CDNの機能をフル活用するための解説なのだけど、直近で活用できそうにないならざっと目を通すくらいでもいいと思う。

6章のCDNについての解説では、特定のCDNサービスに偏らず、一般的にCDNを使う際の注意事項(例えば、大きなトラフィックを流すときは事前連絡しておく等)が書かれていてよかった。

7章の自作CDNは、安いVPSを並べてCDN化しようという話。実務でこういう構成をすることはなさそうだけど、こういう選択肢もあるということは知っておく価値がある。

約450ページと分量が多く、内容も濃いので、読むのには時間がかかる。最初の3章はWeb開発者全般におすすめできるのだけど、通読すべし、とまでは言いづらい一冊。

『実践JUnit』を読んだ

『実践JUnit』は、JVM環境向けのテスティングフレームワークJUnitの入門書。2021年2月現在、JUnitの最新メジャーバージョンはJUnit 5だが、本書ではJUnit 4を使用している。

古いバージョンを解説しているので、今読む価値がある本なのか疑問だったが、JUnit 4とJUnit 5の違いがそれほど大きくないこともあり、十分参考になる内容だった。

また、JUnitの使い方をなぞるだけでなく、ユニットテストの考え方(Arrange/Act/Assert、スタブとモック、TDDなど)も解説しているので、ユニットテスト初心者にもおすすめできる内容になっている。

JUnit 5の入門書を求めているなら本書は適切な書籍とはいえないが、ユニットテストの入門書としては今でも使える書籍だと思う。