上司に「キスしよう」と言われたら逃げますか?
「作り方」の話題が出たところで、システム設計の基本について、少しだけ触れておきましょう。
暗証番号のしくみに限らず、システム設計の基本的な考え方は、「とにかくシンプルに」です。
日本人の多くは、「エレガントで精績なシステムが流れるように」動いてくれるのが好きだというメンタリテイを持っているように感じます。
実際、私自身もアクロバティックなしかけを織り込んだプログラムが動くとあやしい興奮を覚えます。
しかし、趣味の範囲を超えて実用的なシステムを構築するのであれば、その「しくみ」は簡単で誰にでも理解できるようになっていなければなりません。
同じ仕事がこなせるAとB のしくみがあるとき、複雑で高性能なAとシンプルでやや性能の劣るBという比較では、B を選択するのがシステム設計のセオリーです。
例えば、太平洋戦争で使われた戦闘機で対照的なのが日本の零戦とアメリカのF6Fです。
零戦は優美な曲線で構成された芸術品のようなシルエットを持っています。
それに対して、零戦に対抗するために作られたF6 Fは、板金をそのまま貼り合わせたようなカクカクした機体でとっても無骨です。
この2機種の性能比較はマニアックな話になってしまうので、ここでは互角と仮定して「さて、あなたが指揮官だったらどちらを選びますか?」というお題です。
私だったら、(個人的には零戦が好きなんですけど) F6Fを選びます。
零戦の機体は素人目にもいかにもデリケートです。
工場で作るときも熟練の職人さんが仕上げるんだろうなぁとか、前線で故障したら修理するのが大変そうだなあとか、苦労する様が容易に自に浮かびます。
よくも悪くも職人さんお手製の一品ものなのです。
それに対してF6Fは、見た目全然かっこよくないんですけど、見るからに大量生産に向いていて、故障しても直すのがものすごく楽そうです。
工学部の学生でもちょろっと動員すれば作れそうな感じです。
機械というのは動いてナンボですから、「できるだけ簡単に」作っておきたいわけです。
この思想を端的に言い表しているのが「KISS principle」です。
軍隊でよく使われるスローガンですね。
KISSとは「Keep It Simple,Stupid」の略語で(単純にやれって言っただろ、この野郎!) くらいのニュアンスでしょうか。
むくつけきマッチヨな軍人たちが「次の作戦はキスの原則で!!」「きみはキスがうまくできないから負けるんだ」なんて言ってるかと思うとちょっと冷たい汗が滴り落ちますが、特殊な意味はありませんので安心してください。
MBA本にかぶれた上司が「次のプロジェクトではぜひキスを……」などと言い出してもあわてる必要はありません。