GUIの記述はSalt言語でいい気がしてきた。
高木です。おはようございます。
みなさんは仕様書や設計書などでGUIの定義をどのように行っているでしょうか?
ExcelやPowerPointなどで、画像をペタペタ貼っているというのも少なくないのではないかと思います。
それはそれで構わないのですが、画像だと修正が加わった場合に差分を取るのが大変ですね。
そもそも、画像だと記述に手間がかかるという問題もあります。
何らかのツールを使ってGUI画面の表現を自動生成することができれば、何かと便利ではないかと思います。
できればプレーンテキストで記述できるのがいいですね。
それも、XMLとかではなくもっと人間的な形式で。
そこで目を付けたのがPlantUMLです。
以前から、シーケンス図やクラス図などの記述にはPlantUMLを使っていました。
比較的可読性が高い形式で各種の図をプレーンテキストとして記述し、このツールにかけてやれば画像ファイルが生成されるというものです。
doxygenからも呼び出せますので、ソースコードのコメントにPlantUML用の記述を埋め込んでおくようにしています。
そうすれば、doxygenでドキュメントを生成したときにPlantUMLが出力した画像を挿入できます。
そんなPlantUMLですが、UML以外の図もいくつかサポートしています。
今回紹介するSalt言語によるGUI記述もそのひとつです。
具体例を挙げることにしましょう。
たとえば次のようなテキストを書きます。
1 2 3 4 5 6 | @startsalt {+ PlantUMLでGUIを記述 | * [OK ] | [キャンセル] } @endsalt |
これをPlantUMLにかけると、次のような画像が生成されます。
私はどちらかというと、GUIもコードでゴリゴリ書きたいほうなので、そのコードがどんな画面を生成するのかコメントでわかるようにできるのはありがいたいことです。
あまりコメントは書かない主義なのですが、こういうコメントなら価値があるのでどんどん書きたいと思います。
欲をいえば、Salt言語で記述したソースを処理することで、画像だけではなく実際に動作するコードも自動生成させたいところです。
こうときこそPCP: C++ Preprocessorの出番というものです。
PHPでSalt言語のパーサーを書かないといけないのは当然で、そこは頑張るしかないと思います。
Salt言語の解析ができれば、ターゲットとなるプログラミング言語やGUIツールキットに合わせたソースコードを生成すると同時に、Salt言語をコメントに埋め込んでやればいいのです。
Tcl/Tkのソースコードであれば、比較的自動生成するのも簡単だと思います。
しかし、ここで問題に直面します。
Salt言語でできるのは、あくまでもGUIの見た目の記述だけです。
たとえば、ボタンを押したときにどんな動作をさせるのかを記述できなければ、プログラムとしては役に立ちません。
要するに、何らかの方法でハンドラを記述する方法を用意しないといけないわけです。
Tcl/Tkであれば、とりあえず画面だけ自動生成させて、あとはbindコマンドでハンドラを結びつけることもできますが、できればもう少し汎用的な方法が欲しいものです。
というわけで、今すぐにはSalt言語(+拡張仕様)で実際に動くGUIを記述することはできそうにありません。
このテーマはなかなか面白そうなので、今後も折を見て挑戦したいと思います。