2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
GTXiLibで小さく始めるAccessibility Testing(全1記事)
リンクをコピー
記事をブックマーク
satoshin21氏:よろしくお願いします。「GTXiLibで小さく始める Accessibility Testing」というタイトルで発表させていただきます。
今日はAccessibilityをテーマに話します。まずAccessibilityについてなのですが、これは高齢者や障がい者も含めてあらゆる人がどのような環境においても柔軟に利用できるのかどうかの指標を表しています。
聞いたことある方いらっしゃると思うんですが、iOSでもアプリ上でVoice OverやVoice Controlなどをサポートすることができます。実際の対応方法についてはさまざまな資料がありますので、今回は割愛させていただきます。
ぶっちゃけた話なんですけど、「Accessibility対応の優先順位を高めている人っているのかな?」と思うのですがいかがでしょうか?、重要性は認識しつつも、デザイナーサイドとも認識を合わせつつ対応が必要な部分もあったりして優先順位的には下がっちゃうのかなと思います。
AppleのほうからAccessibility Inspectorという名前で簡単にAccessibility Checkができるようなツールも配布されているんですが、「これをデザイナーの方に立ち上げてもらうのか?」「リリースの都度実行してチェックするのか?」「実際に運用できるのかな?」という不安もあり、我々はエンジニアなのでできるのであれば自動化したいところです。
そこで今回紹介させていただきたいのがGoogleのGTXiLibです。
Googleの提供するオープンソースのAccessibility Test自動化ツールです。
既存のテストがXCTestでUIテストが作られている場合は簡単に統合ができるんですが、ちょっと残念なところはXCUITestが非対応というところです。代わりにGoogleの提供するEarlGreyというテストフレームワークを使えば、XCTestベースのフレームワークなので対応可能です。
これがすごく簡単に実装できまして、XCTestCaseのセットアップでGTXiLibのinstallメソッドを渡すだけで、テストケースでなにかしらのUIテストが行われれば、それをフックしてAccessibilityテストが実行されます。
GTXChecksCollectionがありまして、もうすでにGoogleからいくつかAccessibility Testが提供されているのでそれを利用することもできます。さらに、自分でこういうかたちのAccessibility Testを実行したい、というものがあるときは自前でテストケースを書くこともできます。
これがサンプルで、ラベルの高さが44以上になることをテストするためのテストケースです。GTXiLib.checkというところで作っていて、elementに例えばUIViewなどが渡されるので、そこからチェックをすれば自前で作ることが可能です。
ざっくりとした仕組みについて解説すると、GTXiLibCore.mを参照してもらえばわかると思うんですが、testCaseの開始と終了をフックしてUIApplication.sharedからkeyWindowを取得、それにぶらさがっているViewに対してすべてのGTXCheckingを実行しています。
実装しててよく「あれ、これ完全にAccessibility悪いのにテスト通っちゃうな?」というところがあったんですが、そういう場合はなにかしら、例えばisAccessibilityElementがtrueになってなかったりするので、テストを通っちゃうときはソースコードを見たほうが早いかなと思います。
UITestをちゃんと書けていない方も多いかと思います。僕もUITestって継続的に書くのは難しいと感じる事があります。そういう場合は小さいところから、UI ComponentだけでもAccessibility Testを始めてみるのはいかがでしょうか。
GTXiLibにはGTXToolKitが組み込まれていまして、これが実際にAccessibility Testを実行するクラスになっています。GXToolKitは基本的にほかのテストフレームワークに組み込むときに利用されるようなものなんですが、直接UIViewなどのelementを渡して、そのAccessibilityのチェックをすることも可能です。
例えば、UIButtonを継承したCustomizedButtonを作って、Accessibility対応をしたカスタムボタンを作ったとします。
それに対してUI ComponentをテストするときにはまずButtonのインスタンスを作成、サイズを指定をします。
それでGTXToolKitのregisterCheckに実行したいテストケースを全部追加します。
そして、toolKit.checkElementに対してそのボタンを渡すことで、それのAccessibility Testが実行されて、resultで結果を受け取ることができます。
GTXiLib.check()のように実際のプロダクトベースのUIテストではないので完璧ではないというか、本当に局所的なテストになっています。例えば背景色が透明なUI Componentsで実際に画面上に配置された時、背景色とのコントラストが大丈夫かというテストは難しいです。
例えばボタンのサイズが適切か、ボタンのtitleと背景色のコントラストが適切か、簡易的なチェックには有効ですので、ぜひとも試していただければなと思います。
あと、SwiftUIには未対応なんですが、先ほどの自前で作るGTXCheckingを作れば対応可能かと思います。では、Accessibility改善を少しずつ進めていましょう。というところで終わりにさせていただきます。
(会場拍手)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略