新しいプログラムを作るときの思考

新しいプログラムを作るとき(仕事でなくて趣味)の思考というかきっかけというかそういうものはだいたい二つある。

一つは機能レベルから。ドラえもんの歌ではないが「こんなこといいな、できたらいいな」みたいな感じだ。やりたいこと、便利にしたいもの、既存のプログラムで満足できないものを自作してしまおうという考え方。まぁ、満足していても同じものを自分で作りたいという単純欲求も趣味プログラミング的にはこの分類になる。

もう一つは、プログラミングに関する調べ物をしていて、コードの断片(サンプルコード)や、リファレンスから「使いたい物」を見つけてそれを使うプログラムを作ってしまうという感じ。

まぁ、車に例えれば、前者は「1500ccのセダンをつくろう」といった出発点であるのに対して、後者は「DRSという便利なものをみつけたのでこれを有効に使える車をつくろう」というような感じになる。極端な喩えであるけどこんな感じ。

このレベルまでは、いわゆる「処理」に関する部分だけなので、私のような昔のプログラマでも困らなかったのだが、最近はUIやデザインが重要になってきたので困ってきている。

これらの要素は感性の問題なので、ロジックではどうにもならない。一番問題なのはよっぽどひどいものでない限り、また一般的な作りを無視しない限り、「作った本人が使いにくいプログラムは存在しない」という黄金率が存在するため他人に使ってもらわないと使いやすさというのは評価しにくいものである、という大問題が立ちはだかるのである。

デザインについてはいうまでもない。あえて分けるのであれば、エンジニアとデザイナーという異なる呼び名で呼ばれるべきだと思っているのに、両方の領域の作業をこなさないと一本のアプリケーションプログラムは仕上がらないという矛盾に遭遇している。

これらが互いに矛盾した存在でなければならないのだから困る。エンジニア的にはデザインを考えるときには「実装の難易度」、または「実装の可否」を考えてデザインをしてしまうかもしれない。しかし、純粋なデザイナーであれば実装なんか考えないであろう。純粋に見やすさ、使いやすさ、などなど、ユーザの視点からすべてを考えて構築するに違いない。

私は既に頭がプログラマーになってしまっているので全ては実装を考えてしまう方向に汚染されている。だから実装が簡単な方向に流されてしまうし実装できないものは捨てる。そうなると自分の力を幅広くするためには受け皿を広くすればいいのだから、デザインの力をつけるか、持ち込まれたデザインの実装力をつけるかどちらかしかない。

どっちも単独では難しい。いまさらデザインの力をつけるのも厳しいし、実装力を身につけるなら、デザイナーとコンビを組むか、いいものの見た目を真似したものをコピーしてみるくらいしか道がない。ただ、レベルの高いものほど、実装方法の解説は出回っていない。そこが難しいところだし、飯の種になる部分でもあるのであろう。

コメント