今回は、「オブジェクト指向」の概念について、解説していきたいと思います。
エンジニア初級の方でも分かるように、頑張って解説していきたいと思います、もしわからない箇所があればコメントで教えていただければと思います。

オブジェクト指向を理解するための3つのステップ
- オブジェクト指向がなぜ必要になったかを知る
- オブジェクト指向の概念を知る
- オブジェクト指向でプログラムを作ろう
今回は、1.オブジェクト指向がなぜ必要になったかを知るについて解説します、次の記事で2,3も投稿予定です。
1.オブジェクト指向がなぜ必要になったかを知る
今回は、オブジェクト指向が必要になった背景を理解しましょう。
背景をよく理解するために、簡単にプログラミング言語の歴史を振り返りましょう。
年代 | 開発言語の誕生 |
---|---|
1940年 | アセンブリ言語の誕生 |
1960年 | COBOL言語の誕生 |
1964年 | BASIC言語の誕生 |
1972年 | C言語の誕生 |
1996年 | Java言語の誕生 |
他にも色々な開発言語が、登場してますが、驚くべきはJavaが誕生して既に25年以上の年月が経ちますがいまだに多くの企業で使われております。
それほどに、オブジェクト指向という考え方が優秀で、オブジェクト指向を取り入れたJavaが多くのエンジニアに愛されてきたということです。
さて、本題に入りますが、そもそもなぜ、Javaのようなオブジェクト指向の言語が誕生したのでしょうか?
それは、Javaが誕生するまでの開発言語でプログラミングする時のソフトウェア手法に課題があり、それを解決したいという思いから生まれたのです。
オブジェクト指向を含めた、ソフトウェア手法は、全て何かの問題を解決するための手法です。
何が課題だったかを知ることで、オブジェクト指向の意味や、利点が分かります。

業務が増える毎に、似たような処理が増えたり、扱うデータが増えれば増えるほど、1ファイルのコード量が増えてしまいます。
このような課題が起きるのは、Java以前の開発言語(C言語など)が、手続き型のプログラミング手法であることが起因してます。
手続き型でプログラミングをする際に、実際に発生し得るケースを考えてみました。
例えば、保険の契約を手続き型で開発する例を考えてみましょう。
保険等の金融業務は、業務ロジックが大変複雑なため、ここではシンプルに保険の選択、計算、登録という簡単な例で考えてみましょう。

赤色で示した顧客データの取得や、契約データ登録は、それぞれの手続きで重複してますね。
それぞれ順番で処理するので、このようなケースが起きると同じコードが複数のプログラムに重複します。
しかし、まだオブジェクト指向を使わず、手続き型で工夫ができるかもしれません、一度、全て1つのプログラムに纏めてみましょう。

これで顧客のデータ取得、顧客のデータ登録は、1度の呼び出しで済みました。
しかし、2つ目と3つ目の箱がすごい大きくなってしまいましたね。
今後、保険商品や業務が増えるとどんどんプログラムが大きくなり保守作業が困難になります。
今度は、同じ処理は、同じブロックに、別々の処理は別々のブロックに纏めてみましょう。

このように、共通処理は、同じブロックにまとめることで、手続き型プログラミングでも、処理の重複を消すことができました。
この例を見ると、各契約ごとの手続きが順番に進んでいくため、何をしているかがとても分かりやすいですね。
この業務ごとの手続きがひと続きになっているというのは、手続き型プログラミングの良い点だと思います。
しかし、ここで注目すべきは、データという観点です。

顧客データだけでなく、保険のデータも重複しています。

このような状態で、手続きが増え、データを扱う箇所が大量に増えたら、どうなるでしょうか?

顧客のデータ操作、保険のデータ操作の箇所が大量に増えてしまいました。確かに、手続きの順番はフローになっていて分かりやすいですが、
もしデータの構造やデータの扱いが変わったらどうなるでしょうか?

顧客のデータを扱う箇所全てに影響が発生します。
更に、保険の種類ごとにフローが違う場合、それぞれ、改修が入ります。
もし、法律や社内のルール等で、全保険商品で共通的に構造変更が必要になってしまった場合、ものすごい改修コストが発生することは想像に難くないはずです。
このようなデータ(正確にはオブジェクト)という観点で、責任をオブジェクトに集約して手続き型プログラミングの課題を解消できるように生まれた考え方がオブジェクト指向なのです。
今回は、オブジェクト指向が必要になった背景について説明しました。
次回は、オブジェクト指向の概要を理解できるような記事を投稿予定です。
===============
この情報が皆さんの人生のお役に立てれば幸いです。
エンジニアとして日本のITリテラシーを高めていきたいと共感して頂いた人は、是非このブログの拡散とyoutubeの方も見ていただけると嬉しいです。
記事を最後まで見ていただきありがとうございました。
執筆者: hiroエンジニア
「【技術知識】絶対に分かるオブジェクト指向の概念-①Javaの誕生」への1件の返信