エンジニアとの会話に役立つ用語集

【図解】「オブジェクト指向とは何か」をカレー作りに例えて分かりやすく解説!

2017年7月31日

エンジニア初心者・未経験者に限らず、Webに携わる人であれば、一度は聞いたことがあるであろう「オブジェクト指向」。

「考え方が観念的でよく分からない!」という人も多いのではないでしょうか。

そこで、今回は日本人が大好きなカレーに例えて、駆け出しエンジニアのまきおくんとベテランエンジニアのテク博士がオブジェクト指向を分かりやすく解説していきます!

オブジェクト指向とは?


テク博士、突然なのですが疑問が!
エンジニアの人ってみんな「オブジェクト指向」って言いますけど、なんでみんなオブジェクト指向にこだわっているんですか?
オブジェクト指向の何が良いのかが、いまいち分からなくて…!

まきおくんも「オブジェクト指向」なんて言葉を知るようになったのかい!
簡単に言うと、オブジェクト指向とは、

  • 物事を分かりやすくまとめたり、整理整頓すること(オブジェクト(モノ)としてまとめる)
  • チームで開発する時には必須
  • みんなが心がけると仕組みを知らなくても機能を利用できるようになる

と言うものじゃ。具体的には継承とか、カプセル化とか・・


ちょっとテク博士、待って下さい。。


おお、すまんの、ついオブジェクト指向の話になると熱くなってしまっての、、


熱くなった博士を見るのは初めてですね、でもオブジェクト指向を知ると面白そう!


まずは分かりやすくオブジェクト指向が整理整頓というところをカレーの手順で説明するかの。

オブジェクト指向なカレー作りの手順


突然だが、まきおくん。カレーの作り方は知っているかの?


まあ、大体分かりますよ。


スーパーで材料を買ってからカレーが出来上がるまでを手順にすると、

  1. スーパーでカレールウ、じゃがいも、人参、玉ねぎ、豚肉こま切れを買う。
  2. じゃがいもは芽を取ってぶつ切り、人参は皮を向いてぶつ切り、玉ねぎはみじん切りにする。
  3. 鍋を温め、玉ねぎ、豚肉を炒め、次にじゃがいも、人参を入れて炒める。
  4. 水とカレールウを入れて煮込む。
  5. できあがり!


うん、そうですね。ポークカレー美味しそう。


じゃあカレーの作り方をオブジェクト指向的に書くとどうなるか。

  1. スーパーで「カレーに必要なもの」を買う。
  2. 野菜を「カレーに合わせて」切る。
  3. カレーができるように」炒めたり煮込んだりする。
  4. できあがり!


え、「カレーに合わせて」ってまとめてますけど、どういうことですか?
カレーを作る手順として何をすれば良いかわからないんですが…


でも、作る人がカレーの作り方を知っていれば、カレーは出来上がるんじゃないかの。


まあそうですね。分かっていれば作れますね。


更にオブジェクト指向にしたカレーの作り方はこんな手順じゃ。

    1. カレーを作る
    2. できあがり!


もはや手順じゃないですね!「カレーを作る」って言ってるだけですよ!


でも、作る人がカレーというオブジェクト(もの)を知っていれば、カレーは作れるんじゃ。


なるほど、ちょっと分かってきました!つまり「野菜の切り方、炒め方を知らなくても、カレーを知っていればカレーは作れる」ということですね?


そう。
オブジェクト指向とは、カレーの作り方(仕組み)を知らなくとも、
カレーを知っている人に頼む(カレーを作る、というメソッドを呼び出す)ことでカレーは作ることができる
言い換えれば、複雑な仕組みを隠蔽して効率よく機能を利用できるようにすることなんじゃ。

チーム開発のためにオブジェクト指向が必要


開発の現場におけるオブジェクト指向のメリットも説明するかの。

プログラムというものは複雑じゃ。いちいち機能の仕組みを理解しようとすると、開発がいつまでも終わらん
だから、プログラマーひとりひとりが自分プログラムを他の人が利用できるように、分かりやすくまとめているんじゃ。


な、なるほど…!
何か具体例とか無いでしょうか…!


そうじゃな、例えば、Zipファイル。
本来、zipファイルもファイルを別の文字列で置換えてファイルサイズを小さくする複雑な仕組みがあるんじゃが、
みんなは「解凍」「圧縮」としてファイルを扱っていると思うんじゃ。

他には、システム開発する時も、

  • 注文を管理する機能
  • csvファイルをアップロードする機能

みたいに、機能でまとめて振り分けて、お互いが利用できるようにする。

システムが満たす機能を実現させるのは大変じゃ。
チームで開発するために、いちエンジニアとしてオブジェクト指向を学ぶのじゃ。


ありがとうございます!オブジェクト指向が何なのかやメリットを理解できました!ちなみにおすすめの本ってあったりしますか…?


そうじゃの、オブジェクト指向に関する本はいくつかあるが、ワシとしてはオブジェクト指向設計実践ガイドがおすすめじゃな。ワシが以前に紹介をしておるから、本の内容が気になったらまず見ておくれ。


何から何まですいません…!よーし、勉強するぞお!


うむ、やる気になったようで良かったわい。少年よ大志を抱け!

-エンジニアとの会話に役立つ用語集
-

Copyright© ワカテク , 2020 All Rights Reserved Powered by AFFINGER5.