ComboBoxだけでは不十分な理由
あなたは業務アプリケーションを構築します。そして、同じ問題を繰り返し解決していきます。
顧客検索を構築します。 商品のオートコンプリート(自動補完)フィールドを構築します。 選択用ポップアップを構築します。
ほとんどのUIライブラリは、これらを別々のウィジェットとして扱います。「ルックアップ」や「オートコンプリートボックス」と呼びます。しかし、これは間違いです。
これらは異なる問題ではありません。同じ問題なのです。私はこの概念を「Locator」と呼んでいます。
業務アプリケーションは「参照」に依存しています。
- 販売注文は顧客を参照します。
- 請求書はサプライヤーを参照します。
- 取引は商品を参照します。
データベースはこれらをIDとして保存します。しかし、ユーザーはIDで考えることはありません。ユーザーは名前、コード、あるいはバーコードで考えます。
真の問題は、IDをどのように保存するかではありません。ユーザーが、自分が知っている情報を使って、いかにして正しいエンティティを見つけ出すか、という点にあります。
ComboBoxは、小規模なリストには適しています。国名や通貨などの、数十行程度のリストには使用できます。
しかし、大規模なデータセットではComboBoxは機能しません。10万人の顧客をスクロールして探すことは不可能です。この規模になると、それはもはや「リストから選択する」ことではなく、「レコードを特定(locate)する」ことになります。
LocatorはUIコントロールではありません。それは「振る舞い(behavior)」です。
Locatorは単に値を返すだけではありません。業務上の参照を解決(resolve)します。
ユーザーが商品を選択するとき、アプリにはProductIdだけでは足りません。単価、VAT(付加価値税)率、単位などが必要になります。
Locatorは、特定のコンテキスト内で参照を解決することで、これらすべてを提供します。
UIは変わるかもしれません。
- デスクトップでは、検索可能な2つのフィールドのように見えます。
- グリッド内では、カスタムエディタのように見えます。
- モバイルでは、検索画面のように見えます。
見た目は変わっても、振る舞いは同じままです。
優れたLocatorはユーザーを尊重します。熟練したユーザーはキーボードを使用します。Locatorは、一意の候補が見つかった場合は即座に選択を完了させるべきです。複数の候補が存在する場合にのみ、選択を求めるべきなのです。
検索、オートコンプリート、ポップアップを、無関係なウィジェットとして扱うのはやめましょう。Locatorを、業務ソフトウェアにおける根本的な概念として認識してください。
