誠ブログは2015年4月6日に「オルタナティブ・ブログ」になりました。
各ブロガーの新規エントリーは「オルタナティブ・ブログ」でご覧ください。

024.【自分の話】OS/2の思いで(その四)

024.【自分の話】OS/2の思いで(その四)

佐藤 洋之

1967年生まれ、神奈川県横浜市在住。ひょんな事からIT業界に努めて四半世紀、嫁と子供2人、あとメス猫一匹を抱えて、日々奮闘しているエンジニア(??)です。趣味はバイクと読書。IT業界の事、仕事の事、趣味や日々の雑感などについて、これから書いていきたいと思います。

当ブログ「IT雑貨屋、日々のつづり」は、2015年4月6日から新しいURL「​http://blogs.itmedia.co.jp/satou55_makoto/」 に移動しました。引き続きご愛読ください。


 「春はあけぼの。やうやうしろくなりゆく山ぎは、少しあかりて、紫だちたる雲の細くたなびきたる。」(枕草子)

 最近では日が長くなりましたね。夕方5時をすぎても空には残光が残っていますし、朝でも6時は明るくなっています。季節は確実に動いていて、春近しというのを実感しながら、日々仕事に明け暮れています。

 佐藤@IT雑貨屋です。

 今回は前に引き続き、OS/2の思いでを書いていきます。

 このシリーズ、かなり長くなっている事を知りながら、もう少しおつき合い頂ければと思っています。

 さて前回までで、発注元のトップSEから種々教示を受けるだけではなく、実際にライブラリまで提供された事により、プロジェクトの進捗はほぼ予定通りに進める事ができる様になり、私自身も何とかプロジェクトに迷惑をかけない様に、日々奮闘をしていました。

 元のCADシステムですが、MS-DOSで動いていた事もあり、多少のメモリリークでもとりあえず「システム停止」になる事もなく動いていたのですが、OS/2は「シングルユーザ/マルチタスクOS」という事もあり、メモリ管理についてはかなり厳格でした。

 その為に移植時には様々なところで「保護違反」というエラーが頻発していましたが、一つひとつ丁寧に解析を進めながら潜在的にあったバグをつぶしながら作業は進みました。
 今でこそwindows上では当たり前な事(と言っていいかは別にして・・・)ですが、当時のプロジェクトメンバーにとっては結構、頭が痛い事でしたね。

「何時かどこかで保護違反」

 こんな言葉を口ずさみながら、日々奮闘しつつもプロジェクトは一歩一歩確実に進んでいました。

 そんな中、ある図面を描画する段階で「保護違反」が発生し、その原因を突き止めてみると、どうやら私の担当するグラフィック処理である事が判明し、「至急何とかする様に!」という厳しいお達しが出されました。

 さっそくデバッガ(シンボリック・デバッガという、今にしてはチープなプログラムですが)で調べてみると、確かに私の担当するプログラム内で発生しているのが確認できたのですが、いくらソースコードを調べてみても、メモリを破壊している節は見あたりません。

 そして幾日か終電で帰宅という状況で調べていくうち、どうやら先の提供されたライブラリが怪しいという結論になったので、開発者である発注元のSEに連絡をとりました。

「どうやら****という関数の中で保護違反が起きている様なのですが、調べていただけませんか?」

 そういうと先方からは「そんな不具合なんて発生する訳が無い。もう少しシステム周りを調べて下さい」と、けんもほろろな対応。要は「あなたの所の使い方が悪いのであって、自分の作ったプログラムは問題なんか無い!」という事でしょうか。

 しかしいくら調べても調べても、結果としてはそのライブラリの中でしか、保護違反は発生していないとしか見えません。しかしただ「調べてくれ」では相手も動いてくれない。

 この時、私は上司に全プログラムを再コンパイルしてデバッグ情報を付加してもらい、再度リンクしなおしてアセンブラレベルでデバッグをしたいと申し出ました。
 しかしこれは数台の端末うちの一台を占有する事と、数百本に渡るソースをコンパイルする作業のため、実際には多くの稼働(とは言っても私の稼働が1週間程度)を削る事を意味します。この時には遅れは出ていないとは言っても、それほど余裕のあるものではありませんし、なにより他システムとの連動試験の日程を考えると、一つの大きな賭けの様なものでした。

「よし!やってみよう!」

 当時の上司は私の意見を聞き入れてくれたので、早速作業に取りかかりました。
 そこからは毎晩終電で、日によっては会社に泊まり込みながら作業を行い、一週間後には保護違反の被擬箇所をアセンブラレベルで特定できました。

 この内容を早速、先方のSEに連絡。

「今回の問題ですが、実行メモリ上でアドレスがXXXX:XXXXの箇所で発生しています。そこではESレジスタの値が0のまま、SIレジスタでメモリを参照していますが、これはおそらくメモリテーブルを参照している処理と思われます。アドレスを見る限りにおいて、提供されたライブラリ内の****という関数と思われますが、調査していただけますか?」

 具体的な内容で問題点を突きつけた所、相手のSEも少し狼狽しながら「解りました、少し調査をしてみます」という事となり、結果としては3日後に「潜在的なバグがありましたので、修正したライブラリをリリースします」という連絡が入りました。

 そしてリリースされたライブラリを差し替えた所、問題の「保護違反」は発生する事なく、無事に問題点をクリアする事ができたのです。

 しかし結果として、この一連の問題の為にスケジュールにしわ寄せが発生し、様々な要因も積み重なった結果、最終的には後半の1ヶ月の間は会社の近所のホテルに缶詰となり、それこそ皆が不眠不休で作業をせざる得なくなってしまいました。

 しかしその後、予定されていた連動試験も無事に実施する事ができ、このプロジェクトは当初の予定通りにリリースされるに至りました。

 簡単に書いていますが、今から思い返してみても非常に思い出深いプロジェクトでした。しかし大変な中でも皆で協力して乗り切ったという達成感は何者にも代え難いものでしたね。

 よく複数の会社で共同して取り組むプロジェクトというのはありますが、私にとってこのプロジェクトが初めてであり、もし問題点が発生してもなおざりにするのではなく、徹底して突き詰める事、そして問題点を提起する際は具体的な提示が必要である事を身を持って教えてもらった機会でもありました。

 このプロジェクトが終了した時、私自身もOS/2についてかなり詳しくなっていて、社内でも「一人前のシステムエンジニア」として認めてもらえる様になっていたのです。

 仕事で苦労するにしても、こういう「実りのある苦労」は、その時はつらくても、後々自分のモノになるんですよね。

 今回はここまでとします。
 ここまで読んで頂きありがとうございました。