🗓️

日付をカレンダーで選ぶUIは慎重に

2022/10/05に公開約2,400字

少し前に社内でUIライブラリについて話す機会があったので、せっかくだからまとめてみます。

そもそも必要かをじっくり検討した方がいい

何かの日付を選択する際に、カレンダーで選びたいという要望はよく出ますが、本当に必要かどうかは立ち止まって考えた方がよいと考えます。

既に決まっている日付を入力する場合には有用性が低くなりがち

特にBtoBな業務アプリケーションでは、カレンダーを見ながら「どこにしようかな」と選ぶ場面はさほど多くありません。往々にして日付はあらかじめ別の所で決まっており、Webアプリケーションを前にする時はそれをシステムに入力するだけです。

この場合、マウスでポチポチとカレンダーを選択するよりも、キーボードで入力した方が速くて正確だったりします。カレンダーが小さい場合は誤選択しやすくなったり、遠い日付を選択するのにたくさんクリックが必要だったりで、かえって不便になることも少なくありません。

キーボードからテキスト入力する場合、曜日は確認したいのでそこはサポートする価値があります。入力内容を基に曜日をフォームの脇に表示してあげるとよいでしょう。

事前にメールなどで「m月n日の木曜日でお願いします」という取り決めをしていて、いざ入力してみたらその日は金曜日だった、なんてことは日常茶飯事です。その時に日付が間違っているのか曜日が間違っているのかは分かりませんが、とにかく問題に気付けるようにはしておけると良いです。

指定を間違えにくいUIを提供しよう

一方でキーボードから入力する場合は年を間違える自由を得てしまいます。年明けにうっかり去年の日付を入力してしまう、なんてことはありがちですね。曜日表示で気付ける場合もありますが、たまたま同じになる可能性もありますし、そこで気付くことに賭けるのはやや分が悪いと言えます。

入力する日付が過去・未来どちらかに制限できる場合は、そこから外れる場合はエラーにすることで安心感が増すでしょう。あるいは対象が限定できる場面では、年をテキストで入力させるのではなく「今年」「来年」「去年」のような選択肢から選ばせるのが有効かもしれません。

日付だけでなく時刻も指定する場合は、選択する要素が更に増えます。開始日時と終了日時を指定する場合は更に倍です。個人的な経験では入力項目が多くなればなるほどテキスト入力の方がオペレーションの人たちから喜ばれることが多いように感じています。

ただ、対象の時・分が限定的な場合はテキストではなく、リストから選ぶ方式が適しているかもしれません。30分刻みでしか指定できないのに、フリーでテキスト入力にするのはむしろ不親切でしょう。

入力効率もさることながら、日付の指定を間違えるとだいたい悲しいことになってしまいます。指定ミスを減らすための努力は惜しむべきではありません。

カレンダーは開発・メンテナンスコストが高くなりがち

検討した結果、それでもやっぱりカレンダーが必要だという判断に至ることもあるでしょう。

その場合は維持コストがかかることは意識しましょう。自分でスクラッチで開発せずに、既存のライブラリを利用するとしても、

  • 表示をカスタマイズしたい(日本語で表示したいとか)
  • 間接的に依存しているライブラリに問題が見つかった

みたいなことは起きがちです。後者はカレンダーに限ったことではないけれど、リッチなUIを提供するライブラリでは間接依存が増える傾向があるように感じます。

また、モバイル対応する場合はPCと共通化できないことも少なくないでしょう。そうなると当然ながら手間は増えます。

画面を見ながら日付を決める場合には有効かも

「来月このへんのどこかで」みたいに入力する時点で日付が明確に決まっていない場合はカレンダーは有力な選択肢になります。日付よりも曜日の優先度が高い場合もカレンダーからの選択が有効かもしれません。BtoCはサービスでは欲しくなる場面も少なくないでしょう。

ただし、その場面では単に汎用的なカレンダーUIが望ましいかは検討の余地があるかもしれません。

個人的な実務経験だと旅行代理店のサイトで、日によって飛行機や宿泊の割増料金が変動し、それが極めて重要な要素なので単なるカレンダーでは不足だったことがあります。

アプリケーション固有の情報をあれこれ表示するとなると、それはもうそれそのものが重要な機能であって俗に言う「カレンダーUI」とはまた別の物になることも多そうです。

単一の日付選択と範囲選択

単一の日付指定だけでなく、カレンダーで範囲指定する場合もありますね。複数月が表示されて、開始日と終了日を選ぶみたいなのが定番です。

この場合は更に複雑度が上がるので「本当に必要か」はより慎重に検討したいところです。何らかのライブラリに完全に乗っかるとしても、その提供責任は負うことになります。

実は「この1週間」「直近の30日」みたいなのをリストから選択できるだけで目的は達成できるかもしれません。その可能性は確認したいところです。

欲しいと言われても立ち止まる勇気

本件に限ったことではありませんが、利用者からの「欲しい」という声は「必要」と同義ではありません。

実は「あったら便利かもしれない」とか「ないよりはあった方がいい」程度で、そこに「私は使わないかもしれないけど」が隠れている可能性も考慮しましょう。

これは個人的な印象論ですが、普段あまりそのアプリケーションを深く使わない人ほどリッチな機能を欲しがる傾向があるように思います。たまにちょろっと雰囲気を見る人はカレンダーで適当にポチポチしたくなる一方で、そのアプリケーションを使って日常業務をバリバリこなす人はむしろテキスト入力を望む、みたいなことは実例として経験があります。

「これ日付カレンダーで選べないの?」と気軽に言われた時、それが本当に必要なのかはしっかり判断したいですね。

Discussion

ログインするとコメントできます