|
昨今のインターネットの波に乗って書店の棚を大量に占拠しているJavaやPerlの本に混じって、 最近ではやっとTcl/Tkの書籍なども現れ始め、日本でも使う人が増えているようです。 このページと次のページはTcl/Tkの利点についてこうるさく書くことでTcl/Tk の普及を、というほどおおげさではないですが書いてみます。
コマンドプロンプトからキーボードでコマンドをタイプするDOSコマンドやUNIXコマンドに比べて、 マウス操作で簡単に扱えるウィンドウアプリケーションは、開発するのが格段に困難です。 それは今日代表的な3つのウィンドウシステム、 すなわちXウィンドウシステム、MS-Windows、Macintoshのどれにおいても、 膨大な量のAPI、つまりウィンドウを制御したりボタンの押下などに反応したりするための C言語関数についての知識が必要になるのが主な原因です。 しかもこれらのAPIはその3つのシステム間で全く違うので、 せっかくあるシステムでAPIを頑張って憶えても、 他のシステムでは全く役に立ちません。 これに対し、 環境に依存しないソースコードでウィンドウアプリケーションを開発できる言語処理系としては、 1995年に登場したJavaや、 もっと最近ではRIA(Rich Internet Application)技術である Adobe Flexなどもあります。 しかしこれらは主に大規模で本格的なアプリケーションでは力を発揮するものの、 もともとのシステムのAPIを習得するのと同じような労力と根性が必要で、 より身近で、より親しみやすい 「エディタのマクロみたいな」 ウィンドウアプリケーション記述言語は引続き求められました。 Tcl/Tkは、言わばそれに応える形で UNIX、MS-Windows、Macintosh の3つのシステムでできるだけ共通の記述ができるようにと発展してきた言語なのです。 その結果、どのプラットフォーム上でも、 よほど込み入った処理でない限り、 あるTclプログラムを完全な互換性をもって動作させることができるようになりました。
RAD(高速アプリケーション開発)は、 現在のようにパソコンが普及し、 情報処理システムの開発力が非常に重視されている昨今ではとても大事なファクターです。 一般にRADツールというと、 MS-VisualStudio、Eclipse、あるいはAdobe Flash Builderなどの、 マウス操作でウィンドウが作れて、 ボタンや絵をぺたぺた貼りつけていくタイプの統合開発環境 (Integrated Developing Environment, IDEと呼ばれます) を指しますが、 Tcl/Tkはまた違ったタイプのRADツールと言えましょう。 デバッガもドキュメント管理ツールもなく、単にエディタでちょろちょろ (人によってはがりがり +_+;)と書くという、 IDEとは対極的なスタイルです。 それは本職としてウィンドウアプリケーションを開発するエンジニア以外にも、 例えば毎日の業務にちょっと使えるエンドユーザー向けツール、 あるいは研究などで開発したシステムのデモ用操作画面など、 小気味よいGUI画面を備えた小さなアプリを作るのに非常に適した開発ツールをもたらしてくれます。 テコのように自分の業務や雑務をパワーアップさせるアイテムとして存分に使い倒してやりましょう。
最近のインターネットやマルチメディアの発展によって計算機利用の裾野が広がってくると、 必然的に初心者ユーザーが増えてきました。 そのようなユーザーにとっては、たとえ毎日の定型的な処理であっても、 DOSプロンプトやUNIXシェルのコマンドラインでキーボードから命令を打つよりも、 ボタン操作で簡単に実行できるウィンドウアプリケーションのほうが負担が少ないはずです。 従来表計算ソフトのマクロなどがこのために使われてきましたが、 いざ作ろうとすると肝心の機能が足りなかったりして十分なものとは言えませんでした。 Tcl/Tkは、このような組織の事情に合わせた定型作業をこなす小物ツールとしてのウィンドウアプリケーションを手早く作成するのに非常に適した言語処理系です。
Tcl/Tkの処理系は、どのシステムでもC言語で拡張するための開発用ライブラリが標準で同梱されています。 C言語を書ける方なら、Tcl/Tkの処理系に自分独自のコマンドや画像タイプなどを追加した強化版を簡単に作成できます。 またTcl/Tkのバージョン8.0からは、UNIXでいうところの共有ライブラリ (Windowsではダイナミックリンクライブラリ(DLL)) を処理系がロードできるようになったため、 処理系本体を全くいじらずにC言語で書いて作った共有ライブラリでも拡張できるようになりました。 また逆に、自分のプログラムにTcl言語を解釈できる機能をつけることも簡単です。 さらに重要なのは、 C言語で拡張する手順も各システム間でほとんど変わらないという点です。 これはWindows上でVisual C++などの統合開発環境を使っている場合でも、 UNIX上でgccコンパイラを使っている場合でも、基本的にやっていることは同じという意味で、C言語を書くとはいえここでもXやWindowsのAPI関数 に関する知識は全く不要です。代わりといってはなんですが、Tcl/Tk API という関数をいくつか知る必要がありますが、 XやWindowsのAPI関数のよりははるかに平易です。心配は無用ですよ。本当ですよ。 それにWindowsにはTcl/Tk APIのヘルプファイルがついていますし、 ActiveStateのオンラインマニュアルという強い味方もあります。
|