世間的にはJavaプログラマとして通っているものの、自分がメインで触れてきた環境=お仕事で触れてきた環境はJava7。プライベートではJava8以降の機能を利用してはいるものの、それは機能をつまみ食いする程度。体系だってJava8の機能を学んだことがなかったということもあり、Cay S. Horstmann著、柴田芳樹訳『Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング』(インプレス)を手に取りました。
Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング (impress top gear)
- 作者: Cay S. Horstmann,柴田芳樹
- 出版社/メーカー: インプレス
- 発売日: 2014/09/22
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (10件) を見る
この手のJava8入門本はいろいろ出版されているのですが、この本を選んでよかったと思います。訳者が柴田芳樹さん(ex. 『Effective Java』『プログラミング言語Go』)ということで、内容は信用に足るだろうと、ほぼジャケット買いに近い形で買ったのですが、その予想は大当たりでした。本書は全9章からなり、各々の章末に演習問題がついています。以下のレポジトリはその演習問題に対する、わたしの回答集です。参考にしたい方はどうぞ。
なお本書はJava8の新機能を学ぶことが中心ですが、自分が解くにあたってはJava10を利用しており、Java9ないしJava10で追加されたような機能についても、何の注釈なく利用しています。また全9章中、以下の2章の演習問題については全く回答していません(一通り読んではいます)
- 第2章「JavaFXによるGUIプログラミング」: GUIに対する関心が低いため
- 第7章「Nashorn JavaScriptエンジンの活用」: Nashornが非推奨になり、将来的にJDKから外される可能性があるため。
反省点としては、テストコードをほとんど(というかまったく)書かなかったこと。演習問題が結構難しく、解くだけで精いっぱいだったということもあり、ユニットテストはおざなりに(´・ω・`) 業務は保守運用・傷害調査が中心で、ユニットテストはおろか、ソースコード自体書く機会が少ない。プライベートでもソースコードは書くが、ユニットテストは書かないとなると、「ユニットテスト書かなさすぎ問題」が自分の中で頭をもたげてきます。そこでJUnit力を磨くという意味で、渡辺修司『JUnit実践入門: 体系的に学ぶユニットテストの技法』(技術評論社; WEB+DB PRESS)の演習問題を解くことにしました。
JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 273回
- この商品を含むブログ (69件) を見る
この本自体はかなり前に手に入れ、読みはしていたのですが、演習問題を解いていませんでした。そこで内容をざっと読みなおしたあと、演習問題に回答することで、JUnit力の向上、ならびにユニットテストを書く習慣を取り戻すことに挑戦しました。こちらの演習問題についても、わたしが解いた回答集は以下のレポジトリにアップロードしています。
ただし本書の出版年がやや古いということもあり、いくつかの部分については2018-09現在に合わせています。
- 本書ではJava7系を利用してるが、Java10に変更。
- 本書ではJUnit4を利用しているが、JUnit5に変更。
- 本書ではマッチャーとしてHamcrestを採用している、というより事実上のデファクトスタンダードとして紹介しているが、今回はAssertJを利用した。
- これは現代的な環境に合わせたというよりは、個人的に使ってみたかったという面が大きい。
- 本書ではユニットテストのメソッド名に日本語を使うことを推奨しているが、個人的にはかなり違和感があるので、メソッド名は英語で、代わりに@DisplayNameを利用している。