枕草子 (My Favorite Things)
【第426回】 ランタイムエラーの原因(2000年11月9日)
- 往路はあさま504号。家にあった手作りケーキをつまみながら,水筒に詰めてきたMission Hill茶園のSFTGFOP1を啜り,窓の外を眺めれば軽井沢あたりでは紅葉も盛りを過ぎて枯れ木が目立つ。もう冬なのだなあ。
- 国際シンポジウムでも明日の講義でも,マラリアへの行動防御が個人ベースでみれば日々変動するというモデルの特性を説明するのだが,対比させるべき決定論モデルの数値計算結果を示すとよいという示唆をいただいたので,昨夜からプログラムの改変に着手した。昨夜の段階ではランタイムエラーが潰せなかったのだが,原因は,ファイル名を変えたときにインクルードするべきヘッダファイル名を変えるのを忘れていたという間抜けなミスだった。やはり眠いときは仕事の効率が悪い。
- 一般に,どんなに想像力を逞しくしてデバッグしても,ランタイムエラーを完全になくしておくことは至難の業だ。だからこそベータテストを大規模にやってバグレポートを集めたり,最近のマイクロソフトみたいに大々的に宣伝して販売してからエラーレポートを集めてバグフィックスしたものをサービスパックと称して配ったりすることが行われるわけだ。自分で作っているソフトの場合,ランタイムエラーの最大の原因は,入力データがおかしいことだと思う。想定した範囲を超えていたり,フォーマットが狂っていたり。公開するようなソフトだったら入力エラーハンドリングをきちんとやるのだが,自分のデータであればエラーハンドリングにかかる手間とデータチェックにかかる手間は大差ないことが多く,しかもそうやって作ったプログラムは大抵その論文のためにしか使わないから,エラーハンドリングにかかる努力を惜しんでしまうことが多い。こういう志向性を鑑みるに,ぼくは本物のプログラマではないようだ。
- 考えてみれば,OSの入力データといえばユーザのキーやマウスの操作だったり,PCIとかUSBといった汎用性の高いバスを通した新しいデバイスだったりするわけだから,OSを作った時点では予想もしなかったような妙な入力があるのは当然で,公開せずにランタイムエラーをつぶすのは不可能といっていいだろう。その点はバザール方式のソフトだって同様だし,マイクロソフトのやり口にだけ文句をいうべきではないのかもしれない。値段が高すぎると思うけど。
- 最近,sambaでプリンタ共有しているマシンが増えてきたので,パスワード平文化レジストリ設定ファイルが必要な局面が多く,いちいち探すのが面倒なのでここに置いておくことにした(Lha自己解凍形式19.9 KBのsmbplain.exeを実行して生成するWin**.regの対応するバージョンのものをダブルクリックするだけでよい)。実は今も「必要な局面」なので,早速試してみるつもり。sambaでランタイムエラーが出ることはほとんどないから,優れたプログラムなのだなあ,と思う。
- 5分後,計画通りうまくいって満足した。生協からIntraserver Technologyの製品は取引がないので扱えないとかいう返事があったので,日本に代理店はないものかと思ってWEBを検索したら,Keyton Computerという会社が扱っていることがわかった。しかしSE/LVDのカードは10万円を超える額だったので,LVDチャネル1つだけのものを注文することに決め,昼食がてら生協に向かった。ところが,生協ではこの会社とも取引がないという。国内の会社なので取引できるかどうか訊いて貰うことにしたが,もし直接書類を作って貰えるなら,直接やった方が早いかもしれない。アカデミックプライスもあるらしいし。
- 食後は,明日の講義資料を完成させて15部打ち出しを済ませてから,IPアドレスの割り振り直しとネットワーク配線図を更新するのに20:00近くまでかかった。もちろん,例によって時折中断したのだが(科研費申請原簿票に1つ余計な○を書いてしまったことで,この票は一切の修正を認められていないので全部書き直し,コピーをとって切るなんていう作業も含む。以前も書いたけど,こんなのはパスワードを渡しておいてWEBで登録させればいいのに),それにしても大仕事だった。今月末に予定されている,実際にIPアドレスをつけかえる作業を考えると,もっと大仕事であることが予想され,今からうんざりしている。IPアドレスの変更なんてやりたくないのだが,東京大学として130.69から始まるIPアドレスはJPNICに返すことに決まっていると言われては仕方がない。何度も長嘆息するのは格好悪いが,抑えることができないくらい疲れた。
- その後,気を取り直して講義準備を再開した。スライドとOHPを併用するスタイルで例年やっていたのだが,OHPだけでやる方が学生は見やすいだろうと思い,無謀にもOHP化に着手した。スライドをフィルムスキャナで読ませ終わったのが21:45だったので,カラーレーザープリンタに打ち出し命令を送って(Power Point 2000で読ませたので連続印刷ができるのだ)大急ぎで帰り支度をし,上野まで自転車を飛ばして階段を駆け下り,ぎりぎりで終電に間に合ったところだ。1号車に空席があって座れたので助かった。明日は始発か,遅くもその次のあさま502号で来なくてはいけないので,これから眠ろうと思っている。
▼前【425】(かつてメールに書いた文章(2000年11月8日)
) ▲次【427】(環境保健学講義「マラリアと環境」(2000年11月10日)
) ●枕草子トップへ