GUIプログラミング
はじめに




Mind Version 9(以下、Mind9)は、GUI(*1)ライブラリ を併用することで、ウィンドウを開き、ラベルやボタンを表示し、エディタのようなテキスト編集をおこない、図形や写真を描画し、ダイアログを開く・・といった、いわゆるGUIアプリケーションの開発を行うことができます。


(GUIの実装について)

 GUIエンジンとして、Mind7 で使っていたTcl/Tk (*2) を再び採用しました。Tcl/Tkは当時より新しい版 (Tcl/Tk 8.6) になっています。

 旧 Mind7 ではGUIを使うのにTcl/Tkレベルのスクリプトを書く必要がありました。プログラム言語の中に別のプログラム言語を抱えるスタイルのため使い勝手に課題がありましたが、Mind9 においてはTcl/Tkスクリプトは完全に隠されており、Mindレベルの記述だけでGUIを実現できるようになっています。

 ここ最近の動きとして、他のプログラム言語もGUIエンジンとしてTcl/Tkを使うようになっています。Python のGUIライブラリ Tkinter が有名で、そのほかにも Ruby の Ruby/Tk などがあるようです。
 Pythonなど他言語ではTcl/Tkのコマンドとその概念にほぼ1対1対応する形での実装のようですが、Mind9 ではプログラミングを容易にするため、より抽象的で簡単な表現で済むレイヤをかぶせており、Tcl/Tkレベルの動作原理を理解する必要はありません。ソースコードを見ただけではTcl/Tkが使われているとはまったく気が付かないぐらいで、GUIのプログラミング初心者であっても容易にプログラムを組むことができます。

(Mind9 のコンパイラとランタイム)

 コンパイラ自体は Mind8 に若干の改良を加えたものであり、GUIだからといってコンパイラに特別な機能が加わっているわけではありません。GUI機能のすべてはGUI向けのランタイムライブラリ(guilib)が負っています。
 ユーザが作成したアプリケーションを配布するとき、Tcl/Tk側のランタイムライブラリ(GUIエンジン)も一緒に添付する必要がありますが、そのサイズは小さくかつMindプログラムと一体化し易く、ユーザプログラムのパッケージング/配布も容易です。
 もう一つ他言語でのGUI系アプリケーションとの違いは、Mind9 が自己完結型で、ほかにモジュールを必要としない点です。GUIエンジンはアプリケーションのプログラムに簡単に含めて配布できるため、配布アプリの利用者は他に何らかのソフトをインストールする必要がありません。Mind9 のGUIアプリケーションは古いOSである Windows 7 でも走行できます。

(GUIアプリのコンパイル)

 GUIアプリケーションのコンパイル方法やオブジェクトファイルの生成については、tref(未完)オペレーション(GUI編) をお読み願います。

注1
GUIとは Graphical User Interface の略で、ウィンドウやボタン、マウスを使ってソフトウェアを操作するスタイルを指す。
注2
Tcl は古くからあるスクリプト言語で、特に Tk と呼ばれるGUIエンジンと組み合わせて(Tcl/Tk)使うことで高度なGUI機能を実現する。他言語からエンジンだけを利用することも可能。