2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

📦 Odooベースで中小倉庫向けに構築したクラウドWMSの構成図と実装例を公開!

Posted at

🎯 はじめに

こんにちは、ベトナム発のIT企業BinaryTechで物流システムを担当している元エンジニアです。
近年、日本の中小物流企業では「在庫の可視化」「作業効率の改善」「紙・Excelからの脱却」といった課題が多く見受けられます。

本記事では、私たちが オープンソースERP「Odoo」 をベースに構築したクラウド型WMSの設計・実装について共有します。
主に以下のような課題を解決しました:

  • 手書き帳票によるミス
  • 在庫のロケーション管理が曖昧
  • リアルタイムな在庫状況の把握が困難

🧩 システム構成図

以下が、弊社が構築したWMSソリューションの全体像です。
image.png

構成要素:

  • Odoo Backend(Community Edition)
  • PostgreSQL DB
  • React.jsベースのカスタムUI
  • 倉庫内のラベル発行:Zebraプリンタ連携
  • ハンディ端末:Android + WebViewアプリ
  • API連携:受注データを外部ECから自動取得(Shopifyなど)

🧪 技術選定理由

項目 選定技術 理由
ERP基盤 Odoo オープンソースで柔軟。物流モジュールが充実
UI/UX React.js 倉庫作業員でも使いやすい画面設計が可能
DB PostgreSQL Odooデフォルト。高速&安定
モバイル端末 Android + WebView 安価で導入しやすく、現場に馴染みやすい

🛠️ 実装ポイントとコード例

在庫ロケーションのQRコード管理

# Python (Odoo ORM)でQRコード生成モジュールを実装
from odoo import models, fields
import qrcode
import io
import base64

class StockLocation(models.Model):
    _inherit = 'stock.location'

    qr_image = fields.Binary("QR Code", compute='_generate_qr')

    def _generate_qr(self):
        for rec in self:
            qr = qrcode.make(f"Location: {rec.name}")
            buf = io.BytesIO()
            qr.save(buf, format='PNG')
            rec.qr_image = base64.b64encode(buf.getvalue())

📈 効果と成果

  • 📉 人的ミス:30%削減
  • 🕒 棚卸作業時間:2日→6時間
  • 📦 在庫精度:85% → 98%
  • 🌐 遠隔からの在庫状況確認が可能

💡 まとめ

本記事では、中小規模倉庫に向けたクラウドWMS構築事例として、Odooベースの構成や実装ポイントをご紹介しました。

BinaryTechでは、Odooをベースにした「BWMS(Binary WMS)」というWMSパッケージも提供中です。
業務にフィットしたカスタマイズをご希望の企業様は、ぜひご相談ください!

2
5
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
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?