Enter■ふつーのプログラマです。企業内Webシステムの要件定義から保守まで何でもやってる、ふつーのプログラマです。2010/11/16高学歴で長い経験に自信を持つエンジニアは他人の話を聞かなくなる、というのは広く世に知られた真理の1つである。K自動車ICTシステム部の三浦技術担当マネージャは、そのようなエンジニアの生き見本のような人だった。私が聞いた三浦マネージャーの最初の言葉はこうだ。私の名前は川嶋ミナコ。横浜市内の某所にオフィスを構えるシステム開発会社――いわゆるベンチャー企業というやつ――に勤務しているエンジニアだ。最近は受託開発の案件はほとんどなく、大手ベンダやエンドユーザーのシステム部門に常駐して開発を行うことが多い。K自動車への常駐もその1つだった。部品調達システムの大規模なリニューアル中で、あちこちから人を引っ張ってきている。猫の手も借りたいらしく、うちのような弱小ベンチャーにも声がかかり、たまたま手がけていた案件が一段落した私が駆り出されたというわけだった。部品調達システムは、10年以上HP-UXで稼働していたシステムだったが、ハード・ソフトともにそろそろ限界がきていた上に、システムを作成したベンダは倒産したらしい。当初はそのまま保守を継続してくれるベンダを探したらしいが、ろくな仕様書もなく、ソースの管理さえ怪しいとなっては、どこも引き受けてくれるところがなく、リニューアルとなったようだ。元のシステムはC言語とInformixで作られているが、新しく作り直す際にわざわざ踏襲する理由は何もない。データベースはOracle、開発言語はJavaとなった。UIには、一部Flashも採用されている。私たち常駐組は、大きな会議室を1つつぶして作られた臨時開発室に集められて開発をしていた。開発PCはログイン時に環境が初期化されるようになっているので、決まった席はない。ミーティングや休憩用としては、別にスペースが用意されているので、臨時開発室は比較的静かだった。そのせいか、隣の会議室の声が聞こえてくることがよくある。私の常駐は4月からはじまったのだが、隣の会議室は新人研修会場だったようで、お定まりの社会人マナーや電話応対、グループディスカッションなどが連日行われていた。私はだいたい壁に近い席に座ることが多かったので、よく隣から漏れ聞こえてくる内容を聞くともなしに聞きながらキーボードを叩いていた。5月のゴールデンウィーク明けのこと。隣では新人研修が一通り終わり、システム部門の研修が始まったようだった。誰かがJavaを教えている。地声なのか熱くなっているのか、講師の声はやたらと大きく、いつもより研修内容がよく聞こえていた。唐突に、その言葉が響いた。私は思わず手を止めてしまい、壁を見つめた。隣に座っていた男性プログラマも同じように手を止めて、まるで隣の会議室が見えるかのように壁をまじまじと見つめている。「オレはもう20年以上システム業界にいるけどな、その長い経験から言うと、オブジェクト指向なんてものは、理論としては面白いけど、およそ実用的とは言い難いものだな。GUIのコンポーネントとかはオブジェクト指向に基づいて作られているようだから、そういうツールとかを作る人には必要なものなのかもしれない。君たちがいずれ作ることになる業務アルゴリズムにはまったく無縁のものだと思ってもらって間違いない。この業界、オブジェクト指向でなければダメ、というような風潮がまかりとおっているけどな、オブジェクト指向なんか本当に使っている人はほとんどいないよ。オレも少し勉強してみたけど、カプセル化とかポリ何とかとか、どうにも利点が理解できなかったね。実際、実業務で使ったことなどないしな......」おいおいおいおい。私は思わず壁の向こうの顔も知らない講師に突っ込んだ。いうか、ポリモーフィズムも理解していないくせに、オブジェクト指向を分かったように語らないでください!「......例えば、サンプルの3番だな。ほら、わざわざクラスをnewしてるだろ。何やらホワイトボードにキュルキュルと書き込む音。「......こんな具合に、staticを使えばインスタンス宣言などしなくてもいいんだよ。staticが同じVM内で共有されるってことを分かっていますよね?「そもそも自分でクラスなど作る必要はほとんどないしな。――いやいやいや、そりゃ違うでしょう。staticしか使わないとか言ってるの?「4番のサンプルもそうだな。これよく見ると、おかしいのが分かるね。forループの中でインスタンス生成しているだろう。このサンプルだとループが10回だからいいけど、1万回のループだったら1万個のインスタンスが生成されることになるわけだ。どこでもインスタンスの削除が書かれてないわな。――あのー、GCという便利な存在を知らないのでしょうか?「オブジェクト指向の本とかサイトとか見ると、さぞすごいもののように書かれているけど、ないからないから、そんなこと。20年選手のオレが言うんだから間違いない!」もはや突っ込む気力が失せてきた。この講師さんが勝手な思い込みをしているのはいい。汚れを知らない新人たちに、おかしなバイアスをかけてしまっていいのだろうか。三つ子の魂百までも、というか、最初に刷り込まれることって大事だと思うのだけど。それとも、今まで気が付かなかったけど、この会社のコーディング基準には「staticを積極的に使い、インスタンス生成は可能な限り避けること」とか書かれてるのだろうか。気付くと、いつのまにかこちらの部屋のプログラマが全員手を止めて、隣の講義に聞き耳を立てていた。常駐メンバーの間では、特に誰がリーダーということは決められていなかったが、リーダー的存在として私たちが頼りにしていたのは、K自動車の子会社であるKシステムエンジニアリングの平良さんという30代の男性エンジニアだった。「自社には机がない」と笑いながら言っていたように、10年以上ICTシステム部に常駐していて、社内システムのメンテナンスや運用に携わってきたという。部品調達システムについても、システム部の社員の誰よりも詳しい。開発体制図上のプロジェクトマネージャはICTシステム部の社員だが、私は顔を見たこともない。平良さんが事実上のプロマネだと言っても過言ではない。K自動車ICTシステム部の若手社員である小宮山さんも机を置いていたが、この人はスケジュール管理とか勤怠管理とかをやっているだけで、プログラミングのことは分からないようだった。その2人が小声で話し込んでいる。平良さんは苦虫を噛みつぶしたような顔だった。平良さんが隣の部屋の方を見ながら言っている。平良さんの方がずっと年上なのだが、小宮山さんに対して丁寧な言葉遣いだ。親会社の社員だからというわけでもない。平良さんは10歳以上年下のメンバーに対しても横柄な態度を取ったことがない。小宮山さんは状況がよく飲み込めていないようだ。「いやあ、ヒロシさんが関西の方へ長期出張してるでしょう。「でもあれじゃあ研修にならないでしょう。平良さんはあくまでも穏やかに、だがはっきりと言った。平良さんに抜けられては困りますよ」そう言いながら顔をこちらに向けた小宮山さんは、全員に注目されていることに気付いて、少し大きな声で言った。「はい、仕事を続けてくださぁい」メンバーたちは一斉にキーボードに注意を戻した。私もEclipseの画面に顔を向けた。平良さんと小宮山さんは少し声を落としてしまったので、会話の内容が私たちの耳に届くことはなかった。このときの私は、平良さんが目の前のプロジェクトには関係がないだろう新人さんたちの研修内容に、なぜここまで懸念を示すのかがよく分からなかった。長くて半年ぐらいしかここにいない私と違って、平良さんはこれからもずっと常駐を続けるのだろうから、いずれ彼らと仕事をすることもあるに違いない。そのときに、あまりにも使えないコードを書くようでは困る、ということだろうか。未熟でも、相手は親会社の正社員でもあるのだから、正面切ってしかり飛ばすわけにもいかないだろうし。私の考えが間違っていたことは、翌月になって明らかになった。(続く)はじめまして。リーベルGと申します。不条理なことがある、というよりは不条理なことの方が多い気もするIT業界。その奇妙な世界の物語を小説形式で掲載させていただきます。この物語はフィクションです。実在する団体名、個人とは一切関係ありません。特定の技術・製品の優位性を主張するものではありません。20:12ひょっとして、このマネージャーのモデルは、あの釣り名人さんかな?ともあれ、続きを楽しみにしてるっスよ。22:42ハンドルに惚れました。貴方の行くハムレットはどんな街ですか(^^;;いろいろあって荒れやすい話題ですが、過去の不幸を乗り越え今度こそ建設的な会話が行われることをお祈りしております。Terror)の日々とは思いますが、貴方の御活躍と御健勝を願っております。02:29レモンTさん、こんばんは。17:49「オレはもう20年以上システム業界にいるけどな、その長い経験から言うと、オブジェクト指向なんてものは、理論としては面白いけど、およそ実用的とは言い難いものだな。」まったくその通りだと思う。現場ではオブジェクト指向を使っていない。19:23オブジェクト指向を使ってる現場もあれば、使わずに済ませられるので使ってない現場もあるって感じでしょうか。参考にしている」ってー場合もありますよ?X-WindowsのGTKがそうでした。どちらにしても、いくつかあるツールのうちのひとつ、って感じですね。ツールを作った人が想定している使い方に素直に従っていれば皆さんそれなりにハッピーなんですけど、オレオレ流に勝手解釈して使う人が出てくると死人が出るんですよね。「暖まって乾燥するから」と、濡れたペットを電子レンジに入れてチンしてしまう可能性はどこにでもあるんでしょうねぇ・・・。23:49たとえ継承やポリモフィズムを書籍で学んだところで、すぐに良さを実感することが出来ない所がOOPの難しさかと考えます。使い古されたExcelフォーマットにタイピングしただけでSE・設計者となってしまっている、しかもPGを組めない人にとっては超えられない壁かも。「オレオレ流解釈」ってありますね。インターフェイス内のメソッドを個人の判断で勝手に増やされたときは焦りました。Framwworkまわりはちゃんと説明しないといけないですね。OOPを知っている(つもりの)人間も反省しないとです。21:11他人の作ったPGと連携する場合にオブジェクト指向の偉大さに気が付くのかもしれません。逆に言えば力業でもどうにか出来てしまうのがIT業界ですので、オブジェクト指向の便利さに気がつけない人がいるのは事実ですね。考え方自体は昔からあったような気がするんですけどねえ。21:27これ、ぜったいモチーフはアレでしょ?意地悪だなあ。