カテゴリー: システム開発内製化

  • (8月2日通信)悪い意味での温故知新――COBOLとノーコードは、なぜ同じ「考古学」になるのか

    まだシステム化していない会社は、
    遅れているのでしょうか?

    私はむしろ、幸運だと思います。

    大企業や金融機関の中には、数十年前に作られたシステムを、今も止められないまま使い続けている組織があります。古いシステムが元気に動いているのではありません。会社や社会の仕事が依存し過ぎて、止めることも、簡単に取り替えることもできないのです。

    有り体に言えば、システムがゾンビ化しています。

    その象徴として、よく名前が挙がるのがCOBOLです。

    しかし、COBOLという古いプログラミング言語そのものが悪いわけではありません。問題は、人間が業務の仕組みを説明できなくなり、コードだけが動き続けていることです。

    そして、この問題は過去の話ではありません。

    最新のノーコードでも、同じ状態は作れます。

    COBOLは、なぜ金融機関の中枢に入ったのか

    COBOLは「Common Business Oriented Language」、日本語にすれば「共通事務処理用言語」です。

    1959年、コンピュータメーカー、利用企業、米国政府関係者らが参加したCODASYLという組織によって開発が始まりました。当時は、メーカーや機種が変わるとプログラムをそのまま移せないことが珍しくありませんでした。そこで、異なるコンピュータでも利用しやすく、企業の事務処理を共通の形式で記述できる言語が求められたのです。最初の仕様は1960年に公表され、その後1968年に標準化されました。IBMのCOBOL解説米国国立標準局のCODASYL COBOL資料

    COBOLは、科学技術計算よりも、企業の大量の事務処理を得意とします。

    顧客番号、口座番号、日付、金額など、決まった形式のデータを「レコード」として扱う。大量のデータを順番に読み、集計し、更新し、帳票を出す。円やドルのような金額を、2進浮動小数点の誤差に任せず10進数として正確に扱う。こうした特徴は、給与計算、請求、保険、年金、予約、そして銀行業務と非常に相性が良いものでした。IBMは現在も、packed decimalを金融計算などで大きな数値を正確に扱う形式として説明しています

    金融機関では、預金、引き出し、振込、利息、手数料、融資、為替、締め処理、帳票作成など、膨大な定型取引を正確に処理する必要があります。そこで、大量処理と安定稼働を得意とするメインフレームと、その上で事務処理を記述するCOBOLの組み合わせが、中枢システムへ深く入り込んでいきました。

    COBOLが今日まで残ったのは、役に立たなかったからではありません。

    むしろ、よく働き、金融機関の中枢を支えることに成功したからです。

    IPAが通信社ロイターの推計として紹介している数字では、COBOLは銀行システムの43%、個人取引の80%、ATMの95%に関係し、世界で約2,200億行のプログラムが稼働しているとされます。数字の定義には幅があるとしても、COBOLが現在も社会基盤を支えていることは間違いありません。IPA「レガシーシステムモダン化と、生き続けるCOBOLのリアル」

    COBOLは、いつ「考古学」になったのか

    最初に作ったプログラムが、そのまま何十年も残っているわけではありません。

    新商品が増える。法制度が変わる。手数料体系が変わる。店舗、ATM、インターネットバンキング、スマートフォンアプリが接続される。他の金融機関や決済網との連携も増える。

    そのたびに改修を重ね、例外処理と暫定対応を積み上げた結果、システムは金融機関の業務史そのものになりました。

    ところが、コードを書いた技術者は退職します。組織も変わります。委託先も変わります。設計書が更新されなければ、文書と実際の処理が少しずつ離れていきます。そして最後には、なぜその条件分岐が必要なのか、なぜそのデータを翌日へ繰り越すのか、誰も説明できなくなります。

    こうなると、システム開発ではありません。

    考古学です。

    コード、データベース、ログ、帳票、バッチ処理、昔の操作手順、ベテラン社員の記憶を「遺物」として集め、失われた業務仕様を発掘することになります。

    COBOLが古いのではありません。

    仕様が失われ、COBOLのコードが唯一の史料になっているのです。

    反対に、設計の目的、データの意味、判断条件、例外処理、外部システムとの関係、テスト条件まで、現行システムと一致した状態で残っていれば、COBOLから別の技術へ移すことはできます。簡単ではなくても、「変えられない」わけではありません。

    IBMも、COBOLの刷新は単なる別言語への翻訳ではなく、データ構造、実行基盤、外部連携、取引の整合性まで含むシステム全体の設計課題だと説明しています。IBM「What Is COBOL?」

    つまり、移行を難しくしている根本原因は、COBOLの文法ではありません。

    人間が、現在のシステムの意味を失っていることです。

    動いているのではない。止められない

    金融システムの難しさは、発掘調査のために簡単に止められないことです。

    日本の全銀システムは、国内のほぼすべての預金取扱金融機関を接続し、振込や送金をオンラインで処理しています。2018年からは24時間365日稼働となり、2023年実績で年間約20億件、約3,671兆円を取り扱ったとされています。日本銀行掲載「全銀ネットの取組みについて」

    もちろん、金融機関のすべてのシステムがCOBOLで動いているわけではありません。しかし金融サービス全体が24時間化したことで、中枢にある古い処理ほど、停止して一気に入れ替えることが難しくなりました。

    これは、宇宙空間を飛び続ける人工衛星を、地上から修理するようなものです。

    地上へ持ち帰れない。長時間停止できない。設計者はいない。設計図も完全ではない。それでも指令を送り、一部分ずつ動作を確認しながら修理しなければなりません。一つの判断を誤れば、通信そのものが途絶える危険があります。

    飛行機にたとえるなら、乗客を乗せて飛び続ける旅客機のジェットエンジンを、一基ずつ止めて修理するような状況です。

    だから古いシステムを一度に捨てるのではなく、旧システムを動かしたまま、新旧を並行稼働させ、処理を少しずつ移します。止められないから、複雑な移行になるのです。

    最新のノーコードが、なぜCOBOLと似ているのか

    ここまで読むと、「それは何十年も前の技術で作ったから起きた問題だ」と思うかもしれません。

    しかし、最新のノーコードでも、同じ構造は生まれます。

    ノーコードを否定するつもりはありません。試作品を早く作る、受付画面を用意する、情報を集める、小さな業務を自動化する。こうした用途では、ノーコードは非常に優れた道具です。

    問題は、社内の誰も理解していない処理によって、会社の仕事が勝手に進むことです。

    画面上で部品をつなげれば動く。担当者が設定した自動処理が、顧客へ連絡し、データを書き換え、承認を進め、請求情報を作る。しかし組織として、次の問いに答えられない。

    • 何をきっかけに処理が始まるのか
    • どの条件で判断が分かれるのか
    • どのデータが変更されるのか
    • 誰に何の権限があるのか
    • 例外が起きたとき、どこまで戻すのか
    • そのサービスをやめるとき、別の仕組みへ移せるのか

    これでは、仕事は動いていても、人間が業務を管理しているとは言えません。

    COBOLは、数十年かけて設計書と担当者を失い、ブラックボックスになりました。

    ノーコードは、設計と運用を残さなければ、導入初日からブラックボックスになれます。

    Microsoft 365の成熟度モデルでも、未成熟なノーコード/ローコード運用について、「その場で」作られ、設計・構築過程の文書がなく、ソース管理に相当する仕組みもなく、少数の詳しい人へ保守が依存する状態が挙げられています。一方、成熟した運用には、文書化、ソース管理、開発・テスト・本番環境の分離、そしてノーコード・ローコード・プロコードを切り替える判断が必要だとされています。Microsoft 365 Maturity Model

    つまり、問題はコードを書くか、書かないかではありません。

    組織が仕組みを理解し、責任を持って変更できるかどうかです。

    レガシーとは「古いシステム」ではない

    レガシーシステムという言葉は、古い言語、古いコンピュータ、古い画面を指すものとして使われがちです。

    しかし本質は、古さではありません。

    人間が、なぜその処理になるのか説明できない。安全に変更できない。止められない。別の仕組みへ移せない。

    その状態になったとき、今日作った最新システムであっても、既にレガシー化は始まっています。

    言い換えれば、レガシーシステムとは、古いシステムではありません。

    変更と廃止の方法を失ったシステムです。

    まだシステム化していない企業は、幸運である

    だから、現時点で十分にシステム化していない企業は、それを遅れとだけ考える必要はありません。

    過去のデータ形式に縛られていない。何十年分もの例外処理を抱えていない。24時間止められない旧システムもない。失われた仕様を発掘する必要もない。

    現在の業務を整理し、生成AI時代に合った仕組みを、最初から設計できます。

    ただし、焦って業務を既製SaaSやノーコードへ押し込めば、今から新しいゾンビを作ることになります。

    試作、受付、情報収集、画面づくりには、ノーコードを積極的に使えばよいでしょう。一方で、会計、請求、在庫、権限、会社資産を変化させる処理は、誰が読んでも判断根拠を追え、テストでき、移行できる形で設計する必要があります。

    重要なのは、すべてをコードにすることでも、すべてをノーコードにすることでもありません。

    会社の中に、業務の意味を理解している人間を残すことです。

    悪い意味での温故知新にしない

    COBOLから学ぶべきなのは、「古い言語を使ってはいけない」という話ではありません。

    どれほど優れた技術でも、人間が設計の意味を残さず、仕組みを理解できなくなれば、やがて止められないシステムになるという教訓です。

    昔の失敗から学ぶための温故知新が、昔と同じ失敗を最新技術で繰り返す温故知新になってはいけません。

    COBOLは、数十年かけて考古学になりました。

    ノーコードを、導入初日から考古学にしてはいけないのです。

  • (7月30日通信)ノーコードを学ぶのが危険なのではない。「ノーコードだけ」を仕事にするのが危険なのだ

    「今からノーコードを学ぶのは危険です」という動画を見ました。

    動画で挙げられていたのは、ノーコードだけを身につけて仕事にしようとする場合の、三つの問題です。

    一つ目は、誰でも扱いやすいため、作業単価が上がりにくいこと。
    二つ目は、参入しやすいうえにAIの支援まで加わり、競争相手が増え続けること。
    三つ目は、簡単なWebサイトなど、初心者が受けていた案件そのものを、発注者がAIで処理できるようになってきたことです。

    この見方には、私もおおむね賛成です。

    ただし、危険なのはノーコードそのものではありません。ノーコードツールの操作方法を覚えることと、価値のあるシステムを作れることを、同じだと考えてしまうことが危険なのです。

    「誰でも使える」は、ツールとしては長所、職業としては弱点になる

    ノーコードツールの最大の長所は、専門の技術者でなくても扱えることです。

    ところが、その操作自体を商品にしようとすると、この長所がそのまま弱点になります。依頼者自身でもできる作業であれば、当然ながら高い報酬はつきにくくなります。AIによって操作や制作がさらに簡単になれば、価格競争は一層激しくなるでしょう。

    これはノーコードに限った話ではありません。

    テンプレートに文字と画像を入れるだけのWeb制作、指示どおりに生成AIへ入力するだけの文章作成、決められた項目を表計算ソフトへ転記するだけの作業も、同じ方向へ進みます。

    「そのツールを使える」だけでは、専門性を維持しにくい時代になりました。

    それでもノーコードはなくならない

    では、ノーコードは不要になるのでしょうか。

    私は、むしろ利用範囲は広がると考えています。

    CMSの管理画面や表計算ソフト、業務アプリの設定画面も、広い意味では複雑な処理を画面操作で扱えるようにした仕組みです。ノーコードとは、コードが消えた状態ではありません。誰かが書いたコードを、利用者が意識せずに使えるようにした状態です。

    この仕組みは、業務の試作に非常に向いています。

    まず画面を作り、実際の担当者に触ってもらう。業務報告を入力してもらい、不足している項目や承認の流れを確認する。関係者から「あの項目も必要」「この順番では使いにくい」といった意見を集める。

    言葉だけで要件を決めるより、動くものを見ながら仕様を発見する方が早い場面は多くあります。その段階で、CMSや表計算サービスを使うことには大きな意味があります。

    つまり、ノーコードは「完成したシステムを作る魔法」ではなく、「業務を見える形にして、必要なシステムを発見する道具」として使えばよいのです。

    AI時代に価値が上がるのは、作業ではなく判断である

    生成AIは、HTMLやCSSだけでなく、プログラムのコードも書けるようになりました。

    その結果、コードを一文字ずつ入力する速さの価値は下がっています。一方で、AIが出したものを読み、目的に照らして正しいかを判断する価値は上がっています。

    Webサイトであれば、スマートフォンで崩れないか、表示が遅くないか、入力チェックが機能しているかを判断する必要があります。

    業務システムであれば、さらに重要な判断が加わります。

    • 誰が、どの情報を見られるのか
    • 誰が、どの処理を実行できるのか
    • データをどの単位で管理するのか
    • 変更前の状態を後から確認できるのか
    • 複数の更新を一つの取引として矛盾なく処理できるのか
    • エラーが起きたときに、どこまで元へ戻せるのか

    画面が動くことと、会社の業務を任せられることは別問題です。

    生成AIにコードを書かせることはできます。しかし、会社の資産や責任の境界までAIへ丸投げすることはできません。何を正しい状態とするのかは、会社側が設計しなければならないからです。

    試作はノーコード、本番の責任は設計とコードで持つ

    私は、ノーコードとコードを対立させる必要はないと考えています。

    たとえば、受付、業務報告、アンケート、簡単な進捗確認であれば、CMSで入力画面を作り、表計算サービスへ情報を蓄積するところから始めてもよいでしょう。まず使ってもらい、現実の業務に合う形へ直していけばよいのです。

    しかし、その情報を請求、会計、在庫、給与、権限管理などへ結びつける段階では、試作品の延長で作ってはいけません。

    会社の資産を変化させる処理では、データの構造、権限、承認、取引の一貫性、変更履歴を整理し、必要に応じて様々なオープン・ソース・ソフトウェア(公開されているソフトウェア)などを使って、人間が把握できるコードとして実装する必要があります。

    ノーコードで画面を作りながら仕様を見つける。
    コードで業務上の責任と整合性を保証する。

    この二段階を分けることが、AI時代の現実的な内製化だと思います。

    学ぶべきなのは、ツール名ではなく「境界線」である

    今からノーコードを学ぶこと自体が危険なのではありません。

    危険なのは、特定のツールの操作方法だけを覚え、そのツールで対応できない問題まで解決できると思い込むことです。

    学ぶ際には、少なくとも次の点を意識する必要があります。

    • そのツールで安全に扱える業務はどこまでか
    • どの段階からデータベースや権限設計が必要になるか
    • AIが生成した結果を自分で検証できるか
    • 将来ツールを変更するとき、データを取り出せるか
    • 自社の業務と会社資産の構造を説明できるか

    ノーコードの操作だけを売る人の仕事は、AIによって減るかもしれません。

    しかし、現場の業務を理解し、ノーコードで素早く試作し、必要な部分を設計とコードへ移せる人の仕事は、むしろ増えるはずです。

    AIとノーコードが省いてくれるのは、制作にかかる手間です。設計者の責任まで省いてくれるわけではありません。

    これから学ぶべきなのは、特定のノーコードツールではなく、ノーコードをどこまで使い、どこから先をコードで管理するのかという「境界線」なのです。