OOUI から考えるオブジェクト指向とタスク指向(ShanonAdventCalendar2018・10日目)

このエントリーをはてなブックマークに追加
この記事は ShanonAdventCalendar2018・10日目の記事です


OOUI

こんにちは。ueharak です。最近、OOUI という言葉をよく耳にします。
OOUI とは Object Oriented User Interface のことで、オブジェクト指向UI とも言います。エンジニアはこれを聞いて OOP、オブジェクト指向プログラミングを連想すると思いますが、インスタンス化されたエンティティが実体を持って目の前に現れたものと考えればこれらは表裏一体でもあるわけで、昨今の GUI プログラミングの多くは OOP による OOUI とも言えます。

タスク指向の業務システム

とは言え、OOP で作っても "OO" にならないものもあります。特に業務システムに顕著ですが、その原因をソシオメディアの上野学さんは「業務分析」によるタスクの洗い出しが要件定義として先行してしまうことが一因であると指摘( https://www.sociomedia.co.jp/7279 )しています。顧客の業務をそのままシステムに落とし込んだ結果、業務のメニューが一列に並んでしまうというわけです。私も思い当たるフシがありますが、この種のシステムはメニューを行ったり来たりして仕事することになります。これはタスク指向と呼ばれ、誰でも再現性の高い仕事ができる利点があります。


(一列に並んだメニューの例)

CUI とタスク指向

業務システムがタスク指向になる原因は先に挙げた業務分析だけでなく、CUI の影響も大きいと私は考えます。CUI はコマンドの集まりで、パイプやリダイレクションにより大きな仕事を表現できます。この概念をもとに業務をコマンドに分解し、順番に繋いでシステムを構築するとタスク指向になるわけです。バッチはまさに業務コマンドの連続です。


(シーケンシャルなタスクの例)

アプリ->データ

コマンドは動詞が名詞を指定する構造になっています。例えばアプリがファイルを開く場合、次のようになります。


最初にアプリを決めて、それが扱うデータを指定します。

データ->アプリ

一方オブジェクト指向はデータが主体となって処理を決定します。これは GUI で次のように表されます。


コマンドとは逆で、まずデータ(オブジェクト)が先に来ます。データを選んだのち、そのデータで何をするのかを指示します。

デスクトップは OOUI

上記の画像をご覧の通り、オブジェクト指向 UI とデスクトップのメタファーは親和性が高いと言えます。文面を選んで印刷したりメールしたりといった所作は、いずれもデータが主体となるものです。



スマホはタスク指向

スマホは基本的にファイルの存在を隠蔽することで世界をシンプルに保とうとしてきました。その結果、メッセージを送信したいと思った時、その手段をメールにするかSMSにするか事前に決めなければなりません。これはまさにタスク指向で、ホームからそれぞれのアプリ(メニュー)へ行ったり来たりする構造です。データはアプリで分断され、似たような機能は再発明され、体験はアプリの中で閉じています。


スマホで OOUI

スマホになって主役はデータからアプリへ移り、色々なアプリの微妙に異なるテキストボックスや編集ツールに個別最適化する世界になりました。しかし本当にそれがベストなのでしょうか?
ここに一つのアプリがあります。ソシオメディアが提供する Textwell というアプリですが、起動するとテキストウィンドウが広がるだけのシンプルな画面が目に入ります。


ユーザはここでテキストを作成します。ではその後どうするか?
答えは「なんでも」です。左上のアイコンをタップすると「アクション」の一覧が現れます。これはデスクトップにおけるコンテキストメニューと同じもので、作成したテキストの処理を指示するものです。つまり最初にオブジェクトを作り、その次にメソッドを決定するという OO の構造になっているのです。


アクションは拡張することができるため、テキストを扱うアプリケーションのほとんどに対して Textwell はテキストエディット部を担うことができます。

オブジェクト指向とタスク指向

OOUI は自由度が高くカスタマイズが容易な反面、利用者を自由な空間へ「放り出す」面があります。一方タスク指向はメニューに存在しないことはできないため、選択肢が限られています。この記事がそれぞれの特徴を理解し適材適所で UI を作る際の参考になれば幸いです。

次の記事
« Prev Post
前の記事
Next Post »
Related Posts Plugin for WordPress, Blogger...