WindowsのTcl/Tkの実行環境はいくつかあります。
が紹介されています。
また他にも
などもあります。
ただ
- 最新バージョンへの追随の速さ
- 同梱されるパッケージの豊富さ
- インストールの容易さ
の面で、長らく「とりあえずActiveTclを使っておけばOK」だったように思います。
しかし今年になって急に雲行きが怪しくなってきました。
ActiveTclの有償化
これまでActiveTclの利用料金は、個人利用だけでなく組織での利用も外販目的でなければ無償だったように思いますが、2021年6月21日からは組織内での利用も有償になってしまいました。
またインストーラも廃止されるようです。
組織で大々的にTcl/Tkを使っていて、相応の予算を配分してもらえるなら何の問題も無いでしょう。
しかし、ちょっとしたGUI付きツールをTcl/Tkで作り、実行環境のセットアップ等の「おぜんだて」も引き受けて同僚に使ってもらっている私のようなライトユーザにとっては、到底受け入れられない方針転換でした。
ポストActiveTcl Community EditionはMagicsplat?
Tcl Developer Xchangeで紹介されているActiveTcl以外の実行環境を物色してみましたが、一番まともそうなのはMagicsplatでした。
Magicsplatは「Tcl/Tkをビルドして、有用なパッケージをいっぱい同梱して、インストーラをくっつけただけ」って感じで、Teapot導入以前の古き良きActiveTclといった風情のディストリビューションです。
またバイナリ配布物だけでなく、読み物的なオンラインドキュメントが非常に充実していたり、現在の安定バージョンであるTcl8.6向けの書籍を出版していたりと、昨今、Tcl/Tkを扱った書籍が全く出版されなくなっている現状を鑑みても稀有な存在です。(大袈裟すぎ?)
ただ、
- インストール先が「%LOCALAPPDATA%\Apps\Tcl86」に固定されており全ユーザ共通の実行環境にしにくい
- 64bitのWindowsに32bitバージョンのMagicsplatをインストールできない
の2点は個人的に非常に残念です。
前者については、ひとつのPCにいくつかのアカウントを作って使っている場合、各アカウント毎にインストール作業が必要となり、バージョンがまちまちになってしまいやすいので、とても気持ち悪いです。対策としては、インストール完了後に手動で「%PROGRAMFILES%\Magicsplat\Tcl86」などに移動して関連付けも修正する必要があります。
後者については一般的(普遍的)な理由ではなくて、32bitのマイコンに組み込むアルゴリズムのシミュレーションをTclでやったりしている関係で何となく32bitに統一しておきたいだけで、もしかすると64bitのTclでも問題ないのかも・・・
同梱パッケージにこだわらなければTclKitもアリ
インストーラや豊富な(使ってない)同梱パッケージにこだわらず、
- 実行環境と自作スクリプトのセットアップは手作業でやればいい
- 実行環境と自作スクリプトのセットアップのインストーラくらい自作できる
- バージョン管理のリポジトリに実行環境も含めておきたい
- 実行環境のファイルはできるだけ少なくしたい
などといった場合は、TclKit Downloadsから素のTcl/Tkのバイナリだけダウンロードしてきて使うというのも悪くない選択肢だと思います。
ソースコードを保護したいならKitCreatorで野良ビルド
あるいは、
- 自作スクリプトやパッケージのソースコードは隠したい
- 実行環境も含めて1つの実行ファイルだけにしたい
といった場合は、KitCreatorでVFS形式をcvfsにして野良ビルドしてしまえば目的を達成できます。
私はWindowsアプリを作るのは本業ではありませんが、客先デモ用やWindowsアプリ開発外注用にプロトタイプを作成・提供する際に、KitCreatorをMSYS2 MinGW GCCでビルドして1つの実行ファイルにして配布したことがあります。
ただ、最新のKitCreator Version 0.12.0をビルドしてみたところ、Ffidlのビルドが途中で止ってしまうトラブルに見舞われました。(まだトラブルシュートしてみていないので、KitCreatorの問題なのか、組合せ(相性?)的な問題なのかまでは把握できていません)
結局、何が最適解か
- ポストActiveTclという意味では(インストール先等の不満はあれど)Magicsplat
- コンパクトにまとめたい場合はTclKit Downloads+最低限のパッケージ
- ソースコードを隠したい場合はKitCreatorで野良ビルド
- 自分だけ使えればいいならCygwin+VcXsrvも可
てとこかなー。