【小説】戦う!ソフトウェア・エンジニア
『盤下の敵』(5)
●絶望と希望の交差
新事実と絶望を胸に、我々は帰路についていた。
私もTも気分は最低だった。
現地でMさんにお礼を言い、来た時と同じように寝台列車で本社に戻る途中だ。
F主任は何かをずっと考え込んでいる。
T:「収穫はあんまりなかったな」
私:「そうだな。あー、光ケーブルかよ。一瞬喜んだのになあ」
主任はまだ黙っている。
T:「これからどうしましょうか?」
F:「絶対に何かある。気に食わない」
人相から想像できないが、めちゃくちゃ考え込んでいる感じがする。
私:「そりゃ、何かあるかもですが、でもですよ、相手は”光ケーブル”なんですよ。電気屋の私だって光ケーブルの特性くらい知ってますけど」
F:「ああ、俺だって知ってるさ。でもな。なんかこう、ひっかかる」
光ケーブルは光ファイバーを使った通信ケーブルだ。
当時は施設の難しさもあって、まだ普及しているとは言えなかった。
メタルケーブルと違って、許容できる曲げ半径が大きくて、細かい場所への配線が難しかったからだ。
だが、耐ノイズ性は当然のことながら良い。
宇宙から飛んでくるニュートリノでも貫通しない限りは。
本社に着くとF主任はすぐに現地と同型の光ケーブル設備一式を購入するように指示した。
そして数日後に光ケーブルが届き、再現環境への設置が始まる。
私とTはまだソースコードを追いかけていた。
当然、何もわからない。
幸いなことに、現地から障害発生の連絡はまだない。
F主任はK先輩を呼びつけて、再現環境の横にでっかい扇風機を持ってこさせた。
扇風機を最速で回してノイズ源にして、まる一日試験を続ける。
私とTも、扇風機の位置を変えたり、回転数を変えたりしながら、ノイズがどれくらい発生しているかをノイズ測定器で測った。
もう、こうなるとソフトウェア開発をしているのか、ハードウェア開発をしているのか良くわからなくなってきた。
F主任がそんな我々を見て言うのだ。
「いいか、これがシステムってもんだ。ソフトウェアだけでシステムが組めるか」
T:「ええ、まあ、そうですね。ハードウェアの知識もなおざりに出来ないってことはわかります」
私:「右に同じ」
主任はふむふむといった感じで聞いていた。
F:「もっと場数を踏むとな、わかるようになるさ。ああ、それからな。『なおざり』は変だぞ。それじゃあ『まったくやりません』ってことになる。それを言うなら『おざなり』だ。」
やっぱり細かい。
相当なノイズ源を与えても、全金属製の盤内に変化を与えることはできなかった。
そりゃそうだろう。これは時間の無駄だ。
F主任の指示で盤を開放して試験することにした。
もっとも、今度はあまりノイズが強すぎると生産管理システムもそうだが、装置側も停止してしまう可能性があるので、かなり注意してノイズレベルを調整する必要がある。
慎重にレベルを調整しながら試験を進めた。
とにかく地道な作業だ。
K先輩、M先輩も動員されて、課長・リーダも珍しく支援してくれた。
F主任が本業そっちのけで我々の作業をサポートしている。
一ヶ月以上も障害原因が特定されないことで、本社でも重点管理プロジェクトに認定されていたのだ。
K先輩が扇風機のカバーを引き剥がした。
モーター丸出し。
そのモーターからバリバリとノイズが出ている。
ノイズを発生させる専用の装置もあったが、相手が光ケーブルでは意味がない。
しかし、遊ばせておくのも勿体無いので、光ケーブル本体にもノイズ発生装置を噛ませておいた。
ほとんどあらゆる箇所にノイズ源を置き、慎重に強度を調整する。
F主任の”勘”が正しければ「盤の中に犯人はいる」と言う。
そんな試験を続けながら、私は一抹の不安を覚えていた。
私はソフトウェアエンジニアだ。
もしかしたら、やっぱり問題はソフトウェアのミスによるものなんじゃないかと。
その一方で、障害原因がソフトウェア以外であって欲しいと願ってもいた。
こんな思考が何度も何度も繰り返される。
疲労のせいか、答えはいつも有耶無耶になるのだ。
客先工場内が相当に暑かったことから、生産管理システムを「高温試験室」に入れて誤動作を確認する試験が平行で進められた。
高温試験室は小さいので、全部の機器は入れられない。
試験は続いていたが、高温低温の場所での使用に耐えるように設計された工業用コンピュータはその責め苦に耐えていた。
今のところまったく問題がなかった。
交代制で試験を進め、すでに一週間程度が経とうとしていた。
この頃になると、全員の顔色は敗北の色に染まって行く。
F主任が試験室を訪れた。
F:「まだ駄目か」
私:「ええ、何にも起きませんね。」
ふうっと、主任がため息をつく。
皆、すでに疲労は極限に達している。
M先輩は体調不良で先日入院してしまった。
最近、ちょっとだけ涼しい日が続いていたが、もう暑くても涼しくても、それを感じ取る感性が死にかけていた。
せめてもの救いは、この1週間ほど現地で問題が発生していないことだった。
呼び出しが来ない。
呼び出されないので、余計な労力を他所に割く必要がない。
珍しく課長が試験室に足を運んで来た。
課長:「まだ駄目かね?」
F:「ええ、目論見通りには行きません」
課長:「ふうむ。今日も営業からせっつかれたよ。『開発は何をしているんだ!』ってね。ま、我々としても遊んでいる訳じゃないとは伝えておいたが、部長や常務からの催促も止まらん」
F:「申し訳ありません。私の読み違いってこともあるので。時間の浪費だった場合は、私の方からも部長・常務にご説明申し上げます」
課長:「ああ、そんなこと気にするな。怒られるのが日課だからな。もう慣れたよ」
F:「そんなことばかりじゃ、精神が持ち…」
主任の言葉を遮るように
突然のサイレンが鳴り響いた。
パトライトが警告灯を表示してクルクルと回っている。
パトライトとは、エラーや警報を近くにいる作業員に迅速に通知するために設備の外部に設置された表示器だった。
パトカーや消防車のような赤色灯の他に、黄色や青色の灯火もできる。
他部署からも人がワサワサと寄って来た。
私には一瞬、何が起きたかわからなかったが、直ぐに理解した。
課長:「な、なんだ、これは?」
F主任が静かに言った。
F:「敵が罠にかかったようです」
試験を実施する前、通信の開始処理と終了処理の全箇所に伝文の差異をチェックする「トラップ(罠)」を仕掛けていた。
罠が多すぎると処理のタイミングがずれるので、あまりたくさんは仕掛けないのが普通だが、多少のタイミングのズレを気にするよりも、今回は「IN-OUT全網羅チェック」をすることに決めていた。
伝文を送った側と受け取った側で、INとOUTに差異があれば警告灯(パトライト)を回して「伝文抜け/誤り」を報告するようにしていたのだ。
この警告灯が告げる原因はただ一つ。
「通信上で伝文が変化した」
を伝えるものだった。
課長:「お、おお!我々が追っていたものは、これか!すごい!でかしたぞ」
F:「第一段はクリアってところでしょう。ですが、問題はまだあります」
課長:「んん?なぜだ。伝文異常が問題の原因ではないのか?」
F:「おそらくノイズが引き金で伝文が変化したことは間違いないでしょう。ですが、、、」
F主任はうかない顔をしている。いつもそうだが表情が読み取れない。
F:「今は盤を開放して試験しています。ノイズが盤内に入り込んでの現象です。ですが、現地では盤は閉じたままです。機構班の話では、盤の外から盤内にノイズを侵入させることはほぼ不可能だと」
課長:「ううぬ。確かにそうだ。だが、ノイズが引き金ってことがわかっただけでもすごい成果だぞ」
F:「はい、それはその通りです。まだ何かを見落としていることがすごく悔しいのです」
そう。我々は犯人に一歩近づいたが、まだ確証を得られず、犯人に対する逮捕状を請求できないでいる刑事と同じ気持ちだと思った。
その時、皆の騒ぎを聞きつけてTが試験室に入って来た。
T:「いやー、今日は涼しくて良いや。ここは客先工場とは全然違うなぁ」
ん?涼しい?
そうだ、確かに涼しい。
そんなこと、どうでも良いことだと思っていた。
高温試験は別な設備で平行して実施されている。
我々に「暑さは関係ない」・・・。いや、本当に関係ないのか?
何か違う、何が違う? でも、絶対に「何かが違う」・・・。
飽きるほど見つめ直した設備図面。
半分無意味だと思いつつも、もう何ヶ月も見つめ続けた設備図面。
そして、自分で追加・改造したプログラムの数々が脳裏に蘇った。
その中の一つに”それ”はあった。
私:「あのー、主任。もしかしてですが…」
F:「ん?どうした?」
私:「勘違いかもしれませんが、一つ試してみたいことがあります」
(つづく)
ソフトウェア・エンジニアを40年以上やってます。 「Botを作りたいけど敷居が高い」と思われている方にも「わかる」「できる」を感じてもらえるように頑張ります。 よろしくお願い致します。