Subject: -II- Tcl,Tk,拡張 Tcl とは?


o Tcl ベースの言語のハイライト

Tcl と Tk は,カルフォルニア大学(カルフォルニア州バークレイ)の
John Ousterhout(オゥスタホゥト OH'-stir-howt)博士によって開発されまし
た.博士の姓の発音に対する注意が,URL:news:comp.lang.tclの賢人である
URL:mailto:js@aelfric.bu.edu Jay Sekora から発せられています:

> 「オゥスターホゥト(oh-stir-howt)」と発音するのが正しい!
> 「オゥスタホート(oh-stir-hoot)」は誤り.彼は動物じゃないよ!
[訳注] hoot はふくろうの鳴き声.つまり,「ふくろうじゃない」の意.
ところで,日本語での博士の姓の表記は如何にすべきでしょう? > fj.lang.
tclの賢人各位.

Tcl (現在の版は 7.3) は,``tool command language(ツール コマン
ド言語)'' の略で,「ティクル」と発音します.Tcl のソースコードが公開さ
れる,作者のホーム ftp サイトは URL:ftp://ftp.smli.com/pub/tcl/ です.
Tcl は,言語(インタプリタ)とライブラリから構成されます.第 1 に,Tcl
は簡単なテキスト処理言語で,テキストエディタやデバッガ,図的表示やシェ
ルといった,対話的なプログラムを実現するのに便利なコマンドを含んでいま
す.文法規則は単純で,プログラムは容易ですので,Tcl ユーザは組み込みの
コマンドプロシージャを,より強力に拡張して書き直すことも可能です.

第 2 に,Tcl は,アプリケーション内に組み込み可能なライブラリ
パッケージでもあります.Tcl ライブラリは,Tcl 言語のパーザ,組み込みコ
マンドを実装したルーチン,そして,組み込むアプリケーション固有の処理を
扱える様に Tcl を拡張するプロシージャから構成されます.アプリケーショ
ンプログラムは Tcl コマンドを生成し,それを実行する為に Tcl パーザに渡
します.コマンドの生成は,入力ソースから文字列を読み込んだり,あるいは,
メニュー項目やボタン,キーボード操作といった,アプリケーションのユーザ
インタフェースの構成要素に割り振られたコマンド文字列から行えます.Tcl
ライブラリがコマンドを受け取ると,それを構文解析し,組み込みコマンドを
直接実行します.アプリケーション上で実装されたコマンドに対しては,Tcl
は,そのコマンドの実行の為,アプリケーションを呼び返します.多くの場合
(プロシージャやループコマンド,条件分岐などが,これに当たります),コマ
ンドは,追加指定された文字列を実行する為に,再帰的に Tcl インタプリタ
を呼び出します.

アプリケーションプログラムが,Tcl をそのコマンド言語として用い
ることで,次の 3 つの利点を得ることができます.まず第1に,コマンド言語
の標準化です.ユーザは一度 Tcl を覚えてさえしまえば,他の Tcl ベースの
アプリケーションも容易に扱えます.第 2 に,Tcl のプログラム容易性です.
全ての Tcl アプリケーションは,そのアプリケーション固有の低水準コマン
ドを実装する必要があるでしょう.Tcl は,多くのユーティリティコマンドに
加えて,この様な複雑なコマンドプロシージャを組み立てる為の,汎用のプロ
グラムインタフェースを提供します.Tcl を使うことによって,アプリケーショ
ンは,これらの機能を再利用することが可能となります.第 3 に,Tk ツール
キットのような,Tcl の拡張を用いることで,アプリケーション間で Tcl コ
マンドを送受しあい,アプリケーション間通信を実現できることです.アプリ
ケーション間で共通の Tcl 言語と言う枠組は,アプリケーション間通信を容
易にしてくれます.

[訳注: ここで言うコマンド言語とは,アプリケーションのカスタマイズなど
を行う際,その指定をアプリケーションに伝える為に使う言語の様なイメージ
の様です.emacs における,emacs-lisp の様なものでしょうか.]

Tk (現在の版は 3.6) は,プログラマに X11 ウィンドウシステムへ
のインタフェースを提供する,Tcl の拡張です.Tkは,X11 R4,X11 R5,X11
R6 や SunのNeWS/X11環境でコンパイルできることに注意して下さい.

Tk のソースが公表される作者のホーム ftp サイトは,
URL:ftp://ftp.smli.com/pub/tcl/です.多くのユーザは,``wish'' という
プログラムの形で Tk と出会っているでしょう.wish は,ユーザに Tcl アプ
リケーションを作成するプロトタイプ作成環境として使える,簡単なウィンド
ウ環境シェルです.

Tk 4.0βが入手可能になりました.詳細は,
URL:http://www.sunlabs.com/people/john.ousterhout/
URL:http://www.sunlabs.com/research/tcl/を参照のこと.正式
なリリースは,95年上半期中でしょう.予定される(旧版からの)変更点は,以
下の通りです.

- テキスト・ウィジェットの大幅な改修 (埋め込みウィンドウ,水平スクロー
ル,垂直スクロールの改良,および,垂直距離やマージン,均等割り付けや
ベースライン位置調整といった様々な表示オプションの追加).
- バインド (binding) の改修.昨年のワークショップで議論されたバインドタグや,
バインドを作成しやすくするための評価機構の変更を含む.
- イベント・ハンドリングに関する,その他幾つかの変更."fileevent" コマ
ンド (Mark Diekhans の "addinput" に類似) の追加や,"after" ハンドラ
の取消機能など.
- カラー表示アイコンや,総天然色画像,動画などの取扱を可能とするための,
汎用的でユーザ拡張性のある画像メカニズム.
- カラーマップとビジュアル・ハンドリングの改善.
- 長時間実行されるアプリケーションにおいてエラーの原因となり得る,X リ
ソースID 周りの問題の解決.
- ウィジェット群への様々な改良.エントリでの均等割り付けや,ボタンやラ
ベル等に複数行テキストを指定でき得るように.

また,実現されるかも知れない機能は以下の通りです.

- Motif キーボード・トラバーサルのハイライト・リングのサポートと,ウィ
ジェットのバインドを完全に Motif コンパチとするための全面的な改修.Motif
のそれと衝突しない,エントリとテキストでの Emacs ライクなバインドもまた,
提供されるだろう.
- アプリケーション埋め込み (Sven Delmas の tksteal の様なものと思われ
る).
- send コマンド,セレクションや入力フォーカス機構の改修.

Tk 4.0 の初期βリリースは,1994 年第 4 四半期が期待されています.

[訳注] 1995年9月15日現在,Tcl7.5/Tk4.1がαリリースされています.正規の
リリースはTcl7.4/Tk4.0で,patch2が最新です.後者の日本語化パッチはSRAの
西中さんらのご尽力でURL:ftp://ftp.sra.co.jp/pub/lang/tcl/jp/でリリー
スされています.関係者の皆様のご努力に深く感謝いたします_o_

Tcl と Tk の将来性は,まったくバラ色です.今年,Ousterhout 博
士は Sun Microcomputer に,Tcl/Tk の開発を更に進めるため,彼が雇用され
た事を発表しました.Ousterhout 博士の述べた,(今後 12 ヵ月程度の) 短期
計画によれば,

- PC と Mac 双方に Tcl と Tk を載せる.一方のプラットホーム上で書かれ
たスクリプトは,他方でも実行でき,さらに,それが実行されるプラットホー
ムでの UI のルック&フィールで表示される.
- Visual Basic や NextStep の様な,商用品質のグラフィカル・インタフェー
ス・デザイナ.
- C コードの Tcl への動的読み込み.
- Nathaniel Borenstein の safe-Tcl を Tcl コアに取り込むことにより,イ
ンタネットから来た信用できないスクリプトでも,安心して実行できるメカ
ニズムを提供する.

John は,これを引用する許可を与えてくれました.

> From: ouster@tcl.eng.sun.com (John Ousterhout)
> Newsgroups: comp.lang.tcl
> Subject: Re: The future of TcL/Tk's Copyright Terms
> Date: 31 Aug 1994 20:08:19 GMT
> Organization: Sun Microsystems, Inc.
> Message-ID: <342nvj$6e9@engnews2.Eng.Sun.COM>

> 私は,(私がSunに)雇用されるにあたっての交渉の席上で,Sunの人々と,Tcl
> と Tk のライブラリのステータスに関して議論しました.そして,それらを,
> これまでそうであったように,フリーで無制限としてゆくことで,合意に達し
> ました.将来,私のグループが Sun で行う Tcl と Tk の拡張は,Mac や Pc
> への移植も含め,どの様な人々のどの様な使用に対しても,フリーに置かれま
> す.私と,そして私が Sun で報告を行った人々の意見は,Sun は Tcl と Tk
> をいかなる形でも独占しようとするものではありません.誰か(ひょっとした
> ら私が,新しい仕事で)最後のフリーなリリースを取り上げ,独自の開発パス
> を取ったとするならば,その結果,コンパチ性の無いバージョンが生まれ,す
> べての人々に取って嬉しくない事態をまねくことになるでしょう.

> もちろん,Sun は私のチームの仕事からお金を得ねばなりませんし,でなけれ
> ば,我々を支援し続けようとは思わないでしょう.我々の現在の計画は,開発
> ツールの変更と有効な拡張,そしてアプリケーションです.パブリックと利益
> 性のバランスを取ることは,我々の行おうとする挑戦であります.ですが,私
> と Sun の双方に取って,今ある Tcl コミュニティのサポートを継続すること
> は,非常に重要なことです.私は,この議論があと数年,繰り返し起きると思
> います.ですが,私は私達が全ての人々にとってうまく行くようにもってゆけ
> ると考えます.

[訳注:] 上記の文章は,非常に重要な内容を含んでいます.
より正確を期したい方は,原文を当たられることをお勧めします.

より詳細な情報は,以下を参照のこと.
URL:http://www.utdallas.edu/acc/glv/Tcl/usenix95-bof.html

ジョンは,以下のことも触れるように私に依頼しました.
> リリースノートを載せたが以下に出来ました.この私のホームページに来て
> くれるのが最上でしょう.これは,

> URL:http://www.sunlabs.com/people/john.ousterhout/
> URL:http://www.sunlabs.com/tcl/
> URL:http://www.sunlabs.com/research/tcl/
> URL:http://www.sunlabs.com/research/%7Eouster/

> です.このページは安定してて,リリース情報といった興味深い情報へのリ
> ンクが張られています.ただし,来月か再来月にWeb関連のリソースはすべ
> て,以下の内のどれかの新しいマシーンに引っ越します.

> http://www.smli.com/tcl
> http://www.smli.com/research/tcl
> http://www.smli.com/research/~ouster

> 引越ししてしまっても見つけられるように,FAQに記載してやって下さい.

[訳注] この引越しは既に行なわれています.Ousterhout博士のホームページ
は,以下のURLで見ることができます.
http://www.smli.com/people/john.ousterhout
また,Tclのホームページは以下の通りです.
http://www.smli.com/research/tcl

拡張 Tcl (TclX) (現在の版は 7.3b) は,Karl Lehenbauer と Mark
Diekhansによって開発された,Tcl の拡張コマンド集です.拡張 Tcl のソー
スを入手できる,作者のホーム ftp サイトは,ftp.neosoft.com です.拡張
Tcl は,種々の便利なユーティリティに加え,システムプログラミングを可能
とする為の,Unix OS へのインタフェースを有しています.

[訳注] Tcl7.4に対応したTclX7.4aが既にリリースされています.

Rush は,Tcl'94 ワークショップでアナウンスされた,Tcl ライクの
拡張言語です.その文法とセマンティクスは,Tcl のそれと非常に似通ってい
ます.が,さらに,最適化コンパイラが提供され,規則(rule)と呼ばれる新し
い機能が追加されています.Tcl と比較した第 1 の利点はパフォーマンスで
あり,Tcl コンパイラが C の 1000 倍程度であるのに対して,こちらは C の
100 倍以内である点にあります.Rush は,一般にはまだ公開されていません.
野心的なαバージョン・テスタ達が問い合わせで励ましていますが.メイルを,
URL:mailto:asah@cs.berkeley.edu>や
に送る事はできます.詳細な情報は,以下の論文を参照して下さい.
URL:ftp://ginsberg.cs.berkeley.edu/pub/asah/papers/rush-tcl94.ps.gz

o Tcl と Tk に関するURL:mailto:glv@utdallas.edu(Glenn Vanderburg) に
よる一般情報

Tcl (ツールコマンド言語) は,自由に再配布可能で,簡単なインタプリタ型
言語であり,アプリケーションの拡張とカスタマイズの共通化に使える様に設
計されました.アプリケーション設計者がスクリプト言語などに時間を費すの
ではなく,アプリケーション本来の部分に注力できる様に,そして,ユーザが
アプリケーションを替える度に新しいスクリプト言語を勉強しなおしたりせず
に済む事を願って,Tcl は John Ousterhout 博士の手により設計・開発され
ました.多くの使えるアプリケーション--その内の幾つかは商用として売られ
ている--が,Tcl をそのスクリプト言語として使用しています.

Tcl は,クリーンで系統だっていて,ハッカーじゃない人にも本当に簡単に学
べます.コマンド指向で,アプリケーションやユーザによって追加されたコマ
ンドも,組み込みの Tcl コマンドとまったく同じように扱う事ができます.
Tcl は,単純変数と連想配列(表)の両方を持っていて,(プロシージャ本体も
含めた) 全ての値は文字列として表現されます.(初期設定用スクリプトの様
な) 簡単なカスタマイズ処理スクリプトならば,オプションを設定する単純な
コマンドの列になるので,初心者でも容易に扱えるでしょう.

Tcl は,アプリケーションに組み込み可能な,C 言語ライブラリとして実装さ
れています.アプリケーションは,独自のコマンドをインタプリタに,(クリー
ンな C 言語インタフェースを使って) 追加することも出来ます.(このライブ
ラリは) どの様な使用に対しても何のロイヤリティも不要なライセンスで配布
されています.

Tk ツールキットは,Tcl に X ウィンドウとのインタフェースを提供する Tcl
の拡張 (Tcl の追加コマンド集) です.Tk は,アプリケーションにグラフィ
カル・インタフェース機能を加える最も容易な方法の 1 つで,Tcl がインタ
プリタであることから,Tk ベースのインタフェースは C や C++ ベースのツー
ルキットを用いるのに比較して,よりカスタマイズ性と動的拡張性に優れてい
ます.Tk は,Motif のルック&フィールで実装されています.数多くの素晴
らしい X アプリケーションが,アプリケーション固有のコマンドを新規に定
義する事なしに,Tk のみを用いて作成されています.Tk は,また,同じディ
スプレイ上で実行される他の Tk ベースのアプリケーションに対して任意の
Tcl コマンドを送信するための仕組みを提供していて,これによって,ツール
間の通信を容易に行うことができます.

Tcl と Tk は円熟していて,完全に安定しています.ですが,静止してなどは
いません.Ousterhout 博士はバークレイから,サン・マイクロシステムズに
移籍し,商的品質の Tk グラフィカル・インタフェース・ビルダや,
on-the-fly な Tcl コンパイラ,そして,マッキントッシュや,マイクロソフ
ト Windows への Tk の移植に,彼のグループとともに取り組んでいます.彼
は,Tcl と Tk の著作権とライセンス条件は変更しないだろうと述べています.

Tcl が何で*ない*かを comp.lang.tclでの議論の文脈から言えば,Mac上で
利用可能である Think C ライブラリ(TCL)と直接は関係しないということです.
ややこしいことに,ここで扱われている言語は Mac で*利用可能*な上に,
実際問題,何人かのユーザはこれをコンパイルするのに Think C を使ってい
るのです.この様な「世界の復層入れ子状態」の実例として,Vogon恒星間高
速道建設隊のステージ設定があげられるでしょう.

[訳注:] Vogon恒星間高速道建設隊(Vogon interstellar highway construction
crews)は,ダグラス・アダムス『銀河ヒッチハイカーガイド』からの
引用だそうです(感謝!>奥乃@NTTさん).女房の嫁入り道具の中に
新潮社版のこの日本語訳があり,やっと読むことができました^^;