Posted at

RailsにおけるOOUI(オブジェクト指向ユーザーインターフェース)


OOUIとは

OOUIとは、オブジェクト指向ユーザーインターフェース Object-Oriented User Interface の頭字語です。

GUI アプリケーションをデザインする際の手法で、「オブジェクトベース」でユーザーにアプリケーションを提供するUIです。

対比として取り上げられるのは「タスクベース」のUIで、これはユーザーがデータを操作できる手順が固定されているようなものを指します。

日本語でまとまっている資料は、上野学氏のOOUX – オブジェクトベースのUIモデリングだと思います。

WEB+DB PRESS Vol.107 にあるOOUIの特集も上野学氏のものです。私もOOUIというものをこの記事で知りました。

OOUIについての詳しい内容はOOUX – オブジェクトベースのUIモデリングが素晴らしくまとまっておりますので、こちらを読むことをおすすめします。

この記事ではRailsとOOUIの関係について、自分が考えたことを書き残しておきたいと思います。

また、OOUXという言葉もあり、記事の中でも触れられていますが、ほぼ同じ意味です。

少し前にオブジェクト指向UXという記事がありました。これはOOUX(OOUI)の事例が載っています。


Railsで見られるOOUI

Railsは rails generate scaffold のコマンドを使うことで、データをCRUDできる機能が一通り生成できます。

その際に作られるいわゆる一覧(index)画面で、データベース内のデータが一覧で表示され、それぞれのデータの詳細へ遷移・編集・削除の操作ができるリンクが表示されます。

デスクトップアプリケーションでのアイコンなどが表示されているGUIとはまた少し違っていますが、ユーザーに対して操作する対象(オブジェクト)をまず提示し、操作がそれに紐づく、という形式になっています。

デフォルトでこういった形式を採用することで、管理画面などは少ない手数で作れますし、全てのデータをCRUDするためのUIも統一され、ユーザーいとって理解しやすいインターフェースが提供されます。

むしろタスクベースのUIになるように修正するほうが大変で、画面の種類が増えることでコントローラのメソッドも増えることになり、メンテナンスのコストも増えてしまいます。


RailsでOOUIを手軽に実現するために不足している部分

ブラウザによってGUIの世界に引っ張り出されてはいますが、WebはHTML(テキスト)で出来ています。そのため、いわゆるGUIを実現できるグラフィカルなパーツは、別途作成する必要があります。

ReactやWebComponentsなどの技術により、Webの世界でもコンポーネント化の流れがありますが、RailsのModelとはまだ結びついてはいません。

その辺りを補完できるライブラリが作られ、Railsの標準で取り込まれたりすると、GUIのSPAが一気に普及する可能性があります。

また、これは一般的なGUIでもそうですが、オブジェクトとオブジェクトを結びつけるような操作は難しいです。

例えば、記事(Article)に対して任意の数のタグ(Tag)を結びつけるような場合は、Railsでは多対多のアソシエーションとしてよく実装されます。

そういった関係性を操作するようなUIは、オブジェクト同士をドラッグ・アンド・ドロップで重ね合わせたり、スマートフォンであればタップ&ホールドする必要があったりと、複雑な実装を必要とします。

また、中間のデータにさらに作成者やコメントが紐づく場合など、いろいろ関係性は考えられるのでパターン化するのはなかなか大変そうです。


まとめ

Railsは、Martin Fowler氏のActiveRecord やMVCモデルなど、ソフトウェア開発のパターンを多く取り込んでいます。

OOUIもソフトウェア工学の流れを組んでRailsに取り込まれているのかなと思っておりますが、真偽の程は定かではありません。

ただ、ユーザーに対してデータの操作をオープンにしていく、という方針はRailsのCRUDの作りやすさにはあると思っています。

Railsのレールにのって、今後もユーザーにとって使いやすいWebアプリケーションを作っていければ良いですね。