RapidTable

RapidTable

お問い合わせ

物流の配送状況をPub/Subモデルでリアルタイムなデータ管理サービスを構築

RapidTableが提供するリアルタイム更新機能と2次元コード読込みアプリをサーバーレスで構築

このコラムでは、物流における配送状況のリアルタイムなデータ更新及び可視化をRapidTableで実現する方法についてご紹介します。
今回のケースでは、配送現場向けに最適化したアプリケーションを別途用意する必要がありますが、例えば Next.js x RapidTable SDK x RapidTable という構成で、サーバーレスなPub/Subモデルのアプリケーションを低コストで実現できます。

当コラムにおけるRapidTableのリアルタイムデータ更新機能はEnterpriseライセンスに限ります。


Pub/Sub とは?

Pub/Subは、データの発行する側(パブリッシャー)とデータを受け取る側(サブスクライバー)との間で、イベントベースの通信を実現するモデルです。
パブリッシャーはイベントを発行し、それに関心のあるサブスクライバーがそのイベントに対して登録し、必要なデータを受け取ります。
Pub/Subモデルは一対多の関係をサポートし、非同期のイベント駆動型アーキテクチャを構築するための手段として役立ちます。

一例ですが、Pub/Subモデルを使用して、配送状況のリアルタイムなデータ更新システムを構築するメリットはいくつかあります。

  1. リアルタイムなデータの可視化 Pub/Subモデルを使用することで、物流の配送状況がリアルタイムで更新され、関係者はすぐに最新情報を取得することができます。
    これにより、物流プロセス全体が透明化され、関係者は配送の進捗や問題点に迅速に対応できます。
  2. 通信コストの最適化 Pub/Subモデルは非同期的に情報の伝達が行われます。
    データの最新情報を定期的に確認する「ポーリング処理」と異なり、データが作成・変更・削除されるタイミングで通知する「イベント駆動」になるため効率的かつ即時性の高い情報伝達が可能となります。
  3. 柔軟性とモジュール性 Pub/Subアーキテクチャは、パブリッシャーとサブスクライバーを分離するためモジュール性が高くなります。
    そのため異なるコンポーネントやサービスを組み合わせて柔軟なシステムを構築しやすくなり、延いては新しい機能や外部ツールなども統合しやすくなります。

このようにメリットの多いPub/Sub型システムのポイントを下記ご紹介します。


2次元コードリーダーを搭載した荷物受け取りアプリの作成

荷物受け取りアプリの例

まず、配送センターなどの現場で利用する荷物の受け取りアプリを用意します。
このアプリを用意することで、配送センターなどの各拠点に専用サーバーを用意したり、専用のソフトウェアをインストールする必要はありません。

例えば一般的なスマートフォンと標準的なWEBブラウザだけで2次元コードの読み取り端末とすることができます。

まずは、以下のようにNext.jsのプロジェクトを用意します。加えて、rtc4js(Node.js 向けの RapidTableConnector)も併せてインストールを行います。

必要なパッケージのインストール

Next.js
npm install next@latest react@latest react-dom@latest
RapidTableConnector
npm install rtc4js
2次元コード (使い方はコチラを参照ください)
npm install jsqr

荷物を識別する2次元コードをRapidTableへ送信する

/**
 * RapidTable接続インスタンスの作成(下記の例では環境変数から接続情報参照しています)
 */
const connector = RapidTableConnector.builder()
  .accessId(process.env.RT_REST_API_EMAIL)
  .accessKey(process.env.RT_REST_API_KEY)
  .endpoint(process.env.RT_ENDPOINT)
  .build();

/**
 * RapidTableへの送信
 * (例:荷物の集荷処理完了を送信)
 */
const data = {
  // 2次元コードから読み込んだ荷物の識別コード
  cargoCode: '********',
  // 集荷をした拠点を示すコード
  baseCode: 'NRT001',
  // 集荷が完了したことを示すステータス
  status: 'done',
};
const request = ReportCreateRequest.builder()
  .workspaceId(process.env.RT_WORKSPACE_ID)
  .projectId(process.env.RT_PROJECT_ID)
  .partialUpdate(true)
  .append(data)
  .build();
// 送信処理
await connector.create(request, ReportResponse.of);

集荷状況管理画面(RapidTableのプロジェクト画面)

RapidTable物流の配送状況をPub/Subモデルでリアルタイムなデータ管理サービスを構築

次に、上記によって集められた集荷状況のデータをRapidTableで確認する方法です。

配送状況の送信先となるRapidTableのプロジェクト画面を開きます。
設定(歯車アイコン)メニューから「自動更新:OFF」をクリックし、「自動更新:ON」とすることで上記のアプリケーションからデータが送信されるタイミングで自動的にデータを反映することができます。

RapidTable物流の配送状況をPub/Subモデルでリアルタイムなデータ管理サービスを構築

今回は物流を一例に挙げましたが、さまざまな業種・職種で同じスキームを活用いただけるかと思います。
今回紹介したサンプルの設計や実装方法について詳しい情報を知りたい方は、お気軽にお問い合わせください!

製品の資料請求や導入のお問い合わせはコチラから