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

魔女の刻 (27) 10月はたそがれの国

»

 その年の10 月は密度の濃い日々が続く月となった。先立つ数ヶ月、開発センターを停滞気味な空気が支配していたから、なおさらそう感じたのかもしれない。
 白川さん不在の間、代理を務めた今枝さんは、開発センターのパフォーマンスを最大限に活用できないどころか、後退させていた。予定していた実装と単体テストは70 パーセント以上が手つかずか未着手のままだし、12 人の補充要員の投入は事態を打開するどころか、混乱に拍車をかけただけだった。この状態がもう少し長く続いていたら、KNGSSS とKNGLBS は、3 月末のカットオーバーを大幅に延期せざるを得なくなったに違いない。
 9 月19 日から本格的に仕事に復帰した白川さんは、30 分ほどかけて状況を把握した後、全プログラマをフリースペースに集合させた。
 「今、作業中のものも含めて、全てのアサインを一度、取り消します」白川さんは笑顔でとんでもないことを告げた。「今日はみなさん、退社してください。弊社都合なので、19:00 までの勤務記録を全員につけておきます。明日、9:10 に今後の方針の説明をしますので、ここに集合してください。では、おつかれさまでした」
 私たちが茫然と立ち尽くしている間に、白川さんはさっさとコマンドルームに入り、扉を閉ざしてしまった。エース社員たちも事前に知らされてはいなかったらしく、私たちに劣らずうろたえている。
 「あ、あー」気を取り直した今枝さんが咳払いした。「そういうことだから、今日は帰っていいよ、みんな」
 何人かが手を挙げて質問しようとしたが、サブリーダーたちはそれを避けるように、自分の席に逃げ帰ってしまった。私たちは仕方なく帰り支度を始めた。
 「会社戻りますか?」細川くんが訊いた。
 「戻ってもやることないしなあ」東海林さんが当惑したように言った。「ま、有休でも取ったと考えて、今日はのんびりさせてもらうか」
 「チケットキャンセルしてどうするんでしょうね」私は言った。「一から仕切り直しってことですか」
 「俺に訊くなよ」東海林さんは苦笑した。「普通に考えれば、ここまで遅延してしまったら、リスケしたところで焼け石に水だろうが、白川さんは普通の人とは言えんからなあ。それでも1 日でどうにかなるもんかな」
 さすがのエースの白い魔女でも、この状況をリカバリーするには、かなり時間がかかるのではないか、と誰もが考えていたが、その予想は覆されることになった。
 次の日に出社した私は、2 つの変化に気付いた。一つ目は、開発センター内がやけに閑散としていることだ。その理由を考えていると、一緒に出社した細川くんが不思議そうな声を出した。
 「あれ、あいつらいませんね」
 あいつら、というのは、先月から投入された補充要員のことだ。言われてみれば、姿が一人も見えない。
 「いないね」私はPC にログインしながら言った。「勤務時間が変わったとか」
 「そんな話は聞いてませんよ」
 「まあそうよね。あれ?」
 グループウェアを開いた私は首を傾げた。新しいチケットがアサインされている。問題はその数だ。これまでアサインされるチケットは1 枚だけだったが、今日は6 枚もアサインされている。
 「複数枚アサインできたのね」私は東海林さんを見た。「東海林さんは?」
 「9 枚だ」東海林さんは唸った。「細川は?」
 「ぼくは4 枚です。並行してやれってことですかね。でも、枚数の違いはどこからくるんでしょう」
 「さあな。日頃の行い度数とか、いい人係数とかじゃないのか。それとも、お前は新婚だから、少なめにしてもらってるとかな」
 その理由はすぐに明らかになった。フリースペースに集まった私たちに、白川さんは告げた。
 「今日からチケットの扱いを変更します。すでに気付いていると思いますが、各自に複数枚のチケットをアサインしてあります。どれから実装してもらっても構いませんが、途中で放置して別のチケットの実装を行うことはできないようになっています。もう一つ、これまでチケットのトレードは認めていませんでしたが、今日から解禁します。各自で判断し、必要であればトレードできるようになっています。ただし、譲渡ではなくトレードです。遅れている分を誰かに丸投げすることはできません。遅れている分は、こちらで調整します。何か質問はありますか?」
 「はい」東海林さんが挙手した。「人によってアサインされている枚数が異なるのはなぜですか?」
 「ああ、出ると思ってました」白川さんは微笑んだ。「東海林さんには多めにアサインしてあります。これは東海林さんの人格や性格を考慮したわけではなく、単純にスキルの問題です」
 そこかしこでクスクス笑いが起こった。続いて手を挙げたのは草場さんだった。
 「アサインされたチケットを見てみました。これまでに比べて、少し複雑になっているようですが」
 「その通りです」白川さんは頷いた。「これまでは1 コンテナ=1 パーツ、というチケットがほとんどでしたが、今後は複数パーツの組み合わせが増えてきます。これは単体テストに回しやすくするためです。その分、難易度も上がっていますね」
 蜂須賀テクノロジーの岡沢さんが手を挙げた。
 「指定されている期限で完了できなかった場合はどうなるんですか」
 白川さんは氷のような笑みで岡沢さんを見返した。
 「そのような事態は発生しないことを希望します」
 言い換えると、全て期限厳守だということだ。
 「どうしてもできない場合もあると思いますが......」
 「2 階と3 階を使って何とかしてください。またトレードを解禁したのは、期限に間に合わないという状況を避けるためでもあります」
 「すいません、いいですか」東海林さんが反論するように言った。「スケジュールが遅延しているのは、エースシステムさんに責任があるんだと思いますが。そのツケをどうして我々が払わなければならないんでしょう」
 「確かに」白川さんは静かな声で言った。「この状態になったのは、弊社のマネジメントのミスによるものです。それを隠すつもりはありません。ですが、何事もなくオンスケで進んでいたとしても、おそらく今年の年末ぐらいには、あなたたちの負荷は急激に増大することになったはずです。このことは最初に説明していますね。それが少し早まっただけのことですよ」
 東海林さんは渋々頷いた。確かに白川さんは、最初の説明会のとき、最後の数ヶ月は日々の労働時間が、12から14時間ぐらいになるだろうと予言していた。
 「とは言っても」白川さんは破顔した。「エースシステムが何のペナルティもなし、というのは確かに不公平です。なので、昨日、各社の元請けに、来月からの時間単価に一律、5% の上乗せをプラスすると連絡しました。元々のベースアップ分とは別計算です。どの会社も、二つ返事で了承してくれました。なに、ご心配なく。上乗せ分は今枝の給与からさっ引くことになっていますから」
 何人かが笑い声を上げたが、苦虫をかみつぶしたような今枝さんの表情を見ると、すぐに途絶え、居心地の悪い沈黙に変わった。下請けへの支払を、社員の給与からのマイナス分で充当することなどできるはずがないから、白川さんのブラックユーモアだとわかってはいるが、ひょっとするとエースシステムには独自のペナルティシステムでもあるのかもしれない。
 「次に補充要員として来ていた12 名には、お引き取りいただきました。理由はおわかりだと思いますが、みなさんには、新人のお守りなどしている時間は、もうなくなるだろうからです」
 細川くんや岡沢さんはホッとした顔をしたが、私はもう少し先のことを考えて、それほど明るい気分にはなれなかった。そこまで余裕がなくなっているということは、今後、負荷が増えることはあっても、減ることはないだろうからだ。白川さんの次の言葉も、それを裏付けていた。
 「最後に、これまで土日祝日は基本的に出勤不可としてきましたが、こちらも今後は解禁とします。岡沢さんが表明したような不安を感じている人は、休日も使用してください。なお土日祝日の入館ルールは、平日の21 時以降と同じです。エレベータで階数ボタンを押す際にもID カードのタッチが必要となります。それから、APB も相変わらず有効なので気を付けてください。入れないのはともかく、出られなくならないように」
 うっかりID カードをタッチするのを忘れて入室し、帰りに出られなくなるというミスは、これまで何度も発生しているが、誰か近くにいる人に声をかければ出してもらえた。気を付けなければならないのは、深夜に一人で残っている場合だけだったが、今後、休日で人数が少なくなる場合は、昼間であっても出られなくなるケースが考えられるということだ。
 「開発も折り返し地点ですね。ありふれた表現で恐縮ですが、みなさん、馬車馬のように働いて、このプロジェクトを完成させましょう。というか、プロジェクトを完成させるためには、馬車馬的作業が必要になるはずです。では、お仕事にかかってください」

 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

 エースシステム社員が誰も口にしなかったこともあり、新美さんの一件が尾を引くことはなかった。プログラマたちが何か迷惑を被ったわけではないからだ。だが、草場さんのことはしばらくの間、プログラマたちの中にわだかまりを残した。白川さんは、草場さんが潜入捜査をしていたように印象操作し、草場さんもそれを否定しなかったからだ。多くのプログラマは、必要がない限り草場さんと話をしようとしなくなった。草場さんは表面上、何の影響もないかのように仕事をしていたが、内心では様々な葛藤もあったはずだ。何とかしてあげたいとは思ったが、草場さんの信頼を取り戻すには、鳩貝さんについての真実を公表するしかない。鳩貝さんが秘かに携わっている業務の性質上、それは不可能だった。
 私はこれまで全く注目していなかった鳩貝さんを、秘かに観察するようになった。実に平凡な顔立ちで、イケメンと醜男のちょうど中間にいるようだ。よく見ると、それなりに整った輪郭なのだが、少しの間、目を離していると、途端にどんな顔だったのか思い出せなくなる。ここまで特徴がないと、それが逆に特徴になりそうなものだが、いかなる意味でも人目を惹く、ということがない人だった。いかにもアサインされたチケットをこなしているかのように一日中キーを叩いているが、実は一つのコンテナも実装していないことなど感じさせない。草場さんとはたまに小声で言葉を交わしているが、それすらもカモフラージュではないかと思わせる。私が正体を知ったことは、草場さんを通して伝わっているはずだし、私の視線に気付いていないはずがないが、ちらりとこちらを見ることさえしない。もはや、それが演技なのか、素なのかさえわからない。
 何日か迷った末、私は東海林さんにだけ、鳩貝さんの正体を伝えておいた。東海林さんは、鳩貝という名前を聞いてしばらく考えた後、「ああ、TSD の」と、私と同じような反応を見せたものだ。
 「そういうことか」東海林さんは何度も頷いた。「どうも草場さんの性格的に内偵みたいな仕事をするのが想像できなかったんだが」
 「だから、草場さんを、その......」
 「わかってる」東海林さんの大きな手が、私の肩を軽く叩いた。「まあ、草場さんも少しの間、白い目で見られるかもしれないが、すぐにみんなそんなこと忘れるから心配するな」
 「どうしてですか」
 「草場さんが優秀なプログラマであることには変わりがないからな。高校生の部活や大学のサークルならともかく、社会人なら最初に評価するのは仕事人として信頼できるかどうかだろ。プログラマならなおさらだ」
 「まあ、確かに......」
 「それに、白川さんが言った通り、そんなことを気にしていられないぐらい忙しくなるだろうしな。いや、もうなりつつあるか」
 白川さんが明言した通り、私たちの作業量は急激に増大し、帰宅時間は大幅に遅くなっていた。10 月に入ってからは、終電がなくなる時間まで仕事をするのが当たり前のようになり、2 階の宿泊設備は毎日フル稼働している。ただ、今枝さんのマネジメントによって生じた昼間のムダな空き時間を、夜に取り返す、という苛立ちが蓄積していく日々に比べれば、遙かに充実した毎日だった。
 私に限っていえば、プライベートも充実していた。ランチを草場さんと一緒に取ることが多くなり、深夜まで実装を続けるような日には夕食も同じだった。帰りも東海林さんや細川くんではなく、草場さんの車で送ってもらうことが増え、車中では仕事の疲れも忘れて、尽きることなく話を続けた。私はいろんな話をした。残念な結末に終わった結婚のこと、息子のこと、母親のこと、死別した父親のこと、最近観た映画のこと、好きな料理、嫌いな食べ物、好きなお店、二度と行きたくないお店、読んでいる本、途中で放り出した本。草場さんのこともいろいろ知ることができた。私と同じくバツイチであること、子どもはいないこと、TSD では開発部門のトップであること、新しいものが好きなこと、サッカーが好きなこと、牛肉より豚肉が好きなこと、奥歯がずっと痛いが歯科に通う時間がないこと、ネコを飼いたいと思っているが仕事がら実現しないこと、出身が静岡県であること。私は草場さんの好きなことを好きになり、草場さんは私の好きなものを好きになってくれた。義務が伴わないセックスの楽しさと素晴らしさを思い出し、自分の身体の思ってもいなかった箇所にホクロがあることを知った。指を絡めるだけ、唇を触れ合わせるだけでも、脳内にドーパミンやセロトニンが沸き起こるのを感じた。
 私たちはプライベートで醸造した親密さを、職場には持ち込まないことにしていたが、本人たちがうまくやっているつもりでも、この手の秘密が周囲にバレるのは経験済みだ。私と草場さんの関係は、プログラマたちの間ではすでに周知の事実だったが、さらに一歩段階を進めたことも、間もなく知れ渡ってしまった。草場さんに対する疎外的な空気はまだ残っていたため、私はしばらくの間、女子だけのランチに参加することができなかったが、それは些細な代償だと思われた。
 後から考えると、私が仕事以外の関心のほとんどを草場さんに向けていなければ、10 月の時点で白川さんに生じていた些細な変化に気付いていたのかもしれない。

 ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇

 10 月から11 月にかけて、白川さんはコマンドルームに閉じこもり、Vilocony の設定にかかりきりになっていた。私たちが日々量産しているコンテナは、Vilocony のコンテナドライバとコンテナコーディネータによってメッセージを介在され、システムの一部として機能することになる。これは適当に組み合わせただけでは、まともに動作しない。システム構造全体はもちろん、Cassandra の構成、仮想コンテナヤードの設定、さらにはクラウドサービスで提供されるOS まで熟知していないと、ログイン画面すら表示されないことになる。今のところ、それができるのは白川さんだけだった。
 白川さんはランチに出ることすら止めてしまい、一日分の飲食物をコマンドルームに持ち込んで、私たちの前にほとんど姿を見せなかった。朝は誰よりも早く出勤し、いつ帰っているのか、そもそも睡眠を取っているのかさえ、はっきりしなかった。チャットで質問すれば、ほとんど即座に答えが返ってくるので、仕事をしていることは間違いなかったが、私は少し心配だった。9 月18 日に見せた憔悴ぶりは新美さんを油断させるためのフェイクだったとしても、それまで入院していた事実は変わらないのだ。
 11 月中旬のある日、久しぶりにコマンドルームから姿を現した白川さんは、東海林さんの席にやってきた。目の下にひどい隈ができているが、疲れている素振りは見せていない。
 「何か相談があるとのことですが」白川さんは東海林さんに訊いた。「KIDS ライブラリのことで」
 「いくつか修正を加えたいと思いまして」東海林さんは答えた。「開発効率を上げるためにも」
 kdsCassUtilLibs ――通称、KIDS ライブラリを使う機会がこのところ増えてきている。それまではパーツ単位のコンテナだったため、直接KIDS ライブラリを使うことはあまりなかったが、コンテナの内容が複数パーツになると、Cassandra と直接やり取りする必要があるからだ。
 KIDS ライブラリが、よく考えられて使いやすく作られている、という白川さんの言葉にウソはなかった。KVS は膨大なキーと値のペアが存在しているだけのデータベースなので、1 つの値を瞬時に取り出すのは得意だが、複数の値をソートして取り出す、という処理は苦手だ。もちろんRDBMS のSQL でいうところのorder by は存在するのだが、複合キーにしておく必要があり、なおかつその中の1つのキーしか指定できない、などの制約があり、使い勝手がいいとはいえない。最初にCassandra の採用を決定した人間は、そのあたりの検証を怠っていたようだ。上の人間が決定を行い成果を得るが、面倒な尻ぬぐいは全て部下や外注、というケースは、どの業界にかかわらずよくある話だ。
 この問題を押しつけられたKID のエンジニアは、おそらくかなり苦悩したのだろうが、技術的なテクニックでこの問題を解決することを選択していた。たとえば、order by については、あらかじめソートしたキーの一覧を作成しておく、というシンプルな方法である。
 たとえば、次のようなテーブルhoge がある。

kids.png

 このテーブルに、id = a03 の行を追加したいとする。後に表示する際には、id 順にソートした情報が必要となるため、a01 → a03 → a10 → a12 とソートされたデータを、hoge_orderById という名のテーブルとして作成しておくわけだ。
 ただ、言うのは簡単だが、行が追加されるたびに、hoge_orderById テーブルを更新しなければならないのは面倒だし、別のキーや複数キーでのソートが必要になった場合、新たにテーブルを作成する必要がある。ソートのルールも日本語が入ってくると、大文字小文字、全角半角なども考慮しなければならない。
 そこで、KIDS ルールでは、全てのI/O をkdsCassUtilLibs パッケージを通して行うことにしていた。kdsCassUtilLibs を経由すると、使用する側は単にinsert 処理を実行するだけで済む。
 以前、東海林さんは数日かけてkdsCassUtilLibs の全ソースを調査し、よく作られていることを認めていた。
 「会ってみたかったな、これを作った人に」東海林さんは珍しく手放しで誉めた。「相当、手間だっただろうに。きっと上からCassandra を押しつけられて、それでもどうやったら効率よく開発を進められるかを必死に考えて、このライブラリを組み上げたんだろう」
 私も少し使ってみて、kdsCassUtilLibs の存在に感謝していた。これがなければ、面倒なトランザクション制御やソート用テーブルの更新処理で、数倍の工数が発生していたかもしれない。
 「ただ、一部の実装がまだ途中だったみたいだな」東海林さんはソースの一部を示した。「今後の改良点がコメントで入れてある。たとえば、今だと、引数にソートキーを指定してやる必要があるんだが、テーブル情報から自動的に取得する機能の追加仕様とかな。開発の効率を上げるためにも、このあたりはメソッドを追加しておいた方がいいかもしれん。白川さんに相談してみるか」
 東海林さんがそう話していたのは6 月だった。その後、白川さんが入院してしまったため話す機会がなく、東海林さんも忘れていたようだが、KIDS ライブラリの使用頻度が上がってきたため、思い出したのだろう。
 東海林さんの説明を、白川さんは頷きながら聞いていたが、話が終わると乾いた声であっさり告げた。
 「却下します」
 「え?」
 「KIDS ライブラリを修正する必要はありません。そのまま手を入れずに進めてください」
 「えーと、あのですね」メリットをしっかり伝えられなかったのかと、東海林さんはもう一度、説明しようとした。「いくつかメソッドを追加することで、開発の効率が大幅にアップすると思われるんですが」
 「その話はわかっています。おそらく効率アップするんでしょう」
 「それなら......」
 「ただし、その改修が、既存のシステムに影響を与えないという保証はないのではないですか?」
 「既存のシステム......?」
 「そうです。行政オンラインシステムは、今回のリニューアルプロジェクトの範囲ではないので、当面、現在のシステムが稼働し続けることになります。当然、そのライブラリが使われています。そこに影響しないと言い切れますか? KIDS ライブラリは全システム共通の領域に配置されるんですよ」
 「現在のメソッドはそのまま手をつけず、新しくメソッドを追加するだけなので、影響はないと思いますが」
 「思います、では困ります」白川さんは顔をそむけた。「人間がやることです。どこかでミスをしたり、見落としたりすることは、いつだってあり得ます。100% の保証がない限り、許可できません」
 そんなことを言ったら、そもそもソフトウェア開発などできないじゃないか。そう思ったものの、口に出すのは控えた。白川さんが聞きたいのは、そんな言葉でないことはわかっていたからだ。
 「以前にも言いましたが、もう一度言わせてもらいます」白川さんは切れ長の瞳を真っ直ぐ東海林さんに向けた。「この案件は、何が何でも成功させる必要があるんです。来年の3 月には、KNGSSS 完成の式典を行う予定で、その日程まで固まりつつあります。そこに間に合わなかった、というような事態になったら、うちの責任になるんです」
 そのために高い金をくぬぎ市からもらってるのでは、とでも言いたい衝動に駆られたが、それ以上に私は白川さんの態度に困惑していた。こんな責任論を口にする人ではなかったような気がする。
 「言っておきますが」白川さんは唇に妖しい笑みを浮かべた。「私は責任を回避するつもりはありません。降格でも左遷でも、いさぎよく会社の指示に従うぐらいの覚悟はあります。ただし、そうなったときは、必ず参加している全てのベンダーを道連れにしますからね」
 これが他の誰かのセリフであれば一笑に付すところだが、私は笑えなかった。冗談を言っているような表情ではなかったからだ。この人なら、やりかねない。
 「わかりました」東海林さんは引き下がった。「お時間を取らせました」
 白川さんは頷くと、コマンドルームに戻っていった。私は東海林さんの顔を見たが、私が感じているのと同種の困惑が浮かんでいた。

(続)

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

Comment(26)

コメント

al

> 東海林さんには大目にアサイン
多め or 多目?

al

> 草場さんに対する疎外的んな空気
「ん」は不要かと。

匿名

KIDS ライブラリは亡くなったという方の忘れ形見的なものなのだろうか

のり&はる

「そこかしこでクスクス笑いが起こった。」東海林さんの人気に嫉妬。

aoi

朝チュンもなしとな

匿名

終電まで働いた後なのに、元気だなぁ

SQL

白川さん、きっとライブラリに手を入れてほしくないんだろうなぁ

匿名

最ゴに向けて白川さんが破滅していく…

IE8

川嶋とカスミ、どうして差がついたのか…慢心、環境の違い

RB

来週は3月26日。
第一回の後へ進むのか、その前にもうひとゴタつきがあるのか。

匿名

わかる...レベルと士気の高いチームだと、激務でもなんだか楽しいんだよなー。
でも一番上の人の苦労は、やっぱり並大抵ではないのだなーとも。
優秀な人ほど早く壊れてしまう、この業界に限ったことでもないけど、しみじみ。

匿名

>その前にもうひとゴタつきがあるのか。


作中の年末にもトラブったらしいですからね。
連載冒頭が4月でしたっけ。
連載開始時点で作品はできているそうですから、計算どおりなんでしょうけど、
やっぱり見事なものです。

dd

> 私は責任を回避するつもりはありません。降格でも左遷でも、いさぎよく会社の指示に従うぐらいの覚悟はあります。ただし、そうなったときは、必ず参加している全てのベンダーを道連れにしますからね

溢れ出んばかりの「秩序にして中立」っぷり。

匿名

連載開始時点では思わなかったけど年度末になると気づいた。
確かに年始ってそういうしょうもない官公庁行事多いね。

匿名

>なので、昨日、各社の元請けに、来月からの時間単価に一律、5% の上乗せをプラスすると連絡しました。
>元々のベースアップ分とは別計算です。どの会社も、二つ返事で了承してくれました。


白川さんの目には、ベンダーのスタッフがバナナか何かに見えてるんじゃあ……。

にんにん

どこにホクロがあったのかなぁ(・∀・)
ブラウンアイズがスマホを隠していた場所と合わせて妄想が捗ります。

匿名

最初は嫌われ役だった今枝氏が、今はなんか普通の人に思えてきた・・・

匿名

今枝可哀相になってきた

リーベルG

alさん、ご指摘ありがとうございました。

RB

連載冒頭は3月25日23:00ですよ。
で、3月26日8:00がデッドライン。
つまり、次回のアップ時間がデッドライン。

匿名

なんと…そんなトリックがあったのか…
(言ってしまったら半減するのでは…)

匿名

第一話を見直したら鳩貝さんもいた。
彼がキーマンだな。

匿名

元請けに臨時ベースアップしても、それが技術者本人に100%行き渡るとは…
それとも、全額行くように何か圧力かけたのかしら?

ホゲ男

おおすごい、来週はこれで冒頭の3/25(日) 深夜からの騒ぎに現実が追いついてつながるのか。

RB

とても気になる機能があります。
そのために鳩貝さんがいる。
あの中では鳩貝さんしかできないことが。

goji

帰りに出られなる

コメントを投稿する