プログラマも特別ではない、シンプルなUIが必要だ
ここ数日、2つのAPIをきちんと仕上げることに時間をかけている。モジュールに関する新しいAPIと、新しいRedisのデータ型だ。*何日も*と言ったが、本当に何日ものことだ。APIのためだけに、だ。下書きを書き、データ構造や呼び出しを形作りながら実装を始め、そしてまた一からやり直して、より良い形へと繰り返し磨いていく。設計と、ユーザーが直接触れる部分をより良くするために。
なぜそんなことをして、機能のリリースを何週間も遅らせるのか。本当にそれほど重要なことなのか。プログラマはエンジニアなのだから、システム側が出しやすいAPIに合わせればいいだけではないのか。
この修辞的な問いにいちいち答える必要があるだろうか。いや、今日においてはもう必要ないだろう。そして、それは大きな前進だ。
もはや暗黙の前提として共有されていると考えたい。プログラマにもユーザーインターフェースがあるということ、そしてそのインターフェースがシステムの印象そのものを根底から変えてしまうほど重要だということだ。データベースのクエリ言語、ライブラリの呼び出し、プログラミング言語、Unixのコマンドラインツール、これらすべてにユーザーインターフェースという側面がある。毎日使うものにとって、それは何よりもまずUIなのだ。
では、これがすでによく知られたことなら、なぜわざわざこの記事を書いているのか。シンプルさという考え方がどれほど重要かを強調したいからだ。グラフィカルなUIだけでなく、プログラマ向けに設計されたUIにおいても。シンプルなUIという解を見つけるために何度も繰り返す行為は、完璧主義ではない。無意味な自己陶酔でもない。それはむしろデザインという空間における探索なのだ。時には途方もなく広大な空間で、小さな違いが大きな差を生み、大きな違いが視点そのものを一変させる。従うべき規則はない。あるのは自分の感性だけだ。もちろんベストプラクティスはある。しかし、航海すべき海がデザインという*空間*であるとき、それらは良い羅針盤にはならない。
では、なぜプログラマが、優れたシンプルなUIという特権を持つべきなのか。もちろん、よくできたもの、扱いやすく、*しっくりくる*ものを使う喜びはある。しかし、より本質的な問いがある。M4マクロでSendmailを設定する方法を覚えたり、Apacheのバーチャルホストの設定に苦労したりすることは、本当の知識ではない。もしそのシステムがいつか使われなくなったら、手元に、いや、脳内に何が残るだろうか。何も残らない。それはアドホックな知識だ。ジャンクフードのようなものだ。微量栄養素のない、空っぽなカロリーに過ぎない。
プログラマにとっての微量栄養素は、数十年にわたって残るアイデアであり、アドホックなジャンクではない。私はジャンクを出荷したくない。だから出荷する前に、設計を磨き続けるつもりだ。あなたもジャンクを受け入れるべきではない。あなたの脳は、汎用的な概念を学ぶためにより良く使われるべきだ。とはいえ、ある程度は避けられない。どんなシステムにも、使うために覚えなければならない、汎用的でない部分はある。だとすれば、せめてそのアドホックな部分はシンプルなものにしよう。できれば、使っていて楽しいとさえ思えるものに。
記事をランダムに読む