こんにちは。文系女子SEのほりごたつ(@horigotatsuSE)です。
入社5年目になる私ですが、そのうちJavaを扱っていた部署に8か月、そこからはずっとCOBOLを扱う現部署にいます。
COBOLを使っている、と同業の友人や先輩に言ったりすると
結構聞かれるのがこれです。
COBOLってもう廃れる一方で、仕事なんてないんじゃないの?
確かにSEの必須資格といっても過言ではない「基本情報技術者試験」を見ても、
COBOLは廃止となり、Pythonが代わりに採用されています。
プレス発表 基本情報技術者試験における出題を見直し
そして別の言語の人気が高まっていることが言えると思います。
というわけで今回は、COBOLを使用している開発現場の実態についてお伝えできればと思います。
ホスト(汎用)系とオープン系
ホスト(汎用機)系とは?
ホスト系というのは一般的に汎用機が基盤にあるものを指します。
汎用機はメインフレームともいい、企業の基幹システムなどに利用する大規模コンピュータのことです。
見た目もでかいらしい。(見たことはない)
この汎用機で動かすのが、COBOLで書かれたプログラムというイメージになります。
以下、世間でよく言われていることをざっくりまとめました。
相互運用性・移植性 | 1.0 |
高速処理・並行処理 | 4.5 |
管理コスト・維持コスト | 1.0 |
まとめ | 2.5 |
汎用機の場合はそれメインでなんとかするしかないというか、
どこか一部だけ別の枠組みを使ったりほかの枠組みと互換性を持たせたりするというのが難しくなります。
そのためどうしても維持費などもかかりがちと聞きます。
実際に開発現場としてはメンテナンス案件が多くなり、
メンテナンスといっても今あるプログラムをちょっと変えて新規作成が多くなります。
そんなわけなので、「保守案件ばかりじゃつまらなそう」と思われがちですが、
案外最近でも新設プログラムを結構作っています。
ただ一方で、高速処理や並行処理にはめっぽう強く、バッチ処理では強みを発揮します。
オンラインとバッチについて
オンライン
よく「システム」と聞いて思い浮かべるやつです。誰かのオペレーションをインプットに動くイメージ。
入力した内容で更新。
バッチ
目に見えない処理です。インプットはあくまでもデータで、時間になったら勝手に動いて更新をかけたりするイメージ。
時間になったら動いて一気に更新。
だいたい口座振替とかの「毎月知らぬ間にきちんと動いてるなー」系はバッチが頑張っています。
大量に口座振替処理をしたい金融系・保険系などはまだまだ汎用機がメインで動いているという話ですね。
オープン系とは?
よくホスト系と対のように言われているのがオープン系です。
まったくうまいこと言えないのですが、初めにJavaの現場に配属となって現在はCOBOLの現場に所属している私からすると
ホスト系・・・・白黒
オープン系・・・カラフル
みたいなイメージです。(実際別にホストがカラフルにできないわけではないのですが。イメージ。)
相互運用性・移植性 | 4.5 |
高速処理・並行処理 | 3.0 |
管理コスト・維持コスト | 4.0 |
まとめ | 4.0 |
オープン系の良いところは、相互運用性が高く、今後のメンテナンス性を考えると扱いやすいところです。
一方で、高速処理や並行処理となると汎用機に及ばずなところもあります。。
再開発・再構築とは?
そもそも企業が業務にシステムを使い始めたのはいつ頃か、という話に遡ります。
もしかしたら最近になってシステムを取り入れるまで手作業が多かった企業もあるかもしれませんが、
大企業だったりすると土台部分を1990年前後に構築したものが多いんじゃないかと思います。
少なくとも現在開発しているお客様のシステムは1980年代後半から1990年代前半に大部分が構築されています。
1990年代前半と現在ではだいぶシステムの在り方も変わってきており、システムを刷新したくなったり。
あるいは先述したとおり、ホストは管理や維持が大変で移植なども難しく
ちょっとしたシステム改変などでも莫大な開発を要するので、
という動きが高まったり。
このように今すでにあるシステムについて基盤を見直したり、
全体的に新しく作り直したりすることを再開発・再構築などと呼びます。
この再開発が進むと、管理費用も抑えられてメンテもしやすいオープン系に刷新していくのが主流なので
そのうちホスト(汎用機)の代表例でもあるCOBOLは廃れていくんじゃないの?と言われているわけです。
現実問題として、「今すぐ」「大胆な」刷新は難しい
そうなるとやっぱりCOBOLなんて使えたところで全然仕事はないじゃないか!
と言われてしまいそうですが、、
個人的な感覚だとあと10年~20年くらいはCOBOLができるSEの需要はある気がします。
その理由として以下が挙げられます。
1.ホスト(汎用機+COBOL)が基盤である以上、どうしても一部だけをオープンにするのは難しい
2.一気にエイってやるには莫大な時間・費用がかかりリスクが大きい
3.大量件数の処理速度はまだまだJavaなどでも追いつけない(らしい)
1つめに挙げた通り、やっぱり一部分だけオープンへ刷新、というのはなかなか難しいです。
実際今取引しているお客様がひとつの業務だけをオープン化しようとしていますが、
他業務との互換性などのもろもろを踏まえた調査・検討に莫大な時間を要している印象です。
たとえ一部分だけだとしても、そこで作成されたデータなどは別の業務でも使う可能性があるので
データの受け渡し箇所をすべて洗い出してテストする必要だったり
ほかの業務でも参照するデータなら結局ホスト側のデータベースに持たせてあげなければいけなかったり
・・・・などなど。
な現象になるのです。
じゃあ一部分といわず、全部を一気に刷新するのが得策かも?というと
それはそれで莫大な時間と費用がかかり失敗するわけにはいかないというリスクが伴います。
本当に刷新するのであれば、綿密に調査・検討し
そのうえで方針を決定、コンセプトも全業種で決め打ったうえで
相互に連携を取りながら進めていかなければなりません。
調査・検討や方針の決定はサクッとできるものではないですし、
なにより3点目に挙げたCOBOLならではの良さもあるので、
これを踏まえたうえで考えると
今お付き合いしているお客様も、
完全に汎用機+COBOLを捨てるまでにはまだまだかかるのではないかな、と思っています。
まとめ:COBOL(コボル)を扱う現場の今後
ここまで、汎用機とは・COBOLとは・ホストとは何ぞや?オープンとは何ぞや?という話と、
そのうち廃れていくだけなのか?という話をさせていただきました。
先述した通りで、個人的にはまだまだCOBOLは捨てきれないのではないかと思っています。
今の現場でも案件は次から次へと降りかかってきていますし、
まだまだ「よし!来年からオープンへ移行だ!」みたいなノリではないと思います。
ただ、じゃあSEとして「今COBOL扱ってるからほかの言語は勉強しなくてもいいや」といえるかというと
それはちょっと違うのかなと思っています。
ほかの基盤だったらこうできる!ほかの言語だったらこうできる!
みたいな考え方ができないと、刷新しようにも今のシステムと互換性がとれなくなってしまうからです。
今後システムを刷新する機会がどんどん増えてくることを考えると、
SEとしては新しい技術をどんどん身に着けていかないといけないのかな、と思っています。
といいつつ目の前のCOBOLで精いっぱいの今日この頃ですが。笑
SE業界が気になるならコチラの記事もオススメ!
プロジェクトマネージャー(PM)とは?開発責任者の私がどうやったらなれるか考えてみた
COBOL(コボル)の需要はない?現役COBOL開発者がCOBOL需要を解説
SE(システムエンジニア)は女性でもやっていけるの?現役女性SEのホンネ
SE(システムエンジニア)のキャリアパスとは?現役プロジェクトリーダが描く今後のキャリアプラン