ひな人形 × Engineering

技術系の話を書いていくつもりです

スクリプトで残念なシステムを補完した話

はじめに

弊社では、ひな人形の卸販売を行っています。当然、販売する商品の名前、価格をデータベースに保存しています。 私が入社する何年も前からその仕組はありますが、ものすごくレガシーなシステムです。かつて事務コンと呼ばれていた機械を改造して作られたシステムです。これが今回お話する、残念なシステムです。

まずは、仕入れ管理システムに登録する現在のフローを簡単に。

  1. 表計算ソフトを使用し、仕入れ値や原価調整を行う
  2. 商品の価格設定ができたら、仕入れ管理システムに1件ずつ登録していく

では次に、仕入れ管理システムの何が残念かを次に並べてみました

  • プライマリキーの登録をDB側ではなく、システム側で登録できないようにしている
    • DBに直接INSERTすれば入るらしい
  • 事務コン独自のDBを使っている
  • 基本的にDBに直接書き込めない
  • 外部ファイルをインポートできない
  • 文字のコピペができない
  • 1件ずつしか商品を登録できない

問題点

仕入れ管理システムが入っているPCの前に行き、そのPCの入力画面で入力しないといけないという点が一番恐ろしいです。 せっかく、仕入れ管理登録前に、Excelでデータを入力したのにまるで活用ができていないのです。百歩譲って手入力で良いとしましょう。コピペができないので、絶対にミスをします。 Excelファイルを目で見て、その商品名と価格を入れる作業を200件以上行います。確実にヒューマンエラーが起きるし、価格に関するデータなので、ミスをすると会計や売上に影響があります。

理想の解決策

これは一言で表せます。このシステムを捨てて新しく作り直します。 そもそも表計算ソフトを使って価格調整を行っている理由は、このシステムが非常に使いづらいからです。本来であればこのシステム上で価格調整をしたいのですが、ここには書ききれない位スーパー不便なのです…… しかし、今年の仕入れは登録しないといけないし、仕入れ管理システムを作り変える時間はないので、とりあえず…

ではどうするか

一応、CSVファイルを使ってDBに登録することはできなくはないようです。(このツールを作成した人談) CSVをツールを作成した人に渡せば出来るとのことですが、プライマリキーの問題があると言われました。DBに直接書き込めば商品名重複登録ができるが、システム上ありえないのでトラブルが起こるらしいのです。 なので、読み込むCSV重複チェックをする必要があります。

スクリプトの作成

Pythonのライブラリのひとつであるpandasを用いてCSVのプライマリキーの重複チェック、修正、出力するスクリプトを作成しました。 しかしこれはあくまでも突貫対応。早急にシステムの見直しが必要です。明らかに現在の仕組みは外部の一名に属人化しており、使いづらくもあるので危険です。

(大したスクリプトではないが、一応後日公開する予定)

最後に

社内にコードを書ける人が一名しかいなく(本職は別なので属人化すると終わる)、今後増える予定もない弊社のような環境では、根幹の仕組み作成を行わず、作業の補完や現存システムでの効率化を行うのがベストなのでは?と思いました。 もちろん社内システムを見直すのが理想ですが、これは外注したほうが属人化せずに良いのでは?と思っています。 次の記事ではどこまでエンジニアリングすべきかについて考えた話を書いてみようと思います。