Tcl Dev Kit

2003年1月にActiveStateからTcl Dev Kit 2.5 Beta 1が公開されました。
Tcl Dev Kitは有償の製品ですが、Beta版は期間限定でフリーです。
Tcl Dev Kitは、TclProをベースに改良されたTclの統合開発環境です。
コンパイラ、デバッガ、チェッカ、ラッピングツールなどで構成されています。
新たにTcl/Tk8.4.1ベースとなり、TclAppというラッピングツールが加わりました。
TclAppは、Tclkit(Starkit,Starpack)技術で書き直されたGUIアプリケーションです。
従来のラッピングツールであるprowrapは廃止されました。

TclAppでラッピング

TclAppでTclkit(Starkit, Starpack)で懸案となっていた日本語化に挑戦しました。
TclAppで日本語化アプリケーションを作成するためポイントは以下の通りです。

Starkitの作成

まず、簡単な日本語サンプルプログラムを作成します。

# hello.tcl

pack [button .b -text "こんにちは" -command exit]

TclAppを起動し、Fileタブを開いて白いBrowseボタンでtclファイルを登録します。
登録したhello.tclを選択して、SetMainボタンを押します。

次に、Wrappingタブを開いてOutput filewを指定します。
ModifireのCompile .tcl filesにチェックを入れます。
このチェックを入れないと日本語表示が化けてしまいます。

次に、Runタブを開いてWrapボタンを押します。 これで、hello.kitファイルが出来ます。

出来たhello.kitファイルは、ActiveTclのwish.exeまたはTcl Dev Kitのbase-tk-win32-ix86.exeで実行できます。

Starpackの作成

先ほどの簡単な日本語サンプルプログラムにinit.tclを追加します。
hello.tclは同じものを使います。

# init.tcl

set appdir [file join $starkit::topdir lib/application/hello]
file copy $appdir/shiftjis.enc [info nameofexec]/lib/tcl8.4/encoding/
encoding system shiftjis

source [file join $appdir hello.tcl]

# hello.tcl

pack [button .b -text "こんにちは" -command exit]

TclAppを起動し、Fileタブを開いて白いBrowseボタンでtclファイルを登録します。
shiftjisのencoding(shiftjis.enc)を登録します。
登録したinit.tclを選択して、SetMainボタンを押します。

次に、Wrappingタブを開いてInput fileとOutput fileを指定します。
ModifireのCompile .tcl filesにチェックを入れます。
このチェックを入れないと日本語表示が化けてしまいます。

次に、Runタブを開いてWrapボタンを押します。 これで、hello.exeファイルが出来ます。

出来たhello.exeファイルは、単独で実行可能です。

結果確認

「こんにちは」と表示されれば成功です。

まとめ

結局、.tcl fileをコンパイルする必要があるのは釈然としません。
日本語encodingについても、もっと簡単に追加できると便利です。
このあたりはBeta 2で改善される予定です。
パッケージに関しては以下からラッピングするものを選択できますが、
ただし、[Incr Tcl]はベースキットに含まれるので削ることができません。
有償ツールならもと細かい所にも配慮してもらいたところです。


※このダイアログは縦のスクロールバーの制御が変です。

注意

Tcl Dev Kit 2.5 Beta 1は期間限定でフリーなのですが、
Tcl Dev Kit 2.5 Beta 1で作成したStarkitとStarpackも期間限定になります。
ラッピング時に以下のコードを埋め込まれてしまうからです。ご注意ください。

if {[clock seconds] > 1046703600} {
    puts stderr "| This application has been generated with an evaluation license of the"
    puts stderr "| Tcl Dev Kit 'TclApp' utility.  The evaluation license has expired now."
    puts stderr "| Please contact the author of this application for a non-expiring"
    puts stderr "| version of the program: Satoshi Imai <...>."
    exit
    return
}

参考文献