ATMはタスク指向UIの免罪符ではない

最初に表示される画面に「残高照会」「振り込み」などのアクション(もしくは機能名)のようなものがずらっと並ぶ ATM を見かけることがあります。アクションが並んでいるのでタスク指向といえばタスク指向なのですが、オブジェクト指向的に捉えることもできます。

例えば、最初にキャッシュカードによって自分の「口座」というオブジェクトを選択してると捉えることもできます。

口座シングルに対して可能なアクションが並んでいるのであれば、特に悪くないように見えるかもしれません。しかし、オブジェクトの性質や状態が表現されているかというとどうでしょうか。アクションが並んでいるだけなので性質や状態はわかりません。それらを確認するためにもアクションを選択する構造になっています。

例えば、口座の重要なプロパティのひとつである「残高」を確認するためには「残高照会」を選択する必要があります。

オブジェクトの性質や状態を表現しようとすると「残高」や「最近の取引」など口座に関する情報を最初に表示したらどうか?という発想につながります。

ATMの画面を口座オブジェクトのシングルと捉え、口座オブジェクトの性質や状態を表す残高や取引の一部を表示する

仮にATMで実現できないとしても、「口座」を扱う別のシステム、例えば銀行のアプリを考える際に役に立つかもしれません。(ATM ではなく、ウェブブラウザ用のアプリケーションやモバイルのネイティブアプリケーションなどではこれに近いアプリケーションもあるかもしれません)

もっと広く考えれば、お金ではなく何かポイントを貯めるものであったり類似する概念を取り扱うものをデザインする際にも役に立つことでしょう。

また、この ATM の話を「物理オブジェクトに付随するソフトウェア」の話として捉えて、考えを発展させることも可能です。

自動販売機をみる健太「お、これが有名な鶴河原のみかん。みかんオブジェクト、購入アクション。」横に目を向ければ無人販売。みかんとお金を入れる箱。コード決済も。「これもオブジェクト、そっちがアクション…のためのオブジェクト、これはつかめる。」

例えば中が見えるロッカーで野菜を売るような機械があるとしましょう。野菜ごとに購入のためのディスプレイがあり、それを使って購入するとします。この場合、オブジェクトは「野菜」でアクションはディスプレイに表示される「購入」になるかもしれません。

物理オブジェクトととしては目の前に見えていますが、同時にディスプレイ上に、野菜の名称、収穫日時、生産者情報などを表示して、ソフトウェア上のオブジェクトとして表現するアイデアもあるでしょう。

また、物理オブジェクトとディスプレイが1:1の場合だけでなく、物理オブジェクトが複数、ディスプレイは1つだとどうなるのでしょう。

物理オブジェクトが複数並んでいれば、ソフトウェアのオブジェクトのコレクションに置き換えられます。

コレクションとシングルを1画面におさめる2ペインレイアウトに見立てると、ディスプレイはさしずめシングルにあたります。そうなるとディスプレイは、選択された物理オブジェクトの詳細情報を表示する役割を持つかもしれない(そのためにはそもそも物理オブジェクトを選択する何かが必要になる)、という展開も可能です。

直接操作をつき詰めれば、野菜なら直接つかめる無人販売が実はいいのでは、、なんてところまで考えるのもありでしょう。

いずれにしても ATM をタスク指向の免罪符のように扱って終わるのではなく、オブジェクト指向的なUIにするとどうなるかを考えて、アイデアを発展させてみることがデザインの楽しさのひとつだと思います。