378 Views
September 19, 24
スライド概要
いつのまにか業務系システム開発で二桁年数のゆるエンジニア LTとかイベント参加が増えてきたので資料まとめのために使っています
古い言語は お嫌いですか? ~COBOL経験者の思い出話~ 2024.9.15 Hackers’ Meetup #3 みやもと
自己紹介 みやもと(@Mymt_aggw2208) 大学卒業後にSIerに就職 途中職業適性を疑ってジョブチェンジを図るが転職先でことご とくシステム周りに配置されたため諦めて出戻り 現在はSES企業所属のエンジニア 使用言語はCOBOL→Java イベント参加のたびにXをメモ代わりにしてタグ検索の結果を 埋める悪癖あり 画像は会社の懇親会で焼肉食べてる時に撮られた写真をそれなりに加工したもの
本題に行く前に みなさん、 COBOLは好きですか? どんなイメージを持ってますか? 古いし勉強する 機会もないし システム障害の ニュース大体 COBOLだし なんで今時 COBOLなの? ……ネットその他の雰囲気から察するのはこんな感じ
嫌う理由も気持ちもわからなくはない ● 古い みやもとが新卒の頃から言われてきたので現在からすれば当時以上に古い 基本情報の試験問題からも消えたし知識として接する機会もない そうでなくても新しもの好きの多いエンジニアには古いというだけでも 印象良くない ● 大規模障害 全国ニュースになるような障害で名前を聞くので印象が悪い (ちょっと冤罪もあるような気はする)
それにしたって嫌われすぎでは 古さで言ったら Fortran も変わらん ※1けどそこ まで言われてない気が するぞ 障害はCOBOLの せいというより システム作って 運用してる現場の 問題では 批判・批難に対して反論するほどCOBOLを好きなわけではない※2けど エンジニアとしての初期キャリアを費やした身としてはなんか複雑な気持ち ※1:Fortranは1954年、COBOLは1959年 ※2:下手に擁護して「じゃあ COBOLの案件やらない?」とか言われるのは御免こうむる そう思うのと同時に ……
まだ嫌われるだけの関心が残っている? 私が経験者だから過敏になっているだけで、実際のところは「嫌い」と言い切れ るぐらいCOBOLを知っている人自体少ないのでは? 他言語経験者は まずCOBOLに 近寄らない ※3し 経験者は減る 一方だし このままだとCOBOLは「かつて存在した言語」になって批判されることすらなく なりエンジニアから忘れられていくのでは?※4 ※3:プログラミングやってる人は最初に学んだ言語より古い言語にさかのぼる印象がない COBOLから他言語に移った人は COBOLの濃い思い出(婉曲表現)から遠ざかりたがる ※4:忘れられるためには今ある COBOLを葬り去るだけの大規模システムリプレースが必要
忘れられる前に話しておきたい 「昔はそんなことあったんですねー」と流されるよりは「何でまた COBOLなんか……」と言われる方が話しがいもある 別にCOBOLを好きになってほしいわけでもなく COBOL開発者を増やしたいわけでもなく増やせるとも思ってなく ただ1経験者として「こんな印象だったよ」という昔話を聞いても らって 「そんな感じでやってたんだな」程度に聞いてもらえたら幸い
!一応の注意! みやもとの個人的な経験とそれに基づく印象からの話なので、正確性・客観性に欠ける ところも多々あると思います COBOLを離れて結構経つので、記憶違いもあるかもしれません ご指摘・反論はみやもとにそっとお知らせいただくか、資料にまとめてLTとかでお話いた だけると幸いです 個人的にはほかの人のCOBOL関連発表とかすごく聞きたい 逃げ口上を済ませたところで ここからようやく本題です
あらためて COBOLとは? 以下Wikipedia「COBOL」の項から部分的に抜粋 COBOL(コボル)は、1959年に事務処理用に開発されたプログラミン グ言語である。名前は「Common Business Oriented Language」 (共通事務処理用言語)に由来する。 非理系の事務員や官吏でもプログラミングできる言語として設計され たため、自然言語である英語に近い記述をめざしたコマンド語彙や構 文(シンタックス)が採用されている。特に金額計算など事務処理用に 広く使われている。 膨大なCOBOLプログラムおよびそれらの処理するデータが、企業や政府 機関に長年開発し続けられ稼働している。 画像はCOBOLの主な住処たるメインフレーム( IBM)
COBOLとのなれそめ 初めてCOBOLに触れたのは新卒で入社したSIerのプログラミング研修 その企業の主要顧客が使うシステムが大まかにCOBOLとJavaだったので、研修期間中はその2言語 で簡単なプログラムを組むところまで講習を受けました ちなみにその時点でみやもとの情報処理系の経験は ・大学の授業選択で情報処理科目を受講 授業でやったC言語は課題提出後きれいに忘れた ・初級アドミニストレータ試験(現:ITパスポート試験)と基本情報技術者試験に合格済 基礎の知識は一応あるけどプログラミング経験はほとんど無い、という状況 研修後はOJTでJavaの案件に入っていましたが、COBOL案件の人員が足りないということでOJT終了 を待たずそのまま配置転換されました 今も若くして COBOLに連れて行かれる人はこんな感じの騙しうちに遭ってるかもしれない
研修終了時点での COBOLへの印象 ひとつひとつの 処理は結構 読みやすい気が する 少なくとも JCL※5よりわかる 理解が前提になる 概念がない分 変に迷わなくていいか も 知り合いのJava使いから聞かされていたほど 印象悪い言語ではなかった ※5:Job Control Language(ジョブ制御言語)。 Linuxバッチでのシェルスクリプトみたいな言語
ひとつひとつは読みやすい <すごく雑な例:COBOLとJava> ※変数定義は省略しています * 変数を初期化する INITIALIZE NAME AGE. * 名前を設定(移送)する MOVE “TARO” TO NAME. * 年齢を設定(加算)する ADD 20 TO AGE. * 設定内容を表示する DISPLAY “名前:” NAME “ 年:“ AGE “歳”. // 変数を初期化する name = ""; age = 0; // 名前を設定(移送)する name = "TARO"; // 年齢を設定(加算)する age += 20; // 設定内容を表示する System.out.println("名前:" + name + " 年:" + age + "歳"); もともと「非理系の事務員や官吏でもプログラミングできる言語として設計された」という経緯の言語なので、 ぱっと見だと簡単な英文と変わらない
理解が前提になる概念がない みやもとの場合は Javaの研修に突入した際 「オブジェクト指向の考え方」 「クラスとインスタンスの関係」 「インターフェースと抽象クラスの違い」 あたりのところで頭を抱えることが多かった 正直今もきっちり理解できている気がしない COBOLは記述の約束事は多いものの「事前に理解しておかないと いけない概念」がほとんど無い 無いからこそ設計とかいろいろきっちりしたいエンジニアには嫌われるのかもしれない
案外初心者向けかもしれない COBOL プログラミング初心者だった頃のみやもとにとって COBOLは ● ● 比較的すんなり処理を読める 小難しい概念を脇に置いてひたすら処理のことを考えればいい COBOLやってた頃の知り合いとたまに会って話すこともあるけど COBOLという言語自体に 不満を言う人はあんまりいなかった プログラミング学習において設計とか仕様とかを最初から常に意識させたいなら他の言語 の方がいいのかもしれない でも「とりあえず書いて動かしたい」ぐらいの感覚でやってみるなら、そんなに悪い言語でも ない気がする だからみんなCOBOLやろう! とは絶対言えない理由はこの後です
開発環境の構築が面倒 基本的にCOBOLのシステムはメインフレーム(汎用機) 必然的に開発もメインフレーム 実際やってみよう!となったとして 個人が気軽に接続できるメインフレームってあるの?というとこから探 すことになる IBMのサイトで探しても「値段は見積もりしてね」という感じになってて個人の衝動買いは想 定していない ちなみに2018年に中古のIBM製メインフレームを買った人曰く「最新の状態なら 35万ドル(3900万円)」とのこと 18歳の大学生が 重量1トンのIBM製メインフレームを購入してみたらどうなったのか? - GIGAZINE 一部エディタにも一応は COBOLに対応しているものもあるけど他の言語に比べるとやっぱ り機能が少ない …… それでもOpenCOBOLとかpaiza.io、Exacismとか使えば勉強自体は可能
案件の修羅場率が高い せっかく勉強したら使いたい、仕事の役に立てたい、と思うのは普通 じゃあCOBOLの現場は?となると 個人的にはおすすめできない現場がほとんど みやもとが客先常駐で COBOLメインの現場に参加していた頃( 2007~2018頃)だと ● ● ● 納期は動かないのに要件がなかなか決まらない 何の疑問もなく残業前提のスケジュールを組まれる 既存システムが古すぎて電子資料の更新が追いつかず、複雑怪奇なコードを読むとこ ろから仕事が始まる 今はいろいろ変わっていると思いたいけど大丈夫とは言い切れない この辺の事情は客先業界に依存するところもあると思う せっかく勉強した先にあるのが 地獄のような現場ではおすすめしにくい
本日のまとめ ● COBOLという言語自体はそんなに悪いと思わない ● 開発環境がどうにかなればプログラミング初心者が勉強するためのとっか かりとして使うこともできるかも? ● COBOL経験後に他言語に移った人でも、COBOL自体を忌み嫌っている 人ばかりではない 現場は大体忌み嫌われている ● COBOLの現場はそれなりの確率で地獄になってることが多い ● 「本人が悪いわけじゃないけど取り巻く人間関係が悪すぎて別れた元カレ」 みたいな人がいたらこんな感情を抱くかもしれない ご清聴ありがとうございました