++C++; // 未確認飛行 C ブログ

http://ufcpp.net/

ドメイン モデリングの行く先

leave a comment »

Quadrant がお亡くなりになったそうです。という記事をきっかけに、思ったこととか人と話したことなど書いてみる。

非開発者向け

今、IT 使った何かを作るとき、問題領域(ドメイン: domain)に関する知識と、プログラミングに関する知識の2つに詳しくないと何もできないんですよね。問題領域っていうと、例えば、よく話にあがるのだと:

  • 大規模データ処理
    • 自然言語コーパスを元に、検索や機械翻訳の精度を上げたい
    • 顧客の購買行動を解析して、よりよりセールスをかけたい
  • 業務知識
    • 業務のフローを IT で補助・改善したいけど、そのためには業界の商習慣とかの知識が必要

とか。

2重にスキルを求めるのは負担が非常に大きいんで、出来れば問題領域の専門家が、プログラミングの知識なしで使えるようなツールが欲しいと。そういう話はもうかれこれ20年くらいは言われ続けていたり。

DSL

そういう、問題領域の専門家向けのツールとして、DSL(domain specific language: 領域特化言語)というのがあり。要するに、領域を絞ることで、学習を容易にしたプログラミング言語を作ることで、プログラミングの知識のない人にも使いやすい言語にしようというもの。

1990年代にも、テキスト ベースの DSL なんかは出ては消えを繰り返していました。いまいち定着しなかったのは、

  • 使う側: 領域を絞ってもまだハードルが高い
    • Visual なツールの補助が必要
      • 例えば、C# が簡単な理由の1つは、Visual Studio による補助が学習ツールとしても優秀だから
    • 覚えやすくするために「特化型言語」にしたのに、そのせいでツールの補助が受けられず、かえって覚えにくいという
  • 作る側: 作るの大変
    • 極端な話、汎用言語なら作る手間 0 なわけで

DSL Tools

その昔(確か、2005年前後だったと思う)、DSL Tools というものがあったりも。上記のような問題があるんで、Visual Studio の利用を前提とした、Visual な言語(例えば、フロー図とかをドラッグ&ドロップとかしてつないで作っていく言語)を作るためのツールでした。ただ、DSL Tools にも問題があって:

  • 個々の製品ではある程度 DSL の利用が成功したが、製品間の連携で困った
    • 「特化型」という性質上、「オレオレ」になりやすい
  • Visual 言語に偏向しすぎた
    • 使う側: 非開発者であっても、マウスでポチポチ作業するより文字ベースで記述したい人は多い
      • テキスト言語でも、構文ハイライトとか IntelliSense とかリアルタイム構文チェックとか、Visual ツールで補助できることは多い
    • 作る側: Visual なものは、その分さらに作るのが大変

Oslo(現 SQL Server Modeling)

という背景があるので、Oslo は以下の3つの軸が:

  • Repository
    • DSL / ドメイン モデルの共通基盤
    • 複数の製品の連携を最初から考えている
  • M 言語
    • テキスト ベースの DSL 記述
    • あと、データベースとプログラミングの間の溝を埋めるという役割も
      • C# に近い記述でエンティティ定義
      • これも、データベースの知識とプログラミングの知識の「2重のスキル要求」の解消
    • M 言語で記述した DSL は、IntelliPad っていう付属のエディターを使えば構文ハイライト&リアルタイム構文チェックされる
  • Quadrant
    • データの可視化ツール

発表当初は、やっぱり「非技術者向けのツール」を目指していたんだとは思う。けど、実際のところ、一番食いついたのは、M 言語に興味を持ったガチ開発者ばかりだったような。そこが Oslo の問題だったように思えます。

結局、Oslo は SQL Server の一部分としてコンパクトに収まり、今回 Quadrant の開発は停止という運びに。

その後

Oslo を開発していたチームは Data Programability チーム(Entity Framwork や WCF Data Services を開発してるところ)に統合されたと聞きます。そしてこのたびの LightSwitch の登場。きっと、Quadrant を開発していた人も LightSwitch に関わってるのかなぁと。「Quadrant よりこっちに力を注ぎます」といったところでしょうか。

その辺りを考えると、Oslo の目指してたところは形を変えて残っていくことになりそうな。

  • 複数のドメイン モデルの連携
    • Repository は SQL Server Modeling として残るだろうし
    • 今は、OData みたいに、データの取り出し口の部分を標準化することで製品間連携していく仕組みもあるし
  • テキスト ベース DSL
    • C# / .NET Framework 自体が、今、メタプログラミングな方向に向かってる
    • M 言語とか IntelliPad/Quadrant みたいな独立したものよりも、C# に取り込まれたり、Visual Studio との連携を前提に進化していきそう
    • 作る側も簡単じゃないといけないし、使い側にも学習・利用のツールによる補助がないといけない
  • データベースとプログラミングの溝を埋める
  • 非技術者向けツール
    • LightSwitch がそうだし、データの可視化・解析って面では PowerPivot とかも

Written by ufcpp

2010年8月7日 @ 10:01

カテゴリー: .NET

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。