GEN MUTO'S HOMEPAGE > Cell_雀公式サイト > 不定期コラム | |
Cell_雀 不定期コラム 第十四弾! |
|
※ 最近、ドラクエ[、ニンテンドーDS、PSP等、ゲーム関連の話題がにわかに騒がれておりますが、 今日、紹介するのはそんな最新テクノロジーとは一線を画す、麻雀ゲームソフト「Cell_雀 (Cell_Jong)」 です。 Fuguzoku Blog 紹介文より この「最新テクノロジーとは一線を画す」というフレーズが大好きです(笑)。 今日はそんなレトロな技術のお話です。 システムを開発する上で私がいつも念頭においているのが、「常識的な発想を捨てろ」という言葉です。 なぜなら常識的な発想による開発は、システムの整合性や効率に対して深刻なダメージを与える結果をもたらすことが往々にしてある。ということが経験上わかっているからです。 しかしこの常識的な発想を捨てる、口で言うほど容易いものでないということが最近になってようやくわかってきました。 技術者が一番陥りやすいワナは効率化のワナです。例えば、どこにでもあるごく平凡な処理で考えてみましょう。 Aのロジックは極めて高速に処理を行ないます。しかしまれに他の処理に干渉して問題症状を引き起こすこともあります。ただしその問題症状はクリティカルなものではなく、容易に修正・復帰が可能なものとします。 Bのロジックは枯れたロジックで何の問題症状も起こしません。その代わりに処理速度は思いっきり低速で、お世辞にも実用レベルには程遠いものがあるとします。 この段階でほとんどの技術者が迷うことなくAのロジックを選択するはずです。これだけの条件だと他に選択の余地が無いからです。だってBのロジックは実用に耐えられないほど低速なのですから…。 実はここが「常識的な発想のワナ」の部分です。 ここで抜けているのは、その処理で実際に用いるデータ量という視点です。 もしデータ量が何千件・何万件クラスだったら、多分Bのロジックは全く使い物にならないでしょう。処理を実行させたとたんPCは沈黙しウンともスンとも言わなくなること請け合いです。 ではデータ量が数件〜数十件だった場合はどうでしょう?AとBとの処理時間の違いは?今の高速なPCを用いればおそらく時間差はほとんど無視できるレベル(数ミリ秒単位)のはずです。 処理速度が(ほとんど)同じなら、AとBではどちらがよいロジックということになるでしょう? 片やまれに問題症状を引き起こすロジック、片や問題症状を全く引き起こさない枯れたロジック、どちらに軍配が上がるかは言うまでもないことです。 一見、誰にも見向きされなくなったような枯れ果てたロジック。 「え…今どきそんなロジックで組むかフツー」 と言われるようなロジックにも、こういう視点から見るとまだまだ利用価値がありそうです。 というより、 「この処理にはこのロジックがフツーでしょ」 と考えること自体が、すでに「常識的な発想にとらわれてしまっている」ということなのでしょう。 多角的に様々な視点で捉えて、そのロジックを選択したというのならいいのですが、案外、 「これでキマリ!」 と安易な開発を行なっていないか…、私自身・猛省しております。 (このことに気づくキッカケを与えてくださった角田氏。氏のHP AddinBox はこちら、素晴らしい技術者のサイトです) 最初に平凡な処理で…と書いたところもミソです。 技術的に高度な部分や革新的なことを行なおうという部分なら、様々な角度から検討し最適な処理を模索するのに、ありふれた…ごく一般的な処理となると時間がもったいないといわんばかりに、お定まりのパターンで組んでしまいます。 99%はそれでOKなのですが、残り1%、これが原因でトラブルを引き起こす可能性が残されています。 いくらロジックをチェックしてもどこにも問題が見当たらない。そんなときは案外ロジックそのものが、その処理ひいてはそのシステムに適していない可能性だってあるのです。 技術に慢心したエンジニアが陥りやすいワナ、自戒の念をこめて今回のコラムを書きました。 ちなみにCell_雀、枯れた技術のカタマリで作られています(笑)。 これからもレトロなテクノロジーでガンガンがんばりたいと思います♪ |
|
>> 次の話にすすむ |
|
|