YOOT.COM

斎藤由多加のブログだよ

靴下の左右差の見分け方

うちの会社は毎年仕事始めは明治神宮に初詣をすることにしています。

今年も、5日の午前十時に、神宮前のあたりに集合し、そして参拝を済ませ、お神酒を飲んで、午後は会社に戻りちょっとした会議をします。どういう会議かというと、昨年の今日に各自が書いた抱負を配布し、読み直すというものです。それを読んだ上で今年の抱負を書きなおすというものですが、一年前の自分が書いた抱負目標を読み直すというのは、あたかもタイムマシンに乗ったような気分になります。

そして、それらをもとに全スタッフで、自分たちのどこが良かったか、どこが良くなかったか、を意見交換したり反省したりするわけです。ちなみに、この手法は、過去の自分が教師になるという変わった手法ですが、一年間を振り返るにはなかなかお勧めのやりかたです。

*******************************

そんでもって、一連の議論の最後に、社長の僕が思うことを話すわけです。

今年は、「靴下の左右差の見分け方」という話をしました。むろんこれは単なる一つのたとえなのですが、どういうことかというと、人は自分の脱いだ靴下の左右を見分けることができるが、それをきっちりと論理的に定義することはとても難しい、という話です。僕らが新機軸のゲーム企画及び開発の工程でやっていることは、そんなようなことですから。

さて靴下の話にもどりますが、僕の場合だと、たとえばジムのロッカールームなどで、左右を見極めて自分の脱いだ靴下を履くわけです。つちふまずのへこみ具合や、外側の膨らみ具合などから左右はわかる。しかし、その見分け方を論理的に定義するというのはとても複雑で面倒なことなわけです。

***********************************

これは、「人間の脳が当たり前に判断していることをプログラムで判断させようとした時に発生する複雑な処理の記述」と言い換えることができます。OCRとか、音声認識とか、いやもっと単純なパターン認識などは、こういう作業をこつこつと積み上げた結果ということになります。こういう場合、プログラマーの技術の真髄は、「対象の特徴をどう見るか」となってきます。その妙技はプログラムをするコンピュータディスプレイの中ではなく、外、具体的には自分の脳の中にある。自分の脳の中にあるものを自分の外に出す、それがむずかしいというわけです。

もし仕事で、左右の靴下の判定プログラムをつくるとなった時、企画者はプログラマーにどのレベルまで数値化した仕様を伝えるのが正しいのか? プログラマーも経験値をもった一人の人間ですから、下手に数値化なんかせずに「左右を見分けるプログラムをつくっといて」でもいいのかもしれません。でも、そうもなかなかいかない。実際に挙手を求めたら、「靴下の左右を見分けられない(そういうことを考えたこともない)」という人もいました。そうなると、はやり誰か見分けに長けた別の人が、丹念にそれをたくさんの条件文にするという役割分担の必要があるということになります。プログラマーとしては「言われたとおりにやるからきっちりと仕様を切ってくれ」ということになってきます。こうなったとき、つまり観察者と記述者が異なる人物になったとき、開発の効率は極端に落ちてくるものです。逆に言うと一人の脳がこの両方をやったとき、ものすごく高品質で高スピードな開発が可能になる。

***********************************

 正月の朝日新聞にも掲載されていましたが、都会の人間がスクランブル交差点などで見慣れた「人の群」を再現しようとするとなかなかおもしろい。タワーでも、大玉でも、この次にやりたいタイトルでも、群衆は僕にとって大きなテーマです。この動きを新入社員のプログラマーが研修的にプログラムしようということになりました。

さて、では、この「群れ」をどう定義するか?
いつも見慣れているものだけに、「どこかがちがう」というところまではテストプログラムを走らせてみてわかる。が、では、「なにがどうちがうか」となると、よくわからない、という問題に直面しています。

物事のどこをどう切り取り、どう組み立てれば、事象を模倣をすることができるか?
その視点こそが、優れたコードを書いてきた伝説プログラマーが持っていた天才性の源ようにも思えます。