(12)フリーの意味を履き違えているということかな

 吾輩はシステムエンジニアーである。しかし、システムエンジニアーには明確な定義があるわけではない。

 記憶を固く閉ざしていたリナちゃんのことが脳裏から漏れ溢れ、胸が締め付けられる思いになった吾輩がどんな表情だったのかはわからなかったが、何かを察した小倉さんは、話題を本来吾輩が所望していたものに変えてくれた。

「ところで、大変な現場に来ちゃったね。初めてのフリーの現場なんだろ。ボクは、レインボーさんの上位の会社の、岸さんという人の紹介で途中から入っているけど、いろんな人の思いが交錯しているというか。」
「どうしてこうなってしまったのかは、まだ入って間もないんでわからないんですけど、ちょっと、ここのメンバーは、僕の考えていたフリーランスというのとは違和感があるんですよ。」
「というと。」
「たとえば、隣の席の吉沢さん。彼女はもともと歯科技工士からの転職で、フリーという立場で一生懸命システムエンジニアリングを修得しようとしている。いや、彼女はよいとして、やりたくない仕事を押し付けられたからといって現場に来なくなるひとがいたり、テストではなく新規開発をすることがプロジェクトにとって最適な方法であると言わしめるひとがいたり。」
「フリーの意味を履き違えているということかな。」
「いや、そこまでは言ってないんですけど、小倉さんは僕が新人のころから、フリーランスだったわけじゃないですか。確かに、プロパーの判断を仰いで仕事されていたわけですけど、それでも、普通のパートナーさんよりも、プロパーに近い位置で仕事をされているように見えた。それはつまり、プロジェクト全体や、会社やお客さんのこと全体を見て動いていらした。」
「それはそうだよね。ボクは一人社長で、営業でもあるわけだから。確かにシステムエンジニアリングだけがボクの仕事ではなかった。でも、プロパーに近いと感じたのは、ボクが山口くんのところに長くいたからとか、斉藤さんと古い仲だったからというのもあるんじゃない。」

 斉藤さんというのは吾輩がサラリーマンだったときの部長だったひとだ。そういえば「システムエンジニアーの価値は、IT以外のことをどれだけ知っているかで決まる」とか「仕事はプロジェクトマネージャーが取ってくるもの」というのは斉藤さんの教えだったように思う。吾輩が続ける。

「そうなんです。原価管理もするようになって、人脈や技術に裏付けができて、フリーランスになれると思ったから僕は独立したんです、僕は。」
 夜遅くさらに疲れていたからか、1杯目のジントニックがいつもより早く浸透してきたようだ。

「おやおや、それはたいそうなことで。ちなみに、言ったかもしれないけど、ボクも以前はサラリーマンだったんだよ。小さい会社だったけどね。とある朝出勤してきたらね、社長がみんなを集めて、『はい、いまこの会社は潰れました。再就職はできるだけ斡旋しますが、全員解雇しますので、就職活動してください。』って。会社ってそんなに簡単に潰れるもんなんだって、そのときは驚いたよ。知ってた?手形が2回不渡りになると会社って潰れちゃうんだよ。そんでいくつかあった人脈をたどって、斉藤さんに仕事を紹介してもらったりして、現在に至ると。」
 三十路を過ぎたばかりの吾輩には少々衝撃的な話だったが、笑い話のように言ってのける姿に驚きつつ、小倉さんは噛みしめるようにウィスキーを呑みこみ、

「山口くんの言うことはもっともだ。ただ、あのころとは時代は変わってきたし、ランサースタイルさんのようなビジネスモデルもある。違和感があるのは、仕事に対しての意識なんじゃないかな。『仕事』は妥協が許されず、つねに厳しさを伴うものと思うひとたちは、相手やチームの感情は二の次で厳しいことを言う。一方で山口くんは相手やチームの感情を重んじて全体を見ている。違いがあるのはそのへんなんじゃない?ただ、そういったものをふまえたうえでさ、今のプロジェクトが終わっても、また一緒に仕事がしたいと思えるかどうかだと思うんだけど。」小倉さんも少し酔ってきたかな。

「それからさ。」
「はい。」
「なんか山口くんは自分の思うシステムエンジニアー像に酔っている気がするね。」
 酒には酔っているが、それは思ったことはなかった。しかし、思い返してみると、リナちゃんが吾輩に好意を持ったのは、学生時代にやっていたIT系のアルバイト先で、プロジェクトマネージャーが優雅に仕事をこなす姿に憧れをもったことがきっかけだと言ったのを聞いて、この子は吾輩が好きなんじゃなくて、IT業界に恋をしているんだな、と思ったことを思い出した。吾輩も恋に恋い焦がれ、恋に泣いているのだと思うと、複雑ながらも、愉快な気分にもなった。帰って寝よう。

(11)リナちゃんのこと

 吾輩はシステムエンジニアーである。IT業界が華やかに見えるのはただの幻想に過ぎないが、現場には、咲き誇る高嶺の花と、場違いにひっそりと咲く一輪の花というものがある。

 時計の針が10時半を回っていたのはわかっていたが、帰り際に話しかけた小倉さんとの会話が非常に懐かしくなり、一杯だけ呑もうということになった。最寄り駅までにある細い路地へ誘い込むように光る「BAR」と書かれた看板の先のお店のカウンターに陣取ると、小倉さんは甚だしく予想外のことを口走った。

「山口くん、元気だった。そういや、前の会社のあの子とはどうなったの。なんか隠そうとしてたみたいだけど、けっこうみんな知ってたよ。リナちゃんとか言ったっけ。」
 なるほど、会社を辞めるということは暗黙のルールというものから解き放たれるということなのか。吾輩は10年前と、現在のフリーランスとの間の違和感について言葉にしたかったのだけど。

 流川さん、通称リナちゃんは、吾輩が常駐先からまとまった仕事を自社に持ち帰った時に手伝ったもらった女の子だ。美容系の学校を出ているのに、IT業界を志望したとのことだった。歳は23、4だったろうか。バイトで営業事務をしていたが、吾輩の仕事のスケジュールが厳しく、作業自体はパラメータの入力と画面操作でソースファイルが生成できるというものだったから、開発に興味のある彼女に手伝ってもらおうということになった。
 メンバー6人を率いたプロジェクトはこれまでと変わらず男所帯で、残業も込んできたなかでの彼女の投入は、効果てきめんだった。メンバーの負荷が減ったのが第一であるが、日頃2次元と仲良くするような、彼女と歳の近しいプログラマーたちは、彼女に興味がないふりをしつつも、彼女からの質問に嬉しそうに答え、そして、女子との他愛もない会話を楽しんだ。残業こそ微減ではあったものの、目に見えて生産性は上がっていった。

 残暑の週末のある日、台風19号が南から北上していた。吾輩は課長からのメールを受け、メンバー全員を定時前に帰した。残業に疲憊していた男衆は喜んで帰ったが、流川さんだけが、3日遅れという理由で、帰ろうとしなかった。スケジュールはどうとでも調整できたはずだったが、彼女の口ぶりから、早く一人前として認めてもらいたいと必死さが伝わってくる。吾輩は彼女の横に着いて、ギリギリまで粘ったのだが、雨風は強まるいっぽうで、とうとう電車は止まってしまった。出張慣れしていた吾輩は彼女のために近くの宿を確保し、吾輩はビデオ試写室で新作をチェックするつもりで、彼女を部屋まで送ったが、心細いからシャワーを浴びている間は帰らないで、というタテマエによって、しばらくの間、彼女と同じ部屋にいることになってしまった。

 安くはないシティホテルからの暴風雨の夜景を見ながらパソコンを広げ、残務をしようとするも落ち着かない。そうこうしているうちに浴室の水の音が止まり、ドアの開錠音が部屋に響く。アメニティーのガウンを身にまとった姿からは、下着まで雨に打たれたからかどうなのか、くっきりとそのままの大きな谷間が見えていた。

 冷静さを装い、吾輩が部屋から出ようと彼女に背を向けたとき、リナちゃんは両手を広げ、吾輩に訴えた。
「山口さん、何もしてくれないんですか。」
吾輩は振り向き、
「落ち着いて。山口さんとリナちゃんは、ただの社会的な上下関係なの。第一、オフィス・ラブは仕事がやりにくくなるからだめだよって、あいつらにいつも言っているの、リナちゃんが一番よく知ってるじゃない。」
吾輩の精一杯の強がりを聞いて、ブサイクに頬を膨らせた彼女は、少し間をおいてこう続けた。

「わかりました。でもひとつだけお願いを聞いてください。」
「内容によるけど、なに。」
「リナのあたま、ポンポンしてもらえますか。」
という言葉にまかせ、彼女は吾輩の目の前に顔を近づけて目を閉じた。

 マネージャーとして、彼女を認めたかった吾輩は、やさしく彼女の頭に手をやった。上背はなく、決してスタイルがいいとは言えないが、人懐っこさが存分に溢れたふくよかなからだを見ながら、オフィスでちょこまかと動き回るさまを思い出した。さらに凝視すれば、やはり少し鼻が上がってると再確認し、ほんとうに子豚さんのように愛おしいと生唾を飲み込み、彼女が恍惚の表情から遠ざかる意識の中で、大きな口を少し開けたとき、吾輩は彼女の唇をむさぼってしまっていた。

 ほどなく、プロジェクトは無事納品を済ませ、流川さんの送別会が盛大に行われた。ピロートークで聞いた話だが、定職に就かない娘にお父さんが激怒しており、強制送還が決まっていたということだ。納品までの数ヶ月は忙しく、彼女とはそれっきりだったが、事あるごとに、私いつか両親を言い聞かせて戻ってきますからと言っていたものの、数直線もベン図もわからない女の子がこちら側に向いているとは到底思えなかったし、本当にやりたいことを貫いてほしいという親心もあった。とはいえ、彼女がいなくなったという喪失感は、今も癒えているのかわからない。

(10)変わらないことを維持し続けることこそが幸せ

 吾輩はシステムエンジニアーである。やはり、前回の話もすこぶる面白くなかった。人間は追い詰められていると、ひたすら、自分のできることをやり抜こうとするからだろう。吾輩にも気持ちにゆとりがないのだ。ちなみに、試験前に部屋の掃除をしたくなる現象のことを、セルフ・ハンディキャッピングというそうであるが、追い詰められているときに、自分が書ける、自分がふさわしいと思うコードを書ききった里見さんのコードについても、同じようなことなのかもしれないと思った。いや、彼女は決して逃げたわけじゃないのであるが。

 彼女のコードは確かに清々しく、コーディング規約にも違反していなかった。そして、彼女の言葉からわかったように、この業界に入りたてのころに覚えたロジックを正義として書かれたわけである。しかし、それは吾輩には、彼女の中のテンプレートを使い回しているだけにしか見えなかった。メインフレームの有史以来、プログラマーというものはそういうものだったのかもしれないが、いつかどこかで書いたコードの反復がわれわれの仕事ではないと、吾輩は思いたいからだろう。それが、経験やスキルと呼べるものだったとしても。
 しかしながら、吾輩のプログラムが、果たしてテンプレート化していないのかということも自問自答しなければならないと、強く自分に言い聞かせる。そして、比較的若い今の年代では、いろいろなことに対応できていっているかもしれないが、将来、家庭を持ち、変わらないことを維持し続けることこそが幸せだと思えるようになったとき、吾輩はこんな気持ちでいられるだろうか。

 プログラマー30歳定年説が覆されて久しいのは、設計書を書いている時間がないのと、プログラムの生産性が飛躍的に向上しているからであるが、吾輩は、30歳を境に、コーディングへの執着は失せている。代わりの執着は、人間も含めた「システム」というものが出来上がっていくさまである。対して、吾輩のスマホは8ヶ月前のアップデイトをわざと適用していない。スマホは電話であり、不必要なアプリもほとんど入れておらず、ブラウザとメールさえ使えればよい。今使えているものをわざわざ刺激する必要はないからだ。

 さて、わがままな彼女も出社したし、事情聴取も終わった。最近、額も汗ばむようになってきたので、この現場で初めてジャケットを脱ぐ。スーツの上着は、椅子の背もたれに掛けると型崩れすると何かで読んだので、ていねいに左右に折りたたみ、襟のほうをつまみながら、オフィスのすみの衣文掛けに掛ける。吾輩がカフスボタンをしても不自然じゃなくなるのはいつになるのだろうかと、いつもと同じことを思いながら、袖のボタンをはずし、腕まくりをする。同僚たちも、昼食を終えて帰ってきた。さて、やるか。

「設計書のここのところなんですけど、もしかしたら、情報系のシステムからデータ連携があるかもしれないから、もう少し、拡張性を持たせておいてほしいんですけど。」
「でもそれ、その先のテーブルに連携データをいれておけば事が済むんじゃないんですか。」
「いや、別のプログラムを起動できるようにしておいてほしいんです。」
「んー、安藤さんのメモを見ましたけど、データ連携のプログラムは、サーバーにあるジョブスケジューラがをキックするとのことだったので、これで問題ないとお客さんのレビューまで行ってますよね。」
「これ、新しいほうのサブシステムなんですけど、まだ、ジョブスケジューラの選定まで至ってないんです。」
「まーたそれですか。この前の帳票の件もそうだったじゃないですか。なにも決まってないなかで、いろんな場合を想定して作ったのに、僕が聞いていないことが最後に出てきた。もうそういうことはこりごりなんですけど。」

 いやいやこちらも、まーたなんか穏やかじゃない会話が耳に入ってきた。プロジェクトにとって最適な方法を検討した結果の、浅見プロジェクトリーダーが、尖った山中さんをなだめている構図だ。安藤さんのメモがポイントのようだが、安藤さんは振り向きもしない。帳票の件という発言も気になる。
 見かねて、少し離れた場所から、髪の毛を下ろした白髪のおじさんが、書類をもってこちらにやってきた。彼はふたりの間に割って入り、言葉を発しようとしたとき、ハッと気がついた。髪形が変わってて、まったく気がつかなかったが、吾輩が新人サラリーマンのときに世話になった、あの頃からフリーランスの小倉さんじゃないか!

(9)吾輩も自分のコードにとやかく言われるのは嫌

 吾輩はシステムエンジニアーである。いやしかし、前回(先々月)の話はすこぶる面白くなかった。

 いや、前回の話で言いたかったことは、プログラミングにはパラダイムがあるということである。
 パラダイムというのは「ある時期の背景と方法を包括したもの」を示す「時代」や「流行」とは別の便利な言葉である。IT系のひとたちにとっては、ホスト、オープン、Web(次はフロントベースのサーバーレスと続くだろう)のことであるのだが、たとえば、近代の情報収集のやり方は、一般化したインターネットのうえで、はじめはパソコンだけだったが、iモードが生まれ、スマートフォンになっていったように、根幹を為す技術は変わっていないが、情報への触れ方は変わっていった、という説明であれば、IT系でないひとでもわかると思うのだけど、このそれぞれがパラダイムである。
 そして、前回の里見さんのプログラムは、少なくともM言語を使う場合においては、直近のパラダイムにふさわしくないものだったということが言いたかったと、高層ビルに入る常駐先の社食は避けて、いつも来ている地上の居酒屋で、ランチのアジフライ定食を頬張りながら考えていた。

 ビルに戻り、喫煙所で2本吸ってからデスクに戻る。休憩が終わるまであと15分ほどあるが、昼からと言っていた里見さんがもう来ていた。ノートパソコンに向かい、休憩ではない時間を過ごしているようだ。半休が気まずい現場もあるから、少し早く来るのは懸命な判断だと感心しながら、レインボーさんの島はまだ誰も昼食からは戻ってきておらず、ランサースタイルの島も、吾輩と彼女だけであると気づく。彼女が休憩中でないのなら、前回わかった「面白い話」がなぜそうなのか、聞くなら今しかない。彼女のコードは確かに「だいぶアレ」ではあったのだが、尖ったものというか、ある種の執着のようなものを感じたのだ。

「あっ、里見さん、お疲れさまです。あれ?、もうご飯は食べたんですか?」
「はい。来る途中に簡単にすませてきました。」今朝は彼女が来るか来ないかで揉めていたこともあったので、心配させまいと気丈に振舞っていたのが、その話し方からわかった。あまり話を長引かせたくなかったので、間髪入れず、吾輩が続ける。

「あの、3Aの4のソース見て、気になったんですけど、変数の局所宣言がないのとループが全部後判断になっているのが、面白いなあと思って見てたんですけど。」
 こういった話をされるのが初めてだったのか、最初は驚いたような顔を見せていたものの、徐々に彼女の表情が曇っていく。
「・・・なんでしょう?私のソースに対して、何か仰りたいことでもあるんですか?」
「いえ、言いたいことは特にないです。規約違反でもないし、汚いわけでもない。むしろ、清々しいくらいです。」
「じゃあ、何ですか?」
「たとえば、このメソッドの先頭の変数宣言、先頭に20行もあると見る人が面食らうのと、半分以上は、判断とループのブロックの中で使われるものだから、それらはブロックの中で宣言したほうが処理全体の見通しも立てやすいし、変数の適用範囲はブロック内だけだから意図しない代入とかもなくなる。あと、これとこれとこのループを抜ける条件式は後でなくて前に書けば、不要な変数も出てくるし、ソースファイルもだいぶ減らせる。」
「でも動作は変わりませんよね?修正しろと言ってます?」
「いや、そういうことは言ってない。でもM言語が属しているパラダイムいえば、こういう書き方が普通じゃないかなと思って。あと、それから・・・。」
「それから?」彼女に促され、吾輩が続ける。
「なんか、こうも書き方が統一されていると、いちばん最初に覚えたやり方をずっとたいせつに守っているような気がするんですよね。もしくは、これが正解だという方法を守っている、というか。もしかしたら、これまで、あるべきロジックの議論をしてきてないのかな、とすら思いました。」
「・・・そうですか。仰りたいことは以上ですか?」

 吾輩の、以上です、という言葉を聞いて、彼女は女性にありがちな、頬をふくらませて、ぷいっと顔を背ける仕草をしてみせた。・・・図星か。我々の仕事は納期通りに品質の高いプログラムを書くことであるから、意外とその中の書き方がどうあるべきかということは議論されにくい。彼女は、そういった機会が与えられることなく、自分の正解を貫いてきたんだろう。だから、他人の書いたコードは触りたくないという結論に至ったんじゃないかと思う。そして、自分のコードにとやかく言われるのが嫌なのは吾輩も同感だ。でも、最新の事情については、つねに取り入れていかなければと、自問自答しながら、昼休みの終わりを告げるチャイムを聞いた。

(8)面白いことは気のせいではなかった

 吾輩はシステムエンジニアーである。プログラムは人間の手によって書かれるものである。

 しかし、朝から感傷に浸っている場合ではない。このプロジェクトは火を噴いているのだったと自分に言い聞かせ、焦る気持ちを抑えながら、駆け足気味にデスクに戻った。とはいえ、吾輩の担当はバカデカい七画面から、「大きめの四画面」に減ったわけなのだから、いくばくかの安堵のようなものもあったが、それはすぐに間違いだったと思い知る。「3Aの大きめの四画面」というのは、3Aの3から6のことであるが、これらは、3A本体と、3Aの1と2から呼び出されるが、渡されるパラメーターが多く、それらは複雑な条件で結びついている。つまり、「小さめの三画面」自体のテストをしなくてもよくなったのは事実だが、それらから決別できたわけではなく、書きかけのコードを追って、仕様の把握をしなければならないというのは変わらないのだと認識した。同時に、ババをつかまされたというやるせない気持ちが吾輩を襲う。念のためと、昨晩のプロパーさんの成果を期待したが、リポジトリーのソースファイルの日付は一秒たりとも変わっていない。たぶん、この画面、みんな触りたがらないんだろう。吾輩も「話と違う」とか言ってみたい。

 さて「小さめの三画面」について、最初のソースファイルをクリックし、ホイールを転がす。そして、次のファイルをクリックし、またホイールを転がす。たまには戻したりもする。そうやって前後関係を読んでいく。少し面白いことに気がついて、次のファイルをクリックし、今度は、ホイールを下に転がすだけになる。ほとんどのファイルを下向きにホイールを転がし終わったあとに、面白いことが気のせいではないとわかった。

 里見さんのコードは変数の局所宣言がほとんどないのと、ループ処理がすべて後判断になっている。ループ処理というのは、繰り返しの処理である。たとえば、ある変数aに1を最初に格納しておき、aを1づつ足しながら処理を行い、aが一定回数になったら、繰り返しの部分を抜けるというものだが、里見さんのコードは、そのaが一定回数になったかどうかの判断が、繰り返し部分の後ろにある。べつに前判断でもいいところを、後判断にこだわって、処理の見通しが悪くなっているところも散見される。
 変数の局所宣言というのは、さっきの変数aについては、aという箱を使いますよ、と「宣言」しなければaは使えない。大昔のコンパイラーは、変数の宣言は、すべての処理よりも前に書かなければならなかったが、最近の言語は、処理の最中に変数宣言があってもよい。これを変数の局所化というのだが、彼女のコードにはそれがなくて、すべての変数宣言が、すべての処理の前にあって、見通しが悪くて仕方がない。この現場で使っているMという言語は局所変数はサポートしていないのか。というか、コーディング規約はあるのか、そして、このコードは誰かレビューしたのか。

 吉沢さんにコーディング規約の場所を教えてもらい確認してみたが、ループ処理を前判断、後判断にするかの指針について触れられていないのはともかくとして、変数の局所化については触れられていなかった。なるほど、規約違反ではないのか。

「吉沢さん、この現場ってコードレビューってしてます?」
「前はやってましたが、フレームワークが変わってからはものづくり優先ですね。」そうか、では。
「M言語って、変数の局所化ってサポートしてますよね?」
吾輩はM言語は初めてである。
「ループのときに、変数宣言するやつですよね。ほとんどのサンプルコードがそうなってますから、普通に書いてますよ。」
拍子抜けである。

 さて、里見さんは昼から出社すると、レインボーさんの島からもれ聞こえてきた。ここぞと、彼女が守られていたと言っていた山中さんの反応を見てみる。
「里見さん、昼から来るみたいですね。あっちで言ってます。」
「あ、そうですか。集中していて聞こえませんでした。」
「心配じゃないですか?」
「いや、別に。」
「守ってあげていたのに?」
「それは彼女が勝手にそう思っているだけです。」
 やれやれ、そうかい。

「ところで、里見さんのコード、ちょっとアレですね。」
「いや、だいぶアレだと思いますよ。」
 知ってるのか!

(7)そんな子供みたいなことを言ってないで

 吾輩はシステムエンジニアーである。現場には、受け入れられないこともある。

 今朝は、予定通り早起きだったが、昨日は久しぶりの男の自炊だったせいか、お腹の調子が悪かった。結局、朝のイベントに時間がかかってしまい、オフィスのゲートにIDカードをかざしたのは、始業の3分前だった。ピピッと音を立てて開いたゲートを通り、吾輩は、我々のプロジェクトの島に目をやる。この時間になるとほとんどのメンバーが揃い、静かに着席しているのだが、今日は、元請のプロパーの数人が立ち上がり、朝には似つかわしくない調子で、席をまたいだ会話が繰り広げられていた。

「あれ、何かあったんですか?」
 デスクに腰掛け、かばんを一番下の大きい引き出しにしまいながら、吾輩は、隣の席の吉沢さんに、ひそひそと尋ねた。
「里見さんがね、お休みなんだそうです。」
「それは心配ですね。お腹の調子でも悪いのかな。」
「いや、そういうのではないみたいで。『話と違う』とか言って、浅見さんに一方的にLINEを送ってきて、音信不通なんだそうです。返信も既読にならないし、電話も出ないみたいで。」
 どうやらゆゆしき事態のようである。続けて吉沢さんに問う。

「うーん。話が違うってなんなんですかね?」
「私、昨日、8時半くらいまでいたんですけど、7時くらいに、里見さんが浅見さんに呼び出されて…別室で打ち合わせをしてたみたいなんですけど、 30 分くらいして、里見さんが、涙目で怒ってるみたいなそんな感じで帰ってきて。そしたら、何も言わずにノートパソコンのフタをバンッってすごい音を立てて閉めて、挨拶もなく、無言で帰っていったんです。」

「なんか無茶なこと言われたのかしら?」
「…そうですねえ。たぶん、ずっと嫌がっていたテストをやってくれとお願いされたんじゃないかなと思います。私も、そのあと、浅見さんに、少しペースを上げてくれとお願いされたので。」
「そうですか。昨日、僕が早く帰っちゃったからですかね。」
「それはまだ関係ないんじゃないですか?」
 目は笑っていないながらも、パッと口角を上げる吉沢さんの表情に見惚れていた吾輩に、デスクに座ったままの浅見さんから声がかかった。

「すみませーん、ちょっと山口さんいいですか?」
 朝が早いこともあり、まだ浅見さんは腕まくりをせずに、ジャケットすら着ている。心中は穏やかじゃないのだろうが、変わらず冷静に、横に立った吾輩に曰く、
「少し担当の割り当てを変更したいんですが。3Aの6画面のうち、山口さんの担当は、大きめの4画面に変えます。そのあとは、基本的にもともとは里見さんがつくったものを割り当てていたんですが、別の人がつくったもので割り当てます。」
「はあ、よくわからないんですけど、彼女がつくったものが僕の担当ではなくなるということに、何か意味はあるんですか?」
「プロジェクトにとって最適な作業を検討した結果です。」

 その常套句を言われると、吾輩も言い返せない。釈然としないながらも、了承の返事をしたとき、いつもYシャツの胸ポケットに入れている、吾輩のアイフォーンが震え出した。発信元は、営業の出水さんだ。これは出たほうがいいな。
「あっ、すみません。ちょっと電話がかかってきました。とりあえずお話はわかりましたので。」
 浅見さんとの会話を終わらせ、オフィスのゲートの外の廊下まで移動した。着信は止んでしまったので、こちらからかけ直す。

「おはようございます。山口ですが、出水さん、出れなくてすみません。お電話、大丈夫ですよ。」
「ああ、すみません。ちょっと誰に電話しても要領を得ないので、山口さん入られたばっかりですが、仕方なくお電話しました。」

「里見さんの件ですか?」
「そうです。来てないんですよね?」
 出水さんが続ける。
「彼女が言うには『やりたくない仕事を押しつけられた。面接のときに、他人が作ったプログラムは触りたくない、と強く言っていたのに、押しつけられた作業は、それそのものである。話が違うから、それが解消されるまで行きません』ということなんですが、そこにいる誰に電話しても、知らぬ存ぜぬだったもので。」

「なるほど。だから、彼女がつくったもののテストを取り上げられたんですね。たぶん、マネージャーは、彼女の作業が、自分でつくったプログラムの修正作業だけになるようにしようと調整していますよ。彼女にお伝えください。そんな子供みたいなことを言ってないで、とりあえず出てこい、と。」
 最後の言葉は、自分でも少し言い過ぎ観があったのもあり、出水さんはしばらく絶句気味だったが、要領は得てくれたようで、話はまとまった。

 デスクに戻る前に喫煙所に寄った。いつもより少し力を込めて、ジッポーライターをスナップする。チャリンという甘い音を聞いて、迂闊にも、例の憧れの先輩のことを思い出してしまった。そういや、あの人もこんな感じで強く言う人だったっけ。先輩が抜けたあと、プロジェクトを任されたのはスキルが似ていた若輩の吾輩だったが、あのころは、なにひとつうまくいかなかったな。

(6)高嶺の花を満足させる自信はなかった

 吾輩はシステムエンジニアーである。現場にあるのは、仕様とプログラムだけではない。

 山中さんに話しかけるべきか、そして、なにを話すべきかも含めて、吾輩は(この休載期間の)丸3ヶ月も考えたわけだが、初めてのフリーランスとしての現場で、少し興奮しているのもある。この 10 年間のサラリーマン生活のなか、終電間際の乗換駅で、あの頃は味なんてわからなかったスーパードライを無理矢理ねじ込み、昼間の自分のふがいなさを悔やんだことを思い出す。絶対に言っておいたほうがよかった侘びの言葉を、番号を知っているにも関わらず、通話ボタンが押せなかったのは、当時が、個人主義が蔓延しはじめたころだからだったろう。それ以来、仕事は仕事と割り切ってしまったが、それでも、憧れの先輩と2人で行った出張のときの夕食では、彼女から傷心の話を打ち明けられ、僕は秘めた言葉を言えなかった。

 僕があのとき「すいませんでした、その場を取り繕うのに必死だったんです。」とか「先輩は素敵ですよ、僕が慰めたいです。」とか、ちゃんと言えていればよかったのに。…いや、高嶺の花を満足させる自信は、あの頃の吾輩には、なかったわけだけれども。
 
  
「あっ、山口さんでしたよね。あれ?帰ってもいいんですか?」
 後ろから、苗字をさん付けで呼び、振り返った彼の言葉は、概ね予想通りだったが、ちょっとした罪悪感に言葉が詰まる。

「いやっ、あのー、最初の画面がね、デカすぎてしんどくなったんです。少し動かしてもねえ、バグりまくりスティーでね。」最近、流行ってるらしい親父ギャグをブッこみ、ふっと表情を緩めた、山中さんにあえて、疑問をぶつける。

「山中さん、どうして、テストじゃなくて、新規やってるんですか?」
「え?」
「ごめんなさいね。ちょっと設計書が見えちゃったんです。10 年もやってると、机の上の表向きの資料は見ちゃうんです。」
 吾輩の言葉を聞いた彼の表情は、呆れ気味に変わり、喫煙所から見えていた、あの河川敷のほうへ目を細めた。

「下品な人ですね。」
「すんません。注意力が散漫なもので。」
「いや、謝らなくてもいいですよ。山口さんのことは、営業の出水さんから聞いてます。フリーになりたてなんですよね。だったら、人のやってることに口を出さないほうがいい。」

「その気持ちはわかりますが、どうすれば、この現場の仕事が早く終わるかを考えちゃうんです。ダメですか?」
「ダメじゃないですけど。」

 少しの間、沈黙が流れた。あと5分ほど歩みを進めると最寄り駅。次は吾輩のターンだという雰囲気の中で、次の言葉を絞ろうとしたとき、優しい彼が助け舟を出す。

「さっきも見ていたでしょ。あのプロジェクトが破綻していることは、きっと、山口さんにもおわかりでしょう?」
「お言葉ですけど、僕は、破綻という言葉は嫌いなんです。ざっと見たところ、あのプロジェクトは数千万円だと思うんですけど、書きかけのプログラムを見る限り、あの程度であれば…いや、収支的には失敗かもしれないけど、破綻という言葉は適切じゃないと思うんですけど。」

「じゃあ、破綻ってなんなんですか?」
「国家予算かしら。でも、国家予算も破綻ではないんじゃないかな。このあと、いくらでも修正が利くと思う。」

「よくわかりませんね。」
「そうですね。僕もよくわからない。」

不思議と重なっていた二人の革靴の音を聞いて、吾輩は思い出した。
「ところで、共通機能の設計書、よくできてましたね。あの分量で、あそこまで表現できているって、言葉の多い僕には絶対にできない。」

「誰もついてこれないんですよ。」
「たぶんそうなんでしょうね。」
「すぐれた技術で、エレガントなプログラムを書くことこそが、顧客のためになる。これは間違っていますか?」

「間違ってないです。でも、エレガントなプログラムなんて、僕にはもう書けないし、今では書けるひとも少ない。こちら側に来るのは、小さい頃からの夢だったけど、年もとったし、時代も変わったから。」

 微妙な空気を残しつつも、最寄り駅で地下鉄にもぐる彼を、お疲れさまでした、と声を掛け合い見送った。明日は早起きだ。
 
 

(5)安心せい、ここは不夜城じゃ

 吾輩はシステムエンジニアーである。この現場には、仕様とは別のさまざまなものがあるようだ。

 山中さんの席の表向きの資料の件は、のちほど、喫煙所で消化することにして、吾輩にとっては、それより重要なスケジュール調整をせねばと心を落ち着かせながら、プロジェクトマネージャーと現場で初めての会話を試みるため、彼の横に立つ。タスクバーが満杯のノートパソコンの画面が見えた。

「浅見さん、すみません。3Aの画面なんですが、5日では足りなさそうです。仕様を把握するだけでも時間がかかりそうで、そのうえ、量が多すぎるかなと。」
 画面から目を逸らさずに吾輩の話を聞いていた浅見さんは、少しキリが悪かったのか、しばらくキー入力を休めなかったが、ようやく、吾輩のほうを向いた。ガリガリと頭を掻きながら言う。
「そうですか。うーん、納期延長を何回もやっているのでね、このスケジュールで終わることがマストという感じなんです。とりあえず、最速でやっていただいて、結果的に、山口さんのこのあとのタスクができなさそうであれば、それを別の人に割り振るという形で進めたいです。申し訳ないですが。」
 振り絞るように答えた彼は、眼鏡を外し、手のひらで両目を揉みこむように押さえた。あまり寝ていないのだろう。

 さて、なんか、タスクの割り振りとか考えてくれる、とか言ってはくれたのだが、要するに、とりあえずこれでやってくれということのようだ。この人が、狸かそうでないかの見極めは徐々にやっていくことにして、ならばと吾輩が続ける。
「ちなみに、ここは不夜城ですか?」
 不夜城という言葉は、前職の先輩がよく使っていた言葉だ。バブルより少し前の先輩たちは、残業が美徳で、無理なスケジュールをこなすということに誇りを持っていた。吾輩が先輩に無理難題を言われ、消極的な表情になったとき、冗談っぽく「安心せい、ここは不夜城じゃ。」とよく言われた。つまり、この現場は、最終の退出時間がないから、思う存分、残業できるという意味だ。浅見さんは言葉の意味を測りかねていたが、しばらくして、その意味を理解したのか、
「はい、不夜城です。」
 と返ってきた。そして、浅見さんが続ける。

「実は、先月ぐらいから、ここのテストを終わらせるために、会社も持ち出しを決断して、別の現場にいるプロパーを定時後に呼び寄せてテストをしているんです。今日も六時半くらいから十人くらい来ますよ。そういう状況なもので。」
 そういえば、着任して数日、定時過ぎあたりに、人がわらわらとやってきていて、空席にパソコンを持ち込んで作業していたのを見ていたが、そういうことだったのか。

「今日は、3Aの全容に面食らって、ずいぶん疲れました。すみませんが、今日は早く帰ってリフレッシュしたく。ここは不夜城ということもわかったので、明日からは終電くらいまでやりますので。」
「そうですか、わかりました。今日はゆっくりしてください。今日のプロパーの作業進捗で内部のスケジュールも変わってきますんで。」
「ありがとうございます。…ちなみに、書類が表向きだったんで見えちゃったんですけど、常駐組でテストしていない人もいますよね。」
 浅見さんは少し言葉を詰まらせ、
「そうですね。プロジェクトにとって最適な作業をやってもらっています。」

 なるほど。そういう言い方をする人か。
「でも、今、プロジェクトに最適な作業というのはメンバー全員でテストを終わらせることなんじゃないんですかね。」
 という吾輩の発言は、定時を伝えるチャイムの音にかき消された。浅見さんはもうすでに画面のほうを見ていたが、その横顔は、少し苦い表情であるように見えた。

 そういうことで今日はもう帰る。フリーランスになったばかりで、給与は報酬という呼び名に変わり、支払サイトというものと向き合わねばならない。今月は節約しなければならないのと、しばらくは残業が込みそうだから、今日は冷蔵庫にある期限が切れそうな卵と、冷凍してある豚肉で何か作り置きしようと思っていたのだ。帰りに白菜とか、もやしとか買っていこう。コメも六合炊きを目いっぱい炊いて、冷凍しておくことにしよう。吾輩は首から下げたIDカードをぐるぐる巻いて、鞄にしまいこんだ。

 帰りのエレベーターを一階で降りると、レインボーさんのプロパーと思しき7、8人の大群に遭う。若いのから、中堅ぐらいまでバラエティに富む。そこかしこから集めてるんだな。その人込みの中に、帰宅しようとしている山中さんの姿が紛れていた。そうか、別のエレベーターで降りてきたのか。駅までの数分、話しかけて真意を問うか、知らんぷりを決め込むべきか。

(4)表向きの書類は基本的に読んでよい

 吾輩はシステムエンジニアーである。どうやら仕様というものはありそうである。

 トランザクションにおいて、仕入先と取引先の関係がマスターで定義された関係にならないという、吾輩からの「素朴な疑問」について、桜木さんは、
「あれ、そうでしたっけ?」
 と問い返し、手に持っていた水筒をぐいっとあおった。水筒からはカラカラと氷の音がしていた。冷たい麦茶でも入っているのだろう。最近、日中は暑くなってきたしね。

 結局、彼からは、
「うーん。マスターがこうなっていますから、仕入データのほうに、取引先がないほうがいいですよね。ちょっと、影響範囲調べて、列をなくしましょうか。」
 という言葉が得られたのだが、いや、そんなことではなくって。

 吾輩が知りたかったのは、仕入先と取引先の実際の関係であって、なぜ別の取引先を入力できるようになっているのかということである。しかも、フェーズは結合テストだから、このあたりのことは充分に議論されているはずではないのか。もし、これを、前職で後輩が発したとするならば、強くそれを問うていただろうと、苦い顔をしかけたとき、隣で我々の会話を聞いていた安藤さんが、ノートパソコンの画面から目を逸らさず

「現行踏襲!」

 という強い言葉を浴びせてきた。桜木さんが一瞬固まる。
「いや、だから、基本的にはマスタと同じものが入るけど、運用は現行と同じにするから、仕入データに取引先があってもいいって、お客さんとそういう話になったじゃない!」
 さらに強い言葉が発せられる。桜木さんは、しばらく一点を見つめ
「すみません。そうでした。」
 という言葉を絞り出し、
「そういうわけですので、マスタと違うものが取引先に入ってもいいそうです。」
 とばつが悪そうに言いながら、巨大なER図を僕に手渡してきた。

 なるほど。吾輩の疑問はわからなかったが、こういうことは聞いてはいけないということはわかった。もうひとつわかったのは、社内的に桜木さんより安藤さんのほうが職位が上だということだ。桜木さんは、「さん」付けよりも「くん」付けのほうが似合う青年であるのに対し、安藤さんは、白髪も多く、歳を重ねたことによると思しき恰幅のよさがあるわけで、一目瞭然と言えばそれまでだが、いずれにせよ、桜木くんが安藤さんと適切なコミュニケーションが取れているのかと、吾輩が考えなくてもいいことを考えつつ、肩を落とし気味に自席に戻ったとき、ランサースタイルの島でひそひそ話がはじまった。

「またやってる。あれされると気分が悪いんだよね。」
「そうですよね。私もああいうのが嫌でフリーになったんですよ。」

 声の主は、吾輩の隣の座席が向かい合う男女。吾輩は入ったばっかりなので、名前はまだわからない。端末には、IPメッセンジャーが入っているのに、わざわざ口に出して言うってことはそうとう積もるものがあるのだろう。さらに聞こえないふりをして聞く。

「上下関係で仕事をされると、何が正しいのかわかんなくなりますよね。」
「結局困るのは彼らだから、全然いいんですけど。」

 ふむ。今のくだりで重要なのは、安藤さんが体制や上下関係を振りかざしたことよりも、先輩が後輩を納得させられなかったことじゃないだろうか。指示には、時には大義名分である場合もあるが、正当な理由が必要だ。さらにかんがみるに、「現行踏襲」というフィニッシュホールドを使わざるを得なかったということは、上位の体制、つまり、エンドユーザーに近いところで、新しいシステムへの議論がじゅうぶんに為されていないからだろう。ITの専門知識を活用して、お客さんと同じ立場でシステムの姿を考えるのが、広義のシステムエンジニアーの役割であるが、その立場にレインボーさんはいなかったように感じる。思い切って、口を開く。

「あ、お話し中、すいません。新しく入った山口といいます。私もなんか似たようなこと思いました。」
 男性のほうが怪訝な表情を見せるも、
「あ、聞いてらっしゃいましたか。山中と言います。私、この現場は結構、長いんですが、いろいろありましてね。ねえ、里見さん。」
「そうです。私はとりあえず山中さんに壁になってもらってるんで実害は少ないんですけど。」
 彼らはうまくいっているようである。よかったね。

 当たり障りのない会話を少ししたあと、レインボーさんの島に行ったもうひとつの理由を思い出した。スケジュール調整のお願いをしないといけないんだった。離席中の山中さんの席を通ったとき、彼のデスクに、書類が表向きで置いてあるのが見えた。表向きの書類は基本的に読んでよい。しかし、それが、明らかに新機能の設計書であるとわかったときに愕然とした。

 このプロジェクトは、火を噴いていて、今、みんなで動かないものを動かそうとしているんじゃないの?

(3)重要なことは実装を見通すことである

 吾輩はシステムエンジニアーである。仕様はまだ、把握していない。

 さて、3Aの画面は、子画面が「3Aの1」から「3Aの6」まで6つある。あわせて7画面。一つ一つ確かめて不足を埋めていくと、ほとんど書き終わったあとに、知らない仕様がわかって後戻りするということがありそうなので、まずは全体像を把握してみることにする。そもそも、WBSに引いてある5日というのが、実現可能なのかどうか。

 親画面だけでも入力項目は 30 くらいあるが、よくよく意識して見てみると、子画面それぞれにも、ほぼ同じ数の入力項目がある。そのうえ、ほとんどの項目で、何らかのチェック処理やデータベースへの参照処理が書いてある。書いてあるだけで、エラーで落ちたり、全く動かなかったりするわけなのだが。
 子画面のひとつには、検索条件を入力し、その結果一覧を表示するというものもあるのだが、その結果一覧の表がやたら横に長く、少し心が折れそうになる。横スクロールバーのつまみが豆つぶぐらいしかない。
 ざっと見渡した感覚でしかないが、半分くらいの処理は、書いてあるが動かないか、コメントが書いてあるだけで、中身が書いてない。これでは、1日を 1.5 人日にしても、5日では無理そうな気がする。たとえ、仕様が把握できたとしても、今度は、数に負けてしまいそうだ。ということで、しばらくは、何が正解で、何を書くべきかを考えることに時間を割くことにする。

 この現場、設計書と呼ばれるものは存在しているのだが、これは、お客さんから最低限のレビューを受けるために作ったと思われるパワーポイントで、画面遷移と処理概要が書かれているだけである。幸いにして、テーブルのI/Oらしきものは記載されているから、これを基本設計書と呼ぶことにする。
 詳細設計書は、本来、プログラムを書くために、基本設計書を掘り下げたものであるが、共通機能については、これは存在しているようである。しかしながら、業務機能の開発単位で記述されているものが見つからない。とはいえ、詳細設計の要否は、どの現場でも問われるわけであり、工数が潤沢に確保されておらず、設計者と実装者が同じであれば、実装のコメントから詳細設計を起こすという場合も多い。きっとこの現場もそうなのであろう。ともかく、詳細設計で重要なことは、機能を実現できるかどうかを、上流工程に基づき理論立てて、実装を見通すことである。一応、論理ER図とテーブル設計書はあるようなので、これを、基本設計書のI/Oと見比べながら、いわゆる「詳細設計」を吾輩の脳内でやってみることにする。物理ER図があれば少しは楽になりそうなのだが、探した限りでは見つからなかった。いずれにしても、スケジュール調整をせざるを得ないと思うので、ちょっと相談しにいくことにする。

「スケジュール調整ですか。うーん。相談するとすれば、レインボーの浅見さんですけど、どうかなあ。仕様のことは、安藤さん。いちおう、DBAは桜木さんなので、データベースのことは彼に聞いたらいいと思います。」
 吉沢さんに教えてもらい、腕まくりをして、ものすごい勢いで自分の世界に入っているあのひとは、浅見さんという名前だったのだと知り、彼をロックオンしたのだが、ビッグイベント中なのか、珍しく離席のようである。安藤さんと桜木さんは在席だが、DBAは桜木さんということなので、まず彼に物理ERの場所を聞きに行く。横に並ぶ二人に割って入り、桜木さんに話しかける。

「すみません。ランサースタイルの山口といいますが、はじめまして。桜木さん、ですよね。ちょっとデータベースのことで聞きたいことがあるんですが。」
「はい。はじめまして。お話しはお聞きしています。よろしくお願します。」
 セルかチタン全盛の今にしては珍しく、ツーポイントの縁なしフレームをかけた、小ざっぱりした青年。育ちの良さがにじみ出ているという印象だ。吾輩が続ける。

「あのう、物理ERってあるんですかね?」
「あっ、えーと、ツールで出すようになってるんです。あとでメッセンジャーでセットアップの場所をお送りしますんで、インストールしておいてください。とりあえず今は印刷してお渡ししますね。」
 オフィスの窓側にあるプリンターから戻ってきた彼は、A3、3枚の巨大なER図を持って、僕に手渡してきた。うっ、でかいうえに字が小さい。面喰らいながら、一応お礼をするも、気になったことを思い出したので、A3の2枚目に目を凝らし、それがそうなっていることを確認して、彼に問う。

「ええと、3Aの画面、仕入データに仕入先と取引先を入れるんですけど、画面からは、両方マスタを参照して入力できるできるようになっています。なのに、仕入先マスタにも、取引先があって、マスタで登録されている取引先以外を仕入データに登録できるんですが、これはいいんですか?」