コードコンプリート上下巻を読んでみて、改めてオブジェクト指向についてまとめてみた

コードコンプリート上下巻を読んでみて、改めてオブジェクト指向についてまとめてみた

どうもこんにちは、最近は職業エンジニアになりつつある「つかろーひ」です。

普段から当たり前にプログラミングではクラスを使い、各クラスにどうゆう役割を持たせて何をカプセル化してとか考えて組んでいますが、ふとオブジェクト指向って何だろうと考えた時に、一言で説明が思いつきませんでした。

もちろんネット検索すればいくらでも答え?みたいな説明は見つかるのですが、もう少し自分に落とし込みたいなと思い、他の開発メンバーからも勧められたコードコンプリートという技術書を読むことにしました。

現在は1冊にまとめられたものもありますが、どうせならと上下巻バージョンを購入しガッツリ読んでみました。

今回はオブジェクト指向についてもっと知りたい感のある私がコードコンプリートを読んでみた感想と、オブジェクト指向の理解とコードコンプリートの内容がどのようにマッチしているのかなどを簡単にまとめてみましたので、よければ参考にしてみてください。

オブジェクト指向とは

今の私が思うオブジェクト指向とは、“現実世界のあらゆるものをプログラムで表現する際にオブジェクトとして捉えて構成していく”ことかと思います。

現実世界のあらゆるものとは、建物であったり車であったり人であるかも知れません。
建物であっても、ビル、マンション、戸建てみたいなまとめ方であったり、ドア、窓、床、電気みたいなまとめ方の場合もあるでしょう。
人であっても、人種、男女かも知れませんし、頭、胴体、下半身などもあるでしょう。喋る、走る、止まるなど動作単位かも知れません。

このように、1オブジェクトとしてのまとめ方はプロジェクトによったりオブジェクト指向をベースに考える事柄によって変わってはきますが、究極は現実世界のあらゆるものをオブジェクトとしてまとめて捉えていく構成の組み方というか考え方をオブジェクト指向と呼ぶんだと思います。

そしてもう少しプログラミング寄りに説明すると、そのオブジェクト単位に捉えた内容をクラスに置き換え、各クラスの役割やできることをサブクラスに関連付けて分けたりルーチンで持たせながらプログラミングしていくことになります。

コードコンプリートについて

コードコンプリートではオブジェクト指向について直接的な説明はされていません。
あくまでオブジェクト指向を前提に、ソフトウェア開発にどう落とし込んでいくのがベストかについて書かれています。

なので、そもそも「オブジェクト指向とは?」を勉強したい人からすると少し離れますが、ある程度「オブジェクト指向とはこんな感じかな?」くらいの認識がある人からすると、コードコンプリートを読むことで、開発工程全てにおいてどのようにオブジェクト指向を落とし込んでいくといいのかが分かるので、一度読んで見ることをおすすめします。

 

コードコンプリートの上巻では

ソフトウェア開発の全体像や各役割と大切さ、中でもプログラミング作業も含まれるコンストラクションについてを中心に説明されています。

上巻の後半にかけては、クラスやルーチンの設計の仕方、チームで開発していく際に大事な可読性や自分も含めたメンバーの理解、保守のしやすいプログラミン手法や意識するべき点などについて書かれています。

コードコンプリートの下巻では

上巻で説明された内容を実現し、品質の高いソフトウェア開発をするために必要なプロセス、テスト、リファクタリングなどについて具体的なコード例を含めて説明しています。

また、これらプログラミング作業を含むコンストラクションの管理や、各工程においてより深く知りたい人に向けた参考書籍なども紹介されています。

オブジェクト指向とコードコンプリートについてまとめ

仕事では毎日プログラミング開発していますが、最近は少しプライベートでの開発がおろそかになっていたこともあり技術系のモチベーションが下がっていたので、今回コードコンプリートの上下巻を読み終えるのに数ヵ月も要しました。

とは言え、コードコンプリートは2020年5月頃から読み始めたのですが、その頃と比べるとオブジェクト指向というものの理解度、またリアルなオブジェクト指向をベースとしたプログラミングスキルは格段に上がったと自負できるようになりました。

コードコンプリートは中盤くらいから具体的なコードの例などを含めて説明してくれているので、即座に業務や自分のコードディングに反映させられます。

私の開発現場でも他メンバーからのコードレビューはあるのですが、この頃からレビュー頂く数や内容が劇的に変わってき、より深い所でコードのクオリティーを上げられるようになりました。

正直オブジェクト指向が説明できなくても、シンプルで誰が見ても理解しやすいプログラミングができていればいいとは思いますが、結局そのためにまずは自分の頭でオブジェクト指向の捉え方ができるかどうかで全然違うと思います。

コードコンプリートはソフトウェア開発の全体像からプログラミンにより近いスコープであるコンストラクションまでをしっかり説明してくれている技術書ではありますが、その分ページ数もすごいため一気読みはまずできないと思いますし、一気読みして内容を理解できるようなものではないと思います。

今年も始まったばかりなので、2021年中にコードコンプリート読破を目標にするくらいのモチベーションがちょうどいいかなと思います。

もしオブジェクト指向についてもっと深く理解したい”人、オブジェクト指向を自分のプログラミングにうまく落とし込みたい”という人などは一度読んで見るといいと思います。