Python運用から.NET GUI化へ。楽天CSV予約アップロードアプリを作った話
はじめに
EC運用では、「営業時間外に商品更新を反映したい」「セール開始タイミングに合わせて更新したい」という場面があります。
私の現場でも、楽天のお買い物マラソン時に夜20時や深夜2時更新対応が定番になっており、CSVやHTMLのアップロード作業を予約実行できることが重要でした。
以前は既存ツールを使って対応していましたが、あるタイミングで運用変更が発生し、そのままでは回らなくなりました。
そこで、予約アップロードアプリを内製した話を書きます。
背景:使えていたツールが突然使えなくなった
これまでは FTP接続対応のアップロードツール(FTP RUSH)を利用していました。
しかし、楽天のSKUプロジェクトの影響で接続方式が FTP → SFTP に変更されました。
その結果、既存ツールが使えなくなりました。
- 深夜2時更新は続く
- 手動対応は現実的ではない
- 外部サービスは高額
そこで、
一度作ってみて、それで無理なら契約しましょう
と社内で提案し、自作することになりました。
まずはPythonで自分用ツールを作成
最初のバージョンは Python で作りました。
機能はシンプルで、必要最低限の構成です。
- 指定時間になったら処理実行
- CSVファイルをSFTPアップロード
- エラー時はメール通知
これで深夜待機せずに済むようになり、実運用でも問題なく使えました。
エラーが出てもメールが届くので深夜対応は必要最低限で済みました。
次の課題:自分しか使いにくい・使えない
Python版は便利でしたが、課題もありました。
- Python環境が必要
- 設定ファイル操作に慣れが必要
- 自分以外が触りづらい
- 属人化しやすい
そこで、誰でも使える形にするために作り直しました。
.NETでGUIアプリ化
次のバージョンでは C# / .NET でGUIアプリ化しました。
実装した主な機能:
- GUIでわかりやすい操作性
- CSV複数登録
- ドラッグ&ドロップ対応
- 実行時間予約
- 常時監視による自動実行
- エラー時メール通知
- 配布しやすいexe化
これにより、Python未導入PCでも使えるようになりました。
導入してよかった点
1. 深夜作業の負担軽減
真夜中に起きてアップロード待機する必要がなくなりました。
2. 売上機会ロスの軽減
営業開始前に更新を反映しやすくなりました。
3. 属人化の軽減
自分しか扱えない状態から、チームでも扱いやすい状態へ近づけました。
4. 現場発の改善でも十分価値があると実感
大規模システムでなくても、小さなツールで現場はかなり変わります。
学んだこと
業務改善は、派手な新規開発だけではありません。
- 毎回面倒
- 地味につらい
- 誰もやりたがらない
こういう部分を解決するだけでも、現場価値はかなりあります。
おわりに
今回の経験で、
- まず小さく作る
- 実運用で検証する
- 必要なら作り直して育てる
この流れはかなり有効だと感じました。
同じように、定期作業・深夜作業・属人化で困っている方の参考になれば嬉しいです。
現場で困っている人ほど、小さな改善の価値は大きいと感じています。