IT (情報技術) 学習記録

主に情報処理技術者試験等の、IT・ICT系、または電気通信系資格の学習記録を中心に。働き方、世の中も。

COBOLを悪者にすると結局ますますIT業界から人が去っていく悪循環(COBOLでの開発保守の経験もない人がCOBOL不要とか勝手に言うなよ)


COBOLを悪者にすると結局ますますIT業界から人が去っていく悪循環(COBOLでの開発保守の経験もない人がCOBOL不要とか勝手に言うなよ)


まず、結論から先に言うと、

  • COBOLというプログラミング言語が悪いわけでも不備があるわけでもない

  • むしろ、優れた後方互換性によって、数十年も前のプログラムが現在でも稼働しているという特徴がある

  • 一周回ってCOBOL技術者が不足してしまったため、かえって高価値になってきている

  • COBOLで書かれたプログラムが、現在でも社会インフラを支える大企業・官公庁システムにおいて、数千万ステップから数億ステップは稼働しているし、この状況がすぐに変化することはない

したがって、

COBOLは若手が覚えるべきではない」

とか、

COBOLはもうすぐなくなる」

......と言った言説は、的を射ていない。


私が情報系の学生時代だった25年以上も前から、「COBOL」なんて古い言語はなくなるから、「C言語」を学習すべきだ、と言われていた。

(当時はJavaはまだ生まれたばかりで浸透しておらず、オブジェクト指向も同様に浸透していない時代だった)

学校の講師の普通にそんなことをいう有様だった。

当然、世間を何も知らない学生でしかない私は、それを真に受ける。「そうかぁ、COBOLなんて使われなくなるんだ」

だから、当時は珍しかった「C言語」「アセンブラ」を学習できる専攻コースに進んだ。

(確かに、学生時代に「C言語」「アセンブラ」といった低レベル言語系を学習できたのは、自分にとっては財産だったと思っている)

※ここでいう低レベル言語系とは「機械に近い」という意味である。

私が就職した当時は、折も悪くバブル景気が崩壊した直後で、「就職氷河期」に入ってすぐだった。

そんな中、いま勤務しているユーザー系のシステム会社に入った。

新入社員研修で、みっちり仕込まれたのが、COBOL、および、それに関係するドキュメントの作成だった。

採用面接のときに、「C言語アセンブラをやってきました」とアピールしたのに、いわゆる汎用機系の研修に回されたことは、当時、とてもショックで、「会社を辞めよう」かと本気で思った。


紆余曲折もあったが、その後、実際の稼働中のシステム保守や、いくつもの大規模な新規システム開発に携わった。

かなり昔から業務に情報システムを組み込んできたユーザー企業だったので、COBOLプログラム資産はかなりの物量があった。

そして、保守にしても開発にしても、プロジェクト規模が大規模化する傾向があった。

プロジェクトが大規模ということは、ユーザー企業の業務特性や習慣など、まったく知らないプログラマーが短期間に大量に集められ、システムを構築せざるを得ない、ということである。

(日本的なIT業界の多重請負構造の是非などはここでは言及しないが)

また、開発が終わると長い保守フェーズに入るわけだが、保守としてプログラムを修正する人は、開発当時の人とは違う。

これが当たり前の世界。


こういう状況にあって、COBOLは、以下のようなメリットをもたらしてくれた。

  • 記述や表現が「不自由」であるため、かえって人によるクセが出にくく、誰が組んでも設計さえちゃんとしていれば、同じようなプログラムソースコードになる

  • データ項目ANK名などの管理がしっかりできていれば、後日、第三者がプログラムを追跡したり、検索したりすることが容易である

  • 記述や表現は「不自由」だが、1バイト以上の文字データや数値データの扱いは、きわめて低レベルにできる(逆に言うとプログラマーが実データを低レベルに意識しないと書けない)

  • 上記の特性があるため、「見積もり」の誤差が出にくい


特に一番目のメリットについては、昨今、COBOLではないモダン言語による大規模開発プロジェクトでは、フレームワークで吸収しようとして、それがうまく行かず、炎上しているのを、けっこう見かける。

趣味で書くプログラムではなく、仕事でつくるプログラムであり、使うのは自分ではなく、ユーザー企業(のユーザー)である。

そこに対して、「COBOLの仕事は楽しくない」「クリエイティブじゃない」とかいう意見は、まぁ、わからなくもないが…。

でも、それは個人の「仕事」に対するスタンスの問題もあるので、それが即「COBOLの仕事は若手にはやらせるな」というのは、暴論だと思う。

私は、システム開発保守の仕事で30年近い経験がある訳だが、このような「COBOLの仕事は若手にやらせるな」などという暴論を目にすると、本気でIT業界から去りたくなる。

本質的ではない、バカみたいな暴論が、まかり通ると、その業界の現場で働く人のモチベーションが低下する。


私は近年、IT系以外にも軸足を持ちたくて、電気系・通信系の学習をしている。

例えば電気系の世界で、「あそこの会社は誘導モーターを使っているから行きたくない」などという技術者がいるだろうか。

まぁ、ホテルだとか商業施設だとかは、電気系以外にもボイラー設備があるから、そこの設備管理はやりたくない、とか、そういうことはあるようだが…。


冒頭でもいったように、いまだに大企業・官公庁を中心に、金融、電気・ガスなどの公共事業といった、社会を支える重要なシステムは、COBOLで書かれたプログラムで稼働している。

この事実を無視、もしくは、歪んだ目で見て、開発現場の経験もない「日○コンピュータ」などの記者さんが、「COBOLの仕事は若手にやらせるな」などと書くことによって、経験のある自分でもモチベーションが下がるのだから、経験のない若手が「COBOL」の案件に関係する会社や部署に行かされたら、辞めよう、という気持ちになるのも無理はない。

COBOLとは、良い面、悪い面、含めて、どういう言語なのか。または、適用プロジェクトによって価値はどう変わるのか。

そういったことを、自分の経験としてとらえたうえで、「COBOL案件はお断り」と言うなら、全然問題ない。

問題なのは、経験もないのに、まことしやかに上記のような言説を吹聴する輩である。


ちゃんとした経験を持つ人であれば、たとえ個人的には「COBOL案件はお断り」であるとしても、決して他人にそれを強要することはないだろう。


俗に言う「コボラー」とは、COBOLを知っている人のことを指すのではない。

COBOLしかやったことがないし、それ以外知らないので、わかりません」

という、勉強をしない人のことを指す。


「勉強をしない人」が、嫌われるのは当然のこと。

それこそ、COBOLとはなんの関連もない。

他の言語の技術者だって同じである。


また、一方で、ユーザー企業から重宝されているCOBOL技術者もいる。

大企業や官公庁で情報システム化が進んだ当時、「業務をシステムに落とせる人」が、大活躍した。

その当時、いまでいう超上流工程である「要件定義」「検討」から話ができて、それを設計書やプログラムにまで落とし込みができるスーパープログラマーがたくさんいた。

その時の開発言語もまた、COBOLだったため、現在、大企業や官公庁で稼働しているCOBOLプログラムには、「業務をシステム化した」ロジックが大量に含まれている。

いま現在、COBOL技術者に望まれているのは、単なるプログラミングができるという側面ではなく、COBOLプログラムに大量に含まれている業務ロジックを正しく扱える能力ということでもある。


COBOLを悪者にすると結局ますますIT業界から人が去っていく悪循環(COBOLでの開発保守の経験もない人がCOBOL不要とか勝手に言うなよ)

くりかえして言うが、「COBOLなんてなくなるので勉強する価値はない」という誤った言説は「25年以上前」からずっと言われ続けてきたが、現実には、「COBOLはいまでも大量に稼働していて社会を支えている」のである。


kf7757.hatenablog.com


kf7757.hatenablog.com


kf7757.hatenablog.com