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

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

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

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

「現行踏襲!」

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

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

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

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

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

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

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

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

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

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

 吾輩はシステムエンジニアーである。仕様はまだ、把握していない。
 さて、3Aの画面は、子画面が「3Aの1」から「3Aの6」まで六つある。あわせて七画面。一つ一つ確かめて不足を埋めていくと、ほとんど書き終わったあとに、知らない仕様がわかって後戻りするということがありそうなので、まずは全体像を把握してみることにする。そもそも、WBSに引いてある五日というのが、実現可能なのかどうか。

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

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

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

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

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

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

(2)受け身というニュアンス

 吾輩はシステムエンジニアーである。仕様があるのかどうかはまだわからない。
 川沿いの立派なビルの高層階。フロアの隅の、ガラス張りで仕切られた一角が、この現場の喫煙所である。ヤニがこびりついた大きな窓に向かいメビウスを吹かす。眼下は遊覧船が川を漂い、初夏が河川敷を深い緑にしようとしている。右耳からは仕事の話、左耳からは先週末の家族サービスの話。ふと、喫煙所の外に目をやると、カップベンダーの前で、吉沢さんが両手でカップを持って、コーヒーを飲んでいるのが見えた。彼女も少し休憩のようである。さっきは気づかなかったが、濃紺のワンピースという姿に驚き、目鼻立ちもよく整っているのを再認識する。素直さのようなものが残る話し方からも、まだ二十代中盤くらいだろう。その年齢で、よくフリーランスという立場を選んだものだと感心しつつ、火を点けたばかりの、二本目を灰皿に押し付け、喫煙所を出た。カップベンダーの前を通る。

「吉沢さん。」
「あ、はい。お疲れ様です。」
「なんか、大変な仕事ですね。私、単月ですので、さっさと自分の分、片付けて終わろうと思います。短い間ですけど、よろしくお願いします。」

「ところで、フレームワークが変わったときに、全機能の実装見直しは、別スケジュールにすべきだったと思うんですが。いや、吉沢さんに言っても仕方のないこともしれませんが。」
「いえ、私もそう思ってました。でも、スケジュールが遅れているとのことで、そう決まったんです。こうなることは、なんとなくわかってましたが。」
「意見しました?」
「いえ、しませんでした。」
「なぜです?」
「私は、下っ端のプログラマーですから。」

 プログラマーという言葉に受け身のニュアンスはもう無い。リナックスが普通になるあたりまで続いていた、職業プログラマーが書いたフラグだらけのコードは、もうあまり生まれなくなっている。今日は、業務エンジニアリングにおいてでも、古き良き美しいコードに励んできたアマチュアプログラマーの文化が浸透していっているわけである。新人のころは、そういったコードを書いて、お前しか読めないものを書くなとよく怒られたものだが、今はそういったことは少ない。そして、汎用機の時代にあった、コーダーを単純作業として雇うことは現代のシステム開発ではありえない。テクノロジーが多様化しており、プログラムを単純作業にすることができないからである。そもそも、二十一世紀のプロジェクトには、そんな時間もカネもない!
 むしろ、オペレーティングシステムに用意されたAPIを呼び出して、興奮していた学生時代とは異なり、その先にある、顧客の要件を満たすプログラムを我々は書いている。仕様理解の深度や、顧客との距離はあろうが、プログラマーとして、WBSに組み込まれていたとしても、我々はシステムエンジニアーという言い方のほうが、ふさわしいのではないか。だからといって、プロジェクト全体を見渡して、最適な振る舞いをすることが、システムエンジニアーの仕事なのか、ということには議論の余地がありそうだが。

「うーん。じゃあ、吉沢さんは、この高いビルの上から、飛び降りろって言われたら、飛び降ります?」
「え?飛び降りるわけないじゃないですか。」
「それと一緒だと思うんですけどねえ。飛び降りなくてもいいように知恵を絞る。」
「確かにそれはそうですが、スケジュールや、プロジェクト運営のことは、私が考えることじゃないでしょう。今、私は、ここの現場で使っている、Mという言語を修得するのに必死なんです。」
「なるほど。プログラマーに徹していると。」
「ええ。出会って間もないのに、こんな話するのは、漱石の坊っちゃんの冒頭みたいで変ですけど、私は、もともと歯科技工士だったんです。そのまま続けてもよかったんですけど、あるきっかけで、派遣で事務をやるようになって。そこで、エクセルのマクロを作らされたんです。」
「作らされた。」
「はい。そこで作ったものが非常によくできていたみたいで、あれよあれよと、いろんなひとの紹介で、ランサースタイルにいるのがいちばんいいということになったんです。今、私は振り落とされないように必死なんですよ。」

「わかりました。もう、こういう話はしないことにします。最後にひとつだけ教えてください。」
「なんでしょう?」
「プログラムは好きですか?」
 目を見開き、真一文字に結んだ彼女の唇は、笑みのようにも見えたが、
「わかりません。でも、楽しいです。」
「そうですか。失礼しました。じゃあ、先に戻りますね。」
 坊っちゃんの冒頭を思い出しながら、自席へ歩みを進めた。いろんな人生がある。
 
 

(1)プロローグ

 吾輩はシステムエンジニアーである。仕様はまだ無い。
 前の現場の同僚に勧められて、フリーランスというものになってはみたものの、どこの現場も状況はそんなに変わらないようである。会社に属さないエンジニアーを、フリーランスという立場で、仕事を紹介してくれる、ランサースタイルというところを訪ねたのは、まだ、前の会社に在籍していたころの、風の強い、春の週末だった。

「新年度が始まったばかりなんでね、新しい案件が動き出すとか、交代要員の募集の時期ではないんですが…。比較的大きめの、終わっていないプロジェクトっていうのが、いくつかあって、そういうところから、一時的な要員ってことで声がかかっていたりするんです。」
 吾輩を迎えてくれた、営業の出水さんが、それまで、左手だけで持っていた経歴書を、両手で握りしめるように持ち替え、吾輩の目を見て話し始める。それを察し、少し言葉を選ぼうとしたのだが、
「うーん、それは、いわゆる『火消し』ってやつですかね。」
と吾輩は発してしまっていた。出水さんも同じように、少し時間をおいてから、
「まあ、そういうことになりますね。」
と口を結ぶ。

 吾輩としても、四半期の切れ目でないときに、仕事がないことも、また、こういった時期に募集がかかる案件に、何らかの問題があることもわかっている。要員にしても然りだ。サラリーマン時代も、火消しに投入され、うまく役目を終えて抜け出せたところもあれば、しばらく抜けられなくなったところもある。出水さんが続ける。
「月末に、今の会社を退職されて、即稼動をご希望ということなので、ちょっと、そういった案件ですが、山口さんは、十年のベテランでいらっしゃいますんで、しばらく、こちらで頑張っていただいて、いま、営業をかけている長期の案件をご紹介できるように進めて行きますんで。」

 『火消し』だからなのかどうかはわからないが、システムの概要や体制の説明などはなく、初日の朝に訪ねたプロジェクトリーダーとは、朝の挨拶を交わし、席はここ、やることは隣の人に聞いてくれ、この人も同じ所属の人だから、と言い残し、自席に座るや否や腕まくりをし直して、何やらすごい勢いで自分の世界に戻っていった。なるほど、やはり、スケジュールは大きく遅れているのだなと認識したが、プロジェクトリーダーとは、それっきりである。さて、ファイルサーバーとソースリポジトリーの場所、そして、プログラムのビルドと実行までの手順を教えてくれた、くだんの「同じ所属」の隣人にこのあとの段取りを問う。

「吉沢さん、実行できましたけど、WBSによると、僕の担当は3Aの画面ですかね。でも、この画面、全然動かないんですけど。」
 プロジェクトの雰囲気を探りつつ、事を荒げたくないような静かな口調を努めたが、それは、隣人が若い女性であるというせいもあっただろう。
「ああ、やっぱりそうですか。たぶん、共通関数の仕様が変わっていて、それが反映できていないんだと思うんですけど。ちょっと見てもらっていいですか。」
 今日で着任して三日経つが、この現場は火を噴いているわりには、比較的穏やかな空気が流れている。その不思議さを彼女の口調にも感じた。
「それは、お易い御用なんですけど、もう、ちょっとソース見ました。例えば、この、仕入先コードですけど、3Aの1で値をセットしている場所と、3Aの2で取得する場所が違いますね。どっちが正解なのかはわかりませんけど。」
「ああ、そういうのもあります。」
「まあ、しょうがないですね、これ動くようにすればいいんですよね。でも、ざっと見た感じ、こういうのが多そうですね。明らかに書いてないところもある。」
「ええ、作った時期によって、考え方が違ってて、うまく噛み合ってないんです。それを今、直しながら、テストしているところなんです。」
 吉沢さんの口調が、若干の焦りに変わる。とはいえ、ランサースタイルの島には、吾輩も合わせて、六人のメンバーがいるのだが、彼らからはそういった隠れた焦燥感は感じない。時折、談笑に花が咲くこともある。

「これは、私も悪いと思ってるんですけど。」
 吉沢さんが、か細い声を出して続ける。
「初めのうちは、安藤さんから渡される設計書を細かく見て、画面間のつながりとか設計書に書いてない例外処理とか、そういう疑問やつじつまがあわないところを確認しながら作っていたんです。で、途中で、三か月くらい前だと思うんですが、今使っているフレームワークだと帳票の印字方法がお客さんの要望に合わなかったり、生産性があまりよくない、とかいうことで別のフレームワークを使うことになったんです。」
「はあ、そんなことがあったんですか。」
「はい。結局、それまで作っていたプログラムを新しいフレームワークに置き換えていったんですが、それを、新規で開発する機能と並行で作業することになってしまって…。少し、体制が混乱した時期でもあったので、置き換え分も新規分もちゃんとテストすることができず、ごらんのありさまなんです。」
 ちなみに安藤さんというのは、我々の上位会社であるレインボーソリューションの設計担当の人だそうだ。向かいの島に座っている。プロジェクトリーダーは、その前の席で相変わらず自分の世界に入っている。

 吾輩はそれ以上、問うことはしなかった。このプロジェクトにはいろいろな問題はあろうが、そういったことは気にせず、今、ここにある動いていないプログラム達を、実装の美しさやあるべき形などは二の次で、とにかく、動くようにすればよいのだという、割り切りの感情を自身に浸透させようとしていた。ちょっと、煙草を吸ってくることにする。吾輩は愛煙家なのだ。