GUI を手続き的に記述するかわりに,とくにその静的な部分を宣言的に記述する方法がいろいろ開発されてきた. そのなかには XUL, Views [Bis 04], Struts, ASP.NET, XAML などがある. これらのおおくは独立に開発されてきていて,相互の関係もあまり明確でなく,また標準化への道はまだみえていない. 限定的な範囲のサーベイとしては Bishop ら [Bis 06], Draheim ら [Dra 06] がある.
GUI はかつては手続き的に (動的に) 記述された. しかし,すべてを手続き的に記述すると表示との対応がとりにくく,保守性がわるくなる. そのため,GUI の記述のなかでもとくにウィジェットの配置など,静的に記述できる部分は宣言的に記述されるようになってきた.
Visual Basic のような GUI 開発環境においては GUI を視覚的に定義するが,これも宣言的な記述法のひとつである. Swing においても GUI は視覚的に定義することができるが,そこから手続き的な Java プログラムが生成される. Delphi のように視覚的に定義された内容を宣言的なまま保存しようとすると,プログラマからはわかりにくい表現をとらざるをえない.
より形式的な記述においては XML がつかわれるようになった. HTML ドキュメントを操作するのに JavaScript がつかわれるようになり,操作対象としてのドキュメントの記述には DOM (Document Object Model) がつかわれるようになった. JavaScript は最近では Ajax とともにますますつかわれるようになり,それにともなって DOM もつかわれている.
1998 年ころに Mozilla のための記述言語として XUL がつかわれるようになった. Mozilla プロジェクトからうまれた Firefox や Thunderbird はひろく普及したが,XUL は現在も他のプロジェクトにおいてはあまりつかわれていない.
CGI はもともと Perl のような言語によって手続き的に記述されていたが,Struts, ASP.NET などのフレームワークにおいては Web インタフェースの宣言的な部分と手続き的な部分とが分離されるようになっている.
JavaScript/DOM もそうだったが,Struts や ASP.NET は Web インタフェースむけに開発されたものであり,1 台のコンピュータ上でとじた精密な GUI を記述するには十分でなかった. これに対して XUL は Microsoft Windows のために十分な記述力をもつ言語として開発された. 類似の言語は他にもあるが,Windows 上で確立された GUI に関しては,表現力という点で XUL をこえるものはないとかんがえられる.
また,上記の言語が動的な部分の記述をあいかわらず手続き型の言語にたよっているのに対して,Haskel をつかって動的な部分も宣言的に記述しようとした FranTk [Sag 00] もある.
- [Dra 06] Draheim, D., Lutteroth, C., and Weber, G., "Graphical User Interface as Documents", Design Centred HCI (CHINZ 2006), pp. 67-74, July 2006.
- [Bis 06] Bishop, J., "Multi-platform User Interface Construction -- A Challenge for Software Engineering-in-the-Small", ICSE'06, pp. 751-760, May 2006.
- [Sag 00] Sage, M., "FranTk -- A Declarative GUI Language for Haskel", ICFP'00, pp. 106-117, 2000.
- [Bis 04] Bishop, J. and Horspool N., "Develping Principles of GUI Programming Using Views", SIGCSE'04, pp. 373-377.
- [Pin 00] Pinheiro, S. P., "User Interface Declarative Models and Development Environments: A Survey", DSVIS 2000, LNCS 1946, pp. 207-226, Springer-Verlag, 2000.
- [Eis 01] Eisenstein, J., Vanderdonckt, J., and Puerta, A., "Applying Model-Based Techniques to the Development of UIs for Mobile Computers", IUI'01, pp. 69-76, 2001.
- [Thi 05] Thiemann, P., "An Embedded Domain-Specific Language for Type-Safe Server-Side Web Scripting", ACM Trans. on Internet Technology, Vol. 5, No. 1., pp. 1-46, February 2005.