Codelyzer を使用して Angular アプリのアクセシビリティを監査する

Angular サイトをすべてのユーザーが利用できるようにしたいですか?ここがいい場所だ!

アプリをユーザー補助に対応させるということは、特別なニーズを持つユーザーを含め、すべてのユーザーがアプリを使用してコンテンツを理解できるようにすることです。世界保健報告書によると、10 億人以上(世界人口の約 15%)がなんらかの障がいを抱えています。そのため、ユーザー補助はどの開発プロジェクトでも優先事項です。

この記事では、Angular アプリのビルドプロセスに codelyzer のユーザー補助チェックを追加する方法について説明します。このアプローチでは、コーディング中にテキスト エディタでユーザー補助バグを直接検出できます。

codelyzer を使用してアクセスできない要素を検出する

codelyzerTSLint をベースとするツールで、Angular TypeScript プロジェクトが lint チェックのルールに準拠しているかどうかを確認します。Angular コマンドライン インターフェース(CLI)で設定されたプロジェクトには、デフォルトで codelyzer が含まれています。

codelyzer には、Angular アプリケーションがベスト プラクティスに準拠しているかどうかを確認する 50 を超えるルールがあります。そのうち、ユーザー補助の基準を適用するためのルールが約 10 個あります。codelyzer が提供するさまざまなユーザー補助チェックとその根拠については、Codelyzer の新しいユーザー補助ルールの記事をご覧ください。

現在、すべてのユーザー補助ルールは試験運用版であり、デフォルトでは無効になっています。TSLint 構成ファイル(tslint.json)に追加することで有効にできます。

{
  "rulesDirectory": [
    "codelyzer"
  ],
  "rules": {
    ...,
    "template-accessibility-alt-text": true,
    "template-accessibility-elements-content": true,
    "template-accessibility-label-for": true,
    "template-accessibility-tabindex-no-positive": true,
    "template-accessibility-table-scope": true,
    "template-accessibility-valid-aria": true,
    "template-click-events-have-key-events": true,
    "template-mouse-events-have-key-events": true,
    "template-no-autofocus": true,
    "template-no-distracting-elements": true
  }
}

TSLint は、一般的なすべてのテキスト エディタと IDE で動作します。VSCode で使用するには、TSLint プラグインをインストールします。WebStorm では、TSLint はデフォルトで有効になっています。他のエディタについては、TSLint の README をご覧ください。

Codelyzer のユーザー補助機能チェックを設定すると、TypeScript ファイルやインライン テンプレートでコードを記述する際に、ユーザー補助機能のエラーを示すポップアップが表示されます。

テキスト エディタに表示された Codelyzer のポップアップのスクリーンショット。
フォーム要素のラベル付けエラーを示す Codelyzer ポップアップ。

プロジェクト全体(外部テンプレートを含む)で lint を実行するには、ng lint コマンドを使用します。

Angular CLI による lint チェック

codelyzer の補完

Lighthouse は、Angular アプリケーションでユーザー補助のプラクティスを適用するために使用できる別のツールです。codelyzer と Lighthouse の主な違いは、チェックが実行されるタイミングです。Codelyzer は、アプリケーションを実行せずに、開発時に静的に分析します。つまり、開発中にテキスト エディタやターミナルで直接フィードバックを得ることができます。一方、Lighthouse では実際にアプリケーションが実行され、動的分析により一連のチェックが行われます。

どちらのツールも、開発フローの有用な部分になります。Lighthouse では実行するチェックを考慮しているため、カバレッジが高くなっていますが、Codelyzer では、テキスト エディタでフィードバックを継続的に取得することで、反復処理を高速化できます。

継続的インテグレーションでのユーザー補助機能チェックの適用

継続的インテグレーション(CI)に静的ユーザー補助チェックを導入すると、開発フローを大幅に強化できます。codelyzer を使用すると、コードの変更ごとに ng lint を実行することで、特定のユーザー補助ルールやその他のプラクティスを簡単に適用できます(新しいプルリクエストごとに実行します)。

これにより、コードレビューに進む前にも、ユーザー補助機能違反の有無を CI から確認できます。

まとめ

Angular アプリのユーザー補助機能を改善するには:

  1. codelyzer で試験運用版のユーザー補助ルールを有効にする。
  2. Angular CLI を使用して、プロジェクト全体にユーザー補助リンティングを実行します。
  3. codelyzer によって報告されたユーザー補助に関する問題をすべて修正しました。
  4. 実行時のユーザー補助監査に Lighthouse の使用を検討してください。