列ヘッダーソート

一覧操作(Manipulator)において、リストの列ヘッダーをクリックしてソート順を変更できるようにする。
理由:複数列を持つ一覧(データグリッド)に期待される一般的な機能であり、ユーザーがデータの並び順を自由に変更して目的の情報を得られるようにするため。

図例
列ヘッダーソート

効能

  • たくさんのオブジェクトがリストされ、それぞれが持つ複数の属性が列として見えている場合、ユーザーが各属性の値で一覧をソートし、降順と昇順を切り替えて見ることができれば、ひとつの一覧から様々な情報を得ることができる
  • 一覧の外に「○○順に並べ替え」といったボタン/リンクを配置する方法もあるが、列ヘッダーソートは GUI において一般的に期待される操作方法なので、なるべく実現させるとよい。

用法

  • 複数の列をもつリストにおいて、一行目に列ヘッダーを配置する。各列の列ヘッダーをクリック可能にし、クリックされた列の値でリストをソートする。
  • 同じ列ヘッダーのクリックによって、トグル式に昇順と降順が切り替わるようにする。
  • ソートされている列の列ヘッダーには、それと分かるように視覚的な手がかりを与える。ハイライト(反転)表示にしたり、色をつけたりするなど。その列全体に淡く色をつけてもよい。
  • ソートされている列の列ヘッダーのラベルの右には、昇順降順を表す上下向きの三角を表示する。
  • ある列をソートした後に他の列をソートした場合、もしその列の値として複数の項目が同じ値を持っていたら、新しい並び順の中で前回の並び順が残されるようにする。例えば商品リストにおいて、名前でソートした後に価格でソートした場合、同じ価格の商品同士の中では名前順に並んでいるようにする。
  • ソートは、列の値である文字列を文字コード順に並べることを意味する。ただし、日付、曜日、時刻、金額など、表示されている文字列と、連続量としての値の意味とが異なる場合は、値の意味として正しくソートされるようにする。例えば、「曜日」という列の値として「日月火水木金土」があった場合、単に文字コードでソートすると「土日月木水火」の順に並んでしまう。この問題を回避するには、内部的にソート基準にするための別な配列を持つ必要がある。連続量に限らず、「ステータス」やアイコンなど、任意に順序を付ける必要がある場合も同様。

蘊蓄

Windows のエクスプローラでは、あるディレクトリにフォルダと書類が混在している場合、それらを「名前」でソートすると、フォルダと書類がグループ化された状態での「名前」ソートとなる(フォルダがまず上部に並ぶ)。これはあまり意味がある仕様とは思えない。単純に名前を手がかりに探したいという希望にそっていないし、フォルダがたくさんある場合には書類がスクロールの彼方に行ってしまうので、その存在が気づかれない恐れがある。また「種類」でのソートと機能的に重複している。