やらないよ、けどちょっとふと。tcl/tkな話で。

こうやって思いつきを書きなぐる癖はどうにかしたほうが良いもん?

ピュアな純粋培養 Unix ユーザなんて今や天然記念物だろうから、「何もしなくても工場出荷状態のまま tcl/tk をお手持ち」なんてユーザは、あんまりいないんだろう。今の Mac って Unix ベースだけどどうなの? デフォルトで入ってる? 入ってそうな気はするけどおそらくほとんどが気付かないんだろうな。つまりは、tcl/tk がいくら歴史が古くて入手が非常に容易だったとしても、これはかなり多くの PC ユーザにとっては、「いざ、手に入れん」と思うかもしくは「それへのインターフェイスを持っているなにがしか」を手に入れるかのどちらかでしか、tcl/tk に触れる機会はないのであろう。

「それへのインターフェイスを持っているなにがしか」というのは、Python であれば tkinter が該当し、Ruby なども同じ位置づけのものを持っている。Python の場合、確か記憶だと configure でデフォルトで enable になってたと思う。だから野良ビルド派も、望まない限りはビルドすることになる、だったかな確か。ただ、最近の Unix だと(embed 向けとか特殊なやつを除けば) tcl/tk はほぼ間違いなく必ず入ってるので linux のディストリビューションが「あえて tcl/tk を disable にする」ことはなく、そして公式の Windows 版 CPython も同梱するので、まぁ Python ユーザのほとんど大半は tcl/tk を手にすることになる。

で。これな、前から思ってたことなんだけどさ。

その「Unixユーザ」は当たり前に享受出来て、以外のユーザはその恩恵が限定的、な一つの事実について、なのよ。あんまり詳しいことはワタシに聞かないで欲しいんだけれど、荒っぽい理解だとね、tcl/tk って、簡単にいえば「ライブラリ(tk)とその適用(tcl)」の関係にあって、tcl が「GUI 作成できちゃうスクリプティング」なのね、だから「Python とか」にとっては tcl はいらん、tk だけでええんや、というノリになる。ので、つまり Python ユーザは「tk の恩恵には目いっぱい預かる…、のだが」ということになるわけだ。

つまり、Windows を仕事 PC に採用しており、「Python なんてリスキーなものはインストール許可しないもんね」とまでは言われていない幸運な企業において、「だけど MSYS だの cygwin なんて馬の骨ともわからんものはインストールしたらあっぶないんだぞー」とは言われている企業だったとして、なおかつ「tcl/tk? 何それ食べれんの?」ではあったとした場合。これは「tk を使う」ことと「python の tkinter を使う」ことが完全に同義語となり、この場合「Unix ユーザなら tcl が使える」のとの開きが出る。

何が言いたいの?

うん。まぁたとえば「bash スクリプトに GUI」の道が開けてしまうのが tcl のお気楽さ、なんだけれども、これは Windows ユーザにとっては結構ハードルが高くて、だからんな面倒なことするくらいなら、python だの ruby 手持ちならそこから tkinter だので tk 使ってしまえばいい、という思考の短絡をしてしまえばいい、ってことにはなる、なるんだけれど、仮に、仮にである。「tcl/tk 本体だけを手持ち」という状態を考えられる場合?

そう、「あなたの大好きで大好きで仕方がない MS DOS」で簡単に GUI を組み込める、という「夢物語」をみれるのである。

…やらないよ…。

ちなみに Python がどうやって「tk」を取り込んでいるかというと、これは「tcl/tk 本体を同梱」しているのではなくて、共有ライブラリ(C API)の形の tcl/tk (tcl86t.dll/tk86t.dllとか)とその C API へインターフェイスしたライブラリ(_tkinter.pyd とか)のセットの同梱になっているので、「世界一ステキな MS DOS」から単独で切り出して利用するのはかなり無理がある。どうしてもそうしたい場合は、たとえば ActiveTcl などをインストールせねばならんだろう。いまどきはかえって、よほどの古参でない限りは「ActiveTcl なんてどこの馬の骨ともわからんやつ」とみなされる可能性の方が高げよね、と思うわけよ、たぶん許可もらうのに Python と ActiveTcl のどっちが通りやすいって、圧倒的に前者だろう、tcl の方がはるかに歴史があるのにね。

あと、このように「DOS から」を考えると相当絶望的なんだけれど、ただこれが「C/C++ とか C# とかから」だったりするならちょっとだけ話が別で、特に「C# (とか)」は PowerShell というか .net の道につながるので、なんなら「.net から使う tk」は、「Python インストールしただけ」の状態でもそんなに非現実的ではない、ように思う。だって「tcl86t.dll/tk86t.dllとか手持ち」ですから。世界が破滅するほど難しい、わきゃぁなくて、割と簡単なんじゃないかな。入り口だけならなんとなく半日~一日格闘すれば道が開けるんじゃないかね、おそらく。(C# 経由の場合は p/invoke を使うことになる。というかまぁこれが出来るんだから C API があるなら大概のことは出来る。)

うん、やらないよ。努々楽しみになんかしないように。絶対期待するなよ。