Qtブログ(日本語)

Qt 5 アクセシビリティ API

作成者: 朝木卓見|Jul 24, 2012 2:17:59 PM

この記事は Qt Blog の "Qt 5 Accessibility APIs" を翻訳したものです。
執筆: Frederik Gladhorn, 2012年6月18日

Qt 4 から Qt 5 へのアップデートはゆるやかでスムーズなものとなります。基本的にはソース互換性を維持します。ただし、絶対に必要だと思われる領域に関してはその限りではありません。

アクセシビリティはそのような領域の一つで、Qt 5 への移行時に影響を受ける大きな変更が加えられました。

これは、これまでの API は古く、すべてのプラットフォームにおいてアクセシビリティの実装を改善することができなかったためです。

変更にあたって、一旦すべてのアクセシビリティ API をインターナルとしてマークしました。すなわち、これらの API は「不可視化」され、ドキュメントにも載りません。これはこの巨大な変更による API が確定しておらず、かつ充分にテストされていないためです。Qt 5.1 のリリースで正式な API とするのが適切だと思います。しかし、特別な設定を行わなくてもテストは行えるように、有効にする手段を用意しました。その間はドキュメントはありませんが、既存の Qt 4 よりも大幅に改善されていることが分かると思います。

Linux 向けの新しいアクセシビリティブリッジの開発時に、みなさんからのフィードバックで API の限界が判明したため、できる限りその解決を行おうとしました。元々の API は Windows 95 でサポートされたアクセシビリティ API である MSAA にインスパイアされたものでした。

その後も、開発者がユーザをより良くサポートできるように、そしてもちろんユーザがコンピュータをできる限り活用できるようにアクセシビリティの世界は変わり続けてきています。大規模な変更は行っていませんが、様々なところをブラッシュアップして、API はとても分かりやすくより間違いにくいようになりました。一つの大きな改善としてはプラットフォームへの通知の送信方法で、ようやくツールに対して十分な情報が提供できるようになりました。

Qt 5 では状況は一旦後退しましたが、その後に Mac と Windows、Linux の各プラットフォームとの統合を改善しました。これはすべてのデスクトップにおいて十分なアクセシビリティの機能を提供する最初のリリースとなるでしょう。さらに、対応の範囲を従来の QWidget の世界だけではなく、QML の世界へ広げました。依然としていくつかの課題はありますが、新しいシステムは既に広範囲にわたって実際にテストされています。たとえば、Unity-2d は Ubuntu でユーザに好まれているスクリーンリーダですが、そこで QML とアクセシビリティが連携しています。

Mac では古い Carbon のバックエンドから Cocoa のものに乗り換えました。このブリッジ(Qt のアクセシビリティ API を Mac の API へ接続するブリッジ)は出来上がったばかりなので、皆さんのテストと仕上げが必要です。

Windows のアクセシビリティブリッジは MSAA の後継となる IAccessible 2 をサポートします。IAccessible 2 はテーブルやリストなどより多くの要素へのより良いサポートをスクリーンリーダに提供します。

Linux 用の新しい qt-at-spi ブリッジは Qt 4 で Gnome と KDE でテストされてきました。Qt 5 ではそれに大きく改善を行い Qt 自体に(プラグインとして) 5.0 か 5.1 で同梱されます。

アプリケーション開発者のみなさんは、すべてのプラットフォームにおいて、より多くのアクセシビリティの機能の対応とスクリーンリーダへのさらなる対応の恩恵をそのまま受けることができるでしょう。まだまだ完璧ではないと思いますので、みなさんからのフィードバックをお待ちしています。特にアクセシビリティ機能を拡張したことのある方や、QAccessibleInterface を継承した独自ウィジェットの作成の経験がある方からの意見を頂きたいと思っています。今回の改善されたクラスに関するドキュメントはすべて ,cpp ファイルの中のコメントに記述されていますので、そちらを参照してください。