サイトアイコン IT & ライフハックブログ|学びと実践のためのアイデア集

UIモーションのアクセシビリティ設計|停止、代替、動作削減の実装ガイド

hands making clay pot on brown wooden table

Photo by Anastasia Shuraeva on Pexels.com

アニメーションは、操作の結果や画面の変化を伝える助けになります。
一方で、大きな移動、点滅、止められない自動再生は、めまい、注意散漫、発作リスク、情報の見落としにつながります。

モーションアクセシビリティとは、動きを見られない人や減らしたい人にも、同じ情報と操作手段を届ける設計です。
判断の軸は「何を伝える動きか」「止められるか」「動きがなくても伝わるか」の三つです。

最初に押さえる四つの判断

動きの目的を一文で説明できない場合は、削除しても操作や理解に影響しない可能性があります。
装飾として残すなら、利用者が減らせる状態を先に設計します。

WCAG 2.2で関係する基準

WCAG 2.2の基本を確認したうえで、モーションに直接関係する達成基準を分けて考えます。

達成基準 対象 設計で確認すること
2.2.2 一時停止、停止、非表示
レベルA
自動で始まり、一定時間を超えて他の内容と同時に表示される移動、点滅、スクロールなど 一時停止、停止、非表示の仕組みを提供できるか
2.3.1 3回の閃光、又は閾値以下
レベルA
発作を誘発するおそれのある閃光 1秒間に3回を超えていないか。超える場合は一般閃光と赤色閃光の閾値以下か
2.3.3 インタラクションによるアニメーション
レベルAAA
操作をきっかけに生じる不要不急のモーションアニメーション 機能や情報に不可欠でない動きを無効にできるか

点滅は「1秒間に3回以下なら常に安全」という意味ではありません。
レベルAの2.3.1には閃光の明るさや面積に関する閾値があり、判断が難しい場合は点滅そのものを避けるほうが確実です。

達成基準2.3.3の対象と実装は、「2.3.3 インタラクションによるアニメーション」の解説でも確認できます。

目的から動きと代替手段を決める

先にアニメーションの秒数やイージングを決めると、装飾が目的になりやすくなります。
画面が伝えるべき変化を特定し、動き、静的な手掛かり、操作方法を対応させます。

伝えたいこと 動きを使う例 動きを減らす場合の代替
要素が表示された 短いフェードで出現させる 即時表示し、見出しや枠線で位置を示す
操作が完了した 完了アイコンを一度だけ変化させる 「保存しました」と表示し、必要に応じて読み上げる
画面内の位置関係が変わった 短い距離を一方向に移動させる 見出し、現在位置、フォーカス移動で変化を示す
処理を待っている 控えめな進捗表示を使う 処理中であることをテキストで示す
装飾として印象を加える 小さく短い変化に限定する 静止状態でも見た目が成立するようにする

時間や移動距離に、すべてのUIへ適用できる万能な数値はありません。
画面サイズ、要素の大きさ、操作頻度、利用環境を踏まえ、短く予測しやすい初期値から実機で調整します。

体調と注意への負荷を減らす

大きな移動とズーム

画面の広い範囲が移動するパン、ズーム、視差表現は、前庭機能に関係する不快感のきっかけになることがあります。
位置関係を伝える必要があるときは、移動距離を短くし、フェードや静的な表示と組み合わせます。

点滅と反復

警告や注目を点滅だけで伝える設計は避けます。
アイコン、見出し、説明文を併用すれば、動きを止めても意味が残ります。
常に揺れるボタンや脈動する背景も注意を奪い続けるため、反復を止める条件を決めます。

音と振動

音や振動を組み合わせる場合も、一つの感覚だけを情報の受け取り口にしません。
ミュート、停止、強度の調整と、画面上のテキストを用意します。

prefers-reduced-motionを実装する

prefers-reduced-motionは、利用者が端末で動きを減らす設定を有効にしているかをCSSで受け取るためのメディア特性です。
この設定を検出したら、不要な移動や拡大縮小を止め、必要な状態変化は即時表示や穏やかな代替表現に置き換えます。

.dialog-panel {
  opacity: 1;
  transform: translateY(0);
  transition: opacity 180ms ease-out, transform 180ms ease-out;
}

.dialog-panel.is-entering {
  opacity: 0;
  transform: translateY(0.75rem);
}

@media (prefers-reduced-motion: reduce) {
  .dialog-panel {
    transform: none;
    transition: none;
  }

  .decorative-loop {
    animation: none;
  }
}

この180ミリ秒は実装例であり、推奨値を一律に示すものではありません。
通常表示と動作削減表示の両方で、内容が欠けず、操作結果が分かることを確認します。

すべての要素へ一括してanimation: noneを指定すると、進捗や状態変化まで見えなくなる場合があります。
止める対象と残す情報をコンポーネントごとに決めるほうが安全です。

場面別の設計ポイント

カルーセルとニュースティッカー

モーダルとオーバーレイ

フォーカス設計の詳しい確認方法は、キーボード操作とフォーカス表示の実務ガイドを参照してください。

トースト通知とエラー

ドラッグ操作と並べ替え

ドラッグだけに依存せず、「上へ移動」「下へ移動」などのボタンでも並べ替えられるようにします。
移動後は、新しい位置をテキストや読み上げで伝えます。

グラフと学習コンテンツ

描画アニメーションを見なくても値と関係を理解できるよう、見出し、凡例、データラベル、要約を残します。
チュートリアルでは、動かす対象を現在の手順に絞り、字幕や文章による手順も用意します。

短時間で行う実機テスト

  1. 通常設定で確認する:各モーションの目的を説明できるか、操作を待たせていないかを確認します。
  2. 端末の「動きを減らす」を有効にする:主要画面を巡回し、情報や操作が欠けていないかを確認します。
  3. キーボードだけで操作する:モーダル、カルーセル、通知、並べ替えを最後まで操作します。
  4. 読み上げを確認する:状態変化が伝わるか、同じ通知を重複して読まないかを確認します。
  5. 停止状態を保つ:自動再生を止めた後、別の操作や画面更新で意図せず再開しないかを確認します。

短時間の確認は見落としを減らす入口です。
公開後も変更のたびに試験対象へ戻せるよう、確認項目と担当を決めておきます。
継続的な確認の組み立て方は、Webアクセシビリティを継続改善する運用ガイドでも解説しています。

レビュー用チェックリスト

動きを減らしても情報は減らさない

アクセシブルなモーション設計は、アニメーションをすべて禁止することではありません。
目的のある動きだけを残し、停止手段と静的な代替を用意することで、動きを好む人にも減らしたい人にも操作結果を伝えられます。

設計、実装、実機テストを分けずに扱うことが、見た目だけでは発見しにくい問題を減らします。

この記事に関連する株式会社greedenの取り組み

動きを減らしても情報を欠かさない設計には、実装前の整理と継続的な確認が要ります。株式会社greedenは、Webアクセシビリティ支援を通じ、迷いにくく操作しやすいWebサイトづくりを後押しします。

モバイルバージョンを終了