『実践JUnit』を読んだ

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

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

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

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

『SQLアンチパターン』を読んだ

SQLアンチパターン

『SQLアンチパターン』、出版当時に買ってつまみ読みだけしていたものを、あらためて通読してみた。

読んでみて思ったこととして、まず章ごとの難易度の差が激しい。9章「ラウンディングエラー」のように、当たり前でしょ、と思うような章もあれば、2章「ナイーブツリー」のように、一読しただけでは理解が難しい章もある。

まずはどういうアンチパターンがあるかを一通り眺めておくと、実務でアンチパターンにハマる確率を下げることができそう。

SQLクエリやデータベース設計だけでなく、アプリケーション設計にも言及があるのがGood。24章はちょっとしたドメイン駆動設計入門にもなっている。

若干内容が古びている部分はあるものの、今でも読む価値のある書籍。

『Elastic Stack実践ガイド[Elasticsearch/Kibana編]』を読んだ

本書は、Elastic Stack(Elasticsearch, Kibana, Beats, Logstash) のうち、主にElasticsearchとKibanaに焦点を当てて解説した書籍。

仕事で検索エンジンのElasticsearchを使うことになったので、Elasticsearchの概要を掴むために読んでみた。

あくまでElasticsearchを利用するアプリケーションプログラマという立ち位置のため、1章〜4章(Elasticsearchの概要と、使い方について)を重点的に読み、5章以降(Elasticsearchの運用や他のElastic Stackソフトウェアとの統合方法について)は流し読み程度。

自分と同じようにElasticsearchをプログラムから利用したい人は、4章まで読んだ上で、利用するプログラミング言語向けのクライアントライブラリのドキュメントを読むのがいいと思う。

例えばJavaの場合、公式クライアント(Java REST Client)が用意されている。利用する言語にクライアントライブラリがない場合でも、ElasticsearchにはREST APIがあるため、HTTPを叩けてJSONが取り扱える言語であればElasticsearchを利用することができる。

本書では、2章でElasticsearch + Kibana環境を構築し、3章と4章でクエリを実行してデータの保存や取得を試すような構成になっている。

実際にElasticsearchにクエリを投げて動かすところまでに100ページくらいかかるので、知りたいところだけをつまみ読みしていくような読み方をした方が良さそう。

『おうちで学べるデータベースのきほん』を読んだ

おうちで学べるデータベースのきほん

DBの基本を学び直そうという試みの一環として、『おうちで学べるデータベースのきほん』を読んだ。

SQL関係で多数の著作のあるミック氏と、MySQL関係の著作やコミュニティ活動で知られる木村明治氏の共著。

かなり初心者向けかなーとは思ってたが、実際読んでみると知らないことも結構あった。例えば、トランザクションの章ではトランザクション分離レベルによって起こるトラブルが解説されているが、MVCC(Multi Version Concurrency Control)という技術によって更新と読み込みはブロックしないようになっている、といった話は初耳だった。

このように、初心者向けの解説をベースとしつつも、少し深いトピックにも触れているのが本書の特徴。

本書だけだとアプリケーション開発には少し足りない印象だが、本書を読んでデータベースの全体感を掴んだ後で、『SQL ゼロから始めるデータベース操作』などでSQLを学んだりして知識を広げていくのが良さそう。

『Amazon Web Services負荷試験入門』を読んだ

Amazon Web Services負荷試験入門―クラウドの性能の引き出し方がわかる (Software Design plusシリーズ)

仕事で負荷試験をやる機会があり、負荷試験のやり方を体系的に学んだことってなかったなー、と思ったので読んでみた。結論から言うと、とても良い本だった。

本書『Amazon Web Services負荷試験入門』は、様々な大手企業のWebシステムの受託開発を手がける株式会社ゆめみのエンジニアが執筆した、AWS環境での負荷試験の入門書。

最も刺さりそうなのはAWS上でPHP製のWebアプリを動かしている開発者だけど、他のクラウドでもサイジングの進め方は同様に適用できるし、負荷試験のやり方はオンプレミスのサーバやVPSを使っている場合にも適用できる。

負荷をかけるツールについてはJMeterLocustを中心にしているが、Apache Benchも使ってるし、考え方はGatlingなど他のツールでも適用できる。

クラウドをテーマにした書籍は「賞味期限」が短いことが多いが、本書はベースとなる負荷試験の考え方を伝えることに注力しているので、いま読んでも古さを感じない。

一方で、説明が端的で理解しきれない部分もあった。負荷試験、クラウドインフラの構築、Webアプリケーションのパフォーマンスチューニングといった経験があった方が、腹落ちしやすいと思う。

特に良かったのは第10章の負荷試験のケーススタディで、きっちり負荷をかけてボトルネックを特定し、負荷試験を繰り返すことでシステムの限界性能を引き出していく流れはとてもエキサイティングだった。

「負荷試験なんて、テストが終わった後で、ローカルPCからabとかJMeterでやれば十分でしょ」と思ってる人には、ぜひ読んでほしい。