ソフトのデザイン

思いつきの話。
当たり前のことかもしれないけど、
ソフトウェアのデザインというのは、
前提の知識がない人達にもストレスなく使えるようにするためのものなんだな
ということ。
(知識がある人達にストレスを感じさせないようにする方が難しいという事実もあるが。)



会社で仕事の引き継ぎのために、ちょっとした便利アプリを作成中。部署で使っているファイルサーバで、指定した日にち以内に新規作成されたものを探し出して、CSVに出力するようなもの。(50人くらいが使っていて、総フォルダ数も万の単位でありそうな勢いなので、人力ではとても調べられないのです。)
これまでいくつか試してきたフリーソフトも、一晩かけて調べると次の日の朝にはことごとく落ちてるしね。。。orz 該当ファイルを見つけたらすぐにファイルに書き出してflush()して、途中で落ちても形跡は残る、その程度のものが欲しかったのです。


で、本来業務の間にJAVAで書いて、ロジック部分は1、2時間くらいで完成。
ただの再帰プログラムなので。でもそこから、UI作りだしてからがけっこうかかってる。パラメータの設定は設定ファイルよりもフィールドに入力できた方がいいよなとか、進捗がリアルタイムでみれた方がいいよなとかとか、やり始めるとキリがない。ロジック完成から4、5時間は追加開発している。
あとちょっといじって、結構使い勝手のいい感じにもってこうとしているけど、このプログラム使うのって、同じ部署の後任者の人なんで、ぶっちゃけ最初につくったJAVAソースコード渡して、「Eclipseデバッグモードでやっといて。結果はコンソールに出るからコピってExcelに貼って使ってね」でも、ほんとはオッケー。
それを、入力方法はコンボボックスとテキストフィールドとどっちが使いやすいかなとか、慣れないProgressMonitor使って進捗をリアルタイムに表示だ!とか、まぁ時間に余裕があるから80%くらい趣味でやっているとはいえ、開発としてはすごいコストなわけです。これって無駄なことしているのかな、、、と、ふと我に返ったわけです。


「機能」であるロジックは1、2時間でできてるのに
「外観」であるUIの作成にその後4、5時間かけてるということ。
技術者向けであれば、1、2時間でリリースしちゃってもよい。



そこで、なんのためにUIつくっているか考えてみると、
このアプリを将来使う人がEclipseなんて知らなくても、JAVAなんて全く分からなくてもできるようにしたいからということに思い至りました。
あと設定とかも楽にして、使っていてイライラしないようにしたいのだなと。
運用を考えると、本来の目的がファイルサーバ容量調査なので、定期的に実行して記録を取ってほしい。その定期的な実行を確実にするために、実行コストを極力下げたいということ。
あとは使っている人が、なんとなく愛着を持ってくれたらうれしい。リアルタイムでだーっとなんかしら出てくると、なんとなくおぉーって感じがするので、ちょっと楽しいかなと。アニメーションラベルとかプログレスバーとかも、ちょっとした楽しみを与えるもの(普通は体感速度を上げるためのものだけど、このプログラムも実行は一晩かかるのでそんな意味ない。。)



こういうことが、いわゆるユーザーエクスペリエンスなのだなぁと。今までも、そう言うこと考えながらやってきたわけですが、今回は100%自分の要求だけですべてを好きにつくれるので、そんなことを考えられた。

エモーショナル・デザイン―微笑を誘うモノたちのために

エモーショナル・デザイン―微笑を誘うモノたちのために

本能的デザイン  >>  外観
行動的デザイン  >>  使うことの喜びと効用
内省的デザイン  >>  自己イメージ、個人的満足感、想い出

これでいうと、今は本能的デザインと行動的デザインを満たそうと頑張っているところ。
「内省」というレベルにいくと、かなりレベルが高い領域になるなぁ。Appleとかは、いつもここをしっかり押さえてくるかんじだけど。


ただし、今回のプログラムは実行する度に「そういえば、前にああいう人がいたなぁ。。。」という「想い出」のレベルにはいけるかもしれない。
・・・まぁ、いろいろ趣旨が違いますが。。。