レインメーカー (12) 調査と推測
主な登場人物
DX 推進室
朝比奈(アサヒナ)イズミ
田代(タシロ)シュウジ
桑畑(クワハタ)タイホウ
根津(ネヅ)ヒデユキ
椋本(ムクモト)カツヤ
倉田(クラタ)コウジ
山下(ヤマシタ)ヨウコ
土井(ドイ)アキコ
CC
近藤(コンドウ)シオリ
紫吹(シブキ)ユウ
システム課
宇都(ウト)ノリハル
吉村(ヨシムラ)トシミチ
野沢(ノザワ)モエ
アイカワ製作所
久保寺(クボデラ)アケミ
◇ ◇ ◇ ◇ ◇
集中する視線をかきわけるように田代はYT 社CC へと歩を進めた。ひときわ強烈な目を向けているのは宇都だ。また邪魔な人間が一人増えた、とでも思っているのか、憎々しげに睨み付けてくる。田代はそれを無視してイズミの隣に座った。
「すまん。遅くなった。スマホをマナーにしてたんで」
「いえ。ドラマですか?」
「ああ」
前職では土日に呼び出しがあることなど日常茶飯事だったから、スマホはいつでも手元に置いていた。アリマツでは、まだ開発が始まってもいない。連絡が入ることなど想定外だ。土曜日は妻は子を連れて鎌倉の実家に遊びに行くのが恒例なので、スマートフォンの電源を切って、撮りためておいた連ドラを一気見するのが楽しみにしている習慣だった。
「だいたいの状況は、来る途中で吉村くんからLINE で聞いたんだが、その後、何かわかった?」
イズミは簡潔だが要点を押さえた説明をしてくれた。ただ、何か他のことに気を取られているような顔をしている。何だろう、と思ったものの、この場で訊くのもはばかられた。何か口実を作って二人で話せないか、と考えていると、宇都がそのキッカケを作ってくれた。吉村に「ちょっと来い」と手招きして、センターの隅に歩いていったのだ。嫌みか何かを言いたいのだが、シオリのいる前ではそれをしづらかったのだろう。二人がいなくなり、シオリもOP のヘルプ要請に応えて行ってしまった。チャンスだ。
「朝比奈さんはどう思う?」田代は小声で訊いた。「やっぱり、宇都が?」
十中八九、肯定が返ってくると考えていたので、イズミが首を横に振ったのを見て田代は驚いた。
「え、違うの?」
「いえ、わからないんです」イズミも小声で返した。「前にも言いましたけど、心を読めるわけじゃないんで。ただ......」
「ただ?」
「アイカワに連絡したっていうのは、たぶんウソです。それから、このトラブルについて、何か心当たりがあるのは間違いないと思います」
「ふーむ」田代は腕を組んだ。「心当たりか。宇都自身が実装してるわけじゃないから、アイカワが何かやらかして、それを隠してるってところかな」
「そこまでは」イズミは<コールくん>が表示されているモニタを見た。「宇都さんが仕組んだのかもしれません。その可能性だってあります。わからないのは、なんで今、そんなことをするのか、ってことですけど。DX が裏で進めてる計画に気付いたのかな、と思ったんですけど、吉村さんに訊いたら、それはないと言うし」
「自分の存在をアピールするためってことはないかな。今さら、アピールする必要がないぐらい存在感だけはあるけどね。トラブルを起こしておいて、鮮やかに登場して解決してみせる。マッチポンプだ」
「やるなら、ここだけじゃなくて、全CC に影響が出るようなトラブルにした方が効果的じゃないですか」
「そこまで大事にしたくなかっただけかもしれない」
「あり得ますね。でも、どうして、今日だったんでしょう。平日に出勤してるときの方がいいじゃないですか。すぐに対処できるし、雨の中、土曜日にわざわざ出てくる必要もないです」
「......」
「あ、すいません」イズミが恐縮したように頭を下げた。「素人が勝手なことを」
「いや、そんなことは......宇都に訊いてみるしかないかな」
「お任せします。私はもう少し考えてみます」
「考えるって何を?」
「どうして今日、このCC だけなのかってことです」
考えるといっても、もう材料は何もないし、できることもない気がする。そもそもスタックトレースログがないのでは、原因追求不可能と同義だ。<コールくん>のソースがまだ入手できないのは腹立たしいが、仮にあったとしても、膨大(に決まっている)なソースのどこを見ればいいのかさえわからないことになる。<コールくん>の構造に詳しければ、現在のトラブルがどのソースなのかぐらいは見当がつくのだろうが、そのスキルを持った人間はアリマツ社内には一人もいない。
今やれることがあるとしたら、宇都が仕組んだ、という仮説の検証だろう。もちろん正面切って問い質しても素直に認めるはずはないが。宇都が足音も荒く戻ってきたので、田代は慎重に探りを入れてみた。
「やっぱり<コールくん>内部の不具合ですか」
「そうでしょうなあ」宇都は口調だけは丁寧に答えた。「まあ、よくあることです」
「繰り返しになりますが」田代は確認した。「昨日の夜間に、何かメンテナンスを行ったわけではないんですね」
「何もやってませんね。なんですか、私がウソついてるとでも言いたいんですか」
「いえいえ、そういうわけでは」
「バグですよ、バグ」宇都はさっさとケリを付けたいのか、強引にまとめにかかった。「完璧なソフトウェアなんかありえないってことです。月曜日になったら、アイカワさんを呼んで見てもらいますから。そういうことでいいんじゃないですか。もしかしたら明日に直ってるかもしれないですしねえ」
少なくともマッチポンプの線は消えたか。田代は失望を表に出さないように努力した。自分で解決してみせるつもりなら、月曜日にアイカワを呼ぶ、という話になるはずがない。
「月曜日と言わず、もう一度、アイカワさんに連絡してみたらどうですか」田代はもう一押ししてみた。「もしかしたら、宇都さんが連絡したときには席を外していただけかもしれない」
「いいですとも」宇都は愛想良く応じた。「ちょっと電話してきますね」
宇都はドアから出ていったが、1 分もしないうちに戻ってきた。
「やっぱり誰も出ませんね」
「番号、教えてもらえませんか」田代は要求した。「私がかけてみるので」
「アイカワさんの許可がないとね」宇都は薄笑いで応じた。「勝手に教えることはできませんよ」
「個人の携帯番号ならともかく、会社の番号でしょう? 共有していけない理由なんかないと思いますが」
「それでも一応、訊いてみないと。私の一存で他社の公開されてない番号を漏らすことなんかできるわけないでしょう」
淀みない口調だった。今、考えたわけではなく、こんな場合に備えて、あらかじめ用意してある言い訳の一つを引き出してきたに過ぎないのだろう。それに比べて、こちらは準備不足だ、と田代は苦々しく認めざるを得なかった。もちろん、スマートフォンの発信履歴を確認させてくれ、などと要求できるはずもない。
ただ一つわからないのは、自作自演でないのなら、なぜアイカワに連絡しないのか、という点だが、それは重要ではない。<コールくん>が全面的に停止するような重大事案でない限りは、土日祝日には連絡しない、という協定が結ばれているとか、そんな下らない理由だろう。
「どうですか」シオリが戻ってきて、誰にともなく訊いた。「やっぱり今日の復旧は難しそうですか?」
疑問というより、ほとんど事実確認といってもいい口調だったが、訊いた相手は宇都ではなく、田代とイズミだった。そのことに宇都はムッとしたようだったが、自分の主張を通した、と確信しているからか、何も言おうとしなかった。
仕方がない。田代は「残念ですが」と答えようとしたが、口を開いたのはイズミの方が早かった。
「シオリさん」イズミは考えながら訊いた。「昨日と今日の違いって何かないですか?」
「あのね」宇都が割り込むように言った。「何度も言いますが、昨日は<コールくん>のメンテナンスはやってないですよ」
「システム的なことではなく、業務上で、です」
「昨日が金曜日で、今日が土曜日ってぐらいしか思いつかないですけどね」シオリが戸惑いながら訊いた。「たとえばどういうことですか」
「初めて<コールくん>を操作するOP が今日から業務を開始してるとか」
「ないですね。昨日に限らず。一番最近で採用になったOP さんは5 月です」
「PC が新しくなったとかもないですか?」
「えー、どうだったかな......」
「ないですよ」吉村が答えた。「このCC のPC は今年になってから故障とか発生してないので。まあWindows Update は定期的に走らせてますけど」
「最後のUpdate は最近ですか?」
「WSUS の履歴を確認してみないと正確なことは言えませんが、前回配付したのはGW 前だったはずです」
「朝比奈さん」耐えかねた田代は口を挟んだ。「何の質問をしてるんだ」
「可能性を絞り込んでるんですが」
「もうそれは終わっただろう」
「始めてさえいない、と私は思います」イズミは田代に柔和な笑みを向けた。「まず始めるんだ。問題を一つ解決したら次の問題に取り組む。そうして解決していけば帰れる、とマーク・ワトニーも言ってます」
「はあ? いや、しかし、可能性を絞り込むも何も、原因は<コールくん>にあることは明白じゃないか」
「それはわかっています。わからないのは、なぜ、このCC だけなのか、ということです」
「さっきからそれにこだわっているのは何か理由が?」
「大元の原因がそこにあるかもしれないからです。もしそうなら、月曜日ではなく、今日、解決できるかもしれないじゃないですか」
田代は唸った。意図はわかったが、意味があるとは思えなかった。
「昨日までは正常に稼働していた」田代は考えをまとめるように言った。「今朝からエラーが発生し始めた。常識的に考えれば、昨日の業務終了から今朝の業務開始までの間に、プログラムの更新か何かで<コールくん>に改修があって、それがトラブルの原因ということになる。でも昨夜はメンテナンスが実行された事実はない」
宇都と吉村が同時に頷いた。
「となると、以前から<コールくん>にあった不具合が、今朝になって発生し始めた、ぐらいしか思いつかんな」
「かもしれません」イズミも同意した。「それなら確かにお手上げで、今、ここでできることは何もないでしょうね」
「だから、さっきからそう言ってるでしょう」宇都が主導権を取り戻そうとしてか、大きな声で主張した。「アイカワに任せるしかないってことですわ」
「でも」宇都の言葉など聞こえなかったかのように、イズミは落ち着いて続けた。「他のCC で同様のエラーが出ていないということは、YT 社CC 固有の事象ということになります。それはどこの何が原因なのかがまだわかっていません」
「そんなの月曜日にアイカワに調査させればいいでしょう」
「月曜日から調査を開始する、ということは、月曜日の朝から通常業務ができない、ということです。今、ある程度、対象を絞り込んでおけば、時間の節約になりませんか?」
「ムダだと思いますがね」宇都は不機嫌そうに横を向いた。「まあ、やりたいならご自由にどうぞ」
「ありがとうございます」イズミはシオリに向き直った。「他に昨日と今日で、何か違いは思い当たりませんか?」
「うーん、そう言われてもねえ」シオリは困った顔で小首を傾げた。「私は昨日シフトじゃなかったからなあ。ちょっと待っててね」
シオリはSV 席に走っていくと、SV 用のPC でいくつか操作をした。すぐに席を立ち、複合機からプリントアウトを数枚取り出して戻ってくる。
「えーと」シオリがプリントアウトを目で追った。「昨日のOP のシフト人数は最大で21 人で今日は16 人。入電数は昨日が344 件、あ、これはトータルか。12 時までだと......181 件。今日は67 件。まあ普通ですね。問い合わせカテゴリ別集計だと、昨日のトップは期間限定キャンペーンで99 件、今日だと現時点でツアー問い合わせがトップです」
「期間限定キャンペーンって何ですか」イズミが訊いた。
「ああ、これ。今週はYT 社の夏休み旅行早割キャンペーン受付があったんです。昨日の夕方までの申込だったんで、入電が多かったんですね。かなりお得な内容なんで、水曜日の業務終了時で想定の倍ぐらいになってました」
「じゃあ、今日からは、その限定キャンペーンの入電はないってことですね」
「ないです」答えたのは吉村だった。「専用の電番があるんですが、昨日の夕方からは、そっちにかけてもキャンペーン終了のアナウンスが流れるだけになってるんです」
「なるほど」
「関係ないでしょう、それは」宇都が小馬鹿にするように呟いた。「エラーが出たのは、今日ですからね」
確かに関係はなさそうだ。そう思った田代は、イズミが「そうですね」と答えたものの、じっと宇都の顔を見つめていることに気付いた。宇都が不審に思う前に、イズミは視線を外すと、シオリに向かって問いかけた。
「今日は期間限定キャンペーンカテゴリでの登録はないんですか」
「だからないって......」
「ああ、いえ」宇都の言葉を遮って、シオリが答えた。「キャンペーンの申込自体はできないんですけど、通常の問い合わせ番号でキャンペーンに対する問い合わせは何件か入ってますよ。その入電は期間限定キャンペーンのカテゴリで登録されています。まあ、10 件未満ですけど」
「ちなみに、期間限定キャンペーンって何か特別な処理をやるんですか?」
「やりますね。申込された人には応募用紙一式を発送します」
「それはバックヤード作業ですか?」
「発送そのものはそうですね」
「というと?」
「窓空き封筒の宛名と、申込用紙に申込内容の差し込みなんかは、<コールくん>の管理メニューからExcel でファイルを作成するんです。SV が出力と印刷して、OP が内容を再確認、SV がもう一度<コールくん>の履歴と照らし合わせてOK を出した後、発送担当に回します」
「そのExcel ファイル作成というのは<コールくん>の標準機能なんですか?」
「いえいえ」シオリは笑った。「申込用紙はキャンペーン用にクライアントから送られてきたものがベースですね。窓空き封筒用の宛名もYT 社用に位置合わせしてあるから、うちのCC 用のカスタマイズです」
「ということは」イズミが指摘した。「窓空き封筒の方は前からあったとしても、申込用紙の出力については、今回のキャンペーン用に機能追加されたわけですか?」
「もちろんです」シオリは大きく頷いた。「でも、今回のエラーとは関係ないと思いますけど」
「なぜですか」
「キャンペーン用の機能追加は、今週の日曜日の夜、行われたんです。昨日ではなくて」
小さな失望が田代の胸の中を満たした。一週間前の機能追加に原因があるのだとしたら、月曜日にはエラーが発生していなければおかしい。昨日と今日の違いを追求するイズミには気の毒だが、手がかりにはならないようだ。
ところがイズミは宇都を見据えた。
「その機能追加が日曜日に行われたのは確かですか?」
「ああ、確かにやってますがね。近藤さんの言う通り、今回のエラーとは関係ないんじゃ......」
「その機能追加部分のソースを見せてもらえませんか」
「はあ?」宇都は驚いて目を剥いた。「ソースを?」
「納品物に入ってませんか」
「ないと思いますけどねえ」
「いや、ちょっと待ってください」田代は反論した。「ソースは納品物に入っているはずです」
それはアイカワから一向にソースが届かないことに業を煮やした田代が、今後のことを考えて打った手の一つだった。今月末にソース一式が届いたとしても、その後も実施される改修や機能追加の分は、また理由を付けて遅延するに決まっている。ならば、今のうちに、今後のカスタマイズに対する納品物には、必ず該当部分のソースを含めること、という方針を、根津や椋本の力を借りて、アイカワに伝えたのだった。部分的なソースぐらいなら大したことはない、と考えたのか、アイカワはあっさり了承した。
田代がそう説明すると、宇都は「ああ、そうでした」と笑った。
「すっかり忘れてましたよ。確かにあるかもしれないですね。アイカワが忘れてなければ」
「確認させてください」
「意味ないと思いますがねえ」宇都はわざとらしく嘆息した。「ま、どうしてもっていうなら。ちょっと戻って探してきますから......」
「あ、大丈夫ですよ」吉村が言い、持参してきたノートPC で操作を始めた。「ここで納品物フォルダ探すんで」
宇都が小さく舌打ちしたが、吉村は気にせず検索を行い、すぐに顔を上げた。
「今、YT 社CC 用の共有フォルダにコピーしました」
それを聞いたシオリがPC にかがみ込み、エクスプローラーから共有フォルダを開いた。
「あ、このZIP ファイルですね」
イズミはそのファイルをダブルクリックしたが、解凍パスワードを要求するダイアログが開いた。宇都に向かって言う。
「パスワード教えてもらえますか」
宇都はイズミを睨んだ。本音では知らないとシラを切るか、教えることはできないと断るかしたかったのだろうが、渋々、4 桁の数字を口にした。イズミが入力すると、すぐに解凍が始まり、複数のフォルダとファイルが表示された。
「ソースはこれのようですね」
イズミはフォルダの中にある拡張子が.java のファイルをメモ帳で開き、田代に言った。
「田代さん、中を確認してもらえますか」
イズミと入れ替わりにPC の前に座った田代は、ファイルの中を見ていった。Eclipse のエディタを見慣れた目には、黒一色のソースは読みづらい。幸い、ソースの中身は比較的単純だった。
「どうやら引数で履歴ID が渡されてきて」田代はゆっくりスクロールしながら内容を口にしていった。「それで入電内容を再読込して......これ、たぶん一時テーブルに書き込みしてるな。テーブル名がyt_camp 何とかになってるから、このキャンペーン用の一時テーブルだろうな......ここで会員情報を読んでるのかな......ああ、POI のRow とか出てきてるな。テンプレートファイルを元にして、申込書をどっかのフォルダに吐き出してる......こっちが宛名用か......ファイルを吐き出したらtrue を返して終了か。あー、確かにcatch の中はスタックトレース出してないね。単にfalse を返してるだけだ」
このモジュールではエラーログを出していないから、仮にこのモジュールが原因だとしても、吉村から聞いたエラーメッセージをログ出力しているのは、このクラスを呼んでいる側なのだろう。
イズミは田代の説明に耳を傾けながら考えている。田代が言葉を切ってもまだ考えていた。
「デバッグモードで動かしてみたいところだけど」田代は声をかけた。「ここが原因だとは思えないなあ。一応、変数は全部if 文でnull かどうか調べてるし、型が違うようでもない」
「そうですか......」
「もういいんじゃないですかねえ」宇都が言った。「いつまでも、こんな大勢いたらCC の業務にも迷惑でしょう」
イズミは再び宇都の顔を凝視した。
「宇都さんも、このモジュールが原因ではないとお考えですか?」
「そう考えてますがね」
その言葉を聞いたイズミの顔が険しくなった。
「私が確認してみていいですか」
イズミはそう言うと、田代を押しのけるように椅子に座り、ソースを見つめ始めた。ロジック自体は単に処理を羅列しているだけだから、勉強中のイズミにもコードリーディングは可能だろう。もっとも田代には、イズミが時間を浪費しているようにしか見えなかったのだが。
吉村が何か言いたげな表情で田代を見た。イズミの行動の是非を無言で問いかけているようだ。田代は顔をしかめてみせるしかなかった。
たっぷり10 分ほどかけてイズミは300 ステップほどのソースを熟読した後、ため息をついて顔を上げた。ようやく断念したか、と田代が思ったとき、イズミは冷静な目を吉村に向けた。
「吉村さん、ちょっとお願いがあるんですが」
「はい?」
「<コールくん>のサーバで確認してほしいことがあるんです」
「サーバですか」吉村の顔に困惑が広がった。「でも俺は<コールくん>の中身は全くわかりませんよ」
「中身は関係ないです。確認してほしいのは二点です。一つはこの」とイズミはモニタを指した。「Excel ファイルが作成されるフォルダ......ディレクトリ。もう一つは、そのディレクトリのあるパーティションの空き容量です」
その言葉を聞いた途端、暗闇に曙光が差し込むようにイズミの意図が田代にも理解できた。
「まさか......ディスク容量? いや、パーティションの容量か」
「はい」イズミは頷いた。
「え? どういうことですか」吉村はますます混乱したようだ。
「パーティションがたくさん切られてるって言ってましたね」イズミは説明した。「たぶんCC 毎にパーティションが用意されていて、関係するものは全てそこに保存されるようになってるんじゃないでしょうか。作成されたExcel ファイルもそうですが、DB の表領域の物理ファイルも。どういう計算で割り当ててるのか知りませんが、おそらく想定されるデータ量か何かに基づいて容量を決めてるような気がします。ところが想定よりも入電が遙かに大きくなってしまったのか、そもそも見積が過小だったのか、とにかく、容量が足りなくなってしまったんだと思います。昨日までは何とかギリギリで書き込みができたけど、もう限界に近かったんでしょう。夜間バッチとかで何か処理してるなら、そこでもディスクを食ったでしょうし。それで今朝になって業務を開始して、入電を書き込み始めたら、それ以上書き込みができなくなってしまってエラーになったんではないでしょうか。入力内容が少ない入電なら何とか書き込めるので、エラーが出たり出なかったり。もちろん想像に過ぎませんが、パーティションを確認してもらえば、この仮説が正しいか的外れなのかわかります。もし正しいのなら、単純にディスク容量の問題なのでアイカワさんに頼まなくても、今、何とかできるんじゃないでしょうか」
(続)
この物語はフィクションです。実在する団体名、個人とは一切関係ありません。また、特定の技術や製品の優位性などを主張するものではありません。
コメント
匿名
ふむー。
テクニカルには単純だけど、基本設計のアレっていう体なのか。
話のベクトルをどう持っていくんだろう。
匿名
特定の可愛い人が来るからってトラブル起こそうとはしてないよな……?
匿名D
「ありがとうございます」に吹いた。w
それにしても、個人的な事情なんだがなんてタイムリーな。
最近の懸賞応募って、便利になりましたよね。
Web応募なら、写真をアップロードして応募できる。
ところで、最近応募していた懸賞なんですが、
どうしても、写真がアップロードできなかったことがあったんです。
これがスマホじゃなくてPCでやってみると
エラーメッセージが表示されて。
「No space left on device」
問い合わせに送ったんですが、回答はなかったですね。(-人-)
しばらくしたら、アップロードできるようになってました。d(^-^)
さてストーリーの件では、普通にパンクしているのか、
あるいは正体不明な大容量ファイルが鎮座しているのか、どちらかな?
匿名
毎週楽しみにして拝見しています。
思い違いなら恐縮ですが、
「そこまで大事にしたくな(か)っただけかもしれない」ではないでしょうか?
ちなみに、つい先日うちで使っているシステムが
まさに今回の原因で起動失敗していました・・・。
匿名
推理小説になってきておる(・∀・)
ここ10年余り、仮想マシンが主流になってからストレージ容量は自由度が高くなって助かります。
処理性能不足を改善するのは少々厄介なまま(大元が足りない、総I/O量増大、ライセンス都合で割当コアを増やせない等)なところはありますが、使う基盤をAWS等にしてランニングで巻き取る作戦はやりやすくなったなーと。
匿名
容量監視とかしていないのですかねえ?
匿名
>容量監視
キチキチすぎて常時アラートが出てしまうので閾値を設定できなさそう
匿名D
そりゃ、随意に不具合を引き起こす必要があるんだから、
状態監視なんてなんだかんだ理由つけてしないでしょうよ。
そもそも宇都氏の問い合わせに応答しないってだけでも、
本来なら相当重いペナルティが課せられるはず。
1分もたたないうちに戻ってくるなんて、
演技とか取り繕いとか、さらさら興味なさそうですね。
端から力技で押し通すつもり、
そして今まではそれでやってきたんだろうな。
匿名
長いこと楽しみに読ませていただいてます。プログラミングできない文系IT業なので、ここの小説でエンジニア職体験したつもりになっています。(極端)
「宇都さんが仕組んだってのかもしれません。その可能性だってあります。」
↓
「宇都さんが仕組んだのかもしれません。その可能性だってあります。」
かしらん
リーベルG
匿名さん、ご指摘ありがとうございます。
「したくなかった」
「仕組んだのかも」
でした。
匿名
ふむー。
テクニカルには単純だけど、基本設計のアレっていう体なのか。
話のベクトルをどう持っていくんだろう。
匿名
おおー、読み方ありがとうございます。
できれば過去作品にも欲しい(余裕があればで構いません
匿名
人間に対して嘘本当がわかるのは副次的な能力で
本当の能力範囲ならソースの欠陥も読める・・・・ってこと!?
火星の人
アンディ・ウィアー とは親しみを感じます。
ワトニーはプラン先行の味付けでしたが、朝比奈氏の確信を持った台詞は切れ味いいですね。
匿名
個人的にバグ解析は推理小説が好きな人が一番得意な分野じゃないかと思っているのですが、まさにそんな展開ですね
想定通りに修復出来たら、シオリから見たらイズミは魔法使いレベルの能力者のごとく見えそうですね