Specript(次期版)は、
なお、Specript(当初版)は、独立行政法人 情報処理推進機構(IPA) 未踏ソフトウェア創造事業の支援を受けて開発されました。
◇
現在(2012年2月)“Specript次期版開発”として再スタートしています。
Specript当初版の紹介がこちらにあります。前提知識としてまずご参照ください。
Specriptは、会計、在庫管理、受発注管理などに代表される企業システムを構築するときの、 ビジネスロジック記述用途に特化した言語です。ビジネスロジックの仕様を宣言的 ("What"指向)に記述できるDSL(Domain Specific Language)です。
Specriptは、実装用のプログラミング言語というより、いわばビジネスロジックの 詳細仕様記述と言うべきレベルの記述性の高さをもった言語です。 業務アプリケーション向けの形式的仕様記述を目指した言語であると言っても構いません。
◇
現状の業務アプリケーション開発の現場では、次のような事態がよく発生しています。 それは・・・Javaなどで実装される場合、「仕様書」なるドキュメントが別途必要と なりますが、多くの現場でドキュメントは作成後にはほとんど保守されず、現状の仕様を 把握するのには役に立たなくなっていたりします。最新の仕様は担当者の頭の中にのみ 存在することとなります。そして、その担当者が異動等でいなくなると、結局、現状仕様は ソースコードから読み取らざるを得ないこととなります。しかし、Javaソースコードから 仕様を完全に読み取るにはやはり困難さがあります。この問題に起因するトラブルが 頻発している現場も現実に存在します。
そこで、我々開発チームは、実行されるソースコード自体に仕様記述と言えるほどの記述の 抽象度、記述性の高さがあれば、別途「仕様書」が無くともソースコードさえあれば、 確かに現在稼働中である仕様を確実に、かつ容易に、把握することができるのでは ないか、と考えました。
業務アプリケーション分野に形式的仕様記述を導入することで、保守局面における 品質問題を根本解決することができるものと考えました。
Specript当初版の紹介がこちらにあります。前提知識としてまずご参照ください。
◇
Specriptは、IPA未踏ソフトウエア創造事業に採択いただきその開発に着手することができたものの、 実装方式上の問題点と、言語の設計コンセプトに再考すべき点とが見出され、 リリース品質といえるまでの完成度に達することなく今に至ってしまっております。
当初版に対する問題を解消するために、現在までに以下のような考え直しを行いました。
現在(2012年2月)、新しい設計コンセプトがまとまってきた段階にあり、“Specript次期版開発”として 再スタートするに至っております。
◇
次期版には大きく次の4つの変更点があります。
Specript当初版では、UI(プレゼンテーション)層−ビジネスロジック層− データアクセス層の3層モデルにおいて、ビジネスロジック層のみを担うものとし、 UI層とデータアクセス層はSpecriptのスコープ外としました。しかし、データアクセス層、 即ち「永続データのモデル記述」をスコープ外とすることは、 業務アプリケーション開発用途の 言語としてはやはり片手落ちであった、と考えを改めました。
次期版では、「永続データのモデル記述」を言語のスコープに含めます。 これは一番大きな本質的な変更となります。
なお、UI層は変わらずスコープの対象外だと捉えています。
上記の永続データの取り扱いに関わる部分以外でセマンティクスの本質的変更はありません。 しかし、シンタックスについては、次期版において、一旦マークアップ言語として 再構築することとします。
XMLベースであれば、XSD/XSLなどのツールの支援が受けられ、パーサー/コンパイラーの実装に ワークロードをかけずに済むと考えています。
Specriptは、実行時にfunctionの入口および出口で、引数や返却値に対するspecの 評価を行うことが動作上の特徴となっています。このspec評価処理はかなり重いものとなりました。 Java製Schemeインタプリタの上で動くSchemeで実装されたSpecriptの実行環境は、 パフォーマンス面でプロダクション用途はおろか、評価目的だとしてもだいぶ難の あるものとなってしまいました。
次期版では、Schemeインタプリタは導入せず、Javaで直接実行エンジンを実装する方式、 もしくは、Javaソースコードをジェネレートする方式を検討しています。
この変更は、前項のシンタックスをマークアップ言語とすることに関連します。 Specript当初版ではコンパイル後コードがS式だったものを次期版ではXMLとした、 と(ある程度)見なすことができます。
我々開発チームは、3年程度前に、Specriptの開発とはまったく無関係な文脈で、 いわゆる「Web-API/Mash-up」、「REST/ROA」の概念に出会いました。
Specript当初版では、Specriptで記述されたビジネスロジックは、Struts Actionなどから 呼び出されることを想定し、Java APIを提供することとしていました。次期版では、 Web-APIを提供しJavaScriptなどからAjaxコールされることを想定した実装とします。
Specript当初版では、UI(プレゼンテーション)−ビジネスロジック−データアクセスの3層モデルにおいて、 中間層であるビジネスロジック層を担うことを目的にしていました。次期版では、データアクセス層に 位置付く永続データのデータモデルの記述もスコープとなります。Specriptを用いて業務アプリケーションを構築する場合、 一般に下記のようなアーキテクチャを採ることとなります。
Specriptはビジネスロジック記述に特化しており、UI層を担うことはできません。
StrutsなどのWebアプリケーションフレームワークを使用してUI層を構築してください。 Struts ActionなどからSpecriptで記述されたビジネスロジックを呼び出します。 そのためのJava APIを提供します。
加えて次期版では、Specriptで記述されたビジネスロジックはWeb-APIとしてエクスポートされます。 JavaScriptなどからAjaxコールで利用することができます。
業務アプリケーションの中核となるビジネスロジックはSpecriptで記述します。 Specriptの詳細仕様記述と言えるほどの記述性の高さが、ビジネスロジック仕様を ソースコードから直接的に読解することを容易にするでしょう。
Specript次期版では、外部の永続データ資源(※多くはRDB)のデータモデルを表現できます。
Specriptのコンパイラや実行環境の実装は、オープンソースソフトウエアとして公開します。
現時点(2008年6月)で具体的なライセンス体系は未定ですが、いずれにしても、企業内で フリーに導入していただくことを妨げないことを第一の要件に据える方針です。
Specript(当初版)の概要を理解するために、下記文書も参照してみてください。
※リンク先ページの「業務アプリケーション開発用途向けWhat記述指向言語の開発」を参照
(c)2007-2016, Specript Development Team | Last Updated: 2012-03-01 |