Microsoft Active Accessibility と UI オートメーションの比較
Windows Automation API は、Microsoft Active Accessibility と Microsoft UI Automation という 2 つのテクノロジで構成されています。 Microsoft Active Accessibility は、Windows 95 のプラットフォーム アドインとして導入されたレガシ アクセシビリティ テクノロジです。一方、UI オートメーションは、Microsoft Active Accessibility に固有の制限を克服する、より新しく、より能力の高いテクノロジです。
このトピックでは、Microsoft Active Accessibility と UI オートメーションの主な違いについて説明します。 これには、次のセクションが含まれます。
- 基本設計原則
- プロパティとコントロール パターンの
- MSAA ロールと UI オートメーション コントロール パターンの
- オブジェクト モデルのナビゲーション
- オブジェクト モデル拡張 の
- MSAA からの移行
- Microsoft Active Accessibility、UI オートメーション、または IAccessibleEx の選択
- 関連トピック
基本的な設計原則
Microsoft Active Accessibility と UI オートメーションは 2 つの異なるテクノロジですが、基本的な設計原則は似ています。 両方のテクノロジの目的は、Windows アプリケーションで使用される UI 要素に関する豊富な情報を公開することです。 アクセシビリティ ツールの開発者は、この情報を使用して、Windows 上で実行されているアプリケーションが視覚障う、聴覚、または動きに障穙のあるユーザーがよりアクセシビリティの高いソフトウェアを作成できます。
Microsoft Active Accessibility と UI オートメーションの両方で、UI オブジェクト モデルがデスクトップに根ざした階層ツリーとして公開されます。 Microsoft Active Accessibility は、個々の UI 要素 アクセス可能なオブジェクトとして表し、UI オートメーションはそれらを オートメーション要素として表します。 どちらも、クライアントとしてアクセシビリティ ツールまたはソフトウェアオートメーション プログラムを参照します。 ただし、Microsoft Active Accessibility は、アクセシビリティを提供するアプリケーションまたはコントロールを サーバーとして参照し、UI オートメーションはこれを プロバイダーと見なします。
プロパティとコントロール パターン
Microsoft Active Accessibility は、固定の小さなプロパティ セットを持つ単一のコンポーネント オブジェクト モデル (COM) インターフェイスを提供します。 UI オートメーションには、より豊富なプロパティのセットと、Microsoft Active Accessibility でできない方法でアクセス可能なオブジェクトを操作 コントロール パターンと呼ばれる拡張インターフェイスのセットが用意されています。
詳細については、「UI オートメーション プロパティの概要」および「UI オートメーション コントロール パターンの概要」を参照してください。
MSAA ロールと UI オートメーション コントロール パターン
Microsoft は、Windows 95 のリリースと同時に Microsoft Active Accessibility オブジェクト モデルを設計しました。 モデルは 10 年前に定義された "ロール" に基づいており、新しい UI 動作をサポートしたり、2 つ以上のロールをマージしたりすることはできません。 たとえば、支援技術が複雑な Web コンテンツに対処するのに役立つテキスト オブジェクト モデルはありません。 UI オートメーションは、オブジェクトが複数のロールをサポートできるようにするコントロール パターンを導入することで、これらの制限を克服し、UI オートメーション Text コントロール パターンは本格的なテキスト オブジェクト モデルを提供します。
オブジェクト モデルのナビゲーション
Microsoft Active Accessibility のもう 1 つの制限事項には、オブジェクト モデルの移動が含まれます。 Microsoft Active Accessibility は、UI をアクセシビリティ対応オブジェクトの階層として表します。 クライアントは、アクセス可能なオブジェクトから使用可能なインターフェイスとメソッドを使用して、アクセス可能なオブジェクト間を移動します。 サーバーは、IAccessible インターフェイスのプロパティ、または標準の IEnumVARIANT COM インターフェイスを使用して、アクセス可能なオブジェクトの子を公開できます。 ただし、クライアントは、任意のサーバーの両方の方法に対処できる必要があります。 このあいまいさは、クライアント実装者のための余分な作業と、サーバー実装者のための壊れたアクセス可能なオブジェクト モデルを意味します。
UI オートメーションは、UI をオートメーション要素の階層ツリーとして表し、ツリー内を移動するための 1 つのインターフェイスを提供します。 クライアントは、スコープ設定とフィルター処理によって、ツリー内の要素のビューをカスタマイズできます。
オブジェクト モデルの拡張性
Microsoft Active Accessibility のプロパティと関数は、IAccessible COM インターフェイスの仕様を変更しないと拡張できません。 その結果、オブジェクト モデルを介して新しいコントロールの動作を公開することはできません。静的である傾向があります。
UI オートメーションでは、新しい UI 要素が作成されると、アプリケーション開発者はカスタム プロパティ、コントロール パターン、およびイベントを導入して新しい要素を記述できます。 詳細については、「カスタム プロパティ、イベント、およびコントロール パターンの をする」を参照してください。
MSAA からの移行
Windows Automation API フレームワークでは、Microsoft Active Accessibility サーバーから UI オートメーション プロバイダーへの移行がサポートされています。 IAccessibleEx インターフェイスを使用すると、実装全体を書き換えることなく、従来の Microsoft Active Accessibility サーバーに特定の UI オートメーション プロパティとコントロール パターンを追加できます。 IAccessibleEx インターフェイスを使用すると、インプロセスの Microsoft Active Accessibility クライアントは、UI オートメーション クライアント インターフェイスを介してではなく、UI オートメーション プロバイダー インターフェイスに直接アクセスできます。 詳細については、「IAccessibleEx インターフェイス」を参照してください。
Microsoft Active Accessibility、UI オートメーション、または IAccessibleEx の選択
このセクションでは、支援技術製品を実装したり、支援技術製品からアプリケーションにアクセスできるようにするために使用する Windows Automation API ソリューションを決定するのに役立ちます。
新しいアプリケーションとコントロール
新しいアプリケーションまたはコントロールを開発する場合は、UI オートメーションを使用することをお勧めします。 Microsoft Active Accessibility は短期的には簡単に実装できますが、このテクノロジに固有の制限事項 (古いオブジェクト モデルや、新しい UI の動作をサポートできない、ロールをマージできないなど) は、長期的にはより困難でコストがかかります。 これらの制限は、新しいコントロールを導入するときに特に明らかになります。
UI オートメーション オブジェクト モデルは使いやすく、Microsoft Active Accessibility よりも柔軟です。 UI オートメーション要素にはユーザー インターフェイスの進化が反映されており、開発者はカスタム UI オートメーションコントロールパターン、プロパティ、およびイベントを定義できます。
Microsoft Active Accessibility は、プロセスが不足しているクライアントの実行速度が遅くなる傾向があります。 パフォーマンスを向上させるために、アクセシビリティ ツール プログラムの開発者は、多くの場合、ターゲット アプリケーション プロセスでプログラムをフックして実行することを選択します。これは非常に困難でリスクの高いアプローチです。 UI オートメーションは、アウトプロセス クライアントに対して実装する方がはるかに簡単で、パフォーマンスと信頼性が大幅に向上します。
既存の Microsoft Active Accessibility の実装
Microsoft Active Accessibility に基づく既存のアプリケーションまたはコントロールを更新する場合は、IAccessibleEx インターフェイスを実装して UI オートメーションのサポートを追加することを検討してください。 まず、アプリケーションまたはコントロールが次の要件を満たしていることを確認します。
- ベースラインの Microsoft Active Accessibility サーバーのアクセシビリティ対応オブジェクトの階層は、適切に整理され、エラーが発生しない必要があります。 IAccessibleEx は、既存のアクセシビリティ対応オブジェクト階層の問題を解決できません。
- IAccessibleEx 実装は、Microsoft Active Accessibility 仕様と UI オートメーション仕様の両方に準拠している必要があります。 Microsoft には、両方の仕様への準拠を検証するための一連のツールが用意されています。 詳細については、「アクセシビリティのテスト」を参照してください。
これらの要件のいずれかが満たされていない場合は、UI オートメーションをネイティブに実装することを検討してください。 必要に応じて、旧バージョンとの互換性のために従来の Microsoft Active Accessibility サーバーの実装を維持できます。 UI オートメーション クライアントの観点からは、IAccessibleEx を正しく実装する UI オートメーション プロバイダーと Microsoft Active Accessibility サーバー 違いはありません。
詳細については、「IAccessibleEx インターフェイス」を参照してください。
関連トピック