Article Blog / Article

約10年前の業務システムを、最新のバージョンに作り直しました

  • セキュリティ対策
Date 2026.11.08 Author 中田 慎一

Marble//Blog//Article

Scroll
約10年前の業務システムを、最新のバージョンに作り直しました

茨城県の古美術店様が在庫と売買の管理に使っている業務システムを、最新のバージョンへ作り直し、2026年11月2日に新しいサーバーで公開しました。今回は、作業の前にあった課題と、どう改善したかを紹介します。

課題:約10年前のまま止まっていたシステム

このシステムは、2016年ごろの部品で作られていました。土台になっている言語やソフトは、どれもサポートの期限がとうに過ぎていました。

部品旧システムサポートの期限新システム
プログラミング言語 PHP5.52016年7月8.5
フレームワーク Symfony2.82019年11月7.4(長期サポート版)
データベースMySQL 5.52018年12月MariaDB 11.8

サポートが終わったソフトには、新しい弱点が見つかっても修正が出ません。動いてはいても、攻撃に弱いまま使い続けている状態でした。

大変だったこと

PHP8.5へ

1. 少しずつ上げることができない

Symfony は 2.8 → 3.4 → 4.4 → 5.4 → 6.4 → 7.4 と、本来は段階を踏んで上げていくものです。ところが、途中の版ごとに古い PHP が要るため、新しいサーバーでは途中の段階を動かせません。段階を踏むと、見積もりで60〜90人日かかります。そこで、途中を飛ばして最新の版へ一気に書き換える方法を選びました。

2. 書き換える量が多い

古い書き方に深く結びついたコードが、システム全体に広がっていました。

  • 入力フォーム:100種類
  • 画面のテンプレート:121枚
  • 自動で動く処理:23本
  • 画面の URL:273本

3. 部品の多くが手に入らない

外から取り込んでいる部品は76個ありました。そのうち13個は正式な版ではなく開発途中のもので、さらに2個は今では手に入らない場所にありました。PDF や Excel を作る部品は、新しい版で使い方がまるごと変わっています。

4. 帳票の見た目を変えられない

請求書・納品書・商品カードなどの帳票は、毎日の業務で使うものです。新旧で同じデータから帳票を作り、文字の位置・画像・Excel のセルの書式まで一致することを確かめました。

5. データベースが厳しくなる

古い MySQL は、長すぎる入力を黙って切り捨てて保存していました。新しいデータベースでは、これがエラーになります。そのため、入力できる文字数をすべての欄に設定し、画面で「○文字以内」と案内するようにしました。

改善したこと

画面と操作はそのまま

旧システムの画面と新システムの画面を自動で見比べるテストを作り、4,033件のテストで同じであることを確かめました。お客様は、これまでと同じ操作で使えます。

データをすべて引き継ぐ

54個の表にある24,846件のデータと、7,016枚・約9.3GBの商品写真を、1件も欠けずに移しました。

使っていない機能の整理

ヤフオクとの連携は、ヤフオクの API が2018年に終わっていて使えません。顧客管理や貸出のように一度もデータが入っていない機能もありました。これらを外したことで、URL は273本から172本に減り、守る範囲が小さくなりました。

セキュリティを強化

  • 全員に二段階認証を入れた(スマートフォンのアプリの6桁の数字)
  • ログインの回数制限を入れた
  • ほかのサイトから操作を送り込まれないようにした
  • 写真のアップロードはログインした人だけができるようにした

クラッキングを受けてもデータを失わない仕組み

サーバーが乗っ取られたとき、いちばん困るのはデータが消されたり、暗号化されて使えなくなったりすることです。控えを取っていても、その控えまで消されてしまえば元に戻せません。

よくある控えの取り方では、サーバーが控えの保管場所へデータを送ります。この形だと、送り先の場所と、そこへ入るための鍵がサーバーの中に残ります。サーバーに入り込んだ人は、それをたどって保管場所にまで入り、控えも消すことができてしまいます。

そこで今回は、向きを逆にしました。サーバーからデータを送るのではなく、バックアップのサービス「Acronis」の側からサーバーへデータを取りに来ます。

  • サーバーからたどれない:サーバーには、控えの保管場所の情報も、そこへ入る鍵もありません。サーバーに入り込まれても、そこから保管場所へ進む道がありません。
  • 保管場所を見つけられない:サーバーの中を調べても、控えがどこにあるのかは分かりません。存在を知られなければ、狙われることもありません。
  • 控えだけは残る:サーバーの中のデータが消されたり暗号化されたりしても、Acronis の控えには手が届きません。その控えから、データを元に戻せます。

運用の改善

  • データの控えを1日2回、サーバーの中でも自動で取る
  • エラーが起きたら、すぐに弊社に通知が届く

おわりに

業務システムは、動いているうちは手を入れる理由が見つけにくいものです。しかし、土台のサポートが切れたまま年数がたつほど、作り直しは大がかりになります。

「何年も前に作ったシステムを、このまま使い続けて大丈夫か」と気になっている方は、お気軽に株式会社MARBLEへご相談ください。

RRelated

関連記事

25年使い続けたAdobeを解約した日のイメージ

25年使い続けたAdobeを解約した日

25年使い続けたAdobeを解約し、今は1日14時間Claudeと向き合っています。デザイン、コーディング、プログラミングという制作の順...

  • MARBLE通信
Adobe XDデザインを見てCSS設計を決めるときに考えていることのイメージ

Adobe XDデザインを見てCSS設計を決めるときに考えていること

Adobe XDのデザインデータを見てからCSS設計を決める際に、普段確認しているポイントをまとめました。コーディング前に意識して...

  • HTML/CSS
Adobe XDデータを受け取ったら最初に確認していることのイメージ

Adobe XDデータを受け取ったら最初に確認していること

Adobe XDデータを受け取ったあと、コーディング前に確認しているポイントを実務目線で整理。アートボードサイズやフォント、余白...

  • HTML/CSS