在庫管理システム
拠点を跨いだリアルタイム管理と、SSHによる強固なセキュリティを両立。
Tech
Excel VBA / MySQL
Security
SSH Tunneling
Infrastructure
Ubuntu VPS
Role
Solo Dev
01 開発の背景
複数拠点での在庫管理において、Excelファイルを共有フォルダで運用する際のエラーや、メール送受信によるデータの不整合が課題となっていました。
現場が使い慣れたExcelのインターフェースを維持しつつ、データのみをクラウド(VPS)で一元管理する仕組みを構築しました。
02 採用技術・選定理由
本プロジェクトでは、フロントエンドにExcel VBA、バックエンドにMySQL、通信経路の保護にSSHトンネリングを採用しました。それぞれの選定理由は以下の通りです。
フロントエンド:Excel VBA
導入先となるクライアント環境の既存インフラ(Microsoft Office)を そのまま活用でき、追加のソフトウェアインストールや環境構築が不要である点から選定しました。 ユーザーが日常的に使い慣れているExcelのUIをそのまま入力インターフェースとして利用できるため、 業務フローへの移行コストを最小限に抑えることができます。
データベース:MySQL(VPS運用)
データの信頼性と一元管理、および将来的なデータ量増加への対応を見据え、 リレーショナルデータベース(RDB)を採用しました。 VPS(仮想専用サーバー)上に構築することで複数拠点からの同時アクセスを可能にし、 Excel単体でのデータ管理でのファイルの破損リスクや同時編集による競合 という課題をクリアにしています。
SSHトンネリングによるセキュリティ強化
VBAからリモートのデータベースへ安全に接続するためSSHトンネリングを採用しました。 VPS側のデータベースポート(3306)を外部に直接公開する運用はセキュリティ上大きなリスクとなります。 そのため、通信をすべて暗号化されたSSHプロトコル経由に制限し生ポートを完全に閉鎖した状態で セキュアにデータを送受信する構成としました。
03 工夫したポイント
暗号化通信の実装
外部のサーバーとデータをやり取りする際にハッカーによるデータの盗み見を防ぐための 「暗号化(SSHトンネル)」を行っています。 本来であれば、利用者が事前に面倒な接続設定や専用ソフトの起動を行う必要がありますが、 これをマクロ(VBA)の内部で完全に自動化しました。 ユーザーはいつも通りExcelを開いて操作するだけで裏側で安全な通信経路が自動的に作られ、 処理が終わると自動で閉じられます。 また、プログラム内にパスワード等の重要情報を直接書き込まない設計を徹底し、 万が一Excelファイルが流出した場合のセキュリティリスクも排除しています。
VPS(クラウド)運用
社内の限られたパソコンの中だけでデータを管理するのではなく、インターネット上の仮想専用サーバー(VPS)にデータベースを構築しました。 これにより、場所を問わずに全員が同じ最新データにアクセスし、同時に保存・更新ができる環境を実現しています。 VPSの選定にあたっては、自社内に物理サーバーを置くオンプレミス環境や、 大規模向けのAWS等のクラウドサービス(従量課金によるコスト高のリスク)は避け、 月額固定で安価に利用できるVPSを採用しました。 個人開発や中小規模の社内システムにおいて費用対効果に配慮しています。