自分史上最悪のトラブル(後編)

本テキストは続編となっています。
前編のテキストは、「自分史上最悪のトラブル(前編)」です。

商社の部長は自分に責任がのしかかってくるので厳しいが、その下の課長さんはだいぶ気が楽なようで、昼間は沈黙しているのだが、夜中の2時〜3時くらいになると、ちょいちょい電話をかけてくる。その電話はこんな感じ。
商社の課長「どーですかー!」
まだ解析中です。。。
商社の課長「やってますかー!」
やってますよ。。。
商社の課長「メール読みましたかー!」
はいはい、いま読みます。。。
商社の課長「寝てますかー!」
そりゃもちろん寝たいです。。。
商社の課長「食べてますかー!」
そういや、もう20時間以上も何も食べてない。。。
商社の課長「差し入れいりますかー!」
そりゃうれしいですね。。。
商社の課長「いまから飲み行っちゃいますかー!」
いや、そんな場合ではなく。。。
商社の課長「焼肉オゴっちゃいましょーかー!」
無茶な誘いはやめてください。。。

しかしこの課長、絶対「責任取るのは俺じゃねぇ」って思ってやがる。。。

前編に書いた通り、このソフトは、元は5年前にインドの会社が作っている。それがまったく動かなかったため、そのときうちの会社が終盤でファイヤーマンを請け負っている。

インドの会社が書いた部分には、コメントがまったくない。だったら、うちの会社がファイヤーマンで入ったとき、コメントを入れておきゃあよかったのに、突貫工事でコードを直したためなのだろう、入れるのをサボっていた(お約束通り、設計書などは一切存在していない)。

「コメントはまったくゼロなのか?」と聞かれると、それはFalseである。5年前にうちの会社が入れたコメントが、ほ〜んの若干だが存在する。しかし、そのコメントがこんな感じ。

// きっと5秒周期で動く。

「きっと」って。。。

// ↓ここ問題あります。

どんな問題だ! 問題の内容を書かんかい!

// コマンドタイマールーチン外で行う>暫定

もしかして、いまも「暫定」のままですか?(汗)

// EEPROM問題ある:最大256?

うわ、読まなきゃよかった!

ならばソース自体は読みやすいかというと、そんなことあるわけがない。前述の通り、とんでも密林ジャングルである。OSだって載っちゃいない。そのジャングルが40KLOC(リアルステップで4万ライン)あり、

volatile int i;
for (i = 0; i < 1000; i++) ;

こんなんが59箇所もあって、絶妙の(奇跡とも言う)タイミングで動いている。1000を900に変えた日にゃあ、何が起こるかわからない

フラグだって、

extern USHORT flag;
extern USHORT xxflag;
extern USHORT xxflag2;

こんなexternフラグが数百もある(extern volatileフラグだけで20個も)。しかもそのフラグ操作が、

xxflag = 4;

とか書いてある。あのー、4てなんですか?(汗)
で、当たり前のように、

if (xxflag == 3) {
    :
} else if (xxflag == 4) {
    if (xxflag2 == 3) {
        :
    }
}

などとゆー判定が大量に存在しており、でも#defineで定数値は一通り切られていて、たまたま直値を書いちゃってる箇所があるだけなんだよね、だったらヘッダ見れば値の意味がわかるよね――と思ったら、どこにも定数値が切られてない。orz
こぉのフラグども、お前らの取り得る値の範囲はどこまでなんじゃー!

Mさんに、「ねぇ、この処理ってさ、いったい何やってんの?」と聞いても、
「わからない」
「じゃあさ、この領域に書かれてる値って、モノは何?」と聞いても、
「わからない」
処理を聞いてもわからない〜 値を聞いてもわからない〜
  にゃん、にゃん、にゃにゃーん にゃん、にゃん、にゃにゃーん
泣〜いてばかりいる……って、泣きたいのは俺だー! 子猫ちゃん、お前が先に泣くなー!

こんなソースを、ロクに睡眠も食事も取らずに解析し続け、各方面からの電話がガンガン鳴り続け、メールがびゅんびゅん飛び続けたら、いーかげん気絶しそうになる。イスに座ってても脳がぐらんぐらん揺れて、「あれ、俺ってば、船酔いしてる? ここはタイタニック?」とか思った。

――いずれ補足を書くかもしれませんが、キリがなくなりそうなので、この辺で。

自分史上最悪のトラブル(前編)

北海道出張から戻り、飛行機を降りて、ケータイの電源を入れてみたら……ものすごい数の留守電の着信通知と、おびただしい数のメールが届いていた。そのすべてがMさんから。

市場バグ発生

悪夢の始まりである。

この仕事(ソフト開発)は、元はインドのソフト会社が開発したものに対して、ハードの部品変更に伴い、うちの会社がバージョンアップを請け負ったものである。
基本的には現場に任せて、私はせいぜい週に一回の内部進捗会議に出る程度だった。特に大きな問題も発生せず、スケジュール通りに進捗し、無事に納品した、はずだった。。。

開発したソフトは、いわゆる組み込みソフトウェアである(商品のROMに焼かれる)。パソコンなどで動くソフトと違って、一度焼かれて市場に出回ってしまったら、
「え、バグが出た? それじゃいまから直しますぅ」
というわけにはいかない。リコールである。

この開発はメーカーから直接請けたものではなく、間に商社が噛んでおり、この商社の部長がヤクザである。目が笑っているところを見たことがない。
商社の部長「おささん、リコール代、払ってもらいましょかぁ。計算したところ、○億円ですねぇ」
えー、誠に恐縮ですが、契約上、弊社にそのような義務はない、か、と。。。
商社の部長「じゃあ指詰めてもらいましょかぁ」
それはちょっと、、、ギターが弾けなくなるんで困ります。って、ずっと弾いてませんけど。あ、そうだ、キーボードが叩けなくなっちゃうと困るかな、あははっ。
商社の部長「困りますかぁ」
ええ、困ります。(汗)
商社の部長「だったら、この事態をなんとかせんかい!」
ぜぜぜ、全力で対応させていただきますっ。(汗びっしょり)
まずはこの日から8日間帰宅できなかった(2ヶ月間で何時間眠れただろうか)。

しかし、はっきり言って、完全に現場任せだったため、そもそもどんな仕様を持つソフトなのか、私は大枠しか知らず、詳しいことはまったくわからない。私が詳細をおさえていないことは商社もメーカーも知っており、そのためトラブル発生直後は、商社もメーカーも、開発リーダーであるMさんのケータイに電話をかけてきていた。が、Mさんはケータイに着信が来ると、そのまま私のところまで小走りでやってきて、目の前に来てから電話に出て、
リーダーのMさん「はい、Mですが、おさに代わります」
とケータイを押しつけてくる。で、1日もしないうちに、すべての電話が私にかかってくるようになった。朝だろーが昼だろーが、夜中だろーが明け方だろーが電話は鳴りっ放しだし、飛んでくるメールの数も尋常ではない。
そして、1日に2回はこんな電話が来る。
商社の部長「おささん、覚悟はできましたかぁ」
覚悟、と言いますと?
商社の部長「リコール代、払いますかぁ。それとも……」
払います! って違う! 全力で対応させていただきます!(汗びっしょり)

バグ自体はとってもショボかった。マクロ定数(C言語の#define)を間違って使っていたのである。
そんなもん、ソッコーで直せー! さっさとリリースしろー!
で、未明にリリースし、とにかくソフトは直したから、あとはこの事態をどう収束させるかだが……と考えていたら、メーカーから電話が入る。
メーカー別のバグが見つかりました
べべべ、別のバグぅ? そしてその直後、
商社の部長「おささん、工場のラインも止まってるんですがねぇ。その損害賠償は……」
申し訳ございません! 即座に対応いたします!(汗びっしょり)

しかし、市場で2つもバグが出るとは……。これは今回のうちのバージョンアップによって、他にもバグが混入したかもしれない。念のため、確認してみねばなるまい。
オリジナルとバージョンアップとのソースのdiffを取り、その差分をすべて確認することにした。100箇所以上もの差分があったが、、、
あー、ヤバーい! 他のバグ見つけちゃったー!
怖いから黙ってよっと。てへっ。(笑)
とはいかず、メーカー様へ謝罪と説明に参上し、
「多大なるご迷惑をおかけしましたが、今回弊社が改造を行った箇所すべてをチェックいたしました! もう他にバグは発見できません! 明日未明までには修正版をリリースいたします!」
と言い切り(ほぼ土下座状態で)、未明にリリースをし、「もうこれで大丈夫だー」と眠い目をこすりつつ、別のプロジェクトの会議をしていたら、
メーカー別のバグが見つかりました
もももももももももうだめだー、指がなくなるー!
そしてかかってくる電話。
商社の部長「ああ、おささん。うちの社長がですね、『呼べ!』と申してるんですよ」
よべ?
商社の部長「今回のこれはいったいどーゆーことなのか、うちの社長に説明に参上してもらえますかぁ」
わかわか、わかりました。手袋をして参上させていただきます。(嫌な汗)

もうdiffなんか取ってる場合じゃない。獣道すらない密林ジャングルのお化けのようなこのソースを、ハチマキしめて読むしかない!

で、読んでみて驚いた。これほどの驚きは近年ナンバーワンである。

ハードの部品交換に伴う改造は良しとして、アプリ部の改造は、そのすべてがメモリ領域を書き換える処理なのだが……それが全部間違ってる!

diffでは改造箇所のみが見えるため、それら1行1行は正しい。しかし、タイミング(改造コードを入れる場所)が、一つ残らず全部間違ってる! なぜだー、どーしてこのタイミングでこの領域を書き換えるー! ちょっとそこのあなた、それが全部ですよ? 全部って意味、わかります?

約100箇所にも手を入れているが、それらすべてのタイミングが違う! すべて! 全部! ぜーんぶ! オール!

おいおい、まぐれでもいいから、1つぐらい当てようぜ。。。

――後編へ続く。

久々の更新

このところ更新が滞っていたところへ、「ものすごいメールアドレスの男」からお便りをいただきました。大感謝です。

再開の際のネタにしていただければと思い、メールいたしました。

6月3日の日曜日、妻と都内に出かけた際の珍風景。
新宿駅に着き、妻の用足しを待っている間、アルプス広場をぶらぶらしていると、おもむろに目に飛び込んできたのが…

最初は何かのオブジェかと思いきや、全く生身の人間が手摺りに横たわっておりました。

本人はどういうつもりでこのような行為に及んだのか、今、思い起こしても、謎はとけぬままです。

恐ろしき街、新宿…(*_*)

車から降りない。

関連話: 2012/1/23

退院の日――。
車で迎えに来てくれた女房。
女房「帰り道、夕飯の買い物していくから」
じゃあストッカーに行こう。安いからさ。
女房「あそこは寒いからイヤ」
寒い? なんで?
女房「駐車場から店の入口までが遠い。車を降りてから店に入るまでが寒い」
そ〜かぁ〜? そんなことないと思うけど?
じゃあ、ヤオコーにすっか。
女房「あそこもイヤ。やっぱり入口までが遠い。寒い」
それじゃ、カスミに……。
女房「なんであなたが決めようとするのよ! あなたが買い物してくれるの?! 歩くのツライんでしょ! 買うのはあたしなんでしょ! だったら、あたしが行きたいところへ行かせてよ! あたしはコープに行くから!」
コープ? なんだってわざわざあんな遠いところに?
女房「あそこは駐車場が入り口にくっついてるの! 車を降りたらすぐに入り口なの! だから寒くないの!」
わかったよ、好きにしろっ。

コープに到着。
女房「じゃあ買ってきて」
ええっ、俺がっ? なんでっ?
女房「あたしは寒いから降りたくない」
だったらなんでコープに来たんだよ!

カップラーメン

カップラーメンを作る3分を待てない。3分どころか、3秒すら待てない。フタを全部引っぱがし、お湯をどばどばっ。そして次の瞬間にはもう食い始めている。なもんだから、食べるときの音が、
女房「ばりっ、ぼりっ」
もはやラーメンではない。

あのさぁ、なんで3分くらい待てないの? やっぱお前って人間じゃないよね。エイリアンだよね。夜中になると口が裂けて、そこから手が出てくるんだろっ。
女房「そうだよ。今度見てごらん。見る勇気があるなら」
うわ、だめだ、恐くて見れそうにないっ!

入院

正月早々、一週間ほど入院しておりました。入院なんてしちゃうのは、2007/9/15以来です。

入院初日。病院へ行く前に、まずは「しまむら」に寄って病院内で着るパジャマを買う。
女房「きゃー、この猫のクッションかわいい! これ買って、これ買ってぇ!」
アホか! 入院の準備のために来てんのに、なんでお前にクッション買ってやらなきゃならんのだ!
女房「いーわよ、じゃあ自分で買うから」
猫クッションを買うや、さっさとしまむらを出ていく女房。
おーい、パジャマがまだなんだけどー! 仕方ないので、一人で買い物をする。

病院へ着き、まずは病棟へ案内される。もちろん、大部屋である。
看護師さん「一番奥の左側のベッドになります」
はいはい、一番奥の左側ね。って、このベッドですか? 本当に? いまのいままで、誰かが寝てた痕跡がありありとしてるんですが。。。
看護師さん「あ、ベッドメイク忘れてた! いまやりますから、待っててください!」
……大丈夫か、この病院。なんかとっても不安だな。。。

医師から説明を受ける。
医師「今日はこれから、明日もずっと絶飲食になりますので、何も口にしないでください。明日の夜には水分は取れますが、刺激のあるものはだめです」
刺激のあるものと言うと?
医師「例えば、コーヒーとか、100%ジュースはだめです」
医師の説明が終わるや、
女房「ちょっと買い物してくるから」
そう言って出かけた女房が買ってきたのは、
女房「はい、これ。買ってきてあげたよ、缶コーヒー」
……お前さ、さっきの先生の話、一緒に聞いてたよね? 今日は絶飲食だって言ってたよね? 明日の夜は飲めるけど、でもコーヒーはだめだって言ってたよね? なのになんでコーヒー買ってくるわけ?
女房「平気でしょ」
なにが?!

手術の日。
女房「手術は何時から? その時間までには来るから」
と言っていた女房は、手術が終わっても来なかった。
夜、消灯間近になってから、
女房「やっほー、元気ー?」
かましい! 帰れ!

この病院だが、良かったと思う点はあまりなかったが、不満はいくつかあった。特に、看護師さんで注射がうまくできる人が一人しかいない。
毎日、午前と午後に点滴を打たれたが、これがことごとく失敗する。血管を外れるのは当たり前で、「痛かったらナースコールしてくださいね」と言われるものの、たかが点滴が痛いくらいでナースコールなどしたら恥ずかしい。おかしいな、こんなに痛いはずないんだけどな、と思いつつも我慢していると、痛さのあまり汗がだらだら出てくる。ついに耐え切れず、汗びっしょりになってナースコールすると、
看護師さん「ああ、外れてますね。もう一度打ちましょう」
このパターンだけで6回もあった。

そんなこんなで、無事に退院できました。
医師「もう退院する? そんなに会社に行きたいのか? もうちょっといなさい」
と言われましたが、一日も早く仕事に復帰したいため(本当は入院費が払い切れないため)退院させてもらいました。