こんにちは。
4月より新卒プログラマーになった島田文平と申します。
表題にある “オブジェクト指向”という言葉は、プログラマーのみならず、
IT産業に関わりのある人でしたら
少なからぬ回数聞いたことがあるのではないでしょうか。
この “オブジェクト指向” とは考え方の一つなのですが、
ただでさえプログラミングが難しそうと思われている中でも、
さらに抽象的でわかりづらい考え方と言われがちです。
実はこの “オブジェクト指向” 、
元々プログラミングとは関係の無い考え方でした。
この記事では “オブジェクト指向” という考え方が何を意味しているのかを、
専門用語を一切排して、
可能な限り簡単な例と言葉で説明することを目的としています。
「ITに興味はあるけど、理解が難しい言葉が多くて大変!」
とお困りの方への理解の一助となれば幸いです。
---
さて、まずは例え話から始めさせて下さい。
机 を頭に思い浮かべてください。
今、どのような 机 が頭のなかにイメージされているでしょうか。
この質問に対し、全く同じような回答をする人は存在しないと思います。
ある人は茶色い机がぽつんとひとつある様子を思い浮かべ、
ある人は机と、そこで何か作業をしている人とセットで思い浮かべていたりするでしょう。
“オブジェクト指向” には、 “オブジェクト” という言葉が含まれていますね。
これは “モノ” という言葉に非常によく似ています。
机はモノであり、富士山もモノであり、宇宙もモノと考えられ…
と言えるように、
机はオブジェクトであり、宇宙もオブジェクトであり…
とそのまま言い換えても問題はありません。
それほどまでに両者の意味は似ているのです。
しかし、
わざわざ “モノ” 、“オブジェクト” と言い方を分けるからには、
両者に明確な違いが存在します。
机の例に戻ります。
机という “モノ” をどこまで具体的にイメージするのかは人それぞれでしたね。
一方で、
机を “オブジェクト” としてみなすのであれば、
- 机はどのような色や形をしているのか (机が持っている要素)
- 机では一体何ができるのか
の両者がセットで、かつ明確に定義されていなければいけません。
机をオブジェクトと捉えるなら、以下のように言い表す事ができるでしょう。
机とは、茶色で四角く、仕事をするときに活用することができるオブジェクトだ。
---
さて、この “オブジェクト” の考え方は、
なぜプログラミングとセットで紹介されることが多いのでしょうか。
そうなった原因は、数十年前にあるプログラマーが
「 “オブジェクト” の考え方を導入したら、
もっといいプログラミングが出来るんじゃないだろうか」
と考えたところに始まります。
以前、プログラミングで何かを定義する際は、
それにどのような要素があるのかという事と、
それで一体何が出来るのかという事を
同時に設定することが出来ませんでした。
例えば、
机は茶色くて四角く、足が四本あって高さは 80cm で…
といった様に、もしくは
机には本が置けるし、そこで仕事をすることもできて…
といった様には定義できても、
机は茶色くて、本を置くことができる
とプログラムの中で定義することが出来なかったのです。
プログラミングをする上で、これは不都合だと感じた当時の人が作ったのが、
Java のようなオブジェクト指向言語の原型でした。
オブジェクトの考え方を中心に据え置くことを “オブジェクト指向” と言います。
この “オブジェクト指向” の下に作られたプログラミング言語は、
当時のIT業界で行われていた多くの仕事にとって非常に都合がいいものでした。
現在でも非常に多くの場所で Java が使われていることからも推測できる通り、
「オブジェクト指向はプログラミングのための専門用語」といったような風にすら捉えられるのは、
この背景が原因になっています。
---
最後までお読み頂きありがとうございました。
感想、フィードバックは下記のコメント欄までよろしくお願い致します。