この記事は最終更新日から1年以上経過しています。

アクセシビリティ試験をサポートするランダムURL選択ツール

公開日:

更新日:

スタッフブログ

こんにちは。田村です。

ウェブアクセシビリティ試験実施時に使えるURLをランダムに選択するツールを作成しました。

ウェブアクセシビリティ試験を実施する際は、ウェブページ代表するページとランダムなページを選ぶことが多い印象です。
デジタル庁の試験実施リストをみてみるとこのような感じで選択されています。
ウェブアクセシビリティ検証結果 試験実施ページリスト

弊社もサンプルページを用意していますのでよろしければご覧ください。
WCAG AA準拠サイト作成のためのスタイルガイドライン


具体的には、アクセシビリティ試験を「ウェブページ一式単位での試験」で実施する場合、次のような形で40ページ〜50ページを選択する必要があります。
JIS X 8341-3:2016 試験実施ガイドライン

a) 全てのウェブページを選択する場合
b) ランダムに選択する場合
c) ウェブページ一式を代表するウェブページを選択する場合
d) ウェブページ一式を代表するウェブページとランダムに選択したウェブページとを併せて選択する場合

ここでいう「d」を選ぶことが多い印象です。


d ランダムに選択する場合 代表するウェブページを選択する場合
例1 25ページ 15ページ
例2 40ページ 10ページ
例3 25ページ 35ページ

また、アクセシビリティ試験後に修正を行い、再度試験を実施する場合も、再度ランダムに選ばれたページを使用しないと、準拠しているとは言えません。

ランダムに選んだ試験対象の特徴に関する質問
試験対象のページの選出理由の妥当性
試験で問題が発見された場合の対応

そこで、以下の情報を入力することで、重複のないランダムURLを選択し、特定のページを除外することができます。

  • 対象となるURLを入力
  • ウェブページ一式を代表するウェブページを入力
  • ランダムに選択する数

ランダムにURLを選択したい場合に使ってみてください。

対象となるURLを入力

行数: 0

ウェブページ一式を代表するウェブページを入力

行数: 0

ランダムに選択する数を入力

この記事をシェアする

関連記事

この記事のハッシュタグ #Accessibility #便利ツール から関連する記事を表示しています。

アクセシビリティ方針ジェネレーター

こんにちは。田村です。 ウェブアクセシビリティ方針作成時に使えるジェネレーターを作成しました。 このツールを活用することで、ウェブアクセシビリティ方針の作成が効率的に行えるようになります。ぜひご活用ください。 ウェブアクセシビリティ方針策定ガイドライン 『JIS X 8341-3:2016』の要件としては、「対象範囲」と「適合レベル及び対応」を明記する必要があります。 また、要件にはありませんが、次の事項も明記しておくと良いでしょう。 必要に応じて追加してください。 - 目標を達成する期限 - 満たすことのできない達成基準 - 追加で目標とする達成基準 - 担当部署名 - 連絡手段(電話番号、Eメールアドレス等) - 把握している問題点及びその対応に関する考え方 - 試験結果を表示しているページへのリンク このツールでは次の項目を生成することができます。 - 対象範囲 - 目標とする適合レベル及び対応度 - 達成期限 - 例外事項 - お問い合わせ先 弊社でもサンプルページを用意しておりますので、ご参照ください。 ウェブアクセシビリティ方針(サンプル) ツールの使い方 使い方は、次の入力フィールドの項目を入力し、 「出力」ボタンを押すと項目に沿ったアクセシビリティ方針が表示されます。 表示された方針は「contenteditable="true"」が設定されているため、見た目を保持したまま直接修正することが可能です。 その後、「コードを表示」ボタンをクリックすると、HTML形式のアクセシビリティ方針が表示されます。 対象範囲 - ウェブサイトドメイン 目標とする適合レベル WCAG 2.0 WCAG 2.1 WCAG 2.2 目標とするレベル レベルA レベルAA レベルAAA 対応度 準拠 一部準拠 配慮 例外事項を表示する 表示する 達成期限 お問い合わせ部署 電話番号 受付可能時間 お問い合わせフォームURL 出力 ここに方針が表示されます。 コードを表示 const form = document.getElementById('policyForm'); const preview = document.getElementById('policyPreview'); const codeDisplay = document.getElementById('codeDisplay'); function formatDate(dateString) { const date = new Date(dateString); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, '0'); // 月は0から始まるので+1 const day = String(date.getDate()).padStart(2, '0'); return `${year}年${month}月${day}日`; } function generatePolicy() { const websiteDomain = form.websiteDomain.value || "『ドメイン』"; const complianceStandard = form.complianceStandard.value || "『目標基準』"; const complianceLevel = form.complianceLevel.value || "『目標レベル』"; const conformance = form.conformance.value || "『対応度』"; const deadline = form.deadline.value ? formatDate(form.deadline.value) : "『達成期限』"; const contactFormUrl = form.contactFormUrl.value; const department = form.department.value || "『お客様相談室』"; const phone = form.phone.value || "『電話番号』"; const businessHours = form.businessHours.value || "『受付可能時間』"; const showExceptions = form.exceptions.checked; // 基本のポリシー HTML テンプレート let policyHTML = ` ウェブアクセシビリティ方針 対象範囲 当社ウェブサイト(${websiteDomain}ドメイン配下にあるウェブサイト)とします。 目標とする適合レベル及び対応度 対象範囲に定義したウェブサイトについて、日本産業規格「JIS X 8341-3:2016 」及び${complianceStandard}、${complianceLevel}に${conformance}を目標としています。 本方針における「準拠・一部準拠・配慮」という対応度の表記は、情報通信アクセス協議会ウェブアクセシビリティ基盤委員会「ウェブコンテンツのJIS X 8341-3:2016 対応度表記ガイドライン – 2021年4月版」で定められた表記によるものです。 `; // 例外事項がオンの場合のみ表示 if (showExceptions) { policyHTML += ` 例外事項 以下は修正対応が困難であるため、目標の対象外とし、代替する手段で内容を説明するよう努めるものとします。 外部から提供されたコンテンツ、ウェブページ、画像、動画、PDF、SVG、表計算や文書作成ソフトで作成したデータ等 `; } policyHTML += ` 目標達成期限 ${deadline} お問い合わせ先 ${department}電話番号:${phone}受付可能時間:${businessHours} `; // お問い合わせフォームの URL が入力されている場合のみ追加 if (contactFormUrl) { policyHTML += ` ウェブアクセシビリティに関するご意見やお気づきの点がございましたら、お問い合わせフォームよりご連絡ください。 `; } preview.innerHTML = policyHTML; } function showCode() { // `policyPreview` の現時点の HTML を取得して `codeDisplay` に表示 codeDisplay.textContent = preview.innerHTML; codeDisplay.style.display = 'block'; // 選択可能にする const range = document.createRange(); range.selectNodeContents(codeDisplay); const selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); }

スタッフブログ

アクセシビリティ達成基準チェックリストツール

こんにちは。田村です。 ウェブアクセシビリティ試験実施時に使える達成基準チェックリストのテーブル作成ツールを作成しました。 このツールを活用することで、達成基準チェックリストの作成が効率的に行えるようになります。ぜひご活用ください。 JIS X 8341-3:2016 試験実施ガイドライン JIS X 8341-3:2016 試験実施ガイドライン(達成基準チェックリストの例) 弊社でもサンプルページを用意しておりますので、ご参照ください。 ウェブアクセシビリティ検証結果(サンプル) ツールの使い方 使い方は、達成基準の「A, AA, AAA」を選択し、「出力」ボタンを押すと、達成基準チェックリストのテーブルが表示されます。 表示されたテーブルは「contenteditable="true"」が設定されているため、見た目を保持したまま直接修正することが可能です。 「適用」欄に「○」や「-」など「結果」欄に、「○」や「×」を入力することができます。 その後、「コードを表示」ボタンをクリックすると、HTML形式のテーブルが表示されます。 アクセシビリティ実装チェックリスト このテーブルはブラウザ上から直接修正できます。 「適用」の欄は、適用する達成基準を「○」、適用しない達成基準を「-」など、 「結果」の欄は、検証の結果、適合している達成基準を「○」、適合していない達成基準を「×」などを入力してみてください。 .c-table th,.c-table td{ font-size:12px } A AA AAA 出力 達成基準チェックリスト 達成基準 適合レベル 適用 結果 注記 コードを表示 const checklistData = [ {criteria: "1.1.1 非テキストコンテンツの達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.2.1 音声だけ及び映像だけ(収録済み)の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.2.2 キャプション(収録済み)の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.2.3 音声解説又はメディアに対する代替コンテンツ(収録済み)の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.2.4 キャプション(ライブ)の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "1.2.5 音声解説(収録済み)の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "1.2.6 手話(収録済み)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "1.2.7 拡張音声解説(収録済み)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "1.2.8 メディアに対する代替コンテンツ(収録済み)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "1.2.9 音声だけ(ライブ)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "1.3.1 情報及び関係性の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.3.2 意味のある順序の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.3.3 感覚的な特徴の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.4.1 色の使用の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.4.2 音声の制御の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "1.4.3 コントラスト(最低限レベル)の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "1.4.4 テキストのサイズ変更の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "1.4.5 文字画像の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "1.4.6 コントラスト(高度レベル)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "1.4.7 小さな背景音,又は背景音なしの達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "1.4.8 視覚的提示の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "1.4.9 文字画像(例外なし)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.1.1 キーボードの達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.1.2 キーボードトラップなしの達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.1.3 キーボード(例外なし)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.2.1 タイミング調整可能の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.2.2 一時停止,停止及び非表示の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.2.3 タイミング非依存の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.2.4 割込みの達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.2.5 再認証の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.3.1 3回のせん(閃)光,又はしきい(閾)値以下の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.3.2 3回のせん(閃)光の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.4.1 ブロックスキップの達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.4.2 ページタイトルの達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.4.3 フォーカス順序の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.4.4 リンクの目的(コンテキスト内)の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "2.4.5 複数の手段の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "2.4.6 見出し及びラベルの達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "2.4.7 フォーカスの可視化の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "2.4.8 現在位置の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.4.9 リンクの目的(リンクだけ)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "2.4.10 セクション見出しの達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "3.1.1 ページの言語の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "3.1.2 一部分の言語の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "3.1.3 一般的ではない用語の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "3.1.4 略語の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "3.1.5 読解レベルの達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "3.1.6 発音の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "3.2.1 フォーカス時の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "3.2.2 入力時の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "3.2.3 一貫したナビゲーションの達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "3.2.4 一貫した識別性の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "3.2.5 要求による変化の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "3.3.1 エラーの特定の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "3.3.2 ラベル又は説明の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "3.3.3 エラー修正の提案の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "3.3.4 エラー回避(法的,金融及びデータ)の達成基準", level: "AA", apply: "", result: "", note: ""}, {criteria: "3.3.5 ヘルプの達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "3.3.6 エラー回避(全て)の達成基準", level: "AAA", apply: "", result: "", note: ""}, {criteria: "4.1.1 構文解析の達成基準", level: "A", apply: "", result: "", note: ""}, {criteria: "4.1.2 名前(name),役割(role)及び値(value)の達成基準", level: "A", apply: "", result: "", note: ""} ]; function filterChecklist() { const selectedLevels = []; if (document.getElementById("levelA").checked) selectedLevels.push("A"); if (document.getElementById("levelAA").checked) selectedLevels.push("AA"); if (document.getElementById("levelAAA").checked) selectedLevels.push("AAA"); const filteredData = checklistData.filter(item => selectedLevels.includes(item.level)); return filteredData; } function generateTable() { const filteredData = filterChecklist(); const tableBody = document.getElementById("checklistTableBody"); tableBody.innerHTML = ""; filteredData.forEach(item => { const row = document.createElement("tr"); row.innerHTML = ` ${item.criteria} ${item.level} ${item.apply} ${item.result} ${item.note} `; tableBody.appendChild(row); }); document.getElementById("showCodeButton").style.display = filteredData.length > 0 ? "block" : "none"; } function toggleCodeDisplay() { const codeDisplay = document.getElementById("codeDisplay"); codeDisplay.style.display = (codeDisplay.style.display === 'block') ? 'none' : 'block'; if (codeDisplay.style.display === 'block') { codeDisplay.textContent = getCurrentTableHtml(); selectText(codeDisplay); } } function getCurrentTableHtml() { const tableBody = document.getElementById("checklistTableBody"); const rows = Array.from(tableBody.rows); let htmlString = "\n\n\n達成基準\n適合レベル\n適用\n結果\n注記\n\n\n\n"; rows.forEach(row => { htmlString += "\n"; Array.from(row.cells).forEach(cell => { htmlString += `${cell.textContent}\n`; }); htmlString += "\n"; }); htmlString += "\n"; return htmlString; } function selectText(element) { const range = document.createRange(); range.selectNodeContents(element); const selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); }

スタッフブログ