InfoQ

News

Jay Fields 氏と Zak Tamsen 氏へのドメイン固有言語についてのインタビュー

作者 Sam Aaron, 翻訳者 編集部 投稿日 2007年11月13日 午前12時23分

コミュニティ
Ruby,
Architecture
トピック
Domain Specific Languages
タグ
言語,
ルールエンジン,
ThoughtWorks

Jay Fields 氏と Zak Tamsen 氏がドメイン固有言語について InfoQ のインタビューに答えた。彼らは、ThoughtWorksのプロジェクトにおいて、業務の強化、開発期間の短縮、およびプロジェクトの俊敏性向上のためにドメイン固有言語をうまく使用している。

Jay Fields 氏と Zak Tamsen 氏のインタビュー全体を見る (23 分)(英語)

インタビューの中の Jay 氏と Zak 氏の説明によれば、DSL はミニ言語であり、対象となるドメインの言語とその語彙で記述される。このため、DSL は本質的に十分な表現性を備えており、ビジネスユーザーに本来の利益をもたらすことができる。

“言語の表現性が豊かであれば、開発者は、それだけ効率的かつ簡潔に処理を記述し、ビジネスユーザーに使いやすい言語を提供することができます。従ってユーザーは、実際の業務ドメインの方に集中することができます。”

当然ながら、DSL の設計者にもメリットがある。特にインタビューで取り上げられたメリットは、プログラマが対象のドメインを本当に理解することによって DSL を設計しているという点だ。

ドメイン固有言語の長所は、対象のドメインを実際に学ぶという点にあると思っています。”

内部 DSL と外部 DSL の違いについても話は及んだ。

“内部DSL は、Ruby コードが実際に実行されることを意味しています。これに対して外部 DSL は、前処理を通して Ruby 言語に取り込まれてから実行されます。”

Jay 氏と Zak 氏は、Ruby が内部 DSL を作成するのに適した言語であると彼らが考える理由を次のように説明している。

“Ruby は、簡潔であり、括弧やセミコロンを記述する必要がありません。このため、対象となる業務ドメインの専門家にもわかりやすい言語です。”

DSL とルールエンジンの違いについて質問すると、彼らは、ルールエンジンは、その複雑性から、ビジネスユーザーに適さない場合があると答えた。

“ビジネスユーザーと一緒にルールエンジンを扱ったことがありますか。普通、それらは非常に複雑です。”

DSL を設計するということは、対象とするドメイン専用に特注の言語を設計するということである。ルールエンジンは、一般的に、ユーザーが必要とする機能の大部分を提供し、さらなる専用機能は拡張によって提供しようとする。しかし、彼らは、これは必ずしも単純ではないと言う。

“ルールエンジンは、簡単には拡張できません。1から 100 までの機能を提供しても、101 番目の機能が必要になることがあります。そしてその1つが選択肢の1つであるとは限りません。”

しかし、彼らは、DSL をあまりに拡張することも推奨していない。

“DSL は、基本的には、非常に狭い範囲の問題に対処するためのものです。1 つの言語を汎用的にして複雑化するのではなく、1 つのアプリケーションの中で複数の DSL を使用するという方法もあります。言語の汎用性が増すほど、記述するのは難しくなり、エンドユーザーにとっても使用しにくくなります。”

Jay 氏は、最近、ビジネス自然言語(サイト・英語)という用語についてブログ(source)を書いている。彼は、問題を次のように説明している。

“みんなが求めているものは、その分野の専門家がビジネスロジックを指定するための手段です。”

これまでは、GUI を使用してロジックを指定しようとしてきたが、Zak 氏によれば、GUI は、テキストボックスほど直感的であるとは言えない。

“ビジネスの専門家がその専門分野について話をする場合、実際には、GUI 用語は使用しません。つまり、「ここをクリックして、次にこちらに移動します」というような言葉は使いません。専門家達は、「利益のスコアがある点に達したら、XYZ を行います」というように自然言語を使用します。専門家達にとっては、自然言語が通じるのならば、テキストボックスに自然言語に近い形で単純に記述することの方が、より自然で、表現もしやすいのです。”

Jay 氏とZak 氏は、ビジネス自然言語 (BNL) を使用して記述されたDSL でアプリケーションのビジネスロジックを指定することを推奨している。彼らは、特定のビジネス分野の専門家と緊密に連携したプロジェクトにおいて、まさにこれをどのように実現したかを説明した。彼らは、そこからすばらしい結果が得られたことを喜んでいた。

“プロジェクトが終わるまでに、特定のビジネス分野の専門家は、言語を定義するようになっていました。私達は、彼らが考えたキーワードが意味することを行うようにしていただけでした。”

Jay Fields 氏と Zak Tamsen 氏のインタビュー全体を見る (23 分) (英語)

原文はこちらです:http://www.infoq.com/news/2007/10/jay-fields-zak-tamsen-interview

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。