gladevise Logo
HomeAboutContact

【レビュー】平澤 章 (著) オブジェクト指向でなぜつくるのか


https://www.amazon.co.jp/dp/B00ISP0QB2/

平澤 章 (著)の『オブジェクト指向でなぜつくるのか』を読みました。オブジェクト指向の説明として、「"猫"がクラスで"タマ"がインスタンスなんだ」という比喩や「オブジェクト指向を使えば、現実世界の多くを物としてプログラム上に実装できるのだ」とかいった説明を聞いても、結局、オブジェクト指向がなんなのか理解できませんでした。

この本は過度な比喩表現やこの世全てをオブジェクトで説明しようとする「なんでもオブジェクト症候群」がオブジェクト指向への理解を妨げであると指摘しています。そしてオブジェクト指向を理解するために、プログラムの歴史からオブジェクト指向が生まれるに至った必然性を説明し、純粋にソースコードを整理し、効率的に再利用する術としてのオブジェクト指向について解説します。

さらに、オブジェクト指向から派生的に生まれたUML、デザインパターン、アジャイル開発、TDDについて解説しています。最後にHaskelに代表される近年話題の関数型言語についても触れています。

『オブジェクト指向でなぜつくるのか』の対象読者

  • オブジェクト指向について知らない人
  • オブジェクト指向は現実世界の"もの"を全て説明できると聞いてもピンと来なかった人
  • 動物の例えや会社の部署の例えなど、オブジェクト指向を説明するための比喩を見ても理解できなかった人

『オブジェクト指向でなぜつくるのか』のおすすめ度:★★★★☆

オブジェクト指向について簡潔に説明している内容がありましたので、本文より引用させていただきます。

オブジェクト指向をひと言で表現すれば「難しいソフトウェア開発を楽に行うための総合技術」となるでしょう。

オブジェクト指向でなぜつくるのか 第2版 位置No. 4995

これがこの本の中で終始貫かれている理念です。比喩表現で分かった気にさせることなく、かと言ってカプセル化、ポリモーフィズム、継承などの専門用語を使って煙に巻くでもなく、プログラミングの歴史から人類がオブジェクト指向を手に入れるに至った経緯を丁寧に説明しています。

『オブジェクト指向でなぜつくるのか』の良い所

  • オブジェクト指向の解説でありがちな意味不明な比喩表現がない
  • プログラムの歴史から、なぜオブジェクト指向が生まれたのか理解できる
  • オブジェクト指向から派生的に生まれたUMLやデザインパターン、アジャイル開発、TDDについて触れている
  • オブジェクト指向を正体不明の技術としてではなく、再利用可能な形で効率的にプログラムを整理する仕組みとして説明している

『オブジェクト指向でなぜつくるのか』の悪い所

  • 参考文献が少しばかり古い

これはオブジェクト指向というコンセプト自体が昔から存在しており、かつソフトウェア開発という一般的に賞味期限が短い分野において、廃れることなく受け継がれているという事実を示しているとも取れます。

  • 例えや参考文献がJava中心

本分中のサンプルコードや参考文献などに登場する言語は基本的にJavaです。Javaを知らない人やPythonだけやっていて静的型付け言語はあまり触っていない人にはちょっと読むのが億劫になる場面がある可能性があります。

『オブジェクト指向でなぜつくるのか』を読んだ感想

オブジェクト指向の原型であるSimula67は1967年に開発されています。オブジェクト指向が変化の激しいプログラミング言語業界で50年以上も残り続け、今も実践で活躍している事実に驚くと同時に、これほどコスパの良い知識もないと思いました。

ちまたで話題のライブラリやフレームワークはものの2,3年で世代交代しますが、オブジェクト指向という概念は何十年と続いています。さらに、これに続く関数型言語もオブジェクト指向に組み込まれるような形で発展していくことを考えると学んでおいて損はない定番知識と言えます。

この本では具体的なオブジェクト指向での実装方法までは紹介されていませんが、実装方法を学ぶ前の前提理解として最適な本と言えます。まだの方はぜひご一読ください。

https://www.amazon.co.jp/dp/B00ISP0QB2/

Recent Posts

Next.jsでsitemap.xml生成する

Next.jsでSSRやnext-sitemapを用いてsitemap.xmlを生成する方法を紹介します。

Rust製の爆速端末Alacrittyのインストールと設定方法

Rust製のGPUで高速レンダリングするターミナルエミュレータAlacrittyのインストール方法、tmux、NeoVimでのTrue Color、カラースキーム、Font、デフォルトの端末の設定などの紹介をします。

react-modalを使ってModalコンポーネントを作る

react-modalを使ってModalコンポーネントを作る方法を解説します。モーダルの外側をクリックして閉じる、アニメーションを付ける等の基本的な機能から、CSS-in-JS(Emotion)を使ってタイリングの方法を説明します。

Emotionを使ってGatsbyでtailwindを使う方法

Gatsby & Emotion & tailwindの環境構築、スタイリング方法についてまとめました。twin.macroを使えば、classNameだけでなく、Styled Componentsやcss propでスタイリングできます。

GatsbyのLinter/Formatter, CSS-in-JS環境構築

Gatsbyのインストール方法、プロジェクトの作り方、Linter(ESLint, stylelint)/Formatter(prettier)、CSS-in-JS(styled-components, Emotion)、tailwindの設定方法を説明します。