2017.12/17 プログラミング(5)
女子フィギュアスケート選手権の大会でグレーシーゴールドを見ることができなくなり、多くの男性諸氏はがっかりしているのではないか。演技をしていなくても美しく、演技をすればさらに美しく、見ているだけでうっとりする機能を感じさせるオブジェクトだった。
ここでオブジェクト指向とは、プログラムを作成するときに、コンピューターを動かすために必要な機能ではなく、プログラムそのものを電子部品のような「モノ」とか「実体」としてとらえ、設計する考え方だ。
叱られるかもしれないが、フィギュアスケート選手には、グレーシーゴールドのような選手もおれば、演技を始めたときだけ輝き美しくなる選手もいる。そしてグレーシーゴールドがいつも金メダルを取れるわけでなく、演技を始めると輝き美しくなる選手が金メダルをとって、グレーシーゴールドは表彰台に上がれないことがある。
これはオブジェクトであるスケーターの演技、振るまいが異なるからだ。そしてその振るまいは、各スケーターのあらかじめ組まれていた演技構成で決まり、それが採点という具体的な数値となって、オブジェクトの評価が決まる。
オブジェクトであるスケーターがどれだけ苦しい練習をしたのか、あるいは才能を引き出せるような指導を受けたのかは、カプセル化されて見えないが、これらが機能して振る舞いに現れ、オブジェクトの評価が左右される。
このような考え方で、プログラム設計を行うのがオブジェクト指向なのだ。すなわち、コンピューターにどのような仕事をさせるのか考えるときに、従来の構造化プログラミング手法でおこなわれていたようなプログラムの機能ではなく、動作に必要な部品であるオブジェクトを評価し設計してから、そのオブジェクトの中身に必要な機能を詰め込んで行くようなプログラミング手法がオブジェクト指向だ。
すなわち、競技スケートでは美を表現できるように動く手足と胴体が揃っていればよい。顔がついた頭は、表情を伝える機能があればよい。動作する前の形状はどうでもよく、ただ演技前でも美しくしたいならばグレーシーゴールドのような部品を、汎用化した競技スケーターのプログラムに付け加えて作り出すことができる。
この場合、オブジェクト指向では、競技スケーターという部品を一つで設計してもよく、あるいは胴体部品、手部品、足部品と設計し、全体をさらにまとめるような部品を加えるような設計方針でもかまわない。この時、コンピューターへの命令を考えているのではなく、美をうまく表現し高得点を得ることを考えて設計している。
オブジェクト指向の言葉を使うと、クラスをどのように設計するのか、という説明になる。そして競技スケーターのクラスができたときに、グレーシーゴールドのクラスは、競技スケーターのクラスを「継承」して作り出すことができる。わざわざグレーシーゴールドのクラスを新しく設計する必要はない。すなわち、競技スケーターという一つのクラスを作ればよい。
このように、従来はコンピューターへの命令を中心にプログラミングを設計してきた手法を問題の解法に必要な部品を中心に考えてゆく手法がオブジェクト指向であり、あたかもプログラムを擬人化しているようなパラダイムである。AIで採用されているエージェント指向もオブジェクト指向の発展形パラダイムと言われているので、オブジェクト指向パラダイムは情報工学でものすごいイノベーションを起こしたことになる。
pagetop