設計方法論を学ぶことを主要目的としてはいけない

引用元: 上野 学. モードレスデザイン  意味空間の創造 (p.168). 株式会社ビー・エヌ・エヌ. Kindle 版.

この公の場で私ははっきり述べさせていただくが、学問の主要目的として設計方法論を学ぶことを、すべて否定させていただく。なぜなら、設計の実現と設計の学習を別々に考えるほど馬鹿げたことはないと思うからである。事実、設計を実現せず設計論を学習している人は、実りを知らぬ挫折したデザイナーである。その意志すら失った人々と言ってよい。そんな人たちが、物事を「どうしたら」正すことができるかなどと、道理を語ることができるわけがない

私は、これまで「設計方法論を学ぶ」ということそのものを意識して取り組んできていた。これは「愚者は経験に学び、賢者は歴史に学ぶ」の意識的な実践であったが、そこで終わりではダメでその学びを即座に実際の設計に適用することが必要だと改めて思った。必要となる知識を補完するために方法論を学ぶのは、設計の機会が訪れたときであり、適用によりよりよい成果を得られると感じられるときにする。

オブジェクトのプロパティを変更するのにモーダルダイアログを用いない

引用元: 上野 学. モードレスデザイン  意味空間の創造 (p.270). 株式会社ビー・エヌ・エヌ. Kindle 版.

プロパティー変更ダイアログとサイドペイン

モードレスにするには、サイドペインなどにプロパティを表示して、変更したら即時反映させるなどの方法がある (ちなみに、OOUI 本にもいろいろな実現方法が載っていた)。 イベント系のエンティティの編集について、どのようにこの方法を認識したらよいかと考えた。イベントを発生させる前の編集はオブジェクトを「下書き」のような状態として扱うのが良さそう。「下書き」状態では、任意の順番で段階的に編集させることができ、中断も可能とする。目的の状態に下書きが完成したら「提出」などオブジェクトの状態を変更させるコマンドを UI から実行させることで「イベント」に変化する。

コマンドメニュー実行後にパラメーターをダイアログで指示させるのはモーダルである

引用元: 上野 学. モードレスデザイン  意味空間の創造 (pp.272-273). 株式会社ビー・エヌ・エヌ. Kindle 版.

モーダルな操作ではまずVerbを指定する。そのVerbが何らかのパラメーターを必要とする場合、そのパラメーターを入力する操作は、Verbを指定する操作のすぐ後に続けて(そしてVerbが実行される前に)なされなければならないため、システムはモードを作る必要がある。使用者をモードの中に引き入れて、パラメーターの入力を終えるまで他の操作ができないようにしなければならない。一方、モードレスな操作ではまずObjectを選択し、次にVerbを指定する。Verbを指定した瞬間にそれは実行される。Object選択の操作はVerbの指定より先に行われるので、Verbから束縛されない。使用者はいつでも別のObjectを選択しなおすことができる。またVerbの指定もObjectから束縛されない。Objectによって指定できるVerbは変化するため、VerbはObjectに依存していると言えるが、Object選択の操作とVerb指定の操作は連続していなくてもよい。その意味で二つの操作は独立している。

オブジェクトを選択して、コマンドメニューを実行し、そのコマンドに必要なパラメーターをモーダルで入力させるのは OOUI の素朴な設計パターンだと思っていた。しかし、モードレスではないことが理解できた。このパターンではまだ、「コマンド (タスク)→オブジェクト (パラメーターとしてのオブジェクトのプロパティ)」であるととらえられそうなので、OOUI としても完全とは言い難い。

「モードレスにする方法」の実現方法

引用元: 上野 学. モードレスデザイン  意味空間の創造 (p.273). 株式会社ビー・エヌ・エヌ. Kindle 版.

モードレスにする方法

「モードレスにする方法」に書かれたこの項はモードレスデザインの実践の参考になる。

引用元: 上野 学. モードレスデザイン  意味空間の創造 (pp.274-275). 株式会社ビー・エヌ・エヌ. Kindle 版.

複数のパラメーターを必要とするアクションをモードレスにする方法はいくつかある。ひとつはパラメーターのプリセットを事前に作成しておき、それをオブジェクトとして見せることである。使用者はそれを選んで実行するだけなのでモードが必要ない。

OOUI 本にもこのような実践の例示が載っている。そこにはモードレス以外の手段も載っていたが、著者が本当によいと思っているのはモードレスにする手段だったんだな。

引用元: 上野 学. モードレスデザイン  意味空間の創造 (p.275). 株式会社ビー・エヌ・エヌ. Kindle 版.

操作をモードレスにするためのまた別のアプローチは、実行ボタンをなくすことである。

業務上のイベントを発生させるには何かのトリガーが必要である。実行ボタンをトリガーとするのが自然な設計ではあったが、モードレスにするには次のような方法を取る必要がありそう。

  • オブジェクトがある状態を満たしたとき (これまでのコマンドとして実行できる状態) に自動的にイベントを発生させる
  • ユーザーが、オブジェクトを組み立てる行為とコマンドを実行する行為を分けてデザインする

引用元: 上野 学. モードレスデザイン  意味空間の創造 (pp.275-276). 株式会社ビー・エヌ・エヌ. Kindle 版.

こうしたプロパティー変更の操作からモードを取り除くには、実行ボタンをなくし、使用者が入力をするそばから(理想的には1ストロークごとに、そうでなければ入力フィールドからフォーカスがはずれたタイミングで)その値をオブジェクトに反映する。もしプロパティーを個別に反映させるとオブジェクトの状態に問題が生じる場合には、フィールド間の整合性が保たれるように自動的に関連する他のフィールドを変更するようにする。

一連の不可分な入力はモーダルになることがある

引用元: 上野 学. モードレスデザイン  意味空間の創造 (p.282). 株式会社ビー・エヌ・エヌ. Kindle 版.

一連の不可分な入力に問題があった際にその場で修正を求めることなどは、現在のソフトウェアでもモーダルな表現で実装されていることが多い。

「不可分な入力問題がある状態」「不可分な入力が満たされた状態」 を区分することで、モードレスにすることはできそう。 ただし、不完全な状態をデータモデルで保持する設計をするのは実装上の複雑性にはなる。不完全な状態を半揮発的な別のストレージ (例. Cookie、SessionStorage、LocalStorage、Redis) に格納することで、複雑性を多少軽減できるかもしれない。

概念を解体してモードレスにする

引用元: 上野 学. モードレスデザイン  意味空間の創造 (pp.307-308). 株式会社ビー・エヌ・エヌ. Kindle 版.

本質は、文字列移動の操作をモードレスにするために、文字列移動という概念の方を解体し、カットとペーストという二つの端的な概念に再構成したことなのだ。文字列移動には最低でも4ステップの操作が必要であり、これは減らすことができない。減らせないからモードを作らざるを得ない。しかしモードによってしか文字列移動が成立しないなら、文字列移動という目的そのものが手続的な段階性を帯びているということだ。だからこれをモードレスにするには、手段ではなく、目的の方を再構成しなければならない。

概念を解体して、より単純な複数の概念にすることでモードレスを実現できることがあるという事例。

引用元: 上野 学. モードレスデザイン  意味空間の創造 (p.308). 株式会社ビー・エヌ・エヌ. Kindle 版.

機能をサブジェクトから解放し、使用者のブリコラージュに明け渡すことで、ヒューマンインターフェースはモードレスになるのである。

目的 (サブジェクト) をそのまま設計するのではなく、オブジェクトに対して1アクションで実行できる複数のコマンドとして分割する。複数のコマンドを実行することで目的を達成できるように設計する。