ASP.NET におけるユーザー補助のサポート

更新 : 2007 年 11 月

ASP.NET を使用すると、障害を持つユーザーがアクセスできる Web アプリケーションを作成できます。ユーザー補助 Web アプリケーションでは、ユーザーがスクリーン リーダーなどの補助技術を使用して Web ページを操作できます。ユーザー補助 Web アプリケーションには次のような利点があります。

  • 非常に広範囲にわたるユーザーが利用できます。

  • 障害を持つユーザーだけでなく、多くの場合すべてのユーザーに利点のあるデザイン原則が適用されます。

  • すべての Web アプリケーションにユーザー補助機能を備えることを求める多くの機関の要件を満たします。

ユーザー補助ガイドラインと ASP.NET でこれらのガイドラインを満たす方法について理解すると、障害を持つユーザーが簡単に操作できるアプリケーションを作成できます。

ユーザー補助のガイドライン

さまざまな組織から、ユーザー補助アプリケーションの作成方法に関するガイドラインが公開されています。よく知られたガイドラインを次に示します。

  • Web Content Accessibility Guidelines 1.0 (WCAG)

    これらの標準は W3C (World Wide Web Consortium) によって作成され、他の多くのユーザー補助標準の基礎になっています。これには、世界中の政府機関で採用されているユーザー補助標準が含まれています。

    Web コンテンツのユーザー補助ガイドラインについては、W3C (World Wide Web Consortium) Web サイトを参照してください。

    WCAG ガイドラインは、それぞれのガイドラインに関連付けられたチェックポイントに対して 1 ~ 3 の尺度を使用して、優先度のさまざまなレベルを定義しています。一部の機関では、すべての Web サイトが優先度 1 および優先度 2 のチェックポイントに準拠することを求めています。

  • 508 条

    米国政府がリハビリテーション法 508 条で制定した、WCAG に似たユーザー補助標準です。

    508 条のガイドラインについては、http://www.section508.gov にアクセスしてください。

  • マイクロソフトのユーザー補助ガイドライン

    マイクロソフトのユーザー補助ガイドラインについては、Microsoft Accessibility にアクセスするか、または MSDN Library にアクセスして「Accessibility Design Guidelines for the Web」を参照してください。

ユーザー補助のテスト

サード パーティから入手できるさまざまなツールを使用して、限られた範囲内で、Web ページがどの程度ユーザー補助標準に準拠しているかをテストできます。

Microsoft Visual Studio 2005 などの開発環境がある場合、その環境でユーザー補助をテストするツールが提供される場合があります。詳細については、その製品のドキュメントを参照してください。ただし、デザイン時アクセシビリティ検証ツールでは、ASP.NET サーバー コントロールや独自コードで表示されるマークアップのような動的に生成される出力はテストされません。デザイン時アクセシビリティ検証ツールの使用に加えて、ページの出力もテストする必要があります。

自動化されたユーザー補助テストは、ページまたは Web サイトのユーザー補助に対して完全な診断は実行できません。ユーザー補助の多くのガイドラインでは、ページの機能がガイドラインに準拠するかどうかを開発者が確認することを求めています。たとえば、自動化されたテストは、ページ上のすべてのイメージに対して alt テキストが用意されているかどうかについては判断できます。ただし、自動化されたテストは、alt テキストがそのイメージを正しく表現しているかどうかは判断できません。同様に、自動化されたテストは、ページ上で使用している色が高いコントラストのテキストが必要なリーダー用に十分なコントラストで表示されるかどうかは客観的に判断できません。したがって、真のユーザー補助アプリケーションを作成するには、開発者がガイドラインの詳細と目的に精通し、ユーザー補助ガイドラインに準拠したページを作成できるようになる必要があります。ツールで実行できないアクセシビリティの確認の他の例としては、曲線的なテーブル境界線など、グラフィックのみのイメージに対する alt テキストの使用があります。使用しないと、スクリーン リーダーはイメージ ファイルを読み取ります。alt テキストが空の場合、スクリーン リーダーはイメージを正しくスキップします。

ASP.NET におけるユーザー補助機能

ほとんどの場合、ASP.NET コントロールは、ユーザー補助標準を満たすページをもたらすマークアップを表示するか、またはページがユーザー補助機能を備えるように設定できるプロパティを公開します。ただし、ASP.NET コントロールは一部のユーザー補助標準には準拠しない出力を表示する場合があります。詳細については、「ASP.NET コントロールとユーザー補助」を参照してください。

ユーザー補助をサポートする一般的なコントロールの機能

一般に、ASP.NET コントロールは次の方法でユーザー補助要件を満たします。

  • 非テキスト要素に相当するテキストの指定方法を提供します。

  • 色の依存関係は使用しません。

  • テーブルにキャプションおよびテーブルの列ヘッダーを表示します。

  • div 要素を持つ fieldset 要素および legend 要素を表示します。

  • スタイル シートを使用しません。

  • スタイル プロパティを使用した配置をサポートします。

  • ラベルをコントロールに関連付けます。

  • たとえば、マウス クリック以外にも応答するスクリプトなど、デバイスに依存しないクライアント スクリプトを生成します。

キーボード アクセス

重要なユーザー補助機能に、ページ上の機能を代替の入力形式で利用できるようにする機能があります。具体的には、これは、マウスで実行できるすべての操作をキーボードでもできるようにすることを示します。

ASP.NET を使用すると、次の方法でキーボード サポートをページに組み込むことができます。

  • TabIndex プロパティを使用してコントロールのタブ オーダーを設定できます。

  • DefaultButton プロパティを設定して、フォーム コントロールまたは Panel コントロールに対して既定のボタンを指定できます。

  • SetFocus メソッドなどのメソッドを使用するか、またはフォームの DefaultFocus プロパティを設定して、入力コントロール上にフォーカスを設定します。

  • AccessKey プロパティを設定して、ボタン コントロールのアクセス キーを定義できます。

  • テキスト ボックスで Label コントロールを使用できます。これにより、テキスト ボックスのアクセス キーを定義できます。詳細については、「方法 : キャプションとして Label Web サーバー コントロールを使用する」を参照してください。

イメージと代替テキスト

ユーザー補助ガイドラインでは、ページ上の機能目的を持ったイメージ (データ コントロールで表示されるボタンやイメージのように動作するなど) に対して意味のある代替テキストを提供することを推奨しています。これにより、スクリーン リーダーがページ上の各イメージの目的を報告できます。イメージが装飾以外の機能目的を持っていない場合、スクリーン リーダーがそのイメージをスキップするように、代替テキストに空の文字列を設定する必要があります。

既定では、ImageImageButton、および ImageMap の各コントロールは意味のあるテキストを自動的に生成できないため、これらのコントロールは代替テキストを表示しません。代わりに、開発者がテキストを用意する必要があります。ユーザー補助チェッカーは、代替テキストがなくガイドラインに違反するイメージ コントロールにフラグを付けます。

イメージ コントロールに対して、次のいずれかを行う必要があります。

  • AlternateText プロパティを意味のあるテキストに設定します。

  • GenerateEmptyAlternateText プロパティを true に設定し、ASP.NET Image コントロールで空の文字列を代替テキストとして表示します。空の代替テキストは、ユーザー補助チェッカーにより、そのイメージが重要でないものとして意図的にマークされていると解釈されます。

固有のイメージまたはリンクを持つコントロール

TreeView コントロール、Menu コントロール、Web パーツ コントロールなど、一部のコントロールはマークアップの一部としてイメージまたはリンクを表示します。これらの場合、コントロールはそれぞれのイメージまたはリンクに対してその機能を説明する代替テキストを生成します。

たとえば、TreeView コントロールは、それぞれのノードの展開ボタンおよび折りたたみボタン用のイメージを表示します。TreeView コントロールは、ノードのテキストに基づいてこれらのイメージの代替テキストを生成します。既定では、テキスト "Start" が設定されたノードを展開するイメージの代替テキストは、"Expand Start" と表示されます。TreeView コントロールの ExpandImageToolTip プロパティおよび CollapseImageToolTip プロパティを設定すると、独自の代替テキストを指定できます。

同様に、[メニュー] コマンドでは、それが生成したリンクの代替テキストが、展開メニュー項目と折りたたみメニュー項目に表示されます。Web パーツ コントロール タイトル バーのボタンも同様に、それぞれのボタンの機能を説明する代替テキストが表示されます。

繰り返しリンクのスキップ

スクリーン リーダーなどの補助技術デバイスは、ページ上のすべてのリンクをページに表示される順序で列挙する必要があります。Web サイトのすべてのページの先頭に表示されるマスタ ページ内のメニューなどでは、スクリーン リーダーがページの主要内容に到達するまでに各ページ上のすべてのエントリを読み取ることが必要になる場合があります。このような場合、ユーザー補助ガイドラインでは、繰り返しリンクのリストをユーザーがスキップする方法を用意することを推奨しています。次のコントロールには、繰り返しリンクをスキップする方法が実装されています。

これらの各コントロールは、SkipLinkText プロパティをサポートします。このプロパティが文字列 (任意のテキストを格納可能) に設定されている場合、代替テキストを持つ非表示の .gif イメージが含まれたリンクの前に、コントロールがアンカーを表示します。既定では、代替テキストは "Skip Navigation Links" ですが、このテキストは独自に設定できます。アンカーは、そのコントロールに続く別のアンカーにリンクします。これにより、スクリーン リーダーおよび類似の技術で、コントロールが生成しページのビジュアル表示に視覚的な影響を与えないリンクをユーザーがスキップできるようになります。SkipLinkText プロパティが空の文字列に設定されている場合、コントロールはアンカー タグを表示しません。

テーブルを表示するコントロール

ユーザー補助ガイドラインでは、HTML テーブルに次のことを含めるよう推奨しています。

  • 補助技術がテーブルの目的を識別するために役立つキャプション

  • 列ヘッダーを識別する方法

Table コントロールを使用してテーブルを作成する場合、その Caption プロパティを明示的に設定できます。TableSection プロパティを TableRowSection クラスの TableHeader 列挙体に設定すると、TableHeaderRow クラスを使用してテーブル ヘッダーを作成できます。これにより、テーブルに thead 要素が表示されます。TableCell コントロールでセルを作成すると、そのセルの各 AssociatedHeaderCellID プロパティをテーブル ヘッダー セルの ID に設定できます。これにより、そのセルを対応する列見出しに関連付ける header 属性がセルに表示されます。

次の ASP.NET サーバー コントロールで HTML テーブルを表示できます。

これらのコントロールで Caption プロパティおよび CaptionAlign プロパティを設定すると、生成されるテーブルの推奨キャプションを作成できます。

これらのコントロールに対して UseAccessibleHeader プロパティを設定すると、そのコントロールは列ヘッダーを識別する scope 属性を持った th 要素を表示します。

その他の 2 つのコントロール、DataList コントロールおよび Repeater コントロールは、thead 要素および th 要素を自動的には表示しません。ただし、これらのコントロールに対してヘッダー テンプレートを定義できます。DataList コントロールでは、ヘッダー テンプレートで th 要素が表示されます。Repeater コントロールはマークアップを自動的には表示しないため、マークアップを指定できる、ヘッダー、本文、およびフッターの各テンプレートをそのコントロールに定義します。Repeater コントロールで HTML テーブルが表示されるように指定する場合は、ユーザー補助標準を満たす適切なマークアップを含める必要があります。

div 要素を表示するコントロール

ユーザー補助ガイドラインでは、長いフォームを複数のセクションに分割して簡単に移動できるようにすることを推奨しています。HTML 4.0 では fieldset 要素および legend 要素が導入され、Web ページ開発者がフォームを複数のセクションに分割できるようになりました。

ASP.NET では、Panel コントロールを使用して、フォームにサブ区分を作成できます。このコントロールの GroupingText プロパティを文字列に設定すると、Panel コントロールが、コンテンツ用の fieldset 要素および GroupingText プロパティで使用した文字列を持つ legend 要素が含まれた div 要素を表示します。

一部の Web パーツ コントロールは、div 要素も表示します。これらのコントロールは、fieldset 要素および legend 要素を自動的に表示します。

検証コントロール

多くの Web ページでは、入力が必要なときやユーザーが入力したデータにエラーがあった場合に、テキスト ボックスにの横にアスタリスク (*) が表示されます。アスタリスクは意味を持たないため、検証コントロールの Text プロパティおよび ErrorMessage プロパティに意味のあるエラー メッセージを常に指定する必要があります。

さらに、検証コントロールでは、クライアント スクリプトを無効にする (EnableClientScript=false) 必要があります。

ログイン コントロール

LoginChangePasswordPasswordRecoveryCreateUserWizard の各コントロールなどのログイン コントロールには、LabelTextBox コントロールや検証コントロールなどのその他のコントロールが含まれます。ログイン コントロールは、表示する内容を Web ページ開発者が直接制御するとは限らないため、ユーザー補助を考慮してデザインされています。たとえば、このコントロールは次の動作でユーザー補助をサポートします。

  • 関連するラベルをテキスト ボックスに表示します。

  • 入力コントロールにタブ インデックスを設定します。

ただし、これらのログイン コントロール用のテンプレートを作成する場合は、そのコントロールがユーザー補助ガイドラインに準拠するようにテンプレートでコントロールを設定する必要があります。

クライアント スクリプトと ASP.NET サーバー コントロール

WCAG 標準では、マウスのロールオーバーなど必須ではない効果のみの機能目的に対して、ページでクライアント スクリプトを使用しないことを推奨しています。508 条のガイドラインでは、クライアント スクリプトで返される値で補助技術が動作できる場合には、そのスクリプトの使用を許可しています。

いくつかの ASP.NET Web サーバー コントロールがクライアント スクリプトを使用しています。この例を次に示します。

  • LinkButton コントロールおよび ImageButton コントロールには、ポストバックを実行するクライアント スクリプトが必要です。

  • Calendar コントロールには、日付リンクのクリックをサポートするクライアント スクリプトが必要です。

  • Web パーツ コントロールは、終了、最小化、および編集へのリンクのためのクライアント スクリプトを使用します。

クライアント スクリプトを使用するすべてのコントロールの一覧については、「クライアント スクリプトを使用する ASP.NET Web サーバー コントロール」を参照してください。

したがって、クライアント スクリプトが必要なコントロールをページ上で使用する場合、そのページは WCAG 標準には準拠しません。Web アプリケーションが完全に WCAG 標準に準拠する必要がある場合、クライアント スクリプトを使用するコントロールはページ上で使用できません。ただし、これらのコントロールは、ページでのクライアント スクリプトの使用に関する 508 条の条項には準拠しています。

参照

概念

ASP.NET コントロールとユーザー補助