megamouthの葬列

長い旅路の終わり

ディス オールド マン

1

夜の街に降るはずだった雨は、この寒さで雪になってしまったようだった。
人材エージェント会社の営業を待っていた関口は、折りたたみ傘をさしていたが、風に巻き上げられた粉雪のいくつかは、彼の野暮ったいコートに吹き込んでしまう。
地下鉄の入り口から息せき切って営業の男がやってきた。時間ギリギリだ。

「急ぎましょう」
遅くなったのは自分のせいなのだが、彼は高そうな時計を一瞥すると早足に歩きだした。

「お電話でも言いましたが、どうも、難しいお客さんのようですから。関口さんも気をつけてください」
クライアントのオフィスに向かう道すがら、息を弾ませながら営業は言った。

どう気をつけろと言うんだ。関口は心の中で溜息をついた。
年度末の繁忙期に入ろうとしている中、大抵のエンジニアはすでに現場にアサインされていて、あぶれているのは自分のような40代以上のエンジニアなどの「訳あり」物件だけだ。

関口としては、今までの経歴を正直に話す以外にやりようがなかった。
汎用機を10年。業務アプリのVBVB.NETを8年、今回のサーバーサイドのJavaについては直近の2,3年ほどしか経験がない。

クライアントの会社に約束の時間ちょうどに着く。二人とも早足で歩いてきたので、コートを脱いだスーツの下はうっすら汗をかいているほどだった。

応接室に通される。営業は手慣れた様子で入り口に近い席に陣取ると、鞄からクリアフォルダに入った関口の職務経歴書を三部取り出して、一部をまだ来ていない顧客の席に滑り込ませる。

派遣であれ、請負であれ、現場に入れる人材を事前に面接することは本来法律で禁止されている。しかし、「面談」という形でこうしてクライアントの担当者が事前に経歴などをチェックするのは業界の「常識」であった。

5分ほど待たされて、応接室の扉が開いた。反射的に立ち上がった関口と営業が慇懃に頭を下げる。顔を上げると、襟付きのチェックシャツに暖かそうなセーターを羽織った男が立っていた。
太り気味で愛想はないが、どこかユーモラスな印象を与える外見で、関口は昔どこかでこんな顔を見たような気がした。

「PMの高山です」
と、その男はぶっきらぼうに言った。
高山は関口を一瞥することもなく、すぐに席につくと、クリアフォルダを手に取った。

「この度はお声がけいただき…」
営業が自分のペースを作ろうと、立ったまま挨拶をする。高山は職務経歴書から目を離さずに、手をこちらに向けた。「座って良い」ということらしい。
年は20代後半ほどだろうか。エンジニアとしては脂が乗り始めた頃だ。仕草に自信が満ち溢れていて、それがいちいち傲慢な印象を相手に与えてしまっているのだが、彼自身はそれに気づいていないようだ。まあ自分には関係のないことだ、と関口は思った。

「で、結局サーバーサイドのJavaの経験はこれだけですか?」
と、高山は顔を上げた。

「そうですね」
営業が少し困ったような笑顔をこしらえて言う。

「当然JUnitの経験はあるんですよね?」
問われた営業が、困り顔のまま関口のほうを向く、用語の意味がわからないのだ。
関口はようやく口を開くことができた。
「前の現場では一部で使っていましたね」

「ふーん。でも2年ほどなんですね。今回フロントエンドもあるんですが、JSやCSSの経験は?」
jQueryなら少し実装する機会がありました」
実際には、ほとんど他の若手のプログラマがやっていたのだが、彼が突然現場に来なくなってしまったので、見よう見まねで書いたことがあるだけだった。

「幸いこのプロジェクトも今だにjQueryなんですよ。全体的にレベルが低くて」
高山は笑うでもなく、試すような目で関口を見た。何が「今だに」なのか、どうレベルが低いのか関口にはわからなかったが、曖昧に笑っておく。

「もっと経験のある人はいないんでしょうね?」
反応が気に食わなかったのか、高山が営業に向かって言った。
「ええ、繁忙期ですので、これ以上の人材となると…かなり難しくなります」
困った顔で答える。

「まあPHPしか書いたことのない人を連れてこられても困りますしね」
冗談のつもりなのだろうか、軽い感じで高山は言った。誰も笑わなかった。しばらく沈黙が続いた。

「…いいですよ。とにかく人が足りないので。」
「そうですか!ありがとうございます」
大げさに営業が頭を下げる。
話は決まったようだ。こうなると後は、営業と高山の条件交渉だ。
関口は適当に礼を言うと、先に応接室を出た。

廊下にあるパテーションの向こうは開発現場だ。時計を見ると8時に近いが、それほど静かという感じもしなかった。まだ誰も帰っていないのかもしれない。

関口は営業との合流場所である近くの喫茶店に向かうべく、エレベーターに乗り込んだ。

2

最初の出社日、スーツでやってきた関口だが、現場では皆私服であった。
高山がやってきて、面倒そうに席に案内する。

「アカウントやメールの設定はそこの紙に書いてあります。開発環境はeclipseがインストール済みです。えっとInteliJとかじゃなくて良いですよね?」
「はい。大丈夫です」
実際はeclipse以外は触ったことがない。関口は鞄を置いて、19インチのディスプレイがつながったPCの電源を入れる。高山はそれを見届けると足早に自分のデスクに帰っていった。

起動を待っている間、周りを見回してみる。20代から40代まで幅広い年齢層のスタッフが無表情で画面に向かっていた。彼らの間に会話はなく、遠くで社員同士が雑談している声が聞こえるぐらいだ。

どうも自分の席のまわりも派遣や、請負の類なのだろう。現場にもよるが、彼らはたとえ同じ会社に所属していても業務時間中に仕事と関係のない会話をすることはあまりなかった。

PCにログインし、メールの設定をしていると、突然、隣に座っていた20代ほどの男が椅子をくるりとこちらに向けて頭を下げた。
「あの…よろしくお願いします。真田です。」
「関口です。社員の方ですか?」
念のため聞いておく。
「いえ、僕も派遣です。関口さんにプロジェクトを説明することになっているので、少しいいですか?」

真田はそれから、覚束ない操作で、時々確認しながら関口のPCのeclipseを操作して、プロジェクトのレポジトリをチェックアウトしてソースコードを展開した。
真田によると、開発は難航しているらしい。

「後でミーティングがありますから、具体的な作業はそこで」
「仕様書はないんですか?」
関口は言った。

最初の仕様書は共有サーバーにあります。ただ、Wikiがあって、最新の仕様はそこに書かれています」
真田はブラウザを操作して、プロジェクト管理に使っている社内のredmineサイトを開いた。
プロジェクトのWikiに高山が書いたらしい仕様のメモ書きやクラス図があり、他には、使用フレームワークやライブラリ、コーディング規約などが書いてあった。
まずはこれを読むことから始めないといけないようだ、と関口はサイトをブックマークした。

関口がeclipseの設定や、Wikiを読み込んでいると、まわりの人間がめいめい立ち上がり始めた。
「11時です。定例会議になります。」
キャンパスノートを手にした真田が小声で囁いた。

3

「このテストケースでカバレッジ100%いってるんですよね?」

高山は苛立ちを隠さない口調でその40代のプログラマーを詰問していた。

「まだ、100%ではないです…」
「っていうかさ、このテストケース、何を見て書いたの?仕様見たら、こんなテスト書かないよね普通」
「仕様に従ってるつもりです」
「じゃあさ、null渡したらどうなんの?今やってみる?」

高山はノートパソコンを操作して、テストケースを追加した。その様子は会議室の大きなTVにミラー表示されている。
テストはあっさりと例外を吐いて止まった。

「ね?仕様見てたらこういうテストが必要だってわからない?」
「すいません」

見るにたえない光景だった。自分とそう年の変わらないプログラマが、一回り年下の高山に罵倒されている。それも皆の前で。
関口は、まだソースコードも仕様もそれほど把握していないので、高山の糾弾が正当なものかは判断できなかった。
しかし、どれほどひどいコードを書こうとも、このような公開処刑めいた仕打ちを受けるほどのこととは思えなかった。

「何回目だと思ってんの?いい加減覚えてくださいよ!」
最後に高山が吐き捨てるように言った。
他のスタッフは、下を向いて何も言わない。糾弾されたプログラマも含めて彼らには一切表情というものがなかった。ただひたすら、嵐が過ぎ去るのを待っている。

「それで、関口さん。あなたの作業ですけど」
関口は、自分が呼ばれていることにしばらく気がつかなかった。
「会議の直前にredmineチケットにいれておきました。実装期間はひとまず、3日にしといたけど、ご覧の通りスケジュールが遅れ気味で、もうちょっと早く仕上げてくれると助かります」
「今日から開始ですか?」
「当たり前じゃないすか」
まだ、仕様もwikiも読んでいないのに、実装するのか。関口は戸惑った。
「それから、単体テストでのコードカバレッジも報告してくださいね。何故か100%じゃないのに完了ステータスにする人がいて困ってるんで」

4

会議が終わった。スタッフが無言で席に戻る。
redmineを確認すると自分の担当として3つほどのモジュールの実装が書いてあった。
今日一日で仕様を把握して、単体テストを書くのに1日かかるかどうか、実装の時間は1日少しというところか。
最初の作業としてはハードにも程がある設定だと思った。

「関口さん飯行きませんか?」
頭を抱えていると、真田に声をかけられた。後ろで派遣のスタッフたちが立ち上がって、伸びをしている。
会議での険悪な雰囲気は露ほどもなかった。どうやら皆、慣れているらしい。

「みんなで行くのかい?」
「ええ。もし苦手だったらいいですけど」
「いや、行くよ」

昼食は近くのショッピングモールのフードコートだった。カウンター席にプログラマ達がざっと横並びに座る。

「びっくりしたでしょ?会議」
30代の話した事のないプログラマが関口に声をかける。彼は弁当を持参してきている。
「ええ。厳しい人みたいですね」
「厳しいんじゃなくて、細かいんですよ」
「あれだけ言うんなら、自分で書けよって言いたくなるよな」
と違うプログラマが言った。

「ああいうのってどこで覚えるのかね?テストファーストとか、カバレッジがどうとかさ」
「ネットだろ」
「今の子はそうだねえ」
と糾弾されていた40代のプログラマがうどんをすすりながら言った。高山の罵倒が堪えた様子はないので、関口は内心安堵した。

「僕らの頃はさ、ほら、NECメインフレームだから。みんな先輩から教わったもんだけどね」
静かに40代は言った。

「まあどちらにせよ、俺らの契約更新はないだろうから気楽なもんだよ」
「どんどん切ってるからさ、うちの営業が出せるのはもう俺で最後だってさ。そのうち誰もいなくなるんじゃないの?」
「切っても、この時期じゃ、ロクなの残ってないだろ、もう」
と言ってから、今日現場に送り込まれた関口を見て、しまったという顔をした。苦笑するしかなかった。

「関口さんもメインフレーム触ってたんですか?」
真田がとりつくろうように関口に言った。
「そうだね。うちは富士通系だったけど…」
と口に出した途端、高山の顔が頭に浮かんだ。

そうか、思い出した。高山の顔は「坊や」に似ているんだ。

関口はかつて汎用機(メインフレーム)のプログラムをしていた頃のある新人を思い出していた。

5

就職氷河期に一人だけの新人が現場に入ってきた。愛嬌のある性格とぽっちゃりした外見で、大卒だが、まだ10代のようにも見えた。
関口や中堅のプログラマたちは彼を「坊や」と呼んだ。

「坊や」の仕事はテストだった。プログラミングも汎用機のこともわからない新人にさせる仕事はそれしかなかったのだ。

「坊や」はそれでも、テスト仕様書の手順通りに端末を操作して、実直にそのおもしろくもない業務をこなしていた。
彼には生来の明るさと好奇心があった。関口もメインフレームの説明書を彼の為に借りてきて、暇を見ては勉強につきあった。

「坊や」の飲み込みは早かった。半年もすると、テスト仕様書の作成もできるようになっていた。
このままいけば、2年後ぐらいには立派なプログラマになれるだろう。と関口は思ったし、皆からも期待されていた。

そんな時だ。エンドユーザーである銀行が統合することになった。
二つの異なるメインフレームを結ぶリンカーシステムの制作、3年後のシステム統合に向けての作業、無数の仕事が舞い込んできた。

ほぼ毎日終電近くまで残業した。残業代とボーナスで懐は潤ったが、心の余裕はなくなっていった。

割りを食ったのが「坊や」だった。皆がシステム統合に向けて奔走する中、彼もまた、テスト作業という形で奮闘していたが、もはや彼の勉強の面倒を見るものは誰もいなくなってしまった。

1年後、テスト作業を延々と繰り返していた「坊や」は無断欠勤を繰り返すようになった。関口は心配したが、目の前の仕事を片付けるのに精一杯だった。

ある深夜、関口の携帯に電話がかかってきた。「坊や」からだった。

「関口さん。すいません」
「大丈夫か?みんな心配してるぞ」
「僕、この仕事に向いてないみたいです」
電話の先の声はすっかり自信を失い、疲れ果てた人間のそれだった。

「そんなことはないだろう。飲み込み早いぞお前は」
「でももう駄目みたいです」
関口は何も返せなかった。思い出す度に腹立たしいが、その時、関口の頭にあったのは翌日こなさなければならないタスクのことだった。

「…ありがとうございました」
しばらくの沈黙の後、そう言い残して電話は切れた。

そして、それが関口と「坊や」の最後の会話だった。

6

この凄惨な現場にも少しは慣れてきた。
少なくとも、Wikiに書いてある仕様を書かれたままテストケースに落とし込み、コードカバレッジを100%にするという品質基準を満たせば、高山は納得してくれる、という風にコツがつかめてきた。

前にいた40代のプログラマは契約が終了したか、打ち切られたのか、いつの間にかいなくなってしまった。

高山は毎日のように派遣会社と「面談」している。だが、空いた席が埋まることはないようだった。

そのうち、結合テストがはじまった。高山は単体テストを徹底的にやっていたので自信満々のようだったが、実際に画面が出来てみると、様々なバグが発生した。

関口に言わせれば、それはそもそもの仕様の不備だったり、記述の矛盾があったりせいだと思うのだが、それでも高山は単体テストを書いた人間が悪いと信じて疑わないようだった。


ある日、関口にも矛先が巡ってきた。

「最終的に結合するのわかってたら、こんな設計になる筈ないじゃないですか?関口さん」

高山は連日の残業で血走り、焦燥感を漂わせるようになっていた。スケジュール遅延について、上から詰められているという噂も聞いていた。

この単体テストOKを出したのはあなたでしょう、と関口は言いそうになったが

「そうですね。すいません」

とだけ答えた。表情を浮かべないことには慣れている。

「結局、俺が書けばとっくに終わってたんじゃないすかね?これ?」

2ヶ月前に比べると、まばらになった会議室で、高山は誰に言うでもなく言った。

7

関口の契約が終了した。延長はされなかった。
プロジェクトの先は気になるが、おそらく大幅な遅延で完了するだろう。その時のPMが高山である保証はないが。

最後の出社を終えた後、関口は肩の荷がおりた心地で、夕食に牛丼チェーン店に入った。
そして開放感も手伝って、ビールを頼んだ。

牛丼をアテにビールを飲む。「自分でコードを書けば良かった」という高山の最後の言葉を思い出した。

PMの仕事はもちろんコードを書くことではない。しかし自分が書くように書かせることでもない。

そう、誰かが彼に教えることはなかったのだろうか?
関口は思った。おそらく誰も教えなかったのだろう。「坊や」のように誰も彼に教えなかったのだ。

そう考えると、高山も孤独で、哀れな存在のように思えた。

だが、自分には関係のないことだ。
「坊や」を見捨てたあの時から、自分は誰も救うことができない人間なのだ、と関口は考えていた。

ビールのジョッキが空になっていた。もう一杯、と思ったがやめた。

勘定をすませ、店を出る。

「ありがとうございました!」

ふと、その声に聞き覚えのある響きを感じて振り返ってしまう。

しかしそこには、見ず知らずの店員が立っているだけなのだった。