託された炎
PLCプログラマー、炎上案件を制す -
月曜日の朝。週明けのオフィスには、いつもより重く、澱んだ空気が漂っていた。週末の休息でリフレッシュされたはずの社員たちの顔には疲労の色が濃く、デスクに向かう足取りも重い。特に、第二開発部の島は、まるで嵐の前の静けさのような、不気味な緊張感に包まれていた。新田誠、入社三年目の若手PLCプログラマーは、自分のデスクで起動したばかりのパソコン画面を眺めながら、その異様な雰囲気の中心がどこにあるのかを肌で感じ取っていた。
「新田君、ちょっといいかな」
背後からかけられた声に、新田はびくりと肩を揺らした。声の主は、第二開発部部長の田中だった。普段は温厚な田中部長の声が、今日は妙に硬い。周囲の視線が一斉に新田に集まるのを感じ、彼は唾を飲み込んだ。嫌な予感しかしなかった。
部長室のドアをノックし、促されて中に入る。そこには田中部長だけでなく、プロジェクトマネージャーの篠田玲子の姿もあった。彼女は「鉄の女」と密かに呼ばれるほど、冷静沈着かつ厳格な人物だ。その篠田が、険しい表情で窓の外を眺めている。室内にはピリピリとした空気が張り詰め、新田は息苦しささえ覚えた。
「新田君、単刀直入に言う」田中部長が重々しく口を開いた。「君に、『プロジェクト・フェニックス』のPLC制御プログラム担当を引き継いでもらいたい」
「……フェニックス、ですか?」新田は思わず聞き返した。そのプロジェクト名は耳にしたことがあった。社内でも最大級の規模と重要度を誇る、次世代型自動倉庫システムの開発案件だ。しかし同時に、様々な悪評が絶えないプロジェクトでもあった。納期遅延、仕様変更の嵐、そして担当者の過労によるダウン…。「炎上」という言葉が生易しく感じるほどの、まさしくデスマーチ案件として、社内では半ば伝説化していた。
「そうだ。知っての通り、担当していた佐藤さんが、先週…倒れてしまってね。長期の休養が必要だという診断だ」
佐藤さんといえば、社内でもエース級のベテランPLCプログラマーだった。その彼が倒れるほどの案件。新田の背筋に冷たい汗が流れた。
「ですが部長、俺はまだ入社三年目で、あんな大規模な案件の経験は…」
「分かっている。だが、他にPLCを扱える人員で、今すぐ投入できるのは君しかいないんだ」田中部長は苦渋の表情を浮かべた。「もちろん、無茶を言うつもりはない。だが、このプロジェクトは会社にとっても絶対に失敗できない。君の力を貸してほしい」
隣で腕を組んでいた篠田が、初めて口を開いた。「新田君。あなたの実力は評価しているわ。これまでの小さなプロジェクトでの成果は聞いている。これは、あなたにとって大きなチャンスでもあるはずよ」その声は冷静だったが、有無を言わせぬ圧力を感じさせた。「納期は、当初の予定から既に二ヶ月遅れている。これ以上の遅延は許されない。最低でも、三ヶ月以内に主要機能だけでも稼働させる必要があるわ」
三ヶ月。ベテランの佐藤さんが半年以上かけても終わらず、ついに倒れた案件を、経験の浅い自分が三ヶ月で? 新田は目の前が暗くなるような感覚に襲われた。しかし、部長と篠田の真剣な眼差しを受けて、ここで断るという選択肢は事実上ないことを悟った。
「…わかりました。やらせていただきます」絞り出すような声で答えるのが精一杯だった。
「ありがとう、新田君。期待している」田中部長は安堵の表情を浮かべたが、篠田の表情は厳しいままだった。「早速で悪いが、すぐに佐藤さんのデスクで資料を確認し、現状を把握してちょうだい。今日中に、まず何から手をつけるべきか、私に報告するように」
部長室を出た新田の足取りは、まるで鉛を引きずるように重かった。自分のデスクに戻ると、隣の席の先輩プログラマー、高橋健一がニヤニヤしながら声をかけてきた。
「よぉ、新田。ついに特攻命令が出たか。死地に赴く気分はどうだい?」高橋は、社内でも屈指の技術力を持つプログラマーだが、その口の悪さも有名だった。しかし、その言葉には単なる揶揄だけでなく、どこか心配するような響きも含まれているように新田には感じられた。
「高橋さん…正直、どうしたらいいか…」
「だろうな。佐藤さんのあのコードだろ? 俺もチラッと見たことあるが、ありゃあ芸術的なスパゲッティだ。解読するだけで一ヶ月はかかるぞ。しかも、あのクライアントだろ? 無茶苦茶な要求ばかりしてくるって評判の」高橋は肩をすくめた。「ま、せいぜい頑張るこったな。何かあったら、まぁ、話くらいは聞いてやるよ」
そのぶっきらぼうな言葉に、新田は少しだけ救われた気がした。高橋さんは、なんだかんだ言って面倒見がいいところがある。
新田は覚悟を決め、佐藤さんが使っていたデスクに向かった。そこは、主を失ったばかりの場所特有の、静かな混乱が広がっていた。積み上げられた資料の山、付箋がびっしりと貼られたモニター、そして飲みかけで冷たくなったコーヒーカップ。新田は、まず佐藤さんが残したであろうドキュメント類に目を通し始めた。仕様書、設計書、打ち合わせ議事録、メールの履歴…。しかし、そのどれもが断片的で、最新の状態がどれなのか判然としない。肝心のプログラムに関する詳細なドキュメントは、ほとんど見当たらなかった。
次に、パソコンを起動し、PLCプログラムの開発環境を立ち上げた。そこに現れたのは、高橋が言った通り、まさしく「芸術的なスパゲッティコード」だった。ラダー図と呼ばれる、電気回路図に似た形式で記述されるPLCプログラムは、本来、視覚的に理解しやすいはずのものだ。しかし、目の前にあるラダー図は、複雑に絡み合った配線のように分岐と結合を繰り返し、コメントもほとんど付けられていない。どの部分がどの機能に対応しているのか、一見しただけでは全く分からない。まるで古代遺跡の難解な碑文を解読するような作業になりそうだった。
さらに、課題管理ツールを確認すると、その絶望感はさらに深まった。数百件に及ぶ未解決の課題リスト。「緊急」「最優先」のラベルが貼られたタスクが延々と続き、その多くが「原因不明の動作停止」「特定の条件下での誤作動」「要求仕様との齟齬」といった深刻な内容だった。ざっと目を通しただけでも、眩暈がしそうだった。これが、自分がこれから三ヶ月で解決しなければならないものの正体なのか。想像以上の「燃え具合」に、新田は愕然とした。
「一体、どこから手をつければいいんだ…」
途方に暮れていると、内線電話が鳴った。ディスプレイには「山田様」と表示されている。クライアント、山田浩二からだった。恐る恐る受話器を取ると、間髪入れずに怒声が飛んできた。
「おい!篠田さんから担当が変わったと聞いたぞ!新田とか言ったか? 進捗はどうなってるんだ! 例の自動搬送機能、まだ動かないのか! いつになったらまともに動くんだ!」
山田の声は、こちらの事情など一切考慮しない、一方的なものだった。新田はまだ状況を把握しきれていないことを正直に伝えようとしたが、山田は聞く耳を持たない。
「言い訳はいい! こっちは待ってるんだぞ! 佐藤さんが倒れた? そんなことは知ったことか! 代わりがいるならさっさとやれ! 今週中に何とかしろよ!」
ガチャン、と一方的に電話は切られた。受話器を置いた新田の手は、小刻みに震えていた。これが、これから日常的に繰り返されるのだろうか。技術的な問題だけでなく、このクライアントとのやり取りも、大きなプレッシャーとしてのしかかってくる。
その日は、資料の整理とプログラムの概要把握だけで終わってしまった。篠田への報告では、「まずは全体の構造理解と、優先度の高い課題の洗い出しから始めます」と答えるのが精一杯だった。篠田は何も言わず、ただ「明日、具体的なスケジュールを提出して」とだけ告げた。
夜。オフィスには新田一人だけが残っていた。静まり返ったフロアに、キーボードを叩く音だけが響く。新田は、まず比較的影響範囲が小さそうな、表示系のバグ修正から手をつけることにした。タッチパネルに表示される装置のステータス表示が、実際の状態と一致しないことがある、という課題だ。
該当すると思われるラダー図の箇所を探し出し、一つ一つの接点、コイル、タイマー、カウンターの動作を目で追っていく。複雑に絡み合ったロジックを解きほぐし、条件分岐を一つずつ確認していく。まるで、知恵の輪を解くような、あるいは難解なパズルに取り組むような作業だった。コメントがないため、変数名やデバイス番号からその意味を推測するしかない。佐藤さんの思考の痕跡を辿りながら、なぜこのようなロジックにしたのか、どこで食い違いが発生しているのかを探っていく。
時間は刻一刻と過ぎていく。集中と疲労が交互に押し寄せ、何度か意識が途切れそうになった。壁の時計は午前2時を指していた。それでも新田は諦めなかった。ここで投げ出してしまえば、本当に終わりだ。自分にはこれしかない。この案件をやり遂げることが、プログラマーとしての自分の存在証明になるはずだ。そんな思いが、彼を突き動かしていた。
そして、明け方近く。ついに、バグの原因と思しき箇所を発見した。ある条件分岐のロジックが、特定のタイミングで意図しない動作を引き起こしていたのだ。慎重にコードを修正し、シミュレーターで動作を確認する。…動いた。ステータス表示が、想定通りの正しい値を示すようになった。
「やった…!」
思わず小さな声が出た。ほんの小さなバグ修正に過ぎない。山積する課題から見れば、砂粒のような成果だ。しかし、暗闇の中で手探りを続けていた新田にとって、それは確かな一歩であり、微かな光だった。この複雑怪奇なプログラムの迷宮にも、必ず出口はあるはずだ。そう信じられるようになった。
窓の外が白み始めていた。新田は、椅子にもたれかかり、深い溜息をついた。体は鉛のように重いが、心は不思議と少しだけ軽くなっていた。
翌朝、少し遅れて出社すると、高橋が新田のデスクに缶コーヒーを置いて言った。
「よぉ、徹夜か? ま、無理すんなよ。倒れたら元も子もないからな」その声はいつものようにぶっきらぼうだったが、新田にはその言葉が温かく感じられた。
「ありがとうございます、高橋さん」
始業後、新田は篠田に昨夜の成果と、今後の具体的な進め方について報告した。まずはプログラム全体の構造をブロックごとに把握し、関連する課題を紐付けながら、影響範囲の大きいものから潰していく、という方針だ。篠田は黙って聞いていたが、最後に短く言った。
「わかったわ。それで進めてちょうだい。ただし、時間は限られていることを忘れないように。来週月曜には、クライアントへの定例報告会がある。それまでに、目に見える進捗を示す必要があるわ」
その言葉は、再び新田に重い現実を突きつけた。小さな成功体験に浸っている暇はない。本当の戦いは、まだ始まったばかりなのだ。新田は気持ちを引き締め、再び複雑怪奇なラダー図の海へと意識を沈めていった。この巨大な氷山の、ほんの一角を砕いたに過ぎない。その下には、どれほど巨大で、どれほど厄介な問題が潜んでいるのか。今はまだ、知る由もなかった。