いま、開発しているシステムのUI/UXを含めた実装の打ち合わせで、なかなか悩ましいことにぶつかっている。
デザイン系の人が出してくるものは、基本的には個別の利用シーンにかなりチューニングされたものであり、確かにUX的には簡単だ。
これは、なんでもそうだけど、単機能であれば、UIはかなりシンプルで、判りやすくなる。ところが、検索条件を入れる場面では多様な検索条件を指定したくなることは、容易に想像できる。
たとえば、検索対象がもつデータ項目が限定されていて、Enum的な値を持つものであれば、比較的簡単だ。ところが、複数の項目があり、それらの項目の値形式も多様な場合は、拡張性を求めると、それは特定のUXに特化した簡単なものから離れていくし、利用者にロジカルな思考を求めることになる。
たとえば、何かを検索するとしたら、{対象項目、条件値、条件}を持つ条件式を指定し、これが複数ある場合には、その式同士の論理関係(OR,AND,EXOR) などを利用者が指定することになる。こういうのは、理系頭な人には、おそらく快適だし、使いやすいと評されるかもしれないけど、そうじゃない人には、小難しいインタフェースと思われたりする。なんでもいいから、ボタンをクリックしたらこういうのが検索されます的なのが、簡単なわけだ。
UI/UXの実装としては、こういう特定の流れに特化したものを持つのはいいんだけど、内部実装的には、汎用的な形にしといて欲しいなと僕は思ってしまう。結局のところ、UI/UXは、ランタイムでのビヘイビアの最終的な形なので、それがそのままコードに組み込まれることが、僕は気持ち悪いといのうが根底にあるのかもしれない。
なにしろ、古い人間なのでレイトバインディング大好きな僕にとっては、中の話と表面の話は、分離されているものだと思っている。機能がちゃんと汎用的なというか拡張性のある実装をもっていれば、UI/UXの表面的な部分のチューニングには、いくらでも対応できるじゃんと信じてるのだが、これってやはり老害的思考なんだろうか?