今回は,Windowsユーザーが日々使用するアプリケーションの品質や安全性を評価するツールを紹介します。紹介するツールは,Application Verifier(以後,AVツールと略記)という名称で,MicrosoftのWebサイトから無料でダウンロードできます。

 皆さんの中には,Application Verifierという名前を見て,技術的に難解な印象を受けてしまう人もいるかもしれません。しかし実際に使用してみると,決して難しいツールではないことが分かります。AVツールの基本的な操作方法を交えながら説明を行いますので,ぜひこの便利なツールの使い方をマスターしましょう。

AVツールを使ってみる

 すでに述べたように,AVツールは難解な印象を与える名前ですが,Windowsアプリケーションの1つであることになんら変わりはありません。平均的なWindowsユーザーは何らかのアプリケーションを毎日のように起動し,それを操作しているはずですから,その操作技術を単純に応用すれば,AVツールを自分の目的に応じて有効活用することができます。

 AVツールは,Windowsシステムの付属機能の1つではありません。このため,MicrosoftのこちらのWebサイトからダウンロードし,お使いのWindowsシステムに追加インストールする必要があります。

 ダウンロード・サイトを開くと,「Application Compatibility Toolkit Download」というボタンがあります。AVツールは,「Application Compatibility Toolkit」というより大きなツール群の一部として提供されています。「Application Compatibility Toolkit Download」ボタンをクリックすると,「Windows Application Compatibility Toolkit 3.0」ダウンロード画面が表示されてきますから,ダウンロードを開始してください。

 ダウンロード後は,インストールするだけです。なお,このツールは現在, Windows 2000 Service Pack 3, Windows XP,及びWindows Server 2003に対応しています。筆者は,Windows Server 2003環境にダウンロードしています。

図1●Application Verifierの起動画面
 ダウンロードとインストールという2つの操作を完了すると,AVツールを起動できるようになります。AVツールの起動は,いつものように,「スタート>すべてのプログラム」から,「Microsoft Windows Application Compatibility Toolkit>Windows Application Verifier 2.5>Windows Application Verifier」という順に選択していきます。AVツールを起動すると,図1[拡大表示]のような初期画面が表示されます。

 左右に2つの大きな画面があり,左画面の下にはいくつかの小さな操作ボタンが表示されています。「Add」というボタンが確認できます。「Remove」と「Run」というボタンの姿も見えますが,この時点では無効になっています。右画面には複数の選択ボタンがありますが,ここでは「Obsolete APICalls」という項目が有効になっていることを確認するだけにしてください。

 この画面は一般にはGraphical User Interface(GUI)と呼ばれていますから,平均的なWindowsユーザーならすでに慣れ親しんでいるものです。このGUIが実装されている技術的な背景などに興味のある方は,第9回で紹介したDependency Walkerツールを起動し,そのツール内部からAVツールを開いてみるとよいでしょう。AVツールのGUI実装には,Microsoft Foundation Class(MFC)が使われています。ツールと聞くだけで気持ちが重くなってしまう人がいるかもしれませんが,そのような姿勢ではいつになっても必要な基本技術を蓄積することができません。自分の興味に応じて(多少分からないところがあっても)積極的に使ってみましょう。

 それでは,AVツールを実際に使用してみます。有効となっているボタンの1つに「Add」というボタンがあります。それ以外のボタンはしばらく無視してください。「Add」ボタンは,その名称から,何かを追加する,という機能を持っていると推測されますが,問題は「何を追加するか」です。AVツールはすでに説明したように,アプリケーションの動作を検証する(Verify)ツールですから,ここでは,検証対象となるアプリケーションを追加することになります。

図2●「Add」ボタンでメモ帳を追加する
図3●「View Logs...」ボタンをクリックすると表示される画面
 それでは,すべてのWindowsシステムに付属していくるメモ帳を追加してみましょう。追加作業は簡単です。「Add」ボタンをクリックし,新たに表示されるファイル選択画面を操作するだけです。メモ帳を追加すると,初期画面は図2[拡大表示]のように変化します。

 多少時間をかけて画面を見てください。これまで無効となっていた「Remove」と「Run」という2つのボタンが有効になっていることに気付くと思います。「Remove」ボタンは,追加したメモ帳をAVツールから削除する機能を,そして,「Run」ボタンは追加したメモ帳を実行する機能を,それぞれ提供してくれます。それでは,この状態のままで「Run」ボタンをクリックしてください。

 メモ帳が開かれるはずです。メモ帳が無事に開かれたら,何もせずにそのまま閉じてください。そして,左下にある「View Logs...」というボタンをクリックしてみましょう。図3[拡大表示]のような画面が表示されるはずです。

 この画面では,右上にある「Show all」ラジオ・ボタンがすでに選択されています。私の環境では「 called an obsolete API」という警告が出されています。皆さんの環境ではどのような情報が表示されてきますか? 警告内容の詳細は,下端にある「Possible Solutions:」画面に表示されているはずです。私の環境では次のような詳細説明が載っています。

The application called an obsolete API. Applications should not call obsolete APIs. Find and use current APIs instead.

 この説明は,「メモ帳内部では旧式のAPIが呼び出されているため,最新のAPIを呼び出すように改善してください」と述べています。このことから,普段なにげなく使用しているメモ帳内部では,古いAPIが使われていることが分かります。

図4●メモ帳から任意のテキスト・ファイルを開く操作を行う
 図4[拡大表示]もご覧ください。この画面は,次のような一連の操作をした直後に取得しています。

操作1:「Run」ボタンをクリックする
操作2:起動されたメモ帳から任意のテキスト・ファイルを開く
操作3:メモ帳を閉じる

 メモ帳から任意のテキスト・ファイルを開く操作を行うと,その背後では「GetTextExtentPointW」というAPIが呼び出されていることがわかります。「GetTextExtentPointW」も古いAPIだったのです。皆さんも,お時間のあるときに,以上のような操作手順でいろいろなWindowsアプリケーション操作を実行してみてください。もしかすると,メモ帳内で呼び出されているすべてのAPIは旧式なものであるかもしれませんよ。

 ところで皆さん,アプリケーション内部で呼び出されているAPI以外の項目をチェックしたい場合,どうすればよいと思いますか? 例えば,アプリケーション内部に潜んでいるセキュリティ・ホールの原因などを調べたい場合には,AVツール初期画面の「Test Settings:」に表示されている「SecurityChecks」というチェック項目を選択します。

 結論を先に言うと,メモ帳は潜在的なセキュリティ・ホールを持っていません。興味のある方は,前回のサンプル・プログラムをダウンロードし,含まれる実行可能プログラムの動作を検証してみてください。もちろん,Internet Explorer(IE)などの普段お使いのアプリケーション・プログラムの動作を検証してもいいでしょう。お時間のあるときにぜひ挑戦してみてください。

 ここでAVツール使用上の注意点を1つ述べおきます。「Add」ボタンで追加したプログラムの動作検証が済んだときには,必ず,「Remove」ボタンをクリックし,追加を解除しておいてください。この解除の詳しい理由を知りたい方は,第9回で紹介したDependency Walkerを次のような手順で操作してみるとよいでしょう。

手順1:AVツールに追加しない状態のメモ帳をプロファイリングする
手順2:AVツールに追加した状態のメモ帳をプロファイリングする

 結論を言うと,AVツールに追加した状態でアプリケーションを使用すると,パフォーマンスが低下してしまうのです。Dependency Walkerのプロファイリング機能については,第9回の説明を読み返してください。

 ところで皆さん,このAVツールですが,Microsoftはなぜこのようなツールを出荷してきたのだと思いますか? このツールを使用すれば,私たちWindowsユーザーは,IEをはじめとするMicrosoft社製ソフトウエアの動作を検証できてしまいます。このあたりの事情を少し説明しておきましょう。

AVツールが一般公開された背景

 Microsoftのセキュリティ専門家であるMichael Howard氏は,このような情報を公開し,その中で次のようなことを述べています。

Developers are urged to always use the SecurityChecks in the AppVerifier to test their applications before shipping them because end users have access to the AppVerifier and are able to find any security holes that it exposes.

 この文章は簡単に言ってしまえば,「開発者は恥をかきたくなければ,AVツールを必ず使用すべし」,と述べています。表現を変えれば,本日紹介したAVツールは,すべてのWindowsソフトウエア開発者の作業内容を,ユーザーが監視できるようにする性格を持っているのです。このため,例えば,私はメモ帳の愛好者ですから,「メモ帳開発者諸兄よ,新しいAPIを呼び出すように書き換えてください!」と声高に叫んでもよいわけです。

 先ほど触れたこちらの情報を読むと分かりますが,AVツールは今後さらに改良が加えらることになっています。AVツールは最新バージョンのダウンロードを自動化する機能も備えていますから,ぜひインストールしておきたいところです。

本日のまとめ

  • 各種のツールはWindowsアプリケーションにすぎない
  • AVツールはアプリケーションの動作を検証する機能を持っている
  • AVツールを使用すれば,ソフトウエア開発者の作業姿勢を監視・評価できる

 本日以上で終了です。次回またお会いいたしましょう。ごきげんよう。