コードが教えてくれるデザイン思考
今プログラミングを教育に取り組もうという声が高まっています。CODE.orgのようなサイトも立ち上がっていますし、Scratch のような子供から楽しめるビジュアルプログラミングもあります。
デザイナーの中でもプログラミングを始めたい方もいると思います。WWDC 2014 で発表された Swift は、スクリプト言語のような感覚でコードが書けるので、始めるには良い機会なのかもしれません。
ただ、デザイナーの立場からみると、プログラミングは遠い存在に見えることがあります。しかし、「問題解決のため」という視点からみると、デザインとプログラミングには共通点がたくさんあります。人間中心デザインに基づいた発想にも、実装可能なところまで落とし込んで模索しないと、夢心地なアイデアになることがあります(もちろん自由な発想が必要なときもありますが)。コードを書くひとの考え方を取り入れることで、アイデアを洗練させることができるようになります。
プログラミングスキルとデザイン思考
プログラミング言語によって独特の癖(文法)がありますし、得意・不得意がありますが、根底にある考え方は同じです。実はプログラミングをするための基本的な考え方は、デザイン思考と重なるところがあります。
コードが書ける人には以下のようなスキルが備わっています。
すべてを明確に定義する
人は微妙なニュアンスを受け取って理解することができますが、コンピュータはそうはいきません。人間の要求をコンピューターが理解できるように、プログラマは言葉の定義付けを行います。「なんとなく」後回しにしておくと、ひとつの操作で 2 つ以上の結果が生まれる可能性が出てきます。そこで言葉を話す(プログラムを実行する)前に、言葉を構成する単語をひとつひとつ意味付けしていきます。
デザイナーが学べること : 様々な人が関わるデザインプロセスなので、センスや絵心を伝えるだけでは十分ではありません。プロジェクトにおける『良い』を共有するための働きかけが必要になります。
例外を考慮する
利用者が理想的な操作をしてくれれば良いのですが、実際はそうはいきません。操作性を向上させて、それが動くようにプログラムをすれば良いということはありません。人為的なものだけでなく、システム、ネットワークなど様々なエラーが発生する可能性があり、それらの対処を考えなければいけません。実際は起こらないかもしれない「もしも …」も考えて設計を行います。
デザイナーが学べること : 自分たちが考える理想的な状態で Web サイトやアプリが利用されることはありません。見た目を完全にコントロールすることはできないですし、様々な状態を考慮して設計する必要があります。
反復・再帰するものを判別する
プログラマーは、実装しなければならない機能の中からパターンを見つけ、それをどのように組み立てれば効率的に処理できるかを見つけることができます。ひとつの処理を論理的に『解体』し、それを汎用性が高いレゴブロックのような部品へと変えていきます。
デザイナーが学べること : Web やアプリに表記される情報は流動的に変わるので、決まった大きさで情報が入るとは限りません。また急な対応や、小さな改善ができるようにデザイナー以外が触っても最低限の見た目を担保できることが重要となります。スタイルガイドや UI ライブラリを作ることは、パターンを見つけるための良いトレーニングになります。
プログラマー的デザイナー
類似点や例外の発見、論理的な理由付け、構成を組み立てるスキルはプログラマーだけでなく、デザイナーにも必要なスキルです。その上に、デザイナーにしか出来ないパーソナリティやテイストを加えることで、デザイナー独自のスキルとして昇華されるのかもしれません。コードは書けなくて良いですが、プログラマー的な考え方を取り入れることで、より理解されるデザインになるはずです。