なぜ、あなたは Java でオブジェクト指向開発ができないのか(ナゼ アナタ ワ ジャバ デ オブジェクト シコウ カイハツ ガ デキナイ)
Java の壁を克服する実践トレーニング
プログラミング- 著者:
- アクロクエストテクノロジー/小森裕介(アクロ クエスト テクノロジー/コモリ,ユウスケ)
- 出版社:
- 技術評論社
- 出版日:
- 2005年01月
- ISBN:
- 9784774122229
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
本質の理解…オブジェクト指向の考え方を、短期間で本質的に理解する。実戦力の習得…オブジェクト指向を使って、ゼロからプログラムを作成する力を身につける。この 2 点を目的として書かれた一冊。
技書の森解説
Java の文法は一通り覚えたのに、いざ自分でクラスを設計しようとするとどう分ければよいのか分からない。その壁に正面から取り組んだのが、 2005 年 1 月に技術評論社から刊行された『なぜ、あなたは Java でオブジェクト指向開発ができないのか』です。副題は「 Java の壁を克服する実践トレーニング」。エスエムジー株式会社と小森裕介氏の共著で、版元の紹介によれば、オブジェクト指向の考え方を短期間で本質的に理解することと、オブジェクト指向を使ってゼロからプログラムを作成する力を身につけることの 2 点を目的に据えた本です。
オブジェクト指向でつまずく本当の理由
オブジェクト指向でつまずく人の多くは、言語機能の知識が足りないわけではありません。クラス、継承、ポリモーフィズムといった文法要素は説明できても、目の前の要件をどのようなクラスに分け、どのクラスにどの責務を持たせるかという設計判断は、文法書では教わらないからです。手続き型の発想では処理の流れを上から順に書き下しますが、オブジェクト指向では先に「誰が何を知っていて、何をするのか」という役割分担を決め、処理はその役割同士のやり取りとして組み立てます。この発想の組み替えこそが本書の書名にある「できない」の正体で、知識を足すだけでは越えられず、考え方を作り替える訓練が必要になる部分です。
手を動かして体得させる演習構成
本書はその訓練を、読んで納得させる読み物としてではなく、手を動かして体得させるトレーニングとして構成しています。抽象論を並べるのではなく、ゼロからプログラムを組み上げる過程を通じてオブジェクト指向の考え方を身につけさせる立て付けで、全 293 ページと 演習主体 の本として通読しやすい分量に収まっています。
2005 年刊行という時代性への注意
読む際は 2005 年刊行という時代性に注意が必要です。刊行当時の Java は J2SE 1.4 から 5.0 への移行期にあたり、ジェネリクスやアノテーションが導入され始めた頃で、ラムダ式やストリーム API はまだ存在しません。したがってモダンな Java の言語機能を学ぶ本ではなく、コード例の周辺環境も 2005 年時点のものとして読む必要があります。一方で、責務の分割 やカプセル化、ポリモーフィズムの使いどころといった設計の考え方そのものは言語バージョンにほとんど依存せず、この普遍的な部分こそが本書の価値の中心です。
類書との使い分けと向いている読者
共著者の小森裕介氏は、後に Web アプリケーションの基盤技術を解説した『プロになるための Web 技術入門』 (2010 年・技術評論社) を著しています。初学者がつまずく箇所を言語化してから解きほぐすという本書の姿勢はそちらにも通じており、両書を著者つながりで併読する読み方もできます。また、オブジェクト指向の「なぜ」を扱う本としては平澤章氏の『オブジェクト指向でなぜつくるのか』 (日経 BP) が知られますが、あちらが仕組みと成り立ちを解説する読み物であるのに対し、本書は自分で設計して書けるようになるための演習という違いがあり、概念の腹落ちを求めるか手を動かす訓練を求めるかで使い分けられます。
Java の 入門書 を 1 冊終えて、動くコードは書けるのにクラス設計になると手が止まる人、コードレビューで「手続き型的な書き方だ」と指摘されて直し方が分からない人には、費やした時間が設計判断の基準として残る一冊です。逆に、文法の学習が済んでいない段階の人や、 Java の新しい言語機能を知りたい人には向きません。オブジェクト指向の考え方は一度身につければ言語を替えても持ち運べる資産であり、設計の壁の前で足踏みしている Java 学習者にとって、遠回りに見えて確実な投資になります。
言及 Qiita 記事 (24 件)
関数型言語のウソとホント
♡ 1753JavaScript, Haskell, 関数型言語【11万文字越え】プログラミング初心者に贈る即戦力ガイド
♡ 1517Python, オブジェクト指向, リファクタリング, リーダブルコード, 初心者オブジェクト指向とは結局何なのか あるいはプログラミングで気をつけるべきたった一つのこと
♡ 435Java, オブジェクト指向, リーダブルコード, デザインパターン, 新人プログラマ応援_記事投稿キャンペーンオブジェクト指向って何だよ!
♡ 287オブジェクト指向, AdventCalendar2021オブジェクト指向は業務システムで本当に不要なのか?
♡ 211オブジェクト指向, oop, システム開発2000年以降20年間のプログラミング技術の歴史を振り返って、得た知見を書いてみる
♡ 88プログラミング, SoftwareDesign初心者プログラマが初心者におすすめする初心者向けIT本
♡ 66本, 初心者開発への異常な愛情 または私は如何にして嫉妬を止めてActive Recordを愛するようになったか
♡ 60ActiveRecord, SQL, Laravel質問[読んでおいたほうがいい本]の69回答のまとめ
♡ 25まとめ, 技術書, 書籍, teratail, 新人プログラマ応援「関数型プログラミングはオブジェクト指向の正当な後継である」がわからない理由
♡ 15オブジェクト指向, 関数型プログラミング
言及 Zenn 記事 (1 件)
この本に興味がある方におすすめ
この本に関連
関連記事
ソフトウェア開発の歴史を変えた 5 冊の技術書
アルゴリズムの学問化からコードの可読性革命まで、ソフトウェア開発の方向性を決定づけた 5 冊の技術書を、時代背景とエピソードとともに紹介します。
写経を超える - 技術書のコードを自分のプロジェクトに応用する方法
技術書のサンプルコードを写経するだけでは実力は伸びません。書籍のコードを自分のプロジェクトに応用し、実務で使える力に変える 5 つのステップを解説します。
コードを書かない日に読む本
休日や有給休暇など、コードを書かない日にこそ読むべき本があります。実装から離れた日に読むと効果が高い本のジャンルと、その理由を解説します。
関連用語
S3 ライフサイクル
S3 オブジェクトのストレージクラスを自動的に移行し、コストを最適化する機能
エンティティと値オブジェクト
DDD における 2 つの基本的なドメインモデル要素 - 同一性で区別するエンティティと、値で区別する値オブジェクト
オブジェクト指向
データと操作をオブジェクトとしてまとめ、現実の概念に近づけて設計する考え方
Flyweight パターン
多数のオブジェクト間で共有可能な状態を分離し、メモリ使用量を削減するデザインパターン
Builder パターン
複雑なオブジェクトの生成をメソッドチェーンで段階的に構築するデザインパターン
S3
AWS のオブジェクトストレージサービスで、無制限のデータを高い耐久性で保存する