オブジェクト指向とは
オブジェクト指向という考え方は目新しい開発手法ではなくなった。
わざわざ「オブジェクト指向」で開発していることを謳って、エンジニアを募集している現場はないように思う。そんなにアンテナを張っている訳ではないので、もしかしたらあるかもしれないが。いや、謳われたところで、か。
組込開発の現場ですら、MATLAB/Simulinkを用いたモデルベース開発が導入されていき、その考え方は結局のところ、オブジェクト指向という考え方に基づいている。とはいえ、「これはオブジェクト指向だ!」と認識している方はやはりいない気がする。
オブジェクト指向とはそもそも何か?
詳しくはこちらの記事に書いてるので読んで欲しいが、「ソフトウェアの再利用や保守をしやすくすることを重視する技術」を目指した考え方のことをオブジェクト指向という。Javaはその思想が色濃く反映されたプログラミング言語である。となれば、これらを駆使しない理由はない。
Javaを使ってシステムを構築することは、classや継承を使っているということ。それは即ち、ある意味オブジェクト指向で開発をしていることと同じなのではないか。しかしながら、オブジェクト指向で開発しているという認識があるエンジニアがどれほどいるだろうか。
エンジニアとして後輩の指導もするような年齢になってしまったブログ主は、このオブジェクト指向の考え方を教える必要があるかで悩むことがある。Javaを使って開発するメリットや注意点を説明する上で、このオブジェクト指向の思想は切っても切り離せないと思う。しかし、ここまで根本の思想の話から教育していては時間が足りない。
結局、自分の後輩はオブジェクト指向というものは名前だけ聞いたことがある(もしかしたら聞いたこともないかもしれない)という状態で、何となくでオブジェクト指向することになる。
教育とは
後輩を育てるというのは途方もないコストがかかる。
有能な人材だけを求める会社の思いは、この教育コストを可能な限りかけたくないという願望によるものだ。特にこういったオブジェクト指向といった開発現場に漠然と根付いた思想は、開発現場の日常になりすぎて、誰も教えようという発想すら出てこない。
何となく抽象化クラスを使って、何となく継承して……この思想がすっぽ抜けた開発工程に恐怖を覚えるのは、自分だけだろうか。こういった "何となく" にバグは潜んでいると経験則が言っている。
そのツールを使うこと、プログラミング言語を使うこと、開発プロセスを使うこと……それぞれにはそうすることのメリットがあり、哲学があり、思想がある。そういった意図を汲み取らなければ、無駄な手戻りが発生するし、他の人との認識齟齬も発生する。
これらを解決するには教育しかない。しかし教育にそれほどコストはかけられない。このもどかしさを抱えつつ、明日も明後日も何となくでオブジェクト指向することになるのだろうと自分は思う。