見出し画像

雑草エンジニア回想録⑰訴訟

読者の皆様は、人生で『訴えてやる』とガン詰めされた事はありますか。

私は、仕事盛りの30代前半で海外に本社のある日本法人の社長から思いっきり訴訟の脅しを受け精神疾患に成り掛ける途中まで追い込まれた事があります。そんな昔話にお付き合いいただけたらと思います。

私が6年近くメーカー子会社に勤める師匠のもとから去り、本格的に色々なやりたい案件をし出した頃、丁度今から20年前の2004年頃。

大手SIerの以下の案件の話を頂きました。

案件名:大手メーカー向けECサイト構築
環境:
・Windowsサーバ
・DB:Oracle
・Webアプリケーションサーバ:weblogic
言語・フレームワーク
・Java
・Struts1.n系
・J2EE(重量)
・JQuery

2004年当時であれば、最先端の技術も今ではお目に掛かり難い技術ばかりです。特にWebフレームワークであるStrutsは、Java言語がリリースされてWebに対応しだした数年間は非常に有用なフレームワークでした。現在では、セキュリティの問題やテクノロジーの古さから活用される事はまずないだろう。

商流は、大手SIer - 知人の会社 - 私 という至って健康的な商流であり仕事の単価も30代前半の私には高給取りの単価だったと思います。
そして、役割としてはJavaのスペシャリストとして、アーキテクチャ・環境・開発方式について若いエンジニア達に指導する立場の技術アドバイザーとして参画させて頂いた。

そして、案件の体制としては以下のような感じであった。

1.大手SIer  6名(PM,PL,SE)
2.ソフトウェア会社 6名(リーダー、若手PG)
3.パッケージ会社 4名(社長、リーダー、若手3名)
4.私1名

インフラ、ネットワークチームを除いているので、総勢20名/月程度のプロジェクトであった。

大手SIerの担当者とは幾度かお仕事をさせて頂き、高い評価と評判を得ていたのでコミュニケーションは円滑・良好に取る事ができていた。


着任当初には、全員の顔合わせとプロジェクト発足の飲み会を行い、関係者全員から笑みが零れにこやかな雰囲気があふれ出していた。

そして、着任2日目におよその案件の概要をお伺いした。要件としては、ある機器メーカ会社が中小企業向けに製造・販売している機器本体や部品をECサイトから購入できるようにする事で販路の拡大と購入者の利便性を良くする事が目的であった。

そして、システム開発にはスクラッチで開発するのではなく海外に本社を持つソフトウェア会社が開発したECサイトのパッケージを利用して開発コストと運用コストを下げようとした。体制で記載したパッケージ会社の社員は、日本支社の代表取締役とリーダーでコンサルタントとなる方と若手3名が参加された。

仲良くさせて頂いているSIerのリーダーからパッケージ会社の開発手法に関して2~3日ソフトウェア会社の若手達を含めて研修を受けて欲しいと言われ、パッケージ会社の研修に参加させて頂いた。

研修1日目にして、異常な危機感を感じざるを得なかった。


システム開発やパッケージを導入する際には、システムの全体像でどのようなアーキテクチャでどのような構成で、どのような層でどのような技術を利用するかの全体像を最初に説明するのが筋であろう。

例えば、当時のテクノロジーであれば

プレゼンテーション層:
 JSP,HTML,Css,JQuery(JavaScrpit)
 ・目的 - 画面を構成するHTMLを出力する。
サービス層:
   Struts,Java
   ・目的 -ユーザーの要求に対応するデータの取得・更新。
    トランザクション制御
データ層:
   Oracle,SQL
 ・目的:サービスに必要なSQLを発行しデータを取得・更新する。

このような簡単な分類分けでも、新人エンジニアに十分伝わるだろう。その上で、データの大まかの入出力図を1枚のパワポで示してあげれば、どの技術は何のために必要でどのような主目的を表現するのか理解できる。

パッケージ会社のリーダーは、全部小手先のクラス・メソッドだけを細々と説明しているが、全員ピンと来ていない。更に、記述形式もスパゲティ全開で到底鮮麗されたパッケージには感じなかった。

研修を終えた後、大手SIerのリーダーに直ぐに危機感を報告して、私が直ぐに触れるようにパッケージの入手と開発環境を直ぐ用意して欲しい旨を伝えた。リーダーは少々大袈裟だろうと笑いながら返答したが、その危機感が直ぐに的中する結果となった。


私は、危機感から私が過去のプロジェクトで納品した『いつものパターン』を自宅で用意し始めた。これは、新人エンジニアが読むとWeb3階層のサービス志向の基本と考え方について私自身が纏めた書籍のようなものだ。

パワポにして200頁位あるが、その当時それを読む事と私の鮮麗されたパッケージ化されたサンプルプログラム一式をやる気のある若手が読んで手を動かすと1~3ヶ月位で平均的なエンジニアに並みにセンス良く実装できるような巻物だった。

それを当時のECサイト向けにカスタマイズして、いつでも現場に納品できるように準備した。


1週間を経過した頃にパッケージ会社からパッケージ一式が手元に届き、暫定的な開発環境を構築する事ができた。早速、私がモリモリと蓋を開けていくと、

ガラクタの詰め合わせ
スパゲティの盛り合わせ

「ギョギョ! これは酷い。価値無し汁ブッシャー」

絶対に工数以内にできない

否、工数を幾ら積んでもこれを利用しているとゴールに付かない。

パッケージの構成を開けると、StrutsにJ2EE(重厚)を無理やり結合してパッケージ化しているが、世界に公開されて鮮麗されたプログラムには程遠い。
各種パッケージの用意されたインターフェイスも未熟であり、パッケージの結合密度も密結合でありとても一流のエンジニアが開発したものではなかった。

私は、こういう時には包み隠さずに嫌われても直球を投げる。そして、パッケージ会社のリーダーに直接問いただした。

私「このパッケージの中身や全容を軽く把握したのですが、これでは開発納期に間に合わない上に本当にできるのですか。中身キチンと確認しましたか?」

2004年前後当時は、大手SIerが開発・保守工数を削減できるパッケージ開発がブームだった時期だった。そして、得体の知れない海外法人の日本支社が乱立する時代でもあった。

そして、パッケージ会社のリーダーから得た返答は、

「海外で有名な大学で教授と学生が開発したパッケージみたいです。」

私「駄目だコリャ」


それ以降、パッケージ会社主体の研修やパッケージ会社の社員には嫌という程芯をついた質問を投げ続けた。
相手を貶めたいという意味ではなく、只プロジェクトを成功させて何とか形にして大金を払ってエンドユーザーの期待に応えたい一心だった。

そのため、私の質問全てに具体的な凡例をもって返答できれば、全ての障害が無くシステム開発が納品まで想像できるレベルまで到達する。だからこそ、年齢の近い別会社のリーダーや若手に嫌われても、問い続けた。

すると、パッケージ会社は私が示す具体的なサービス志向の開発手法を理解しだした上で如何に自社のパッケージ壊れた玩具の継ぎ接ぎであるかを理解しだした。それと同時にパッケージ会社の返答が一気に遅くなり問題が緩やかに顕著化しだした。


私は、この問題を解決するためにリーダーに説いた。

私「申し上げ難い事ですが、パッケージが導入・納品するレベルではなく、このままパッケージを導入すると大幅な開発遅延や最悪の場合には完成が見込めません。今からでもスクラッチ開発に切り替えませんか?」

リーダー「RedWolf君。ごめん。もう相手先の企業と契約してパッケージの入金も済ませてるんだよね。」
とにこやかな笑顔で語りかけてきた。

私「あれ、幾ら位したんですか?」

リーダー「他言無用だよ。5,000万円」

私「それって、優秀な若手エンジニア何人雇えるんですか! あれにそれだけの価値ないっですよ。」

リーダー「そこを何とかしてよ。君ならできる。」

当時はそんなドブに金を捨てるような金を払うならば、俺にマンション買ってくれよと思った。現場に近い1Kのマンションを購入してくれれば、24時間体制で最後まで責任もってやるから。

仕方なく、パッケージの活路と緊急時の逃げ道を考え出した。


私は、ソフトウェア会社のリーダーと若手5名に秘伝の巻物を伝授した。その上で、現状のパッケージの問題点と回避策も提示した。

そして、次のように提示した。

・買い物カゴ周辺 - パッケージ活用
・マスタ管理 - パッケージ活用
・商品購入 - パッケージ+スクラッチ
・パッケージに無い機能 - 原則スクラッチ

その上で、スクラッチで構築するための一連のサンプルを提示した上でどのように開発するべきかの当時の王道を若手に指導した。

別会社のリーダーと若手の6名は、本当に素晴らしく素直で人間性が高く、私が必死に利害関係に関わらずプロジェクトを推進するために最大限のノウハウを指導している事に共鳴してくれた。出会った当初は、単なる地方出身の気の良い若手達だったが、私と1ヶ月開発手法を学ぶにつれて、ノウハウを吸収してくれた。そして、新人1~3年生だった若手がどこの現場に出しても恥ずかしくない位の基本の方式について身に着いた。

そして、私が全員のスキルアップさせた事と非常に参考になるサンプルを提示し続けた結果、パッケージ会社が未経験の若手で騙しやすいと思っていたのが、1ヶ月後には全員高度な質問ができるようにまで成長した。


そして、パッケージ会社のエンジニア達は窮地に陥った。

研修から開発に進むにつれて、私を先頭に、開発者全員がパッケージの問題点を理解した上で、質問ラッシュが加速し始めた。質問は無知からくる質問ではなく私のノウハウで基礎知識が鮮麗された質問だった。

これにパッケージ会社の社員達は、完全に混乱した。
自分達で開発したスパゲティパッケージであれば、リアルタイムに修正が可能ですが、実際には海外の学生が作られた物をそのまま鵜呑みにして利用していたので、バグや機能不足でも手が打てずに対応ができなくなっていた。

そして、それと並行して自分が中心になって、SIer関係者に関係者全員がパッケージの導入によって混沌としてる主旨を何度も説明させた頂いた。

すると、その話を聞きつけたパッケージ会社の代表取締役が、ある日私の携帯電話にドスの効いた声で連絡してきた。

社長「RedWolfさん。社員から話を聞いています。うちの製品にケチつけて社員を困らせているとお伺いしました。これ以上弊社社員に関わる事やパッケージについてクレームを言うと貴方を全力で訴訟させて頂きます。

私「分かりました。こちらとしては、御社の製品が欠陥だらけでその対応策を求めて、その解決策を求めていただけでしたが。」

生まれて初めての海外に本社を持つ企業の日本法人代表取締役から訴訟要求に、その重圧に私は精神を病んだ。それまでは、プロジェクトにいる全員を守る事やその先にいるエンドユーザーのために死力を尽くしていたが、パッケージ導入企業がこれでは完成は無理だと判断した。

朝早く起きて現場に顔を出すのも嫌になって、パッケージ会社の社員達と社長がいる同じフロアーで仕事をするのに恐怖を感じた。それから一週間して休みが不定期に増えてから完全に1ヶ月自宅に引き籠った。

引き籠っている間は、全ての連絡が取れるようにしており、気分が赴いたら午後にでも出社して若手達のQAに全て応えるようにしていた。


下請け業者の立場の人間が、開発フェーズで1ヶ月もほぼ休み状態を継続していたら戦力外通告を出されて契約を解除されてもおかしく無かった。自分は営業と相談していたが、解約されても良いと感じていた。

無気力症候群に近い状態が継続していた。張り詰めていた緊張感と精神状態が伸びきったゴムのような状態になってしまった。
それでも、若手エンジニアが巻物やサンプルを宝物にしてくれて、1ヶ月に数回連絡をくれた。更には、現場のPMやPLも契約を解除することなく週1回でも良いから自由な時間に若手達に力を貸して欲しいと頭を下げられた。

精神状態は不安定な状態でしたが、週1~2回程度午後出社で纏まったQAの解消や不明点について出社したその日に全て解決して回答した。

そして開発が本格化し出すにつれて、当初から懸念していたパッケージの機能不全が問題となっていた。当時消費税が5%に上げられる時期だったので、商品を購入した際の消費税率をどこで設定しているかが問題となった。

普通だったら、以下が定石だろう。
1.データベースの消費税マスターテーブルに設定
 主キー、適用開始日、適用終了日、税率、コメント、削除フラグ
 このような項目を設定して管理する。
2.外出しの設定ファイルに定義
3.ソースファイルの定数に定義

若手達が消費税率の変更に備えて、定義を探している。パッケージ会社も探しているが対応が遅い。そして私がデスクで直ぐに調査してパッケージを構成するソースファイルの無いライブラリにハードコーディングされていたのを直ぐに見つけ出す。

私が精神的に不安定になってから、1ヶ月を経過した頃だろうか。
現場には確か7日程度しか結局出勤しなかった。
それでも、私は最後まで必要とされた。

若手達が所属するソフトウェア会社と大手SIer社員全員が、当初から私が指摘してきたパッケージの粗悪さを全員理解した上で、僅か1ヶ月程度で問題の洗い出しとその具体的解決策を若手全員に指導した事が免罪符となった。

1ヶ月を経過するとパッケージ会社の代表取締役が私を非難した事やパッケージの品質について問題がある点を大手SIerのPMから注意された上で、その会社の代表が私やソフトウェア会社の社員の質問に紳士的に応えるように求められた。

それから、私の危機感と心の痛みが解決し出したので、改めて現場に定常的に出勤するようになった。それでも、ゴールできるようにいつでも休んで良いし、残業もしなくても良いというかなり気を遣われた対応をして頂いた。

逆に戻って来てからは、無理をせずに若手達の御用聞きと関係者の問題解決担当となり、実務の実担当は検索機能程度に収まった。


数か月の開発・テスト期間を終えてサービスインすることができた。

途中リタイア寸前だった自分が打ちあげの席では、英雄扱いされており恥ずかしい状態だったのですが、無事リリースする事が出来た。
可哀想な事にパッケージ会社の社員達も打ちあげに同席していたが、バツが悪そうにしていた上に全員がやつれてお葬式状態だった。

大手SIerのリーダーに忠告として、運用以降が困らないようにパッケージを取り除く方向性で考えて欲しい旨を告げた。そのリーダーも真摯に捉え、笑顔でエンドユーザーから次期要件で予算が貰えたらゆっくりとそのようにするよという返事を頂いた。


個人1人で、関係者が対して問題がないと認識している中で、態々海外法人の日本支社社長とその社員に喧嘩を売りたいと思うだろうか?

私が、誰よりも多くのオープンソースを解読し、20代から優秀なフレームワークやアーキテクチャを経験してきた。勇気を振り絞って間違っている事は間違っていると本音を語らなければ、それ以上の大炎上が待ち構えているのが容易に想像できているからこそ、嫌われてもやるべき事をやり切った。

それから数年した頃だろうか、ECサイトは数回の開発を得て進化しながらポンコツパッケージの排除に成功した。そして、私とやり合ったパッケージ開発会社の海外法人は日本支社も含めて気が付けば倒産していた。

2024年現在そのECサイトを確認したが、20年前とデザインや実装方式は大きく変化しているが全体の機能は20年前に開発した面影が今でも残っている。

伝えたかったのは、訴訟問題になる事や精神的に追い込まれることがあってもIT業界に勤めて高給取りになるためには、嫌われても正しい道筋をつけなければならない。今まで多くのプロジェクトに参加してきたが、全員が全員出来る人で囲まれたGreatな環境はそう多くはない。怖くても失敗を恐れずに問題点と具体的解決策をもって周囲の関係者と話し合い、行動する事が一番大切だと思う。

IT業界に勤めるエンジニア達が雑多な環境に埋もれずに、明日への成長を夢見て周囲の人に感謝されるエンジニアに成られる事を期待して締めとしたい。


いいなと思ったら応援しよう!