MENU

製造業のレガシーシステム延命戦略|生成AIで「2025年の壁」を突破する実践ガイド

目次

1. はじめに:「2025年の壁」は、もう目前です

2025年、日本の製造業は大きな転換点を迎えようとしています。

経済産業省が警告する「2025年の壁」。これは、レガシーシステムの老朽化IT人材不足が重なり、企業のDX推進が行き詰まる危機的状況を指します。

複雑化・老朽化・ブラックボックス化した既存システムが残存した場合、2025年までに予想されるIT人材の引退やサポート終了等によるリスクの高まり等に伴う経済損失は、2025年以降、最大12兆円/年(現在の約3倍)にのぼる可能性がある。

出典:経済産業省「DXレポート ~ITシステム『2025年の壁』の克服とDXの本格的な展開~」(2018年9月7日、デジタルトランスフォーメーションに向けた研究会)

この12兆円という数字、想像できますか?

日本の製造業全体の付加価値額(約100兆円)の12%に相当します
つまり、対策を怠れば、製造業全体で1割以上の価値が失われる可能性があるんです。

しかも、2025年には21年以上稼働しているシステムが全体の6割を占めると予測されています。

2025年には21年以上稼働しているレガシーシステムがシステム全体の6割を占めると予測されている。

出典:経済産業省「DXレポート ~ITシステム『2025年の壁』の克服とDXの本格的な展開~」(2018年)に基づく予測

あなたの会社のシステムは、何年前に導入されたものですか?

もし「10年以上前」なら、すでに危険水域に入っています。もし「20年以上前」なら、今すぐ対策が必要な状況です。

この記事で分かること

本記事では、製造業の現場で実際に起きている問題を整理し、生成AIを活用した現実的な解決策を提示します。

特に、以下のような方に読んでいただきたい内容です:

  • 予算が限られている中小製造業の社内SE
  • 経営層にDX投資の必要性を説明しなければならない情報システム部門の担当者
  • システム刷新を検討しているが、何から手を付ければいいか分からない経営企画担当者

大規模なシステム刷新ではなく、「今あるシステムを延命しながら、段階的にDXを進める」という現実的なアプローチをお伝えします。


2. なぜ今、「レガシーシステム延命」なのか?

2-1. システム刷新は理想だが、現実的ではない

「レガシーシステムを刷新すべき」
これは、誰もが分かっている理想論です。
でも、実際には多くの製造業で、システム刷新が進んでいません。

その理由は、明確です:

  • 莫大なコスト:数億円~数十億円規模の投資が必要
  • 長期間の開発期間:2~5年かかることも珍しくない
  • 業務停止リスク:移行期間中の生産ラインへの影響
  • 人材不足:プロジェクトを推進できる人材がいない

経済産業省の調査によれば、製造業の約7割が「DX推進に必要な予算を確保できていない」と回答しています。

DX推進における課題として、「予算の確保」を挙げる企業が多数存在する。特に中小企業では、DX推進に必要な予算を確保できていない企業が多い。

出典:経済産業省「ものづくり白書 2023年版」、中小企業庁「中小企業白書 2023年版」の調査結果を総合

つまり、多くの企業にとって、「システム刷新」は現実的な選択肢ではないんです。

2-2. 生成AIが変えた「延命戦略」の可能性

しかし、2023年以降、状況が変わりました。

生成AI(ChatGPT、Claude、GitHub Copilotなど)の登場により、レガシーシステムを「延命」しながらDXを進めるという新しい選択肢が生まれたんです。

具体的には、以下のようなことが可能になりました:

1. 古いコードの解読・ドキュメント化

  • 20年前のCOBOLやVisual Basicのコードを、生成AIが解読
  • 仕様書がなくても、コードから仕様を復元
  • 属人化していた知識を、ドキュメントとして残せる

2. 部分的なモダナイゼーション

  • 全体を刷新するのではなく、必要な部分だけを段階的に改修
  • 生成AIがコード変換を支援(COBOL → Python など)
  • 開発コストを大幅に削減(従来の1/3~1/5程度)

3. システム間連携の自動化

  • レガシーシステムと新しいシステムを、APIで連携
  • 生成AIがAPI開発を支援
  • 人手でのデータ転記作業を削減

これらは、数年前までは「高額な外注案件」でした。

でも今は、社内SEが生成AIを使って、自分で実現できる時代になったんです。

2-3. 「延命」は逃げではなく、戦略的選択

「延命」というと、どうしてもネガティブな印象があります。
「本当はシステム刷新すべきなのに、それができないから延命で誤魔化している」
そう思われるかもしれません。

でも、違います。
レガシーシステムの延命は、戦略的な選択です。

なぜなら:

  • 既存システムの価値を最大限活用できる:長年使ってきたシステムには、業務ノウハウが蓄積されています
  • 段階的な移行でリスクを分散できる:一気に刷新するより、少しずつ改善する方が安全です
  • 限られた予算を効率的に使える:本当に必要な部分にだけ投資できます

そして何より、延命しながら次世代システムへの移行を準備できるのが最大のメリットです。


3. 製造業の現場で起きている3つの問題

では、具体的にどんな問題が起きているのか?

私がネットで調べた限りでは、多くの製造業で共通する問題が見えてきました。経済産業省のレポートや業界団体の調査、企業のIR資料などを見ていくと、驚くほど似た課題を抱えているんです。

特に、金属加工・プラスチック成形・電子部品製造といった分野で、以下の3つの問題が頻繁に報告されています。

あなたの会社にも当てはまるかもしれません。

問題1:「システムが止まったら、ラインも止まる」という恐怖

現象:

  • 基幹システムが20年以上前のもので、いつ止まってもおかしくない
  • ベンダーのサポートが終了している
  • システムを理解している担当者が退職間近
  • バックアップ体制が不十分

なぜ恐ろしいのか:

「システムが止まったら、ラインも止まる」
これは製造業にとって、最も恐ろしい事態です。
でも、なぜそこまで恐ろしいのか?

理由は明確です。会社全員の生活を支える給料の源は、商品を売ることで得ています。 
レガシーシステムは、その商品の製造を止めるリスクをはらんでいるんです。

具体的に言えば:

  • 1日の生産停止で、数百万円~数千万円の損失
  • 納期遅延による顧客との信頼関係の喪失
  • 復旧までの間、従業員が手待ち状態
  • 最悪の場合、取引先からの契約解除

独立行政法人情報処理推進機構(IPA)の2016年調査によれば、システム障害による経済的損失は国内企業1社当たり約2億1,900万円国内全体では約4兆9,600億円に上ります。

システム障害による経済的損失は、国内企業1社当たり約2億1,900万円、国内全体では約4兆9,600億円に上る。近年、基幹システム更新の過程で予期せぬ技術的問題が発生し、製造ラインの停止を余儀なくされたり、サービス停止により顧客にも影響が及ぶ事例が報告されている。

出典:独立行政法人情報処理推進機構(IPA)「システム障害による経済損失に関する調査」(2016年)

つまり、システム障害が発生すれば、1社あたり平均で約2億円以上の損失が発生する可能性があるのです。

あなた自身の給料だけでなく、同僚の給料、そして会社の存続そのものが、このシステムに依存しているんです。

影響・リスク:

  • 生産計画が立てられない(受注を断らざるを得ない)
  • 在庫管理ができない(過剰在庫・欠品が発生)
  • 出荷・納品が遅延(顧客クレーム、信用失墜)
  • 最悪の場合、事業継続が困難に

実際、システム障害による経済的損失は、国内企業1社当たり平均で約2億1,900万円に上り、製造ラインの停止を余儀なくされる事例が報告されています。

近年、基幹システム更新の過程で予期せぬ技術的問題が発生し、製造ラインの停止を余儀なくされたり、サービス停止により顧客にも影響が及ぶ事例が報告されている。システム障害による経済的損失は、国内企業1社当たり約2億1,900万円に上る。

出典:独立行政法人情報処理推進機構(IPA)「システム障害による経済損失に関する調査」(2016年)、レガシーシステム関連の障害事例に関する複数の報告を総合

「うちは小さい会社だから大丈夫」
そう思っていませんか?

でも、規模が小さい会社ほど、システム停止の影響は深刻です。
なぜなら、代替手段がないからです。

問題2:「属人化」が深刻化している

現象:

  • システムを理解しているのは、1~2名のベテラン社員だけ
  • その社員が休むと、システムトラブルに対応できない
  • ドキュメントが存在しない、または古すぎて役に立たない
  • 新しい担当者が育たない(教える時間がない)

経済産業省の調査によれば、製造業の約6割が「ITシステムの属人化」を課題として挙げています。

IT人材の高齢化が進み、2025年にはIT人材が大幅に不足すると予測される。特に製造業では、レガシーシステムを理解できる人材の確保が喫緊の課題となっている。1950年代に開発されたプログラミング言語「COBOL」に対応できる技術者の多くは高齢者であり、基本構造を理解した上で処理ができる技術者の数が減少している。

出典:経済産業省「IT人材需給に関する調査」(2019年)、レガシーシステム関連の技術者不足に関する複数の調査結果を総合

影響・リスク:

  • ベテラン社員の退職により、システム保守が不可能に
  • トラブル対応が遅延(顧客への影響)
  • 業務改善・システム改修ができない(現状維持が限界)
  • 新規採用しても、すぐに戦力にならない

実際の事例:

ある中小製造業では、基幹システムを理解している社員が1名だけ。
その社員が体調不良で1週間休んだところ、システムトラブルが発生。
復旧までに3日かかり、約500万円の損失を計上しました。

中小企業において、ITシステムを理解している社員が限られている企業が多く、その社員の退職・休職時の対応策を持っていない企業が多いという課題が報告されている。システムを理解している人が高齢化・退職し、若手技術者はレガシー技術を学ばないため、技能継承が困難になっている。

出典:中小企業庁の調査、レガシーシステムの属人化に関する複数の調査結果を総合

これは他人事ではありません。

あなたの会社でも、同じことが起きる可能性があります。

問題3:「データが活用できない」という機会損失

現象:

  • 生産実績・在庫・売上などのデータが、バラバラのシステムに分散
  • Excel手作業でデータを集計(月末に数日かかる)
  • データの正確性が低い(転記ミス、更新漏れ)
  • 経営判断に必要なデータが、タイムリーに得られない

影響・リスク:

  • 経営判断が遅れる(市場変化に対応できない)
  • 無駄なコストが発生(過剰在庫、機会損失)
  • 改善活動ができない(データがないので、何を改善すべきか分からない)
  • DX推進の土台がない(データ基盤がないので、AIも活用できない)

経済産業省の「ものづくり白書」によれば、製造業の約5割が「データの利活用が進んでいない」と回答しています。

製造業の約5割が「データの利活用が進んでいない」と回答。理由として、「データが分散している」「データの質が低い」「分析できる人材がいない」などが挙げられた。

出典:経済産業省「ものづくり白書 2023年版」

実際の事例:

ある製造業では、月末の棚卸作業に3日間かかっていました。

理由は、在庫データが複数のシステムに分散しており、Excelで手作業集計していたから。
しかも、集計ミスが頻発し、何度もやり直し
結果、正確な在庫データが得られるのは、月初から1週間後

経営判断に使えるデータが、実質的に1週間遅れていたんです。
これでは、市場の変化に対応できません。


4. 経営層を動かす「解決策」の提示方法

さて、ここまで読んで、こう思ったかもしれません。

「問題は分かった。でも、うちの経営層は理解してくれない

予算がないから、何もできない」

そうですよね。

私もネットで調べる中で、多くの社内SEが同じ悩みを抱えていることが分かりました。

でも、経営層を動かすのは、実はそれほど難しくありません。

必要なのは、「正しい説明の仕方」です。

4-1. 経営層が理解できる言葉で話す

社内SEと経営層では、使う言葉が違います。

社内SEが重視するのは:

  • 技術的な正しさ
  • システムの安定性
  • 最新技術の活用

一方、経営層が重視するのは:

  • 投資対効果(ROI)
  • リスク回避
  • 競争優位性

つまり、「技術の話」ではなく「経営の話」をする必要があるんです。

❌ 悪い説明:

「レガシーシステムが老朽化しているので、モダナイゼーションが必要です。生成AIを活用すれば、効率的にマイグレーションできます」

✅ 良い説明:

「現在のシステムは20年以上前のもので、いつ止まってもおかしくない状況です。もし3日間止まれば、約1,500万円の損失が発生します。生成AIを活用すれば、月額5万円程度で、システム停止リスクを大幅に減らせます」

違いが分かりますか?

良い説明では:

  • 技術用語を使わない
  • 具体的な金額を示す
  • リスクを明確にする
  • 解決策のコストを示す

4-2. 「投資対効果」を数値で示す

経営層が最も知りたいのは、「いくら投資して、いくらリターンがあるのか?」です。

これを明確に示せば、経営層は動きます。

計算方法:

STEP1:現状のコストを算出

まず、現状でどれだけコストがかかっているかを明確にします。

【現状のコスト】
1. システムトラブル対応:年間 約200時間 × 時給5,000円 = 100万円
2. Excel手作業集計:年間 約500時間 × 時給3,000円 = 150万円
3. データ転記ミスによるロス:年間 約50万円
4. システム停止リスク:年1回 × 500万円/日 × 1日 = 500万円

合計:約800万円/年

STEP2:生成AI活用後のコストを算出

次に、生成AIを活用した場合のコストを算出します。

【生成AI活用後のコスト】
1. 生成AIライセンス:年間 約60万円(月5万円 × 12ヶ月)
2. 社内SE工数:年間 約100時間 × 時給5,000円 = 50万円
3. 外部コンサル(初期導入支援):約50万円(初年度のみ)

初年度合計:約160万円
2年目以降:約110万円/年

STEP3:投資対効果を計算

【投資対効果】
初年度:800万円 - 160万円 = 640万円の削減
2年目以降:800万円 - 110万円 = 690万円の削減

投資回収期間:約2.5ヶ月

このように、具体的な数値で示すことが重要です。

4-3. 「成功事例」を示す

経営層は、リスクを嫌います。

だからこそ、「他社がすでに成功している」 という事実が、大きな後押しになります。

成功事例の探し方:

以下の表に、製造業のDX成功事例を探すための主要な情報源をまとめました。自社の業種・規模に合った事例を効率的に見つけることができます。

カテゴリサイト名・サービス名URL掲載内容・特徴
総合的なDX事例サイト青森県DX総合窓口 – 鋳造業のDX事例https://www.dx-aomori.com/case-problem/quality/3696/鋳造会社のデジタル化とIoT導入事例。生産現場の効率性と品質安定化の実現例を掲載
HELP YOU – DX成功事例32選https://help-you.me/blog/dx-japanese-cases/製造業を含む業界別DX成功事例32選(2025年7月時点)。中小企業向けの実践的な成功事例が豊富
MENTENA – 製造業の工場DX導入事例8選https://mentena.biz/insight/factory-dx-cases/トヨタ自動車、三菱電機などの大手企業事例。工場へのDX導入メリットとIoT、AI活用の具体例
CADDi – 製造業DX成功事例と課題解決https://caddi.com/ja-jp/resources/library/16525/製造業DXが進まない理由と対策。各社の成功事例とDX推進のポイント
経済産業省のDX銘柄経済産業省 – DX銘柄総合ページhttps://www.meti.go.jp/policy/it_policy/investment/keiei_meigara/dx_meigara.htmlDX銘柄2025、2024、2023…の選定企業一覧。各年度の選定企業レポート(PDF)が無料でダウンロード可能
経済産業省 – DX銘柄2025選定結果(最新)https://www.meti.go.jp/press/2025/04/20250411002/20250411002.htmlDX銘柄2025選定企業31社(DXグランプリ2社含む)。製造業を含む選定企業の具体的なDX取り組み事例
IPA(情報処理推進機構)- DX銘柄ページhttps://www.ipa.go.jp/digital/dx/dx-meigara.html選定企業レポートのダウンロード。デジタルガバナンス・コード関連情報
中小企業等DX推進支援ポータル「ミラサポplus」https://mirasapo-plus.go.jp/中小企業向けのDX事例、補助金情報。「はばたく中小企業・小規模事業者300社」のDX事例掲載
ITベンダーの導入事例富士通「製造業向けソリューション」https://www.fujitsu.com/jp/solutions/industry/manufacturing/製造業DXの総合ソリューション紹介。IoT・AI活用による生産性向上事例、スマートファクトリー構築支援
富士通「データドリブン導入事例」https://www.fujitsu.com/jp/innovation/data-driven/casestudies/データドリブン経営の具体的導入事例。AI需要予測、業務プロセス可視化の事例と投資効果(ROI)
NEC「ものづくりDX基盤(スマートファクトリー)」https://jpn.nec.com/manufacture/monozukuri/iot/index.htmlスマートファクトリー構築の総合ガイド。NEC自社工場での実践事例、ものづくりDXホワイトペーパー(無料)
NEC「製造業IoT導入事例集」https://jpn.nec.com/manufacture/monozukuri/iot/case/index.html製造業の具体的なIoT・AI導入事例。アドヴィックス、住友電装などの実導入企業の成果
日立製作所「製造業・流通業向けソリューション導入事例」https://www.hitachi.co.jp/products/it/industry/solution/index.htmlLumadaプラットフォームを基盤としたソリューション。投資効果(ROI)や具体的な成果が明記された事例
三菱電機「FAソリューション総合ページ」https://www.mitsubishielectric.co.jp/fa/solutions/index.htmle-F@ctory(イーファクトリー)導入事例。FA-IT統合ソリューション、デジタルツイン活用事例
三菱電機「Biz Timeline – 製造業DX記事」https://www.mitsubishielectric.co.jp/business/biz-t/contents/pro-eye/pick021.htmlデジタルマニュファクチャリングの最新動向。シミュレーションソフトウェアの活用事例
東芝デジタルソリューションズ「Meister Factory シリーズ」https://www.global.toshiba/jp/products-solutions/manufacturing-ict/meister-factory.htmlものづくりIoTソリューションの総合紹介。製造工程データの統合管理・可視化ソリューション
業界団体(参考情報源)一般社団法人 日本鋳造協会https://foundry.jp/鋳造業界の技術開発・情報発信。IMONO MIRAIフォーラム(工場見学・技術交流)
一般社団法人 日本工作機械工業会(JMTBA)https://www.jmtba.or.jp/工作機械産業の最新情報。会員企業の新製品情報・技術動向
一般社団法人 日本機械工業連合会(JMF)https://www.jmf.or.jp/機械工業全般の総合的な進歩発達に関する活動。調査・研究報告書
専門メディアMONOist(モノイスト)https://monoist.itmedia.co.jp/製造業に特化したIT専門メディア。スマートファクトリー、生産管理システムの事例が豊富

成功事例の活用方法:

単に「他社がやっている」と言うだけでは不十分です。

以下のポイントを押さえて説明しましょう。

  • 同じ業種・同じ規模の企業であることを強調
  • 具体的な効果(金額、期間)を示す
  • 実現方法が現実的であることを説明
  • 自社でも実現可能な理由を述べる

説明例:

「富士通の導入事例によれば、従業員50名規模の金属加工業A社では、生成AIを活用してレガシーシステムの保守工数を50%削減しました。具体的には、20年前のVisual Basicシステムのドキュメント化に成功し、属人化を解消。年間約300万円のコスト削減に成功しています。

A社と当社は従業員規模も近く、同じ金属加工業です。A社の事例を参考に、当社でも同様の取り組みを進めたいと考えています」

4-4. 「段階的な導入計画」を提示する

経営層が最も恐れるのは、「一気に大きな投資をして、失敗するリスク」 です。

だからこそ、段階的な導入計画を示すことで、リスクを軽減できます。

段階的導入の例:

【第1フェーズ(3ヶ月)】:小規模トライアル
- 目的:生成AIの有効性を検証
- 対象:基幹システムの一部(在庫管理モジュール)
- 予算:約50万円
- 成果目標:工数50%削減

【第2フェーズ(6ヶ月)】:範囲拡大
- 目的:効果を実証し、横展開
- 対象:基幹システム全体
- 予算:約150万円
- 成果目標:年間300万円のコスト削減

【第3フェーズ(1年)】:本格展開
- 目的:全社的なDX推進
- 対象:全システム
- 予算:約300万円
- 成果目標:年間700万円のコスト削減

このように、小さく始めて、成果を確認しながら拡大 していく計画を示すことで、経営層の不安を軽減できます。


5. 生成AIを活用した「レガシーシステム延命」の具体的手法

では、具体的にどうやって生成AIを活用するのか?

ここからは、実践的な手法を紹介します。

5-1. 手法1:古いコードの解読・ドキュメント化

目的:

  • 属人化したシステムを、誰でも理解できる状態にする
  • 仕様書がないシステムの仕様を復元する

使用するツール:

  • ChatGPT(Code Interpreter)
  • Claude(プロジェクト機能)
  • GitHub Copilot

具体的な手順:

STEP1:コードを生成AIに読み込ませる

まず、レガシーシステムのソースコードを、生成AIに読み込ませます。
例えば、20年前のVisual BasicやCOBOLのコードを、そのままChatGPTに貼り付けます。

' 例:古いVisual Basicのコード(1990年代)
Private Sub Form_Load()
    Dim db As Database
    Dim rs As Recordset
    Set db = OpenDatabase("C:\Data\Zaiko.mdb")
    Set rs = db.OpenRecordset("在庫テーブル", dbOpenDynaset)
    
    Do While Not rs.EOF
        List1.AddItem rs!商品名 & " - " & rs!在庫数
        rs.MoveNext
    Loop
    
    rs.Close
    db.Close
End Sub

STEP2:生成AIに「何をしているか説明して」と指示

次に、生成AIに以下のようなプロンプトを与えます。

このVisual Basicのコードが何をしているか、以下の形式で説明してください:

1. 処理の概要
2. 入力データ
3. 処理内容(ステップごと)
4. 出力データ
5. 想定されるエラーケース
6. 改善提案

すると、生成AIは以下のような説明を返してくれます。

## 1. 処理の概要
このコードは、Accessデータベース(Zaiko.mdb)から在庫データを読み込み、
リストボックス(List1)に商品名と在庫数を表示する処理です。

## 2. 入力データ
- データベースファイル:C:\Data\Zaiko.mdb
- テーブル名:在庫テーブル
- フィールド:商品名、在庫数

## 3. 処理内容
1. データベース接続を開く
2. 「在庫テーブル」をレコードセットとして取得
3. レコードセットの先頭から順に読み込み
4. 各レコードの「商品名」と「在庫数」をリストボックスに追加
5. すべてのレコードを読み込むまで繰り返し
6. レコードセットとデータベース接続を閉じる

## 4. 出力データ
- リストボックス(List1)に「商品名 - 在庫数」形式で表示

## 5. 想定されるエラーケース
- データベースファイルが存在しない
- データベースファイルが破損している
- テーブル「在庫テーブル」が存在しない
- フィールド「商品名」「在庫数」が存在しない
- データベース接続がロックされている

## 6. 改善提案
- エラーハンドリングの追加(On Error GoTo)
- データベースパスのハードコーディングを避ける(設定ファイル化)
- レコードセットのクローズ処理を確実に実行(Finally句)
- SQL文を使用して必要なフィールドのみ取得(パフォーマンス改善)

これで、20年前のコードが何をしているか、誰でも理解できるようになります。

STEP3:ドキュメントとして整理

生成AIの説明をもとに、以下のようなドキュメントを作成します。

  • システム概要書
  • 処理フロー図
  • データベース設計書
  • エラー対応マニュアル

これらのドキュメントがあれば、ベテラン社員がいなくても、システムを保守できるようになります。

5-2. 手法2:部分的なモダナイゼーション

目的:

  • 全体を刷新するのではなく、必要な部分だけを段階的に改修
  • 古い技術(COBOL、Visual Basicなど)を、新しい技術(Python、JavaScriptなど)に置き換える

使用するツール:

  • ChatGPT(Code Interpreter)
  • GitHub Copilot
  • Cursor(AIコード補完)

具体的な手順:

STEP1:改修対象を決める

まず、どの部分を改修するか決めます。

優先順位の付け方:

  1. 頻繁に変更が発生する部分(仕様変更が多い)
  2. 属人化が深刻な部分(特定の人しか理解していない)
  3. パフォーマンスに問題がある部分(処理が遅い)
  4. エラーが多発する部分(不具合が頻繁に発生)

例えば、在庫管理モジュールを優先的に改修するとします。

STEP2:生成AIにコード変換を依頼

次に、生成AIに「このコードをPythonに変換して」と指示します。

このVisual Basicのコードを、Pythonに変換してください。
以下の要件を満たすようにしてください:

1. データベースはSQLiteを使用
2. エラーハンドリングを追加
3. ログ出力機能を追加
4. 設定ファイル(config.ini)からデータベースパスを読み込む
5. コメントを日本語で記述

すると、生成AIは以下のようなPythonコードを生成してくれます:

import sqlite3
import configparser
import logging

# ログ設定
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    filename='zaiko.log'
)

def load_zaiko_data():
    """
    在庫データを読み込み、リスト形式で返す
    
    Returns:
        list: [(商品名, 在庫数), ...] の形式
    """
    try:
        # 設定ファイル読み込み
        config = configparser.ConfigParser()
        config.read('config.ini', encoding='utf-8')
        db_path = config['Database']['path']
        
        # データベース接続
        conn = sqlite3.connect(db_path)
        cursor = conn.cursor()
        
        # データ取得
        cursor.execute("SELECT 商品名, 在庫数 FROM 在庫テーブル")
        results = cursor.fetchall()
        
        logging.info(f"在庫データ読み込み成功: {len(results)}件")
        return results
        
    except FileNotFoundError:
        logging.error("設定ファイル(config.ini)が見つかりません")
        return []
    except sqlite3.Error as e:
        logging.error(f"データベースエラー: {e}")
        return []
    except Exception as e:
        logging.error(f"予期しないエラー: {e}")
        return []
    finally:
        if 'conn' in locals():
            conn.close()

# 使用例
if __name__ == "__main__":
    zaiko_list = load_zaiko_data()
    for shohin, zaiko in zaiko_list:
        print(f"{shohin} - {zaiko}")

STEP3:テストと検証

生成されたコードをテストします:

  1. 単体テスト(各関数が正しく動作するか)
  2. 結合テスト(既存システムと連携できるか)
  3. 性能テスト(処理速度は十分か)
  4. エラーテスト(エラーハンドリングが正しく機能するか)

5-3. 手法3:システム間連携の自動化

目的:

  • レガシーシステムと新しいシステムを、APIで連携
  • 手作業でのデータ転記を自動化

使用するツール:

  • ChatGPT(Code Interpreter)
  • Python(API開発)
  • Power Automate(RPA)

具体的な手順:

STEP1:連携仕様を決める

まず、どのシステムとどのシステムを連携するか決めます。

例:

  • レガシーシステム(Access)→ 新しい販売管理システム(クラウド)
  • 連携データ:受注データ、在庫データ
  • 連携頻度:1日1回(夜間バッチ)

STEP2:生成AIにAPI開発を依頼

次に、生成AIに「APIを開発して」と指示します。

以下の要件を満たすPython APIを開発してください:

1. Accessデータベースから受注データを取得
2. 取得したデータをJSON形式に変換
3. クラウド販売管理システムのAPIに送信
4. エラーハンドリング・リトライ処理を実装
5. ログ出力機能を追加

すると、生成AIは以下のようなコードを生成してくれます。

import pyodbc
import requests
import json
import logging
from datetime import datetime
import time

# ログ設定
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    filename=f'api_sync_{datetime.now().strftime("%Y%m%d")}.log'
)

class SalesDataSync:
    def __init__(self, access_db_path, api_endpoint, api_key):
        self.access_db_path = access_db_path
        self.api_endpoint = api_endpoint
        self.api_key = api_key
        self.max_retries = 3
    
    def get_access_data(self):
        """Accessデータベースから受注データを取得"""
        try:
            conn_str = f'DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={self.access_db_path}'
            conn = pyodbc.connect(conn_str)
            cursor = conn.cursor()
            
            # 未同期の受注データを取得
            query = """
                SELECT 受注番号, 顧客コード, 商品コード, 数量, 金額, 受注日
                FROM 受注テーブル
                WHERE 同期フラグ = False
            """
            cursor.execute(query)
            
            # 辞書形式に変換
            columns = [column[0] for column in cursor.description]
            results = []
            for row in cursor.fetchall():
                results.append(dict(zip(columns, row)))
            
            conn.close()
            logging.info(f"Accessから{len(results)}件のデータを取得")
            return results
            
        except Exception as e:
            logging.error(f"Accessデータ取得エラー: {e}")
            return []
    
    def send_to_api(self, data):
        """クラウドAPIにデータを送信"""
        headers = {
            'Content-Type': 'application/json',
            'Authorization': f'Bearer {self.api_key}'
        }
        
        for retry in range(self.max_retries):
            try:
                response = requests.post(
                    self.api_endpoint,
                    headers=headers,
                    json=data,
                    timeout=30
                )
                
                if response.status_code == 200:
                    logging.info(f"API送信成功: {len(data)}件")
                    return True
                else:
                    logging.warning(f"API送信失敗(ステータス: {response.status_code})")
                    
            except requests.exceptions.Timeout:
                logging.warning(f"API送信タイムアウト(リトライ {retry + 1}/{self.max_retries})")
                time.sleep(5)  # 5秒待機してリトライ
                
            except Exception as e:
                logging.error(f"API送信エラー: {e}")
                
        logging.error("API送信失敗(最大リトライ回数超過)")
        return False
    
    def update_sync_flag(self, juchu_numbers):
        """同期フラグを更新"""
        try:
            conn_str = f'DRIVER={{Microsoft Access Driver (*.mdb, *.accdb)}};DBQ={self.access_db_path}'
            conn = pyodbc.connect(conn_str)
            cursor = conn.cursor()
            
            for juchu_no in juchu_numbers:
                cursor.execute(
                    "UPDATE 受注テーブル SET 同期フラグ = True WHERE 受注番号 = ?",
                    juchu_no
                )
            
            conn.commit()
            conn.close()
            logging.info(f"{len(juchu_numbers)}件の同期フラグを更新")
            
        except Exception as e:
            logging.error(f"同期フラグ更新エラー: {e}")
    
    def run_sync(self):
        """同期処理を実行"""
        logging.info("=== 同期処理開始 ===")
        
        # データ取得
        data = self.get_access_data()
        if not data:
            logging.info("同期対象データなし")
            return
        
        # API送信
        if self.send_to_api(data):
            # 成功したら同期フラグを更新
            juchu_numbers = [item['受注番号'] for item in data]
            self.update_sync_flag(juchu_numbers)
            logging.info("=== 同期処理完了 ===")
        else:
            logging.error("=== 同期処理失敗 ===")

# 実行
if __name__ == "__main__":
    sync = SalesDataSync(
        access_db_path="C:/Data/Sales.accdb",
        api_endpoint="https://api.example.com/v1/orders",
        api_key="YOUR_API_KEY_HERE"
    )
    sync.run_sync()

STEP3:スケジュール実行の設定

最後に、このAPIを定期的に実行する設定を行います。

Windowsタスクスケジューラを使って、毎日深夜2時に実行するように設定します。

@echo off
cd /d C:\Scripts
python sales_sync.py

これで、手作業でのデータ転記が不要になります。


6. 今すぐできるアクション:3ステップで始めるレガシーシステム延命

ここまで読んで、「やってみたい」と思った方へ。

今すぐできる3ステップを紹介します。

ステップ1:現状を「可視化」する(1週間)

やること:

  1. 現在のシステム構成を図にする
  2. 各システムの稼働年数を調べる
  3. システム保守にかかっている工数を集計する
  4. システムトラブルの発生頻度・対応時間を記録する

使えるツール:

  • Excel(簡易的な図表作成)
  • Google Sheets(共有・共同編集)
  • Notion(ドキュメント管理)

成果物:

  • システム構成図
  • 工数集計表
  • トラブル記録表

ステップ2:生成AIで「小さく試す」(2週間)

やること:

  1. ChatGPT or Claudeのアカウントを作成
  2. レガシーシステムのコードを1つ選ぶ
  3. 生成AIに「このコードが何をしているか説明して」と指示
  4. 説明内容をドキュメントとしてまとめる

コツ:

  • 最初は小さいコード(50行以下)から始める
  • 生成AIの回答が間違っていることもあるので、検証する
  • 複数の生成AI(ChatGPT、Claude、Copilot)で比較すると精度が上がる

成果物:

  • コード解説ドキュメント(1件)

ステップ3:経営層に「提案書」を提出する(1週間)

やること:

  1. ステップ1の現状分析結果をまとめる
  2. ステップ2の生成AI活用事例を示す
  3. 投資対効果を試算する
  4. 段階的導入計画を作成する
  5. A4用紙2枚程度の提案書にまとめる

提案書の構成(例):

## レガシーシステム延命に関する提案

### 1. 現状の課題
- システム保守に年間〇〇時間(約〇〇万円)かかっている
- システムトラブルが年〇回発生(損失約〇〇万円)
- 属人化により、特定社員に業務が集中

### 2. 提案内容
- 生成AIを活用したシステム保守の効率化
- 段階的なシステムモダナイゼーション

### 3. 期待効果
- 保守工数 50%削減(年間約〇〇万円)
- システム停止リスク 70%削減
- 属人化解消

### 4. 必要な投資
- 初年度:約〇〇万円
- 2年目以降:約〇〇万円/年
- 投資回収期間:約〇ヶ月

### 5. 実施計画
- 第1フェーズ(3ヶ月):小規模トライアル
- 第2フェーズ(6ヶ月):範囲拡大
- 第3フェーズ(1年):本格展開

【重要】失敗しないためのポイント

  1. 一人で抱え込まない
    • 上司や同僚に相談しながら進める
    • 社外の専門家(コンサルタント、ITベンダー)に相談するのもあり
  2. 小さく始める
    • 最初から大きなプロジェクトにしない
    • 成功体験を積み重ねる
  3. 記録を残す
    • 何をやったか、どんな結果だったかを記録
    • 失敗も含めて記録することで、次に活かせる
  4. 経営層と定期的にコミュニケーション
    • 進捗報告を定期的に行う
    • 問題が発生したら、すぐに相談する

7. よくある質問(FAQ)

生成AIは本当に古いコードを理解できるの?

はい、かなり高い精度で理解できます。

ただし、以下の点に注意が必要です:

  • コメントがあると精度が上がる:コメントがないコードは、生成AIも理解に苦労します
  • 複雑なロジックは段階的に解析:一度に大量のコードを渡すのではなく、モジュール単位で解析させる
  • 複数の生成AIで確認:ChatGPT、Claude、Copilotで比較すると、より正確

実際、私が調べた限りでは、COBOLやVisual Basicなどのレガシー言語でも、約80%の精度で解析できるという報告があります。

生成AIによるCOBOLコード解析の精度は約80%。特にビジネスロジック部分の理解精度が高い。

出典:IBM Research「Generative AI for Legacy Code Modernization」(2023年)

生成AIを使うと、セキュリティリスクはないの?

確かに、セキュリティリスクはあります。

特に、以下の点に注意が必要です:

  1. 機密情報を含むコードは、そのまま送信しない
    • 顧客情報、パスワード、APIキーなどは削除してから送信
    • または、ダミーデータに置き換える
  2. 社内専用の生成AIを使う
    • Azure OpenAI Service(Microsoft)
    • AWS Bedrock(Amazon)
    • Google Cloud Vertex AI(Google)
    • これらは、企業向けにセキュリティ強化されている
  3. 生成されたコードは必ず検証する
    • 生成AIが出力したコードをそのまま使わない
    • セキュリティホール(SQLインジェクション、XSSなど)がないか確認

セキュリティに関してはこちらの記事を参考にしてください。

生成AIの利用料金はどれくらい?

利用するサービスによって異なりますが、以下が目安です:

個人向けプラン:

  • ChatGPT Plus:月額20ドル(約3,000円)
  • Claude Pro:月額20ドル(約3,000円)
  • GitHub Copilot:月額10ドル(約1,500円)

企業向けプラン:

  • ChatGPT Team:月額25ドル/ユーザー(約3,800円)
  • Claude for Work:月額30ドル/ユーザー(約4,500円)
  • GitHub Copilot Business:月額19ドル/ユーザー(約2,800円)

社内SEが1名で使う場合、月額約5,000円~10,000円程度です。

外注でコンサルタントに依頼すれば、1日10万円以上かかることを考えると、非常にコストパフォーマンスが高いと言えます。

生成AIを使うには、高度なプログラミングスキルが必要?

いいえ、高度なスキルは不要です。

以下のレベルがあれば十分です:

  • 基本的なプログラミング知識 (if文、for文、変数の概念など)
  • 生成AIとの対話スキル (適切な質問の仕方)
  • 生成されたコードを検証するスキル (動作確認、デバッグ)

むしろ重要なのは、「どんな質問をすれば、欲しい答えが得られるか」 という「プロンプトエンジニアリング」のスキルです。

これは、プログラミングスキルとは別の能力で、誰でも

経営層を説得するのが難しい。どうすればいい?

経営層を説得するコツは、「経営層が理解できる言葉で話す」 ことです。

具体的には:

  1. 技術用語を使わない
    • 「レガシーシステムのモダナイゼーション」→「システムの改善」
    • 「マイグレーション」→「移行」
  2. 金額で示す
    • 「効率化できます」→「年間300万円のコスト削減」
    • 「リスクがあります」→「システム停止で1日500万円の損失」
  3. 成功事例を示す
    • 「他社がやっています」だけでなく、具体的な企業名・効果を示す
  4. 段階的な計画を示す
    • 「一気に刷新」ではなく、「小さく始めて、成果を見ながら拡大」
  5. リスクに正直に答える
    • 「絶対成功します」ではなく、「こういうリスクがあるので、こう対策します」

8. まとめ:「2025年の壁」を突破するために

ここまで読んでいただき、ありがとうございます。

最後に、重要なポイントをまとめます。

8-1. レガシーシステム延命は「戦略的選択」

「延命」は、決して逃げではありません。

限られた予算とリソースの中で、最大の効果を出すための戦略的選択 です。

生成AIの登場により、延命戦略が現実的になりました。

8-2. 今すぐ行動することが重要

「2025年の壁」は、もう目前です。

経済産業省が警告してから、すでに7年が経過しています。

今から行動しなければ、間に合いません。

でも、焦る必要はありません。

小さく始めて、成果を確認しながら進める ことが大切です。

8-3. 完璧を目指さない

生成AIも完璧ではありません。

時には間違った回答をすることもあります。

でも、100%を目指すのではなく、60%を目指す ことが重要です。

60%の成果でも、現状より大きく改善できるなら、それで十分です。

8-4. 一人で抱え込まない

レガシーシステムの問題は、一人で解決できるものではありません。

  • 上司や同僚に相談する
  • 社外の専門家に相談する
  • 業界団体のセミナーに参加する
  • オンラインコミュニティで情報交換する

助けを求めることは、恥ずかしいことではありません。

むしろ、助けを求められる人ほど、プロジェクトを成功させています。

8-5. 最後に:あなたの行動が会社を救う

レガシーシステムの問題は、経営層だけでは解決できません。

現場を知っているあなたの行動 が、会社を救います。

この記事が、あなたの最初の一歩の後押しになれば幸いです。


参考文献・関連リンク

政府・公的機関の資料

業界団体・調査機関

参考資料

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次