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

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

2017年7月31日

オブジェクト指向ってなんですか?教えて下さい!

 

 

こんな疑問にお答えします。

 

本記事の内容

・オブジェクト指向とは?
・チーム開発のためのオブジェクト指向

 

 本記事の信頼性

 

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

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

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

オブジェクト指向とは?

 

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

 

しょうたくんも「オブジェクト指向」なんて言葉を知るようになったんやな!
簡単に言うと、オブジェクト指向とは、

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

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

 

ちょっとおれしばさん、待って下さい。。

 

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

 

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

 

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

 

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

突然だが、しょうたくん。カレーの作り方は知っているかの?

 

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

 

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

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

 

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

 

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

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

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

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

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

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

 

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

 

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

 

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

 

うむ、やる気になったようで良かったわい。

またわからんことがあったら俺に聞くんやで!

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

Copyright© ワカテク【犬でもわかるITテクノロジー用語集】 , 2020 All Rights Reserved.