Web技術でWMS（倉庫管理システム）を作ろう！

## はじめに
これは [オープンロジアドベントカレンダー2021](https://qiita.com/advent-calendar/2021/openlogi) の1日目の記事です。

WMSについて興味ある方がこの記事を読まれてると思いますが、「そもそもWMSって何？」なんて人もいると思います。

以下の記事を読んでもらえれば概略を掴めますが、物流にあまり詳しくない人には分かりづらいかもしれません。
![WMS](https://store.boxil.jp/media/images/uploads/media_image/media_image/45572/large.jpg)

[【図で解説】WMSとは？倉庫管理システムの基本と他システムとの違いも解説｜ITトレンド](https://it-trend.jp/warehouse_management_system/article/system)
本記事では、WMSについて物流についてわからない方にもわかりやすく説明し、業務システムであるWMSをWeb技術で作成するのが実は最適だということについて説明したいと思います。


## 倉庫とは何か

![img](https://www.sg-fielder.co.jp/butsuryu/wp-content/uploads/2020/10/20200825.jpg)

WMSとは `Warehouse Management System`  の略で、直訳すると、倉庫管理システムの略です。
ただ、倉庫を管理するシステムといっても、物流について馴染みのない方にはいまいちピンとこないですよね？

「倉庫を管理ってどういうこと？そもそも ​**倉庫**​ って何？家にあるけど倉庫！」なんて人もいるかもしれません（笑）

では、まず倉庫とは何かについて説明していきましょう。
いわゆる物流で利用する倉庫は大きく分けて、TCとDCがあります。


### TC
Transfer Center の略
メーカーや卸などから納品された商品をその場で仕分けして店舗などに配送します。そのため、センター内に在庫は持ちません。
基本的にその日に入荷された商品はその日のうちに通過していくので、在庫管理する必要はありません。

### DC 
Distribution center の略。
メーカーや卸などから来た商品を一旦在庫して、後ほど店舗の依頼に応じて配送していきます。
すぐに出荷するわけではないので、納品された商品を適切な場所に置いて在庫管理する必要があります。


## 結局WMSって何？

WMSとは3PL（次に説明します）大手の日立物流の記事によると

> 倉庫などでの商品や各種資材の入出庫や在庫管理など、さまざまな機能を持つ情報システムのこと。Warehouse Management Systemの略称。
> 物流センター内の労務管理や各種作業工程を管理するほか、入荷、検品、ピッキング、流通加工、包装、出荷など一連の庫内作業を可視化し、精度改善や作業効率化、在庫圧縮、顧客満足度向上につながる重要な役割を果たします。

[WMS（物流センター管理システム）| 初めての3PL：日立物流 ](https://www.hitachi-transportsystem.com/jp/3pl/supplychain/beginner.html#:~:text=%E7%89%A9%E6%B5%81%E3%81%AE3PL-,wms,-%EF%BC%88%E7%89%A9%E6%B5%81%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC%E7%AE%A1%E7%90%86)

こう書いてありますが、DCで在庫管理するのに利用するのがWMSです。
WMSは Warehouse Management System なので、直訳すると、倉庫管理システムですが、通過型センターのみしか利用できないシステムはWMSとは呼びません。
WMSの根幹は倉庫管理というよりは在庫管理です。
私見ではありますが、他の機能がなくても最低限、在庫管理機能さえ備えていればWMSと呼ぶことができると思います。


# 3PLについて

3PLとは何でしょうか？
昔は物流機能は自社の物流部門や物流子会社が担うことが普通でしたが、ここ20年あまりは、3PL（3rd Party Logistics) と呼ばれる物流を専門とした会社にアウトソーシングするのが一般的です。
物流子会社も3PL事業で親会社以外の物流を担っている事例もあります。
自社でやるより物流の専門家に任せた方が、コストも安くなりますし、本来の得意な業務に注力していくという流れでしょう。
人類は分業を進めていくことで文明を発展させていきましたから、これも当然の流れですね。


## WMSを利用できると何が良くなるの？

3PLが増えていくに従ってWMSが重要になってきます。
自社で在庫を持って管理していくと、物流は間接業務で直接利益は産まないため、業務改善は進みません。
2021年現在はあるかはわかりませんが、
倉庫の職人が荷物をいい感じのところに置いて、特にそれは記録せず、出荷依頼があったときに記憶でその場所に行って、商品をピッキングして出荷するみたいなことがありました。
在庫も合わなくても自社内なので、経理上の損失として扱えばいいですしね。

しかし、上記のような物流は無駄が多いわけです。職人のような人がいないと在庫管理はたち行かないわけですし、自社内では他に人員もいないため、改善もままなりません。
また、在庫をきちんと管理しようというモチベーションはありません。
従って、コストが高くて品質が低いということが起きます。
そこで上記のような3PLに物流を任せるという動きが起こるわけです。
物流の専門会社なので、他の会社での物流経験を活かしてコスト削減できます。
アウトソーシングのため、売上は取り扱う物量に応じたものとなりますので、必然的にコストを削減、最適化し、効率化を図らなければなりません。
また、在庫が不足してしまうと、その分荷主に補償する必要があります。
そこで、必要となるのが上記のようなことをシステムできちんと実施できるWMSです。
そのため、WMSは3PLのみ使うわけではないですが、3PLをやるのであれば、必須となります。
WMSを導入することで、業務効率化とトレーサビリティを実現することができます。
また、WMSを利用し、物流オペレーション自体がシステム化することで、
急に物量が増えて、人が必要になった場合にも短期バイトの人に最低限利用方法さえ教えれば、人員の増強が簡単にできるようになりますよね。


## WMSを使った在庫管理って具体的になにをするの？

在庫管理と一言でいっても分かりづらいですよね。ここで具体的なWMSの機能を在庫管理に関わるところだけ説明していきましょう。

### 入荷検品
届いてきた荷物の取引先、商品、数量を確認し、入荷する予定とあっているかを確認し、在庫計上を行います。
つまり納品予定に間違いないことを確認して、在庫計上します。


### 格納/入庫作業
在庫計上されただけではどこに置いたかがわからなくなってしまいます。
そのため、あらかじめ倉庫内の商品を保管する場所にロケーションと呼ばれる住所をつけておき、在庫計上後にそこに入れるようにします。

### ロケーション移動
上記の格納/入庫作業の後にロケーションを変更したくなったときに実施します。
具体的なケースとしては、出荷により占有スペースが小さくなって、もっと適切な場所に移したいときや、倉庫の奥に置いてしまったが、出荷量が多くなってきたので、取り出しやすい場所に移動したいときなどに利用されます。もちろん他にもロケーションを移動したいケースはあるので、これはあくまでも一例です。

### ピッキング
在庫してある商品に荷主から出荷依頼がきます。
それをもとに倉庫内のロケーションから何個取り出すかの指示を作成し、作業者がその指示内容をもとに商品を持ってきます。
これをピッキングと呼びます。

### 出荷検品
ピッキングした商品が正しいかわからないので正しいかどうかをバーコードスキャナーなどで商品をスキャンしてチェックします。

### 梱包
出荷検品した商品を梱包し、送り状などを貼っておきます。
この後、配送業者に引き渡せば、倉庫でやることは終わりです。


## WMSのハード構成について

倉庫内にサーバーを置き、そのサーバーにDBが入っており、
クライアントのアプリケーションでそれを更新する形となります。
クライアントはPCだけではありません。現場で利用するには大きく取り回しが悪いので、キーエンスやカシオなどが販売しているバーコードスキャナーがついてるハンディヘルドターミナルと呼ばれる小型の端末（Windows Embeddedとかが入ってる） を利用して入力していきます。

↓こんな感じのやつです
![img](https://www.a-poc.co.jp/image/PM200-001-424.jpg)

今のようにWeb技術クラウド技術が一般的でなかった10年ほど前はこれが一般的な構成でした。
そのため、倉庫内のサーバーの管理をする必要があり、サーバーが落ちてしまうと大変です。
倉庫には物流の専門家はいますが、サーバーの専門家はいないので、サーバーがおちてしまうと保守の人が来るまで何もできません。
また、倉庫を増やしたくても、WMSが1つの倉庫に密結合しているので、同じWMSを利用したくてもシステム構築を別途行う必要があり、なかなか難しいですね。


## Web技術とWMS
![img](https://miro.medium.com/max/1024/1*QjuXtByLQg0o6E-bB6Uw7A.png)
現在はWeb技術が発展し、フロントエンドのJavaScriptでいろんな動作を簡単に実現することができるようになったので、 WebブラウザをWMSとして利用することができるようになりました。
サーバーもクラウドにおけば、倉庫で管理する必要もないので、倉庫での管理コストもありません。
インストール型のWMSだとソフトウェアアップデートも一苦労ですが、Web技術であれば、開発側ですべてコントロールが可能です。
また、ハンディヘルドターミナルもWeb技術を利用すれば、高い機器を買わなくてもスマートフォンで代用できます。
あたらしい倉庫を増やしたい場合も最悪インターネット環境さえあれば機器は汎用的なPCやスマホを用意できればすぐに増やすことができますね。

銀行の基幹システムはWeb技術に代替するのはほぼ無理でしょうが、物流の基幹システムであるWMSはWeb技術を全面的に採用することで驚くほどのメリットがあります。

今後新たに開発されるWMSは基本的にWebで動くものとなるでしょう。
Windowsでのみ動くような企業向けソフトウェアは書きたくないけど、OSに依存しないオープンなWeb技術で業務システムを作ってみたいという方には非常に有望なシステムだと思います。

## 最後に

しかし、物流会社の要望を受けてWMSを作成する SIer 会社のようなだと、開発がウォーターフォールになりがちでWebの新しい技術を利用してアジャイルに開発していくことは難しいと思います。

そのため、上記のような開発をするには、自分で事業を持っているスタートアップの会社がいいでしょう。
そう言った会社は珍しいですが、この記事を読まれている方は一つはそういった会社をご存知だと思いますので、興味を持った方は検討してみてはいかがでしょうか？ 笑