世界を動かす技術を、日本語で。

HNに聞く: 現在活動中のCOBOL開発者はいますか? 何に取り組んでいますか?

311日前

概要

COBOLレガシーシステムは、金融や政府分野で広く使われている現状。 実際にCOBOLを日常的に保守している人は少ない印象。 どのようなシステムが運用されているかの実例紹介。 金融・政府機関でのCOBOL運用の現場事情。 COBOL保守担当者の実態と業務内容。

金融・政府分野におけるCOBOLレガシーシステムの現状

  • COBOL は、1960年代から 銀行・保険・政府機関 で基幹システムとして利用され続けている言語
  • メインフレーム 上で稼働する勘定系システム、給与計算システム、年金管理システムなどで現役運用
  • 大規模トランザクション処理 や高い信頼性が求められる分野で、他言語への置き換えが困難なケースが多い
  • 保守担当者 は年々減少しつつも、現場では数十年選手のベテラン技術者が中心
  • 新規開発 よりも、障害対応や法改正対応、データ移行プロジェクトなどが主な業務内容

COBOL保守担当者の実際の業務例

  • 銀行 :オンラインバンキングやATM取引の裏側を支える勘定系システムの運用・障害対応

  • 保険会社 :契約管理や給付金支払いシステムのメンテナンス、バッチ処理の最適化

  • 政府機関 :年金記録管理、税務処理、住民情報管理システムの法改正対応

  • データ移行 :他システムへのリプレース時にCOBOLプログラムの解析・仕様書作成

  • ドキュメント整備 :古いソースコードの解析や、既存仕様の可視化・マニュアル化

    • 現場担当者 の多くは、COBOL以外の新技術習得も並行
    • 若手技術者 の採用・育成が課題となっている現状

COBOLレガシーシステムの今後

  • 技術者高齢化 によるノウハウ継承問題

  • クラウド移行 やモダナイゼーションの必要性

  • COBOL運用 の現場は減少傾向だが、依然として社会インフラを支える重要な役割

  • 求人市場 ではCOBOL経験者が高待遇で募集されるケースも多い

  • AI・自動変換ツール による保守効率化の動き

    • COBOL保守担当者 は「絶滅危惧種」ではなく、今も現場で活躍中
    • 金融・政府分野 では、COBOLシステムが今後も一定期間は存続見込み

Hackerたちの意見

ある開発者に会ったんだけど、その人のお母さんはキャリアのほとんどをレガシーバンキングシステムで働いてたんだって。80年代から始めて、正式には引退してるのに、今でも急ぎの仕事をめちゃくちゃ早くこなしてるらしいよ。

5年前に引退した義理の母は、2002年頃まで銀行の仕事の一環としてCOBOL開発をしてたんだ。その後はフルタイムの管理職に進んだんだけど。彼女の銀行では、ほとんどの仕事がJavaに統合されていて、Javaはインドの外注チームがやってた。引退する頃には、インドのチームが目標を達成できてないのがずっと続いてたのを彼女も感じてたし、やっと経営陣もそれに気づき始めたみたい。さらに、COBOLのことを知ってる人たちが彼女と同時に引退していく中で、5年後のシステムがどうなるかなんて考えたくなかったんだ。

母は80年代にブラジルでCOBOLを教えてたけど、その後管理職に転職して、もう30年以上コードには触れてないんだ。英語も全然話せないし、マジで何なんだろう。

最近、金融サービスの古いCOBOLコードをリバースエンジニアリングするプロジェクトがいくつかあったんだ。主に古いシステムを新しいもので置き換える最適な方法を探るためで、あんまり「COBOL開発者」としてはやってないけどね。

何か特に置き換えるものがあるの?COBOLをJavaScriptに置き換える話を聞いたことがあって、それを考えるだけでゾッとするんだよね。

自分はCOBOL開発者じゃないけど、メインフレーム(z/OS)で働いてる。見たCOBOLアプリケーションのほとんどは銀行や保険関連で、例外は少ないかな。大体はバッチジョブのシリーズとして動いてるか、IMSやCICSみたいなトランザクションマネージャーを通じて動いてる。バックエンドは通常、シーケンシャルファイル(データセットって呼んでる)、DB2、VSAM(バーチャルストレージアクセス方式)、またはIMSの一部であるDL/1(階層型DB)だね。見たところ、IBM MQを使ってるところも結構あった。これらのシステムに変更が加えられるのは、規制の変更やビジネスの変化(新しい金融商品が提供されるなど)が原因の場合が多いよ。余談だけど、HNでメインフレーム関連の投稿をたくさん見かけてきた。アカウントを作って参加しようと思ってたけど、やっと今になって実行に移せた。

いいね、パーティーへようこそ!

コメントありがとう!こういう意見があるからこそ、HNは毎日訪れる価値がある場所なんだよね。ようこそ!

バカな質問かもしれないけど、メインフレームやz/OSって面白そうだよね。どうやってそのシステムや環境について学び始めればいいの?

保険の主な計算業務って何なの?アクチュアリーの表を計算すること?それとも保険料や請求の会計?それとも他の何か?銀行がCOBOLを使い続けるのは分かるけど、保険がそれをどの程度使ってるのかは理解できないな。

私が見たCOBOLアプリケーションのほとんどは、銀行や保険関連のもので、例外は少ないね。銀行は大きいよね。いくつかの国では、年金の計算にCOBOLをまだ使ってると思う。今まで会った中で一番給料の高いコンサルタントは、COBOLの恐竜だったよ。銀行は彼を解雇したけど、戻ってきたときには彼の高額な日当を受け入れざるを得なかったんだ。私の親友は、銀行でJavaコードを使って... COBOLコードを生成する仕事をしてたよ。面白いよね。

CICSのハッカーニュースUIを作ったら、ちょっとクールだよね。 ;)

企業のスタックをモダナイズする手助けをコンサルタントとしてやるのって、儲かると思う?

引退間近の人に会ったんだけど、食品加工業のERPシステムに関わってたんだ。夜間のバッチジョブがサプライヤーからの注文をトリガーして、カスタマーサービスが新しい注文を入力してた。すでに2回SAPの移行が失敗して、会社に何百万も損失を出したらしい。会社のプロセス知識はすべてコードに入ってて、データベースのフィールドは再利用されてるけど(名前は変えられない、手間がかかりすぎるから)、機能開発はずっと前に止まってる。並行して、社内で新しいシステムが作られて(外部コンサルタントをもう信頼してない)、彼の仕事はそのシステムが何をするかを説明することだった。たぶん給料は良かったけど、彼はあんまり気にしてなさそうで、ただ働く時間を減らして、円満に引退したかったみたい。

こういう移行プロジェクトが好きになってきた。今は、テストなしの30年前のERPをProgressからKotlin+PostgreSQLに移行してるところ。AIエージェントはどのコードを読んだりテストに変換したりするかなんて気にしない。ただ自動フィードバックループと人間の監視があればいいんだ。

そんな会社で短期間働いたことがあるけど、コアビジネスロジックの大部分がAS400で動いてて、何を新しいものに移行する必要があるのか聞かれた時は、現実感がなかったな。数百人の従業員がそのシステムとやり取りしてて、A棟では荷物が届いたら、こんな風にスキャンして、このボタンを押す。B棟では、ある人がAS400から他のアウトソースされたソフトウェアに適したCSV形式にテーブルを変換するのを監視する仕事をしてた。データはCシステムに入って、コンベヤーベルトで働いてる従業員にこれやあれを見せる。何百キロも離れたところで、トラックドライバーがこれやあれの通知を受け取る。でも、誰もその全体がどうなってるのか知らなかった。みんながそのシステムとのやり取りに特化してて、実際には無駄な理由で存在する仕事の従業員を減らせるはずなのに、切り替えコストも膨大だった。彼らの会社がどうなったのか、時々気になるよ。システムは誰も把握できないほど複雑で、社内の開発者もいなかったから、どのスキルが必要かを判断できる人が必要だったんだ。

母とその旦那はアメリカの州政府でCOBOL開発者をやってるんだ。母は教師や他の州の職員向けの健康保険の方を担当してるよ。クレーム処理とかね。夜中にたくさんのバッチジョブが走ってるんだ。彼らのアラートシステムは、実際に人間がいて、ジョブが失敗したら母に電話をかけてくるんだって。彼らが住んでる街では高給だけど、ソフトウェア開発としてはそれほどでもないみたい。政府がちゃんと約束を果たせれば、二人とも完全な退職金と生涯の医療保険がもらえるよ。コロナ以降は二人とも完全リモートで働いてるしね。母は州の宝くじや教師の退職制度、交通省でも働いてたことがあるよ。追記:彼女によると、SQLデータベースもあるけど、主にIBM IMSに保存してるらしい。

それは完全にメンテナンスだけなの?それともCOBOLで新しいものも作ってるの?

州って、アメリカの州のことだよね?

銀行でCOBOLの恐竜たちと一緒に働いてるんだけど、彼らが16色のIBM z/OSホスト端末で作業してるのを見るのが好きなんだ。すごく魅了されるよ。時々、私が生まれる前に書かれた面白いコードを見せてくれたり、80年代の大規模メインフレームのトラブルの話をしてくれたりする。夜中に呼ばれて、バグを直すために別の国に飛ばされたりしてたんだよ。リモートデスクトップなんてなかったからね。

彼らが16色のIBM z/OSホスト端末で作業してるのを見るのが好きなんだ。すごく魅了されるよ。 ほんとにそうだよね。パートタイムの同僚がメインフレームの仕事をしてて、いつもデスクにz/OS端末に接続された別のノートパソコンを置いてた。たまに彼がジョブやコードを見せてくれたけど、ほんとに面白いものだったし、彼はそれが得意で、すごくスムーズに操作してたよ。

PuTTYを使ってLinuxに入ると、16色になるよ。

<16色のIBM z/OSホスト端末、これって仮想化されてないの?

メインフレームの人たち、16色を誇らしげに見せびらかしてるみたいで、ちょっとウケる。俺たちは一色(と色がないのも)しかなかったけど、それで十分だったんだよ。

OS 2200とVAX VMS(Charonエミュレーション上で動いてる)でコーディングしてる開発者と一緒に仕事してるよ。面白い事実:最初のSMP UNIX実装はEXEC 8、つまりOS 2200のカーネルの上で動いてたんだ。「Sperryが提供するどんな構成でも、マルチプロセッサのものを含めて、UNIXシステムを動かせる。」 https://www.nokia.com/bell-labs/about/dennis-m-ritchie/retro... 編集: https://web.archive.org/web/20150611114648/https://www.bell-... https://en.m.wikipedia.org/wiki/UNIVAC_1100/2200_series

CICSコードで素晴らしい盲目のCOBOLプログラマーと一緒に働いてた。スクリーンリーダーを使ってコードを見つけて修正するスピードは、マジで驚異的だった。

iSeriesのシステムを作ったことがあるけど、現代の派手なGUI IDEはIBM 5250端末のスピードには全然敵わないよ。ベルリンのPOCOバウマルクトでは、今でもそういう端末が動いてるのを見られる。見たモジュールの一つは、月面着陸の前に書かれたもので、女性プログラマーが作ったんだ。

超古いコーダーだよ。アタリの在庫処理システムに機能を追加するためにCOBOLを書いたことがあるんだ。「在庫」というのは最初、荷物が積まれたドックで受け取られて、フォークリフトで出荷ドックに運ばれて出荷されるものだったから、すぐに売上として計上する必要があったんだ。今は主にPythonとJS/HTMLをいじってる。アタリの仕事で一番重要だったのはCICSのコードだったな。CICSを設定できるのは一人だけで、その人がバスにひかれたら…まあ、1年後にはそのバスのことなんて関係なくなってた。アタリは売れ残ったカートに何百万も埋めたし、私はグレートアメリカパークの近くの美しいオフィスビルから、今はマウンテンビューの窓のない地下室のクローゼットで「フォークリフト在庫」バージョンが不要になったから変更作業をしてる。ちょっと話が逸れたけど、「COBOL」が私に必要だったきっかけなんだ。

ああ、クリエイティブ会計の誕生時代だね。企業が空のCDを出荷して、それを四半期の収益として計上してたのを覚えてるよ。実際のソフトウェアは準備ができたときに「パッチ」として届けられてたんだ。

2000年代初頭にCICSで働いてたんだ。今でも動いてるCOBOLのコードが大量にあって、アルゴルやフォートランも使ってた。70年代に書かれたコードのバグを見つけることもあったよ。

COBOL開発者ではないけど、大きな銀行で働いてるから、メインフレームやAS400システムの段階的廃止を目の当たりにしたよ。小売と卸売の銀行業務で重要なシステムを動かしてたんだ。Javaに移行してそのコードを最適化したり、メインフレームのCOBOLコードやAS400のものをMicro Focus COBOLに変換して、Windows上で動かせるようにしたりした。私も彼らが私たちのクラウドインフラに移行する手助けをしたけど、面白い経験だったよ。これらのアプリケーションを維持・開発している人たちと、他の組織との間にはかなりの文化的ギャップがあったね。

その文化的ギャップについて詳しく教えてくれる?実際にそういう人たちに会ったことがないから、昔のプログラマーたちがどんな感じだったのか気になるんだ。

今は銀行でメインフレーム開発者として働いてる。データウェアハウス的なソリューションの中で、主にCOBOLとJava(USS内)を書いてる。内部のISPFツール用にRexxでスクリプトも少し書いてるし、SQLもたくさん使ってる。DB2をメインのデータベースとして使ってるからね。ほとんどのプロセスはEOD中心で、バッチジョブをたくさん実行してる(主にTSOで、IMSはほとんど使わない)。統合は主にファイルベースだけど、APIも呼び出したり公開したりしてるし、Kafkaからデータを消費したり生成したりもしてる。メインフレームとオンプレミスの分散システム、さらにはクラウド上の「内部」システムとも統合してるよ。ソース管理にはGitを使ってるけど、CI/CDのソリューションは自社開発なんだ。その他のインフラもかなり自社で作ってる。俺は30代半ばで、うちの会社のメインフレームエリアでは若い方だけど、チームには20代や30代の開発者が何人かいる。バックエンドとフロントエンドの開発は主にMicrosoftの技術スタックでやってたけど、必要なものは何でもやってきた。主にバックエンドは.NETやSQL Server、フロントエンドはAngular/Vue/Reactを使ってたよ。

給料はどんな感じなの?数年前には、高給のCOBOLの仕事があるって聞いたけど、最近の話ではそうでもないみたいだね。

すごいのは、全国規模のアプリをホストしているメインフレームでの作業が、現代のウェブアプリを開発するよりもずっと簡単だってことだよね。昔のプログラマーが引退から引っ張り出されて、ほこりまみれのCOBOL/RPGプログラムを維持するってジョークをよく聞くけど、実際はツールがシンプルだから、若い開発者でも1ヶ月で学べて、1年以内にはマスターできちゃうんだよね。しかも、プラットフォームが段階的な改善や後方互換性に重点を置いてるから、数年経っても専門知識は失われないし。

みんなに会えて嬉しいよ。俺はCOBOLの他にC、C++、Java、REXX、SQL、IBMメインフレームアセンブラも書いてる。IBMのメインフレームオペレーティングシステム、z/TPFをサポートしてるんだけど、知ってる人は少ないね。z/OSは大きくて遅いClydesdale馬みたいなもので、zTPFは航空会社を運営してる、リアルなオンライン取引システムのモデルなんだ。SQLリレーショナルデータベースのショッピングカートとは違うよ。要するに、すべてがアセンブラなんだ。結局はビットの世界だよ。