torikori です. 風邪により寝込みながらこの記事を書いています. どうかみなさまお気をつけて.
さて、表題の通り、Windows 上にてTcl/Tk を動作させる方法について、drawgraph.tcl をもとにして説明します.
Tcl/Tk とは、Tcl スクリプト言語とTk というGUI を利用するためのツールキット、そしてさまざまな拡張の連合体です. 今回インストールして利用するのは、その中でもTcl/Tk のインタプリタである「wish」です. ここからでも様々に出てきますが、どうやらインストール方法によって「wish86s」「wish」「wish8.6s」など、さまざまなファイル名があるようです. 手元でそれらをうまく網羅できなかったので、読み替えてくださればと.
Tcl/Tk の公式サイト「Tcl Developer Site」 http://tcl.tk/ におけるダウンロードページ http://tcl.tk/software/tcltk/を読むと、Windows 上においては、さまざまなインストール方法が記されていることがわかります. これは、Tcl/Tk は本来Unix系オペレーティングシステム上にて開発されたものであり、Windows 向けにはさまざまな移植の取り組みが行われているからです.
以下のように、いくつか手段がある (これら以外にもあるかと思います) ので、わかりやすいと思われるものを試してみるとよいかと思います.
[ActiveTclがあるディレクトリ] などと示したりしますが、Cygwin/MinGW とWindows 上のエクスプローラーやブラウザではディレクトリの表記が異なりますので、注意が必要です.
Windows 上での「ダウンロード」ディレクトリを例にして説明します。
Cygwin上では /cygdrive/c/Users/(Windows のユーザー名)/Downloads に 対応します. MinGW 上では /c/Users/(Windows のユーザー名)/Downloads となります.
さらに、「C:\Program Files」をさすときなど、空白が含まれたディレクトリ名を扱うときには、Cygwin では /cygdrive/c/Program\ Files/、MinGW では /c/Program\ Files/ と入力してください. 空白文字の手前に’\’ (バックスラッシュ、あるいは円記号) を入力する必要があるので注意が必要です.
Cygwin/MinGW 環境にてソースコードをビルド
ここでは、Cygwin/MinGW 環境にて、Tcl/Tk をソースコードをビルドし導入する方法を説明します.
まず Cygwin や MinGW 上にて、GNU C Compiler や autoconf, automake, make, tar, grep, gettext, xproto (X11 の基礎的ヘッダファイル群.) という必要なパッケージを導入してください. ただし、一般的なインストール状況ならば、導入はすでになされているかと思います.
そして、Tcl/Tk の公式ウエブサイトから、「Source Distributions」 (ソースコードの配布ページ) に行き、Tcl 8.6.8 (バージョンが変わっているかもしれません. その時点での最新版を利用すればよいかと思います.) および Tk 8.6.8 の 「Gzip format」をダウンロードします. (「Gzip 形式はZIP 形式などに代表される圧縮形式の一つです. Cygwin 上などでは、ZIP形式よりも扱いやすいので、ここではそちらを利用しました.)
以下では MinGW をもとにして説明を行いますが、Cygwin でも同様にできるかと思います. また、Tcl/Tk を [MinGWやCygwin のホームディレクトリ]/tcltk に導入することにします. (別のディレクトリに導入しても問題なく動作するかと思いますが、日本語や空白が含まれるディレクトリは避けておくのもよいかもしれません. 日本語回りのトラブルを避けるために.)
$ cd [Tcl/Tk をダウンロードしたディレクトリ]
$ tar xjf tcl8.6.8-src.tar.gz (説明: 注意: バージョン番号が異なるかもしれません)
$ tar xjr tk8.6.8-src.tar.gz (注意: バージョン番号が異なるかもしれません)
$ cd tcl8.6.8/win/ (説明: まずTcl スクリプト言語を導入します. windows 向けの設定が含まれているディレクトリに移動します)
$ ./configure –enable-shared=no –prefix=$HOME/tcltk (説明: Tcl をビルドするために、インストール先を設定し、このPC の環境を調査してもらう. 数分ほどかかる. –enable-shared=no というのは、共有ライブラリまわりにて無用なトラブルを防ぐため.)
configure: creating ./config.status
config.status: creating Makefile
config.status: creating tclConfig.sh
config.status: creating tcl.hpj
config.status: creating tclsh.exe.manifestなどと表示されればうまくいっています.
$ make (説明: ビルドします. ここで「エラー」などと表示されなければ成功です. 手元では数十分ほどかかりました.)
$ make install (説明: 先ほどのディレクトリにTcl をインストールします.)
$ cd ../../tk8.6.8/win/ (説明: 次にTk スクリプト言語を導入します. windows 向けの設定やソースコードが含まれているディレクトリに移動します. )
$ ./configure –enable-shared=no –prefix=$HOME/tcltk –with-tcl=$HOME/tcltk (説明: Tcl をビルドするために、インストール先を設定し、このPC の環境を調査してもらう. –enable-shared=no というのは、共有ライブラリまわりにて無用なトラブルを防ぐため. –with-tcl= として先ほど導入したTcl のありかを設定.)
$ make (説明: ビルドします. ここで「エラー」などと表示されなければ成功です. 手元では数十分ほどかかりました.)
$ make install (説明: 先ほどのディレクトリにTk をインストールします.)
$ ls $HOME/tcltk/bin/ (説明: Tcl/Tk のインストールができたことを確認.
ここに 「wish86s(.exe)」のような「wish」という名前の実行ファイルがあればインストール成功です.
これで導入できました.
そして、次のようにすれば動作するかと思います.
$ $HOME/tcltk/bin/wish86s /drawgraph.tcl [引数をつけても大丈夫]
筆者としては、この方針が最も簡単であろう、と思います.
なお、Tcl/Tk が不要になれば、インストールしたディレクトリを
$ rm -rf [インストールしたディレクトリ]
にて削除すればよいかと思います.
ActiveTcl
https://www.activestate.com/activetcl としてActiveState 社がWindows など様々なOS向けにTcl/Tk やその拡張をひとまとめにして配布しています. 公式サイトにあるように、Business Editon などは有料ですが、Community Edition は無料で利用できます. この Community Edition を導入するのもよいかと思います.
その際英文のライセンスを (好きに利用してよいわけではありません) 注意深く読む必要があります.
ダウンロードしてライセンス条項に同意し、インストールしたのちには、wishなるTk のインタプリタが導入されているはずです. なおここで、バージョン番号が別途付けくわえられ、wish83 などとなっているかもしれません。
まずやるべきは、Cygwin/MinGW 上にて
Cygwin/MinGW の端末上にて、以下のようにすると動作するかと思います.
$ cd [drawgraph.tcl のあるディレクトリ]
$ [ActiveTclのディレクトリ]/wish ./drawgraph.tcl (注意: バージョン番号が異なるかもしれません)
TclKit/KitCreator
TclKit はhttp://tclkits.rkeene.org/fossil にある、Tcl/Tk を単一実行ファイルとして利用できるようにするプロジェクトです. また、KitCreator はhttp://kitcreator.rkeene.org/fossil/index にあるように、TclKit を簡単にビルドし導入するためのビルドシステムを運用するプロジェクトのようです.
TclKit のダウンロードページ http://tclkits.rkeene.org/fossil/wiki/Downloads から、「Tk が含まれている」Windows 向けのファイルをダウンロードして、以下のようにすると実行できます. ここで、wish という名称にはなっていませんが、tclkit-[バージョン番号].exe そのものがwish に該当するようです.
$ cd (drawgraph.tcl のあるディレクトリ)
$ (先ほどTclKit をダウンロードしたディレクトリ)/tclkit-8.6.3-win32-x86_64.exe ./drawgraph.tcl
なお、このプロジェクトにおいては、Tcl/Tk の公式サイト「Binary Distributions」の欄にリンクは張られているものの 、ActiveState のような商用ベンダーがサポートしているわけではなく、かつあまり利用されていないようです. といいつつ筆者も(大変申し訳ないのですが) ソースコードを読み解かずじまいですので、セキュリティ上安全である、と自信をもっておすすめすることができずじまいでいます.
Tcl/Tk on Cygwin
この方法については、様々なところに記載されていますので省きます.
Xサーバーを「事前に」起動させ、それを確かめた上で wish を動かすように気を付ける必要があります.
./drawgraph.tcl として起動させる方法
以上の説明で drawgraph.tcl 自身を問題なく利用できるかと思います. しかしながら、wish などを毎度毎度入力するのは煩雑かと思います. そこで、Tcl/Tk のスクリプトファイルの1行目を次のように書き換えて、実行権限を付与うようにすると、./drawgraph.tcl とだけしても、動作するようになるかと思います. まず、次のようにして、インストール先がどこにあるのか、その正確なパスを把握します.
$ echo $HOME/tcltk/bin/wish86s.exe (説明: まず wish86s.exe がある場所を把握)
/home/torikori/tcltk/bin/wish86s.exe (例です)
その結果を把握したうえで、drawgraph.tcl の一行目をそのように書き換えます. 最初に「#!」をつけることに注意が必要です.
#!/home/torikori/tcltk/bin/wish86s.exe
そして、以下のように実行権限を付与してやると、./drawgraph.tcl とするだけで実行できるかと思います.
$ chmod +x drawgraph.tcl (説明: 実行権限を付与)
$ ./drawgraph.tcl [引数をつけても大丈夫]
うまく動作しないなどあれば、ここのコメント欄あるいは(筆者の連絡先を知っている方は) LINE などにでもコメントをいただければと思います.