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

レインメーカー (13) 報告会議と独裁

»

◆アリマツ通信 2021.6.23
 YT 社CC トラブル続報
 19 日に発生したYT 社CC のトラブルについては、先日の通信で第一報をお伝えしました。その後、関係者への取材を進めた結果、解決にはDX 推進室が大きく関与していたことが明らかになりました。
 話をうかがった椋本副部長によれば、土曜日にも関わらず、田代さん、朝比奈さんが駆けつけ、原因を追及した結果、アイカワ製作所に連絡を取ることなく解決方法を発見し、昼前には無事に復旧したとのことです。
 椋本副部長「DX 推進室は、上期の達成目標として<コールくん>の保守を社内で行うために様々な情報収集を行っています。その成果が早速出たと言えるでしょう」
 文 総務課 土井

 ◇ ◇ ◇ ◇ ◇

 「聞きましたよ」倉田がからかうような口調で言った。「<コールくん>のトラブルを鮮やかに解決したそうじゃないですか」
 イズミは赤面した。
 「たまたまですよ。実際、原因はプログラミング的なことじゃなかったわけですから」
 吉村が調査した結果、土曜日にYT 社CC でエラーが出ていた原因は、イズミの推測通り、パーティションの容量であることが判明したのだった。理由は不明だが<コールくん>が稼働しているLinux サーバには、CC 単位でパーティションが作成されていた。<コールくん>標準機能関連のデータとファイルは、共通のパーティションに格納されるが、今回のYT 社キャンペーンのようなCC 独自ロジックに関連するデータの格納先は、CC 単位のパーティションとなる。
 もちろん容量は十分なバッファを考慮して計算されていたのだが、YT 社CC ではExcel やPDF を作成する作業が多く、一時ファイルの容量が数ヶ月にわたって危険なほど蓄積されていたこともわかった。作成日付が3 日を経過した一時ファイルを削除する夜間バッチも用意されていたが、どういうわけかcron の実行対象から外されていたため削除されなかったのだ。
 業務によっては、一時ファイルを作成しても、対象ファイルのダウンロードと同時に削除されるようなロジックになっているものもある。削除によって書き込みできる容量が空いていた場合は、書き込みがエラーにならなかった。それが正常終了とエラーがランダムに発生していた理由だ。
 そこまで判明すれば解決方法は単純だった。停止されていた夜間バッチを実行するだけでよかった。本来なら何ヶ月も前に削除されていてしかるべきだったファイル群がまとめて消失したことで、YT 社CC 用のパーティションの空き容量は30% 以上に回復し、その後はエラーが発生することはなかった。
 結局、イズミや田代が疑ったように、宇都が仕組んだトラブルではなかったが、宇都に責任が皆無というわけでもなかった。後日、吉村が調べたところでは、夜間バッチの停止は宇都によるものだったらしいことが判明したのだ。理由はバッチ処理の修正と動作確認を行った際、「一日か二日のつもり」でcron から外し、その後、戻すのを忘れていたからだ。
 「無能な人ですね、システム課のあの大きい人は」
 倉田の厳しい言葉に、イズミは内心で、そういうわけでもない、と呟いたが、倉田に向かっては曖昧に笑うだけにとどめた。
 これはイズミの推測でしかないが、実は宇都も、かなり早い段階で原因に思い当たっていたのではないだろうか。何といっても宇都は、長年にわたって<コールくん>に携わってきて、その構造にも詳しいのだ。YT 社CC 業務で、どんなファイルがどこに作成されるのか、そのファイルの後処理はどうなっているのかぐらい、頭に入っていても不思議ではない。
 そう考えると、宇都がアイカワ製作所の緊急連絡先に連絡しなかった理由にも納得がいく。アイカワが駆けつけて調査したら、エラーの原因はプログラムのバグなどではなく、ハード的な要因だと突き止めてしまっただろう。いくらアイカワが宇都とWin-Win な関係で結託していたとしても、業務に支障が出た以上、責任問題になってくる。正しい調査結果を報告しない理由はない。宇都としては、そんな事態を回避したかったのだろう。
 「あ、おつかれさま」休憩に出ていた山下ヨウコが戻ってくるなり、イズミに近寄ってきた。「今まで報告会議だったんですか。長かったですね」
 イズミが田代と一緒に、ついさっきまで参加していたのは、今回のトラブルについての臨時報告会議だった。定例の報告会はOP の対応不備などでクレームになったとか、発送先を間違えた、といったケースを題材に、月に一度、開催される。今回は重要度が高いということで緊急開催され、当事者としてイズミと田代も呼ばれていた。会議は2 時間に及び、先ほどようやく終わったところだった。
 「そういえば」倉田が訊いた。「宇都さんは、アイカワ製作所に連絡取れなかった......のか、取らなかったのか知りませんけど、理由をなんて説明してたんですか」
 その点は当然、報告会議でも宇都に説明が求められた。何と釈明するのかイズミも興味津々だったが、宇都は「数日前にスマホの電話帳を全部消してしまって作り直したとき、アイカワ製作所の電話番号を間違えて登録してしまった」と真顔で告げ、謝罪した。単なるケアレスミスであり、業務を正常遂行を妨げる意図はなかった、と主張したことになる。イズミにはその釈明が真実ではないことがわかったし、他の出席者も心の中で「そんなわけあるか」と突っ込みを入れたであろうことは想像に難くなかったが、証明する方法はない。
 「なんすか、そりゃ」倉田は呆れたように苦笑した。「恥ずかしげもなく、しゃあしゃあと」
 「まあ、結果的には無事に解決したわけですから」
 イズミがそう言うと、山下が顔を輝かせた。
 「そうそう、さっきそこでCC のシオリさんと会ったんですけど、会議では朝比奈さん、絶賛されたみたいですね」
 「いえ、シオリさんが大げさに経過報告しただけです」
 「開発経験ないなんて言ってましたけど」山下がイズミの腕をつついた。「実はあるんじゃないですか? だって田代さんだって月曜日にアイカワと連絡が付くまで待つしかない、って意見だったんでしょ?」
 「ああ、それでですか」倉田が声を潜めた。「田代さんがちょっと不機嫌そうな顔してたのは」
 報告会議では、吉村とシオリが時系列に沿って状況と対応を説明した。最初にCC に到着したのはイズミで、トラブルの原因を正確に推測したのもイズミだ、ということが明らかになり、出席者の大部分は賞賛を惜しまなかった。一方で田代に対しては、遅れて到着した上に、宇都の口車に乗って当日の解決を断念しかけた、という事実が明らかになり、今回のトラブルに対しては無為無策という印象だけが残ったようだ。
 「気のせいじゃないですか」
 「私も見ましたよ」山下が言った。「大丈夫ですか、って言ったら、怖い顔して睨まれましたけど」
 「いろいろ忙しいから」
 「それだけですかね」倉田が意味ありげに言った。
 「どういうことですか」
 倉田が何か言おうとしたとき、田代が戻ってきた。イズミたちは同時に田代の顔を見つめたが、内心はどうあれ、表面的にはなんのわだかまりも残していないように見えた。
 「お待たせ」田代は3 人に言った。「どうかした?」
 「いえ」イズミは答えた。「報告会議の話をしていたんです」
 「ああ」田代は笑った。「ああいう会議は必要だとわかってるんだけど、時間ばかりかかるのは困りものだな。一種の必要悪なんだろうかね」
 イズミがぎこちなく笑い返したとき、ノックの音とともに総務の土井が入ってきた。
 「遅くなりました」
 「いや、こっちも今、揃ったとこですから」田代はノートPC を掴んだ。「じゃ、打ち合わせ始めましょうか」
 5 人は揃って予約済みの会議室に移動した。今日は元々、新システム開発に対する打ち合わせの予定だったが、緊急の報告会議が割り込んだため、倉田と山下は今まで待っていたのだ。
 「さてと」全員が席に付くと田代はノートPC を操作した。「今日はDB 関係の続きでしたか」
 新システムのデータベースは、オープンソース製を採用することで意見が一致していた。製品版だと購入手続きの段階で、システム課に情報が筒抜けになってしまうためだ。
 「まあ、事実上、二択になるんですがね。どう思う?」
 「その前にいいですか」倉田が手を挙げた。「フレームワークの件なんですが」
 田代はうんざりした表情を浮かべた。
 「倉田さん、またそれですか」
 フレームワークにSeasar2 を使う、と告げられた後、倉田は折に触れて反対意見を唱えてきた。そのたびに田代が「決まったことだから」と退けてきたのだが、倉田はいまだに納得できていないようだ。
 「重要なことですから」倉田は言った。「私、知り合いのプログラマに聞いてみました。Seasar2 とTeeda を使ったプロジェクトの経験がある人です」
 「ほう。それで?」
 「確かにSeasar2 は使いやすいフレームワークだと言っていました。Teeda もスクリプトレットなんかを使わず、純粋なHTML としてテンプレートを記述できるので、デザイナーとの協業もやりやすいそうですね」
 田代は満足そうに頷いた。
 「でも一方で」倉田は続けた。「ページ情報の一部がセッションに記録されるので、ブラウザの複数タブで同じページを開いていると、片方にページ情報がコピーされてしまうような現象が発生するそうです。Seasar2 がリリースされた当時、主要なブラウザはタブに対応していなくて、複数立ち上げても、別セッションになるから問題はなかったんですが。現在のブラウザだと同一セッションになります」
 「つまり何が問題だと言いたいんですか」
 「CC のオペレーションだと、たとえばタブA で会員の過去対応履歴を開いておいて、タブB で新しい履歴の入力をする、というようなことがよくあるそうです。2 つのタブを交互に参照していると、新しい履歴を登録しているつもりが、実は過去履歴に上書きしていた、というような不具合が出ませんか」
 「それは私も知っています」田代は答えた。「ページの情報をセッションで共有しないで、全部リクエストで送信するようにすれば問題ないでしょう」
 「それだと」倉田はすかさず反論した。「Seasar2 を使うメリットがかなり薄れるのでは?」
 「そんなことはないと思いますね。私は何度かSeasar2 とTeeda の組み合わせでプロジェクトを経験してきましたが、そういうことで困ったことは一度もないですよ。どうしても発生するなら、同じページを複数同時に開くのを禁止にすればいい」
 それはCC の現場が納得しないのではないか、と思ったイズミは手を挙げようとしたが、山下に先を越された。
 「えー、それってどうなんですかねえ」山下は首を傾げた。「私、シオリさんとかCC の人と何度か話をしましたけど、現状のオペレーションはかなり時間をかけて定着させてきたみたいですよ。それをツールの都合で変えるのって、ちょっと本末転倒な気がしますねえ」
 田代はムッとした顔で、少し荒い口調で答えた。
 「現場とは私が調整しますのでご心配なく」
 山下は、ご自由にどうぞ、とでも言いたげに肩をすくめると、それ以上は何も言わなかった。田代は倉田に向き直った。
 「倉田さんもそれでいいですか」
 「まだあります」
 「なんですか」
 「JDK の問題です」
 「JDK?」田代は意外そうな声で訊いた。「それがどうかしましたか?」
 「最新のJDK でSeasar2 は動作するんですか」
 「それならもう試しましたよ」田代はニヤリと笑った。「サンプルレベルですが問題なく動作しました」
 「でしょうね。それは私もテストしてみました。Tomcat を起動したとき、リフレクション関係で警告が出たことには気付きました?」
 田代の顔が強張った。
 「警告? い、いや」口ごもりながら、田代は倉田を見返した。「それは気付かなかったですが......でも動作したんだから問題はないですね」
 「現時点ではそうかもしれません」倉田は頷いた。「ただ、その警告は、将来的には警告ではなくエラーになるようなんです。今はいいかもしれませんが、将来、JDK のバージョンを上げたとき、起動しなくなるようでは困りませんかね」
 その可能性に田代が気付いていなかったのは明らかだった。焦ったように視線を天井と壁にせわしく移動させた後、田代はようやく答えた。
 「動作するバージョンのJDK を使えば問題ない。もしくはTomcat も。だいたいJDK やTomcat のバージョンを上げる必要があるとすれば、脆弱性が発見されたときぐらいでしょう。これは社内システムだから、そんなものを気にする必要はないですしね」
 「でもですよ」山下が割り込んだ。「逆に言えば、それだけいろんなことに考慮しないといけないってことですよねえ。それなら普通に最新バージョンで動くフレームワークを使った方がいいと、私は思うんですけど」
 田代は苛立たしげにテーブルを指で叩きながら聞いていたが、山下の言葉が終わると、素っ気なく「それは一つの意見として聞いておきます」とだけ言い、山下とは目を合わせようともしなかった。
 「朝比奈さんはどう思いますか」不意に倉田がイズミに意見を求めた。
 「え、私ですか」イズミは戸惑った。「私はみなさんのように経験がないので、そういう判断は......」
 「でも<コールくん>のトラブル対応では、経験なんか関係なく見事な手腕を発揮されたじゃないですか。逆に経験者でない人からの意見の方が有効な場合だってあります」
 「賛成」山下も倉田に同意した。「私も朝比奈さんの考えが聞きたいですねえ。いろんな立場の人の意見を聞くって大事だと思います」
 「いや、ちょっと待ってください」イズミの意見を聞くことを妨げるように、田代が大きく手を振った。「どうも、お二人ともシステム開発というものをあまりご存じないようです。私は大小様々なプロジェクトに携わってきたので、よく知っていますがね、システム開発に民主主義など百害あって一利なしなんです」
 イズミはきょとんとして田代を見つめた。話がどこに飛躍したのか理解できない。それは倉田と山下も同様のようだ。記録係の土井も驚いたように手を止めている。
 「あの」倉田が訊いた。「何の話ですか」
 「つまりですね。システム開発は、ある意味、独裁で進めていかなければいかん、ということです。多くの意見を交換して、方向を話し合いで決めていく。時間と金に余裕があるプロジェクトならそれでもいいでしょう。でも、現実はそうじゃない。納期というものがあり、予算というものがある。多数の意見を考慮して、検討して、全員が納得する結論を出す、なんて贅沢が許されない場合がほとんどなんです。今日の本来の議題だったはずのDB だってそうです。A さんはPostgreSQL を主張する。B さんはMySQL を推す。C さんは全然マイナーなDB を使ってみたいと言う。さぞ面白い議論になるでしょうが、それぞれが譲らなかった場合、結論はいつまでたっても出ない。結果として実装の開始が遅れ、予定していたカットオーバーに間に合わないなんてことになるかもしれない。そうなっても、いい議論ができたことは成果だった、なんて言ってクライアントが納得しますか? しないでしょう」
 「それはそうだと思いますが......」
 「全てはトップが決断するしかないんです。トップが明確な意志と思想でアーキテクチャを、言語を、フレームワークを、DB を、コーディングルールを決定し、推し進めていき、その全てに責任を持つ。そうじゃないとプロジェクトなんて打ち合わせの議事録ばかり増えていくだけで、一歩も前に進んでいきませんよ。違いますか、倉田さん。私の言っていること、間違っていますかね」
 「間違ってはいないと思いますが......」
 「この開発のトップは私です」田代は反論を許さない表情で宣言した。「組織図上の役職がなんであれ、実務レベルでのリーダーは私なんです。そこに異論はないはずですね。その私がSeasar2 で行くと決めました。これが最終決定です。ここに議論の余地はありません」
 「さっきも言ったように」倉田が言った。「欠点とリスクが......」
 「それは対処していけばいい」少し口調を和らげ、微笑みさえ浮かべながら、田代は遮った。「発生ベースでね。あらかじめ全てのリスクを予見するなんて不可能です。問題が発生したら対処すればいいんです。バグが出たら潰すようにね。倉田さんはそれぐらいのスキルはお持ちだと思いますが、それは思い過ごしですかね」
 倉田はかぶりを振っただけで答えなかったが、イズミには納得ではなく、諦念のように感じられた。
 「では、そういうことで」田代は決済印を押すように告げた。「この件は今後、議論不要とします。これは決定事項です。土井さん、議事録にはそう明記しておいてください。ゴシック体の太字で」
 土井は気圧されたように頷くと、キーを叩き始めた。
 「さて、本来の議題に移りましょうか」田代は笑いながら言った。「頼むから、PostgreSQL とMySQL で宗教論争なんか始めないでくださいよ」

 ◇ ◇ ◇ ◇ ◇

 打ち合わせが終わったとき、17 時まで10 分足らずを残すだけになっていた。倉田は急いで帰り支度を始めたが、田代がまだ戻ってこないのを見て、イズミに囁いた。
 「私が心配してるのがさっきのです」
 「えーと」イズミは倉田の顔を見た。「つまり独裁方式?」
 「それは進め方として理にかなっている点もあるので、特に異論はありません。そうじゃなくて田代さんの、朝比奈さんと山下さんに対する態度です」
 「は?」
 「わからなかったですか」倉田はPC をシャットダウンしながら言った。「結局、朝比奈さんの意見を聞かなかったし、山下さんの話なんか無視したも同然だったでしょう」
 「私が意見を言ったところで、たぶんズレまくってたと思います。山下さんのは......倉田さんとの議論に水を差されたくなかっただけじゃ......」
 「私はちょっと違うと思うんです」
 「意味がよく......」
 「性別の問題じゃないかと」倉田はカバンにスマートフォンを放り込んで立ち上がった。「私の思い過ごしならいいんですが。じゃ、定時なんで失礼します」
 倉田は逃げるように退社していった。

(続)

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

Comment(12)

コメント

匿名

コールくんリプレイスプロジェクトが成功しても別の独裁者が生まれるだけなのでは・・・

ゆぴか

まさかここから現代の男女権利問題にいくとはな
確かにこれまで普通に女性のスーパープレイヤーたちが作中に登場してたけど
現実にはどうかなというところもあった。
フィクションだから見過ごしてたけど現実にはこんな感じかもね

侘助

田代さんの頼りにならない感がすごい。

>「最新のJDK でSeasar2 は動作するんですか」
>「複数タブで同一セッション」

Seasar2に詳しいと豪語しながらこんなことも知らないのか、と不信感を抱いてしまう。

>「それは対処していけばいい」「発生ベースでね」

ゴミのようなタスクが大量に降ってくる予感しかしない・・

匿名D

>Teeda を使うメリットがかなり薄れるのでは?
ここはTeedaじゃなくてseaser2ですか?


当然っちゃ当然ですけど、当人がどうとも思っていないことは、
コールドリーディングでは読み取れないんですね。
イズミ女史は、コールドリーディングに頼りすぎて、
人間の機微には疎かったりするのかな。
うまく立ち回れなくて追い込まれていたようだし。


>「現場とは私が調整しますのでご心配なく」
男尊女卑な態度で女性の構成員が多いCCに臨んだら、こりゃ揉めますね。
ただでさえ株が下がっているのに。


わかってない上位者が無理難題を言うパターンが多いが、
承知の上で技術者の側から仕様や操作をゴリ押しするパターンは新しいかも。
飛田氏の場合は、ローカルな操作を
スタンダードに合わせよう、という提案だったし。

匿名D

綴り、ぜんぜん間違ってるし。orz

じぇいく

>5 人は揃って予約すみの会議室に移動した
「予約済みの」ですかね。

anonymous

まさか田代さんが今回のPress Enter ヴィランになろうとは

匿名

あたかも項羽と劉邦みたいですね。
田代さんは能力は高いようですが猜疑心が強く他人の意見を聞かない性格なので
いずれ孤立してしまい、逆に倉田さん達を味方にした
イズミさんが田代さんに取って代わるかもしれませんね。

匿名

私が倉田さんの立場で技術的に問題がある判断をこうまでゴリ押しされたら、議事録にはSeasar2の採用に伴う開発の遅れの責任はすべて田代さんが負う、ぐらいのことは書いてもらうかな。

匿名

田代と宇都は実装は違うけれど、本質的に同類なのかな。イズミは狂言回しで、裏の主人公は別にいそう。

リーベルG

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

匿名

田代と宇都は実装は違うけれど、本質的に同類なのかな。イズミは狂言回しで、裏の主人公は別にいそう。

コメントを投稿する