今回はプログラマー向けのグチです。
ここ半年ぐらい、Cobolのメインフレーム環境からマイグレーションしてJavaに移行したシステムに携わっていました。
そのシステムは数十億円の大金と膨大な人と時間がつぎ込まれて作成されたものなのですが、出来上がったのはとんでもないク〇プログラム(;^_^A
いや、流石にシステムのベースはちゃんとしたJavaプログラムで、勉強になる部分もあります。
ただ、膨大なビジネスロジック部がJavaというよりCobolなんです。
これがどういうことかというと、Cobolの記法は慣例的にすべて大文字なのですが、Javaになっても大文字のまま。
型もインスタンスも変数も定数も全部ただの大文字で、しかも長いとか、ぱっと見、地獄ですよ(-_-;)
また、膨大なビジネスロジックといえば聞こえはよいですが、Cobolのコピー句(※C言語でいう構造体的なもの)以外は同じような処理が、何度も何度もダラダラと書かれています。
時代背景からオブジェクト指向の概念もないし、できるところはリスト構造でまとめて書くという概念も希薄なんですね。
クラスの大半がファイルを読み込んで、少し修正して、吐き出すだけなのに、何百行使ってんねん!とエセ関西弁ツッコミがでてしまいます。
Cobolチックな変数の型を独自に作成してしまっているので、Javaの便利なメソッドが一つも使えず、Cobolの命令をメソッドにしたものを使います。
しかもリフレクションとかpublicなインナークラスを乱用しまくり、Javaと切り離せないはずのオブジェト指向はないがしろ。
その他にもVSAMやらSAMやら、PCにはないはずのメインフレームの仕様が無理やり再現されてたりします。テープも現役です。
他にもいっぱいあるんですが、兎に角、Java上で動作しているというだけで、純粋なJavaプログラマーが目を疑うような、とっても不思議なプログラムなわけです。
上層部もこれがJavaっぽくないプログラムだということは認識しているのですが、優秀だとしてもJavaはおろか、オブジェクト指向すらまともに理解していない方々に、まともな判断ができるわけもなく。ただコンサルに言われるがまま進んでしまった感じ。
私は元々、「このJavaっぽくない〇ソソースをまともなJavaに直していく。」ということで雇われたはずでしたが、上層部が早々に諦めて、現状のまま改修していくことになったため、あまりやることがない状況が続いていました。(おかげでかなり勉強出来ました(^^)v)
確かに、現在動いているシステムの改修は続けていかないといけないので、その判断自体は短期的には間違っていないと思うのですが、このまま突き進んで、これからどうなるのか興味があります。
ただでさえ高齢化と不人気でCobol技術者が少ない時代。Cobolの知識を学びたがるJava技術者がどれだけいるのでしょう。
Javaの一般的なメソッドやオブジェクト指向など汎用的な知識が身につかない環境だと気づいた時点で、若い技術者が逃げてしまうんじゃないかと心配になります。
何のためのマイグレーションなのか。まあ、私には関係ないことなんですけどね。
それでも、私としては、すっごく勉強させてもらったことに恩を感じているので、数年は我慢して恩を返していくつもりでした。
しかし、この度、派遣は一斉に契約終了とのこと(@_@)
マジか・・・!
折角、慣れてきて、これからというところだったのに・・・・
で、でも正直、このシステムにどっぷり漬かる前に客先都合でアウェイできるのはラッキーなわけで、複雑な心境のまま次の職場に異動です。