こんにちは、阿久梨絵です。
街中の ATM 。
お金を引き出したり、振り込んだり、残高を確認したり…。
毎日のように使うのに、ふと考えると不思議じゃありませんか。
「ATM って、何のプログラミング言語で動いているの?」
「スマホアプリみたいに JavaScript? それとも Python?」
「銀行って最新技術を使ってるの?」
実はこの疑問、
“銀行システムの歴史”と“安全性”の話が深く関わっていて、
とても奥が深いんです。
この記事では、
ATM がどんな言語で作られているのか、
なぜその言語が選ばれているのかを、初心者にもわかりやすく解説します。
結論:ATM の多くは COBOL(コボル) で動いている
そして OS は 専用の組み込み OS や Windows Embedded が多い
ATM の世界は、
スマホアプリや Web サービスとはまったく違う文化で動いている。
・COBOL(コボル)
・C / C++
・Java(銀行によっては採用)
・専用の組み込み言語
こうした“堅牢で歴史のある言語”が中心。
① なぜ COBOL が多いの?
→ 銀行システムの歴史と「絶対に止められない」世界だから
COBOL は 1960 年代から使われている古い言語。
でも、銀行の世界では今も現役。
理由はシンプル。
・お金を扱う処理に強い(桁数・精度)
・大量の取引を高速に処理できる
・何十年も動き続けてきた実績がある
・止めると社会が止まるため、簡単に作り直せない
銀行の基幹システムは、
「動いているものを無理に変えない」という文化が強い。
そのため、ATM の裏側も COBOL が多い。
② ATM 本体は何で動いているの?
→ OS は「Windows Embedded」や「専用 OS」
ATM はパソコンに似ているけれど、
普通の Windows ではなく 専用の組み込み OS が使われる。
例
・Windows Embedded / Windows 10 IoT
・Linux ベースの専用 OS
・銀行独自の組み込み OS
理由は、
・セキュリティが高い
・不要な機能を削って安定性を確保
・長期間(10年以上)同じ環境で動かせる
・外部からの攻撃に強い
ATM は「10年動き続けること」が前提なので、
一般向け OS とは設計思想が違う。
③ ATM の画面や操作部分は何で作られているの?
→ C / C++ や Java が多い
ATM の画面(UI)は、
COBOL ではなく C / C++ や Java で作られることが多い。
理由は、
・グラフィック表示が必要
・タッチパネル対応
・ハードウェア制御が必要
・外部機器(カードリーダー、紙幣機)との連携が複雑
つまり、
・お金の処理 → COBOL
・画面や操作 → C / C++ / Java
という分業になっている。
④ なぜ Python や JavaScript は使われないの?
→ ATM は「絶対に止められない」世界だから
ATM は、
・24時間365日動く
・停止すると社会問題になる
・セキュリティが最重要
・数十年単位で運用する
こうした理由から、
最新言語よりも“実績のある堅牢な言語”が選ばれる。
Python や JavaScript は便利だけど、
ATM のようなミッションクリティカルなシステムには向かない。
まとめ
・ATM の多くは COBOL で動いている
・OS は Windows Embedded や 専用組み込み OS
・画面部分は C / C++ / Java
・最新言語より「止まらないこと」が最優先
・銀行システムは“歴史と信頼性”が最重要
ATM は、
最新技術のショーケースではなく、社会を支える“安定の象徴”と言えます。
阿久梨絵でした!
