RIA(Rich Internet Application)とか、UX(User eXperience)とは違った形で、UIDD(User Interfece Driven Developement)を考えようと思って、ネタ的にドメインを取ってみました。
ええ、com のほうは、$1000 ぐらいで売っているものですからw それなりに需要はあるのか、ないのか。
EXDoc を作りながら、久し振りにロジック関係に NUnit を使っていた訳ですが、やっぱりこの手のライブラリを作る手順としては、
- 利用者がどうつかうのか、を具体化する。
- その機能を実現する。
という UI 先行型のほうが良いです。この考え方自体は、RIA とか UX 以前に、ペーパープロトタイピングだとか、ペルソナ指向開発なんかがあって、アジャイル開発と相まって使われるのですが、なんだかんだと私は良く使います。
これが、普通の開発だと、
- 要件定義をする。要求を取り込む。
- 設計をする
という形で、設計のほうが後に来るもので、要件やら要求やらの曖昧なものが形になって、いざ利用するための設計(デザイン)をする段階で、最初の要求(requirement)とのミスマッチングが起こります。この「デザイン」という言葉はかなり語弊を含んでしまうのですが、2つの意味があります。
- 見た目をデザインする。
- 機能、利用法をデザインする。
という意味です。工業デザインの場合は、両方を考えないといけないので(例えば、いくら美しくても穴のあいたコップや、テーブルに置いただけのコップでは利用価値はないですよね)普段から行われていることなのですが、コンピュータ関係のデザインというと、この機能/利用法が欠け落ちてしまっていることが多々あります。
いわゆる UX にしても「利用価値/利用のしやすさ」の追求よりも「見ための美しさ」を追及するところが多いのです。営業的にそれがプッシュされるのも分からないでもないのですが、ずーっと、いまいちな感じがしていました。
RIA についても同じで、何故か Internet を含んでいるので、インターネットを使ったブラウザ上のという制限が付きまといます。いや、Internet だからブラウザである必要はないのですが、どうもその手の話が多い。ブラウザで使おうが、Windows アプリで使おうが、iPad のアプリで使おうが、それは利用者の選ぶところであって、提供側の選ぶところではありませんよね。なので、この制限も変な話かなぁと思っていました(
ええ、勿論営業的にプッシュするは悪くないし、そういうことは大いにやるべきことかと。
という訳で、ネタ的にではありますが、uidd.net というドメインで、もっとシビアな形で UI を実践していこうかなぁと考えました。シビアにというと、どのくらいシビアなのか、という例をだしてみると、
- LINQ やメソッドチェーンの文法は、C# や Java の文法から外れないように作られているだけで、本来やりたいこととは別の路線に乗ってしまっているような気がする。なので、文法の制限を外してでも、本来やりたいこと(プログラマがコーディングをするという意味で)の文法を定義するべきではないだろうか?
ってなことで、
- C# にはやっぱり、マクロが必要だよね、とか。
- C# の左辺に変数しか入れられないのは変だよね、とか(C++は入れられる)
- C# は拡張メソッドを入れたため、ぐだぐだになったよね、とか。
- Java のインターフェース一杯は、変だよね、とか。
- try-catch って、文法的に変だよね、とか
そんな話とか、HTML5 絡みで、やっぱり SVG は復活させるべきだろう、ってな感じで、
- Flash を作るように SVG がつくれないと絶対普及しないよね、とか。
- SVG を扱う javascript ってプログラマ寄りだから、デザイナは使わないよね、とか。
- SVG を扱うときも、MVC で分離させようね、とか。
- MVC で、View をテンプレート化させると、デザイナが使わないから普及しないよね、とか。
な話です。
まあ、これを IT以外の利用者に拡大していくわけで、例えば、
- 車のハンドルは、右左ボタンじゃあ危なくってしょうがないよね、とか。
- 車の動態認識は、ブレーキとハンドルさばきが一体化しないと意味ないでしょ、とか。
- 実現してほしいのは iPhone とかのスマートフォンじゃなくて、クレジットカードタイプのタッチパネルでしょ、とか。
- タッチパネルも、1枚じゃななくて、複数枚用意してしかるべきでしょ、とか(ボタン毎に液晶パネルを付けてもOKだし)。
まぁ、そんな実現と非実現のあたりをそれなりにという話。