エンタープライズアプリケーションにおいて、RIAに求めるもの

「RIA に何が求められているのか」を自分なりに整理してみたい。

発端、目的

最近顧客から「RIAで」と指定されることもあるので、雑誌やセミナーで情報を収集したり、試たりすることがある。
それぞれの技術は得意分野をもっており、アピールしてくる。
確かにとてもいい。すごい。驚きがある。楽しい。
Webアプリケーションを使わされる顧客の不満をよく聞いてきたし、C/Sやホストも使ってきたので、素晴らしさは十分にわかる。


だけど、自分の中での混乱がある。

  • そもそもユーザにとって RIA の嬉しさって何だろう?
  • 派手な技術は多いけど、何が残るのだろう?(美人は3日で飽きるというが・・)


そこで、「RIA に何が求められているのか」を自分なりに整理したい。
うまくいけば、さまざまな技術を評価する軸を作りたい。


ついでに言うと、「リッチ」の定義は?とか聞かれても困るなあ。
「リッチなユーザエクスペリエンスって?」と聞かれると尚更困る。


リッチでない Web アプリケーションをふりかえる

(振り返る、というと、過去のものみたいだなあ。リッチかどうかは、黒か白かというものでなく、程度の問題なので切り分けするのもおかしいかも。)
できるだけユーザ視点に絞り、リッチじゃないときにどんな不満があり、どんな点が歓迎されたかを列挙した。
技術面や運用面の問題がでてくれば、ユーザのコスト高や要望の取り込み難度にはねるという観点で書きたい。


#顧客にシステムを提供する立場で、最終的にユーザにメリット(コストメリットも含め)がないと、どんな技術も意味がないというスタンスで書く。
「それじゃ技術者心がくすぐられない」「それじゃ画期的な技術は生まれない」という反論はあるだろうけど、顧客にベクトルをあわせないで、何を生み出すというのか。


不満

リッチでない Web アプリケーションへの不満として、言われてきたことを思いつくままに挙げる。
#本当はできるのに、工数的な面とか、知識不足で実現できなかったものも含む。あと、当時は難しかったよね・・も含む。

  • 何をするにも画面遷移する
  • 入力の操作性が悪い
    • ファンクションキー使いたい
    • 桁数分入力したら次のフィールドに進んでほしい
    • 入力補完してほしい
    • 数字項目なのになんでIME起動するの?
    • 1画面全部入力してから入力チェックとかありえないよね?
  • サーバが落ちていると使えない
    • 利用可能な時間が限られる
  • ネットワークが遅いとレスポンス悪い
  • ローカルファイルにアクセスできない
  • ブラウザにより動作が異なる。
    • なんでIE6限定なん?
  • そもそもブラウザ立ち上げないといけない(という人はいなかったけど・・)
歓迎された点

もちろん、Webアプリケーションの良さもたくさんある。

  • クライアントにブラウザがあればよい
    • これは管理する側のメリットのように聞こえるが、ユーザにとって、準備が簡単というメリットがある
    • 「別のアプリをインストールしたら使えなくなった」というトラブルも少ない
  • 常に最新のアプリケーションを使える
    • C/S時代の運用は辛かったです。Forteのように、クライアントへの自動配備機能をもつ製品もあったけど。
  • ナビゲーションがわかりやすい
    • メインフレームのシステムのナビゲーションは覚えるのに時間がかかる。覚えてしまえば軽くていいのだけど。
    • メニューで一発で機能移動とか
  • 色やフォントサイズなどで強弱つけられるので、メインフレームやC/Sよりは表現力あるのでは
    • 例えば、「青い画面でエントリ」、「黄色い画面で承認」とか、直感的
    • 例えば、モニタリング画面で信号色でステータスを表す
    • 例えば、XX部長のアイコンが笑ってたら「承認」とか
    • 但し、色だけで表現するのは反則


ん??
何がリッチか、何がリッチでないか、ちょっとわからなくなってきた。
また、不満を挙げるのに、そこまでプアにしなくても・・・という気もしてきた。


気にせず、先に進もう。


RIAにほしいもの

「RIAにほしいもの」と書いたけど、画面設計上ほしいものを列挙する。
RIAはそれらを実現可能にするもの、または実現を容易にするもの、と考えている。

表現力、直感的な操作性やナビゲーション

色や動画、音声での表現とか。
言葉だけでわかりにくい時に図を描いたり、音で表現すると伝わる、それを再現したいよね。


入力してほしい項目だけをダイナミックに表示するとか
※「Aの場合は2〜5を入力してください、Bの場合は2および6〜10を入力してください」なんていうわかりにくい注釈は不要になる


よい操作性

入力したらすぐにバリデーションするとか
入力したらすぐに名前出す等、入力補完するとか
そもそも入力できない文字は入力できないようにしてよね、とか
入力したら、金額はすぐにカンマ編集してよね、とか


日付はカレンダー使って入力したいな、とか
入力終わったら次のフィールドに移動してよね、とか


ストレスのないレスポンス

「ユーザが体感するレスポンス」がよく、ストレスが少ないこと。
更新の粒度を小さくすることにより、当然、リクエストからレスポンスまでの時間は小さくなる。
しかもそれを非同期に実施することで、ユーザの処理を止めることなく、処理できる。


アニメーションで表示したり、プログレスバーを見せたりすると、ユーザの不安(例えば、固まってるんじゃないだろうか)は緩和する。
アニメーション見せている間にサーバで処理始めたりできるので、少し時間を稼げる。


AIRでよく例にあがる「しょこたんAIR」のように、予めデータをPCにダウンロードしてから通知するというアーキテクチャを採用すれば、
ユーザがアクションを起こしてから結果を得るまでは一瞬だよね。


少ない画面遷移

RIAのメリットとしてよくあげられるけど、「画面遷移が少ない」だけではユーザにとってのメリットはない。
画面遷移が少ないと、何がいいのかを考える。


何といっても、目的を達成するまでのアクションが少ないこと。
とはいっても、RIAだからといっても、実はアクションの数はあまり変わらないんじゃないかな、と思っている。
ボタンを押すなど、ユーザが明示的にアクションをとっていた部分を、システムが自動的に実施するように変更しやすいということなのかな?


AIRのように、デスクトップアプリケーションにできれば、ブラウザを起動してURLを入力するというアクションは減らせる。
もちろん、メール上のURLクリックとか、デスクトップ上のショートカットとか、常にポータルサイトが開いてる等の理由で、
メニューに辿り着くまでのアクションが考慮不要な環境も多いけど。
AIRの話を聞きにいった際に、
 「ブラウザ起動&URL入力では他社との差別化ができないが、AIRアプリケーションをデスクトップに置いてもらえれば、最初の1歩の差別化ができる」
という話を聞き、成程と思った次第。


とはいうものの、仮にユーザが目的を達成するまでのアクションの数が変わらなかったとしても、より面倒くささを感じないと思う。
これは、ユーザが新しい画面について学習するコストが少ないからなんじゃないかな、と思う
つまり、新しい画面がでた場合に、変更箇所を探す必要が少ないということ。
さっきまで見つめて条件を入力してた場所の近くに結果が表示されるんだもの。


もちろん、これは従来のWebアプリだって、メインフレームだって意識してた。
ヘッダ、フッタ、左側などエリアによって置くものを決め、たとえば真ん中のエリアだけ内容が変更されるという標準化を図っていたから。
でも、マニュアル読むとそう書いているのではなく、その画面を初めて見た人がそう分からなくてはいけない。
#Faceletとか、Frameはリッチなの?という議論は、ここでは避けたい。


ボタン押す回数が同じだったとしても、いちいち学習しなくてよければ、
ユーザが感じる「めんどくささ」が少ないんじゃないかと思う。


オフラインでも使える

これはRIAとはちょっとずれるけど、C/S的な使い方ができたらいいケースもあるな、ということ。


サーバと通信しなくてもある程度のアプリケーションが使えたり、PCのファイル等のリソースが使えたり。
例えば、サービス提供時間外でもクライアントソフトだけでエントリできるとか。サービス開始したら同期する。
例えば、地下鉄の中でもある程度調べたりエントリしたりできるとか。通信できるようになったらサーバと同期するとか。
例えば、サーバが障害停止中でも、ある程度の機能が使えるとか。
こうすると、躍起になってSLAを守るために過剰な設備を用意しなくてもいいし、コールドスタンバイでいいかもしれない。
もちろん、リアルタイム性が求められるシステムならば、全然このメリットは得られないんだけど。


RIAとは直接関係ないんだけど、AIRみたいなデスクトップアプリケーション独自の話を聞いたときに、
C/Sが得意としてたことができるようになるかも、とユメが広がったので、書いておくことにした。


魅力がある

ソフトウェアの魅力は品質のひとつ。一応、ISO9126でも魅力品質は品質のひとつとして上がっているので、堂々と追及するべきだと思う。
社内向けソフトウェアで魅力を追及しようとすると文句を言われることもあるけど、それはセンスの問題だったのかな。


個人ユーザ向けシステムであれば、ユーザを惹きつける要素の一つになる。
ビジネスユーザ向けでも、社内システムのように使うことを強要されているソフトウェアであっても同じ。
「こんなカッコいいシステムで仕事してるんだぜ」というのもあっていいと思う。


反省会

整理できたのか?軸はできたのか?
いや、ブレストしただけで、かえって混沌としてしまったかもしれない。
しかも、Webへの不満として挙げたもののうち、RIAおよび付随する技術で解決しているもの(ブラウザ依存など)についても書いてないし。。


とはいうものの、いつまでも机上でグダグダ言ってても仕方ないので、今日のところはここまで!
さっさと手を動かしましょう。