1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FTP廃止で既存ツールが使えなくなったので、楽天CSV予約アップロードアプリを内製した話

1
Posted at

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. 現場発の改善でも十分価値があると実感

大規模システムでなくても、小さなツールで現場はかなり変わります。


学んだこと

業務改善は、派手な新規開発だけではありません。

  • 毎回面倒
  • 地味につらい
  • 誰もやりたがらない

こういう部分を解決するだけでも、現場価値はかなりあります。


おわりに

今回の経験で、

  • まず小さく作る
  • 実運用で検証する
  • 必要なら作り直して育てる

この流れはかなり有効だと感じました。

同じように、定期作業・深夜作業・属人化で困っている方の参考になれば嬉しいです。
現場で困っている人ほど、小さな改善の価値は大きいと感じています。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?