Microsoft UI Automation

Microsoft UI Automation (UIA) (マイクロソフト・ユーアイ・オートメーション) は他のアプリケーションのユーザインターフェイス (UI) 要素を識別して操作するためのアプリケーションプログラミングインターフェイス (API)であるDarryl K. Taft: Microsoft Promotes Cross-Platform Accessibility Tech, EWeek (2005-11-28), accessed 2007-02-07.Microsoft: Microsoft's New Accessibility Model To Be Offered as Cross-Platform Solution for Industry, accessed 2007-02-06.。

UIA はユーザインターフェイスのアクセシビリティの提供を目標としており、Microsoft Active Accessibility の後継である。また、グラフィカルユーザインターフェイス(GUI)のテスト自動化を容易にし、多くのテスト自動化ツールが基礎にするエンジンでもある。RPAツールもビジネスプロセスで使われるアプリケーションの自動化に利用している。
UIAのプロパティプロバイダは Win32 と .NET のプログラムもサポートする。

UIAの最新仕様は Microsoft UI Automation Community Promise Specification の一部となっている。マイクロソフトは Microsoft Windows プラットフォーム以外への移植はデザイン目標の一つであると主張しており、Mono にも移植されたMicrosoft Developer Network: UI Automation Specification and Community Promise。

 歴史 

2005年に、マイクロソフトは MSAA フレームワークの後継として UIA をリリースした。

マネージド UI Automation APIは.NET Framework 3.0の一部としてリリースされた。
ネイティブ UI Automation API (プロバイダ)はWindows Vista と Windows Server 2008 SDK に含まれており、.NET Frameworkと一緒にも配布された。

UIA は Windows Automation API 3.0 の一部として Windows 7 に同梱され、個別ダウンロードとして Windows XP、Windows Vista、Windows Server 2003/2008 向けに提供されたDescription of the Windows Automation API。

 目的 

MSAA の後継として UIA では以下のことを目指している。

 対象となるアプリケーションのプロセスにクライアントをフックしなくても、クライアントの効率的なパフォーマンスを実現する。
 UI について、より多くの情報を提供する。
 MSAA と共存し、利用するがMSAAに存在した課題は継承しない。
 MSAA に代わる単純な実装を提供する。

 技術的概要 

 利用できるオペレーティングシステム 

UIA は当初 Windows Vista と Windows Server 2008 で利用でき、その後 Windows XP と Windows Server 2003 でも .NET Framework 3.0 の一部として利用可能となった。Windows 7 等、以降のすべての Windows バージョンに統合されたMicrosoft: UI Automation Overview, accessed 2007-02-07.。

Windows プラットフォーム以外には、Olive プロジェクト (.NET Framework のサポートを約束している　Mono coreのアドオンライブラリ一式) が WPF (PresentationFramework および WindowsBase) と UI Automation のサブセットを同梱したMono: Olive.。

ノベルによる Mono アクセシビリティプロジェクトは Mono フレームワークを対象とした UIA プロバイダとクライアントの実装である。加えて、このプロジェクトは Accessibility Toolkit (ATK) for Linux assistive technologies (ATs) との橋渡しとなっている。ノベルは UIA-based ATs との橋渡しを行うことで、ATK を実装するアプリケーションと関われるようにしているMiguel de Icaza and Philippe Cohen: Mono, Mainsoft and Cross-Platform Enterprise Development, Enterprise Open Source Magazine (2007-01-14), accessed 2007-02-07.。

 関連テクノロジと相互運用 

 Microsoft Active Accessibility (MSAA): UIA は MSAA の後継である。しかし MSAA に依存するアプリケーションがまだ存在するため、UIA アプリケーションと MSAA アプリケーションの橋渡しが行われ、2つの API の間で情報共有が可能である。MSAA-to-UIA プロキシと UIA-to-MSAA ブリッジが開発された。前者は MSAA の情報を元に UIA クライアント API で利用可能とするコンポーネントである。後者は MSAA を使うクライアントアプリケーションが UIA を実装するアプリケーションにアクセスできるようにする仕組みであるMicrosoft Developer Network (MSDN): Microsoft, UI Automation and Microsoft Active Accessibility, accessed 2007-02-07.。
 Accessible Rich Internet Applications (ARIA): UIA の AriaRole および AriaProperties プロパティは HTML 要素 (ウェブブラウザによりオートメーション要素としてアクセス可能となる)に対応する ARIA 属性値へのアクセスを可能とする。ARIA 属性から UIA への一般的なマッピングも利用できる。
 Windows Automation API: Windows 7 より、マイクロソフトはアクセシビリティテクノロジーを Windows Automation API と呼ばれるフレームワークにパッケージした。MSAA も UIA もこのフレームワークの一部となった。旧バージョンの Windows については KB971513 を参照KB971513: Windows Automation API download。
 Mono アクセシビリティプロジェクト: 2007年11月7日にマイクロソフトとノベルは相互運用性に関する合意完了後、アクセシビリティ機能の拡張についてアナウンスを行ったMicrosoft:  Microsoft and Novell Celebrate Year of Interoperability, Expand Collaboration Agreement.Mono Accessibility Project Homepage.。特に、UIA フレームワークが Linux Accessibility Toolkit (ATK) 等の既存の Linux アクセシビリティプロジェクトと一緒に動作するよう、ノベルがオープンソースのアダプタを開発し、SUSE Linux Enterprise Desktop、Red Hat Enterprise Linux、Ubuntu Linuxと一緒にリリースされることがアナウンスされた。これにより UIA は最終的にクロスプラットフォームとなった。

 脚注 

 関連項目 
 UI Automation Control Types
 UI Automation Control Patterns
 UI Automation Control Properties
 UI Automation Events

 外部リンク 
 UIオートメーションの概要
 UIオートメーションのススメ
 UI Automation Verify (UIA Verify) Test Automation Framework
 UI Automation PowerShell Extensions
 TestStack/White

Category:マイクロソフトのAPI
Category:Windows API
Category:アクセシビリティAPI