綺麗なコード、汚いコード
今回はメカAGさんのブログからご寄稿いただきました。
綺麗なコード、汚いコード
「CES三日目 enchantMOONの秘密 そして驚きの展開に」 2013年01月11日 『UEI shi3zの日記』
http://d.hatena.ne.jp/shi3z/20130111/1357915582デバイスドライバーレベルでアプリケーションに近いコードが走っている。デバイスドライバーが完全にenchantMOONのUI、MOON Phaseのためだけに作り込まれている。VRAMが書き変わるのはペンの周囲わずか9ドットのみ。データは全てベクトルで保持し、非同期にアプリへ通達されるがそれよりも速く画面が描きかわる。
なんかこういうのワクワクするな。8bitパソコンのプログラミングとかって、こういう工夫(Hack)の塊だったんだよな。あの頃はむしろ「こういうアルゴリズムを思いついた」→「それを活かすゲームを考えよう」って順序だったような。
美しくモジュール化する設計も大事。しかしここぞというケースでは、思いっきり泥臭いテクニックを使うのも重要。俺は綺麗な設計も好きだが、ハードウェアの性能を限界まで使い尽くすようなコードも好きだ(というかこっちは大好きだw)。
Windowsだってもともとは「Windowsでリアルタイムゲームはできない」というのがセオリーだったのを、その常識をWinG(いまのDirectX)でひっくり返したから、今日の繁栄があるわけだし。
* * *
むかし俺が書いたコードで、性能はいいのだけどメンテしにくいというものがあった。そんなことはわかってるんだが、そのハードで必要なパフォーマンスを出すには、そういうコードを書くしかなかった。だから文句を言われても弁解すらせずに無視していたw
で、そのうちゼロから設計し直そうというプロジェクトが俺の知らないところで始まった。一応俺にも声がかかったのだが、丁重にお断りしたし、むこうも断られるのは織り込み済みの様子だった。
で、2年ぐらいかけて開発したようだが、速度もコードのサイズもまったく実用に耐えないものしか出来上がらなかった。一応完成したが誰も使う人はいなかった。
あ た り ま え な ん だ よ !
必要だからぐちゃぐちゃのアクロバティックなコードを書いたのであって、必要もないのにあんなコード、誰が好き好んで書くか!(本当は好きなのはナイショだw)
* * *
ちょっと心が傷んだのは、そのプロジェクトの中心人物が傷心のうちに辞めてしまったこと。彼のせいではない。彼は入社まもない右も左も分からないうちに「このコードをきれいに作りなおしてくれ」と言われて、素直にそれをやっただけだ。
いま思えば彼と一緒に戦うなり、彼に協力するなり、すればよかった。あの時は(俺も若かったし)「俺様が全力で書いたコードを作りなおす?!」「できるものなら、やってもらおーじゃん!」という気持ちが先にたって、そんなこと考える余裕がなかった… orz
追記
考えてみたらタイトルがちょっとアレだな。enchantMOONが汚いコードだって話じゃないので、念のため。むかし自分が書いたコードを思い出したという話。
執筆: この記事はメカAGさんのブログからご寄稿いただきました。
ガジェット通信はデジタルガジェット情報・ライフスタイル提案等を提供するウェブ媒体です。シリアスさを排除し、ジョークを交えながら肩の力を抜いて楽しんでいただけるやわらかニュースサイトを目指しています。 こちらのアカウントから記事の寄稿依頼をさせていただいております。
TwitterID: getnews_kiko
- ガジェット通信編集部への情報提供はこちら
- 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。