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

レインメーカー (18) トラブルとAPI

»

 田代は受話器を握る宇都に近付いた。押し殺した声で問いかける。
 「<コールくん>の使用を継続するんですか?」
 宇都は顔をしかめて田代を見た。許されるなら舌打ちしたに違いない。
 「今、名古屋CC と通話中なんですがね」
 「クレジットカードの与信ができないんですよね。NARICS に切り替えるべきじゃないですか」
 薄笑いが宇都の顔をよぎった。
 「ダメダメ、その手には乗りませんって」
 「は?」
 田代は絶句して宇都の巨大な顔を凝視した。周囲の社員も息を呑んで二人を見ている。
 新業務稼働の立ち会いということで、アリマツ本社の会議室に、システム関連の人間が集まっていた。システム課からは宇都、吉村の他、電話回線インフラ担当が数名。DX 推進室からは田代の他に山下。最初、倉田に休日出勤を打診したのだが「ライブが近いので土日は練習です」とにべもなく断られたので、仕方なく山下に頼んだのだ。総務の土井も社内報の取材のため参加している。もちろんアイカワ製作所からも、久保寺とプログラマらしき数名が朝から一角を占めていた。
 そのプログラマたちは、今、持ち込んだノートPC のキーを必死で叩いている。久保寺に命じられて決済ができない原因と対策を調査しているのだ。陣頭指揮を執る久保寺は、部下に指示を飛ばした後、優雅にお茶をすすっている。自社が納品したシステムで不具合が発生し、業務の一部に支障が出ているというのに、他人事のような態度だ。
 会議室に設置されているビデオ会議用の60 インチの液晶TV には、名古屋CC QQS ユニットの様子が映っていた。それを見ている土井の顔は残念そうだ。本来であれば「スタート直後から順調に受電をこなす名古屋CC のOP さんたち」などとキャプションを付けた画像なり動画なりを、アリマツ通信からリンクする予定だったのだろう。
 「そうやって」宇都は言った。「なし崩しに新システムに切り替えさせようって魂胆でしょうが。そりゃちょっと受け入れられませんなあ」
 何を言ってるんだ、こいつは。田代は呆れながら反論した。
 「現実的に受電が止まってるじゃないですか」
 「数件でしょう」
 「今後も増えるかもしれない」
 「その可能性はあまりないと思いますよ」
 「はあ?」
 「QQS 会員は登録済みのカード情報で決済できますからね」宇都は得意げに説明した。「午前中、番組見てましたか?」
 「......いえ、見てませんが」
 田代は朝から出社していたが、NARICS の最終チェックに忙しく、番組を視聴するどころではなかった。
 「それがどうかしましたか」
 「番組内で、たびたびQQS 会員登録をお勧めする告知が流れてるんですよ。会員登録済みならスムーズに申し込みができますよってね。さっき名古屋CC の営業を通して、新規会員登録状況を確認したんですがね、すごい勢いで登録されてるみたいです。中には昼から起きて、今、やっとTV を点けたって人もいるでしょうけど、そういう人は減っていくんじゃないですか」
 『じゃあ』スピーカーモードになっているIP 電話から、名古屋CC の紫吹が訊いてきた。『どうすればいいんですか』
 「何とでもやりようはあるでしょう」宇都は優しいと言ってもいいぐらいの声で答えた。「先にサイトで会員登録を済ませるように案内するとか」
 『商品の取り置きとか、仮押さえみたいことはできないんですよ。会員登録やってる間に、数量限定商品が完売しちゃったらどうするんですか』
 「それは運が悪かったと思って諦めてもらうしかないじゃないですかねえ」
 『うちの独断で、そんな案内をするわけには......』
 「それは営業通して、クライアントに交渉したらどうですかね。何のために営業担当が立ち会ってるんです? 根津副部長だっているんでしょう」
 『新システムの方に切り替えた方がいいと思うんですが』
 「それはダメですよ」
 『どうしてですか』
 「新システムの研修やったのって何名ですか。7 名ぐらいでしょう? ぶっつけで使ったことないシステム使う方がリスクあるとは思いませんかね」
 「いや、ちょっと待って」田代は割り込んだ。「入力項目は同じだし、画面遷移も<コールくん>に寄せてあります。ログイン情報も同じだし。そんなに戸惑うことはないはずです。現に研修したOP からは、わかりにくいとか使いにくいと言った声も上がってないです」
 『私もそう思うんですが』紫吹も同意した。
 「これまで一度も実績がないシステムだってことを忘れてないですか。もし全OP を新システムに切り替えて、何かバグでも出たら、それこそ全滅じゃないですか。そのリスクを最小限に留めるために5 ブースだけってことになってるんですよ」
 『今のところは問題なく動いているんですが......』
 「ええ、今のとこは、ですね」宇都は紫吹の言葉をオウム返しした。「今後も出ないとは誰も保証できませんね。田代さん、できませんよね」
 できます、と言葉を叩き付けてやれれば、どんなに爽快なことか、と田代は唇を噛んだ。突貫工事で間に合わせたNARICS が100% の完成度であるとは、田代自身も考えてなかった。もし「絶対にバグなどありません」と断言した後で、不具合でも発生したら、それがどんなに些細なものであっても、田代のメンツは丸つぶれになるし、宇都はそれみたことか、と<コールくん>の優位をアピールするだろう。
 「紫吹さん」宇都は優越感を露骨に顔に出しながら訊いた。「実際のところ、会員未登録の申込って、さっきから増えてますか?」
 『......いえ』紫吹は少し間を置いて答えた。『最初に3 件出てからは出てないですが』
 「ね、言った通りでしょう」
 「すいません」久保寺が笑顔で近付いてきた。「やっと原因が判明しました」
 「早かったですね」宇都も笑みを浮かべて応じた。「なんだったんですか」
 久保寺はプログラマの一人を手招きした。まだ若いプログラマは緊張した顔で、プロキシサーバの設定が違っていた、と説明した。
 カード与信のAPI は外部のサービスを使用している。社内LANにある<コールくん>のサーバからは、プロキシサーバを経由して接続しなければならないが、テスト目的であっても有償なので、改修作業中は社内のモックに接続していた。社内LAN なので、当然、プロキシは使用しない設定でだ。そして本番直前に設定を変更するはずが、そのままになっていたのだという。
 「じゃあ、その設定を変更すれば使えるようになるんですか?」
 田代は訊いたが、相手は怯えたように首を横に振った。なんとプロキシの設定は、ソースにハードコーディングされていて、変更すると<コールくんの>再起動が必要になるのだ。
 「設定をソースに書いてるんですか?」信じられない思いで、田代は確認した。「外部ファイルとかじゃなくて?」
 「その......設定したら、たぶん二度と変更しないからってことで......」
 離れた席に座っていた山下が、思わず吹き出し、やれやれと言いたげに肩をすくめた。
 「でも<コールくん>は予備環境がありますよね」田代は首を傾げた。「予備環境の方の設定を修正して再起動後、そっちに切り替えればいいじゃないですか」
 「それは無理ですねえ」宇都が答えた。「予備環境の方も、別業務で使用中なんでね。負荷を考慮して、QQS 以外の業務は、今日いっぱい予備環境で受電してもらうようにしてるんですわ」
 『あの......』紫吹が言った。『つまり今日中に修正はできないってことですか?』
 「そういうことになりますね」宇都が答えた。「いつも言ってますよね。基本、業務時間中に変更の反映はできませんって」
 『さっき出た3 名のお客様には、コールバックすると言って終話しているんですが、どう対応すれば......』
 「だから先にサイトで会員登録済ませてもらえば......」
 「それなら」田代は急いで提案した。「NARICS でカード与信だけ行うというのはどうですか」
 『と言いますと?』
 「氏名とか住所は適当なのを入力して、カード与信だけ通ったのを確認するんです。<コールくん>には、与信結果を無視するフラグがありますよね」
 『ありますが、今回、それは無効にしてあります。カード与信通さずに申込登録できるのはマズいので』
 「別システムで与信してるんだから、問題ないですよ」田代は宇都を見た。「そうですよね」
 宇都はフン、と鼻を鳴らした。
 「私には判断できませんね。まあ、センターの方がいいって言うなら、別に止めはしませんが、責任は取れませんよ」
 『......根津さんに相談してみます。一度、切りますね』
 通話が切れ、宇都が受話器を戻したが、すぐに着信音が鳴り響いた。顔をしかめて宇都は受話器を取ったが、予想した相手ではなかったようだ。
 「朝比奈さんからですよ。山下さんに代わって欲しいそうです」
 宇都が転送ボタンを操作すると、山下の近くのIP 電話が鳴った。山下はワンコールで受話器を取ると、相手の言葉に耳を傾けた。
 俺にではなく、山下にとは何だ、と気になったが、また電話が鳴った。宇都が応答する。
 「根津さん」宇都は予想していたように言った。「どうかされましたか?」
 スピーカーモードになったままなので、根津の大声は田代にも聞こえた。
 『今、報告を受けたが<コールくん>の不具合だそうだな』
 「ええ、まあ」さすがに宇都の口調が改まった。「でも、ご心配なく。すでにアイカワさんが原因は突き止めましたので」
 『QQS 業務は、今日一日のスポット案件なんだぞ。原因がわかったところで、今日は修正が反映できんのでは意味がないじゃないか』
 「はあ。それは<コールくん>の元々の仕様なので。そういうものだと割り切ってもらうしかないですね」
 根津は唸った。おそらく喉元までせり上がってきた罵声をかみ殺したのだろう。代わりに口にしたのは、新システムに切り替えはできないのか、という質問だった。宇都はニヤリと笑うと、紫吹に話した内容を繰り返した。
 しばらく考えた末に、根津は渋々ながら、宇都の判断を支持した。受電システムの構成や使用方法については、QQS との業務契約に詳細が含まれている。それを現場の独断で変更することはできないし、QQS 側に事情を説明して了承を得るには時間がかかるのだ。
 『ただしだ』根津は付け加えた。『カード与信のみ、NARICS で行うという田代くんの提案は、私の判断で許可することにする。会員登録を先にやってくれ、などと案内すると、申込をやめてしまうかもしれんからな』
 「はあ。それはご自由にどうぞ」
 『紫吹くんに代わる』根津は明らかに感情を抑えた声で言った。『田代くん、手順を説明してやってくれ』
 宇都がIP 電話を顎で指したので、田代はスピーカーをオフにして受話器を取った。紫吹にNARICS でカード与信を実行する手順を簡単に説明する。
 「もしわからなかったら、朝比奈さんにも確認してください」
 通話を終えた田代は山下を見た。すでにイズミとの通話を終えていた山下は、ノートPC に向かってキーを叩いている。状況を訊きに行こうと腰を上げかけたが、不意にバカバカしく感じた。向こうから報告に来るのが筋ではないか。
 田代は椅子に座り直し、QQS ユニットの状況を映しているTV を見つめた。すでに与信ができなかった受電履歴の対応は完了したらしく、OP たちは落ち着いて業務をこなしている。イズミも割り当てられた席で、アイカワの社員と何かを話していた。二人のSV も席に戻っている。とりあえずは落ち着いたようだ。
 俺が名古屋CC に行くべきだったか。そんな後悔が胸を突いた。現場にいれば、もしかすると強引にNARICS への切り替えをさせることができたかもしれないのに。

 ◇ ◇ ◇ ◇ ◇

 次の問題が発生したのは、16 時10 分の特選通販コーナーが放送された直後だった。時間帯毎にピックアップ商品が変わり、今回は10.1 インチAndroid タブレット3 種類だ。日本で発売されるのは、この番組が最初となる機種として、事前にサイトなどでも目玉商品として紹介されている。SNS での注目度も高い商品だった。
 この商品については、他とは異なるオペレーションが要求されていた。Wi-fi モデルではなくSIM モデルなので、回線業者の提供するAPI に発送するタブレットのICCID を送信し、SIM を有効にしてもらわなければならない。<コールくん>もNARICS も、タブレットが選択されたとき、API を実行するポップアップ画面が開き、SIM 有効化処理が完了したのを確認した上で、受付を完了しなければならない。
 面倒なのはタブレットが手元にあるわけではないので、OP はICCID がすぐにはわからない、という点だった。まずタブレットが保管されているQ-LIC 子会社のロジスティクスネットに在庫を問い合わせる。在庫がない場合はエラーが返ってくるが、今回は十分に用意されているということだったので、基本的にありえない、と想定されていた。万が一、エラーの場合は、SV にエスカレーションするのだ。在庫がある場合は、タブレットのICCID が返信されてくるので、回線業者API にそれを投げると、有効化処理の結果が返ってくる。
 もちろん、こんな手順をOP が行うわけではなく、それぞれのシステムがバックエンドで実行することになる。<コールくん>とNARICS で、それぞれ同じ処理を実装するのはムダなので、田代はDX 推進室で一連の処理をAPI として作成し、それぞれのシステムからコールしてはどうか、と提案したのだが、どちらも拒否してきた。アイカワは美辞麗句を連ねた言葉で、宇都はそれほど丁寧でもなければ礼儀正しくもない言葉で。
 特選とは言っても、最新型でそれなりに高価なタブレットなので、それほど注文数は多くない、と想定されていた。事実、最初に注文が入ったのは、16 時30 分を過ぎてからだった。その申込を受けたのは、NARICS を使用しているOP だった。
 田代はTV を注視した。テストは何回も行っていたが、本番環境で動作させるのは初めてだ。今回の業務で、システム的には最も懸念される部分だと言っても過言ではない。全ての処理が正しく動作することを祈ったが、宇都がわざわざ席を立って、自分と同じぐらい熱心にTV を見ていることに気付くと、誰にも見られないように冷笑した。宇都が願っているのは、おそらく田代とは180 度真逆な結果だろう。
 TV の中で、イズミがそっとOP の後ろに移動し、操作を見守っていた。その顔が緊張しているのがわかる。OP が操作している画面まではTV に映っていないので、処理が正常に動作しているかどうかはイズミのリアクションで判断するしかない。オペレーションログをtail で表示する、という手もあるが、他の申込と入り交じってしまうので諦めた。
 処理自体は30 秒以下で完了するはずだが、田代にとっては永劫のように感じられた。固唾を呑んでイズミの横顔を見つめていると、不意にイズミが大きく肩を落とすように息を吐いた。続いてカメラの方に右手でサムズアップを掲げた。田代も思わず安堵のため息をついてしまった。
 田代はPC に向き直ると、NARICS の処理履歴を降順に表示し、今し方登録されたばかりの履歴を参照モードで開いた。長い数字のICCID、IMEI が登録されている。SIM の有効化が正常に完了した結果だ。
 カード与信の件の意趣返しをこめて宇都に勝ち誇った視線を送ると、相手はつまらなそうな顔で自分の席に戻っていった。宇都が椅子に座った途端、電話が鳴った。
 「は?」応答した宇都は困惑した顔で訊き返した。「エラー?」
 その言葉に反応した久保寺が、急いで宇都の席に駈け寄っていった。小声で話しかけたが、宇都はそれを遮って、受話器に小声で話している。
 田代はTV に視線を向けた。一人のOP の席で不具合が発生しているらしく、アイカワの伊賀利とSV たちが集まっている。田代は近くのIP 電話の受話器を掴むと、イズミの席にかけた。イズミはすぐに応答した。
 『どうやらSIM 有効化がエラーになったみたいですね』イズミは話した。『倉庫の方なのか、回線の方なのかはわかりませんが』
 「リトライしたんだろうね」
 田代は確認した。NARICS では、ネットワークのトラフィックによって接続ができないことを考慮して、タイムアウトを3000 ミリ秒に設定し、超えた場合は最大5 回リトライする仕様になっている。一方、<コールくん>の方は自動再接続の機能はなく、OP が手動でボタンをクリックする仕様のようだ。
 『そのようですね。あ、今、根津さんが来ました』
 「わかった。このまま切らないでくれ」
 受話器を耳にあてたままTV に視線を戻すと、根津副部長が大股でOP 席に向かっていくのが見えた。紫吹に状況を確認した後、アイカワの伊賀利に何か詰問しているが、伊賀利は手と首をせわしなく振っているだけだ。話にならん、と見切りをつけた根津がSV 席に走ると受話器を取り上げた。すぐに宇都の席の電話が鳴る。
 さすがの宇都も、今回ばかりは焦った表情を浮かべていた。隣で耳を傾ける久保寺は蒼白になっている。
 『どうやら』イズミが囁いた。『QQS の人が別室で視察に来ていて、大変、お怒りのようなんです』
 「それで根津さんが乗り込んできたんだな。さっきのプロキシと同じ問題かな」
 『たぶん違うんじゃないかと思います』
 首を傾げた田代だったが、すぐにイズミの言葉に納得して頷いた。タブレットはかなりギリギリになって追加された商品で<コールくん>は、ほぼ改修を終えた後だった。打ち合わせに出席していたイズミから、タブレット関係の処理は担当者が変わったようだ、と聞いた記憶がある。前日のテストもプログラマが立ち会っていたから、設定箇所は別にあると考えていいかもしれない。
 「となると大変だな」
 『はい』イズミは答え、口調を改めた。『それで提案があるんですが』
 「提案?」
 『NARICS の処理を使ってもらったらどうでしょうか』
 一瞬、イズミが何を言っているのか理解できず、田代はすぐに返答ができなかった。
 「え?」
 『私、時間があるときにソースを眺めてたんですが』イズミは説明した。『田代さん、たぶんテスト用だと思うんですけど、いろんな処理をAPI として実装してますよね。タブレット関係のバックエンド処理も、機種名をパラメータに指定して実行したら、ICCID とIMEI が返ってくるAPI があるじゃないですか』
 「あるにはあるけど......」
 『それを使ってもらいましょう。OP さんにブラウザの別タブで実行してもらえば、ICCID とIMEI が得られます。幸い<コールくん>の入力画面でも、その二つは手入力が可能です。それで処理が進められます』
 「......」
 田代は受話器に向かって必死で弁明している宇都と、部下を叱責している久保寺を見た。正直、ざまあみろ、と思わずにはいられない。NARICS の優位性をアピールする絶好のチャンスでもある。田代がイズミの提案を否定する言葉を無意識のうちに探し始めたとき、イズミがそれを制するように言葉を継いだ。
 『田代さんの考えていることはわかります。私だって、くたばれ<コールくん>って思わないと言えばウソになります。でも、私達はこの会社の正社員であって、どんな業務だって正常に遂行してもらわないと困るじゃないですか』
 「結果的にあいつらを助けることになったとしても?」
 田代は小声で問い返した。本気で答えが知りたいわけではなく、心を決めるまでの時間稼ぎだ。
 『それでもです。今、こっちの状況、見えていますか? タブレットの注文がどんどん入ってきていて、NARICS が動いている分しか、対応できていないんです。まずは、この状況を何とかしましょうよ。その他のことは、後で考えればいいと思いませんか?』
 「......わかった」田代はとうとう同意して頷いた。「ただ問題がある。俺が作ったのはPOST で動くAPI なんだよ。ブラウザのアドレスにURL 入れればいいってもんじゃない。それだとGET だからな。となるとPOST するようなページを作ってやらなきゃならんわけだが......」
 『それなら心配無用です』イズミはすぐに答えた。『さっき、山下さんに頼んで作ってもらってます』
 「は?」
 田代は愕然として山下を見た。視線を受けた山下は、意図を察したらしく、OK サインで答えた。
 『URL を転送します。田代さんから宇都さんに言ってもらえますか』
 「よし」田代は心を決めた。「わかった。後はこっちで引き受ける」
 受話器を置いた田代は、宇都に声をかけるべく立ち上がった。

(続)

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

Comment(13)

コメント

a

>できない、と言葉を叩き付けてやれれば、どんなに爽快なことか、と田代は唇を噛んだ。
>できる、と言葉を叩き付けてやれれば、どんなに爽快なことか、と田代は唇を噛んだ。
かな。

h1r0

イズミかっこいいやん

匿名

>この番組が最初となる機種でとして、
「この番組が最初となる機種で」 もしくは 「この番組が最初となる機種として」
かな?

じぇいく

> 日本で発売されるのは、この番組が最初となる機種でとして、
> 日本で発売されるのは、この番組が最初となる機種だとして、
ですかね。

リーベルG

aさん、匿名さん、じぇいくさん、ご指摘ありがとうございました。

夢乃

イズミさん有能(^^)
コーディングは弱いみたいなことを言っていたけど、既存の実装コードを読み解いたり、問題が起きた時の解決策を考えたりと、コーディングよりも難しい業務に強い。ある意味、エースの白川さんに似ている。

>機種名をパラメータに指定して実行したら、CCID とIMEI が返ってくるAPI
ここの「CCID」は「ICCID」でしょうか?

かえるSE

おもしろすぎる!
イズミえらい! ステキ!

匿名D

田代氏は、さて自分がお山の大将であると自覚できるのかな。
そりゃ開発においては一頭地を抜いているんだろうけど、
より高次元から全体を俯瞰しているという点では、
イズミさんのほうが上だと思う。
宇都氏はピンチだけど、野沢女史のフォローはどうなるのかな?

リーベルG

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

紋次郎

田代氏、愕然としたわりには切り替えて動くの早いですね。やっぱりそこは技術者としてシステムトラブルを早期に解決しようとするプライドなのかな。

勝手に校正

>根津は唸った。おそらく喉元までせり上がってきた罵声をかみ殺したのだろう。代わり言ったのは、
代わりに言ったのは、
でしょうか

イズミさん対応早過ぎ。山下さんには事前にトラブル対応の根回しをしてたんだろうけど、ものすごい危機管理能力ですね。
そして「こんなこともあろうかと」感。いずれやる事だとはいえ、忙しい中でも先回りで実装していた田代さんナイス判断。

リーベルG

勝手に校正さん、ご指摘ありがとうございました。

SQL

恥ずかしながら自分はコールくんざまあ、で終わらせちゃうタイプですね

コメントを投稿する