Skip to content
制作実績一覧
自動化 / ECBeta

KANRI — マルチチャネル在庫同期エンジン

KANRI — Multi-channel Inventory Sync Engine

Shopify / 楽天 / Amazon の在庫をEventually Consistentに同期するエンジン。冪等キーとベクトルクロックで二重引当を防ぎ、イベントソーシングで全変更履歴を監査可能にする。

2026 内部パイロット 2026-03
#Event Sourcing#CQRS#Idempotency#Workflow#Forecasting#Multi-channel

ライブデモ

実際のアプリケーション画面のプレビュー

DEMO
app.kanri.jp/dashboard
総SKU数
248+12
本日出荷
67件+23%
在庫アラート
3件+1
在庫回転率
4.2+0.3

在庫レベル

最大在庫比 (%)
抹茶パウダー
85%
玄米茶TB
18%
ほうじ茶ラテ
0%
煎茶 特上
62%
抹茶アイス
7%
和紅茶TB
45%
玉露
4%
抹茶チョコ
78%

アラート

欠品

ほうじ茶ラテベース 500ml

12分前
在庫少

玉露 最高級 100g

1時間前
在庫少

抹茶アイスクリーム 6個入

3時間前

商品在庫一覧

商品名SKU在庫数ステータスEC連携
オーガニック抹茶パウダー 100gMTP-001342在庫あり
Amazon楽天Shopify
玄米茶ティーバッグ 50PGCT-01218在庫少
Amazon楽天Shopify
ほうじ茶ラテベース 500mlHJL-0330欠品
Amazon楽天Shopify
煎茶 特上 200gSNT-005156在庫あり
Amazon楽天Shopify
抹茶アイスクリーム 6個入MIC-0217在庫少
Amazon楽天Shopify
和紅茶 ティーバッグ 30PWKT-00889在庫あり
Amazon楽天Shopify
玉露 最高級 100gGYR-0024在庫少
Amazon楽天Shopify
抹茶チョコレート 12枚入MCH-044203在庫あり
Amazon楽天Shopify

課題

複数ECチャネルで在庫を同期する際、Webhookの到着順が保証されず、単純な「最新値で上書き」戦略では売り越しが頻発していた。各プラットフォームのレート制限とエラーセマンティクスもバラバラで、リトライ戦略の統一が困難だった。

ソリューション

在庫変更を append-only のイベントログに記録し、各チャネルへのプロジェクション生成器を分離した CQRS 構成を採用。チャネル別アダプタは指数バックオフ + ジッタ、冪等キー付きリクエスト、レート制限トークンバケットを統一インターフェースで実装。需要予測はDuckDB上で過去90日間の売上を回すローカルモデルを使用。

成果

  • 在庫同期ラグを中央値 12秒 に短縮
  • 売り越し発生率をシミュレーション上で 99.4% 削減
  • チャネルアダプタの共通化で新規チャネル追加工数を 3日 → 4時間
  • 全変更のイベントログ化により監査可能性を100%確保
Key Metrics

Measured Impact

同期ラグ中央値

12s

売り越し削減 (sim)

99.4%

新規チャネル追加

4h

-94%

監査可能性

100%

Features

What it does

整合性

イベントソーシング

全在庫変更をappend-onlyで記録し、任意時点の状態を再構築可能。

冪等キー

全ての書き込みに冪等キーを付与し、重複処理を防止。

チャネル運用

共通アダプタ

Shopify / 楽天 / Amazon を統一インターフェースで扱い、新規追加も容易。

適応型レート制御

各チャネルの429/503を観測し、トークンバケットの容量を動的調整。

分析

需要予測

DuckDB上で動くExponential Smoothingで商品別需要を予測。

在庫回転率

SKU別回転率と死蔵在庫を可視化。

Architecture

System Layers

Layered architecture showing components, responsibilities, and data flow.

L1

Layer

API

Bunランタイム上の軽量APIサーバ。OpenAPIスキーマから型を自動生成。

HonoBunOpenAPI
L2

Layer

Workflow

チャネル同期は長期実行ワークフローとしてモデル化し、障害時の補償処理を明示。

TemporalRetry PolicySaga
L3

Layer

Event Store

在庫変更イベントをappend-onlyテーブルに記録し、Outboxから各アダプタへ配信。

PostgreSQL (append-only)Outbox Pattern
L4

Layer

Analytics

売上履歴をParquetで蓄積し、DuckDBで需要予測・在庫回転率分析を実行。

DuckDBParquetdbt
L5

Layer

Observability

各ワークフロー実行にtrace-idを付与し、SLO違反をアラート化。

OpenTelemetrySentryGrafana
Development Process

How we built it

01

Discovery

想定ショップの出荷頻度・チャネル構成・既存運用を抽象化した要件を作成。

Deliverables

  • 業務ユースケース集
  • 非機能要件
02

整合性戦略の設計

CRDT / 楽観ロック / イベントソーシングを比較検討し、ADRに決定理由を記録。

Deliverables

  • ADR (整合性モデル)
  • 失敗シナリオ集
03

共通アダプタ設計

チャネルごとのエラーセマンティクスを統一するアダプタインターフェースを設計。

Deliverables

  • アダプタSPEC
  • モックサーバ
04

Implementation

Temporalワークフローとアダプタを並行開発し、統合テストでつなぎ込み。

Deliverables

  • Temporal workflows
  • Adapterパッケージ
05

Chaos Testing

Temporalのリプレイテストとレート制限ファズテストで障害耐性を検証。

Deliverables

  • Chaosテストレポート
06

Soft Launch

自社試験ショップでシャドウトラフィックを処理し、差分を可視化。

Deliverables

  • シャドウ運用ダッシュボード
07

Iteration

アダプタ別のエラー分布に応じてリトライポリシを継続調整。

Deliverables

  • ポリシ更新PR
Roadmap

Delivery Timeline

  • P0Done2026-03-04

    イベントストア設計

    append-onlyストアと楽観ロック付きスナップショットで整合性を担保する設計を確定。

  • P1Done2026-03-20

    Shopify / 楽天アダプタ

    共通アダプタインターフェースを定義し、Shopifyと楽天の実装を完了。

  • P2In Progress2026-04-12

    Amazon SP-API 対応

    SP-APIのレート制限と非同期レポートAPIに対応したアダプタを開発中。

  • P3Planned2026-05

    需要予測とアラート

    DuckDB上の時系列予測と低在庫アラートを統合予定。

  • P4Planned2026-06

    自社EC運用への投入

    KGA ITが運営する試験的ショップで実データ運用を開始予定。

Team

Who built it

2engineers

Roles

  • バックエンドエンジニア
  • データエンジニア
技術スタック

Tools & Platforms

Frontend

TypeScript

Backend

Shopify API楽天RMS APIAmazon SP-API

Data

PostgreSQLRedis

Infrastructure

SentryGrafanaTerraform

Other

BunHonoDuckDBTemporal
Build with KGA

同様のプロジェクトをお考えですか?

お客様のビジネスに最適なソリューションをご提案いたします。

プロジェクトを相談する