はじめに
Windows Vistaがリリースされてから1年。OSのリプレースは、一気に進むことはなくても、徐々にVistaマシンが増加しています。多くの開発者は、積極的にVista向けのアプリケーションを開発することはなくても、アプリケーションをVista対応する必要性が増しています。
ここで言うVista対応とは、Vista環境でアプリケーションが正常に動作することに加えて、既存の環境でも動作することです。つまり、Vista向けに完全に新しいアプリケーションを作成するのではなく、従来のXPなどのWindowsプラットフォームで動作するアプリケーションが、同じくVistaでも動作することが求められているのです。
Vistaをまったく新しいプラットフォームと捉えて、その環境向けの新規アプリケーションを開発することは、それほど難しいことではありません。しかし、現実には既存のWindowsプラットフォーム向けに開発されたアプリケーション資産があり、これらをうまくVistaに適合させていかなければなりません。また、新規に開発する場合でも、「Vistaだけ」というわけにはいかず、引き続き従来プラットフォームもサポートしていかなければならないケースがほとんどです。
Delphi的Vistaサポートのアプローチ
CodeGearが提供しているDelphiは、既に10年以上の歴史を持つWindows向けのビジュアル開発ツールです。姉妹製品であるC++Builderとともに、共通する特徴は、コンポーネントフレームワークVCL(Visual Component Library)です。VCLは、ドラッグ&ドロップによるマウス操作とプロパティ/イベントによる簡単な設定でアプリケーションを開発可能にする強力なフレームワークです。VCLは、Windows APIをカプセル化し、高度なユーザーインターフェースを、簡単なビジュアル操作で利用可能にしています。
このWindows APIをカプセル化するレイヤーの存在は、OSの差異をうまく吸収します。Vista特有の機能に対応するために既存のコンポーネントに新機能を追加しつつ、従来OSでは従来どおりの動きを可能にしています。
本稿では、DelphiのVista対応の機能をいくつか紹介するとともに、Vistaで変更されたさまざまな機能や仕様に、既存アプリケーションを適合させていくポイントを紹介します。なお、ここで紹介する内容は、基本的にC++Builderにも適用できます。
Windows Vistaについて
本稿では、Windows Vistaのイノベーションについて詳細に触れることはありませんが、セキュリティ、信頼性、使いやすさにフォーカスして多くの改善がなされているという点を理解しておかなければなりません。このために、いくつかの改良が、従来OSとの互換性を損なっている場合もあります。
互換性の問題が起こりうる典型的なケースを以下に示します。
- 管理者権限での動作を想定している(セキュリティ上重要なリソースへのアクセス)
- 古いOSの機能を利用している
- OSのバージョンに強く依存している
- 内部的なシステムコールやデータ構造を使用している
- 潜在的な不具合
- UIの描画に関する問題