メインコンテンツへスキップ
見出し画像

最後の技術者たち:消えゆくIT伝統芸の記録(3)

    第三話 COBOL

    社会の血流を止めなかった人たち

    本稿は、読者の問いから始まるドキュメンタリー風創作コラムです。実在の番組取材ではありませんが、かつて日本の技術現場に存在した空気と、現在のAI時代への問いを重ねて構成しています。

    第一話では、ファジー制御について古代守さんに話を聞きました。

    機械が、人間の『なんとなく』を理解しようとしていた時代。
    そこには、人間の曖昧さをバカにしない技術者の姿がありました。

    第二話では、アセンブラについて真田志郎さんに話を聞きました。

    レジスタ、番地、割り込み、クロック。
    機械語のとなりで、機械の都合を人間が引き受けていた時代の物語でした。

    第三話で訪ねるのは、COBOLです。

    金融と行政の奥底で、いまも静かに動き続ける古い言語。
    古いと言われながら、止まることを許されない言語。
    新しくはないのに、誰も簡単には捨てられない言語。

    COBOL。

    それは、社会の血流を止めないために書かれた言葉でした。

    今回、読者から寄せられた問いは、こういうものでした。

    『COBOLはまだ現役なのでしょうか。古い言語だと聞きますが、なぜ今も銀行や行政で使われているのでしょうか。AIで置き換えられないのでしょうか』

    この問いをたどるために、私たちは一人の元銀行員を訪ねました。

    首都圏の郊外。
    古い団地と新しいマンションが並ぶ住宅地の一角に、かつて地方銀行の支店勤務を経て、本店電算部で勘定系システムの開発と保守に関わった人が暮らしています。

    沖田十三さん、八十歳。

    若い頃は支店で窓口、出納、集金、融資事務を経験しました。
    その後、本店の電算部へ異動し、ATM連携、夜間バッチ、融資管理、帳票処理、決算処理の保守に関わりました。

    書斎の机の上には、古いCOBOLの仕様書だけではありません。
    そろばん、紙幣を束ねる帯封、古い通帳、黄ばんだ融資稟議書の写し、そして磁気テープのケースが置かれていました。

    沖田さんは、そのそろばんを指で軽く弾きながら、静かに笑いました。

    『わしが銀行に入ったころはな、コンピュータより先に、そろばんじゃった。ボールペンで銀行数字を書けること。紙幣を正確に数えられること。自転車や五十ccのスーパーカブで集金に回れること。それが銀行員の基本じゃった』

    銀行数字。
    紙幣勘定。
    伝票。
    通帳。
    印鑑。
    稟議書。
    担保台帳。
    集金袋。

    それらは、いまの若い人には古い商習慣のように見えるかもしれません。

    しかし、その一つひとつが、かつての銀行を支える身体技術でした。

    紙幣を親指で弾く。
    そろばんで残高を合わせる。
    伝票の数字を読み違えない。
    銀行数字で金額を改ざんされにくく書く。
    雨の日でも集金に行く。
    顧客の顔を覚える。
    支店長の機嫌を読む。
    本店の審査部の空気を察する。

    それが、銀行員の仕事でした。

    沖田さんは、古い通帳を手に取りました。

    『昔の銀行員はな、数字を扱っているようで、人間を扱っておった。通帳の向こうには商店があり、工場があり、家族があった。たかが一行の残高でも、その向こうには暮らしがあったんじゃ』

    その銀行員の仕事を、少しずつ機械の中へ移していった言語がありました。

    COBOLです。

    COBOLが生まれたのは、コンピュータがまだ特別な機械だった時代です。

    企業や行政は、膨大な事務処理を抱えていました。

    給与を計算する。
    請求書を処理する。
    在庫を管理する。
    銀行口座の残高を更新する。
    保険契約を管理する。
    税金を計算する。

    それらは、数学の難問ではありません。
    けれど、間違えてはいけない処理でした。

    一円でも合わなければ、帰れない。
    一桁ずれれば、社会が揺れる。
    一件消えれば、人の人生が変わる。

    沖田さんは、分厚い仕様書を開きました。

    そこには、預金残高、利息計算、融資残高、返済予定、担保評価、延滞区分、取引履歴、帳票出力の仕様が細かく書かれていました。

    『COBOLというのはな、銀行員を消した言語ではない。銀行員がやっていたことを、機械の中に移した言語なんじゃ。そろばんで合わせていた勘定を、夜間バッチで合わせる。手でめくっていた台帳を、ファイルで読む。窓口で確認していた残高を、端末に出す。そういうことを、一つずつ機械に教えていったんじゃ』

    COBOLは、派手な言語ではありません。

    画面で絵を動かすわけではありません。
    宇宙船を飛ばすわけでもありません。
    人間のように会話するわけでもありません。

    MOVE。
    ADD。
    PERFORM。
    IF。
    READ。
    WRITE。

    命令は地味です。

    けれど、その地味さこそが力でした。

    金額を正しく扱う。
    桁を正しく守る。
    帳票を正しく出す。
    履歴を正しく残す。
    監査で説明できるようにする。

    COBOLは、社会の裏側で、金と記録を動かしていました。

    『見た目は地味じゃろう。だが、地味だからよいのじゃ。金を扱う処理に、気の利いた魔法はいらん。読めること。追えること。説明できること。それが大事なんじゃ』

    やがて、銀行の風景は変わります。

    ATMが現れました。

    窓口に並ばなくても、現金を下ろせる。
    通帳を入れれば、残高が印字される。
    カードを入れれば、機械が本人確認をする。
    夜でも、休日でも、取引ができる。

    いまでは当たり前のことです。

    しかし、沖田さんの世代にとって、それは銀行員の生活を変える出来事でした。

    『ATMが来たときはな、銀行の奥にあった事務が、機械の中へ吸い込まれていくように見えた。窓口の後ろで人間がやっていた確認や記帳や残高照会が、端末とホストコンピュータの中で動き始めたんじゃ』

    ATMの画面は、利用者から見れば小さな入口です。

    しかし、その奥には、勘定系システムがありました。
    支店の端末がありました。
    夜間バッチがありました。
    残高ファイルがありました。
    取引履歴がありました。
    エラー処理がありました。

    COBOLは、その奥で動いていました。

    『ATMは便利じゃった。だが、便利になればなるほど、裏側の帳尻は厳しくなる。人間が窓口で止めていたものを、機械が通すようになる。すると、機械の側で絶対に間違えてはいかん場所が増えるんじゃ』

    そこから、話は少し横道にそれました。

    COBOLの話をしていたはずなのに、いつの間にか、沖田さんはバブル期の融資の話を始めていました。

    『バブルのころはな、銀行も世の中も、少し酔っておった』

    沖田さんは、黄ばんだ融資稟議書の写しを指で叩きました。

    『信用なんぞ、どこかへ飛んでいった。見るのは担保じゃ。土地じゃ。将来値上がりするという前提じゃ。坪一万円の山林でも、地図とFAXと、もっともらしい事業計画がつけば、稟議書の中では坪一億円になる。人間というものは、帳票に数字が入ると、急に信じたくなるんじゃ』

    土地は下がらない。
    担保があるから大丈夫。
    将来上がるから大丈夫。
    返済原資は値上がり益で十分。
    いま貸さなければ、他行に取られる。

    それが、バブル期の空気でした。

    沖田さんは、少し苦笑しました。

    『土地神話というのはな、宗教じゃった。土地は下がらない。担保があるから大丈夫。将来上がるから大丈夫。みんなが同じ夢を見た。夢を見ているあいだは、誰もそれを夢とは呼ばん。合理的な前提と言うんじゃ』

    その数字を、夜ごと処理していたのがCOBOLでした。

    融資残高。
    返済予定。
    担保評価。
    延滞管理。
    引当金。
    不良債権。

    人間が作った神話は、やがて帳票になりました。
    帳票になった神話は、システムの中で毎月処理されました。

    『土地神話は人間が作った。だが、その数字を毎月処理していたのはシステムじゃ。人間が酔って、機械が帳尻を合わせる。そういう時代だったんじゃ』

    人間が酔い、機械が帳尻を合わせる。

    その言葉は、COBOLの本質に近いものでした。

    COBOLは、夢を見ません。

    土地が上がるとも言いません。
    担保が安全だとも言いません。
    融資が正しいとも間違っているとも言いません。

    ただ、入力された数字を処理します。
    残高を更新し、利息を計算し、返済予定を出し、延滞を記録し、帳票を吐き出します。

    沖田さんは、そこでふいに、現代の話を始めました。

    『最近も、似た匂いがするな』

    何のことかと尋ねると、沖田さんは、わざとらしく咳払いをしました。

    『いや、誰とは言わん。ソドムバンクの孫田正義とかいう人物が、AIだ、ASIだ、全知全能だ、人類の叡智が一万倍だ、と言っておるような話を聞くとな、わしらの世代は、少し鼻がむずむずするんじゃ』

    沖田さんは、湯呑みに手を伸ばしました。

    『土地神話のころも、同じじゃった。土地があるから大丈夫。担保があるから大丈夫。将来上がるから大丈夫。今度は、AIがあるから大丈夫。計算資源があるから大丈夫。データセンターがあるから大丈夫。将来、全部賢くなるから大丈夫。言葉は変わったが、匂いは似ておる』

    COBOLの話から、ずいぶん遠くへ来たように見えます。

    けれど、沖田さんにとって、それは同じ話でした。

    土地神話も、AI神話も、未来の価値を現在の信用に変える装置です。

    まだ実現していない未来。
    まだ生まれていない収益。
    まだ証明されていない生産性。
    まだ存在しない市場。

    それらを、現在の投資や融資や株価や社債の説明に使う。

    沖田さんは、古い銀行員らしく、そこに同じ匂いを感じていました。

    『未来が明るいと言えば、現在の借金が軽く見える。これは昔から同じじゃ。土地でも、AIでも、宇宙でも、メタバースでも、名前は何でもよい。未来を担保にして金を借りるとき、人間は、だいたい同じ顔をする』

    その言葉には、年寄りの冷笑だけではなく、帳尻を見てきた者の実感がありました。

    バブルの怖さは、数字がないことではありません。

    むしろ、数字がありすぎることです。

    表がある。
    グラフがある。
    前提がある。
    シナリオがある。
    将来価値がある。
    担保評価がある。
    成長率がある。

    けれど、その前提が現実とつながっているかどうかを、誰も最後まで確かめない。

    『バブルの怖さはな、数字がないことではない。数字がありすぎることなんじゃ。表もある。グラフもある。前提もある。シナリオもある。だが、その前提が現実とつながっているかどうかを、誰も最後まで確かめない。そういう時代は危ない』

    土地神話の時代、人々は土地価格の上昇を前提にしました。
    AI神話の時代、人々は計算能力と知能の上昇を前提にしています。

    どちらも、未来の価値を現在の信用に変える仕組みです。

    違うのは、担保が土地から知能へ変わったことです。

    『昔は、土地が担保じゃった。今は、未来の知能が担保になっておる。だがな、担保というものは、いざというとき換金できなければ意味がない。全知全能のAIが本当に返済してくれるのか。そこを聞くと、急に話が抽象的になるんじゃ』

    沖田さんは、そこで笑いました。

    皮肉というより、昔見た景色をまた見ている老人の笑いでした。

    『土地神話のあとには、不良債権が残った。AI神話のあとに何が残るかは、まだ分からん。だが、一つだけ言える。最後に帳尻を合わせるのは、いつも神話を語った者ではない。帳票を読める者じゃ』

    COBOLは、神話を語りません。

    AIが世界を救うとも言いません。
    土地が永遠に上がるとも言いません。
    人類の叡智が何倍になるとも言いません。
    来期から急に黒字化するとも言いません。

    ただ、数字を残します。

    残高。
    返済予定。
    利息。
    延滞。
    引当金。
    評価損。
    処理日。
    例外区分。
    帳票番号。

    人間は神話を作ります。
    COBOLは、その神話が壊れたあとの数字を処理します。

    『人間は神話を作る。機械は、その神話が壊れたあとの数字を処理する。COBOLは、そういう汚れ仕事をずっとやってきたんじゃ』

    やがて時代は、さらに変わりました。

    オープン系。
    クライアントサーバー。
    Windows。
    インターネット。
    Webシステム。
    クラウド。
    スマートフォン。
    生成AI。

    新しい言葉が次々に現れました。

    COBOLは、古いと言われるようになります。

    黒い画面。
    古い端末。
    分厚い仕様書。
    長い変数名。
    大量の帳票。
    謎のバッチ処理。
    退職した担当者。

    そうしたものが、古いシステムの象徴として語られるようになりました。

    しかし、COBOLは簡単には消えませんでした。

    なぜでしょうか。

    沖田さんは、静かに言いました。

    『古いから残っているのではない。動いているから残っているんじゃ』

    古いから悪い。
    新しいから良い。

    そのように単純には分けられません。

    古いシステムには、古いだけの理由があります。
    長く使われたということは、長く現実に耐えてきたということでもあります。

    制度変更。
    税制改正。
    金融再編。
    支店統合。
    商品追加。
    例外処理。
    過去データ。
    古い契約。
    監査対応。

    何十年もの変更が、コードの中に積み重なっています。

    それは、美しい設計ではないかもしれません。
    しかし、現実の履歴そのものです。

    『この厚さはな、無駄の厚さではない。社会の都合の厚さじゃ。制度が変わる。会社が合併する。例外が増える。古い契約を残したまま、新しい商品を入れる。そういうものを全部背負って、この厚さになる』

    COBOLシステムの怖さは、コードだけを見ても分からないところにあります。

    そこには、業務があります。
    制度があります。
    例外があります。
    過去の約束があります。
    監査があります。
    利用者の生活があります。

    プログラムを書き換えるだけなら、できるかもしれません。
    しかし、社会の記憶を丸ごと移すことは簡単ではありません。

    『COBOLを別の言語に変えるだけなら、若い人にもできるかもしれん。AIにも、それらしい変換はできるかもしれん。だが、なぜその処理があるのか。なぜその例外が残っているのか。なぜその一行だけ、昔の契約者を別扱いしているのか。それが分からんまま置き換えれば、必ず事故になる』

    COBOLのプログラムには、現場の歴史が埋まっています。

    ある支店だけ処理が違う。
    ある年度だけ税率が違う。
    ある契約だけ計算方法が違う。
    ある顧客区分だけ出力帳票が違う。
    ある融資だけ担保評価が特殊になっている。

    それは、設計として美しくないかもしれません。
    けれど、現実は美しくありません。

    社会制度は、きれいなデータモデルのために存在しているわけではないからです。

    『若い人は、なぜこんな汚い処理が残っているのかと言う。気持ちは分かる。だがな、その汚さは、現実を引き受けた跡なんじゃ。きれいなコードだけで社会が動くなら、誰も苦労はせん』

    現在、私たちはAIによるコード生成を目にしています。

    AIは、COBOLのコードを説明できます。
    別の言語へ変換することもできます。
    コメントを追加することもできます。
    テストケースの案を出すこともできます。

    それは、役に立つ可能性があります。

    けれど、沖田さんは慎重です。

    『AIは、書かれているものは読めるかもしれん。だが、書かれていない理由までは読めん。なぜその仕様になったのか。誰が何に困って、その処理を入れたのか。どの制度改正で、どこを触ったのか。そこを知らずに変換だけしても、安心はできん』

    コードは、すべてを語りません。

    特にCOBOLの世界では、コードの外側にある業務知識が重要です。

    金額の丸め方。
    締め日。
    支払日。
    休日処理。
    旧制度の残し方。
    監査用の履歴。
    帳票の並び順。
    画面に出ないが、現場が見ている項目。

    それらは、単なる技術仕様ではありません。

    社会の運用そのものです。

    『AIが間違うこと自体は、問題ではない。人間も間違える。問題は、間違い方が分からんことじゃ。なぜそう判断したのか。どの前提でそう変換したのか。そこが見えなければ、基幹システムには載せられん』

    アセンブラの真田さんは、機械の一クロックの怖さを語りました。

    沖田さんが語るのは、社会の一件の怖さです。

    一件の給与。
    一件の年金。
    一件の保険契約。
    一件の振込。
    一件の税額。
    一件の残高。
    一件の融資。
    一件の担保評価。

    それは、単なるデータではありません。
    誰かの暮らしです。

    『勘定が一円合わんというのはな、技術者にとっては一円では済まんのじゃ。どこかで何かを間違えたということじゃ。そこを突き止めるまで、終わってはいかん』

    バグがあれば、あとで直せばよい。

    現在のソフトウェア文化には、そうした感覚があります。
    アプリは更新されます。
    クラウドサービスも更新されます。
    ブラウザも更新されます。
    AIモデルも更新されます。

    しかし、COBOLが支えてきた領域では、あとで直すという言葉に限界があります。

    給与が誤って振り込まれたあと。
    年金記録が壊れたあと。
    残高が食い違ったあと。
    税額が誤計算されたあと。
    保険金の支払いが止まったあと。
    融資残高が誤って処理されたあと。

    その『あと』は、人の生活に直接触れます。

    沖田さんは、はっきりと言いました。

    『あとで直します、という言葉が通じる場所と、通じない場所がある。給与、年金、残高、保険、税金、融資。こういうものは、間違えてから直せばよいとは言えん。間違えた瞬間に、もう誰かの生活を揺らしている』

    COBOLは、古くなったから嫌われたのではありません。

    見えなくなったから、軽く見られるようになったのです。

    画面の裏側。
    帳票の奥。
    夜間処理の中。
    汎用機の奥。
    誰も見ないログの向こう。

    そこに、COBOLは残りました。

    派手ではありません。
    華やかでもありません。
    けれど、社会が朝を迎えるために、夜のあいだ動き続けていました。

    沖田さんは、古い磁気テープのケースを手に取りました。

    『昔はな、夜に仕事を流して、朝に結果を見る。異常終了しておれば、そこから原因を追う。眠れん夜もあった。だが、朝になれば銀行は開く。役所も開く。会社も動く。止めるわけにはいかんかった』

    止めるわけにはいかない。

    その一言に、COBOLの現場の本質があります。

    アセンブラは、機械の鼓動を聞く言語でした。
    COBOLは、社会の脈を止めない言語でした。

    AI時代の私たちは、新しさに目を奪われます。

    高速化。
    自動化。
    生成。
    最適化。
    置き換え。
    刷新。

    どれも必要です。

    しかし、刷新という言葉は、時に危うさを隠します。

    何を捨てるのか。
    何を移すのか。
    何を残すのか。
    どの例外を守るのか。
    誰の生活に触れるのか。
    どの神話の帳尻を、誰が引き受けるのか。

    それを知らないまま、古いものを消すことはできません。

    沖田さんは、最後にこう言いました。

    『古いシステムを守れと言っているのではない。いつかは変えねばならん。だが、変えるなら、何を受け継ぐのかを知らねばならん。COBOLを捨てるのはよい。だが、COBOLが背負ってきたものまで捨ててはいかん』

    書斎の窓の外では、夕方の光がゆっくり沈んでいました。

    机の上には、古い仕様書が積まれています。
    その紙の束は、古い技術の残骸のようにも見えます。
    けれど、よく見れば、それは社会が自分自身を記録してきた痕跡でもありました。

    顧客番号。
    支払日。
    契約区分。
    税率。
    控除額。
    残高。
    融資残高。
    担保評価。
    履歴。
    例外処理。

    一つひとつは地味です。

    しかし、その地味な一行一行が、人の暮らしとつながっていました。

    COBOL。

    それは、過去の言語ではありません。

    過去を背負ったまま、現在を止めないための言語でした。

    そして、その言語を読める人が減っていることは、単なる技術継承の問題ではありません。

    社会の記憶を、誰が読み解くのかという問題です。

    最後に、沖田十三さんは、分厚い仕様書を閉じて言いました。

    『まず、帳票を見せてもらおう。そこに、その時代が何を信じ、何を間違え、何を隠したかが残っている』

    第三話、COBOL。

    それは、金融と行政の奥底で、社会の血流を止めないために書かれた言語の物語です。

    COBOLは、古い言語ではありません。

    社会が、自分の記憶を機械に預けていた時代の言語なのです。

    次回は、TRON。

    あらゆるものがつながる未来を、スマートフォンよりも前に夢見ていた国産OSの物語を訪ねます。

    文・武智倫太郎

     
     
    情報工学者/週刊バブルウォッチ編集長/『哭きの禿』原作者。 AI、金融、国際政治から日常の珍事まで、真面目に調べて、おかしく書く。 代表作『ボルガレナのボルチンスカヤ』 https://note.com/aiethics496/n/n8d4f9aef7c04

    あなたへのおすすめ