Microsoft アクティブ アクセシビリティ

Microsoft Active Accessibility ( MSAA ) は、ユーザー インターフェイスのアクセシビリティのためのアプリケーション プログラミング インターフェイス(API) です。 MSAA は、1997 年に Microsoft Windows 95のプラットフォーム アドオンとして導入されました。MSAA は、支援技術(AT) 製品がアプリケーション (またはオペレーティング システム) の標準およびカスタムユーザー インターフェイス(UI) 要素と対話し、アプリケーションの UI 要素にアクセス、識別、および操作できるように設計されています。 AT 製品は、MSAA 対応アプリケーションで動作し、身体または認知上の困難、障害、または障がいを持つユーザーによりよいアクセスを提供します。 AT 製品の例としては、視覚が制限されているユーザーのためのスクリーン リーダー、身体的なアクセスが制限されているユーザーのためのオンスクリーン キーボード、聴覚が制限されているユーザーのためのナレーターなどがあります。 MSAA は、自動テスト ツールやコンピュータベースのトレーニング アプリケーションにも使用できます。

MSAA の現在の最新仕様は、Microsoft UI Automation Community Promise 仕様の一部に記載されています。

歴史

Active Accessibilityは当初、 OLE Accessibility [1]と呼ばれていました。この名称は、バイナリコンポーネントや定義と宣言を含むoleacc.dllヘッダーファイルの命名にも反映されていますoleacc.h。1996年3月、MicrosoftがActiveXブランド化を推進する中で、OLE AccessibilityはActiveX Accessibility(AXAと呼ばれることもある)に改名され、1996年3月にサンフランシスコで開催されたMicrosoft Professional Developers Conferenceで発表されました。その後、ActiveXブランドはインターネット固有の技術に限定され、ActiveX AccessibilityはActive Accessibilityとなり、MSAAと略されることも少なくありませんでした。

MSAAは、1997年4月にMicrosoft Active Accessibility Software Developers Kit (SDK) バージョン1.0の一部として初めて提供されました。SDKパッケージには、ドキュメント、プログラミングライブラリ、サンプルソースコード、そしてアクセシビリティ技術ベンダーが自社製品に組み込むための再頒布可能キット (RDK) が含まれていました。RDKには、Microsoft Windows 95用の更新されたオペレーティングシステムコンポーネントが含まれていました。Windows 98およびWindows NT 4.0 Service Pack 4以降、MSAAはWindowsプラットフォームのすべてのバージョンに組み込まれ、定期的にアップグレードとパッチが提供されています。

Windows 上の支援技術アプリケーションのプログラムによる公開は、これまで MSAA を通じて提供されてきました。しかし、最近のアプリケーションでは、 Windows Vistaおよび.NET Framework 3.0で導入されたMicrosoft UI Automation (UIA) が使用されています。

バージョン履歴

アクティブアクセシビリティのバージョンは以下のとおりです: [2]

バージョン説明
1.0Windows 95 用のオリジナル アドオン リリース。RDK は、オペレーティング システムの英語版でのみサポートされていました。(1997)
1.1Windows 98に含まれています
1.2.xWindows の英語版と国際版の両方で利用できるようになった MSAA の最初の改訂版。(1998)
1.3.xより多くの言語のサポートが追加されました。国際化テキストリソースライブラリ用のサテライトDLL (oleaccrc.dll) が導入されました。その後、システムコンポーネントはWindows NT 4.0 Service Pack 6以降、Windows 98、Windows 2000、Windows Meに統合されました。(1999)
2.0MSAAの最初のメジャーリビジョン。ダイナミックアノテーションとMSAAテキストのサポートが追加されました。このバージョンはWindows XPに統合されました。その後、WindowsのバージョンごとにMSAAフレームワークにマイナーリビジョンが加えられました。RDKのバージョン2.0は、2003年に旧プラットフォーム(Windows 95、98、2000、Me、NT)でも利用可能になりました。(2000~2008年)
3.0このフレームワークは、Windows Automation API 3.0の一部となり、MSAAとUI Automation (UIA)によって設定されたWindowsプラットフォームアクセシビリティAPIに統合されています。Windows Automation APIはWindows 7に含まれており、Windows VistaおよびXP (2009)でも利用可能です。

動機と目標

MSAA 開発の動機は、基盤となるオペレーティング システムまたはアプリケーションと支援技術製品の間で利用可能かつシームレスな通信メカニズムを実現することでした。

MSAA のプログラム上の目標は、Windows コントロールが、名前、画面上の位置、コントロールの種類などの基本情報と、可視性、有効、選択などの状態情報を公開できるようにすることです。

技術概要

MSAAはコンポーネントオブジェクトモデル(COM)に基づいています。COMは、アプリケーションとオペレーティングシステムが通信するためのメカニズムを定義します。

図 1 は、MSAA の高レベル アーキテクチャを示しています。

アプリケーション(例:ワードプロセッサ)は、ユーザーインターフェース(UI)に関する情報を提供するため、MSAAではサーバーと呼ばれます。アクセシビリティツール(例:スクリーンリーダー)は、アプリケーションからのUI情報を利用し、操作するため、MSAAではクライアントと呼ばれます。

MSAAフレームワークのシステムコンポーネントであるOleacc.dllは、アクセシビリティツール(クライアント)とアプリケーション(サーバー)間の通信を支援します。コード境界は、UIアクセシビリティ情報を提供するアプリケーションと、ユーザーに代わってUIを操作するアクセシビリティツールとの間のプログラム境界を示します。MSAAクライアントが独自のプロセスを持つ場合、この境界はプロセス境界となることもあります。

Microsoft アクティブ アクセシビリティ

UI はアクセス可能なオブジェクトの階層として表され、変更とアクションは WinEvent として表されます。

アクセス可能なオブジェクト

アクセス可能なオブジェクトはMSAAの中心的なインターフェースであり、IAccessible COMインターフェースと整数のChildIdによって表されます。これにより、アプリケーションはUIの構造を表すツリー構造を公開できます。このツリーの各要素は、対応するUI要素を操作するための一連のプロパティとメソッドを公開します。MSAAクライアントは、標準APIを介してプログラムによるUI情報にアクセスできます。

役割、名前、価値、状態

MSAAは、プログラムの要素に関する小さな情報チャンクを支援技術オブジェクト(AT)に送信することで情報を伝達します。ATがユーザーとアプリケーションとの対話を支援するために使用する重要な情報は、要素の役割、名前、値、状態です。

  • Role : コントロールがボタンやテーブルなどのオブジェクトの種類を、AT を介してユーザーに伝えます。このためのIAccessibleメソッドはget_accRoleです。
  • 名前: 要素のラベルを提供します。例えば、ユーザーを次のページに移動するボタンの「次へ」や、編集ボックスの「名」などです。このIAccessibleメソッドはget_accNameです。
  • Value : 指定されたオブジェクトの値(スライダーバーの値や編集可能なテキストボックスの情報など)を取得します。すべてのオブジェクトが値を持つわけではありません。このためのIAccessibleメソッドはget_accValueです
  • State : コントロールの現在の状態(チェックボックスのオン/オフなど)を示します。State は、コントロールが選択可能か、フォーカス可能か、その他の変更可能な機能を実行可能かを示します。このIAccessibleメソッドはget_accStateです

Microsoftはコントロールとその機能の完全なリストを提供しています。[3]

役割

ロール情報は、開発者が操作するUIコントロールの種類に基づいています。例えば、クリック可能なボタンを実装する場合、実装するロールとして「Pushbutton」を選択します。次の表は、MSAAロールの例と、それに関連する説明を示しています。

役割説明
ロールシステムアプリケーションオブジェクトはアプリケーションのメイン ウィンドウを表します。
ロール_システム_ボタンメニューこのオブジェクトは、メニューをドロップダウンするボタンを表します。
ロールシステムキャレットオブジェクトはシステムキャレットを表します。
ロールシステムダイアログオブジェクトはダイアログ ボックスまたはメッセージ ボックスを表します。
ロールシステムドキュメントこのオブジェクトはドキュメントウィンドウを表します。ドキュメントウィンドウは常にアプリケーションウィンドウ内に含まれます。このロールはマルチドキュメントインターフェイス(MDI)ウィンドウにのみ適用され、MDIタイトルバーを含むオブジェクトを参照します。
ロールシステムグラフィックオブジェクトは画像を表します。
ロールシステムリストこのオブジェクトはリスト ボックスを表し、ユーザーが 1 つ以上の項目を選択できるようにします。
ロールシステムメニューバーこのオブジェクトは、ユーザーがメニューを選択するメニュー バー (ウィンドウのタイトル バーの下に配置) を表します。
ロールシステムプログレスバーこのオブジェクトはプログレスバーを表し、進行中の操作の完了率を動的にユーザーに表示します。このコントロールはユーザー入力を必要としません。
ロールシステムプッシュボタンオブジェクトはプッシュ ボタン コントロールを表します。
ロールシステムラジオボタンこのオブジェクトはオプションボタン(ラジオボタンとも呼ばれます)を表します。これは相互に排他的なオプションのグループのうちの1つです。この属性を持つ、単一の親を共有するすべてのオブジェクトは、相互に排他的な単一のグループの一部であるとみなされます。ROLE_SYSTEM_GROUPINGオブジェクトを使用して、それらを個別のグループに分割してください。
ロールシステムスクロールバーオブジェクトは、クライアント領域の一部であるか、コントロールで使用される垂直または水平スクロール バーを表します。
ロールシステムタイトルバーオブジェクトは、ウィンドウのタイトルまたはキャプション バーを表します。
ロールシステムツールバーオブジェクトはツールバーを表します。ツールバーは、頻繁に使用される機能に簡単にアクセスできるようにするコントロールのグループです。
ロール_システム_ウィンドウこのオブジェクトはウィンドウフレームを表します。ウィンドウフレームには、タイトルバー、クライアント、ウィンドウに含まれるその他のオブジェクトなどの子オブジェクトが含まれます。MSAAでは、このウィンドウオブジェクトは多くの場合、 WindowsのHWNDオブジェクトに相当します。

名前

アプリケーション内の要素の名前は、開発者によってコード内で割り当てられます。アイコン、メニュー、チェックボックス、コンボボックス、その他のコントロールなど、多くのオブジェクトには、ユーザーに表示されるラベルがあります。コントロール(ボタンなど)に表示されるラベルは、そのオブジェクトの name プロパティのデフォルトになります。オブジェクトの名前がユーザーにとって分かりやすく、コントロールを適切に表していることを確認してください。name プロパティには、ボタンやリストなどのコントロールの役割や種類に関する情報を含めないでください。そうしないと、role プロパティのテキスト(MSAA API の GetRoleText 関数から取得)と競合します。

価値

Valueは、開発者がオブジェクトから文字列形式で情報を取得したい場合に使用します。オブジェクト内にパーセンテージ、整数、テキスト、または視覚情報が含まれている場合、Valueが返されることがあります。例えば、スクロールバーやトラックバーからアクセス可能なオブジェクトから返されるプロパティ値は、文字列でパーセンテージを示すことができます。

すべてのオブジェクトに値が割り当てられているわけではありません。

Stateプロパティは、ある時点におけるオブジェクトの状態を表します。Microsoft Active Accessibilityは、oleacc.hで定義されているオブジェクト状態定数を提供し、これらを組み合わせることでオブジェクトの状態を識別します。定義済みの状態値が返された場合、クライアントはGetStateTextを使用して、状態を表すローカライズされた文字列を取得します。すべてのオブジェクトはStateプロパティをサポートしています。

課題と限界

Microsoft は、Windows 95 のリリース中およびリリース後に、Active Accessibility オブジェクト モデルを設計しました。このモデルはロールに基づいており、各ロールはユーザー インターフェイス要素のタイプを表しています。これらのロールは、当時一般的に使用されていたユーザー インターフェイス要素に限定されています。たとえば、複数の UI 要素を 1 つに結合する分割ボタンを支援技術が処理するのに役立つテキスト オブジェクト モデルは存在しません。MSAA は、マークアップ テキストリッチ テキストドキュメントなどのスタイル設定されたテキストを表現しようとしません。MSAA にも Value プロパティはありますが、その値には単純な非スタイル テキストしかホストできません。当時、書式設定されたテキストの属性を表現するには、Microsoftテキスト オブジェクト モデル(MS-TOM) の方が適していると考えられていました。しかし、MS-TOM の複雑さと、Microsoft 以外での初期の採用が限られていたため、リッチ テキストへのアクセスは妨げられました。

もう一つの制限は、オブジェクトモデルのナビゲーションに関するものです。MSAAは、Windowsのウィンドウマネージャーと同様に、UIをアクセス可能なオブジェクトの階層として表現します。クライアントはIAccessible::accNavigateメソッドを使用して、アクセス可能なオブジェクト間を移動します。しかし、サーバーはaccNavigateを予測不可能な方法で実装しており、多くの場合、実装されていません。クライアントは、あらゆるMSAAサーバーに対するあらゆるアプローチに対応できる必要があります。この曖昧さは、クライアント実装者にとって余分な作業を意味し、サーバーの実装によっては、複雑さが問題を引き起こす可能性があります。

COMベースのバイナリインターフェースであるIAccessibleは不変であり、別のインターフェースを作成しない限り変更できません。そのため、既存のIAccessibleベースのオブジェクトモデルを通じて新しい役割、動作、またはプロパティを公開することはできません。IAccessibleは基本UI要素に関する情報の共通サブセットとなることを意図していましたが、新しいインタラクションメソッドに関する情報を含めるように拡張することは困難であることが判明しました。

可用性

MSAA は当初、Windows 95 のアドオンとして提供されていました。その後のすべての Windows バージョンに統合されています。

Microsoft UI Automation (UIA) : MSAAの後継はUser Interface Automation (UIA)でした。しかし、MSAAベースのアプリケーションは現在も存在するため、UI AutomationとMSAAアプリケーション間の通信を可能にするためにブリッジが使用されています。そのため、2つのAPI間で情報を共有できるように、MSAA-to-UI Automation ProxyとUI Automation-to-MSAA Bridgeが開発されました。前者はMSAA情報を取得し、UI AutomationクライアントAPIを通じて利用できるようにするコンポーネントです。後者は、MSAAを使用するクライアントアプリケーションがUI Automationを実装したアプリケーションにアクセスできるようにします。

アクセシブルリッチインターネットアプリケーション(WAI-ARIA):ARIA属性からMSAAプロパティへの一般的なマッピングがあります。 [4]

IAccessible2 : MSAA は IAccessible2 の基盤を提供します。IAccessible2 は MSAA の成果を活用し、さらに機能を追加します。

Windows Automation API : Windows 7以降、Microsoftはアクセシビリティ技術をWindows Automation APIと呼ばれるフレームワークにパッケージ化しています。MSAAはこのフレームワークの一部となります。

Microsoft Active Accessibilityの実装

Active Accessibility は、Windows 95 以降のすべてのバージョンの Windows で開発者が利用できます。 MSAA は、最初の導入以来、 Microsoft Internet ExplorerMozilla FirefoxMicrosoft Officeなど、多くのビジネス アプリケーションやコンシューマー アプリケーションの UI へのプログラムによるアクセスのサポートを追加する方法として使用されてきました。 スクリーン リーダー、画面拡大鏡、補助代替コミュニケーション(AAC) デバイスなどのアクセシビリティ補助機能に加えて、このテクノロジは、QuickTest Pro、Functional Tester、SilkTest などのテスト自動化ソフトウェアでも使用されています。

アプリケーションやAT製品におけるMSAAの実装の詳細については、MicrosoftアクセシビリティサイトまたはAT情報ウェブサイトで検索することができます。[5] [6] [7]

参考文献

  1. ^ NFB-RDメーリングリスト 1996年2月 Archived 2016-03-03 at the Wayback Machine , "OLAE [sic] accessibility"
  2. ^ サポートされているプラ​​ットフォーム: Active Accessibility - MSDN
  3. ^ Microsoft Developer Network (MSDN): https://msdn.microsoft.com/en-us/library/bb773173(VS.85).aspx Windows コントロール。
  4. ^ Microsoft Developer Network (MSDN): UI オートメーション仕様
  5. ^ Microsoft: Microsoft 製品のアクセシビリティ。
  6. ^ Microsoft: Microsoft のアクセシビリティへの取り組みの歴史。
  7. ^ Trace Center: 支援技術情報リンク、2012 年 7 月 23 日にarchive.todayにアーカイブされました。
  • 公式サイト
  • マイクロソフトのアクセシビリティ
Retrieved from "https://en.wikipedia.org/w/index.php?title=Microsoft_Active_Accessibility&oldid=1290217996"