無駄かもしれない足掻き

github : https://github.com/zer0-u

Javaに本格再入門した

話題のアクロ本ことJava本格入門を読んだ。

どうでもいいけどアクロ本って打ち込むと悪路本になってしまうのでどうにかしたい。

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

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

読んでいるときのぜろゆの状況

  • Java歴2年ちょっと
    • その時のJavaは古のJavaだったので今でもあんまり思い出したくはない
  • 最後にJavaをがっつり触ったのは去年の7月ごろ
    • その後はC#とかRuby on Railsとかやってる
    • もしかしたら今後Javaに出戻るかもしれない

雑感

とりあえずざっと目を通した程度(理由は後述)だけれど、自分のJavaについての理解を整理するにはちょうどよい分量だった。入門とあるけれど、Javaを全く知らない人には少し難しい。一応Chapter1,2でインストールや基本的な書き方は拾っている。けれど、本書の重要なところはそれ以降の部分にあって、そこは実際にJavaを使ってみて、ここどうなんだろうとか、もっとうまいやり方があればいいのにな、というときの指標となるからだ。だから、ある程度業務でJavaを使っていて、まだ自分のコードには改善の余地があるんじゃないかと思う人や、私のようJavaから少し離れていたが出戻るにあたって最近の動向を知りたいと思う人に最も役に立つ気がする。

というのも、いろいろな題材において「Java6より前」と「Java7以降(そしてJava8)」での書き方が併記されていて、自分がどこまで知っているのか・自分が使っているのはどれかを把握できるようになっているからだ。初めて本格的に触れたJavaが古つまりJ2SE1.4で、うまく書けないなとぐぐって出てくるコードは全部コンパイルエラーになり、自分の何が間違っているのか真剣に悩んだ経験がある身からすると非常にありがたい。まぁこれは極端すぎる例だけれど、「Javaにバージョンがあること」と「バージョンによって使える文法が異なること」を知る機会というのは意外と少ない。軽自動車に軽油云々の話題が最近TLに多く流れていたけれど、それに似た感じで「知っている人にとっては常識だけど、それをいつ知ったかはわからない」知識だと思う。私は周囲に恵まれているから比較的早く気づけたけれど、会社でのみコーディングしていて、たった一つのJavaのバージョンにしか触れることがなければ、いつ気付けただろうか…。そういった意味でも、多少幅を取ってでも過去のJavaと併記してあるのは非常に価値がある。新卒の頃の私に送りつけてさっさとそんなJavaに見切りをつけろと言いたい。

加えて特徴的だなと思ったのが、Chapter 10の「オブジェクト指向をたしなむ」のところ。クラスがひな形でインスタンスが実体で、みたいなよく見かける説明をされるのかと思ったら、いきなり参照渡しとかライフサイクルとか言われて最初は面食らった。でもよく考えてみると、実際にJavaを使って何か作るとなるとここに書かれている内容こそが大事になる。想定読者はひな形と実体の話は知っている前提で、表紙にある通り「効率的で品質の高いコードを書くために」この章を構成したんだなというのが一番よくわかった。Chapter 14のライブラリの選び方も「わかる~~~~~めっちゃ悩んだ~~~~」ってところを突いてきていて、実務でJavaを使い続けている執筆陣だからこその着眼点だったんだろう。

あとすごいのが索引。この分量と内容であれば索引なしでも十分だと思う。目次もしっかりしているから気になるところがあれば目次から簡単にたどれるようになっているし。にもかかわらずここまで細かい索引を載せたのは、ほんの少しでも品質の高いコードを書くために、できる限り短時間で目的の項目にいけるように、という配慮だと感じた。索引に載る項目も単語ではなくフレーズになっていてほんとに至れり尽くせり感がすごい。実際、この索引を見た時点で「じっくり時間をかけて読むのではなく、全体をさらっと目を通してあとは必要に応じて索引使えばいいか」と判断したくらい。

ということで、カバーに書いてある通り「効率的で品質の高いコードを書くために」必携の一冊だと思った。ある程度Javaを触っている人が読んだら絶対に損しない。いい本を買いました。

そんな感じです!