DSLとレガシーに一言ずつ

DSLで微妙に勘違いされているところ

 DSLでみんなそうは思っていないけど、結果的にそうなっている重要な問題がある。その元凶は「プログラマでない分野の専門家を対象としている場合」という言葉。 この言葉を見て、プログラマであるわれわれが理解することは「DSLプログラマでない人を対象としている」という部分。そうじゃない。DSLでもっとも重要なことは、「専門家を対象としている」ことなんだと思う。つまりどういうことか。あまり論理的でないがおもいつく形でいうと、1) 専門家がいない領域に対して言語を作っても生産性はあがらない。2) 専門家を具体的に思い浮かべることができない場合言語作りは失敗する。。この2点。前者のような理解をすると、プログラマじゃない人が理解しそうな何かを勝手に思い描き、「ある専門領域に対して、専門家でない人が専門家のごとく表現できる」と勘違いして、結局できるのは、旅行代理店か保険の審査システムのツールデモでしか使えない何ができるのかよくわからない、お絵描きツールか、エクセルアプリだ。専門家がプログラマでないかどうかは二の次であって、とにかくなんらか表現したい領域の専門家が表現しやすい言語を作るというのが重要なのだ。だいたい、Xtextなんて、この定義を借りるならば「プログラマでないプログラマを対象としている言語」という完全に矛盾した言語になってしまうと思うのだ。 
 将来的なDSLは、たとえば企業システムなら、そのシステムの仕様に決定的に関与している企業の個人や組織ごとのDSLとして提供されるべきだと思っている。実際、システムの仕様を真に決定している人なんか実はごく少数の人間のはずだ。その人間たちが普段思っていることをふだんの表現で表現さえすれば仕様ができる。そこまでやって初めて極端に生産的なDSLができるんだと思っている。
だから、自分はシステム更改のリバースエンジニアリングでは、システムのAsIsが何なのか?と同じぐらい、システム自身や中間成果物を表現してきた表現形式や暗黙知のAsIsはなんだったのか?が重要であると思っている。

ソフトウェアは朽ち果てるもの

 ソフトウェアは朽ち果てるもの。これを常識にしたほうがよいと思う。情報システムにたずさわっている人にとっては当たり前だが、そうでない経営者やハードの開発者にとってはこれがわからんらしい。何が問題かというと、「長年使ってきたシステムの保守性が下がったので更改したい」と情報システム部の人が言うと、「それはお前らの能力不足かメンテ不足」と思われる結果「こういう意見を上申するのは難しい」という話を耳にするからである。
 で、なにするかというと、しょうがないので経営者に響くような「これからのアジャイルでダイナミックな時代のToBeを実現するためエコでコラボレーティブな統合システムにSOAクラウドを使って全面刷新でPERが向上でKPI、それもIFRSとJ-SOX対応しつつエリエール」とかわけのわからないコンサルのパワーポイントを出して更改を上申するのだ。そんなものでシステムを更改すると、検討会議を30回ぐらい開いて結局混乱を極めた結果ToBeのはずがTUBEか何かになって、夏とともに消え去るような残念な企画書ができて終わり。本来必要な現状を正確に把握するなんてまったく見向きもされ、失敗するのだ。だから、ソフトウェアは朽ち果てるものを世の中の常識にしたい。原口さんにお願いしたいものだ。