2007年11月11日日曜日

'Top-down vs Bottom-up' Or 'Top-down with Bottom-up'

プログラマーからの観点で作成されたソフトウェアを見ればよく思うのは機能は優れているかも知らないが使い勝手が悪いと言うことです。また、最近避けたいと思っているのは典型的な3つのペーンで構成されたUIです。
例えば、こんな感じ?



あまりにも典型的で飽きて来たと言いましょうかね?もちろん、このようなUIが一番効率的なアプリケーションもあります。ただ若干考えればよりユニークなUIを提供する事もいくらでも可能なソフトウェアでも大抵同じく3ペーンになってしまうとやっぱりなんかつまらなくなります。これは特に個人や小人数で作成されているソフトではよく見られる現象です。多分、プログラミングはできるけど、デザインやUIに付いてはあまり詳しくない事がその原因ではないかと思いますがいかがでしょうか?

そこで、今朝考えた事が、タイトルの「'Top-down vs Bottom-up' Or 'Top-down with Bottom-up' 」です。Top-downとは、エンドユーザの観点から物事を考えて行くとの事、またBottom-upとは技術的な観点から物事を考えて行く事とこの文章では使用しています。
一般的に、プログラマーはBottom-upの思考をすると思います。(これは私自身の経験から^^;)例えば、何か新しい機能を提供する技術やチップなどを見つけると、「これでなんか作ってみようか?」と思っちゃう訳です。つまり、作り手の観点が基本で、使い手の観点などはあまり考えられてません。その結果が上述したような、機能的にはいいかも(!)知らないが使い勝手の悪いソフトウェアができてしまう理由の一つではないでしょうか?

参考として、最近読んだJoelの「User Interface Design for Programmer」では逆の発想として、「Activity-based Planning」を紹介しています。ユーザの観点で、ユーザは何をやりたがるかを真っ先に考えるという手法です。上記の用語定義からすると、正に「Top-down」形式だと言えます。(詳しくは前回のポスティングを参照)

で、今私が捨てないと行けないのは「Activity-based Planning」の対称となる、「Bottom-up」の考え方、言わば、「Technology-based Planning」でしょうね。但し、これは本当に、どっちかを選ぶべきものでしょうかね?両立した方が一番いいと思いませんか?「Top-down」でソフトウェアの要件を決め、UIをデザインし、その裏を「Bottom-up」で作って行くのです。(書いてみたら、まあ、当たり前か。)

二つの異質のものを一人が併せ持つ事は確かに難しい事だと思います。例えると、文武兼備でしょうかね?どちらか一つだけに優れる事も厳しいのが現実でしょう。だから、常は各分野に優れた複数の人がチームを組んで働きます。だが、チームにはコミュニケーションコストが発生しますし、そのコミュニケーションがボトルネックになるケースが多いです。クリエイティブな作業の場合はよりそうです。まだ形になってないクリエイティブな思考を共有するのはほぼ不可能に近いと思います。そしてクリエイティブな思考とは一段形になってからは既に変更が自由にできなくなります。

だからこそ、実は一人の人間が全ての知識を持ち合わせているのが理想なんです。(現実ではなく、理想ね!)でも現実的にはそんな天才肌の人は少ないですね。そこをなんとかしてみたいと思っていますけど、まだそれっぽい答えは見えていません。

まあ、ソフトの要件とデザインについて考えている途中のつぶやきでした。

2007年11月7日水曜日

NoteBook 2.1



http://www.circusponies.com/

アップルのダウンロードサイトから偶然発見した、ノートというもののメタフォーを本当に上手く利用したソフトです。実際のノートを使うような感覚でソフトを使う事ができます。どこにもあるようなインタフェースを提供するソフトと比べると全然いいですね。

これを見て、やっぱり新しいものって、既存のものを少し変えた事にすぎないと思いました。人間は以前は自然を真似してものを作り、今はオフラインのものを真似してオンラインのものを作ってますね。作っているものがどんどん仮想化されつつあるような気もします。(最近の経済もそんな感じですね。実物より数字の力がもっと強い)

また、メタフォーは新しいものを人に紹介する場合にいい道具となりますが、今までなっかたもの、例えばオンライン上にオフラインにはない、本当に画期的で斬新なものを作り、紹介する際には逆に邪魔になったりもするのではないかと思っています。

2007年11月2日金曜日

User Interface Design for programmers

Joel on Softwareで有名なあのJoelの本です。彼はこの本で、ユーザインタフェースに対して話しています。色んな事例の話も含まれておりなかなかためになります。特に私のようにプログラミングから物事を考え始める人間には結構いい薬になる本だと思います。

この本の中にActivity-Based Planningという用語が紹介されていますが、今の私にはこの用語は結構タイミングよく現れてくれたって感じです。これはソフトウェアを最初にデザインまたは仕様を決める際に、そのソフトが提供する機能の一覧からではなく、そのソフトのユーザが何をするか、何をしたがるかの観点で物事を考えるとの事です。この観点は最初にソフトを設計するとき以外にもソフトのバージョンアップの際にも有効だそうです。その例として、Excelのバージョンアップの際のエフィソードを紹介しています。MSのエクセルチームは彼らのソフトが複雑な会計用業務に一番使われているだろうと考えていたそうです。それが、実際に調べてみたら、簡単なリストの作成と管理でエクセルを使っているユーザが意外と多かったそうです。それで、彼らはリスト管理をより効率的にできる機能を次期バージョンに追加して行きました。その反面、同時期に競争社はインプルブーという、会計機能に特化されたソフトを出資します。但し、そのソフトはリスト管理の機能は持っていませんでした。結果、今でもエクセルは皆さんが一番よく使うソフトの一つとして依然として残っていますが、インプルブーは誰も覚えてさえもいません、と。

まあ、顧客の観点で物事を考える事の大事さを説明する例としてはいい例ですね。最初のActivity-Based Planningの例としてはどうかなとは思いますが。他にも、この本にはユーザと直面するプログラマーにはためになる内容が沢山あるいい本だと思います。英語ですが、そんなに難しい英語でもなく、活字も大きいのでスラスラ読めました。


2007年10月30日火曜日

Leopardだからできる文書管理の一例

私は仕事柄上、沢山の文書を読み、保管しています。
いざとなった時に「あれ?それ、どっかで見た覚えはあるけどな・・・。どこだったけ?」では話になりません。特に、最近はセキュリティが強化されており、客先ではネットが使えない場合も多いです。そんな時のためにも、マックで使えるコンテンツ管理ソフトは大事です。それで私が愛用しているのはYojimboです。こいつはPDF、ウェブページ、RTFなど仕事で必要なファイルフォマットは大低保存でき、タグをつけておく事で必要な文書を素早く検索できる、なかなか行けてるソフトです。

但し、今まで一つ足りなかった機能はウェブページの保存の際に、ウェブページに自分なりの強調やコメントなどをつける事ができないとの事でした。ウェブアーカイブ形式は修正ができないのです。それが、LeopardになってPreviewにPDFファイルのハイライト、注釈追加の機能が追加されました。それらを使うとなんと以下のような事ができちゃうのです!

①。サファリーで必要なウェブページを見つける。(ここでは、http://www.kanzaki.comを勝手に採用させて頂いております。いい情報盛りだくさんです)



②そのページをPDF化してPreviewで必要な強調表示とメモ書きをする。



③そのPDFファイルをYojimboにインポートしてタグをつけておく。



これで、ばっちりです!
今後この文書の情報が必要となった際にはいつでもすぐ検索し、しかも自分が強調しておいた部分をすぐ読む事ができます。

Leopard! やっぱ、いいですね!

2007年10月26日金曜日

Leopardが来ました!



早速インストールしました。さすが、きれいですね!

OSのインストールには1時間強かかりました。開発用のツールまでインストールするには2時間以上かかりますね。
ファインダーのビューなどが変わり、すごい!を連発しているところですが、私が画面キャプチャーに使っていたウィージェットはなぜか機能しなくなりました。他にはFireFoxのフォントなどが変わったような気がします。

うむ・・・。他はもうちょっと使ってみてからまた書かせて頂きます。

2007年10月23日火曜日

EX MACHINA

久々に映画を見てきました。

http://www.exmachina.jp/

私は志郎正宗の長いファンで、アップルシードは最初に好きになった作品でしたので、私としては必見の作品でした。が、内容はともかく、そのアクションシーンは結構がっかりです。志郎正宗の作品の一つの特徴としてかなりバイナリーなところがあると思います。彼自身も作品の注釈の中で’この作品では根性と情熱でものごとが運ばない’と書いています。が、この映画のキーワードとでも言えるブリアレオスとデュナンのセリフ、「たとえ世界が終わってもお前を守ってみせる」はそのような志郎正宗の作品の色には対極に位置するものだと思います。

もちろん、CGはかっこいいし、毎年進歩していることが目に見えます。問題はCGの進歩をアイデアがついて行けてないような気がします。しかも志郎正宗の原作のファンとしてはイマイチの映画でした。

2007年10月21日日曜日

SSP(Software Solution Producer)とは

Software Solution Producer、略してSSPとは コンピューターを使用するみなさんのライフスタイルをより豊かで幸せなものにするためのソフトウェア・ソリューションを創造する人のことです。

SSPが今まで一般的にデベロッパー(Developer)またはプロブラマー(Programmer)として呼ばれていたソフトウェア開発者と違うところは単純にコーディングだけをするのではなく、使用者に必要なソフトウェアを最初の発想からデザイン、実装に至るまでの大低の作業を一人でカーバーできる人であることです。なお、ここでソフトウェアより重要なポイントはソリューションプロデューサーです。要するに、何かの問題に対する解決策を作って提供することがより大事でソフトウェアはただそのためのツールにすぎないとのことです。場合によっては他のツールを選ぶことも可能でしょう。ただし、その場合はSSPではなく、?SPと定義されるでしょう。

勿論、1つのソフトウェアを作成して提供するためには色んな知識とスキルが必要であり、人は万能ではないのである一定の部分は他の人の力を借りないとできないところもあります。ここで大事なのは何でも一人でやろうと言うことではなく、全体を見渡す能力を持とうとすることです。

これは近代の産業化と伴い、専門領域に細分化によってベストプラクティスとして思われて来た作業の分担、言わば分業から昔の全人的な人間への回帰を意味します。20世紀では自分の専門領域の知識さえもっていればある程度の生活レベルが保証される時代でした。が、21世紀にはクリエティビティ、つまり創意力が一番大事だと言われています。創意力とは個別の知識、情報を新しい方式で組み合わせることによって働きます。創意力とは自分の専門分野に思考を固定された人からは求められません。

ソフトウェアの開発も同じです。本当にいいソフトウェアは優れたプログラミングスキルのみでは作れません。外観だけが良くてもいいソフトウェアにはなれません。逆にいい機能を持っていてもユーザビリティが落ちたりするとそれはまた広く受け入れられません。このような問題に対する今までの対応策はチームで対応することでした。ただしチーム制は適切な構成員の確保、モチベーションの付与と維持、コミュニケーションの難しさなど他の問題を引き起こし、必ずいい解決策とはなりません。

それで私が考えたのがSSPなんです。平凡な人をいくら集めておいても非凡なものは作れません。非凡なものが作れる一番いい人数は実は一人なんです。その代わり、その一人は非凡な人材でなければなりません。それはそれでまた難しい話で、誰でもSSPになれるとは思いません。SSPになるためには、少なくとも基本的なプログラミングスキルとデザイン力、美感、UIに対する理解、人のニーズを把握する直感が必要でしょう。作成したソリューションを販売するためのマーケティング、営業力、またコミュニケーション力を持っていればよりいいでしょう。提供するソリューションの数、規模が大きくなればその維持と運用のために組織を作り、その管理をする必要があるかも知りません。要するに、全人的な人材です。最終的には起業家の形に近づいて行くかも知りません。但し、起業家と異なるのは起業の規模を拡大し、価値を増やすことではなく、より有益なソリューションを提供することに重点をおくことでしょうか。言い換えると管理職よりは現場の人に近いです。

私自身、SSPにはまだまだなれておりません。SSPとは私がなりたいと思っている人材像を定義した用語にすぎません。ウェブの世界であればウェブディレクターが近い存在でしょうかね?ただウェブディレクターと違うところは自分の手を動かす事ができるとのことでしょう。

実は、上記のことを既に実践していらっしゃる方は多いです。個人的にソフトを作って販売または無償で提供していらっしゃる方々です。彼らを何と呼べばいいでしょうか?フリーのエンジニアー?独立開発者?一人で人の役に立つ立派なプログラムを作り出すことができる人々です。私はそれに、機能の他に美しさを追加したいと思います。それでこぞ、SSPだと思います。

以上、私が勝手に作り出した用語、SSPに対するお話でした。ただし、この定義は今後修正されて行く、または他の用語に変わって行く可能性はあります。でも基本的なコンセプトはあまり変わらないでしょう。私はそのような人間を目指しています。

2007年10月20日土曜日

Boot up!

ここには主にマックやマックでの開発に対することを書いていきます。って言っても、マックにはまだまだ素人です。
とりあえず、焦らず、楽しく、マックらしくやっていきましょうや!