商品情報
gihyo.jp
きっかけ
Twitterでウザいくらい流れてたので、とりあえず手にとって読んでみた。
たぶん、自分は初心者の部類ではないと思いたい!
初心を忘れない意味でも読んだ。
よくよく見たら、コレは技術評論社から出てるんだな。
Web+DB pressとか、SoftwareDesiginを出しているところか。
最近、定期購読するようになったから、社名は覚えた。
内容
呼んだ内容と、自分への補足を記載。
目次
はじめに
Chapter 1 Javaの基本を知ろう ~イントロダクション~
1.1 Javaとは
1.2 「Hello Java World!」を表示してみよう
Chapter 2 基本的な書き方を身につける
2.1 Javaの基本的な記法
2.2 クラスとメソッド
2.3 情報共有のために知っておきたい機能
2.4 名前のつけ方に注意する
Chapter 3 型を極める
3.1 プリミティブ型と参照型
3.2 クラスの作成
3.3 型判定とオブジェクトの等価性
3.4 型にまつわる問題を予防する
Chapter 4 配列とコレクションを極める
4.1 配列で複数のデータを扱う
4.2 コレクションフレームワークで複数のデータを扱う
4.3. 配列に近い方法で複数の要素を扱う ~Listインタフェース
4.4 キーと値の組み合わせで値を扱う ~Mapインタフェース
4.5 値の集合を扱う ~Setインタフェース
4.6 その他のインタフェース
Chapter 5 ストリーム処理を使いこなす ~ラムダ式とStream API~
5.1 Stream APIを利用するための基本
5.2 Streamを作成する
5.3 Streamに対する「中間操作」
5.4 Streamに対する「終端操作」
5.5 Stream APIを使うためのポイント
5.6 Stream APIを使ったListの初期化
Chapter 6 例外を極める
6-1 例外の基本
6-2 例外処理でつまずかないためのポイント
Chapter 7 文字列操作を極める
7-1 文字列操作の基本
7-2 正規表現で文字列を柔軟に指定する
7-3 文字列のフォーマットと出力
7-4 文字コードを変換する
Chapter 8 ファイル操作を極める
8-1 ファイル操作の基本
8-2 ファイルを読み書きする
8-3 ファイルを操作する
8-4 さまざまなファイルを扱う
Chapter 9 日付処理を極める
9-1 DateとCalendarを使い分ける
9-2 Date and Time APIを利用する
9-3 日付クラスと文字列を相互変換する
9-4 Date and Time APIで日付/時間クラスと文字列を相互変換する
9-5 和暦に対応する
Chapter 10 オブジェクト指向をたしなむ
10-1 プリミティブ型の値渡しと参照型の値渡し
10-2 可視性を適切に設定してバグの少ないプログラムを作る
10-3 オブジェクトのライフサイクルを把握する
10-4 インタフェースと抽象クラスを活かして設計する
Chapter 11 スレッドセーフをたしなむ
11-1 マルチスレッドの基本
11-2 スレッドセーフを実現する
Chapter 12 デザインパターンをたしなむ
12-1 デザインパターンの基本
12-2 生成に関するパターン
12-3 構造に関するパターン
12-4 振る舞いに関するパターン
Chapter 13 周辺ツールで品質を上げる
13-1 Mavenでビルドする
13-2 Javadocでドキュメンテーションコメントを記述する
13-3 Checkstyleでフォーマットチェックをする
13-4 FindBugsでバグをチェックする
13-5 JUnitでテストをする
13-6 Jenkinsで品質レポートを作成する
Chapter 14 ライブラリで効率を上げる
14-1 再利用可能なコンポーネントを集めたApache Commons
14-2 CSVで複数のデータを保存する
14-3 JSONで構造のあるデータをシンプルにする
14-4 Loggerでアプリケーションのログを保存する
補足
デフォルトコンストラクタ
Javaは、コンストラクタでインスタンス生成時の処理が記述されているが、下記のように記載されてない場合もある。
public class Test {
}
この場合、コンストラクタはないように思うが、実は存在している。
上記のコードは、下記のコードと同義になる。
public class Test {
public Test() {
}
}
気をつけなければならないのは、Singletonを使ったケースで発生する。
今は、DIを使ってSingletonを実現することが多いが、そうじゃない場合、デフォルトコンストラクタの隠蔽を忘れて、インスタンス生成がnewで、できてしまう事がある。
public class TestSingleton {
private static TestSingleton instance;
public TestSingleton getInstance() {
if(this.instance == null) {
this.instance = new TestSingleton();
}
return this.instance;
}
}
上記例だと、一見Singletonを実現できているように見える。
しかし、デフォルトコンストラクタを隠蔽してないため、下記のやり方をされると、インスタンスは複数生成される。
public static void main(String[] args) {
TestSingleton ts = new TestSingleton();
}
こうなるとSingletonにした意味が無いので、なるべくprivateで、デフォルトコンストラクタを隠蔽させる。
public class TestSingleton {
private static TestSingleton instance;
private TestSingleton() {
}
public TestSingleton getInstance() {
if(this.instance == null) {
this.instance = new TestSingleton();
}
return this.instance;
}
}
最近、コミュニティの動きが心配。
分解しないかだけ心配。
下記の記事に簡潔にまとまっている。
blog.kengo-toda.jp
一段レベルアップのために、FindBugsにはお世話になったので、このまま継続していて欲しいのが願望。
似たツールとしては、PMDがある。
こっちも、コードレベルをあげるのに役立った。
気になったこと
ワイドニングとナローイング
型変換のところで出てきた。
学生時代の頃は、「暗黙の型変換」って習った気がする。
今は、横文字主流なのか。。。
俺は、どっちかというと、感じの方が厨二臭くて好きだ。
Javaはデカくなったな。。。
Javaで広範囲をカバーしようとしたら、もっとデカくなりそうな気がする。
フレームワークまわりとかカバーしたら、たぶん広辞苑クラスになるで!
感想
初級者よりちょっと進んだ人向けかな?
広い範囲をカバーしてあるので、気になったところは、別途、本を買うなりしてみたほうがいいかもしれない。
知識領域を広めるために読んでみるのがいいのではなかろうかと思いました。
あと、StreamAPIとか、ラムダ式って、初心者はついてこれるものなのだろうか?
俺、覚えるのに結構時間かかった気がする。
今の若い奴らは、すんなり覚えられるのかと思うと、驚愕!
儂も老いたのぉ。。。。
他に気になったのは、参考文献にあった、ひしだまさんのホームページ。
これって、印税が入ってくるのだろうか?
私、気になります!
実際、読んでたら学生の気分を思い出したわ。
パッケージ関連とか、なんの意味があるのか分かんなかったけど、実際のコードを見て必要性を認識した記憶がある。
あと、ファイル入出力も覚えられなかったころが懐かしいな。
懐かしすぎて、老を感じる。
ちょっと虚しさを覚える一冊やったわ。。。
追加でオススメしたい本
Effective Java
Javaではこうするべきってのが、理由付きで載っている。
理屈込で書かれているので、覚えやすい。
基本文法がマスターできたら、あとは、理屈でこう書くべきってのを覚えるといいかも。
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック
どこいってもオススメされるから、あんまり説明の効果ないかな?
一人で開発はありえない。
絶対チームで開発になる。
可読性を重視するためのコツ・ポイントが、コンパクトにまとめられており、読みやすい。
過去に書評書いたので、気になった人は、読んでもらえればと。
suzaku-tec.hatenadiary.jp
本書では触れていなかったが、リファクタリングが開発では必須になる。
アホな現場のガチガチの保守でない限りは、絶対必要になる知識。
みんな大好き「改善」をやるためにも、絶対に読んでおいてもらいたい一冊。
新規で開発する場合も、自分で作りながらリファクタリングすることがあるので、保守しないと思っても、一読したほうが良い。
はじめてのSpring Boot―スプリング・フレームワークで簡単Javaアプリ開発
環境構築が楽なSpringBootを使った入門書。
Javaを使う=Web開発がほとんど。
Webフレームワークを簡単に体験できるのでオススメ。
日本でデザインパターンを学ぶといったら、コレ。
自分は、この本からデザインパターンを学んだわけではないが、内容は簡潔にまとめられているので、一読してみるといい。
Effective Javaに近い内容だった気がする。
今後、APIの開発は、開発トレンドを見ていると必須だと思う。
この本を読んで、APIとはどうあるべきかを考えてみるといいかもしれない。
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp
suzaku-tec.hatenadiary.jp