Tortoise Shell

デザイン、システム開発、ライフハックについてゆるく書きます

UIデザイナーはいかにして実装への理解を深めるか

Goodpatch さんのツイートをたまたま目にして、4枚目の「ソフトウェア開発におけるデザインの対象となる3つのモデル」の図が、わたしのUIデザインへの考え方と通ずるところがありブログに書こうと思った。

図を見ると、実装モデル(エンジニア)・表現モデル(UIデザイナー)・脳内モデル(UXデザイナー)と、それぞれ3つが定義されており、表現モデルの両隣に実装モデル、脳内モデルが紐づいている。

わたしが、UIデザインを「人とシステムを繋ぐ行為」、と表現しているところに通ずるものがある。人とシステムを繋がなければならないので、UIデザインはその間に立たなければならない。

当たり前の話ではあるが、人は人の理屈で動いている一方で、システムはシステムの理屈で動いている。よって、人はシステムの理屈をそのまま押し付けられたところで、理解することができない。システムは、彼らは 0 と 1 の2進数の世界で生きている。

だからこそ、UIデザインは、人とシステムの仲介者として、あるいは互いの翻訳者として機能しなければならない。

仲介者となるためには、何が必要だろうか。人の関係性で置き換えれば分かりやすい。日本人とアメリカ人の間に立ち、どうすれば、彼らが円滑にコミュニケーションを取れるのかを考える。

言葉を翻訳すること。そして、互いの背景や文化、性質をよく理解すること。人とシステムも同じことだ。ユーザーと、システム、両方について知らなければならない。だから、よく使われる言葉だが、越境ということでもないのだ。そもそも境目はない。シームレスにつながっている。その上で存在するのは、個人の関心事と得意不得意の領域。それらを組み合わせて、チームとしてどう全体を設計していくか、という問題だけだ。

ところで先日、わたしは以下のような記事を書いた。

www.tortoise-shell.net

話を要約すると、UIデザインは「人とシステムを繋げる行為」なのだから、UXデザインの領域として扱われる、ユーザーのインサイトを特定したり、体験を可視化したり、日常生活とのタッチポイントの設計も、UIデザインの一部である。UIもUXは、包含関係ではないのに、UXの中に含まれるUIという形で、矮小化されているのはおかしい、ということを書いている。

とはいえ、わたしの身近であるIT業界を見渡してみると、結果として「人について知る」ことに対しては、促進されつつあるように思える。UX"デザイン"というラベリングで、ユーザーのインサイトを特定したり、体験を可視化する行為がフレームワークのレベルで広まったことで、デザイナーが人について知りやすくなったように思える。

しかし、両翼の一端であるところの「システムについて知る」ことは、いまだに多くのデザイナーにとってブラックボックスでしかない。理屈としては、人とシステムを繋げようとしているのに、システムを知らずに実現することは難しく思える。それにも関わらず、多くの現場では、少なくとも表面的には仕事が回っている。それは多くの場合、エンジニアが、デザイナーの「特定の時間における、システムの理想の出力状態を切り取ったスケッチ」を解釈し、リバースエンジニアリングを行うことで実現している。そのスケッチは、FigmaやSketchといったツールを用いて作られており、多くのデザイナーがその青写真を「UIデザインの成果物」と認識している。

話が少し脱線した。言いたかったのは、Goodpatch さんの図の概念をお借りすると、脳内モデルについては、UXデザインという文脈で学びやすくなったが、実装モデルについては、まだまだ断絶がありそうだということだ。

Webサービスを例に取ろう。表現モデルを軸としてスキルを身につけていくと、せいぜいHTMLやCSS、JSといったブラウザのレイヤーまでしか踏み込めない。しかし、それは氷山の一角でしかない。実際には、データセンターに置かれた物理的なサーバーがあり、OSやミドルウェアが搭載され、それらがネットワークにつながり、データが加工され、最終的にブラウザを通してユーザーはサービスを受ける。その全体像を、デザイナーは今の構造では習得することが難しい。

わたしは、工業デザイン系の学部でユーザーインタフェース論の講義を受けていたが、初めはコンピュータの歴史から始まったことを覚えている。それがどうUIデザインと結びつくのか、当時はあまり理解できていなかったが、大ありなのである。しかし、そうした座学を持ってしても、システムについて必要な知識を得ることはできない。フォン・ノイマン型コンピュータのアーキテクチャについて、概念的な知識を身につけたとしても、実務とはなかなか乖離があるものだ。まして、本やネットのチュートリアルを通して何らかのアプリケーションを作ってみたとしても、現場で動いている実際のプロダクトのコードから学べる量には程遠い。

そうした課題感に対して、わたしはバックエンドエンジニアに転職するという方法を取った。結果として、(現在のところ)たかが1年間に過ぎないが、それでもUIデザインに対する見方や考え方はかなり変わった。ブラックボックスだった部分が透明になり、以前よりも全体像が見えやすくなったのだ。

だが、この方法は、あまりにも再現性がないように思える。というか、システムについて知るためだけの手段としては、極端すぎだ。わたしは、たまたまコードを書くのが好きだったのと、新卒からずっとデザイナーとして働いてきて、その延長戦上に閉塞感を見出したものの、ブランディングやマーケティング、マネジメントといった方面に興味を持てなかったから、試しに思い切って技術に全振りしてみた、というのが正直なところだ。必ずしも、エンジニアにキャリアチェンジしなくても、良い方法があるのではないだろうか。

例えば、OOUI等のアプローチは、システムについて理解を深めるのに、良いアプローチに思える。とはいえ、UXデザインの文脈で語られるフレームワークを身につけたからといって、ユーザーについて理解が深められないのと同じように、ただOOUIに従ってビジュアルを作ったからといって、本質的な理解が得られるとは思えない。実践と、自分の頭で考えられる機会をいかにして作り出せるのかが課題だろう。ただ、マクロな目線で業界を見渡すと、確実に進歩しているように思える。

相変わらず UI/UX みたいな表記にモヤモヤすることはあるけれど、未来は明るいし、UIデザインは非常に幅広く、そして奥深く、楽しいものに間違いない。時間をかけて突き詰めていくに値する、面白い領域だ。