オブジェクト指向

【オブジェクト指向】モデルとは?【→プログラミング初心者向け】

what is model in object oriented
プログラム女子
プログラム女子

オブジェクト指向のモデルって、一体、何なの?

世の中のあらゆる物事を構造化して考えることだよ。そこには色々な歴史があるので、その歴史を踏まえて、モデルって何かを考えていこう。

Tommy
Tommy

オブジェクト指向のモデル説明概要

この記事では、ソフトウェアのオブジェクト指向の基本だけど、最も重要であるとも言える、「モデル」について、その歴史を踏まえて、説明します。

その結果、オブジェクト指向の「モデル」と「クラス」の関係が分かるように説明します。

オブジェクト指向とは

オブジェクト指向は魔法の杖ではないです。だからそれは残念ながら私達の抱えるすべての問題を解決してくれるものでもありません。

だけど、少なくても私の身の回りでは、よく「オブジェクト指向」と言う言葉を聞くので、それは私達がソフトウェアを理解する為に役に立ちそうです。

モデルは昔のAI研究に登場

かつて、AIの研究には2つの方法がありました。それらは「確率的手法」と「分類と機械学習を用いた方法」と呼ばれる方法です。

現在では、前者が「Googleの方法」と言い、後者が「IBM Watsonの方法」と言ったほうが理解しやすいかもしれないです。

モデルの原型は「人の認識を観察する」

モデリングの歴史には、研究者たちはどのように人が物事を認識するのか?ということを考える必要がありました。それは認知科学コンピューターサイエンスにどう適応するのか?という問題を考えることと同じことになります。

なぜなら、当時、人がどのような物事を認識するのかを考えることなしに、AIのようなシステムは作ることができないと考えたからです。

学術的な分野では、このような「人の考えについて着目する研究」を「分析哲学」と言うみたいです。

「モデルを作る」とは「森羅万象を考える」こと

everything

特に、人が物事をどのように認識するか?ということの研究は「存在論」と呼ばれています。この存在論では、「全ての物事は、どのような関連があるか?」ということについて議論します。

ちょうどニワトリとタマゴはどちらが先か?という話のようなものです。ニワトリとタマゴがどちらが先か議論する為には、「ニワトリは何か?」という事と、「タマゴは何か?」ということが議論しなければならないですが、ニワトリやタマゴが何かを知る為には「ニワトリ」「タマゴ」とその他のものの関係を考えなければなりません。

この時関係を示す図のようなものが必要なのですが、この図をどのように描くか?というようなことは現在、「グラフ理論」と呼ばれる名前で研究されています。

私にも、ニワトリが先なのか、タマゴが先なのかはわからないけれど、少なくとも、ニワトリが先なのか、タマゴが先なのかを議論する為に、それらを指し示すものが必要あることは理解できます。

モデルって例えば

例えば、生物の分類について議論したいとします。 あなたには友達がいます。その友達はペットに犬を飼っています。そして、その友達はペットの犬に「アインシュタイン」と名付けます。この状況をソフトウェアの世界で言うと、「犬」という名前がクラス、犬:アインシュタインがインスタンスということになりますね。

今、私達は「犬」という分類について議論したいので、クラスの名前としては犬の名前「アインシュタイン」ではなく、「犬」という分類上の名前をクラスの名前にします。また、「猫」を登場させた場合、犬と猫の共通の呼び名は「動物」となるので、犬の上位概念は「動物」かもしれないです。同様に「あなた」や「私」は「人」という括りで呼ばれるかもしれないです。

それでは、「動物」と「人」の上位概念は何でしょうか?それは「生物」と呼ぶことができるかもしれないです。これが、もしも「犬」ではなく、「アインシュタイン」をクラスの名前として使っていたら、友達の犬「アインシュタイン」のことなのか、物理学者「アインシュタイン」のことなのか分からなくなってしまって、話が違った方向に行くかもしれないです。

model example

モデルとクラスの関係

class and model

結局、普段私達がソフトウェアで使っているクラスは、前述したような場面でのモデリングが必要だった場面から登場しているようです。AIの研究は、人間が認識する物事をモデル化する必要があります。そのモデル化の過程で、「グラフ理論」を用いて、登場した物事の関係性を議論します。

私達がソフトウェアを作る時も、要求やニーズのような前提がありますが、この要求やニーズはモデル化される必要があります。このことは、先程述べた「どのように、私達が現実世界のものを計算可能なものにモデル化するか?」という意味で同じなので、それは「オブジェクト指向」と関係があります。

だから、「オブジェクト指向」を知る上で、「モデル化」を知る必要があります。そして、そのモデル化した最小の単位を、「クラス」と呼びます。

-オブジェクト指向
-,

Copyright© Tommy's blog , 2020 All Rights Reserved Powered by AFFINGER5.