2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
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.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05