基幹システムのリプレース

実は俺は1人でこんなシステムを手がけている。

このアプリは色々なシステム屋が直接エンドのところに営業を通わせて自社の製品にリプレースされかかったのだが結局15年も使っている基幹システムになっている。

では、なぜエンドユーザがリプレースしなかったのかは簡単で、自社の製品に業務を誘導しようとしたからで、今はもう機能的な死角はないが、まだまだ荒削りなところもあって、これは、元々引き継いだソースコードがヘボすぎて当時からするとほぼ作り替えたが、VB6で動かしている。

なので、この2024年には完全に.NETに移行しないと恐らくもうかなり使いづらくなると思われる。

現在でもこのご時世、UTF8のフォントが表示出来ないのは致命傷で車検証を登録するにあたって、第2水準だかなんだか忘れたが色々と入力出来ない漢字があって、データベースには保存出来るのだが画面に表示することが出来ないと言う時代後れなコントロールがVB6なのだ。

と言ってもつけたし付け足しのシステムで内部的にも俺の思いつかないと言うか絶対やらない様なロジックが組まれていてかなり手直しし続けたんだが、未だにそれが問題になって、ここ最近は数字の桁数の問題で、基本的に全ての変数をintで定義していたので数年使うと伝票番号とかオーバーフローして破綻するようなあり得ない、組み方でほとほと困ったシステムだった。

特にビックリしたのはOption Explicitを定義してなくて、何処でも変数定義出来るので何がグローバル変数で何がローカル変数なのかとにかく突然出てくる変数などもあってわけが解らない状況だった。

そして、当然Option Explicitを貼り付けたら変数定義してないので動くはずもなくここから引き継いだのでえらい迷惑なシステムだったが、おかげで細かいところを色々学習したものの、.NETの時代には無用の長物なものもあって、他の仕事ではC#やPHPで仕事をしているのに、ここだけVB6ってなぁと言う事で重い腰をようやく上げて本格的に取りかかることにした。

Windows11でも騙し騙し動くし、恐らくまだ数年はと言うか恐らくずっと動くだろうなぁと思いつつギャンブル過ぎるのでここは正規の手順で.NET化が自然な流れだろう。

サーバーもWindows Server 2008で動かしているのでこれも問題なので、今年はサーバーの入替と合せてシステムもごっそり入れ換えようと計画中だ。

メニュー画面はちょっとごちゃごちゃしているのだが、極端に変更してしまうと受け入れてもらえないと言うか、説明、変更に手間がかかるので極力そういう説明無しで今まで通りですと言う方法で置き換える事で説明の手間がかからないし、1人でやっているのでその方法がベストなのだ。

マニュアルも作るのちょっと手間なので極力省ける物は省いてとにかく.NETで動かす事を優先してリプレースを実施している。

VB6からC#の移行なんだが、C#って「C」は付いているが、C言語ではなくてVBとJAVAを合わせた様なロジックなのでVB、VBAとなんら変わらないので楽ちんだ。

それにしても、既存の似たようなシステムは多くあるのに、なんで俺のアプリって思うのだが、先に言った様に、これは既に出来上がったものではなくて、ここのユーザー専用でオーダーメードで開発したので置き換えはかなり難しいしカスタマイズの範囲で対応出来ない実装にしているのでこれは俺自身の防御的な取組で、属人的な仕様に落とし込んでいるところもある。

とはいえ、実はパッケージ化も想定していて、このユーザーは業界トップの実績のある工場なので他の業者が参考に研修にくるレベルなのでここで使えるシステムは他でも使えると言う事だ。

今は、車検証も電子車検証に置き換わって入力の手間も格段に省けるので大助かりで、電子車検証アプリで情報を取り込み、CSVで保存出来るので後はCSVを取り込めば登録完了するのでかなりよくなった。

それまでは紙の車検証をOCRサーバーに送ってResultでJSONが帰って来るので、VB6でJSONをパースしてやりとりしていてこの当たり全部フル実装しないといけなかったが、CSVならお手もんで1日も斯からずに対応完了してしまった。

今年から軽自動車も電子車検証になったので、これで完全にOCRの出番がなくなるだろう

まぁ車検証のOCRも面白くて、OCRを開発してくれている東京の業者があるんだが、ここと仲良くしていて助けられたが、OCR使わないと用事ないな。

このパッケージは整備履歴を残すと言う目的もあるのだが、修理する際に仕入れた部品を最小限の在庫で、また価格の推移も把握しつつ消し込んでいく仕入管理機能もあるので仕入から納品まで一括で扱える基幹システムになっている。

.NET版はベクター当たりにも公開してGITHubに上げても良いかなぁとは思っているが商用アプリなので上手いことサブスクの流れにのせられないか取り組んでみたいと思っている。

後は、ペット霊園向けの施主管理ソフトのブラッシュアップも構想にあるし、物件管理と自治会員の管理を合せた自治会向けの管理ソフトもあるのでこれはVB6で作ったので.NET化しないといけないのでちょっと時間がかかるがボリュームは小さい。

今はこの俺の手持ちパッケージで一番ボリュームが大きい自動車整備システムを.NET化すればいったん肩の荷が下りるので、繋ぎに京都の案件をあたってもらったらC++とC、C#の案件がひっかかってC++でアプリケーションはハロー・ワールド程度なんだがある程度は把握していて、実務から遠かったので深掘りしてないが、今度は深掘りできるので楽しみだ。

C++でのアプリケーションはほぼ制御機器のロギングとか制御とかが多いのでこれは昔取った杵柄的に、バーコードリーダーのデバイスドライバーとか検査機器のデバイスドライバーとかベースのソースがあったのでコンパイルを通せば動かせたので案外楽ちんだ。

接続部分のAPIを作ればあとはC#で画面を作ればいいので連携させる意味はあるだろう。

ここで、このスキルの実務実績が積めれば何かと役に立つわけで、今後、自動車業界もエンジンがモーターに変わりつつ有る中、整備士も電気整備士の研修を受ける時代で、電子化してくれればくれるほど俺の出番があるのが想像出来て未来は明るいな。

もう少しの辛抱だ。

コメント