『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でやれば十分でしょ」と思ってる人には、ぜひ読んでほしい。

『Java本格入門』を読んだ

Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで

『独習Java』を読んで、Java言語の構文とかは大体分かったけど、ベストプラクティスや定番ライブラリはまだよく分からないなーと思ったので、本書を手に取ってみた。

本書の特徴は、一線級の現役エンジニアが執筆している点。Javaの入門書には専業のライターや大学教員の執筆しているものも少なくないけど、やはり「現場」っぽい情報は現役エンジニアの書いている本には敵わない。

例えば第6章の「例外を極める」などは実践的な知見が詰まっていて参考になる。「検査例外よりも実行時例外を使う」などは、Javaの検査例外という仕組みに不慣れだった自分でも安心して例外を使えるようになる情報だった。

一方で、2017年の出版ということもあり、若干古くなっている情報もある。例えば本書ではソースコードの静的解析ツールとしてFindBugsを紹介しているが、FindBugsは2020年現在、開発がストップしている。直接の後継プロジェクトとしてはSpotBugs、同系統の静的解析ツールとしてはSonarQubeなどが挙げられる。

このように若干補いながら読む必要はあるものの、2020年現在でも十分に読む価値のある書籍だと思う。本書の類書として『Effective Java 第3版』があるが、この本はJava言語自体の解説はほとんどないので、Javaにある程度慣れていないと読むのは難しい。それに対して、『Java本格入門』はJava初心者でも読めて、中級者でも役に立つような本になっている。

『SQL 第2版 ゼロからはじめるデータベース操作』を読んだ

SQL 第2版 ゼロからはじめるデータベース操作

SQL初心者というわけでもないのだけど、Webアプリケーション開発だと基本的なSQLスキルだけでも何とかなってしまうので、そろそろ基礎から勉強しなおしたいなーと思い読んでみた。

『SQL 第2版 ゼロからはじめるデータベース操作』は、データベース関係の著作では定評のあるミック氏の著書。標準SQLにこだわった解説、ウィンドウ関数のような新し目の機能まで盛り込んだ内容の濃さ、それでいて300ページちょっととコンパクトで読みやすい、といった特徴がある。

本書の「標準SQLにこだわった解説」は、様々なDBMSの方言を抑えた上で、「標準SQLではこうだけど、Oracleではこうで、MySQLでは…」といった具合になっていて非常にレベルが高い。直近の業務でOracle向けに書かれたSQLをPostgreSQL向けに移植するという仕事をしているので、参考になる箇所がいくつもあった。

また、ウィンドウ関数についても、帳票出力のサンプルを使ってわかりやすく解説されていた。

SQLの初心者はもちろん、SQLを初歩からやり直したい人にもオススメできる良書。

『速習Kotlin』を読んだ

速習 Kotlin: Javaより簡単!新Android開発言語を今すぐマスター 速習シリーズ

仕事のプロジェクトで、Javaに加えて一部Kotlinも使っているので、Kotlin学習のために読んだ。

KotlinはBetter Javaという趣で、Javaのイマイチなところ(nullの扱いとか、トップレベルに関数を定義できないとか)を改善した上で、Javaの資産も活用できる点に強みがある。

また、IDEベンダーであるIntelliJが開発した言語ということもあり、IntelliJ IDEAで強力にサポートされている点も見逃せない。

『速習Kotlin』はKindle専売の電子書籍で、Javaの知識をある程度持っていることを前提に、手早くKotlinの知識を身につけることができる。

本書を読んで、Kotlinのモダンな言語仕様はいいなあ、Javaも悪くはないけど、コード量多いよなあ、という所感を抱いた(Javaも8以上+ Lombok 込みなら それなりに便利だけど)。

Kotlinはもっと書く機会を増やしていきたいので、次は『みんなのKotlin』で実践的な知識を身につけたいと思う。

みんなのKotlin 現場で役立つ最新ノウハウ!

『独習Java』を読んだ

独習Java 新版

仕事でしばらくJavaのプロジェクトに携わることになったので、読んだ。

『独習Java』は、基本構文や主要なクラスライブラリの解説が載っていて、一通りの基本知識は身に付けることができた。特に良いのがJava 11対応している点(これから読むなら、少なくともJava 8以上に対応している書籍にすべきだと思う)。

一方で、フレームワークやライブラリといった現場っぽい知識は本書では触れられていないので、その辺は別の書籍で補いたい。例えば『Java本格入門』はこの辺のトピックにも触れていそう。

Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで

Javaを本格的に学んだのはこれが初めてだったけど、C#やPHPといった今まで使ってきた言語との共通点も多いため、言語の構文については苦労せず学ぶことができた。

独特なのはクラスライブラリあたりからだけど、それについては必要になった時に調べればいいかな、程度の印象。

一方、これから苦労しそうなのはJava言語を取り巻く諸々。

例えば、Javaのランタイムは企業系のもの(Oracle, Redhat, AWS)からコミュニティベースのものまで色々ある。IDEは会社ではIntelliJ IDEAが標準だけど、業界的にはEclipseが根強い。また、ビルドツールもMavenだったりGradleだったり色々。フレームワークも多く、定番のSpringだけでなくPlayもあるし、Micronaut等のマイクロサービス志向フレームワークもあれば、Seasar2やStruts2などで動いてるプロジェクトも現役だったり。

これらにキャッチアップする上で、良さそうな本(『みんなのJava』)も見つけたので、次はこれを読んでみようと思う。

みんなのJava OpenJDKから始まる大変革期!