魔女の刻 (23) 鬼のいぬ間に
補充要員12 人の投入は、さらなるスケジュールの遅延を招くことになった。教育担当を任命されたプログラマ4 名が、ほとんど自分のチケットを消化できなかったためだ。細川くんなどは夜遅くまでモニタに向かっていたが、決定的な時間不足は解消しようがない。他の3 名も同じような状況で、結局、今枝さんはいくつかのチケットを、別のプログラマにアサインし直さなければならなくなった。
補充要員のトレーニングは9 月8 日で終わり、翌週の月曜日から実戦投入されることになっていた。金曜日の夕方、18 時ジャストで退社していく補充要員たちを見送った細川くんは、危機感も露わに東海林さんに相談し、東海林さんは今枝さんのデスクに向かった。
「今週から来ている新人さんたちですが」東海林さんは訊いた。「本当に来週から我々と同じ仕事をやらせる気ですか」
「ああ?」今枝さんは苛立ちとともに答えた。「もちろん、そのつもりだけど。何かあるの?」
「話を聞く限り、あのままでは、実業務はまだ難しいんじゃないかと思いますが」
「難しいって、どういうレベルで」
「全体的にです。せめてあと一週間ぐらいは特訓しないと他の人の足を引っ張り続けるだけになるんじゃないでしょうか」
「一週間? 論外だね、そりゃあ」
「いや、でも......」
「東海林さんは教育担当じゃないよね。余計な口を挟まないでもらえるかな。こっちはこっちで考えてやってるんだからさ」
「細川の意見です」東海林さんは肩越しにちらりと細川くんを振り返った。「他の教育担当も同じ意見だと思います」
「そうかなあ。彼らに最後にアンケート取ってみたんだけどさ、みんな、よく理解できたとか、即戦力になれると思うと書いてるよ。これは、自信あるってことだよね」
私は呆れて細川くんの顔を見た。細川くんは困ったような顔で、小刻みに首を横に動かした。
「そりゃまさか、全然理解できなかった、とは書かないでしょう」
「もう、いいからさ」今枝さんはうるさそうに言うと、犬でも追い払うように手を振った。「仕事に戻ってよ。君の心配することじゃないから」
今枝さんの考えはよくわかった。18 日には白川さんが復帰してくる。それまでにスケジュールの遅れを、少しでも回復させておきたいのだろう。自分が主導して人員を補充したことで、遅延が回復傾向にあるとアピールしたいわけだ。
「ダメだな、あれは」戻って来た東海林さんは小声で罵った。「成功シナリオしか想像できないみたいだ。想像力のレベルがイソギンチャク程度しかないんだな」
「イソギンチャク?」
「皆無ってことだよ」
言い捨てると、東海林さんは席を立ってどこかに行ってしまった。
「本当のところどうなの」私は細川くんに訊いた。「やっぱり実戦投入は早い?」
「難しいですよ」細川くんは暗い顔で言った。「まだA フレの基本的なルールとか、実装手順ぐらいしかマスターしてませんから。Cassandra の概念もわかってるとは言い難いし。それに......」
「?」
「その、こういうことを言うのはアレなんですが」細川くんは躊躇いがちに言った。「そもそもスキルが高くない連中ばかりなんです」
「そんなに?」
細川くんはタブレットを引き寄せて、何度かタップして画面を開いた。
「これ、昨日、一人が書いたソースなんですけど、どう思います?」
「ああ」細川くんの言いたいことがわかった。「ちょっと今どきの書き方じゃないわねえ。変数の宣言方法とか、変数名の付け方はおいとくとしても」
「別にラムダ式を強制する気はないですけど、せめてジェネリクスのforEach ぐらい使いますよね」
私は頷いた。開発現場や個人の好みもあるが、少なくともこの開発センターでは、
と書くか、メソッド参照を使用して、
のように記述するのが普通だ。ラムダ式の使用経験がない人もいたが、互いに教え合うことで、今ではすっかり浸透している。
「一応訊くけど、教えたのよね」
「教えましたよ」細川くんはタブレットを放り出した。「ジェネリクスとラムダ式の両方。でも拒否されました」
「は? 拒否?」
「そんな書き方は気持ち悪いから、だそうです。どっちの書き方でも、動けばいいじゃないか、と。後でソース読む人のことなんか、何も考えてないんですよ」
それも無理はない。人によっては今月いっぱい、長くても来月末までしかいない現場だ。メンテナンス性まで考慮していられない、というのが本音なのだろう。
私がそう言うと、細川くんはうんざりしたように肩をすくめた。
「まあ、いいですよ。教育担当もお役御免ですから。来週からは本来の仕事に、プログラマに戻れます。わからないことがあっても今枝さんに訊きにいくでしょうしね」
少しは、ぼくたちの苦労を知ればいいんですよ、と言って、ようやく明るくなった細川くんの顔は、しかし、月曜日には再び曇ることになった。
9 月11 日の月曜日から、補充要員たちにチケットがアサインされ始めると、再び混乱が発生した。トレーニングレベルのコンテナでさえ、満足に実装できているとはいえない状態で、いきなり難易度の高いコンテナの実装を命じられば当然だ。12 人の補充要員は右往左往した挙げ句、今枝さんの元ではなく、元教育担当の4 人に殺到することになった。今枝さんは打ち合わせで席を外していることが多いし、席にいても補充要員たちの質問にはまともに答えられなかったためだ。補充要員たちの場合、仕様についての質問よりも、まだまだ実装レベルでの質問の割合が多かったのだ。
月曜日に補充要員たちにアサインされたチケットは、水曜日になっても完了していなかった。それだけではなく、細川くんたち4 人にアサインされたチケットも同様だった。スケジュール表のレッドラインは、さらにサイズを増やすことになった。
予想された状況だったので、私たちは誰も驚かなかったが、今枝さんだけは、なぜこうなるのか、と戸惑いと苛立ちを隠せずにいた。その矛先は、教育担当プログラマたちに向けられた。
「なあ、君たちさあ」会議室ではなく、自席に呼びつけた4 人の教育担当に向かって、今枝さんは尖った声を浴びせた。「一週間、何を教えてたんだよ。全然、なってないじゃないか、あいつら。真面目にやったのかよ」
教育担当の一人、蜂須賀テクノロジー株式会社の岡沢さんが、大声で罵りたい衝動をぐっとこらえるように両手を握りしめた。細川くんは唾を吐き捨てそうな顔だ。
「とにかく、こんなことじゃ困るんだよな。スケジュールは遅れてるんだからさ。しっかり責任持ってサポートしてやってくれよ。ぼくは忙しいんだからさ」
自分が言いたいことだけ言うと、今枝さんはさっさと席を立ち、打ち合わせに出てしまった。確かに今枝さんはこのところ、毎日のように打ち合わせで市役所に行っているから、忙しいと言ったのはウソではない。
陰気な顔で戻ってきた細川くんは、そのまま、岡沢さんと連れ立って早めのランチに出ていった。クールダウンの時間が必要だったのだろう。
「焦っているのはわかるが」東海林さんが言った。「もうちょっと空気を読んで欲しいもんだ」
少し前までは、「スケジュールが遅れているのはぼくのせいだ」などど自虐気味に言っていたのに、白川さんの復帰の日が近付くにつれて、私たちに責任転嫁し始めた。これでは、開発センター内の雰囲気は悪くなるばかりだろう。
「そうですね。まあ、空気を読めない点については、東海林さんも人後に落ちないと思いますけど」
「俺は間違いを人のせいにしたりしないぞ」
「そういうことではなくて」私は苦笑した。「黙ってやり過ごせばいいところを、正論を口にして、よくトラブルになってるじゃないですか。一度、クビになったのを忘れたんですか。私まで巻き添えにして」
「ふん。世の中には人の親切を悪く取る奴もいるってことだ。それはそうと、お前、最近のチケット発行、ちょっと変だと思ったことはないか?」
「え、チケットですか?」私は戸惑った。「変ってどういうことです?」
「機能分類コードが、S 以降のチケットが多いんだよ」
「機能分類コードですか」
私たちにアサインされるチケットには、コンテナID の他に、kngsss-T0-8001-J266 のような機能コードが付いている。システムID-機能分類コード-詳細分類コード-補助分類ID の形式になっていて、機能分類コードは1 桁目のアルファベットが機能の概要を表している。正直に言うと、あまり気にしたことはないが。
「S 以降は、他のシステムとのデータ連携機能だ。kngsss から<Q-FACE>へ何かのデータを送信するとか、逆に受け取るとかだ。最近、それがやたらに多いんだよ。ただ俺たちは打ち合わせに出ていないから、コンテナだけだと何をやっているのかわからないんだがな」
私は最近自分が実装を担当したチケットを検索してみた。直近はknglbs-U0-6588-B707、その前は、kngsss-V1-0101-Y008、その前が、knglbs-S7-9001-G8111 だ。
「確かに、S以降ばっかりですね」
「どんな内容だったか憶えてるか? 送る方か、受け取る方か」
「そういえば、KNGSSS か、KNGLBS から抽出されたデータを、JSON に変換して外部インターフェースに渡す機能ばかりだった気がします」
「やっぱりそうか」
「何が気になるんですか」
「いや、ちょっとな」
そう言葉を濁した東海林さんは、翌日の朝、私が細川くんと一緒に出社すると、フリースペースで何人かのプログラマと何かを話し合っていた。多摩アプリケーション開発の畠さん、蜂須賀テクノロジーの八木橋さんの他、キョウコさんもいる。どの顔も真剣で、朝の雑談を楽しんでいる雰囲気ではない。私たちに気付くと、手を挙げて挨拶したが、すぐに話し合いに戻った。
「何でしょうね」細川くんが訊いた。
「さあ」私も首を傾げた。「そう言えば、機能分類コードで変なことを......」
ドアが開き、タスクフォースの瀬端さんが急ぎ足で入ってきたので、私は口をつぐんだ。いつもは穏やかな雰囲気の瀬端さんが、今日は険しい顔だ。瀬端さんはフリースペースでの打ち合わせに参加すると、手元のタブレットを見ながら、しきりに質問を発しているようだ。
9:00 のチャイムと同時に、今枝さんが出社してきた。今枝さんは決して遅刻はしないが、白川さんのように誰よりも早く出社する、ということもない。耳にはめていたワイヤレスのカナル型イヤホンを外しながら自席に向かおうとしたが、フリースペースの集団に気付いて不審そうな顔になる。普段なら頷くだけで通り過ぎただろうが、瀬端さんがいたためだろう、近付いて挨拶した。
「おはようございます」今枝さんは集まっている面々を見回した。「何の打ち合わせですか」
「今枝さん」瀬端さんは挨拶を返そうともせず、硬い声で言った。「ちょっと座ってもらえますか」
今枝さんは頷くと隣のテーブルから椅子を引き寄せてきて座った。
「なんでしょうかね」
「ちょっと信じられない報告を受けたんですが」瀬端さんはタブレットを見せた。「このコンテナについて説明してもらえますか」
「ああ、これですか。先週、井ノ口課長から承った追加要望ですね。図書館の貸出記録を定期的に<Q-FACE>に送信する機能が欲しいということだったので」
「それが何を意味しているのかわからないんですか」
普段は温厚な瀬端さんが、怒りを露わにしている。だが今枝さんは、演技などではなく、本気で理由がわからないようだ。
「どういう意味でしょうか」
「図書館の貸出記録は個人情報です」
「貸出記録がですか」今枝さんは笑った。「住所とか氏名じゃないでしょう。送信するのは利用カードNo だけですが」
瀬端さんは大きくため息をついた。
「くぬぎ市の図書館利用カードはQLIC カードなんですよ。それは新システム稼働後も継続されます。Q-LIC なら、利用カードNoから簡単に個人を特定できるんです。それぐらいおわかりだと思っていましたが」
「で、でも」今枝さんは落ち着きなく視線を上下左右に動かした。「現行システムでもやっていることだと説明されましたが」
「それは前市長時代の話です。前市長は貸出記録は個人情報にあたらない、との見解を押し通して開館させましたが、その後、セキュリティ関連の識者や、ネットユーザから批判を受け続けました。もちろん、くぬぎ市民の間からもです。そのため、市役所内外の有志で結成された市図書館健全化グループが、現状を改善すべく、粘り強く市議会と市教育委員会と交渉を続けました。現在のくぬぎ市では、貸出記録は個人情報だと位置づけているんです。たとえ捜査機関からの照会であっても、裁判所からの令状なしの任意捜査では提供を断ることになっています。それを一民間企業に提供するとは何事ですか」
「そ、それはその、そんなこと誰からも説明されなかったので......」
「この件は、要件定義フェーズでくどいぐらい念を押しています。議事録にも要件定義ドキュメントにも明記されているはずです。今枝さん、それを読んでないんですか」
「いえ、あの、くぬぎ市の方から要望がありましたので......」
「それは理由になりません」瀬端さんは冷たい声で遮った。「タスクフォースはエースシステムさんを、市のICT 政策を共に進めていくパートナーとして選択したんです。市役所の人間から言われたことを、ホイホイ請け合うのではなく、システムに組み入れるべき機能の取捨選択を親身になって熟慮していただきたいからです。そのために、エースシステムさんには、一定の裁量を許可しているんですよ」
「ぼくは、いえ、私は、単なる白川の代理で......」
「今、私は、今枝さん個人にではなく、エースシステムさんに話しているんです。代理だから責任がないとでも?」
「いえ、いえ」滝のような汗を顔全体から流しながら、今枝さんは逃げ道を懸命に探した。「申しわけありませんでした。以後、気を付けるようにします」
「このコンテナのオーダーはキャンセルしてください。よろしいですね」
「は、もちろんです」
「では、この件はそういうことで」
今枝さんはホッと息をついた。緊張していた顔が弛緩しかけたが、それは瀬端さんが次の言葉を紡ぎ出すまでだった。
「次に、このコンテナですが」瀬端さんはタブレットをスワイプした。「図書館の貸出履歴から、レコメンデーションデータを生成するコンテナですね。そこからKNGSSS の生徒タブレットにQ-LIC の広告を表示するとありますが、これはジョークプログラムか何かですか?」
「あ、その、それは......」
「わかりますよ。市役所の人間から要望されたんですね。先ほどと同じことを繰り返すのはやめますが、KNGSSS とKNGLBS 間のデータ連携は、図書館の情報が生徒の学習を補助することを目的とするものであって、一企業の利益のためにあるのではありません。おわかりですね」
「はい、もちろんです」
「他にも何点かありますが」瀬端さんはタブレットを操作しながら言った。「お忙しいでしょうから、残りはメールしておきます。今後、このようなことはないと期待してもよろしいでしょうね」
「もちろんです」今枝さんは繰り返した。「気を付けます」
「お願いします」瀬端さんは立ち上がった。「ああ、それから、この件を発見して連絡してくれたのは、東海林さんたちです。エースシステムさんの信用の失墜を未然に防いでくれたと言ってもいいでしょうね。お礼を言われたらどうでしょうか?」
今枝さんは呆気に取られて瀬端さんの顔を見た。冗談でしょう、と笑い飛ばそうとしたようだが、瀬端さんの真面目な顔を見て表情を改めた。渋々、東海林さんたちに向かって頭を下げた。
「ありがとう」
「どういたしまして」東海林さんが答えた。「では、仕事に戻ります」
その言葉を機に東海林さんたちは席を立ち、瀬端さんは開発センターから出て行った。最後に腰を上げた今枝さんの顔からは血の気が失せていた。
席に戻ってきた東海林さんに、私と細川くんは椅子ごと近付いた。
「今のは何だったんですか」
「Q-LIC がまたちょっかい出してきたってことだろうな」東海林さんはうんざりしたように答えた。「白川さんが戻ってくる前に、自社に有利な機能を、こっそり突っ込んでおこうとしたんだ。白川さんがいたら、そんな機能追加は即座に却下しただろうからな」
確かに、今枝さんなら与し易し、と判断されても仕方がない。
「でも、昨日今日の話じゃないですよね」
「たぶん、今枝さんがオーダーテイカーとして市役所に日参するようになってから、目を付けてたんだろう」
「落としやすそうですからね」
細川くんが揶揄するように笑ったが、東海林さんの顔は真剣なままだった。
「これはもっと根が深い話だぞ。俺は調べてみたんだが、今回判明したコンテナは、どれも一見すると全体像がわからないぐらい細かく分割されていた。他の機能で使っているコンテナを流用しているものもある。しかも、どれも裏で動作するコンテナばかりで、今回、たまたま疑問に思って調べなかったら、最後まで発覚しなかったかもしれないものばかりだ。そんなコンテナ構成を今枝さんが設計できると思うか?」
「できないでしょうね」私は答えた。
「無理だ。サブリーダーやシステムエンジニアの誰かでも無理だ。やれるとしたら白川さんぐらい全体構成を知悉しているか、そうでなければ......」
「......むしろプログラマの誰か?」
東海林さんは頷いた。私は自分の言葉に冷たいものが走るのを感じた。
「まさか」細川くんが強張った笑いを浮かべた。「ぼくはやってませんよ」
「ああ、お前は違うと思ってるよ。スキル的に無理だろうからな」
「......信用してもらえて嬉しいですよ」
「私だって自信ないですよ」私は訊かれる前に言った。「そんなことができるのは誰でしょうね」
「まあ俺だな」東海林さんは親指で自分の胸を指した。「後は、そうだな、八木橋さんか馬渡さん、外川さん、草場さんあたりか」
最後の個人名を聞いたとき、心臓が大きく跳ね上がったが、私は何とか平静さを保っていたと思う。
「その中の誰かが」細川くんが訊いた。「今枝さんに協力したってことですか」
「今枝さんにというより、Q-LIC にだろうな」
「誰でしょう」
「わからん。この件はまだ口外するな」東海林さんは囁いた。「犯人探しなんかしたくないからな」
(続)
この物語はフィクションです。実在する団体名、個人とは一切関係ありません。また、特定の技術や製品の優位性などを主張するものではありません。本文中に登場する技術や製品は実在しないことがあります。
コメント
へなちょこ
憂鬱な月曜日の唯一の楽しみです。
陰謀の影がいよいよ見え始めて、ますます面白くなってきましたね。
草場氏が黒なのか白なのか気になります。
peacock
獅子身中の虫は誰だッ
面白くなってきたー
user-key.
「お忙しいでしょうから、残りはメールしておきます。」って。。。
私だったら「この様に、要件定義から外れた仕様は、他にありませんか?あなたが関わった部分をすべて見直して報告ください」って言って、出てきたものと自分で持っているものと突き合わせるけどなぁ。
(「ぜ、ぜっ、全部ですか?」って言ってきたら「あなたが関わっているもの全てです、自分で本来不要な仕事を増やしてるんでしょう」と言ってしまいそう)
匿名
ここで自分がお礼を言わなければならない立場だ、ってことが理解できてないんだな。
血の気が失せていたって言っても、そのアタマの中身は、
反省や現状認識よりも、逆恨みが詰まっていそうだ。
おのぼり
これってループの中に入らなくないですかね?
とーりすがり
例で出たソースが微妙なのはともかく、ラムダ式だとcontinue、breakが使えないから実装困りません?
SQL
自分のことを言われているようだ。。。
Javaの勉強しよう。
MUUR
草場さん、どうでしょうねえ。前話の
「会議室でタスクフォースの人と、打ち合わせだったんです。今枝さんの遅れ分のリカバリーで」
が実は違う打ち合わせだったりして、とか妄想が膨らんでしまいます。
匿名
今回今枝氏が責められたことって、
以前に白川さんが弾いたものを、高杉さんが通したのと矛盾しないの?
今枝氏が仕事もできないくせに、というか、
仕事ができないからこそたらしこまれたのを目の当たりにして、
高杉さんの中で基準が動いたのかもしれないが。
匿名
草場氏怪しいんだが前話でキスしたのも疑惑から目をそらすために見えてきた。国家スパイかよ。
匿名
> continue、breakが使えないから実装困りません?
continueやbreakみたいな手続き的なパラダイムがしっくりくる場面では素直にループ使うほうがいいと思います。
ラムダ式というか、foreachやmapなどの高階関数はループよりも抽象度が一段上の道具なので、常にループの替わりになるわけではないし、ループの代替品でもないです。
匿名
現場でjava1.6を使用している私、無事死亡
ラムダ式の勉強しなきゃ…
匿名
ん、ていうかよく見たらリストの要素0個じゃない?
匿名
ラムダ式でやる場合は、条件をループ内でかけず、最初にフィルタをかけてリストの要素を絞ってしまうのが常道ですね。