廃れた「Visual Basic」が残した負の遺産 「プログラム以外」の厄介な問題とは
「Visual Basic 6.0」(VB6)は開発環境としての役割を終えた今も、企業の業務システムとして稼働し続けている。なぜ企業は、古い技術と分かっていても簡単に手放せないのか。そこには、単なる技術の世代交代では片付けられない事情がある。
「Windows」アプリケーション開発の一時代を築いた「Visual Basic 6.0」(VB6)。画面を視覚的に設計できる手軽さと、業務に合わせたアプリケーションを効率よく開発できる利点から、多くの企業で採用され、幅広い業務システムを支えてきた。やがてMicrosoftは開発基盤を「.NET」へと転換し、Visual Basicは後継の「Visual Basic .NET」(VB.NET)へと移行した。単なるバージョンアップではなく、実行環境や言語仕様などが大きく変わる世代交代だった。
だが、開発環境としての役割を終えたVB6は、企業の現場から姿を消したわけではない。今も多くの業務システムが稼働し続けている。では、現在も問題なく動いていれば、この先も安心して使い続けられるのだろうか。アプリケーションが正常に動作することと、将来にわたって修正や復旧ができることは別問題だ。長年使い続けてきたシステムには、見過ごされがちな保守上のリスクも潜んでいる。
そもそも「Visual Basic」は、なぜ企業に支持されたのか
Visual Basicは、フォーム上にボタンや入力欄などの部品を配置し、それぞれの操作に応じた処理を記述することで、Windows向けの業務アプリケーションを効率的に開発できる環境だ。画面の仕上がりを確認しながら開発を進められるほか、データベースとの連携やコンポーネントによる機能拡張にも対応している。
こうした特徴を生かし、顧客情報の管理や受注処理、伝票の印刷など、企業ごとの業務に合わせたアプリケーションを比較的短期間で開発できた。
企業によって業務の手順やルールは異なる。市販ソフトでは対応しにくい独自の処理も、自社の仕事の流れに合わせて組み込める。また、画面を早い段階で形にできるため、業務担当者と実物を確認しながら必要な機能を決められる利点もあった。
VB6が多くの企業で支持されたのは、言語としての扱いやすさに加え、画面やデータ、業務処理を組み合わせ、自社に合ったWindowsアプリケーションを手軽に開発できたからだ。
「.NET」の波にVisual Basic 6ユーザーが乗り切れなかった理由
だが、インターネットの普及に伴い、企業のシステムにはWebサービスとの連携など、次第に新たな役割が求められるようになった。これを受け、MicrosoftはJavaに対抗する新たな開発基盤として「.NET」を推進した。
Visual BasicもVB.NETへと移行した。だが、VB.NETは実行環境や言語仕様、画面やデータの扱い方がVB6から大きく変わり、従来のような単純なバージョンアップでは済まなかった。VB6のアプリケーションを移行するには、ソースコードの変換だけでなく、外部部品の互換性や、画面表示、計算、印刷、他システムとの連携など、幅広い動作検証が必要だった。
VB6でも追加のツールや部品を使えば、SOAPベースのWebサービスと連携できたが、既存の仕組みに機能を追加することと、.NETへ移行することは別の話だ。Microsoftが新しい開発基盤への移行を進める一方、既存システムを抱える企業には、移行費用と検証の負担がのしかかった。
新しい技術を使ってシステムを開発することと、既存のシステムを新しい技術へ移行することは、別の問題だ。開発環境が新しくなっても、企業の業務システムをすぐに置き換えられるわけではなかった。
VB6を捨てられない本当の理由は「仕様書にないルール」にあった
VB6で構築したシステムが現在も業務を支障なく処理できているなら、新しい技術で同じ機能を再現しても、売り上げの増加や業務効率の改善に直結するとは限らない。一方、VB.NETへの移行には開発費用がかかり、切り替え時に業務が停止するリスクもある。こうした事情から、既存システムの維持を選ぶ企業もあった。
さらに、長年使われてきた業務アプリケーションには、ソースコードだけでなく、現場の運用に合わせて追加された細かな処理も蓄積されている。取引先ごとに異なる締め日や、翌月にまたがる返品処理、特定の商品に適用する端数処理などだ。こうした例外的なルールは、必ずしも仕様書に記録されているとは限らず、担当者の交代によって、その背景や必要性が分からなくなっていることもある。
そのため、VB.NETへの移行では、通常の入力や集計ができるだけでは不十分だ。月末や年度末、まれに発生する訂正処理まで含め、従来と同じ結果が得られるかを検証しなければならない。さらに、データベースや帳票部品、バーコードリーダー、ラベルプリンタ、他システムとのデータ連携など、周辺環境への影響も確認しなければならない。
企業が維持してきたのは、VB6という開発技術だけではない。その上に積み重ねられた業務のルールや運用の仕組みも含まれる。プログラムを新しくするだけでは、これらをそのまま引き継げるとは限らない。古い技術と分かっていても、VB6を簡単に手放せない背景には、こうした事情がある。
「まだ動く」と「保守できる」は違う
では、現在も動いているVB6のシステムを、そのまま使い続けても問題はないのだろうか。
Microsoftは、VB6のアプリケーションを開発するための環境(IDE)のサポートを終了している。だが、作成済みのアプリケーションをWindowsで動かすためのランタイムは、Windowsのサポート期間に準じてサポートを継続している。「Windows 11」でもVB6アプリケーションの実行はサポート対象だ。ただし、アプリケーションを動かせることと、新たに開発したり修正したりする環境がサポートされていることは別だ。なお、VB6のランタイムは32ビット版のみだが、64ビット版のWindowsでは「WOW64」という互換機能によって実行できる。
また、ランタイムがサポートされていても、個々の業務アプリケーションや外部部品の動作まで保証されるわけではない。部品の提供元による対応状況も確認が必要だ。さらに、アプリケーションが現在動いていることと、将来も修正、復旧できることは別問題だ。ソースコードや必要な部品、開発環境がそろい、実行ファイルを再作成できるか。修正後のテストや障害発生時の復旧手順まで確保できているか。こうした保守体制も問われる。
日常の運用が安定していると、こうした問題は見過ごされやすい。開発環境を再現できないことに気付かないまま運用を続け、担当者の退職や端末の故障を機に、修正や復旧が困難だと判明するケースもある。また、取引先との連携方式や社内の認証・セキュリティ要件が変われば、既存システムにも対応が求められる。今は問題なく動いていても、将来の変更に対応できるとは限らない。
こうした課題に対し、仮想環境へ移行して既存システムを延命する方法もある。ただし、周辺機器や外部サービスへの依存、保守人材の不足まで解消できるわけではない。延命する場合は、維持できる範囲と残るリスクを明確にしておく必要がある。
VB6を使っていること自体が、直ちに事業上の問題になるわけではない。だが、長期的にはシステムの移行や再構築、不要になったものの廃止を進め、VB6への依存を減らすことが望ましい。延命は、業務を止められない場合などに選ぶ暫定策と位置付けたい。その場合も、保守・復旧の体制とリスクを確認し、移行や廃止の期限を設けておくことが重要だ。
Visual Basic 6を捨てるか、延命するか?
企業は、既存のVB6システムをどう扱うべきなのか。まずは、利用状況や業務への影響を把握する必要がある。どの業務で使われ、停止すると何が起こるのかを確認することが出発点だ。
月に一度使う補助ツールと、出荷処理を支えるシステムでは、障害時の影響が大きく異なる。手作業で代替できるのか、どの程度の停止が許容されるのか、復旧や修正を誰が担えるのか。こうした業務上の重要度や復旧体制を踏まえ、維持費用と移行・検証費用を比較し、刷新の優先順位を決めたい。
延命を選ぶ場合も、現状のまま使い続ければよいわけではない。ソースコードや必要な部品、開発環境を確保し、実行ファイルの再作成や障害時の復旧が可能かどうかを確認する必要がある。こうした準備は、日々の保守だけでなく、将来の移行にも役立つだろう。
刷新する場合、全てを一度に作り直す必要はない。帳票出力など独立性の高い機能から置き換えたり、業務単位で段階的に移行したりする方法もある。ただし、新旧システムが同じデータを扱う場合は、データの整合性を保つ仕組みが必要だ。
また、既存の機能を全て自社開発で再現する必要があるかも検討したい。一般的な業務はパッケージやWebサービスを活用し、自社独自の処理だけを開発する方法もある。長年の運用で追加された機能や手順を見直し、使われていないものを整理する機会にもなる。
VB6のシステムには、長年の運用で培われた業務ルールや処理が蓄積されている。そのため、刷新にあたっては、単に新しい技術へ置き換えるのではなく、引き継ぐべき業務と見直すべき手順を整理しなければならない。
重要なのは、システムが動いているうちに、次の環境でも業務を継続できる準備を進めることだ。VB6をどう扱うかは、古い技術かどうかだけで決められない。自社の業務をどこまで把握し、将来の障害や変更に備えられるかが問われている。
死神管理人: 開発環境のサポートが終わっても、かつて作ったアプリまで一斉に動かなくなるわけではないというところが、VB6アプリが今も残っている状況の根幹にあるのだね。
アンデッド管理人: 実行に必要なランタイムのサポートは別に扱われていて、少なくともWindows 11が現役の間は利用できそうだから状況は複雑だ。ただし、使っている部品や接続先まで、まとめて保証されているわけではない。
死神管理人: それでも残っているのは、長く使われてきたからこそなのか。
アンデッド管理人: そうだな。業務ルールや例外処理、周辺機器との連携まで積み上がっているからな。安易に刷新して、同じ仕事を正しく続けられるかどうかは分からない。
死神管理人: ただ、開発環境のサポートがこれほど前に終わっている以上、動いているから安心とは言えないだろう?
アンデッド管理人: ああ、なにせIDEのサポートが切れたのは2008年だからな。修正できる人がいなかったり、実行ファイルを作り直せる環境がなくなったりすれば、変更や障害に対応できなくなる。だからこそ、もし明日システムが止まったら……と考えたとき、業務への影響と、復旧できるかどうかを判断するために、現状を把握しておかねばならない。
死神管理人: やはり移行、刷新するのが妥当ということか。
アンデッド管理人: そうだろうな。最終的にVB6をどうするかは、そのシステムが支えている業務をこの先どう続けるかという判断が重要だ。情シスは刷新の見通しを示せるだろうが、どの業務を優先するかとか、どれくらい止まって大丈夫かといったことは、業務を担う側の判断も重要になるだろう。
Copyright © ITmedia, Inc. All Rights Reserved.
IT死語の世界
こんなメディアも見られています
キーマンズネットに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
SpecialPR
アクセスランキング
-
1
コードを直さず速くする、ズルい「Python高速化テク」と開発現場のウラ話
-
2
王者から転落した「Internet Explorer」 “便利すぎたブラウザ”の栄枯盛衰
-
3
「パッチは検証後に適用」は命取り 日本ハッカー協会が教える大情報漏えい時代の極意
-
4
デキるプログラマーほど「AI任せ」を嫌う、エージェント型開発のちょっと怖い話:904th Lap
-
5
「パスキーはワナだ、使うな」にネット騒然 プロが“待った”をかけるワケ:902nd Lap
-
6
コクヨが開発部門の「資料散乱」をAIでゼロに 「Notion」をどう使ったか?
-
7
なぜ「ランサムウェア被害」の7割は中小企業なのか サイバー攻撃に備える3つの要素
-
8
「Gemini Notebook」で始める「AI×自動化」実践ガイド
-
9
GPT-6モデルはAstra、Sol、それともLuna? OpenAIが教える、Codex爆速開発の鉄則
-
10
無印良品、So-net、ロート製薬の情報漏えい 結局、各社で何があったのか?
キーマンズネット SNS
インフォメーション
注目情報をチェック
キーマンズネットをフォロー