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

鼠と竜のゲーム(14) 隠された醜聞

»

 大抵の会社組織にあてはまることだが、組織の規模が大きくなるにつれて「社外秘」と呼ばれる事項は増えていくものと決まっている。

 五堂テクノの場合、社外秘は大きく3種類に分類される。1つは内線番号表とか役員報酬率表のように流出したからといって実害がないものだが、半ば慣習によって社外秘とされているものだ。2つめは流出すると組織の運営や売り上げに大きなダメージをもたらすもので、長年の営業ノウハウや顧客リスト、蓄積されたソースコードなどがこれにあたる。3つめは、いわゆる醜聞と言われるもので、漏出した際のダメージは、こちらの方が大きい。

 「BP事件」は、おそらく五堂テクノ社内で、最も秘密が保たれた醜聞であるに違いない。それは城之内がソリューションデベロップメントDivisionに配属されて、ちょうど2カ月が経過したときに起きた。

 城之内を受け入れてから、野崎は多忙な管理業務の合間に、この扱いにくい部下の行動をできるだけ見るようにしてきた。1人の人間を理解するのに十分な時間があったとはいえないが、それでも徐々に城之内の人物像が見えてきていた。

 当初の印象では、城之内はメインバンクの取締役である父親の威光を背景に、自分のわがままを通すことに何の疑問も抱いていないボンボンだった。実際、城之内が各部署を出入りしてきた経緯を聞けば、その評価もあながち間違ってはいないと思われた。

 しかし、さすがの傍若無人な城之内も、この部署を追い出されたら新たに転職活動をしなければならないことぐらいは分かっていたらしい。父親のコネも無尽蔵に続くわけではないのだ。少なくとも野崎が慎重に注意していた1カ月ほどは、<LIBPACK>シリーズの構造を把握しようと努力していたようで、以前の部署のように、誰かと衝突するようなこともなかった。

 その頃、城之内のチームは、ある地方自治体の<LIBPACK-IV>のカスタマイズ案件を担当していた。工数にして10人日程度といったところで、城之内チームは、当時のサブリーダーだった西尾ミドリのサポートの元で、トラブルなく納品することができた。

 その報告を読んだ後で、野崎はミドリを呼んで、城之内について聞いてみた。このようなことは、評価される本人の志気を損ねかねないから、城之内が年次有給休暇を取得している日を選んでのことだった。

 問われたミドリは、少し逡巡した後に、小さな声で答えた。

 「まあ、普通じゃないですか?」

 「それは主任としてか?」野崎は問い返した。「それとも、プログラマとしてか?」

 「どっちもですね」ミドリは小さな肩をすくめた。「主任としては、まあおかしな命令を出すこともないですし、プログラマとしては、きちんと指示したことはやってくれますよ」

 どちらが主任なのか分からないな、と苦笑したものの、野崎はそれには触れなかった。

 「このままうまくやっていけそうか?」

 「まあ、たぶん。この調子なら」

 ミドリの評価を聞いた野崎は、城之内の人物像に少し修正を加えた。ここに来て、ようやく城之内も自分のスキルに正面から向き合い、足りない部分を埋めるべく努力を開始したらしい。ひょっとすると、それすらできないのではないか、という危惧は、ひとまず忘れてよさそうだった。もう少し前にそれに気付いてくれればよかったのだが、済んだことはどうしようもない。

 あいつなりに結果を出さなければ、と悩んでいたのかもしれないな、と野崎は少し反省した。他部門でのトラブルの話を重大に捉えすぎていて、最初から色眼鏡で見てしまったようだった。先入観にとらわれて、事実をしっかり見つめていなかったのは、管理職としても技術者としても恥ずべきことだ。

 完全に安心したわけではなかったが、野崎は取りあえず、城之内への警戒レベルを一段階下げることにした。そもそも、Div長が一主任の問題にいつまでも関わっているわけにもいかないのだ。

 その翌週、野崎はインドのオフショア開発委託先で発生したトラブル対応のため、1週間ほど日本を離れることになった。折しも、城之内のチームには、やや大きめのカスタマイズ案件がアサインされていた。やや不安ではあったものの、ミドリがいるから大丈夫だろう、と自分に言い聞かせ、野崎は日本を後にした。

 

 インドでのトラブル対応は予想していたよりも深刻で、野崎は予定を5日ほどオーバーして帰国した。出社してからも、報告書の作成や、現地オフィスとのTV電話会議などが続いた。そのため、出張に関する後始末が一とおり終わったのは、さらに3日が経過した日曜日の夜だった。

 20時過ぎ、さすがに疲れていた野崎は、Div内の決裁処理と、報告書のチェックは翌日にしようかと考えた。だが、明日は明日で出席しなければならない会議がいくつもあって、まとまった時間は取れそうにない。常日頃、部下には、「今日できることは明日に回すな」と言っている手前、自分が率先して仕事を先送りにすることは躊躇われた。野崎は缶コーヒーを飲んで少しばかりのエネルギーを補給すると、決裁フォルダに蓄積していた報告書ファイルの最初の1つを開いた。

 目の疲れを感じながらも、野崎は40以上の報告書を到着順に斜め読みし、しかし要点はチェックしながら、承認、あるいはコメントを付けて差し戻す、という作業を続けていった。そして、ようやく最後の報告書を開いた野崎は、それが<LIBPACK>シリーズの進捗報告であることに気付くと、椅子に座り直して、真剣に報告内容を読み始めた。

 <LIBPACK>シリーズの開発チームは、長野県R市図書館システムの案件を手がけていた。他社が10年前に作成したシステムを<LIBPACK-IV>に置き換えるもので、設計4人月、実装およびテストが30人月という中規模案件だった。新規案件なので第1開発室が担当だが、そちらが別案件も同時進行させているため、旧システムからのデータ移行、およびログイン部分のみを、第2開発室が担当していた。旧システムを作成したベンダは、ドキュメントや実装担当者の所在すら明らかにしないまま、数年前に消滅してしまっている。そのため、実データそのものを解析して、<LIBPACK>へデータ移行を行わなければならず、その作業はやや難航していた。

 すでに新システムへの切り替え日が来週の水曜日に決定していて、前日の午後9時から翌朝の午前9時までの間、図書館システムが停止する旨が、数週間前から利用者宛に連絡されている。この12時間で絶対にデータ移行を完了させる必要があった。

 報告書には、データ移行プログラムが完成したことに加えて、その処理概要が添付されていた。そのExcelファイルを開いて、ざっと読んでいた野崎は、ある個所で眉をひそめた。それは利用者マスタの移行を説明した部分だった。

■ユーザーマスタ移行

 1.日本語項目はEUC-UTF-8変換モジュールを使用
  → 外字は別紙3の外字テーブルに沿ってコンバート
 2.ANK項目はそのまま移行
 3.コード項目は別紙4のコード表に沿って変換
 4.パスワードはCV01UT003で一括初期化

 野崎が首を傾げたのは、パスワード初期化のくだりだった。なぜわざわざ初期化しなければならないのだろうか。初期化するということは、新しいパスワードを設定し、それをユーザーに通知するという手間が発生するし、ユーザー側にもパスワードの再設定を強いることになる。

 時刻はすでに21時を過ぎている。帰宅してビールをやりたい誘惑を振り払うと、野崎はため息とともにTeraterm を起動して、<LIBPACK>シリーズのテストサーバに接続した。管理者権限でログインすると、R市用のテストDBを開く。データ移行のテストは行っているはずだから、移行完了後のデータセットが残っているはずだと考えたのだ。

 テストDB内にはいくつかのバージョンが存在していて、野崎はどれが移行結果のバージョンなのかを知らなかったから、順番に開いてみるしかなかった。やや手間取った末に、ようやくデータ移行テスト結果のデータセットを探し当てた野崎は、移行されたユーザーマスタの先頭10件をselectしてみた。

Bp

 「おいおい」野崎は思わずうなった。

 パスワードを何で初期化したのかは一目瞭然だった。この移行処理を作成した人間は、こともあろうにユーザーの生年月日の下6桁を初期パスワードとして設定したのだ。しかもハッシュ化する手間さえ惜しんでいた。

 野崎はブラウザを起動すると、五堂テクノ社内ポータルサイトにログインし、管理者用メニューからバージョン管理システムを起動した。ソースのチェックアウトやコミットなどは、Eclipseのプラグインから実行する必要があるが、野崎が見たかったのは、パスワード初期化にされたという、CV01UT003 というプログラムの作成者情報だけだ。検索結果として表示された作成者は、野崎の予想どおりの人間だった。

 それを確認すると同時に、野崎は勤怠管理システムを開いて、<LIBPACK>シリーズの開発チームの出退勤状況を確認した。平日であれば、この時間でも誰かしら残っているのだが、さすがに日曜日の夜では、そうもいかない。それでも幸運なことに、山下主任が昼過ぎに出勤してきて、まだ退勤していなかった。野崎はすぐさま受話器をつかむと、内線番号を叩いた。

 『はい、山下です』少し驚いたような声が答えた。『野崎さんですか?』

 「ああ、遅くにすまん」

 『いえ、そろそろ帰ろうと思ってたんですが……何か?』

 野崎が早口で生年月日で初期化されたパスワードのことを話すと、山下主任はしばらく沈黙していた。驚いているというより、あきれているようだ。

 『……すみません。こっちが手いっぱいで、データ移行の方まで気が回らなくて。無理にでも時間を取ってチェックすべきでした』

 「いや、君のせいじゃない。西尾くんがサブに付いてたはずなんだが、なんでこんなバカげた仕様を見過ごしたんだか」

 『あ、西尾なら、親が入院したとかで、先週はずっと名古屋の実家に帰ってますよ』

 「うーん。それなら、誰か別の人間をサブにつけておくべきだったな」

 『そうですね。すみません』

 「まあ、済んだことは仕方がない。それより、ユーザーへの告知はどんな内容になっているか分かるか?」

 『ちょっと待ってください。調べてみます』話しながら、山下主任がキーを叩く音が微かに聞こえてきた。『……ああ、よかった。明日の昼過ぎに、図書館ホームページに告知を出すとともに、登録ユーザーにメールで初期化内容を送信することになっていますね。あと図書館の電話問い合わせ用のトークスクリプトもあります。明日の朝一番で、城之内が先方の担当者に説明に行く予定になっているようです』

 「危うく大恥をさらすところだったな」野崎は安堵のため息をついた。「こんなのをホームページに出したりしたら、うちの会社はいい笑いものだ。その間抜けな告知文は消してしまえ。それから城之内を呼び出せ。すぐに」

 『分かりました。そっちに行きます』

 だが、山下主任が何度電話をかけても城之内が応答することはなかった。

 「もう放っておきましょう、あいつは」開発室から野崎のデスクへ移動してきた山下主任は、苛立たしげに受話器を置いた。「このパスワード、どうしましょう?」

 「移行前データはあるんだろう。そっちのパスワードはどうなってる?」

 「確かハッシュ化されてたと思いますが」山下主任は宙を見つめた。「何のアルゴリズムだったか分からなかったんじゃなかったかな。その部分のソースがなくて」

 「それにしたって、動くプログラムがあるんだから、調べようはあるだろう」

 「城之内は調べる手間を省いた、ということですね」

 野崎と山下主任は、城之内が省いた手間をかけて、元データのハッシュ形式を調べた。旧システムのソースはなかったものの、モジュール一式は手元にあったので、社内のテストサーバの1つに環境を作成した。それから、8文字のパスワードを決めて、あらかじめMD2、MD4、MD5、SHA-1、SHA-256で、ハッシュ化した文字列を作成しておく。後は旧システムにユーザーを新規登録して、同じパスワードを指定するだけだ。結果はすぐに出た。

 「MD5だな」

 「変なオレオレハッシュ関数じゃなくてよかったですね。どうしますか? SHA-256あたりにしときたいところですけど」

 「元の文字列が分からん以上、今、変換はできないな。このまま使おう。パスワードを変更したときに、SHA-256にすればいい。データの文字数で区別はつくしな」

 「そうですね、分かりました。それは、明日にでも組み込んでおきます。これで何とかなりますね」山下主任はあくびをしながら身体を伸ばした。「まったく、いらない手間をかけさせてくれますね、あの野郎は」

 忘れていた疲労感が肩にのしかかってくるのを感じながら、野崎はうなずいた。とにかく、これで今夜は帰宅することができそうだった。

 この出来事を、野崎は特に公言するようなことはなかったが、山下主任は告知文の変更などのために、何人かの担当者に事の次第を話し、特に口止めするようなこともしなかったらしく、数日後には五堂テクノ社内の、ほぼ全員が知ることになった。やがてこの件は「バースデイパスワード事件」、略して「BP事件」と呼ばれることになったが、野崎の心配に反して、五堂テクノの外にもれることはなかった。原因があまりにも素人じみていたため、笑い話にすることすら恥ずべきことだと誰もが考えたためだった。

 当の城之内自身は、このことをどう思っているのか、誰にも語っていない。ただし、野崎が見たところ、海より深く反省した、という様子は小指の先ほども見せていないので、本人としてはちょっとしたケアレスミス程度にしか考えていないらしい。どうも、城之内は失敗を糧に成長するようなタイプではなく、失敗をきれいに記憶から消し去ることができる希有な才能の持ち主のようだった。

 こいつは、また何かやる。野崎はそう確信した。

 野崎の予測はあたった。それからしばらくして、城之内は、またもや<LIBPACK>がらみで問題を引き起こした。それがT市立図書館向けカスタマイズ案件だった……

 野崎の追憶は、城之内の呑気な声で遮られた。

 「あれ、野崎さん、どうしましたか?」

 「ちょっと来てくれ」野崎は立ち上がって、ドアの方へ歩き出した。城之内が付いてくることを確かめもしなかった。

 ミーティングルームに入り、椅子に腰を下ろすと、野崎は前置き抜きで切り出した。

 「またやったな?」野崎は持っていたプリントアウトを、バンと会議室テーブルに叩きつけた。「余計なことはやるなと言っただろう」

 城之内はバカにしたような薄ら笑いを浮かべて、野崎の顔から、プリントアウトに視線を移した。

Icon1クロラ氏事件の件、横浜の下請けというのは、サードアイという会社らしいな

justice_speaker 09/01 16:04:25
Icon1@justice_speaker ここだな。http://y4op.oj/jk12

tetsurou999 09/01 16:22:01
Icon1本当かね。そのソースはどこなんだ?

kojikosuke 09/01 16:26:28
Icon1サードアイ...一緒に仕事したことあるかも...

rod_yamasita 09/01 16:27:04
Icon1とりあえず拡散希望

justice_speaker 09/01 16:29:01
 

 「サードアイという社名を堂々と出して、一体、どういうつもりなんだ?」

 「どういうつもりも何も、会社の利益を考えて……」

 「さっき、サードアイの社長から電話があった」野崎は城之内の言葉を遮った。「T市立図書館カスタマイズの件で、話がしたいそうだ。明日の朝、一番でやってくる。私と君で応対するからな」

 「ふーん、そうですか」城之内は横を向いて、わざとらしいため息をついた。「明日は休みを取ろうと思っていたんですけどねえ。まあ、そういうことなら仕方がないです。午前中だけ出勤することにしますよ」

 その言葉にも態度にも、謝罪らしき姿勢は一切なかった。

 「これ以上、絶対に、いいか、絶対に何もするな」野崎は絶対という言葉を強調した。「これは命令だ」

 「はいはい。分かりましたから」城之内は腰を浮かせた。「もういいですか?仕事あるんで」

 野崎は無言でうなずいた。言ってやりたいことはまだまだたくさんあったが、この男の無神経さに耐えられるのは、このぐらいの時間が限界のようだった。

(続く)

 この物語は事実を基にしたフィクションです。実在する団体、個人とは一切関係ありません。また司法当局の捜査方法などが、現実のそれと異なっている可能性があります。

Comment(11)

コメント

abc

悪者づくりもいいけれど、回想より本編を進めてほしいなあ、と思う今日この頃。

不治ソフト

鼠と竜それぞれ交互に進む展開が面白いんじゃないかな。

やじうま

以下気になりました。こんなもんなんですかね。パッケージ開発部門だとそんなもんなんでしょうか。

・エースシステムと比較して社員のスキルがかなりかけはなれている。(部署の違いもあるんでしょうけど)

・Div長がTeratermたたいてSQL*PlusとかでDBを見るスキルがある。またパスワードハッシングに関する知見がある。大手SIerだとそんなことできる人少ないような。

・設計4人月、実装およびテストが30人月という比率は設計が少なすぎる?

・パスワードの変更という重要変更を直前にやって2人で見ているだけで即時リリースしようとしているけれど普通なら延期では?Div長が見ているからいいってこと?

・これだけのスキルのある人達がなぜDBコネクションの開放問題に気づかなかった?これを全面的に城之内の責任にするのは厳しいような気がします。

悪役が明確でわかりやすくなってる反面、なんか今までリアリティを強調していたディテールに気になるところが増えてフィクションらしさが増えたような印象です。

他の読者はどう思ってるのか気になりました。

BEL

城之内うぜえええええwwww ナイスなキャラ設定だわ

>・設計4人月、実装およびテストが30人月という比率は設計が少なすぎる?
どういう開発手法をとるかにもよりますが、仮にテストが20ちょいと考えれば
ちょっと少ないかな程度でしょうか。
4人月といっても一人が(何人かに相談しながらとかして)4ヶ月かけてやる、
名目上の4人月なのか、4人で1か月でやるのかで違うと思いますし。
(そういう意味で、人月は神話)
パッケージのカスタマイズを10人日でやる会社ならこんなもんなんですかね。

>・これだけのスキルのある人達がなぜDBコネクションの開放問題に気づかなかった?これを全面的に城之内の責任にするのは厳しいような気がします。
これはこの先描かれるのでしょうかね。
問題なのは城之内が"主任"になっていることだと思います。

太郎冠者

>・Div長がTeratermたたいてSQL*PlusとかでDBを見るスキルがある。またパスワードハッシングに関する知見がある。大手SIerだとそんなことできる人少ないような。

野崎さんは昔、開発畑にいたようなことが以前書かれてましたね
LIBPACKについてもβの頃から携わっていたようですし

個人投資家

五堂テクノには品質管理部門や検査部門がないのだろうか?
検査部の部長承認無しでリリース?
このプロジェクトのマネジメントレベルは、開発部門の自己検査でリリースして良いレベルに設定されているのか?

へろへろ

>五堂テクノには品質管理部門や検査部門がないのだろうか?
>検査部の部長承認無しでリリース?

リリースは水曜日だから、検査部門が確認するのはそれまででよいはず。
「明日にでも組み込んでおきますね」は、その検証用環境への組み込みだと解釈すれば問題ないですね。

Jairo

個人投資家さん

> 五堂テクノには品質管理部門や検査部門がないのだろうか?

えーと、それはMDISに品質保証部が存在するのにも関わらず、あのような問題を引き起こしたことに対するあてこすりかなにかでしょうか。

オレンジ

うーん。BP事件の意味合いがわかりづらいかな。

なにが問題なんでしょう?
「隠された醜聞」と言うからにはバカげた仕様を隠したのが問題ぽいけど
これって普通に社内で仕様ミス?を直前で気付いて潰したって話ですよね。


>・これだけのスキルのある人達がなぜDBコネクションの開放問題に気づかなかった?
これは私も気になりました。
回想でフラットだった西尾女史が現在は仲悪そうなのも関係するかな?


つーか、野崎さんは働き過ぎだと思います…。

今年は今回が最後の投稿となります。
次回は、来年、1/7 の予定です。
少し早いですが、みなさま、よいお年を。

(15)がないと思ったら年末休みだったのですね。
次回作期待してます。

よいお年を。

コメントを投稿する