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

『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を初歩からやり直したい人にもオススメできる良書。