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

レインメーカー (41) 追加と変更

»

 「サーバB、デプロイ準備」田代はヘッドセットのピックアップに囁いた。「B のアクティブユーザは?」
 『2 人......』横浜から綱川が答えた。『いえ、今、一人ログオフして、C にログインし直しました』
 「残り一人。ユーザID は」
 綱川が答えた5 桁の数字を田代は手元のシフト表から探した。該当のOP が座っているのはブース18 だ。若い女性OP で、しきりに頭を下げている。半泣きの状態だ。どうやらたちの悪い相手につかまり、なかなか解放してもらえないらしい。
 あまり手間取るようなら紫吹などのSV が巻き取る、ということだったが、3 人のSV は全て他のOP のサポートについていて、手が空かない様子だ。紫吹がちらちらと問題のブース18 を気にしているが、目の前の通話が終わらない限りどうしようもない。
 『ああ、まずい』倉田が呻くように言った。『RM システムからの処理待ちキューが28 になりました。訂正、今一つ増えて29 です』
 確かにまずい状況だ。RM システムからの問い合わせ待ちデータは、NARICS で受け取った時点で、空いているOP の処理待ちとして割り振られるが、その上限は31 だ。ブース数は42 だが、11 ブースは常時受電で、別の回線になるため割り振ることができない。割り振りができない場合は例外が発生する。
 イベント2 日めの18 時過ぎ。この日最後の通販コーナーの最中だ。前日の番組内で、人気韓流アイドルのレアグッズを、臨時で限定販売する、と告知があったせいか、コール負荷はかなり高く、全OP が忙しく受電にかかりきりだ。
 「おい、田代くん」名古屋CC の大黒課長が泡を食った様子で駈け寄ってきた。「なんか処理待ちが追いつかないって?」
 「そうです」時間が惜しい、と思いつつ、田代は簡単に説明した。「通販対応のOP の数を超えては割り振りできないので」
 「あふれた待ちはどうなるんだ」
 「今のままだとロストです」
 「そりゃまずいよ」大黒はありもしない助けを求めるように左右を見た。「そっちは絶対に落とせないんだ。何とかならんかな」
 こういう設計にしたのは、あんたらからの情報に基づいてのことなんだぞ、と言いたいのをこらえた。
 「一応対策は打ったんですが......」
 その危険性が明らかになったとき、田代は急いで追加のロジックを書いた。RM からの処理待ちデータは、OP のブースNo をキーとしたテーブルに格納されるが、一時保存用テーブルを定義し、重複分をそちらに追加するようにしたのだ。
 「それなら一安心か?」
 「ただ、切替ができないんです」
 サーバA は常時受電のOP が使っているので、19 時までは再起動ができない。少し前に、別の仕様変更でサーバC に切り替えたばかりだ。修正したNARICS はサーバB にデプロイするしかないが、まだB で処理中のOP が残っているので再起動できない。
 田代が未だに終話しそうにないブースを目で指すと、大黒は顔をしかめた。SV たちは何やってる、とセンター内を見回し、田代と同じ結論に達したようだ。
 「何とかならんのかな」
 「そうですね」内心の焦燥感を押し殺し、田代は何とか平静な声を保った。「あのブースに行って、ブチッと切ってもらえれば何とかなるんですが」
 クレーマーのようなので、一方的に通話を切断したりすれば、先方の怒りは10 倍ぐらいに増大するだろうし、さらなるクレームの口実を与えることにもなる。それを理解している大黒の顔は強張った。CC 課の課長は大抵の場合、営業畑の人間が任命される。彼らにとって、最優先事項は顧客との関係を良好に保つことだ。ネットユーザがSNS を舞台にして簡単に炎上を引き起こすことが可能な時代、どの企業も一般人との対応は慎重にならざるを得ない。だからこそ、人間が対応するコールセンターの存在価値がある。それなのに対応中に、何の断りもなく勝手に通話を切られた、などと拡散されでもしたら、アリマツの責任は重大だ。
 「そういうことはできんよ」大黒は額の汗をぬぐうと、声をひそめた。「何しろ、今回の72H イベントは、QQS さんが強引なやりかたでアイドルやらタレントやらを集めたそうだから。中には他局の番組に決まっていたのを、Q-LIC のスポンサー契約を口実に、無理矢理引っ張ったとも聞いている。ネットじゃいろいろ批判されてるらしい。できるだけ穏便にいかんとな」
 『30 になりました』倉田が報告してきた。『言うまでもないですが、あと枠が一つですよ』
 さっき強制的に終話させてもらえば、と言ったのは冗談だったが、田代は真剣に方法を考え始めた。いっそ、吉村にこっそり頼んであのOP のPC をリモートで落としてもらうか、と思ったとき、ようやく紫吹が通話を終え、急いでブース18 に走っていくのが見えたので、田代も近付いていった。後ろから大黒も付いてくる。
 紫吹はSV 用の回線でOP の通話をモニタしているようだったが、すぐに頷いて手を伸ばし、通話を引き取った。
 田代たちが見守っていると、紫吹は落ち着いた口調で対応を開始し、しばらく相手の言葉に耳を傾けた。ときおり相づちを打ち、短く答えることはあっても、基本的には傾聴の姿勢を崩さない。大黒が焦った顔で、首の前で手を振る仕草で合図したが、紫吹は無視していた。
 『最後の枠が埋まりました』倉田の、こちらも焦った声が聞こえて来た。『次のデータは落ちます』
 まるでその声が聞こえたかのように、紫吹は二言三言話すと「それでは失礼します」と結んで終話した。
 誰もが唖然となる中、一人冷静な紫吹は、OP の肩を叩いて「おつかれさま」と微笑み、手を挙げた別のOP に応じるべく、その場を離れていった。OP は急いで後処理を行い、すぐに笑顔で頷いた。
 「B のデプロイと再起動」田代は命じた。
 『しました』
 綱川が応答するまで1 秒もかからなかった。デプロイとTomcat の再起動を行うスクリプトを入力し、Enter キーに指を乗せて待っていたに違いない。systemctl stop tomcat だと停止に時間がかかる場合があるので、デプロイスクリプトは、プロセスをkill → デプロイ → start の順になっている。再起動にかかる時間は30 秒弱だ。その間にRM から次のデータが来たら、もう運が悪かったとしかいいようがない。
 こういうとき、朝比奈さんがこの場にいたとしたら、レインメーカー的なジンクスを発揮して失敗するんだろうか、と田代はあらぬことを考えた。イズミはまた例のゲーム絡みのイベントで仕様変更があったらしく、席を外していた。
 そういえば雨宮はどこにいったんだろう。田代はQQS 担当者席に目を向けた。雨宮もその付近をうろついていることが多かったのだが、さっきイズミと何事かを話し込んでから、ぷっつりと姿を見せなくなっていた。安堵すべきなのか、憂うべきなのかわからないが。
 『再起動しました』綱川が弾んだ声で報告した。『ログにも起動エラーは出てません』
 『こっちでも確認』倉田の声がかぶった。『RM とのインターフェースは、C からB に切り替え完了です......おっと、ちょうど、今、RM からのデータ来ました。ちょっとSQL 叩いてみます......はい、大丈夫そうですね。一時テーブルの方に入ってます』
 きわどい。田代は安堵した。本当にきわどかった。
 結果を伝えると、大黒は大げさに喜び「おっと、次のイベントの話を聞いてこなくちゃ」と言って、足早に出ていってしまった。
 入れ替わるように、休憩に出ていた相沢が戻ってきた。結局、相沢は楽しみにしていたゲーマーの実況中継を見ることがかなわなかった。次から次へとスポットイベントが発生し、NARICS の改修作業に追われて、それどころではなかったのだ。用意されていたハンバーグ弁当も、5 分ぐらいで胃に流し込んだだけだった。お調子者だが、意外に責任感が強く、担当のタスクを消化するまで席を立とうとしなかったので、先ほど田代が強引に休憩を取らせたのだ。
 「RM との連携、どうでした?」
 「ああ、何とかうまくいった」田代は答えた。「綱渡りだったが」
 「でも、もうすぐヤマ場は越えるってことですよね」
 18 時40 分を過ぎていた。通販コーナーの受付は19 時まで。それを過ぎても時間内の着信は対応が続くが、少なくとも新規のコールは入って来ない。手が空いたOP から、RM の方の対応を開始できる。
 「そういうことだ。まだ帰るわけにはいかんけどな。ああ、そういえば、ゲームの実況の方は残念だったな」
 「ですね。でもYouTube にもアップされるそうなんで、ホテルに帰ってからゆっくり見ます。ゲーミングノートPC 持ってきてるんでプレイしちゃうかも」
 それなら、終わってから飲みに誘うのは止めておいたほうがいいな、と田代が苦笑したとき、そういえば、と相沢が首を傾げた。
 「さっき、朝比奈さんを見たんですけど、なんて名前でしたっけ、QQS の人」
 「金城さんか」
 「その人です。何か真剣に話してました。ヴァロって聞こえたんで、たぶんゲームの話だと思うんですけど」
 「ヴァロ?」聞き慣れない言葉に、田代は訊き返した。「今、やってるゲームってエペじゃなかったか?」
 「ヴァロは別のゲームの名前です。最近、こっちも人気なんですよ」
 「ふーん」
 後で一応、イズミに確認してみよう、と田代は記憶に書き留めた。
 『田代さん』倉田が呼びかけた。『RM データの受け取りロジック、ちょっと問題があるようです』
 「問題って、不具合?」
 『いえ、受け取るJSON データが、仕様と違ってるんです。今、受信したデータをテキストファイルにしたのを共有に置きました』
 田代は急いでPC の前に戻ると、DX 推進室の共有フォルダを開いた。
 「どこが違ってますか」
 『最後にsumaho_info というプロパティが追加になってます』
 「あ、これか」田代はファイルをスクロールした。「imei、serial、iccid、maker、model......処理にはあまり関係のないデータみたいですね」
 『はい。こっちで池松さんに調べてもらったんですが、これまで受信したデータは、全部空なんです』
 「そうか。これがあるから、デシリアライズするとき、Unrecognized になるんですね」
 どうせ直前に慌てて追加したか、消し忘れたかどちらかだろう。RM システムの方でもJSON データを処理しているが、dict にloads しているだけなので、予定にない項目が増えても問題がない。一方でNARICS ではJackson ライブラリを使用してDto に変換しているので、Dto に定義していないプロパティが含まれていると例外になってしまう。手っ取り早い解決方法としては、プロパティにないJSON の項目を無視することだ。倉田もその方法を口にした。
 『ignoreUnKnow のアノテーション付けて無視します?』
 「いや」田代は少し考えて答えた。「後で値が入ってきて、レポートか何かに付けて欲しいと言われたとき、NARICS 側のデータにないと面倒なので、取得しておきたいですね」
 『私もそれがいいと思うんですが、ただ、これDto の定義を修正する必要がありますよね。またデプロイと再起動しますか』
 「そうですね......」
 たった今、デプロイと再起動したばかりだ。もしかしたら使わないかもしれない項目のためなら、できれば避けたいところだ。
 「RM からの受信用に、スタンドアロンのクラスを一つ追加しましょう」言いながら、田代はPC に向き直ってEclipse を開いた。「いったん、それで受信してJSON データをファイルに出力してから、余分な項目を除く形でJSON データを作り直して、現プログラムに渡す。後で必要になったときに、そこから参照します。こっちで形だけ作るので、細かいところはそっちの誰かでコーディングしてもらえますか。あと現受信プログラムの変更も」
 『了解です』倉田は答えたが、ため息を付け加えた。『こういうの、もう打ち止めにしてもらいたいですね。ドームでライブやるより緊張します』
 「そんな予定があるんですか」
 『全くないですけどね』
 「そろそろ19 時です。受電業務の方が終われば、少なくとも今日のところは追加仕様はないでしょう」田代はそれほど確信を持たずに答えた。
 『そう願いたいです』
 田代は10 分ほどかけて、受信プログラムの枠組みを作り上げた。ソースの中にコメントで必要な処理を書き込み、特に重要な部分はアスタリスクでマーキングしてある。想定されるライブラリも記述したので、一から考えなければならない要素はかなり減るはずだ。
 ソースをGit のNARICS リポジトリにプッシュして、倉田に連絡すると、すでに19 時を1 分過ぎていた。TV 画面では通販受付終了のテロップが表示され、MC のお笑い芸人が手を振っていた。ブースでもヘッドセットを外して伸びをするOP の姿が、ちらほら見られるようになってきた。
 根津と大黒が入ってきて、SV やOP たちに声をかけた後、田代の席にやってきた。
 「おつかれさん」根津がねぎらった。「とりあえず一段落だな」
 「はい。残作業はありますが」
 そういえば昼もろくに食べていなかったことに田代は気付いた。今さらながら、空腹感が押し寄せてくる。少し抜け出してコンビニにでも行くか......
 「あとは20 時からのやつだけやな」大黒が言った。「よろしく頼むよ」
 「......は?」
 田代の反応が遅れたのは不意打ちを食らったからだ。相沢もキョトンとしている。
 「20 時って何のことですか?」
 「何って」大黒は根津と顔を見合わせた。「スポットで3 ブースだけ30 分の受電するやつだよ」
 「聞いてません」
 「言っただろ」
 「聞いてませんね」
 「あれ、そうだったかな」大黒は頭を掻いた。「すまんすまん。20 時から臨時で受電することになったんだわ。やることは、今やってたことと同じだ。言ったと思ったがな」
 「......」
 「30 分だけだ。ちゃちゃっと準備できるだろ」
 怒鳴りだしたくなるのを、田代はかろうじてこらえた。Excel のマクロでもあるまいし、業務システムがちゃちゃっと作れるようなものなら、俺たちは毎日定時退社してるぞ。
 「ちょっと待ってください」
 田代は急いで倉田を呼び出した。倉田は19 時で退社の予定だ。幸い、まだ倉田は残っていた。
 話を聞いた倉田は文句一つ言わず、対応を引き受けてくれた。
 『今度は追加だから、パターンの順序をいじらなくていいだけマシですね』
 「頼みます」
 通話を終えた田代は、大黒に向き直った。
 「今回は何とかなりますけど、これを最後にしてくださいよ。情報共有は密に......」
 「根津さん」QQS の金城が根津に話しかけた。「ちょっといいですか?」
 根津が頷くと、金城は少し離れた場所に誘い、小声で何かを話し始めた。田代は嫌な予感にさいなまれながら二人を見つめた。
 やがて戻ってきた根津は、田代の予感を裏付ける言葉を口にした。
 「21 時から別のスポット受電を頼まれた。例のゲーム関係だ。すまんが対応してくれんか。すぐに打ち合わせだ。朝比奈くんと紫吹くんにも参加してもらう」

(続)

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

Comment(10)

コメント

匿名

断ることも重要だ。

匿名

ズルズル時間が伸びでいるが、寝ないで対応するパターン?
72時間ぶっ続け生放送とあるけどずっとこの調子なのか・・死ぬわ

匿名

なんでもかんでもOKOKだすとこうなるんだよなぁ。

これはもう田代さん以前に会社の問題だわ。
なまじ完璧と言えないまでも、田代さんが対応できちゃっているのが、
またまた厄介。

匿名

これで無茶しすぎてせっかく育成した後輩君たちが闇落ちとか見たくねえ…

匿名

Eclispe -> Eclipse ですね。

夢乃

計画性のないイベントになってる感じですね。
 
 
>綱川が応答するまえ1 秒もかからなかった。
 綱川が応答するまで1 秒もかからなかった。
 
でしょうか。

育野

こういう五月雨式に追加要求が降ってくる話は結構心に来ます。
業種違いますが、当初「これができれば契約」って話で実験やってそれなりの結果出したら「じゃあこれは?」
対応してるうちにダメな結果が出たら「やっぱ契約の件はナシで」となった経験あるので。
本質的には発注側の業務内容の見積り不足なんでしょうが、「現場対応」を拡大解釈して意図的にねじ込もうとしてるような気もしてイヤな感じ。
まさか本当に「72時間耐久対応」なんてことには……(怖)。

重箱の隅ですが、休憩から戻ってきた相沢さんと田代さんの会話の冒頭部分、ちょっと違和感が。
>「そういうことだ。まだ帰るわけにはいかんけどな」
>「ゲームの実況の方は残念だったな」
2人だけなのに田代「」田代「」相沢「」となっていて、一瞬もう1人いたっけ?と思ってしまいました。
間に田代さんのワンアクション挟むか、「~いかんけどな。……ゲームの~」とまとめるのはどうでしょうか。

リーベルG

匿名さん、ありがとうございます。
Eclipse でした。

夢乃さん、ありがとうございます。
「まで」でした。

育野さん、ありがとうございます。
何か間に地の文が入っていたのに消しちゃったかな。
何を書いたのか忘れたので、つなげました。

匿名

蓄えておくと後々面倒なことになりそうなデータが?

匿名

ignoreUnknown
かも。

コメントを投稿する