Diary?

2008-03-16
Sun

(01:54)

俺が仕事をしていてムカつくことの一つは、契約プログラミングと言う概念があまりにも広まっていないことである。例えば今俺が遊んでいる「世界樹の迷宮2」では、自分のパラメータを上げなければいけないところで敵のパラメータが上がっているとか、本来とは逆の効果をもたらすというバグがいくつか報告されている。 DS での開発環境やアトラスでの開発手法についてはさっぱり知らないが、とにかくこういった問題を起こさないためにも「契約」という概念は有効だ。

先に出した例でいうと、パラメータを上げるカテゴリのスキルを使った場合、その前後でパラメータが下がっていたら明らかにおかしい。そして当然ながら、味方にかけるスキルで敵が強化されていたらおかしい。こういったアサーションは多少パラノイア気味にでも行うべきで、特に使われるデータが膨大かつ複雑で単体テストレベルでは漏れが確実にありそうなプログラムの場合、契約という形で表明をすることで異常なデータの検出や仕様を整理することによるテストの品質の向上という利益を得ることが出来る。

もっとも契約プログラミングを実装してる言語はそれほど多くなくて (Eiffel と D ぐらいか、有名なのは)、そのせいで広まっていないってのもあるだろう。 Python なんかは高階関数と __setattr__/__getattribute__ なんかで事実上の契約プログラミングが出来るけど、まあ言語の機能に含まれているに越したことはないからな。

というか俺に言わせりゃプログラミング言語の「型」だって契約の一種で、俺が静的型システムの方が好きな理由はそこにある。ただ Java だの C だのといった言語じゃ面倒くさい上に融通が効かなくて、あんまりよく調べてないけど OCaml の型システムが俺の求めているものかもしれない。でもちょっと触ってみた感じ、 OCaml って文法とかが変態だったんだよな。

(23:54)

世界樹2のページを一気に更新。さすがにほぼ一階層分を一気に更新すると大変だ。主に画像ファイルの量が大変で、今回は結局 170 枚ぐらい画面写真を撮って、そこから取捨選択して、それで撮り忘れに気がついて悶絶とかしてた。

前の階層までみたいにもう少し細かく更新していった方が楽かもしれないけど、構成をいじるのは一気に大量に更新する方が楽なんだよなあ。どうしたもんやら。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。