最近、設計というものをよくやります。

個人でアプリを作っているときは、細かい設計などを考えず”とにかく動くものを作る”ことを最優先にして、とにかく手を動かしていました。

でもチーム開発でそれをやるわけにはいかないですよね。継続的に保守をしなければいけないし、ある程度規模が大きくなってくると各パーツが依存しあっているせいでとんでもなくこんがらがってしまうことがあります。

そういうわけでオブジェクト指向をもっと掘り下げて理解しなければいけないと感じていたので、この本を読みました。

オブジェクト指向でなぜつくるのか 第2版
平澤 章
日経BP社
売り上げランキング: 36,595

「なぜ?」の部分にフォーカスされていて「だからオブジェクト指向がここまで主流になったのか」ということがよくわかりました。

“オブジェクト指向はソフトウェア開発を楽にする技術”

本で述べようとしていることは

“オブジェクト指向はソフトウェア開発を楽にする技術”

に尽きます。

分かりやすいな〜と感じたのは、オブジェクト指向を取り巻く用語が多いこと、オブジェクト指向の説明をするときによく使う”比喩”、「現実世界をそのままプログラムに表現」しようとすること、などなどがオブジェクト指向を分かりづらくしている要因として最初に説明していることです。

こういった問題を一つ一つ解きほぐして説明を進めていくため非常に分かりやすかったです。

いわゆるプログラミング言語としてのオブジェクト指向と汎用の整理術としてのオブジェクト指向を分けて説明しているため、ありがちな両者の混同を避けることができます。

例えば”犬”というクラスを継承してポメラニアンクラス、ゴールデンレトリーバークラス〜なんてことをオブジェクト指向の説明をするときに使ってしまいがちですが、現実世界ではポメラニアンがいて、ゴールデンレトリーバーがいて、それらを生物学的分類上”犬”としているのであって、これはあくまでも汎用の整理術としてオブジェクト指向を利用しているだけのものです

一通り、オブジェクト指向の用語などの説明を終えると、UMLやアジャイル開発、TDDなどオブジェクト指向を取り囲む技術や製品、ワークフローにまで言及しており、実装レベルにとどまらず設計やマネージメントにまで話が及びます。

正直なところ、「アジャイルとかちょっとかっこいいし先端を行ってる感じがするから取り入れたがるんでしょ?」とか感じていたのですが、オブジェクト指向と深い関わりがあることがわかり腑に落ちた感じがしました。

また最後には近年よく聞くようになった”関数型言語”の話も取り上げられており、個人的にはその部分がとても興味深かったです。

実際、関数型言語の幾つかはSwiftにも取り入れられており、命令型言語と関数型言語のイイトコ取りをした言語がこれからも増えていくのではないかと感じました。

まとめ

オブジェクト指向とはなにか、というと一言で表現するのは難しいです。

どうしても”比喩”での表現に走ってしまうため、初めてオブジェクト指向を勉強する人にとってはとっつきにくいものと感じてしまうのかもしれません。

ただ、プログラムを学ぶ上ですでにオブジェクト指向の概念は避けて通ることのできないものとなっていますし、複雑なことをやろうとするとどうしても設計をしっかりと行う必要が出てきます。

アプリでいうとMVCを意識した設計を行い、テスト可能なコードを少しでも増やすことを最近では意識していますが、その際に汎用的な整理術やUMLモデリングなどは設計のための”ツール”として非常に有用であると思います。

有名な本ですし評判も良いのでずっと読みたいと思いながら積ん読状態だったのですが、もっと早く読んでおけばよかったな〜なんて後悔しています。

オブジェクト指向でなぜつくるのか 第2版
平澤 章
日経BP社
売り上げランキング: 36,595

オブジェクト指向はプログラミング言語よりの用語だと思っていたのですが、もっと広範に使える知識であり、ツールとして使いこなせばアプリ開発が楽になるのではないかと感じました。あくまでも道具として、手段として見極めて使って少しでも楽に開発を進めたいと思います。