仕様書をプログラムに翻訳するのがプログラマーなら、ピアニストはプレイヤー・ピアノでいいということになる。

Life is beautiful: 「渡された仕様書を実装するサラリーマンプログラマ」の悲哀
彼が「私の仕事なんて所詮、人が書いた『仕様書』をマシンが理解できる『プログラム』に翻訳するだけの仕事。クリエーティビティなんてこれっぽっちも必要ない」と嘆く姿を見て、どう慰めて良いものか分からなくなってしまった。

もちろんヴォーカリストは初音ミクに全員ミクミクにされるはずである、と。

本当だろうか。

新しい道具が登場することによって、玄人にしか出来なかった仕事が素人にも出来るようになるということはそれほど稀なわけではない。ソフトウェアの世界では特にそう。C言語が言語実装の敷居を下げ、そうして生まれたLL(Lightweight Languages)が、アプリケーション実装の敷居を下げという「深いものを浅く」の方向にもそうだし、ライブラリやプラグインが充実することで、「狭いものを広く」という方向にも技術習得の高速道路化は進んで行く。

それでは、玄人の仕事はどんどん素人に蚕食されて、おまんまの食い上げになるのだろうか?確かにその玄人が昨日と同じ事しかしていないのだとしたら、そうなる公算が大だ。

しかし、現実問題として、玄人は確かにそこにいる。プロの演奏家という職業がウチコミストに駆逐されたという話は耳にしないどころか、むしろプロの演奏家のコンサートは今やCDの売り上げを凌駕するぐらいだ。プログラマーも、また然り。

それでは、「サラグラマー」と「プログラマー」は何が違うのだろう。

一つは、仕様書をどう見るか。仕様書の翻訳しか出来ないサラグラマーは、まさにプレイヤー・ピアノ。プログラマーであれば、仕様書の行間を読むし、読み足りなければ顧客に直接尋ねる。それが出来る人が少ないからこそ、「顧客が本当に必要だったもの」のような笑えない絵が出来上がることも少なくないのだが、玄人にしか出来なかった仕事が素人にも出来るようにしたプログラムは、一つの例外なく仕様書の行間を読んで造られたか、そもそも仕様そのものをプログラマーが定めたプログラムである。こうした「革命的プログラム」を成したプログラマーたちは、素人たちの行間を読んだのである。

もう一つは、仕様書に出てこない部品を作れるかどうか。自分の例で恐縮だが、私は小さな車輪をよく再発明してしまう。特に自分のホームグラウンドでない言語の場合はそうで、たとえば「404 Blog Not Found:ruby & perl - 軽量プロセスをthreadで代用」ではrubyのRangeクラスにto_aメソッドがあることを失念してRange#to_arrayを再実装しているし、昨日は「404 Blog Not Found:tips - 二進数表記まとめ」にてJavaScriptのNumber#toString()を再実装してしまった。しかし、こうした代用車輪はきちんと回ったし、読者も私もそれで困った訳ではない。私にとっては、RubyやJavaScriptという仕様書の隅から隅まで読むコストよりも、読み落とした部品を自作した方が早かったというだけだ。ちゃんと外しできるようになっているから、後で純正部品に交換するのも簡単だし、「これに会う純正部品がないと先に進めない」という状態よりも、「とりあえず自作品で間に合わせて先に進む」方がユーザーも私も気持ちがいい。

料理人に例えれば、客の注文が「おまかせ」だった場合に客を満足させられるか、自分が未経験な料理でも客の注文があれば何とか応じられるか、といったところだろうか。

プレイヤー・ピアノやヴォーカロイドが必要ならYamahaから買えばいい。まだ売っていないものを作れて、はじめてピアニストであり、ヴォーカリストであり、そしてプログラマーなのではないか。

Dan the Programmer