COBOLは時代遅れ?エンジニアの墓場?メリットあるの?と考える方も多いのではないでしょうか。
このページでは、COBOL案件に投入された若手エンジニアの方や、現役のCOBOLエンジニアに向けて、将来性、需要、単価などについてご紹介していきます。
Contents
COBOLとは
このページをご覧になっている方の多くは既にご存知かもしれませんが、改めてCOBOLについて整理しておきたいと思います。
COBOLは、1959年にアメリカで開発された国際的標準化された言語で、正式名称Common Business Oriented Languageの頭文字を取ってCOBOLと呼ばれるようになりました。開発年を見てわかる通りかなり歴史の古い言語で、開発された当時からその内容は変わっていません。
元々は汎用機(メインフレーム)で事務処理をするために開発され、現在もなお、銀行や証券会社などの金融システム、官公庁など公共系システムに多く導入されています。
もともと事務員用のプログラミング言語のため、エンジニアの力量に左右されず、誰が書いても比較的高い品質を維持できるというメリットがあります。そのため、大規模プロジェクトで導入される機会が多くありました。
TIOBE Softwareが毎月発表している、プログラミング言語の人気度、成長度指標である「TIOBE Index for May 2021」では、COBOLは29位にランクインしています。
全体を占める割合は、1位のCが13.38%であるのに対し、COBOLは0.50%と極めて少なく、この結果からエンジニアからの人気、言語としてのシェア成長率はあまり高くないということは理解できます。
COBOLerに需要はあるの?
では、COBOLしかできないエンジニア、通称COBOLer(コボラー)に需要はあるのか。答えはイエスです。
理由は、現在でもCOBOLを使用したシステムが稼働している現場があること、そしてCOBOLを使えるエンジニア数自体が少なくなり、市場での希少価値が高いためです。
例えば、レバテックフリーランスでCOBOLを必須スキルとする案件を検索すると、2021年6月現在で166件の案件がヒットします。
金融業界や官公庁などの業界では現在もCOBOLをメインとしたシステムが多く取り入れられているということです。
近年新規システム開発で導入されることは少なくなりましたが、過去にCOBOLで作成されたシステムの保守や改修は必要になるため、COBOLを扱うことのできるエンジニアはある程度需要があります。
ただし、COBOLさえできればOKという案件はあまり多くありませんつぶしが効かないという点では、CやJava、pythonなどのメジャーな言語とは大きな違いです。
今後COBOLはどうなるのか?
COBOLは私たちの生活や社会を支える金融や、政府関連のシステムに導入されている言語であるため、今後も需要がなくなることはないでしょう。
しかし、徐々に減っているのは事実です。
近年COBOLの既存システムのオープン化が徐々に進んでおり、それと同時にメジャーなJavaなどの言語への置き換えをするケースが増えているからです。
大手企業はなぜCOBOLを使い続けるのか?
上で書いた通り、COBOLで作成されたシステムを現在も使用している企業は多くあります。
しかも、金融機関では大手のメガバンク、誰もが耳にしたことのある交通系機関、官公庁など、いわゆる大手企業や団体などでメインシステムとして使用され続けているのです。
なぜ大手企業はCOBOLを使い続けるのでしょうか。理由は、COBOLの特徴と導入の歴史にあります。
まず、COBOLのメリットについて整理します。
データ処理が高速かつ正確でセキュリティも比較的高い
金融系では数値が正確であることが重要ですが、金融系のメインフレームは、10進演算ライブラリが入っているため、演算の誤差が生じないとされています。
また、誤差を生じさせないような処理を追加で記述する必要がないため、処理が高速と言えます。
更に、エンタープライズ向けのメインフレームであるがゆえに、セキュリティはオープン系システムに比べると高いと言われます。
多く使われるOSであればあるほど、その分利用者が多く、悪さをするハッカーも多くなりますが、メインフレームはそもそも利用者数が限られます。
また、コードを書き換えようにもCOBOL知識が必要になりますし、COBOLプログラムは100万ステップにも及んでいるケースが多いため、誰にも解読できない状態となっています。
この点でハッカーに攻撃される可能性は低くなるのですね。
どのOSにも一応適応可能
COBOLには、汎用機(メインフレーム)のためのプログラム言語である「汎用COBOL」と、オープン系システムのためのプログラミング言語である「オープンCOBOL」があります。
オープンCOBOLはどのOSでも適応可能という大きなメリットがある上、OSを選ばないため、他OSへの移植も比較的容易です。
メジャーなオープンCOBOLには、UNIXベースのシステムに対応可能なUNIX-COBOL、クラウドやモバイルなどにも対応可能な、富士通社が開発したNet COBOLがメジャーです。
この移植性が最も重要になるのは、古いCOBOLシステムの内容を変更せず、サーバーだけをリプレースする場合です。
理論的にはOSが変わっても少ない工数でプログラムを移植することが可能になります。
いわば延命措置ですが、企業のIT投資の姿勢によってはこういったケースも出てきます。
信頼性が高いと言われてたが、今では負債になりつつある
近年はシステムのオープン化が進み、C/S(クライアント・サーバー)システムが多く普及してきていますが、COBOLが開発された時期と同じ頃、日本の高度成長期の1950年代~1980年代は汎用機、メインフレーム、ホストコンピューターといった基幹システムに使用する大規模コンピューターが急速に普及し、その開発言語としてCOBOLが導入されました。
そして50年以上経った現在でも多くの企業がそのシステムを使い続ける理由は、長年蓄積してきた情報資産を活用するため、また、安全安心な状態を維持するためです。
また、大規模なシステムの移行にはコストとリスクが付いて回ります。コストとリスク同時に抑えるために、既存の基幹システムを保守開発するという企業が多くなっています。
日本の場合、後者に当たる企業が多い傾向にあります。追加、追加を繰り返し、100万ステップに膨れ上がったCOBOLプログラムの存在はなによりの証拠でしょう。
こんな状態でどのようにして、システムの刷新などできるでしょうか。もはや誰もコードの中身を把握していないのです。
資産ではなく負債と言って良い状態です。
これがいわゆる「2025年の崖」というものです。詳しくは後述します。
COBOL案件の特徴
COBOL案件は、証券システムの保守、自動車メーカー向けのシステム開発支援、金融業向け業務システム保守、固定資産管理システム開発、生保業界向けシステム改修など、金融、官公庁関連の案件が多くなります。
COBOLのスキルが求められる案件は、大きく3つに分けられます。
既存システムの運用業務
運用業務は、既存システムの日々の稼働状況の監視、障害発生時の対応等を担当します。
問い合わせ対応や、障害発生時には保守チームとの連携も必要になるため、一定のコミュニケーション能力が求められます。
また、VBA、SQLなどを使った開発経験、サーバーやネットワークについての知識が必要とされることもあります。
既存システムの保守開発業務
保守開発業務は、既存システムを正常に運用していくための維持管理や、新たな機能追加業務を担当します。
保守業務は障害発生時に、障害の原因を究明し、今後そのトラブルを回避するための対策を立てます。
また、開発業務は新たな追加機能をシステムに導入する業務を担当するので、COBOLのプログラミングスキルを活用しやすい仕事です。
COBOLを使用した開発経験や、プロジェクトでの開発経験などが求められます。
既存システムのオープン化業務
近年、COBOLで開発された汎用システムをオープン化する案件が増加傾向にあります。
汎用システムではメインフレームを使用しますが、オープンCOBOLではWindowsやLinuxなどのコンピューターシステム上での開発が可能になります。
また、オープン化と同時にCOBOLではない他言語に置き換える変更が行われることもありますが、COBOLはメインフレームだけではなくオープンでも使用しやすい環境になってきているため、今後も案件は継続的に出てくることが予想されます。
このほかにも、データ授受業務などのために他システムと連携させる仕事が発生することもあります。
基本的にCOBOLの案件は短期ではなく、長期のものが大半を占めます。
よって、一度案件を受注できれば、当面の間は仕事に安心して集中できるでしょう。
COBOL案件の平均単価
COBOL案件の平均単価は50~60万円が相場で、年収にすると400~600万円のエンジニアの平均ラインです。
仕事内容自体が保守や運用がメインとなることが多いため、COBOLのスキルだけで高給を狙うということは、正直難しいでしょう。
求めるスキルがCOBOLのみの案件は、単価が55万円程度までのものがほとんどです。一方、COBOLだけではなく、Javaでの開発経験など、別のスキルも併せて必要とされる案件の場合、単価が60~70万円程度になるものもあります。
とはいえ、上でも書いた通り、COBOLの技術者は少なくなりつつあります。
今後もCOBOLが突然なくなることがないということが分かっている以上、COBOLを使えるエンジニアの価値が上がっていく可能性は無くはなく、上流工程の開発経験や運用や保守のリーダー経験などがあれば、さらにエンジニアとしての価値が上昇する可能性は高まるでしょう。
ただし、収入を上げるという面では、COBOLだけではなく、他の言語での開発経験も積んでおく必要がありそうです。
COBOLは無くなる?今後の展開予想
COBOLは今後、他の言語に取って代わられてしまうのでしょうか。
結論から言うと、消えることはなく、進化しながら引き続き活用される言語として存続すると考えられます。
年数が経つにつれて肥大化、複雑化、ブラックボックス化などの問題が発生し、最新技術を適用させにくくなってしまったシステムの事を、「レガシーシステム」と呼びます。
COBOLを使って作られた汎用システムはレガシーシステム化してしまっているものが多くありますが、経済産業省が2018年に発表した『DXレポート~ITシステム「2025年の崖」の克服とDXの本格的な展開~』をきっかけに、レガシーシステムはDX(デジタルトランスフォーメーション)の足かせとなるリスクがあるという見解が広まり、モダナイゼーションを急ぐ企業が増えています。
※モダナイゼーション…蓄積した情報資産を活かしながら最新のシステムに置き換えること
なぜ、レガシーシステムは問題なのでしょうか?具体的には以下の点が問題だと言われています。
- 古参のエンジニアにしか改修できない
- エンジニアが定年退職していくことで、設計時の詳細を知っている人材がいなくなり、ノウハウが失われる
- システム延命のための費用が高額になる
こういったシステムは手遅れになる前にモダナイゼーションが必要となります。
ただし、レガシーシステムを刷新することは必ずしも、COBOLから別の言語に置き換えることではありません。
COBOLで書かれたものを例えばJavaで書き換えることで、万が一資産が消失してしまえば、企業にとっては多大な損失となります。
よって、今後数年はレガシーシステムのモダナイゼーションのためにCOBOLを使えるエンジニアのニーズは高まり、その後はCOBOLの需要が急に増えることはないものの、細く長く活用され続ける言語になると考えられます。
COBOLerになると人生終わるのか
一方で、エンジニアにとってのキャリアという側面から見ると、COBOLだけでやっていくことはなかなかにリスキーです。
若手エンジニアがコボラーになることはお勧めできません。
なぜならば、上記のように他言語と比べて案件数が少なく、単価もあまり高いとは言えないからです。これは、COBOLの需要が減少してきたことが主な理由です。
そして、モダナイゼーションが進むといっても、実際に取り組む企業数は未知数です。特に今はコロナの影響が大きいですから、情報システム投資を減らす企業も多くなると予想されます。
ですから、今後COBOL案件の増加を期待してはいけません。単価も向上も見込み薄です。
他言語の案件に目を向ければ、好条件の案件はゴロゴロしています。ただでさえエンジニアの人手不足の状態なのです。リスクの高いCOBOLerをやる必要はあまりありません。
また、言語体系としても主流のC系とかけ離れたものであり、オブジェクト指向ですらないCOBOLプログラムも世に溢れていますので、ハッキリ言ってコボラーをやっているとプログラマーとして全く応用が効かなくなります。
実際に私が見た限り、COBOLプログラマーは待機要員になるケースが多いです。
コボラーが生き残る道は、業務系の知識を身に着け、オープン系の設計フェーズにSEとして参画することです。
大企業であれば、PMや管理職に進む道もあるでしょうが、プレイイングマネージャーを求められる中小企業では、設計フェーズに活路を見出すことでしか生きる道はありません。
以上から、COBOLだけに限定したキャリアを積むことは、エンジニアとしてのキャリアを狭めてしまうことになります。
COBOLだけに特化するのではなく、Javaなどのオープン系技術も併せて身に付けておきたいものですね。
COBOLerから脱却するために身に着けたいスキルとは?
COBOLの今後の展開予想を見ていただいてわかる通り、COBOLだけできればいいわけではないことはお分かりいただけたでしょうか。
そこで、身に付けておきたいスキルをいくつかご紹介します。
まず、一般論で書くと以下のスキルが身に着けたいところです。
- 業務系スキル
- 要件定義、基本設計スキル
- マネジメントスキル
しかし、これらは実践を通じて得られるものですから、COBOLerから脱却したい人にとってはニワトリが先か卵が先か問題となってしまいます。正直、おススメしても意味がありません。
ですから、私のエンジニア人生を通じて実務的に役立つと感じたものから、自己学習でできる範囲内のものをご紹介します。
具体的には以下の通りです。
- Oracle系やJava言語などの民間資格
- Pythonなどの新しいプログラミング言語
資格の勉強は大変有効です。成果がキッチリと把握できるからです。
自己学習で必要なことは、成果がチェックできるか?してもらえるか?です。そうでなければ、グダグダになって終わってしまいます。
そして、資格は取得できれば職務経歴書に書けるのも非常に大きなメリットです。資格が評価され、新しい現場に入りやすくなるからです。
では、プログラミング言語の学習はどうか?ですが、成果として形にできれば非常に大きな意味があります。面接などで提示できれば次の現場に入りやすくなることは間違いありません。
最近では、
などのエンジニアが教えてくれる手厚いプログラミングスクールが生まれていますので、多少の費用はかかりますが、選択肢に入れるのが良いかと思います。繰り返しになりますが、本を買ってプログラミングを学習しても挫折が待ち受けている可能性が高くなります。また、資格の勉強だけでは本当に実践に生かせるか分からないので不安という方もいるでしょう。
そのため、プログラミングスクールで実際のエンジニアから学ぶ機会を持つという意味は大きいと言えるでしょう。
まとめ
上記のまとめです。
- COBOLしかできなくても需要は一定程度ある
- 金融機関大手や官公庁などのシステムで多く導入されている
- 長年蓄積してきた情報資産と信頼性の高さが使われ続ける大きな理由
- COBOL案件は、運用、保守、オープン化がメイン
- 平均単価は50~60万円、年収は400~600万円程度と平均的
- COBOLを使ったレガシーシステムの刷新が進んでも、COBOLが完全になくなる見込みはない
- COBOLerには死が待っている
60年以上の長い歴史を持つ言語ですが、いまだ多くの日本経済を支える企業や組織のシステムを支えている言語です。
今後も一定の需要が見込まれるため、他のスキルと併せてCOBOLを使えることはエンジニアとしての価値を高める要素となるでしょう。