TOP / CODING / APP / LINK / NOTE / MAIL

WTL(Windows Template Library)を使ってみる

なぜWTLを使おうと思ったか

もともとそうではなかったのです。私はWindowsのGUIをプログラミングする際に、 OOPにのっとってwindowをクラスにしようと思っていました(誰もが考えそうな 非常に単純なアイディアですね)。 そこで目指していたのはMFCのようなクラス群(フレームワーク?)を作り上げる ことではありませんでした。単発で使いまわせるテンプレートを使ったシンプルな クラス(Boostのような)を作って、それを任意に組み合わせてGUIを実装したかったのです。 つまり、APIを直書きして作ったプログラムにぴったりのwindowクラスが欲しかった わけです。ま、MFCを使うのがイヤだったと。(MFCがどのような点でプログラマに嫌われて いるかは、ここでは微妙にしか書きませんので他のサイトを参考にしてください。) そして、別のクラスライブラリを希求しました。

しかし、わたしはプログラマの原則を忘れていませんでした(時々忘れるんですけどね)。 それは「使えるものは使え」「車輪の再発明はするな」です。よって私は、すでに そのようなライブラリが存在しないかを探すことにしました。そこで見つけてしまったのです。 これが不運(?)の始まりでした。

WTLのどこが好き

私がまず第一に挙げるのは、クラスのmodularityです。大きなクラス集合体、時には フレームワークと呼ばれてしまうような代物は、あるクラスを使いたいときにこっちの クラスも一緒に使わなければならない、みたいな構造になっています。そのフレームワークに のっとってプログラムを作るのであればそれでいいし、非常に便利なのでしょうが、 そうでないとき(フレームワークが合わないとき)はそうもいきません。しかもフレームワーク としてのライブラリは全体で一つの作品であるので、それを利用するプログラムのサイズが (利用しない機能まで実装されているために)大きくなりがちです。

ライブラリの「軽さ」に関する部分が第二の理由です。「軽さ」とはバイナリのKBだけを 指すのではありません。プログラマの感覚的に「軽い」のです。 各々のクラスが取り扱いやすいことをその一つに挙げれるでしょう。 しかもテンプレートクラスであったなら、汎用的で、コードの無駄も減ります。 さらにはコードが比較的高速です。ソースもバイナリも軽いプログラムが作れる ライブラリがあるのに、わざわざ重くなるライブラリを使う人がいるでしょうか? そういう人はよほどその重たい鎧についている羽飾りが好きなんでしょうね。

このようなWTLの特徴は、STLのそれに似ています。つまり、STLの良さをWindows UIの実装という 分野に持ってきたのがWTLということもできるでしょう。(この表現は語弊があるかもしれません。 WTLはSTLほどのレベルの抽象性で設計されている訳ではなく、そのコーディングは トリッキーだからです。しかし、"TL"の部分の効能はあると思います。) STLを惜しみなく使っているプログラマは、WTLにより近い場所に住んでいると思います。

WTLを試す価値はある

私はWTLをお勧めします。というのも、他にそのようなライブラリがないからです。 自分でクラスを作ってもよいのですが、WTLのクラスを見てしまってからでは、 これ以上のクラスライブラリを作る自信などとうに消えうせてしまいました。 他にこれ以上のライブラリを知っている方がいればぜひ私に教えてください (私は乗り換えは早いほうです)。 私のWindowsの知識と技術からすると現状では到底このライブラリには勝てそうにないので、 奴隷として暮らすことにしました。そうなるとWTL、ATLの奴隷を(仲間を)増やしたくなるのが 人情(?)ってものです。

WTLはATLのwindow関連部分の拡張ですが、MFCにある大抵のクラスの代用品はあります。 もちろんWTLでDoc-Viewをやることも可能です。 位置づけとしては、ATLでのwindow実装を手助けしてくれるクラス群といったところです。 ATLではCWindowImplまでのところを、WTLではCFrameWindowImplとかCMDIChildWindowImpl とかまで広げてくれる、といった認識が適切ではないでしょうか。 (詳しい話は後にするとしましょう。) ATLの他の部分との親和性がよいことも魅力的ですね(COMとか使う人には)。

このページを作るにあたって

WTLは私にとってはそれ自体おもしろいので、このサポート非対象の秘密兵器をどのように 自分家で分解するか、というのがまた別の楽しみになってしまいます。そんな 動機付けでこんなページの作成を思い立ってしまいました。 とはいえ、秘密兵器を兵器としてぶっ放すことが本来の使い方ですし、そちらでも成果を あげてくれることでしょう。理由は上で挙げたとおりです。

私はこのライブラリの公式ドキュメント(しかも日本語で)ができることを望んでいますが、 せめて私の解読が終わるまで出すのは待ってほしい、というのがパズル解答者的な意味での 今の気持ちですね。同じように思っている人は他にもいるんじゃないでしょうか。 MSがどう画策しているかわかりませんが(知ってる人いたら教えてください)、 私はマイペースでやっていこうと思います。

last modified: 2003.Oct.10

to the Top of this page