<aside>要素 — 補足コンテンツ・Sectioning・Complementary Mapping
Technical Summary
asideは、周囲の内容に関連し、そこから分けても意味を保つ内容の区分です。印刷物のサイドバーのように表されることがありますが、配置やCSS上の形ではなく、内容と周囲の本文との関係で選びます。括弧書きだけをasideにするのは適切ではありません。
HTML上ではFlow content・Sectioning content・Palpable contentに属し、content modelはFlow content、DOM interfaceはHTMLElementです。HTML-AAM 1.0 Working Draftは、asideのrole mappingをancestor contextによって区別します。body / mainの範囲ではcomplementary、Sectioning content内ではaccessible nameがあればcomplementary、なければgenericです。
仕様上の定義と分類
HTML Living Standardは、asideを「周囲の内容と関連するが、そこから分けてもよい内容を含むページ内の区分」と定義します。仕様が挙げる使い方には、補足説明、引用の抜粋、広告、サイドバー、複数のnavのグループがあります。これは列挙された表示用途をすべてasideにすべきという意味ではなく、各内容が周囲の本文から独立した補足として成り立つかを確認します。
| 項目 | 仕様上の定義 | 確認点 |
|---|---|---|
| Categories | Flow content / Sectioning content / Palpable content | 文書内のsectionを作る要素に含まれる |
| Context | Sectioning contentが使用できる場所 | HTMLの親要素に応じたcontent modelも確認する |
| Content model | Flow content | 本文の要素を含められる。子孫のHTML適合性は各要素の規則にも従う |
| Tag omission | 開始タグ・終了タグとも省略できない | 省略形はHTML適合ではない |
| DOM interface | HTMLElement | aside固有のinterfaceは定義されていない |
section・article・figureとの境界
asideとほかのsectioning content要素の区別は、見た目やサイズではなく、まとまりの役割で行います。要素間の組み合わせは排他的ではありません。たとえば、articleの中に、その記事の補足としてasideを含められます。
| 要素 | 仕様上の意味 | asideとの区別 |
|---|---|---|
aside | 周囲と関連し、分けても意味を保つ内容 | 主な内容を補うまとまり |
article | 独立して配布・再利用できる完結した内容 | 内容自体を独立した記事として扱う |
section | 文書またはアプリケーション内のテーマ上の区分 | 本文の構成に含まれる一つの話題 |
nav | ページまたは他ページへ移動するためのリンクの区分 | 主要なナビゲーションリンクを含む場合に使う |
figure | 自己完結した図・コード例など | 本文の中心または説明対象となる図を表す |
div | 特別な意味を追加しない一般的な区分 | 補足という意味がなく、グループ化だけが必要 |
仕様例にサイドバーがあることは、レイアウト上横に置く内容なら何でもasideであることを意味しません。CSSで位置を変更しても、HTML上の意味は変わりません。本文の言い換えや文の一部となる括弧書きは本文の流れに残します。
使用例と意味的な範囲
<main>
<h1>山の天気を調べる</h1>
<article aria-labelledby="forecast-title">
<h2 id="forecast-title">午後の予報</h2>
<p>午後は風が強くなる予報です。</p>
<aside aria-labelledby="wind-note-title">
<h3 id="wind-note-title">風について</h3>
<p>山頂付近では、平地より風が強く感じられます。</p>
</aside>
</article>
</main>
この例では、articleが一つの予報を表し、asideが予報本文を補う説明を表します。CSSの配置を追加しなくても、これらのHTML上の意味は成立します。aria-labelledbyは、画面に表示される見出しをasideのaccessible nameに結び付けます。
asideは表示・非表示、折りたたみ、左右配置、検索登録などを実行する機能ではありません。それらが必要な場合は別のHTML・CSS・JavaScript上の仕組みを実装します。
Contextによるrole mapping
HTMLの意味的な定義と、支援技術に公開されるroleは別の層です。HTML-AAM 1.0 Working Draft(2026-10-12)は、asideのsectioning scopeを次のように分けています。これはWorking Draftの内容であり、すべてのブラウザーやOSの観測結果を示すものではありません。
| ancestor context | accessible name | HTML-AAM 1.0 WDのrole |
|---|---|---|
bodyまたはmainのscope | 有無を問わない | complementary |
article・aside・nav・sectionのscope | 名前あり | complementary |
article・aside・nav・sectionのscope | 名前なし | generic |
accessible nameの候補には、aria-labelledbyで参照した表示テキスト、空でないaria-label、空でないtitleなどがあります。実際のname計算はHTML-AAMとAccessible Name仕様に従います。sectioning scopeにある名前なしのasideをgenericにするmappingは、DOMの要素名が変わるという意味ではなく、Accessibility Tree上のroleに関する条件です。
WPTのroles-contextual.htmlは、名前なし・名前ありのaside、空のlabel、無効なaria-labelledby参照、titleを含む例を検査します。別のWPTは、名前空間にprefixを持つarticleの中でasideを検査します。対象ファイルと実行結果はImplementation Evidenceに固定版で記録します。
Accessible nameとlandmarkの使い方
complementaryは、主コンテンツを補う領域を示すlandmark roleです。WAI-ARIA APGは、補足領域が主コンテンツと同じ階層で読め、分けても意味が通じるものかを確認するよう説明します。Complementary landmarkは原則として他のlandmarkの内側に置かないこと、同じページに複数ある場合はそれぞれに異なるlabelを付けることも推奨しています。
HTML-AAMのmapping条件を満たすことと、ページ上でlandmarkを追加する設計が望ましいことは同じ判断ではありません。特に、aria-labelを追加する前に、そのasideをランドマークとして個別に移動できるようにする必要があるか確認します。名前のないasideが常に不足というわけではありません。
<aside aria-labelledby="weather-note-title">
<h2 id="weather-note-title">予報の見方</h2>
<p>降水確率は、指定された時間内に雨が降る可能性を表します。</p>
</aside>
見出しがaccessible nameとして使われるのは、aria-labelledbyの参照があるためです。見出しを置くだけで常にlandmark nameになるわけではありません。landmarkが一つだけのページと複数あるページで、labelの必要性も異なります。
Fact / Evidence
| 種別 | 主張 | 検証範囲 | 状態 | 参照 |
|---|---|---|---|---|
| SPEC | asideは周囲と関連し、分けてもよい内容のsectionを表す。CategoriesはFlow / Sectioning / Palpable content。 | HTML Living Standardの定義、分類、例、parentheticalの注意。 | 仕様確認済み | HTML Standard: aside |
| SPEC | asideのcontext・content model・tag omission・DOM interfaceはHTML Standardが定める。 | aside要素のtechnical definition。 | 仕様確認済み | HTML Standard: aside element details |
| AAM | HTML-AAM WDはbody / main scopeとsectioning content scopeのasideを区別し、後者のroleはaccessible nameの有無で変わる。 | HTML-AAM 1.0 Working Draft 2026-10-12。WD上のmapping。 | 文書上のmapping確認済み | HTML-AAM: aside |
| AAM | Complementary landmarkの目的、階層、複数landmarkのlabel方針はWAI-ARIA APGが説明する。 | Authoring Practicesのlandmark guidance。HTML-AAMのnormative mappingとは区別。 | 指針確認済み | WAI-ARIA APG: Landmark Regions |
Evidence sources
- HTML Living Standard: The aside element — categories, context, content model, definition, examples, and authoring note.
- HTML Accessibility API Mappings 1.0 Working Draft, 12 October 2026: aside — context-sensitive role mapping.
- WAI-ARIA Authoring Practices Guide: Landmark Regions — complementary landmark purpose, hierarchy, and labels.
- WAI-ARIA 1.2: complementary role — role definition.
- WPT html-aam/roles-contextual.html at the tested revision — contextual and named role cases.
- WPT html-aam/aside-in-prefixed-article.html at the tested revision — aside in an article whose HTML element has a namespace prefix.
Implementation Evidence
2026-11-04にChromium 156で日英4ページとasideのDOM fixtureを観測しました。固定したWPTの2ファイルは合計34/39項目がpassし、asideに関する20項目では19/20がpassしました。残るasideの1項目は、Sectioning content内でtitle=""を持つasideのroleです。WPTはgenericを期待しますが、ChromiumのAccessibility Treeは名前が空のcomplementaryを返しました。ほかに画像関連3項目とsectionの1項目が失敗しましたが、asideの結果とは分けて記録しています。role取得にはPlaywright / Chrome DevTools Protocol adapterを使いました。公式wptrunner / WebDriver実行ではありません。
| 種別 | 再現確認の範囲 | 記録する条件 | 状態 |
|---|---|---|---|
| IMPL | Yugien / Atlasの日英4ページ、検索・言語切替・同一originのroute、responsive widths、system / light / dark theme、ページのDOM構造 | 2026-11-04 JST / Windows 11 / Google Chrome 156.0.8078.74 / Playwright 1.62.1 / DPR 1 / local loopback。4ページすべてHTTP 200。canonical、ja/en hreflang、surface navigation、検索リンク、同一originの内部routeを確認。route failure、fragment欠落、console error、local resource failureなし。幅320 / 390 / 768 / 1280 / 1920 CSS pxで横はみ出しなし。system preferenceをlight / darkに切り替え、各themeのCSS背景色(light rgb(245, 241, 232) / dark rgb(27, 32, 30))と明示的なlight / darkを確認。検索indexには日英のaside Topicが2 record登録され、/search/?q=asideにAtlasとYugienおよび反対言語ページへのリンクが表示された。DOM fixtureの構造検査16項目pass。詳細: build-config/yugien/research-results/aside-v1/browser-report.json。 |
部分観測(Chrome 156 / 4ページ / 5幅 / 4 theme states) |
| WPT | HTML-AAMのaside contextual role、Sectioning content内のaccessible name、名前空間prefix付きarticle内のasideに関する選定WPT | 2026-11-04 JST / Google Chrome 156.0.8078.74 / WPT revision 5b11a9b4169aba2d11f33d787c88222bf9f017c3。html-aam/roles-contextual.html: 33/38 pass、5 fail。aside assertionsは18/19 pass。aside内の空titleの1項目でWPTはgenericを期待するが、Chrome CDPは空名のcomplementaryを返した。ほかのfailはimg 3項目とsection 1項目。html-aam/aside-in-prefixed-article.html: 1/1 pass。2ファイル合計34/39 pass、aside関連19/20 pass。固定版testharnessをローカル実行し、test_driver.get_computed_roleとget_computed_labelにPlaywright / CDP adapterを使用。公式wptrunner / WebDriver実行ではない。詳細: build-config/yugien/research-results/aside-v1/wpt-report.json。実行したテストの版: |
34/39 pass・aside 19/20 pass(選定2 files / Chrome 156) |
| AAM | asideのancestor contextとaccessible nameに応じたrole / name、およびprefix付きarticle配下のasideのChrome Accessibility Tree | 2026-11-04 JST / Google Chrome 156.0.8078.74 / Playwright 1.62.1 / Chrome DevTools Protocol Accessibility.getPartialAXTree。body / main scopeのasideは名前の有無にかかわらずcomplementary。article / section / aside scopeでは、無名はgeneric、aria-label / aria-labelledby / 空でないtitleがある例はcomplementaryになった。空 / whitespaceのaria-label、未解決aria-labelledby、名前のない入れ子aside、prefix付きarticle内asideはgeneric。一方、Sectioning content内でtitle=""のasideは空nameのcomplementaryとなり、HTML-AAM 1.0 WD 2026-10-12を反映したWPTの期待するgenericと異なる。別のaside scopeのfixtureでも同じ空name / complementaryを観測。これはChromium Accessibility Treeのみの結果で、OS accessibility API、Firefox / Safari、読み上げ・点字は未測定。詳細: build-config/yugien/research-results/aside-v1/browser-report.jsonとdocs/atlas/aside-evidence-2026-11-04.md。 |
部分観測・WPTとのrole差あり(Chrome Accessibility Tree) |
Coverage / Open Issues
- 仕様確認済み定義、categories、context、content model、sectioning elementsとの境界、HTML-AAM WD mapping、Complementary landmark guidance
- 実測した範囲4つの日英ページ、5つの画面幅、system/light/darkの4状態、Chromium Accessibility Tree、固定WPT 2ファイル(aside項目19/20 pass)
- 未解決の差sectioning scope内で
title=""のaside: WPTはgenericを期待するが、Chrome 156のAX Treeは空名のcomplementaryを返す - 未完了Firefox・Safari、Windows UI Automation / IAccessible2、macOS AX / ATK、読み上げと点字、WPT全体、HTML-AAMの全条件
この記録は一つのブラウザーと選定したWPTの結果に限られます。Accessibility TreeはプラットフォームAPIそのものではなく、支援技術の発話や利用者の理解も測定していません。部分観測を他ブラウザー・OSの適合性へ一般化しません。