ドラッグアンドドロップ

Drag and drop

別名: ドラッグ&ドロップ、D&D、DnD、Drag and drop

生態(さわってみる)

ドラッグ、またはキーボードで「項目を選択(Enter/Space)→↑↓キーで移動→再度Enterで確定」の操作で並び替えられます。

  1. 項目A:要件定義
  2. 項目B:設計
  3. 項目C:実装
  4. 項目D:テスト
  5. 項目E:リリース

一言定義

要素を掴んで移動し、別の位置や領域に離すことで並び替え・移動・投入を行う汎用的な操作パターン。

分類

使う場面

  • リストやカードの並び順を、視覚的な操作で直感的に変更させたいとき
  • カンバンボードのように、要素を別の領域(列)へ移動させる操作を主手段としたいとき

避ける場面

  • アップロード専用の受け皿が必要なだけのとき(→ドロップゾーン、より特化した用途)
  • ドラッグ操作に不慣れなユーザーやキーボード・スクリーンリーダー利用者を主要な利用者に含むとき(キーボード代替の実装コストを常に見込む)

近縁種との比較

ドラッグアンドドロップは要素の並び替え・移動全般を指す最も汎用的な操作パターンで、カンバンボードドロップゾーンはこの汎用パターンを特定用途に特化させた具体例として位置づけられる。カンバンボードは「状態」という1つの軸に沿ってタスクカードを列間で移動させる用途に特化し、ドロップゾーンはファイルをドロップしてアップロードする用途に特化する。汎用のドラッグアンドドロップ自体を単体のUIとして扱う場面としては、単純なリストの並び替え(優先順位の入れ替え等)が代表例になる。いずれの特化形であっても、ドラッグ操作だけを唯一の手段にするとキーボード・スクリーンリーダー利用者が操作できなくなるため、選択→移動先指定→確定という代替経路を必ず用意する点は共通する。

実例リンク

アクセシビリティ

role
並び替え対象のリストはlist/listitemとしてマークアップする。HTML5 Drag and Drop APIはマウス操作前提でスクリーンリーダーからは扱えないため、キーボード代替を必ず実装する
キーボード操作
項目をEnter/Spaceで「選択」状態にし、↑↓キーで移動先を選び、再度Enterで確定する操作系を用意する。移動結果はaria-live領域で「〇〇を3番目に移動しました」のように通知する
補足
「ドラッグできる」ことは完成の条件ではない。視覚的なドラッグ操作はあくまで手段の一つであり、キーボードのみでも同じ結果に到達できることが必須要件(本図鑑のデモも選択→矢印キー→確定の代替を実装している)