誠ブログは2015年4月6日に「オルタナティブ・ブログ」になりました。
各ブロガーの新規エントリーは「オルタナティブ・ブログ」でご覧ください。
010.【自分の事】初めて経験した「虫(BUG」の話
»2011年12月20日
IT雑貨屋、日々のつづり
010.【自分の事】初めて経験した「虫(BUG」の話
1967年生まれ、神奈川県横浜市在住。ひょんな事からIT業界に努めて四半世紀、嫁と子供2人、あとメス猫一匹を抱えて、日々奮闘しているエンジニア(??)です。趣味はバイクと読書。IT業界の事、仕事の事、趣味や日々の雑感などについて、これから書いていきたいと思います。
当ブログ「IT雑貨屋、日々のつづり」は、2015年4月6日から新しいURL「http://blogs.itmedia.co.jp/satou55_makoto/」 に移動しました。引き続きご愛読ください。
今回で10個目の記事になりました。早いもんですねー。
私が今取り組んでいる仕事はネットワークサーバでのサービス企画という業務で、ある会社でお世話になっています。長い間、お客様と折衝したり、システムを実装する仕事をしていましたが、今は発注側としての仕事が主です。タマに「何故、ここで仕事をしているんだろう」と素朴に感じたりする事もありますね~・・。
何か南の海に浮かんでいる「椰子の実」の気分であったりします。
年末進行で全然心が安らかでない、佐藤@IT雑貨屋です。
今回は前の続きで、自分の話をしたいと思います。
前回は自分の担当として「デバイスドライバ」という役目を得た事まで書きました。まあ自分の役目をもらったという事は、当然の事、義務と責任を併せ持つわけで、仕事としては甘くないですよね。
そんな洗礼を、ある日突然受けました。
ある朝の事、出勤すると上司の久保田利伸似の部長から呼ばれました、理由はある納品先の設計事務所でデジタイザで図面をトレースしているとタマに位置が飛んでしまうとの事。気になって仕方が無いという軽微なクレームがあったので、調査して対応可能であれば対処して欲しいという事でした。
まあ引き継ぎを受けた後、初めての仕事でしたので、フロッピーにソースプログラムとマクロアセンブラなど、ドライバ開発ツール一式を持って意気揚々と件の設計事務所に向かいました。
事務所につくと挨拶もそこそこに、早速事務所の奥にあるCAD部屋に案内され、状況の説明を受けて調査の開始。とにかく現象が再現する手順を確定する必要があるのですが、当の事務所の社長もよく解らず「とにかくタマに、しかも大事な時に位置が変な所へ飛んでしまい、困っている」という話しかありません。
半日の間、あーだこーだ弄っていても、現象は全然再現されない。
結局1日イジっても再現しないので、再度様子を見てくださいと言い残して帰社し、部長に報告。その日は終了しました。
しかしその翌日、またしもて件の設計事務所から電話が入り、「また同じ現象が起きた」という事なので、早速現場に急行。でも行って見ると同じ様に再現されません。まるでタヌキに化かされているというか、本当に「バグ(虫)」とはよく言ったものだと関心したりです。しかし事務所の社長にソフトの品質という事に疑問を持たせてしまう事にもなりかねないので、とにかく1週間時間を頂いてまずは調査をするという言葉を残して帰社しました。
帰社すると「一週間で特定できるのか?」と言われ、「頑張ります」という気合の返事しか出ませんでしたが、とりあえずやるしかない状況でした。そしてデバッグについては本体のCADプログラムには手を入れられないので、まずはデバイスドライバ側で確認手段を入れるしかありません。ただデバイスドライバはアセンブラで作成されているので、一般的に言う「メッセージを入れ込んで動作確認」という事自体、生易しいものではないのです。そもそも「メッセージを出す」などという機能は無く、それが必要ならば直接ハードウェアを操作して作らなければなりません。
泣き言いっても始まらないので、デジタイザの制御をするRS-232Cドライバの中に、幾つか確認プログラムを組み込んで、動きを監視する様なものにしました。もしデジタイザから送られた座標で、RS-232C側のLSIで受信した座標と、プログラム側に渡す座標が違う場合には、画面の左上に「@」を表示するという内容です。これだけ作るのに半日を費やしました。
そして自社内のデモ機にドライバを入れて、営業の人に空いている時間に操作して貰い「@」が表示されたら呼んで欲しい旨お願いしたところ、翌日に呼び出されました。見てみると確かに画面左上に「@」が出ています。これで解ったのは、やはり座標系でデジタイザからCADに渡す間で情報が壊れているという事。
もうそこからはひたすら「机上デバッグ」です。今の様に便利なツールなんてありません。RS-232Cを制御するLSIから座標を取得して、CADへ渡すまでの一連のプログラムについて、8086命令セットのマニュアルとLSIのコマンドリファレンスを見ながら一つひとつしらみつぶしに調べました。
「あった!!」
プログラムの虫を見つけたのは3日目です。それはデータをブロック転送する箇所で、条件によっては座標データの領域を破壊してしまう「可能性」があるというものでした。簡単に言えば一般的には命令1つを置かなければいけないところ、その命令が抜けていました。しかし抜けていたからと言って必ずおかしい動きをするというものではなく、可能性の問題です。
取り急ぎ一つの命令「cld(クリアディレクションフラグ)」という命令を追加し、そのドライバを先ほどの営業デモ機に入れて動かしてもらいました。その後2日間、気になりながら状況を見守りましたが、現象は再現しませんでした。
その状況を部長に報告し、約束の1週間後に修正ドライバを持って行き、設計事務所の社長に説明して、納品されているシステムのドライバを入れ替えました。
その後、もし異常が再現したら連絡下さいという言葉を残して帰社、推移を見守りましたがその後に問題は発生しなくなっていました。
いやぁ~・・・めでたいめでたい。
引継ぎを受けて、社内でも誰もわからないプログラムでしたが、初めてのミッションを無事乗り越えて、うれしさ反面、心地よい疲れがありました。
しかし直ぐに上司からお目玉を頂戴しましたよ。理由は製品版のソースに反映していなかった事でした。大目玉をもらいましたよ。
「詰めが甘いんだよー!!」久保田利伸マジギレでした。
でもまあ、良い経験というか、今でもこのはじめての経験は、昨日の様に覚えています。
ここまで書いていて感じましたが、当時の会社はチャレンジャーですよね。
まだ覚えたてのヒヨコの様な二十歳そこそこの社員に、そういう事をまかせっきりで対応させてくれたんですから・・・ある意味、懐の大きい会社であったのかもしれません。いや・・当時の時代というのは、そういうモノを許容するだけ、まだまだ大らかさがあったという事でしょうか。
ここまで読んで頂きありがとうございました。