« 「ドメイン・エキスパート」になろう | トップページ | 「CONCEPTWARE/受注生産」の実装版が完成 »

2015.03.13

新人技術者にはOOPLの前にDSLを

 例によって、業務システム開発の世界に限った話である。ECサイト開発の話でもないし、WEBサービス開発の話でもない。販売管理システムや生産管理システムといった「業務システム」の開発を専業とする企業において、新人に最初に教えるべき言語は何かという話だ。今ではJavaを教えている企業が少なくないが、OOPL(オブジェクト指向言語)のような「汎用言語」ではなく、本来は業務システム開発に特化したDSL(ドメイン特化言語)を最初に教えるべきだ。

 なぜか。前回記事でも述べたように、プログラミング以外の専門分野(ドメイン)を見定めてそれを究めることが、ソフト技術者のキャリアにとっての優先課題だからだ。業務システム開発を専業とする企業に所属する技術者にとってのドメインは、基本的に「業務システム」ということになる。「業務システムの専門技術者」を育てるためということなら、OOPLではなく「業務システム向けDSL」を使ったほうがいい。

 なぜOOPLではよろしくないかを説明する前に、そもそも「業務システム向けDSL」とは具体的にどういうものかを確認しておこう。

 かつて、業務システム向けの開発言語としては、COBOLやRPG(AS/400上の開発言語)が優勢だった。特定ドメイン向けという意味では、それらもDSLの一種ではある。私は新人時代にRPGを学んだのだが、数年後にRPGで実装された開発ツール(CASEツール)を使い始めた。そのツールには強力なDSLが搭載されていて、開発のアジャイル度が格段に高まっただけでなく、DB設計や簿記の重大さや面白さに初めて眼が開かれた。その言語に比べたら、RPGはずいぶん汎用的だったと思う。

 つまり、業務システム開発の効率化を謳う「開発ツール」が提供する記述の枠組みは、業務システム向けの良質なDSLになり得るということだ。そのようなDSLには、DB処理をはじめとする業務システムの特性が埋め込まれている。実用的なモデルライブラリが付属することもある。新人がそれらに触れることで、所属企業がターゲットとしている「ドメインとしての業務システム」の専門技術者として順当に育つだろう。

 その種のDSLはたとえ良質であっても、「上モノ」であるゆえに流行り廃りが激しい――そんな反論もあるだろう。しかし、そもそもDSLを身につけることが目的なのではない。DSLを通じて、特定ドメインに関する知見を蓄積し始めることが肝心なのだ。使っているDSLがたまたま廃れたら、別のDSLにどんどん乗り換えたらいい。それまでに蓄積した知見が、新しい河岸(かし)でも役立つだろう。

 いっぽう、JavaやRubyで書かれたフレームワークを利用しているなどの理由で、新人にいきなりOOPLを教える会社は今では少なくない。その種のフレームワークは、ドメインの特性をある程度反映したものにはなるだろう。ところが、補完されるコードの言語仕様が汎用的であるだけに、ドメイン・エキスパートになるための動機付けに失敗する恐れがある。

 じっさい私はずっと後になってJavaを学んだのだが、新人の頃にそれを学んでいたら、特定ドメインについて学ぶことよりもOOPLそのものに夢中になってしまったと思う。なぜか。DB設計や簿記のように地味な課題に比べて、オブジェクト指向のほうがはるかに魅惑的だからだ。OOPLさえ理解しておけばどんなドメインの案件も扱えるようになる――そんな全能感さえ持って、特定ドメインについて地道に学ぶ気にならなかったかもしれない。「汎用的なモデリングセンスも身につくから一挙両得」なんて単純な話ではないのである。

 ちなみに私が何のためにJavaを学んだかというと、個別の開発案件を記述するためではなく、「さらに強力なDSLを擁する開発用プラットフォーム」を開発するためだった。つまり、その種の先鋭的なソフトウエアの開発にはOOPLが向いているが、特定ドメイン向けの個別案件にはDSLが向いているということだ。「ハレとケ」の違いといってもいい。そんなわけで私はDSLで個別案件を実装するいっぽう、OOPLでDSLそのものを実装するという二足のわらじの日々である。

 まとめ。ドメイン・エキスパートに求められる知見を究めるために、新人はDSLから入ったほうがいい。それで数年間経験を積んでドメイン・エキスパートとして一人前になってしまえばこっちのものだ。その後で、必要ならばOOPLなり関数型言語なりを学べばいい。この順序を逆にしてはいけない。

|

« 「ドメイン・エキスパート」になろう | トップページ | 「CONCEPTWARE/受注生産」の実装版が完成 »

コメント

コメントを書く



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




トラックバック


この記事へのトラックバック一覧です: 新人技術者にはOOPLの前にDSLを:

« 「ドメイン・エキスパート」になろう | トップページ | 「CONCEPTWARE/受注生産」の実装版が完成 »