オブジェクト指向という言葉は知っているけど何が嬉しいのかわからない人が読むべき本|オブジェクト指向でなぜ作るのか

どうもこんにちは。いっとくと申します。

都内でしがないエンジニアをやっておりまして、現在いろんなことを勉強中でございます。

今回はオブジェクト指向について!

オブジェクト指向って、、、難しいよね。

今までif文とかfor文なんかの制御構文や、関数を使って実装してきたのに、次のステップとして、いきなり登場するこのオブジェクト指向。

クラスは設計図で、インスタンスは物…?クラスに定義した変数はプロパティで、関数はメソッド…なんで呼び方区別してる…?カプセル化、継承、ポリモーフィズム…???

みたいなね。

そして極めつけは、プログラムを物として捉えるという、全くどう捉えて良いのかわからない決まり文句!

最初にこの説明を聞いたときは、まじで最高に意味がわからんぜ…という気持ちになったのをはっきりと覚えています。

そして最近オブジェクト指向について、人に説明しなくてはいけないという状況に直面しましたので、ここらでどんな説明をするのが一番いいのかという参考が欲しいなと思ったわけですね。

そこで手にとったのがこちらの本。

オブジェクト指向でなぜ作るのか第2版 表紙
オブジェクト指向でなぜつくるのか 第2版
著:平澤 章 出版:日経BP

以前、このシリーズの「プログラムはなぜ動くのか」という本を読んで、結構わかりやすかったことと、レビューでの評判がかなり良かったことからチョイスいたしました。

結論、かなり良かった!

なんか本読んだあとの感想、大体良かったになる僕ですが、これも良かったので良かったと言わせてください。

具体的にはどう良かったかというと、以下の4つですね!!

  1. オブジェクト指向が登場する前と登場したあとで何が変わったのかが対比されておりメリットがわかりやすい
  2. オブジェクト指向を使った実装面の話だけではなく、UMLなどの設計に関してもわかるようになる
  3. なぜだけでなく、歴史的背景から登場の必然性がわかる
  4. 別のパラダイムである関数型言語の特徴についても触れている

僕自身オブジェクト指向で何ができるのかみたいなところは、ある程度把握していたのですが、それ以外の歴史的背景や設計についても結構ちゃんと触れてあったので、かなり学びの多い内容でした!

オブジェクト指向をめちゃくちゃ圧縮して説明すると、ものとして捉えるというよりは、関数(サブルーチン)だけでは実現できなかった、グローバル変数とローカル変数のいいとこ取りを実現し、役割ごとにまとめることによって、再利用性をグンと上げる技術という感じです。

もともとオブジェクト指向の言語は1960年代には登場していたが、当時のPCのスペックなどの状況を考えると、とてもじゃないと使えるものではなかったのだが、PCの性能向上と無償で使えるJavaの登場によって、一気に普及していったという背景があります。

また、関数型言語に関しては全く知識がない状態だったのですが、この本を読むことで、どんな特徴があるのかを知るきっかけにもなりました。

関数型言語でいうとHaskellとかは聞いたことありましたが、興味がなさすぎて全然情報が入ってきていなかったのですが、ついに興味を持つレベルまでしれたような気がします(やるかどうかは別ですが)

というか関数型言語の特徴を見ていて思ったのですが、部分的には普段使うような言語にも機能が輸入されている感じがしますね。

例えばラムダ関数とかはPythonでも使えるし、カリー化とかってJavaScriptでもできたような気がします。

カリー化に関してはエンジニアになりたての頃に、jQuery開発者であるジョン・レシグの「JavaScript Ninjaの極意」って本を読んだ時に出てきて、1ミリも理解できずに単語だけ頭に残っていたのですが、今回やっと理解することができました。

そう考えると、昔読んだけど半分くらいしか理解できなかった本って今読んだらある程度わかるようになっているんですかね…パーフェクトPHPとか、リファクタリングとか。読みたい本がなくなってきたら振り返ってみようかしら…

そんなこんなでちょっと話が逸れましたが、「オブジェクト指向でなぜつくるのか」は、結構幅広い層に学びのある本ではないかと思いました!

特に以下のような人!

  • オブジェクト指向とか言われても概要がよくわからん人
  • オブジェクト指向の機能は知っているけど、いまいちメリットを自覚していない人
  • オブジェクト指向でプログラムは書けるけど、UMLとか設計の方がおろそかになっている人
  • オブジェクト指向がどんなものかを教える方法に戸惑っている人

表紙にも関数型言語の基礎知識とありますが、これについてはついでに知れるというレベルの話であってメインの流れではないので、関数型言語を学びたいという人はもっと別な選択肢があると思います。

分厚さの割には結構読みやすいですが、やっぱり分厚いので結構時間はかかりました。でも内容は非常にわかりやすいのでぜひお時間ある時に読んでみると思わぬ学びが合ったりするかも!

以上、いっとくインスタンスでした。ガベージコレクション!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする