TestCompleteのサンプルで色んなGUIフレームワークで実装したアプリを見比べられて面白かった

先日、TestCompleteという商用の自動UIテストツールを評価する機会がありました。
自動UIテストツールとしてはSeleniumが有名ですが、これは基本的にHTML Webアプリケーションを対象としたものです。
デスクトップGUIアプリケーションを対象としたものについては決定的なものがなく、特にオープンソースでいいものが見当たりませんでした。

そこで調査対象を拡げて商用製品も評価することになり、この手の商品の中で比較的値段が手頃なTestCompleteを評価してみることになったわけです。
TestCompleteはSmartBear社の製品 (日本ではエクセルソフトが販売代理店) で、様々なGUIツールキットで構築されたアプリケーションを対象に自動テストを作成、実行することが可能です。.NETやVB、VC、Delphi、Qt、WPF/SilverlightといったWindowsをターゲットとしたツールキットに加え、SwingやFlex/AIRで作ったアプリケーションもサポートしており、守備範囲は相当広いようです。
http://www.automatedqa.com/products/testcomplete/
http://www.xlsoft.com/jp/products/smartbear/tc_index.html

このソフトの試用版をインストールして触ってみたのですが、このソフトのサンプルディレクトリに面白いものを見つけました。

Open Applications というフォルダの下に、同じ仕様をこのソフトウェアがサポートする様々なGUIフレームワークで実装したサンプルアプリケーションが置いてありました。VBDelphiBorland C++ Builderといった懐かしいものから、AIRWPFといった新しいものまで、その数なんと20種類です。
一番驚いたのは今は亡きMicrosoft J++で提供されていたWFC *1 で作られたものもあったことです。残念ながらMSJVMが入っていないので試せませんでしたが。

前にも書きましたがここ最近はずっとRIA開発をしていたこともあり、GUI開発技術にはとても興味があるので、このように種々のGUI技術をソースコード付きで同時にたくさん見比べることが出来たのは楽しかったです。

続きにはそのスクリーンショットを並べていきます。


まずはVBから。アイコンが懐かしい。Windowsアプリとしては一番見慣れたデザインですね。
サンプルアプリケーションは受注履歴を管理するソフトのようです。

続いてVC。MFCアイコンがこれまた懐かしい。コンポーネントデザインが細かいところで結構VBと異なりますね。

これはDelphi。これまたアイコンが懐か(ry
Delphiは昔仕事でも扱ったことがあります。VBは言語の文法が好きになれなかったし、VCは難しい、ということで昔はWindows上のGUIアプリを作るときにはDelphiを選択することが多かったように記憶しています。

そしてSwing。Swingの方がXPのLunaテーマによりフィットしているような。動かしていると細かいところで他のネイティブアプリと微妙に操作感が違いますが、後述のAIRと比べるとクロスプラットフォームでかつOSにも溶け込むようなアプリを作りたかったらSwingが一番いいと思っています。

これはC#。他にもVB.NETやVC.NETもありましたが全て見た目は全く同じでした。(いずれもWinFormsを使っているからでしょうが)
Windows上で出回っているアプリケーションはやっぱりWinFormsを使ったものが多いのかな? それともまだVCが多いのかな?

Flexで作ったAIRアプリです。ある意味自分が今一番見慣れているものです。
Flexコンポーネントデザインはデフォルトだと結構地味なんですよね。基本的にデザイナーが作ったデザインを取り込むことが前提なのかな。
これだけがモーダルダイアログがインラインです。AIRで別ウィンドウのモーダルダイアログを作ろうとしたらちょっと作り込みが必要になります。

WPFです。この中では一番新しい技術でしょうか。文字にアンチエイリアスが掛かっていて見づらい気が...。以前のWindowsEvernoteクライアントもWPFを使っていたのでこんな感じでしたね。*2
ダイアログのデザインが地味なのが残念。スピンボックスも無いのですね。
正直WPFよりSwingの方がよりWindowsにフィットしている感じがしていました。WPFがなかなか使われない理由を垣間見たような。

とまあ、こんな感じで色々見比べられて楽しかったです。ソースコードも付いているので勉強になります。
でも肝心のTestComplete自体は今回採用を見送っちゃったのですが。まあ次GUIアプリを開発する機会があったらまた検討します (^^;)

*1:Windows Foundation Classes。WindowsアプリケーションをJavaで開発するためにMicrosoftが提供したライブラリです。

*2:結局WPF使うのやめちゃったようですが