« 対談イベントのお知らせ | トップページ | 仕様の「見える化」と働き方改革 »

2018.04.25

新人にオブジェクト指向の魅力を知られてはいけない

 新人研修の季節に思うところを書こう。開発作業の中核として活躍するはずの中堅技術者の多くがまともにDB設計できない、という寒々した状況がある。関数従属性も移動平均単価も知らない「設計担当者」がいたりする。私にとってその原因は明らかで、80年代から90年代にかけて注目されたDB設計や業務知識の重要性を、「オブジェクト指向」が怒涛のように押し流してしまったためだ。業務システム設計にとっての「失われた20年」といっていい。

 具体的には、JavaやRubyといったオブジェクト指向言語ベースのフレームワーク(未完成な骨格のようなコード群)を用いた開発スタイルが一般的になったためでもある。その結果、新人教育がオブジェクト指向言語の一辺倒になった。同時に、クラス設計を学べばDB設計も学んだことになると勘違いされて、「実装手段から独立したDB設計の枠組み」を学ぶための気運が失われた。IDのような単独主キーだけを使うやり方が「変化に強いDB設計のコツ」とさえ思われるようになった(*1)。

■オブジェクト指向よりも大事なこと

 ゲームでも組込系でもなく、事業活動を下支えする「業務システム(基幹システム)」の開発に携わる技術者にとっては、オブジェクト指向より優先順位の高い学習課題がある。(1)簿記を含めた広範囲の業務知識、(2)関数従属性を基礎とするDB設計、(3)SQLを含めたスクリプティングである。オブジェクト指向を学ぶのは、それらの基本を身につけた後でいい。

 その順序を逆にするとどうなるか。単なる「プログラミングの枠組み」でしかないオブジェクト指向を、「現実を認識・記述するための汎用的な枠組み」として新人が受け入れてしまう恐れがある。初恋の相手が完璧な異性に見えるようなもので、知的であるほど新人はオブジェクト指向の洗練された枠組みに魅了される。そうなれば、DB設計や業務知識といった学習課題が地味で退屈なものに思えてしまうだろう。まさに「オブジェクト脳の恐怖」だ。

 ほうっておくと彼らは「オブジェクト指向言語を駆使するアジャイル開発のプロになりたい」と主張し始める。業務知識を学ぶことの重要性を助言しても、「そこらへんはプロダクトオーナーが補完してくれるので、自分は知らなくてもいい」と反論されたりする。これはおかしい。英語だろうがプログラミングだろうが、活躍できる人材はそれらのスキルの効果をレバレッジするための「専門性」を持っている。英語力ならば、これに加えて法務、経済、自然科学といった専門性がなければ「英語力を生かす仕事」は来ない。「英語できます」だけや「プログラミングできます」だけでは将来が危うい。

 それだけならまだしも彼らは、「どんなシステムもオブジェクト指向開発されるべきだ」といった思い込みに囚われたりする。簡単に開発できる手段があるにも関わらず、「そんなやり方ではユーザのきめ細かい要望に応えられない」と、精密にプログラミングすることにこだわる。喩えるなら、ふつうの表計算の課題をExcelを使わずにJavaでの手作りアプリで解決するとか、演奏音源をDAW(Digital Audio Workstation)を使わずにJavaで手作りするとか、ゲームソフトをUnityを使わずにC#でいちから作るようなものだ。ふつうに歩いて階段を上がればいいのに、わざわざウサギ跳びで上がろうとするようなものだ。じっさい開発予算は常に限られているのだから、コストの嵩張る手作りにこだわってはいけない。そもそも我々の仕事は、本質的には「データ処理のしくみを含む業務態勢を生み出すこと」であって、「プログラミングすること」なんかではない。効果的な業務態勢を生み出すためにプログラミングが必要かどうかなんて些末な問題なのだ。

■オブジェクト指向の使いどころ

 オブジェクト指向が重要でないという話ではない。ExcelやDAWやUnityのようなDSP(Domain Specific Platform,ドメイン特化プラットフォーム)そのものを開発するために、これほど有効な手段はない。これまはた、オブジェクト指向開発されるDSPが強力な実装手段であるゆえに、それが既に存在する分野(domain)で案件をオブジェクト指向開発するというのは、よほどの理由がなければ経済合理性がないということでもある。

 考えようによっては、「DSPに侵されていない分野」の案件をオブジェクト指向開発するという行き方もある。しかし、経済活動としてじゅうぶん活発であれば、どんな分野でも遅かれ早かれDSPは生み出される。じっさい、かつて業務システム開発向けのDSPは明確な形では存在しなかったが、無粋にも”超高速開発ツール”と呼ばれるDSPがこの世界でも普及しつつある。「DSPに侵されていない分野」に逃げ込むばかりでは何やら幸先が悪い。

 そんなことを言われても、自社の開発用フレームワークがJavaベースなので、自分はオブジェクト指向を学ばざるを得なかったし、日常的にオブジェクト指向開発している――そのように思う向きもあるかもしれない。それで安く早く使いやすいシステムを顧客に提供できているのであれば問題ない。しかし現時点でそうであるとしても、今後、DSPを駆使する同業他社とのコンペやオーディションで勝てるとは限らない。

 そんな技術者には提案したい。身につけたオブジェクト指向のスキルを用いて、自社の言語ベースのフレームワークに置き換わるDSPを開発してほしい。オブジェクト指向を意識せずに、「プログラム仕様書」を書くだけでそのままアプリとして動作する。そんな開発基盤を開発するのである。オブジェクト指向言語なしでは到底生み出せないし、ワクワクさせられる創造的な仕事だ。

■DSPは最強のITソリューション

 難しそうに思えるかもしれないが、そういった動きは決して珍しいものではない。私自身は「DSPを駆使する開発者」兼「DSPの開発者」であるのだが、同じスタンスで活躍している友人が多い。彼らは与えられた仕事をこなすだけでなく、自分たちの仕事をITで効率化するために果敢に行動を起こした技術者たちだ。自分の専門分野に限っても、生み出されるアプリは多種多様である。ところが彼らは、その中に含まれるパターンを識別して、それらに沿ってアプリを記述するためのDSL(Domain Specific Language,ドメイン特化言語)が想定可能であることに気づいた。

 そういった「抽象的な構造」を洞察できるということは、ソフトウエア技術者として筋がいい。彼らにとってオブジェクト指向は難しいものではないし、わざわざ教えなくても勝手に習得してしまう。結果的に彼らは、自社の開発事業を抜本的に合理化するための「オブジェクト指向を用いた最強のITソリューション」、すなわち「システム開発向けDSP」を生み出した。ここで大事なのは、DSPを生み出す時点でその分野(domain)固有の専門性を彼らが既に身につけていたことだ。そうでなければ、オブジェクト指向の知識の有無とは関係なく、DSLを的確にデザインできない。

 自分の専門分野向けのDSLを構想できる――そう思えた時点でオブジェクト指向を学んでもまったく遅くないということだ。むしろその順序のほうが、DSPを生み出せる段階に着実にたどりつけるだろう。なぜなら前述したように、個々の分野で求められる地味な専門性と比べて、オブジェクト指向がそれだけであまりに魅力的だからだ。それゆえ、将来有望な新人にオブジェクト指向の美しさを知られてはいけない。ましてや、他に学ぶべきことの多い子供たちや十代の若者にそれを教えるべきではない。


*1.データ要件が変化することを見越して、すべての主キーを"ID"にするやり方のこと。実態としては「データ要件が変わった」のではなく「関数従属性にもとづくデータ要件の洞察に失敗した」に過ぎない。喩えるなら、「構造計算なんて面倒だしアジャイルさに欠ける。柱には鉄筋をとりあえず1本ずつ入れておけばよい。施主は階数を増やしてほしいくらい言いだすものだ。それで建て増ししてビルが傾いたなら、すかさず鉄筋を足せばよい。変化を抱擁せよ」と主張するようなものだ。アジャイル手法が許されるのはUIまわりだけで、広域での整合性が求められるDBの設計をアジャイルに進めてはいけない。

|

« 対談イベントのお知らせ | トップページ | 仕様の「見える化」と働き方改革 »

コメント

まぁそうだけど
ただ
多くの人はそれほどまでに広く多くの分野を習得する事が出来ないのが実情
出来る範囲でやるしかない
一番問題なのはそういう状況に有る事を理解せずに理想的に出来ると勘違いして工数を設定しまう事だ
8割の人間は馬鹿アホなのだよ
その上でどうするか?
と考えない限り失敗し続ける

投稿: 夜 | 2018.04.30 01:30

夜さん

8割の技術者が馬鹿アホなのかどうかはわかりませんが、我々がかろうじて持つ少量の賢さや意欲は、業務知識やDB設計といった地味な知識を学ぶためにこそ活用されるべきです。だからこそ、オブジェクト指向を最初に学んではいけない。

オブジェクト指向は、DSPのような具体的な開発課題を見つけたごく一部の技術者だけが、個人的に学べばいい。新人全員が学んでも意味がないどころか、有能な子が「オブジェクト脳」になってしまうという弊害があります。馬鹿アホでない人材さえダメにしてしまいます。

投稿: わたなべ | 2018.05.02 08:38

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: 新人にオブジェクト指向の魅力を知られてはいけない:

« 対談イベントのお知らせ | トップページ | 仕様の「見える化」と働き方改革 »