言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

バグの顛末

朝メールをチェックすると、大島さんから報告があった。僕がこないだ Squeak Nihongo 7 に入れたパッチによって、一度スクリプタに入れたタイルが取り出せなくなっている。「そんなわけな...」と思って試すとしっかり再現。それどころか、色やプレイヤなど、文字や数字以外の「見張る」が動かない問題まで起こっていた。

直接の原因はこうだった。「見張る」を作成するメカニズムと言うのは、タイルを生成するものと共有している。同じソースから別の物が出来上がるのだが、ウォッチャーの「中身」とタイルの中身とでは、しばしば別のクラスのオブジェクトになる。

僕はコードからこれを読み取る事が出来なくて失敗してしまった。Smalltalk のレイトバインディングというのは同じスーパークラスやインタフェースを持っていなくても、メソッド名の綴りさえあってれば良いというお手軽な仕組みなのだが、逆に言えばコード自体に含まれるヒントは少ない。

最近はテストドリブンが普及してきたので、それを型チェックの変わりに使うのが正しいやり方なのだと思うけど、悪い事に Squeak のエンドユーザ版、いわゆるプラグインイメージでは単体テストを含める事が出来ない。サイズを減らすため、単体テストのコードが省かれているため、更新コードを読み込むときにエラーになるのだ。単体テストはどうせ開発者しか使わないので、何とかエラーを無視するように出来ないかな。