はじめまして。TENTIALのテクノロジー本部のSCMマスタグループでGMをしている稲葉です。
去年の話にはなりますが、弊社の商品情報等を含むマスタデータを管理する方法をスプレッドシートからDB管理へ移行しました。 今回は、技術面ではなく移行に至った経緯と移行後の成果についてお話しできればと思います。
スプレッドシート管理の課題
スプレッドシートでのマスタ情報の管理には様々な課題感があり、その課題を解決するためにシステムへの移行を決定しました。具体的には以下のような課題感がありました。
- データの堅牢性
- 権限設定・セキュリティの問題
- マスタデータの増加による、スプレッドシートのパフォーマンスが顕著に低下
- ログが不十分のため、問題発生時の原因特定が困難
- 外部サービスへのマスタ連携が手動になるため、連携ミスが発生したりマスタの登録・管理工数が増加している
以上の課題を解決するために、マスタシステムの作成及び、データベースへの移行を決定しました。
使用技術
- Nuxt3
- Typescript
- MongoDB
- mongoose
- GraphQL
主な機能
マスタシステムでは各マスタの管理機能は前提にありつつも、社内のマスタ・在庫周りのコミュニケーションの改善や他サービスでのマスタデータの使用といった観点でも活用できるように開発を進めていました。その中で作成した機能は大きく分けて以下の機能になります
- 各マスタの管理機能(登録・更新・削除)
- 閲覧機能・検索機能
- 在庫情報の閲覧機能
- 外部サービスへのマスタ連携機能
移行後の成果と恩恵
マスタ管理システムを作成したことにより、最初に挙げていた課題感だけではなく、その他にも様々な成果を得ることができました。 大きく分けて以下の3つの観点で大きな改善を得ることができました。
1. マスタ管理工数の削減
作成したマスタシステムには、マスタデータの登録を補助(一部自動化)する機能が含まれており、これによりマスタ登録に関する工数を大きく削減することができました。また、以前は手動で行っていた外部サービスへのマスタデータ連携を自動化しました。これにより、マスタデータを変更する際にはマスタシステムのみ変更するだけで良くなり、工数の削減と共に、連携先とのデータの整合性も担保することができました。
2. 整合性・セキュリティの向上
マスタシステムでは、複数のロールを用意し、各マスタデータごとに編集権限を設定することが可能になりました。これにより、意図しない作業者による誤ったデータの編集や削除を防ぐことができ、データ整合性が確保されました。また、マスタの編集差分のログもDBに保管しつつ、随時slack へ通知もすることによって問題が発生した際に原因を特定しやすい仕組みづくりもすることができました。
3. マスタ・在庫周りのコミュニケーションの改善
マスタシステム作成以前は、マスタ情報や在庫の情報は一部のメンバーしか確認することができなかったため、SCMチームに都度確認の連絡がいくことが多くなっていました。これによりSCMチームは都度確認の工数が必要になり、その他の部署も確認までのラグが発生してしまう状況になっていました。そのため、マスタシステムにOMSで管理されている在庫情報を連携するようにしました。これによって、マスタシステムに入れるメンバーであれば誰でもマスタ情報及び在庫情報を確認することができるようになり、コミュニケーションコストを下げることができました。
結論
最初は整合性をしっかり担保することができるのか、現行のスプレッドシートでの運用から切り替えて上手く回るのか等の不安がありましたが、システム化して良かったと思っています。
今回の成果で挙げたこと以外にも、マスタシステムと連携してできることは沢山あると思っているため、今後もマスタを活用しつつ様々な課題を解決していければと思います。