古いプロジェクトのロード

一週間ほど前に阿部さんに頼まれていた古いプロジェクトのロード問題に対応。Squeakerの間では悪名の高い、#bobconvフラグつきのコードである。最初に直したときには直ったのだが、条件の怪しい抜け道があったところを通っていたことにようやく気がつき修正。

いろいろな条件によって動作を変えるコードから書き出されたバイナリファイル(ほとんど実行可能ファイルみたいなもの)を、何年かたった後に複雑な条件によって動作を変えるコードで読み込んで動かしているわけである。

はっきり言って、対話的でロードするときに関与しているコードが完璧に読めてそれを対話的に変更したり別の式を評価したりしながらデバッグできて、オブジェクト生成部分の奥のほうにブレイクポイントを入れられて、さらにバイナリといってもオブジェクトとして抽象化されているからこそ対応できる類の問題である気がする。しかも布団にねっころがりながらだし。もっとも、こうやって対応できてしまうからこそ、今でもBobのコードが生き延びてしまっているという面もあるが。