👏

[献本いただきました] プロになるJavaでプロになるには

2022/03/20に公開

この度、筆者である、きしだ様、および、技術評論社様にプロになるJavaを献本していただきました。ありがとうございます。お礼を兼ねて、レビュー記事を書かせていただきます。

先に一言でこの本を言い表すなら、プロになると言うこととは、こういったことを意識すれば良い!と言うことを表現している本だと感じました。

この記事では、この本で特にすごい!濃密だ!と感じた、2〜4部の見どころについて、個人的な見解をお伝えできたらなと思っています。

もし、Javaを勉強している、これから勉強する。プロに早くなりたい!という方がいれば、資格勉強などをする前にまずはこの本を買って学ぶが正解です。教育関係の書籍や資料を使う方がいれば、この本での伝え方を学ぶと良いでしょう。私自身も、この書籍での流れにとても同意し、学びになりました。

第2部 Javaの基本

2部は、以下の章の構成になっています。基本的に2部はjshell(REPL)をふんだんに使っている部で、初学者にしっかりとプログラムの作用を習得させながら、構文エラーや実行時エラー(およびスタックトレースの追い方)の違いを教えながら、プロの仕事の初歩を伝えている重要な部だと感じました。

  • 第3章 値と計算
  • 第4章 変数と型
  • 第5章 標準API
  • 第6章 SwingによるGUI

3~6章は、開発のプロとは、値と計算・変数と型の性質を捉えた上で、標準APIを使いこなして、プログラムを構築していく。その道具としてREPLがあるのだよ。ということを懇切丁寧に説明している部でした。本当に泣けるくらい懇切丁寧に説明しているので、長期戦になって苦しいかと思いますが、どんな言語を習得しようとしても、結局ここに返ってくるので、初学者の方は気合を入れて身に付けていただければなと思います。

そして、6章に差し掛かりますが、最初いきなりSwingによるGUIが入ってきて変な構成だな?と思いましたが、これまた読んですごく納得しました。これもまた、プロになるとは?のキモですが、計算、つまり、入力と出力の作用と、それらをパッケージした標準APIだけを学んでも、作りたいものが作れるわけではありません。それを基礎として、アプリケーションというコンピュータ(メモリ)の状態を書き換えながらユーザにフィードバックする機構を制御しなければ、プロになったとは言い難いです。それを学び取ってもらうために、Swingというアプリケーションの状態をjshellで1行1行実行し、手続き的に(逐次実行し)書き換えていくことが、開発なんだと学ばせる素晴らしい章だと感じました。

改めて、プロになるとは、どう言う意味でしょうか。この部を読みながら思った結論としては、普段の業務での行い・知識をいかに言語化して、それらについて、自信を持つか、磨き上げることができる状態にできるか、だと思いました。多くの書籍では、プログラミングとは、言語とは、こう言ったものですよ。と言う紹介という色が強い一方。プロになるJavaでは、プロはこんなことをしながら、日々学びを重ねているよ。プロの仕事はつまりこう言ったことだよ。というメッセージ性がとても強いと感じました。

第3部 Javaの文法

3部は、2部よりもう一段ギアが上がり、プログラムでデータ構造を加工するための技術のイロハをまとめた部になります。この部は手続き型的な手法と関数型プログラミング的な手法であったり、違いをより良く伝えている部だなと感じました。

  • 第7章 条件分岐
  • 第8章 データ構造
  • 第9章 繰り返し
  • 第10章 データ構造の処理
  • 第11章 メソッド

プロになるJavaでは、7章, 9章では手続き的かつ古典的な、forループを2重, 3重に回したり、その中でif文を使うような古典的なアルゴリズム手法を教えますが、8章、10章はListやStream, ラムダを利用したモダンな関数型プログラミングのアプローチの仕方を教えています。どっちの手法の方が好みか、どういう強みがあるか、などはありますが、Javaはどちらもできる上にプロになるということは、現場を選ばずに、場合によっては自分の裁量で現場を変えていく、という判断をしていくには、どちらもより良く学んでいく必要があるため、そう言ったところにプロになるを感じました。

11章は、メソッドとラムダ式の違いについてであったり、オブジェクト指向の片鱗について触れています。

第4部 高度なプログラミング

4部は、高度なプログラミングということで今までの応用であったり、より踏み入った内容に入っていきます。

  • 第12章 入出力と例外
  • 第13章 処理の難しさの段階
  • 第14章 クラスとインターフェース
  • 第15章 継承

多くの書籍では入出力を最初に扱って初学者を混乱に陥れることが多いので、高度なプログラムとして、入出力が入っていることが非常に安心しました。また、私自身は今までJavaでプログラミングを学び始めることは、強い嫌悪を抱いていました。その理由として、Javaはオブジェクト指向の言語・クラスがなければプログラミング(学習)を開始することはできない。という強い制約がありましたが、jshellを主体とし、このプロになるJavaを教科書とすれば、4部にしてやっとクラスとインターフェースが登場するため、学習者は段階的に複雑さに触れることができるため、比較的安心して学習に取り組めるのではないかと思います。

15章、継承では、多くの書籍で使い古された、継承とは動物クラスがいて、そこから犬猫が生えます的な、いい加減な説明ではなく(この説明のために、同じ物が出てきますが) 差分プログラミングの手法としての継承。モジュールと関数型プログラミングとの対比をしつつ、多くのライブラリやフレームワークの考え方が、後者にシフトしてきたことを簡易的に説明していて、より多くの初学者がオブジェクト指向沼に入ることを回避する良い読み物でした。是非、実際に購入して、その説明を読んでみてください。

まとめ

各部で触れていますが、プロになるとは 初学者が自然と難しいステージに段階を踏んで進んでいくのは、ということがよく設計されている書籍でした。Java嫌いの私が、Javaでプログラミング入門しても良いな〜!と思うことができた素晴らしい本でした。まだ購入されていない方は、是非お手にとって読まれて見てはどうでしょうか?

Discussion