見出し画像

システムエンジニアとして働いていて、生成AIとか全盛だけど、一番必要とされているスキルはCOBOLとかレガシースキルなんだろうなと思うこと

皆様、こんにちは。
今回はかなりニッチな記事ですが、これからシステムエンジニアを目指す方にお役に立てればうれしく思います。

今現在システムエンジニアと聞くと、生成AIやノーコード技術(プログラミング不要)が主流だと感じますが、古いCOBOLという言語がどうして必要とされるのか、なぜ覚える価値があるのかをこれからシステムエンジニアを目指す方にちょっと伝えたいと思います。

まず、COBOLはビジネス、金融、行政などのほぼ全ての分野で広く使用されている高級プログラミング言語で1959年に開発されて以来、あらゆる分野の事務処理に利用されています、それは今も変わりません

特徴としては極めてプログラムが読みやすく、メンテナンスがしやすく為、失敗の許されない大規模なデータ処理やトランザクション処理、特に金融、通信、公官庁などのレガシーシステムでいまだに広く採用されています。

しかし、COBOLを扱える技術者の高齢化や減少が進んでおり、システムのメンテナンスや改修が課題です。その反面、COBOL技術者の需要は依然として高く、現場で働いていても、あと数年もすればCOBOLを読める人がいなくなるんじゃないかというくらい高齢化は目に見えて顕著です。

だからこそ、COBOLやそれに付随するJCLに強い、且つPythonやJavaも扱える若い技術者がこれからもっとも重宝される時代になってくるのかなと思っています。それくらい、高齢化と属人化がどこの現場に行っても顕著。ある意味すごくチャンスな時代なのかなと思っています。

COBOLとJCLは、シェルとJAVAとの関係と同様に考えてもらえれば良いです。COBOLプログラムは厳密な記述が求められるので、プログラミングに柔軟性が無い反面、定例的なバッチ処理にはとても効率的なので今でも使われているのですが、なんせ古い言語なので今から覚えようと思う人はいないと思います。

簡単なプログラムをCOBOLで作って、JCLから呼び出しているプログラムは以下のようなもの。細かくは説明しませんが、各セクションを厳密に規定しないとならない柔軟性は無いけれど、各セクションが厳密に規定されている分、スパゲティコードにならないし、メンテナンスに優れた言語。

見た感じでプログラミングをしている方であれば、何となく処理が分かると思います。

例: COBOLプログラムとJCLの簡単な連携

COBOLプログラム(example.cbl):

IDENTIFICATION DIVISION.
PROGRAM-ID. EXAMPLE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO 'INPUT.DAT'
    ORGANIZATION IS LINE SEQUENTIAL.
    SELECT OUT-FILE ASSIGN TO 'OUTPUT.DAT'
    ORGANIZATION IS LINE SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-REC PIC X(80).
FD OUT-FILE.
01 OUT-REC PIC X(80).
PROCEDURE DIVISION.
    OPEN INPUT IN-FILE
    OPEN OUTPUT OUT-FILE
    PERFORM UNTIL END-OF-FILE
        READ IN-FILE
            AT END
                SET END-OF-FILE TO TRUE
            NOT AT END
                MOVE IN-REC TO OUT-REC
                WRITE OUT-REC
        END-READ
    END-PERFORM
    CLOSE IN-FILE
    CLOSE OUT-FILE
    STOP RUN.

JCLスクリプト(example.jcl):

//EXAMPLE  JOB (ACCT),'EXAMPLE JOB',CLASS=A,MSGCLASS=A
//STEP1    EXEC PGM=EXAMPLE
//INFILE   DD DSN=INPUT.DAT,DISP=SHR
//OUTFILE  DD DSN=OUTPUT.DAT,DISP=(NEW,CATLG,DELETE),
//            SPACE=(CYL,(1,1)),UNIT=SYSDA
//SYSOUT   DD SYSOUT=*

なぜ、今回COBOLを紹介したのかというと本当に技術者不足です。大手都市銀行から通信会社、公官庁までコボラー(COBOLのプロ)が段々いなくなる今だからこそ、覚えておいて損は無い。というより、今COBOLからの脱却をはかっている企業が多いなかチャンスだと思ったからです。

生成AIやノーコード技術など最先端技術に目が行きがちですが、こういったレガシー技術にこそチャンスがあることも伝わればと思います。

最後まで、見ていただきありがとうございます。


この記事が気に入ったらサポートをしてみませんか?