koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

『オブジェクト指向でなぜつくるのか』を読みました

はじめに

オブジェクト指向に関する理解がまだまだだと感じていたため、平澤 章 著『オブジェクト指向でなぜつくるのか 第2版』を読みました。

オブジェクト指向でなぜつくるのか 第2版 | 平澤 章 |本 | 通販 | Amazon

そこで学んだこと、感想をまとめていきたいと思います。

章立て

本書は以下のような章立てになっています。

  1. オブジェクト指向はソフトウェア開発を楽にする技術
  2. オブジェクト指向と現実世界は似て非なるもの
  3. OOPを理解する近道はプログラミング言語の歴史にあり
  4. OOPは無駄を省いて整理整頓するプログラミング技術
  5. メモリの仕組みの理解はプログラマのたしなみ
  6. OOPがもたらしたソフトウェアとアイディアの再利用
  7. 汎用の整理術に化けたオブジェクト指向
  8. UMLは形のないソフトウェアを見る道具
  9. 現実世界とソフトウェアのギャップを埋めるモデリング
  10. 擬人化して役割分担させるオブジェクト指向
  11. オブジェクト指向から生まれたアジャイル開発とTDD
  12. オブジェクト指向を使いこなそう
  13. 関数型言語でなぜつくるのか

章ごとの感想

1章〜2章

オブジェクト指向が初学者にとってなぜ理解しにくいのかを教えてくれる内容でした。

オブジェクト指向は現実世界を表す。現実世界はオブジェクトによって構成されている」という考えが、実は異なっているということを教えてくれました😱

私は、オブジェクト指向をコードを書く際の思想だと思っていたのですが、実はソフトウェア開発の総合技術のことであるとのこと‼️

まず、そこに驚き、「じゃあ、オブジェクト指向ってなんなのさ‼️」と、これからの章への期待を膨らませてくれました💪

3章

オブジェクト指向が誕生するまでの歴史を教えてくれる内容でした。

実はここについては、あまりピンときていません。それは、私がRubyしか触ったことがないからなのかもしれません。

しかし、オブジェクト指向以前の言語は、人間にとって分かりづらかったり、整理されていなかったりしたのだと理解しました💦

そのような歴史を教えてくれることで、今後の章で語られるオブジェクト指向の特徴が掴みやすくなったように感じました。

4章・6章・7章

オブジェクト指向の特徴、利点を教えてくれる内容でした。

Rubyを触っていたこともあり、ここは理解しやすかったです。しかし、これまで、なんとなく使っていた、クラス、インスタンスなどについて、クラスがあることでどのようなメリットが得られるのかなどのことを、分かりやすく言語化してくれて、少しオブジェクト指向への理解が深まったように感じました。

8章・9章・10章

UMLを使う意味を教えてくれる内容でした。

私は、今までUMLをなんとなくしか理解してませんでしたが、分かりやすく使う意味を教えてくれました。 特に、UMLがソフトウェアと実際の業務の仲立ちをするという部分が印象に残りました。

UMLを使うことにより、より実際の業務に即したソフトウェアが設計できるため、UMLを使用することはとても重要なことだと感じました。

11章

開発プロセスの種類を教えてくれる内容でした。

名前しか聞いたことがなかった、アジャイル開発ですが、これもオブジェクト志向の考え方から生まれたとのこと。

テスト駆動・リファクタリング継続的インテグレーションアジャイル開発の代表的な実践方法(プラクティス)であるなど、アジャイル開発の基礎のキを知ることができました。

13章

関数型言語の紹介でした。

全然理解することはできなかったのですが、関数型言語をいつかは学んでみたいと思うようになりました💪

全体的な感想

今までなんとなく知っていたことが腑に落ちた感じ

上記でも書きましたが、クラス、インスタンスUMLポリモーフィズムアジャイル開発など、なんとなく聞いたことがある・使ったことがあるキーワードが分かりやすく言語化されており、腑に落ちた感じがあります。

最近、分かりやすく言語化できない時点でその概念については理解していないということを思い始めました🤔

本書のように、分かりやすく説明することを心がけることが自分のより良いアウトプットに繋がるのかなーと、少し本題からずれますが、思い始めました💪

Rubyしか触ってなかったため、全部を理解できたとは言い難い

オブジェクトしこが誕生するまでの歴史などは、他の言語を一切触れて来なかった私にはあまりピンときませんでした。

また、内容が全然分からなかった部分もあります。

単純に私が知識不足なだけだと思うので、折に触れて読み返すと、また分かるようになるのかなーと思いました💪

最後に

難しいことでも細分化して、「どうしてそうなったのか」まで説明してくれる、分かりやすい本でした💪

オブジェクト指向は、開発の総合技術であるということを認識できたのが、一番大きな発見でした。

オブジェクト指向はとても奥深いものだと思いますが、本書で学んだことを時折意識して日々の勉強を進めていきたいです🔥