世界が幸せで在ります様に

ITエンジニアになりたい人・エンジニアの人にとって役立ちそうな商品を紹介するブログ

初心者から中級者(上級者)を目指す!!Javaプログラミング技術書おすすめランキング 5選

f:id:sinsinchang:20181108120058j:plain

はじめまして、sinsinchangです。30代のJavaプログラマです。

プログラマ・エンジニア初心者にとって、Javaというプログラミング言語は、少しむずかしいと感じるかもしれません。

しかし、初心者にとってこそJavaというプログラミング言語は勉強した後のコスパが良く、別言語を勉強する際にも取り掛かりやすいと言われています。

Java自体の利点はいくつかありますが、大きく言えばメモリ管理をプログラマがやる必要がなく、オブジェクト指向プログラミング言語であり、プラットフォームに依存しないアプリケーションが作れます。しかし、Javaの本当の良さはそこではありません。

結論から言えば、我々は金を稼ぎ飯を食わなければなりません。

実はIT業界は、Javaで作られたシステムが大量にありまして、全プログラミング言語の中でおそらくJavaが一番多いです。

勘の良い読者であれば、わかると思いますが、Java言語を学ぶことで食いっぱぐれないということになります。今やIT業界はどこも人手不足です。それに拍車をかけるようにJavaが使われているプロジェクトが一番案件的に多いわけです。

それでは、初心者に読んでもらいたい技術書を紹介します。ランキング形式で紹介します。

比較表

技術書 難しさ 値段 Page
Spring徹底入門 4320 744
Effective Java ★★ 4320 412
リーダブルコード ★★ 2592 260
Java言語で学ぶデザインパターン入門 ★★★ 4104 484
定本Javaプログラマのためのアルゴリズムとデータ構造 ★★★ 2916 504

こちらの5つが、初心者から中級者・上級者を目指すために読んだほうが良いと思っています。Javaプログラミング技術書としては有名ですが、改めてご紹介します。

1. Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

Spring徹底入門 Spring FrameworkによるJavaアプリケーション開発

Java独自の言語仕様は学ぶ必要ありますが、最も人気のあるSpring*1を習得することが必要となります。先程、Javaで作られたシステムが大量とは言いましたが、POJOだけで作られていることはあまりないです。大体、何らかのフレームワークを用いて開発されています。

GitHubで24562のスターを獲得していて、開発も活発的です。 github.com

他にはStruts、Struts2、SAStruts、JSF、PlayFramework(TemplateがGroovy)、PlayFramework2(TemplateがScala)などがあります。ただ、Springを勉強しておいたほうがよいです。これには理由があります。

Springは、プロジェクトの機能や目的によってモジュールを組み合わせて使います。必要なモジュールを加えつつSpringのサポートの恩恵を受けることができるわけです。例えばどういうモジュールがあるかといいますと、最も人気の高いDIや、認証・認可用のフレームワークなどもログイン系で用いられていることが多いです。

他にもバッチ処理であったり、DB系の処理、さらにアスペクト指向プログラミングまでモジュールを追加するだけで導入することが可能です。

実はJavaだけでなくSpringは、最近人気のKotlinでも利用されていることがあります。また少し前でしたら、Groovyでも利用されていました。つまり、Javaの次に別言語を学ぶ際にも利用価値が高いわけです。

実際に他の現場に行く際のスキルシートには、Java歴〇〇年、だけでなく経験フレームワークも記載する必要がありますし、Javaの現場に行くならば必ず質問されます。「ご経験のあるフレームワークは何でしょうか?」と。

ちなみに、僕が学生の時にはJavaでWeb側のアプリケーションを作るときにはSeasarを使っていたのですが、正直今はあまりスタンダードではありません。それでも、当時学生時代の経験で、フレームワークにSeasarと書くことで興味をもってもらえました。

とりあえず稼ぎたいなら、ITエンジニア【IT派遣テクノウェイブ】 のサイトのように、プログラマの求人・案件は大量にあります。もし、僕が学生ぐらいの知識だったらまずはとりあえず登録だけしてみて業界の仕事内容や案件内容を知っておくのも悪くないと思います。こちらは、交通費全額支給だったり、オンラインで無料学習もできたりと、年齢が45歳未満であればこちらのサイトを利用可能です。

ちょっと余裕のある人はこれに加えてSpock Frameworkというものを学んでおくと良いでしょう。JUnitに比べて記述量が少ないので書きやすいです。ただし、バグもあるので確実性には欠けます。

2. Effective Java

Effective Java 第3版

Effective Java 第3版

最近出たばかりのEffective Javaの第3版です。こちらは、Javaプログラマの作法が乗っています。

優秀なJavaプログラマは大体読破していて、さらに再読する技術書になります。初心者のみならず、上級者にとってもバイブルと言えるでしょう。

ただし、こちらの技術書は少しむずかしいのである程度Javaを書いておかないと多分よくわからなかったりします(なぜこの書き方が良いのかが文書を読んだだけでわからないかもしれません。)

手っ取り早いのは、1のSpringの技術書を読んで、実際にコードを書いてみましょう。そして、その知識を持った上でEffective Javaを読む、といったようにこの技術書の前に現場で使われていそうなコードを書いてみる必要がでてきます。

3. リーダブルコード

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • 作者: Dustin Boswell,Trevor Foucher,須藤功平,角征典
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/06/23
  • メディア: 単行本(ソフトカバー)
  • 購入: 68人 クリック: 1,802回
  • この商品を含むブログ (140件) を見る

プログラマ全般的に言えることですが、保守性の高いコードを書くことはプログラマの仕事です。

この技術書を読むことでその一端を知ることができます。

ただし、こちらの技術書も結局コードをあまり書いてない人が読んでいても意味はありません。1や2の技術書を1度でも読んで、自分でコードを書いてみてからリーダブルコードを手にとると良いでしょう。

リーダブルコードの良さが理解できますし、自分のコードを保守性という観点から評価することができ、よりよいコードにリファクタリングすることができます。

また、変数名や定数名、メソッド名やクラス名、インタフェース名など様々な場所で名前をつけますが、リーダブルコードを読むとそこに対して疑問を持つことができます。読んだだけでわからない命名になっていると後で読んだ人が理解に苦しみます。コメントを書けばわかると思っている方もいるかもしれませんが、そもそもコメントがなくてもわかるコードにした方が良いはずなのでそのあたりの手法が掲載されています。

4. 増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門

Javaプロジェクトでは、よくデザインパターンが用いられていることがあります。そういうコードを初見で理解することは難しく時間もかかってしまいます。

しかし、このJava言語で学ぶデザインパターン入門を読むと、23個のデザインパターンを知ることができます。ただし、重要なことですが、必ず自分ですべてのデザインパターンを書いてみてください

初心者がデザインパターンを読むだけで理解することは不可能です。もちろんTemplate MethodパターンやSingletonパターンなど簡単なデザインパターンであれば読むだけでわかるかもしれませんが、多分それはわかった気になっているに過ぎません。なぜならば自分で書けないからです。おそらくその状態では、人の書いたデザインパターンも理解することができないでしょう。

ちなみに、なぜ自分でデザインパターンを書く必要があるかと言うと、プログラマの仕事の一つとして、コードレビューをする必要があるからです。

人のコードを読み、仮にデザインパターンの一端が隠れているならば、それはデザインパターンを用いたルールなんだ、と考えながら読む必要があるからです。

特徴としては、デザインパターン特有の命名があります。Visitorパターンなどが良い例でしょう。逆にデザインパターンを使っているのにもかかわらず、わかりにくい命名にしている際はコードレビューの際にしっかりと指摘してやってください。このデザインパターンを使っているならば、命名をこうこう変えてください、と。

5. 定本Javaプログラマのためのアルゴリズムとデータ構造

定本Javaプログラマのためのアルゴリズムとデータ構造

定本Javaプログラマのためのアルゴリズムとデータ構造

Java 技術書の紹介の最後ですが、定本Javaプログラマのためのアルゴリズムとデータ構造を挙げます。

初心者がいきなりこの本を読むのは厳しいので、最後にしました。また、Java6で書かれているので古い書き方が散見されると思います。そういうところも判断できるレベルまで行ってから読んだほうが良いでしょう。

プログラマにとってアルゴリズムは武器です。たくさん知っていれば、効率の良いコードがかけます。それをJavaで書いているので、今回取り上げています。

プログラマがコードを書くときに注意しなければならないのは、様々ありますが、その中でも処理速度には常に気を配る必要があります。つまり、アルゴリズムの平均計算量と最大計算量を頭で考えつつコードを書いていかないといけないです。有名なアルゴリズムは、最速のクイックソートや線形探索、幅優先・深さ優先探索などです。

なお、こちらの本のコードを写経するときは、Java8以降の書き方で行ってください。Java8なんて古いと思った方に関しては全く問題ないと思っています。ラムダ記法を用いて効率的に書くというところに集中すれば、深く記憶に残り新しい発見もあるでしょう。

比較表

最後にもう一度比較表です。

ちょっと自分でやるのはまだ難しいなと思っている方なら、プログラミングのオンラインスクールCodeCamp もおすすめです。新規体験レッスンであれば、お金はかからないのでまずはお試しで受講してみるのはありかもしれません。体験レッスンを受講しておくと、本当にここに入る、となったときに1万円も割引があったりと結構お得です。

実際に僕の友人も受講してみて、マンツーマンでプロのエンジニアが教えてくれるから現場の知識が身につきそうという話をしていました。

技術書 難しさ 値段 Page
Spring徹底入門 4320 744
Effective Java ★★ 4320 412
リーダブルコード ★★ 2592 260
Java言語で学ぶデザインパターン入門 ★★★ 4104 484
定本Javaプログラマのためのアルゴリズムとデータ構造 ★★★ 2916 504

以上

プロフィールと免責事項