COBOLしかできないと仕事がなくなる?COBOLのこれから
銀行など基幹系の開発で最も使われてきたプログラミング言語である「COBOL」。
COBOLは基本的に利用範囲や需要が限られているため、そもそも馴染みのない人が多く、よくわからない古代の言語というイメージを持たれているかもしれません。
しかし、私たちの生活に重要な基幹系のシステムに採用されているなど、縁の下で働く言語であるため、今でも欠かすことのできない重要な役目を担っています。
COBOL無しに現代社会は成り立たないと言っても過言ではありません。
その一方で、モダンなプログラミング言語の開発手法との乖離が大きいことや、COBOLで書かれた基幹系のシステムは長期間にわたりメンテナンスを必要とするため、COBOLプログラマーは同じような案件を長期間継続して行うことになり、結果としてCOBOLしかできないということになりがちです。
そのことに危機感を抱くCOBOLプログラマーは多いようですが、COBOLしかできないと今後困ったことになるのか、また今後の身の振り方などについて、解説していきます。
COBOLについて
COBOLは古くから事務処理に使われる、主に手続き型のスタイルを取るプログラミング言語です。
専門のプログラマーだけでなく事務員でも扱えることを目指して、数式的な構文だけでなく英文のような構文を使い変数の定義や代入ができるなど、他のプログラミング言語とは大きく異なるスタイルを持ちます。
堅牢性を最重視した言語設計が最大の特徴でありメリットでもありますが、それに反するような効率化の手法を全く取り入れない方針のため極めて冗長な記述が求められ、これが大きなデメリットでもあります。
COBOLの冗長さについて言及されるようになったのは最近のことではなく、主なプログラミング言語が
・C
・Basic
・COBOL
などだった1970〜1980年代にはすでにCOBOLに対する皮肉などの言及がありました。
COBOLは今も昔も事務系・基幹系で使われていて無くてはならないプログラミング言語でありますが、COBOLが使われる範囲は年々狭くなってきています。
トレンドとしても2020年以降の情報技術者試験の選択分野からCOBOLが外されるなど、先細り感が明確になってきています。
昔に比べて変化が早くなってきている現代では、
「エンジニア人生で1つの言語だけ習得すれば大丈夫」
と考えるのは非常にリスクが高いとされています。
だからこそ、COBOLのエンジニアは将来に対する不安が大きいでしょう。
COBOLは今後も使われていく
COBOLプログラマーの中には、今後仕事がなくなってしまうのではないかという心配を抱えている人が多いようです。
しかし、基幹系の開発にCOBOLが使われる状況はそう簡単に変わらないと考えられます。
また基幹系のメンテナンス期間は非常に長いため、少なくとも今後10~20年でCOBOLの仕事が全く無くなってしまうということはないでしょう。
COBOL自体が基幹系の開発に向いているということもあるのですが、安定動作について極めて重い責任が課せられる基幹系開発に、実績のない新しい言語を採用したいという需要が全く発生しないことが最大の要因です。
最近では、ローレベル開発もできて安全性もパフォーマンスも良好なRustなど、優れたプログラミング言語が生まれてきていますが、仮に基幹系開発として優れたモダンな言語が生まれたとしても、主流が新しい言語に移り変わるまでは非常に長い時間を要すると考えられます。
少なくとも言語を置き換えるとなると、通常の開発工程に加え、「影響範囲の確認」や「並行稼働による稼働確認」が長期にわたって必要になります。
すでに作られているCOBOLによるシステムの規模が大きい場合などは、莫大な費用が必要になります。
したがって、COBOLプログラマーが仕事がなくなって食べていけなくなることについて心配する必要はないと言っていいでしょう。
COBOLしかできないことのデメリット
前述したように、現在COBOLしかできないとしても、すぐに仕事がなくなる可能性は低いでしょう。
しかし、中長期的に自分のキャリアを考えた際に、COBOLしか書けない事には大きなリスクもあると考えられます。
COBOL以外に書けるプログラミング言語がないと、
「COBOLの特徴であり現代的なプログラミング言語と大きく異なる点」
に適応できず、今どきの開発についていけない可能性が高いです。
具体的には、以下のような点が問題になるでしょう。
シンプル・効率的な記述になじめない
COBOLは堅牢な一方で、言語として非常に冗長です。
この冗長さが高い安全性・安定性を生んでいることは間違いありませんが、現在の開発のトレンドに真っ向から反していることも確かです。
COBOL開発のプロジェクトでは、時間が十分に与えられた上で、とにかく安全性のみを重視した開発を求められることが多いです。
ですから、効率化を図ろうというモチベーションが生まれない土壌があり、また開発ルール上もそのような手法を許容しないでしょうから、COBOL開発において効率化を学ぶ術はありません。
COBOLメインのプログラマーがモダン言語での開発を行うには、かなりの修練と思考の切り替えが必要となるでしょう。
特に近年のシステム開発は、フレームワークの活用など
「より効率的にシステムを作る」
という点が非常に重視されます。
こうした体制の違いに苦しむ可能性があるでしょう。
現代的な開発手法のノウハウが得られない
COBOLは保守的な言語仕様を持ち、モダンな開発において使われるような手法をCOBOL開発で実践できることはありません。
開発効率化のためのテクニックや新たな動きというものは言語をまたいで流行ったりしますが、COBOL開発では無縁の話です。
COBOLコア自体は新しい潮流を多少ながら取り入れる動きも見られ、COBOL2002では限定的ながらオブジェクト指向的な開発が行えるようになりました。
しかし、実際の現場でそれを取り入れるかどうかは全く別の話です。
というより、従来型の手続き式による開発手法以外が許容されることはまずないでしょう。
COBOLそのものの古さの他に、COBOLを使うプロジェクトにおける極めて保守的な姿勢から、現代的な開発手法を学ぶシーンが存在しないという点がキャリアを積むにつれて問題となってくるでしょう。
COBOL開発を続けることで得られるもの
では、逆にCOBOL開発を長く続けることで得られるものは無いのでしょうか?
COBOLは設計思想も言語仕様も安定性・堅牢性重視であるため、開発においても堅牢なコーディングが強制されます。
COBOLで素直なコーディングをすると、自然と冗長で堅牢な開発が行えるというわけです。
堅牢なコーディングはもちろんモダン言語の現代的な開発においても重要であり、コードの意図が明瞭でバグを出しにくいコーディング技術や慣習は、仮にモダン開発の現場に入ったとしても活きることでしょう。
また、基幹系開発という経験は中々積めるものではありません。
COBOLに習熟していることが事実上必須ですし、新規システムの開発は基幹系に強い開発会社以外が入り込む余地は少なく、既存システムのメンテナンスも固定メンバーが長期間行っていることがほとんどです。
基幹系や組み込み系など、クリティカルな分野に使われるプログラミング技術というのは、他では得がたい貴重な経験です。
基幹系が今後大盛り上がりしたりシーンの最前線に上がってくることは考えづらいですが、IoTのプログラミングなどで最先端として経験が生きる分野はきっと出てくるでしょう。
COBOLだけではリスク大!?できることは多いほうが良い
当然のことながらできることは多い方が良いのは間違いありません。
COBOLによる開発経験はもちろん価値あるものであることは確かですが、それだけで現代的な開発に急に移行することは難しいでしょう。
また、COBOLは案件が安定して存在すると説明しましたが、内容はほぼ全て基幹系のメンテナンスですので、なおさら同じことをし続けるだけで新しい技術をキャッチアップできません。
ですので、先々は違う分野にも挑戦したい、プログラマーとしてスキルアップしたいという方は、できることを増やすべく行動するべきです。
COBOL開発の経験が豊富で、さらに現代的な開発の知識・技術も備えれば、プログラマーとしてまさに盤石といえるでしょう。
では、どのような方向性にシフトする事が可能なのでしょうか。
低レイヤー開発・IoT開発
低レイヤーのハードウェアに直接アクセスするようなプログラミングは、リソースの制限から現代的な開発とは大きく異なり、どちらかというとCOBOLプログラマーと親和性の高いものです。
また、現代の一般的なプログラマーが低レイヤー開発を始める際も、それまでのモダンな開発手法などを捨てて低レイヤーの開発手法を一から学ぶことになります。
そのあめ、COBOLプログラマーも一般的なプログラマーと同じスタートラインに立って始められるという点で、現代的な開発より入りやすいでしょう。
低レイヤー開発は最近ではRaspberry Piなどシングルボードコンピュータの流行により、手軽に勉強したり技術を試すことができるようになりました。
それによって知識や技術の需要も増してきており、今後が楽しみな分野であります。
また、IoTにまで視野を広げれば、ドローンやウェアラブルなどの隆盛でまさに成長分野ですので、将来性は申し分ありません。
趣味にも仕事にも、COBOLプログラマーが試してみるべき分野の第一候補として挙げられます。
組み込み系開発
リアルタイムOSなどを扱う組み込み系の開発は、やはり一般的・現代的な開発とは異なる部分が多く、COBOLプログラマーが活躍しやすい環境といえます。
組み込み系は用途が多岐にわたりますが、クリティカルな分野での開発は基幹系開発同様、何よりも堅牢性が最重視されます。
そこで、COBOLでの開発経験は確実に大きな力となるでしょう。
また、組み込み系は開発手法や慣習がかなり特殊であり、専門性の高いプログラミング技術を必要とします。
基幹系開発と同じく、替えのきかない開発技術といえるでしょう。
COBOLの開発経験と組み込み系の開発経験は、
・両者に共通する点があって比較的相性が良いこと
・両方とも替えがきかない技術で必要性が途絶えないこと
・どちらも安定した仕事が得やすいこと
などから、COBOLとの二刀流に向いた分野といえるでしょう。
COBOLエンジニアを探しているならAMELAに相談を
今回は、COBOLエンジニアについて見てきました。
COBOLのエンジニアは、年齢層が上がってきており、若い人は今からCOBOLを習得したい・・・という人も少ないです。
どうしても、Pythonなど新しい技術や華々しい仕事をイメージする人が多いでしょう。
しかし、本文中でも述べたように、特定の分野ではまだまだCOBOLのシステムが残っており、それらを全て置き換えるのは、長い年月が必要になります。
「需要はあるのにエンジニアが見つからない」
こんなときは、是非AMELAに相談下さい。
日本に限らず、ベトナムでのオフショアも行っている弊社であれば、日本国内で見つからないエンジニアが見つかる可能性があります。