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 を使用すると、コード変更のたびに(たとえば、新しい pull リクエストごとに)ng lint を実行することで、特定のユーザー補助ルールやその他のプラクティスを簡単に適用できます。

これにより、コードレビューに進む前に、ユーザー補助の違反の有無を CI で通知できます。

おわりに

Angular アプリのユーザー補助機能を向上させるには:

  1. Codelyzer で試験運用版のユーザー補助ルールを有効にします。
  2. Angular CLI を使用して、プロジェクト全体に対してユーザー補助 lint チェックを実行します。
  3. Codelyzer によって報告されるすべてのユーザー補助の問題を修正。
  4. 実行時のユーザー補助の監査に Lighthouse を使用することをご検討ください。