カルテ

ソースプログラム無し、実行プログラムのみからのリプレイス

きっかけ

レジトップ

レジトップ

長年使用していたオーダーリングシステムであったが、一方的に開発メーカーからのシステムバージョンアップの連絡があった。システムの機能をパンフレットで確認したところ、特に自社に必要の無い機能が追加されており、価格も高額だったため、導入に踏み切れずにいた。
また、オーダー用の端末も専用ハードウェアであったため、故障した際、同システム会社に修理を依頼しない訳に行かず、汎用的なタブレットにして運用コストを下げたかった。

結果

レジ注文

レジ注文

いらない機能は実装せず、日々の業務に必要十分な機能のみ開発したので、すっきりシンプル、低コストで開発が完了した。特に、スタッフ教育も必要なく導入当初からスタッフもすんなり操作することが出来た。また、今までに無かった注文状況がリアルタイムで確認できるようになり、顧客からのクレームが大幅に減った。結果として、少人数での運用が可能となり、人件費の削減も実現できた。
特に、ハードウェアについてはオーダリング用注文端末、無線LAN用ネットワーク機器も汎用品を使用しているので、故障した場合の対応や運用コストの面でメリットが大きい。

レジ会計

レジ会計

注文モニター

注文モニター

旧システム

OS: Windows XP
実行プログラムのみ
データベース:Btrieve
POS-PC:富士通
注文端末:専用機

新システム

OS:Windows 10 Pro
開発言語:Visual Studio 2019 C#、GrapeCity ComponentOne for WinForms 2020Jv2
データベース:SQLServer2017
POSPC:日本HP
注文端末:AndroidOSを搭載した汎用タブレット
開発言語:Android Studio、Java

注文モニター
OS:Windows 10 Pro
開発言語:Visual Studio 2019 C#、GrapeCity ComponentOne for WinForms 2020Jv2
表示用PC:日本HP製の小型パソコンとタッチパネルで構成

作業内容

1. 機能数確認

実行環境を準備し、マニュアルと実行プログラムから画面数、レポート数を確認し、機能一覧作成。

2. 機能の縮小、移行対象機能の決定

機能一覧を元にユーザーに移行対象と不要な機能を分けていただく。

機能縮小ポイント
・使用していない機能の削除
・仕入、販売、在庫等の機能は独自に開発せず、弥生販売等市販パッケージソフトを使用する。
・主要なレポート以外の帳票出力機能削除
⇒データ出力機能の実装し、必要に応じてExcelなどを利用して自身で作表する。
⇒弥生販売へのデータインポート機能(商品、売上)を実装し市販パッケージソフトのレポート機能を利用する。
・材料管理(発注、仕入)の削除
⇒業務システムから機能を切り離し、市販パッケージソフトを使用。

3. 見積

4. データベース解析、テーブル定義

マスタ系は画面から項目を入力し、BtrieveファイルをPSQL DDF Builder でフィールドを解析しテーブル定義を作成。
トランザクション系のテーブルはフィールド数も多く、正規化もされておらず解析が困難だった為、画面の項目から再定義した。

5. 設計

既存プログラムとマニュアルを元に再設計。
注文端末用のアプリは解析不能の為、画面UI以外は何もない状態から再作成。
POSPCと注文端末間でのオーダーデータのやり取りはWebsocket通信を使用するように設計。

6. 開発

7. データ移行

現行プログラムからcsv出力可能なものはcsvファイルから新しいテーブル定義に変換してインポート。
マスタ系はcsv出力機能が無かった為、テーブル定義解析時に使用したPSQL DDF Builderを使ってBtrieveファイルをcsvに変換しインポート。

8. 機能追加

注文モニターの新規開発。
オーダーの管理がレシートのみで、注文数が多くなると配膳済みかどうかスタッフ全員で共有するのに苦労しているという事で注文モニターを新規開発した。
オーダーデータをやり取りしているWebsocket通信内に、注文モニターもクライアントとして参加させ、注文データをモニタリングできるようにし、オーダーの状態を確認できるように画面をタッチして注文状態を未処理⇒処理中⇒処理済へと変更できるようにした。
また、注文漏れを防止する手段として、新規注文時に警告灯を連動させ点灯させる機能を実装した。パトライトを使用した。

苦労した点

・既存プログラムからデータを入力しつつBtrieveファイルを解析しマスタ関連のテーブル定義を作成するのに苦労した。
・細かい動作まではマニュアルと画面の動きからでは確認できなかった為、移行前のプログラムと動きが違うという事で本番稼働後、修正対応をする事が多かった。