抽象化


ようやくショックから立ち直りつつあるので、数日前のわけの分からんエントリの続きを書きます。


OOについて説明をする際、実は一番大きな難関だと思われるのがこの「抽象化」なんだなと思いました。きちんとしたセミナーや本を用意した講習でもない限り、こういった説明は往々にして現場で行われるかと思います。現場でOOについて説明をしなくてはならない場合、説明を受ける側の人はOOを知らない、または知っているけど勘違いしている訳です。


前者に向けて説明をする場合、その相手が新人でなければある程度の実務経験がある訳で、これが非常に大きな関門です。COBOLやCLASSIC-VBのようにMETAプログラミングが非常に難しい言語を経てきた人や、PerlのようなLLでキャリアを積んできた人にとって、OOのメリットがなかなか伝わらないです。特に抽象化を伝えるのが非常に難しい、と感じました。置き換えて説明するのに一苦労です。


後者の場合、解釈をめぐって議論が始まることがあるため、前者より更に大変かも知れません。私の身の回りで、最近「抽象化」そのものの捉え方についての議論があったばかりなので、特にそう感じます。

ここで、「哺乳類インターフェイス」と「猫クラス」、「犬クラス」という例えを持ち出すのは「負け」ではないかと以前のエントリに書きましたが、それはOOといってもあくまでシステムを実装する為の技術であるという点から焦点をずらさない為です。かと言ってどのシステムにも汎用的に存在する機能でかつ抽象化が可能な事象というものを探すと、似たような例えになりかねないのが辛いところです。


過去、こういう点についてのエントリでトライしてみたんですが、まだまだでしたね。