ふつーのプログラマです。主に企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。

レインメーカー (11) トラブルとウソ

»

 6 月19 日、土曜日。朝から降り続く雨のせいか、肌寒い。9 時には目覚めて朝食を済ませたイズミだったが、外出する気分ではなく、かといって勉強に手を付ける意欲も湧かず、ソファの上でゴロゴロしているだけだった。
 間の悪いことに、昨日からネット回線のトラブルにより、断続的に接続が途切れる、極端に回線速度が落ちる、という現象が頻発している。プロバイダのサポート窓口に電話したが、同じ境遇のユーザからの問い合わせが殺到しているのか、オペレータにつながる段階までたどり着かなかった。そのためにYoutube もAmazon Prime Video もNetflix も満足に視聴することができない。
 こういうときのために円盤で映画をストックしておくんだった、とイズミは今さらながら悔やんだ。この1LDK のマンションはアリマツへの就職が決まったときに借りたが、実家からの(正確には義母からの)援助は得られなかったので、家具や家電は最小限度にとどめてある。ブルーレイプレーヤーは少し悩んだ末、断念した。サブスクで多くの映画が観られる現在では必需品ではなくなっていたし、特典映像などを見たいとも思わなかったからだ。
 11 時近くになると、さすがにゴロゴロしているのも飽きてきたので、イズミはのろのろと起き上がった。ランチの支度でもするかな、と冷蔵庫を開いたものの、たいした食材が残っていないことに気付かされただけだ。今週は帰りが遅く、買い物に行く気力もないまま、コンビニ弁当で夕食を済ませていた。
 よし、とイズミは両手で頬をピシャッと叩いてモードを切り替えた。久しぶりにパンでも焼くか。
 イズミはもう一度冷蔵庫を開いた。無糖のアーモンドミルク、無塩バター、スーパーカメリヤのドライイースト。ドライレーズンも一握りほど残っている。レーズンパンなら作れそうだ。
 キッチンの戸棚を開け、強力粉が残っていることを確認した後、イズミはティファールの電気ケトルに水を入れた。スイッチを入れてから、冷蔵庫から無塩バターの箱を取り出し、あらかじめ切り分けてあるかけらをつまむと、ステンレスの計量カップにコロンと入れた。冷蔵庫に箱を戻すと同時にケトルがカチッと鳴る。スープ皿の中央に計量カップを置き、その周囲に熱湯を注いだ。たちまち、バターの端が融解しはじめる。
 次はドライイースト、と冷蔵庫に向き直ったとき、リビングでスマートフォンが軽やかに鳴り響いた。Axel F。この着信音を割り当ててあるのは会社関係の番号だ。イズミはタオルで手を拭くと、急いでスマートフォンを掴んだ。表示されている名前は『YT 社CC』だった。
 「はい、朝比奈です」
 『もしもしシオリです』シオリの落ち着いた声が聞こえた。『お休みの日にごめんなさい。今、大丈夫ですか?』
 「おつかれさまです」イズミは固体から液体へと変化しつつあるバターを横目で見ながら答えた。「はい、どうしました?」
 『うちのセンターのシステムがちょっとトラブってて』
 つまり<コールくん>が、ということだ。でも、どうして私に?とイズミは首を傾げた。その気配が伝わったのか、シオリは続けて説明した。
 『システム課には連絡したんだけどね。休日待機の吉村さんが宇都さんに電話しても、どっか行ってるらしくて出ないし、LINE 送っても既読にもならないって。他の人だと<コールくん>はわからないし』
 「それで、どうして私に?」
 『DX 推進は<コールくん>の保守を下期から引き継ぐことになってるじゃないですか。今、その準備中って聞きました。だから復旧? できるんじゃないかと。復旧できなくても、何かしら対応はできるだろうなと思って』
 イズミは内心で呻き声を上げた。<コールくん>の保守引き継ぎ、というタスクが表向きのものであることを知っているのは、まだ10 人以下だ。シオリはその一人ではない。
 「トラブルって具体的に何が起こってるんですか」
 『画面の一部が急に反応しなくなることがあって』シオリの背後で、誰かが早口でまくしたてている声が聞こえた。『受電処理中に急に固まるんです。そうなると他のボタン押しても、503 とかエラー出てしまって。ブラウザを閉じて、もう一度、ログインし直すと直るんですけど』
 「503 エラーですか?」
 503 はサーバに接続できないエラーだったはずだ。トラフィックの問題だろうか? であれば<コールくん>の問題ではなく、システム課インフラチームに対応をお願いすることになる。
 『503 も出てるし、500 も出てますね』
 「......そうですか。<コールくん>の不具合のようですね」
 500 はinternal server error、つまりサーバ上のエラーだ。接続はできているが正しくレスポンスを返すことができていない。HTTP サーバの不具合という可能性もあるが、<コールくん>はApache やNGINX などを使用せず、直接Tomcat に接続しているので除外される。イズミが4 月から今日までの間に勉強してきた知識で何とか判断がつくのはここまでだ。
 「ちなみに」イズミはふと思いついたことを訊いた。「他のCC では不具合は出てないんですか?」
 <コールくん>はマルチテナント型なので、複数のCC から同時に接続する。今日は土曜日なので業務がないCC もあるが、土日祝日の別なく稼働しているCC は案外多い。
 『吉村さんが他のCC に問い合わせてくれたんですけど、うちだけみたいですね』
 やっぱり<コールくん>内部の問題のようだ。ネットワークやハードウェアに起因するトラブルなら、全てのCC に影響が出るはずだ。
 『田代さんにも連絡したんですが、やっぱり繋がらなくて』シオリはため息をつきながら言った。『ちょっと来て見てもらえないですかね』
 アリマツでは、テレワーク勤務が試験的に実施されているだけで、基本的にリモート接続する環境が整っていない。CC の業務がテレワークでは難しいためだ。システム課も電話機、PC などの物理的な保守作業が多いので、テレワークにする意味があまりない。田代がリモート環境を提案していたが、何の実績も上げていない部署を特別扱いはできない、という理由で却下された。
 私が行ったところで何の役にも立たないですよ、と口から出かけた言葉をイズミは呑み込んだ。前職で何度かトラブル対応の現場に立ち会った機会があり、システム関係の人間がいるだけで安心感が生まれる、という実例をそのときに知った。
 「わかりました」イズミは答えた。「すぐ行きます」
 『助かります』安堵感と期待感がシオリの声に滲んだ。『まだオール入室権限はもらってないですよね』
 オール入室権限は、社内のどの部屋でも入室できる権限で、本部長以上の役職者やシステム課の社員が付与されている。DX 推進ユニットで対象になっているのは田代だけだ。
 『入館したら電話ください。迎えに行きます』
 了解した旨を伝えて通話を終えたイズミは、すっかり溶けたバターを見てため息をついた。レーズンパン作りは延期だ。少なくとも溶かしバターは再利用できる。強力粉とドライイーストをこね始めた後でなかったのが幸いだ。

 ◇ ◇ ◇ ◇ ◇

 YT 社CC に入った途端、SV やOP たちからの緊迫した空気がイズミに襲いかかってきた。ほぼ全てのOP が受電中だった。本来ならキーボードの上を動いているはずの手は、ペンを握って、コピー用紙の上を走っている。
 「今は紙受けに切り替えてるんです」シオリが囁いた。「受電内容を入力していって、登録ボタンを押してもエラーになったりするんです。そうするともう一度お客様に聞き直さないといけないので」
 シオリは空席にイズミを案内すると、素早くパスワードを入力してロックを解除した。ログイン状態の<コールくん>が開いている。
 「トレーニングモードにしてあるんで、適当に入力してみてください」
 そう言い置くと、シオリは手を挙げてヘルプを求めているOP の元に飛んでいった。イズミは腰を下ろすと、言われた通り氏名や住所の入力を開始した。<コールくん>を触らせてもらう機会がこれまでに何度かあったので、操作に戸惑うことはない。シオリがDX 推進ユニットのアドバイザである関係で、このCC の業務も多少は把握していた。
 ドアロックが解除される電子音が聞こえ、顔を上げると吉村が入室してきたところだった。ノートPC を小脇に抱えている。イズミに気付くと、すぐに近付いてきて会釈した。
 「呼び出されましたか」
 「はい」イズミは入力を続けながら頷いた。「宇都さんに連絡は取れないんですか?」
 「さっきからやってるんですが。とりあえず留守電に伝言残して、LINE で状況を伝えておきました。で、どうですか?」
 「どうって言われても」イズミは小声で返した。「私が<コールくん>の中身をわからないのは知ってますよね。アイカワには連絡したんですか?」
 「しましたが誰も出ません」吉村は忌々しそうに答えた。「今日は土曜日ですから」
 「でも、保守契約してるんですよね? 緊急連絡先とかないんですか?」
 「もちろんあります。かけてみたんですが出ないんです」
 「緊急連絡先になってないじゃないですか」
 「たぶんですが」吉村も小声で答えた。「宇都さんからじゃないと応答しないんじゃないかと思うんです」
 「そんな......あ」イズミは言葉を切ってモニタを見つめた。「確かにエラーになりますね」
 ブラウザには「500 internal server error」が表示されている。一通り入力を終えて「登録確認」ボタンをクリックした結果だ。
 「これ」とイズミはモニタを指した。「エラーのログが出てるんじゃないですか」
 「確認したんですが、時刻とエラーが発生しました、と出てるだけなんです」
 「スタックトレースは出てないってことですか」
 「調べた限りでは。ただ俺ではアクセス権限のないディレクトリとかに吐き出されてる可能性はありますが」
 「そんな場所があるんですか」
 「担当じゃないんで<コールくん>サーバの内部は詳しくないんです」吉村は苦笑しながら説明した。「基本、保守はアイカワがやるんで、そもそもうちのインフラ担当も中身までは正確に把握してないんです。見たことはありますが、とにかくパーティションがたくさんあって。わざとややこしくしてるんじゃないか、って思いますよ」
 イズミはコメントを避けて、もう一度、新規登録からやり直した。吉村も横でその入力を見守っている。
 続けて4 回入力を行ったが、登録に成功して完了ページが表示されたのは2 回だった。後の2 回は同じエラーページが表示された。
 「これが困ったところなんですよ」吉村は疲れたように首を横に振った。「再現手順がはっきりしないのが」
 「入力内容で違いがあるわけでもなさそうですね」
 「はい。それにエラーが出てるのはこのページだけじゃないんです。受電対応ページだったり、SV 用の管理系やレポート系ページだったりと脈絡がなくて」
 「あ、そうなんですか」
 「これじゃあ原因究明も難しいですよね。<コールくん>のソースもまだ来てませんし」
 <コールくん>のソース一式については、田代が何度も交渉を重ねた結果、ようやく今月中に受け取ることが決まっていた。どうせ6 月30 日まで届かないだろう、と誰もが思っていたが、やはり昨日時点で何の音沙汰もない。
 「ソースがあったところで」イズミはモニタを見つめたまま言った。「それを解析するには時間がかかるので、今、役には立ちませんよ」
 「そういうものですか」
 「それにこの画面からでもわかることはあります」
 「というと?」
 「ここですが......」イズミはTab キーでカーソルを移動し、郵便番号の入力エリアで止めた。「郵便番号の後ろ4 桁を入力すると、住所検索が実行されますよね」
 自宅の郵便番号を入力すると、すぐに都道府県名と市区町村がページ上に反映された。
 「これが何か?」
 「次にこっちです」吉村の問いには答えず、イズミはカーソルをツアーコードまで移動させた。「これも入力するとツアー名が表示されます」
 「確かにそうですが......」
 「郵便番号データもツアーデータも、データベースにありますよね。つまりDB からの読み込みについては、特に問題なく動作してるってことです」
 「ああ、なるほど。書き込みのときにエラーが発生してるってことですか」
 「確かに」戻ってきていたシオリが言った。「入力のときはエラー報告されてないですよ」
 「受電数はどうですか?」
 「受電数?」
 「今日、すごく入電が多くて、負荷がかかってるとか」
 「それもないです」
 シオリはSV 席の後ろに置かれている40 インチTV を指した。「待ち呼」「通話中」「保留中」「放棄呼」などの項目名と数字が表示されている。OP に接続されるのを待っているのが「待ち呼」で現在は「3」になっていた。すぐにその数字は「2」と変わり、数秒後には「0」へと落ち着いた。代わりに「通話中」の数字が増えている。
 「繁忙期だと待ち呼が10 とか20 とかになることもありますから。今日は土日にしては静かな方です。ただ一件あたりの処理に時間がかかってるだけで。トータルの入電数も昨日の方が多かったぐらいです」
 「それに」吉村が付け加えた。「負荷の問題なら、他の業務にも影響出てくるはずです。DB は業務毎に分かれてるわけじゃないので」
 どういうことだろう。イズミは腕を組んで、モニタを見つめた。
 「昨日は特に問題なかったんですよね」
 「私はシフトじゃなかったんですけど」シオリが対応中のOP の様子を気にしながら答えた。「昨日のSV からは何も引き継ぎされてないですね。業務日報にも記載なしで」
 「今朝からいきなり、ってことですか。具体的には何時ぐらいからですか」
 「うちのCC は9 時から業務開始なんですが、最初の1 時間ぐらいは問題なかったですね。SV は30 分前には来て、前日の集計出したり、引き継ぎ事項確認したり、OP への周知事項を登録したりと、業務開始前ルーチンがいくつかあるんですけど、それも問題なしです」
 「10 時ぐらいからエラーが出始めた?」
 「それぐらいですね。すいません、ちょっと対応してきます。いいですか」
 「はい、大丈夫です」シオリが手を挙げているOP の元へ走っていくと、イズミは吉村の顔を見た。「昨日の夜、<コールくん>のメンテナンスがあったとかありますか?」
 「ないですね。夜間作業は大抵、日が変わってから2:00 とかにやるんで、正確には今日なんですけど予定はないです。俺は<コールくん>担当じゃないですが、夜間作業スケジュールはシステム課全員に共有されるので」
 周囲を見回してからイズミは声を潜めた。
 「宇都さんが意図的に知らせてないとか......」
 「やりかねませんが」吉村はクスクス笑った。「アイカワみたいな社外の人間が夜間に入館するときは、夜間専用出入り口からしかできないんです。事前にビル管理に届けが必要で、その返信はシステム課のメーリングリストに届くので、宇都さんが隠すことは無理ですね」
 「宇都さん自身という可能性はないですか」
 「それ......」吉村は訊き返そうとして、イズミの質問の意図に気付いたらしく言葉を止めた。「確かに宇都さん、というか、システム課なら誰でも夜間に入館できますが......宇都さんが仕組んだって言いたいんですか?」
 「可能性としてです」
 「なくはないですし、可能だとは思いますが......このタイミングでやる理由がないでしょう」
 「DX 推進ユニットがやってることに気付いたとか」
 「それはないはずですがね」
 吉村が自信なさそうにそう言った、まさにその瞬間、ドアが開いた。そちらに顔を向けた吉村が動きを止めた。宇都の巨体がドスドスと床を踏み鳴らしながら入ってきたのだ。
 「おい、何やってるんだ」宇都は吉村を無視して、イズミに指を突きつけた。「何、勝手なことやってる」
 「え、あ、その......」イズミは反射的に腰を浮かせた。「調査を......」
 「調査? 誰の許可を得て......」
 「すいません、私がお願いしました」シオリが柔和な笑みを浮かべながら、急ぎ足で近付いてきた。「お休みなのに無理を言って」
 「ああ、そうですか」宇都は頷くと、不機嫌そうな声で吉村に命じた。「何してる。状況を報告しろ」
 「LINE で送りましたが」吉村は事務的に答えた。
 「あんなのじゃよくわからん。説明しろ」
 吉村が口早に現象を説明している間、イズミは再度、入力を試しながら考えた。<コールくん>内部の問題なら、もはやアイカワを呼んで対応してもらうしかないのかもしれない。ただイズミが引っ掛かっているのは、このエラーが発生しているのが、YT 社CC だけという点だった。
 CC 毎に入力項目や業務内容が異なるのだから、それぞれのCC 独自のロジックが存在しているはずだ。YT 社CC 用ロジックに不具合があったのだろうか。しかし、それならなぜ、今日になって急にエラーが発生したのだろう。
 「シオリさん」イズミは小声で訊いた。「今日、普段と違うことをやったとかはないですか?」
 「たとえば?」
 「さっき業務開始前に、前日の集計を出すって言ってましたけど、それは前日分が自動で出てくるんですか?」
 「いえ」シオリは手を伸ばしてマウスを掴むと、管理者用メニューから「レポート・集計」のサブメニューを開き「履歴集計」を選択した。開いたのは「対象期間」の項目として、日付のfrom とto を指定するテキストボックスと「実行」ボタンがあるだけのシンプルな表示されているだけのシンプルなページだ。
 「ここで前日を指定して作成です。Excel で出てきます」
 「日付の年を間違えて一年分出したとか」
 「それはないです」シオリは少し笑った。「だいたいの数字はわかってるので、大きく違えばわかりますよ」
 「昨日は入電が多かったって言ってましたけど」
 「それでも一年分出せば桁が違いますから」
 「あの」宇都への説明が終わったらしく、吉村が横から言った。「一年分だと何か問題があるんですか?」
 「メモリかな、と思ったので。ヒープメモリです」
 「それはないですよ」答えたのは宇都だった。「メモリは相当大量に積んでるんでね。業務によっては過去3 年分の集計、なんて出す場合もあるから、それで落ちてちゃ話にならん」
 「そうですか。すいません」
 「アイカワさんに連絡してみた方がいいんじゃないですか」吉村が冷たい声で指摘した。「さっきは出ませんでしたが」
 「もうしたよ」フン、と鼻を鳴らして宇都は答えた。「出なかった。土曜日だからな」
 宇都の横顔を見ていたイズミには、その言葉がウソだとわかった。反射的に問いかける。
 「こういう場合、どういう対応をするんですか」
 「はあ? そんなことを訊いてどうするんですかね」
 「DX 推進室で保守を引き継ぐのであれば」イズミは冷静に答えた。「これまでの対応を聞いておきたいので」
 イズミと吉村だけだったら理由を付けて突っぱねたかもしれないが、今はシオリがそばにいて答えを待っている。宇都は渋々答えた。
 「まあ、予備系統に切り替えるのが定石ですかね。今回はムダですが」
 「なぜですか?」
 「今、朝比奈さんが開いてるページ」宇都はモニタを指した。「それが予備環境なんですわ。普段は研修用やテスト用に使ってるんです。本番環境として運用するときは、DB を本番DB に切り替えて再起動するんです」
 イズミはブラウザのアドレスバーを見た。確かにURL が違っている。
 「他にはどういう対応になりますか」
 「もうどうしようもないですな」宇都は額の汗をタオルで拭いた。「アイカワさんに連絡が付くのを待つしか」
 「やっぱりそうですか」
 シオリが肩を落とした。それほど失望している様子ではないので、以前にも同様の事象が発生したことがあったのだろう。エンドユーザが納得しているのなら、そうするしかないのかもしれない。それならイズミの出番も終わりとなり、帰宅してレーズンパン作りの続きができる。
 そう考えたイズミはもう一度シオリの顔を見た。強い感情を表してはいないが、納得している表情でもない。システムのプロが言うのだから諦めるしかない。そんな顔だ。イズミの胸が痛んだ。このまま何もせずに帰っても、きっと気になってパン作りどころではなくなる。
 「ちなみに」イズミは宇都に訊いた。「このCC だけでエラーが発生していることについて、宇都さんは何か心当たりはありませんか?」
 「ないですね」宇都は即答した。「見当もつかんですわ」
 それが事実ではないことがイズミにはわかった。だが何を隠しているのだろう。その理由は何なのか。
 次の質問を考えていると、またドアが開いた。入ってきたのは田代だった。

(続)

 この物語はフィクションです。実在する団体名、個人とは一切関係ありません。また、特定の技術や製品の優位性などを主張するものではありません。

Comment(6)

コメント

h1r0yuki

テスタロッサかな

宇都のせいだろうけど

匿名D

なるほど、ここで宇都氏の手口のひとつをお披露目ですか。
動機も気になるところですね~。

匿名

トラブルがあるとテンション上がってしまうエンジニア読者の性。
それはさておき、嘘がわかると謎が適度なサイズになっていいですね。
(ハンターハンターみたいにすべての可能性を考えるとページが埋まってしまう)

侘助

24x365で対応できる体制じゃないのか・・
監視も入れてないか、自分のところで握りつぶしてる?

このレベルの保守でやってるんだったら、多少強引に新システムに切り替えても問題なさそう。

匿名

自分が休日に呼び出されるようなトラブルをわざわざ仕込む宇都さん、実は仕事熱心なのでは。

匿名

いつも思うけど、登場人物の名字の読み方が分からない。

コメントを投稿する