御社の販売業務を 拝見し 、 設計を ご提案します
カタログ、注文、決済、会計システムとのデータ交換を、開発の着手前に図でお示しします。
電子商取引システムは、カタログの商品カードから、支払い済みで配達された注文までを一貫して管理します。以下では、システムのモジュール、それが担う業務、そしてCRM・ERP・倉庫・レジとの連携を説明します。
電子商取引向けソフトウェア — 商品、価格、在庫のデータを保持し、インターネット経由で注文を受け付け、決済を行い、注文を実行部門へ引き渡すシステムです。引き渡し先は倉庫、配送、そして会計です。
通常のサイトとの違いは、ページではなく管理対象のオブジェクトを扱う点にあります。商品、価格、在庫、注文、支払い、出荷、返品 — いずれも自らの状態と履歴を持つレコードです。同じ注文が、アプリからも、自動販売機からも、担当者からも、マーケットプレイスからも入ってきます。
これはストアフロントそのものではなく、ストアフロントの上に載る管理の仕組みです。ストアフロントは、管理の仕組みを書き直すことなく、置き換えることも二つ目を追加することもできます。
ECプラットフォームを導入する理由となる六つの課題です。導入前は、いずれも手作業 — 表計算、やり取り、電話 — で処理されています。
仕様、写真、価格、在庫が一か所に保管され、そこからすべての販売チャネルへ配信されます。サイト、アプリ、レジの間で食い違いが生じません。
注文は自動的に、二十四時間体制で作成、確認、決済されます。人が必要なのは判断が求められる場面 — 特殊な配送、争いのある返品、卸売 — だけです。
注文手続き時の引き当てにより、同じ商品を二度売ってしまうことがなくなります。倉庫に商品がないことによるキャンセルは、ごくまれな例にまで減ります。
価格と割引は、商品カードを手で直すのではなくルールで設定します。数千点のカタログの一括改定が数分で終わり、元に戻すこともできます。
注文、支払い、出荷が、再入力なしに経理と倉庫管理へ届きます。突き合わせが独立した作業ではなくなります。
何が買われ、何が検索されても見つからず、注文手続きのどこで離脱し、どの商品が返品されるのかが見えます。品揃えはデータに基づいて計画されます。
自動化とは「販売員の代わりのロボット」ではなく、繰り返される操作をルールへ移し、システムがそれを自ら適用して結果を履歴に記録することです。
ルールは、その条件が変更されない限り有効であり続けます。統制は残ります:すべての自動処理には、実行者、時刻、変更前の値が記録として残ります。
自動処理へ移るもの:
| 時刻 | システムが自ら行ったこと |
|---|---|
| 09:41 | 値入率18%:1 240点を再計算 |
| 10:00 | キャンペーン「紅茶−15%」をスケジュールどおり開始 |
| 10:03 | 注文番号 14 190のキャンセル:在庫に+2 点 |
| 10:06 | SKU 77-1043の在庫僅少:仕入部門へ通知 |
カタログ — 商品データを構造化して保管する仕組みです。何を売っているのか、商品どうしは何が違うのか、どの手がかりで見つけられるのかを保持します。
機能するカタログを構成する要素:

カタログの基本単位は、一意の品番(SKU)を持つ商品品目です。変更されないデータ、編集可能な説明、そして関連するオブジェクト — 画像、書類、価格、在庫 — から成ります。
一括操作はインポートとエクスポートで行います。ファイル、API、または会計システムからの出力です。インポートは必ず検証を通ります:何が作成され、何が変更され、何が拒否され、その理由は何かが示されます。
拒否の内訳:品番の重複 — 9、必須属性「ブランド」が空 — 5、未知のカテゴリー — 3。確定するまで、カタログには一行も書き込まれていません。
価格 — は商品カードの一項目ではなく、問い合わせの時点でルールに従って計算された結果です。一つの商品に複数の価格が同時に存在し、システムが適用すべきものを選びます。
そのため、数千の商品カードで価格を直す必要はありません。ルールか基本の価格表を変更すれば足ります。
価格設定の層:
価格の変更はすべて履歴に記録されます:誰が、いつ、どのルールで、変更前はいくらだったか。粗利のレポートや、争いのある注文の調査はこれに基づきます。
ルールは優先度に従って解決され、やみくもに合算されることはありません。品目の価格計算の標準的な順序は次のとおりです:
併用の可否は明示的に設定します:どの割引が重なり、どれが排他で、最低販売価格はいくらか。最低価格の制限があるため、それぞれは正しい複数の割引が重なって品目が赤字になることはありません。
キャンペーン — 条件に合う注文にシステムが自ら適用するルールです。 プロモコード — は同じルールを、購入者がコードで有効にするものです。どちらも同じ形で記述されます:条件、仕組み、期間、制限。
注文に何が含まれている必要があるか:商品、カテゴリー、ブランド、最低金額、配送方法、顧客セグメント、販売チャネル、時間帯、曜日。
割合、定額、新しい価格、セット内で最も安い商品への割引、送料無料、贈呈品、割引の代わりのポイント。
開始日と終了日、繰り返される時間枠(たとえば毎週金曜日)、担当者の操作なしでの自動開始と自動停止。
適用回数の総枠、顧客ごとの上限、一回限りの個別コード、他のキャンペーンとの併用禁止、品目の最低価格。
一斉配信用の単一コード、または受取人ごとに固有のコードの一括生成。一括生成分はファイルとして出力され、コード単位で追跡できます。
キャンペーンごとに次のことが見えます:注文件数、割引の総額、割引後の売上と粗利、有効化されたコード数と残数。
カート — は注文の下書きです。購入者にも店舗にもまだ義務を生じさせていない品目の集まりです。中の商品は引き当てられておらず、価格も確定していないため、カートは開くたびに再計算されます。
再計算では四つのことを確認します:商品が販売中であること、倉庫に十分な在庫があること、価格が変わっていないこと、割引が有効であること。変更は代金が引き落とされた後ではなく、支払い前に購入者に示されます。
カートに求められること:
注文手続きへ進む合計:3品目、11 640ソム。二つの相違はいずれも、代金の引き落とし後ではなく支払い前に購入者へ示されています。

カートの隣には、購入には直結しないリストがあります:お気に入り、入荷待ち、仕様の比較、過去の注文の再購入。これらは意図的に分けられています — そうしないと、注文の合計が一意でなくなるからです。
カートの大半は注文になりません。システムはそれらを時刻付きで保管し、購入者を呼び戻すことができます:メールやメッセンジャーでのリマインド、内容を復元するリンク、個別の提案。
リマインドはイベントに応じて一度だけ送られ、一斉配信にはなりません — 配信停止は、取り戻した注文よりも高くつきます。
注文 — は購入の内容、手続き時点の価格、購入者、配送と支払いの条件を確定させる書類です。以降、注文は限られた数のステータスに沿って進み、その遷移はすべて記録されます。
価格と割引は注文手続きの時点で確定します:価格の変更やキャンペーンの終了は、すでに作成された注文には影響しません — そうでなければ、請求額とレシートの金額が食い違ってしまいます。
注文手続きの流れ:

標準的なステータス: 新規 → 支払い待ち → 支払い済み → ピッキング中 → 配送へ引き渡し → 配達完了 → 完了。これと並行して、キャンセルと返品の分岐があります。構成は会社の業務に合わせて設定できますが、数は限られ、明示的なままです。
注文の編集は、権限を伴う独立した操作です:品目の追加、商品の差し替え、数量の変更、追加請求または一部返金。編集のたびに、変更前の内容が保存されます。
コールセンター — は別のプログラムではなく、同じ注文キューの上に載る作業画面です。オペレーターは、購入者がマイページで見るのと同じオブジェクトに加え、顧客には開かれていない操作 — 内容の編集、上限内での割引、引き当ての解除、返金 — を扱えます。
問い合わせも注文と同じく、ステータスと履歴を持つレコードです:チャネル、テーマ、関連する注文、担当者、回答期限を持ちます。そのため会話はシフト間の引き継ぎで失われず、その結果は顧客カードで確認できます。
問い合わせの流れ:
発信の業務も同じ形です:ピッキング前の注文確認、特殊な配送についての電話、放置されたカートへの呼び戻し、争いのある返品についての連絡。どの接触も、受信の問い合わせと同じ履歴に書き込まれます。

店舗はカード情報を保管せず、支払いそのものも行いません:購入者を決済事業者へ引き渡し、処理の結果を受け取って注文と結び付けます。残りは、支払いのライフサイクルの管理です。

| 注文 | 取引 | 金額 | ステータス |
|---|---|---|---|
| 14 208 | 与信枠の確保 | 12 480 | 確保中 |
| 14 201 | 引き落とし | 6 350 | 完了 |
| 14 177 | 返金 | 2 100 | 完了 |
| 14 206 | 確保の解除 | 3 940 | 解除済み |
| 14 209 | 銀行による拒否 05 | 890 | 再送 |
商品が倉庫になかったため、返金処理を伴わずに与信枠の確保を解除しました。冪等キーによる再送は、二行目のレコードを作りません。
銀行カード、QRと即時送金、電子ウォレット、受取時払い、法人向けの銀行振込、分割払いとローン、ポイント払い。
まず与信枠の確保:金額はカード上で押さえられますが、引き落とされません。引き落としは注文のピッキング後です。商品がなかった場合は、返金処理を伴わずに押さえが解除されます。
処理の結果は、購入者がサイトへ戻ってくることではなく、サーバー間の別のリクエストで届きます。ブラウザを閉じても支払いは壊れません:ステータスは通知によって更新されます。
同じ決済リクエストを再送しても、二つ目の支払いは作られません。各処理にはキーがあり、決済事業者もシステムもそれで重複を見分けます。
支払い後、オンラインレジがレシートを作成して購入者へ送ります。返品時には、返品された品目についての返金レシートが作成されます。
システム内の取引を、決済事業者の台帳と銀行の明細と毎日照合します。不一致は別のリストに入り、人の手で調べられます。
在庫 — は今この瞬間に販売できる商品の数量です。倉庫にある物理的な数量とは異なります:一部は注文のために引き当てられ、一部は輸送中、一部は不良品として保留されています。
販売可能数 = 物理在庫 − 引き当て − 保留 + 確定済みの輸送中の入荷(予約注文が許可されている場合)。
倉庫や店舗が複数ある場合、在庫は倉庫ごとに計算され、ストアフロントには、選ばれた地域へ配送できる倉庫の合計が表示されます。
データ交換の仕組み:
引き当てには必ず有効期限があります:期限内に支払われなかった注文は、商品を販売可能な状態へ戻します — そうしないと、放置されたカートが利用可能な在庫をすべて「食べて」しまいます。
| 倉庫 | 実数 | 引き当て | 不良品 | 販売可能 |
|---|---|---|---|---|
| 中央倉庫 | 1 420 | 310 | 24 | 1 086 |
| 店舗「東」 | 96 | 12 | — | 84 |
| 受取所番号 3 | 40 | 8 | 2 | 30 |
| 輸送中の入荷 | 600 | — | — | 600 |
| 販売可能数 | 2 156 | 330 | 26 | 1 800 |
実数は物理在庫、不良品は保留されている数量です。輸送中の入荷が販売可能数に入るのは、予約注文が許可されている場合だけです。ストアフロントには、選ばれた地域へ配送できる倉庫の合計が表示されます。
配送は三つのオブジェクトで表されます:配送方法、地域区分、料金。返品はその逆の流れであり、「さかのぼった取り消し」ではなく、独自の書類を持ちます。
住所への配達、受取所、宅配ボックス、店頭受取、大型品向けの運送会社、電子商品向けのデジタル配信。
料金は地域、重量、容積、注文金額によって決まります。ルールで、送料無料になる基準額、階上げの追加料金、規格外品の割増を設定します。
日付と時間枠は、倉庫の稼働予定、ピッキング時間、配送業者のスケジュールから算出されます。埋まった枠は自動的に閉じられます。
注文はAPIで配送業者へ引き渡され、システムは送り状番号と輸送ステータスを受け取って、マイページに表示します。
購入者が品目と理由を選ぶと、システムが期限と商品種別ごとの返品可否を確認し、案内付きの書類を作成します。
検品後、商品は在庫へ戻されるか不良品として処理され、代金は元の支払い方法へ返され、返金レシートが作成されます。
一部返品は当たり前のことです:五品目のうち一つだけが返されます。そのため返品は品目単位で計算され、注文全体への割引は品目へ按分されます — そうしないと、返金額がレシートと食い違います。
倉庫担当者 — は商品を物理的に動かす人です。入荷を受け取り、棚へ置き、注文のために品目を取り出し、梱包した箱を配達員へ渡します。システムはこれらの行為を本人の申告からではなく知ります:どの操作もバーコードの読み取りで裏付けられます。
この違いは本質的です。リストの「完了」のチェックは意図を示すだけですが、読み取りは事実を示します:どの品番か、どの棚か、どの担当者か、秒単位でいつか。品番の打ち間違いは一か月後の棚卸しで表に出ますが、誤ったバーコードはアプリがそもそも受け付けません。
倉庫担当者がシフト中に行うこと:

読み取りは一つひとつが記帳です:棚の在庫は、夕方に伝票を転記する時ではなく、操作したその瞬間に変わります。ストアフロントも、レジも、コールセンターも同じ在庫を読むため、「サイトにはあるのに棚にはない」という状況が起こらなくなります。
ピッキング精度は99.4%:シフト中に読み取りが止まったのは7回で、いずれもその場で修正されました。データは別途の記録簿ではなく、同じ記帳から取られています。
配達員 — は実行の最後の環であり、購入者が直接会う唯一の社員です。そのアプリが担うのは二つのことです:経路を案内することと、後から電話で確かめ直さずに済むように受け渡しを記録することです。
要となる操作は、受け渡し時のQRコードの読み取りです。コードは注文のラベルに印刷されているか、購入者が画面に表示します。読み取りは、そうでなければ言い争いになる問いに答えます:渡されたのはこの注文か、相手はこの受取人か、それは何分のことか。
配車担当 は同じアプリの反対側で働きます:地域、重量、容積、時間帯から経路を組み、配達員を割り当て、シフトの地図を見て、遅延、不通、玄関先での受取拒否といったつまずきを処理します。
配達員のシフトの流れ:

配達員が付けたのと同じステータスを、購入者はマイページで、オペレーターは注文カードで見ます。別途の「配達員の記録簿」はありません:イベントは一つで、それを三者が読みます。
倉庫担当者と配達員は、別々のアプリで、別々の場所で働きますが、同じ一つの注文を扱っています。二人をつなぐのは一日の終わりのレポートではなく、六つの共通のルールです。
ピッキング指示、梱包明細、配送指示書は、それぞれ独立した紙ではなく、同じ一つの注文の見え方の違いです。オペレーターが追加した品目は、書類を作り直すことなく倉庫担当者へ届きます。
商品は倉庫から配達員へ、配達員から購入者へ、読み取りによって移ります。いつでも、注文が物理的に誰の手にあり、何分からそうなのかが分かります。
印を付けるのは、その行為を行った本人であり、行った場所です。配車担当が手でステータスを移すことはないため、事実と記録の間に数時間のずれが生じません。
どちらのアプリも操作を端末内のキューに書き、通信が回復した時点で送ります。各操作にはキーがあるため、再送しても二つ目のピッキングや二つ目の受け渡しは作られません。
入荷時の不足、品違い、破損、住所での一部受取拒否 — どの場合も、在庫を黙って直すのではなく、理由と担当者を持つ独立した記録になります。
ピッキングの時間あたり品目数、ピッキング精度、時間帯どおりに届いた割合、住所での所要時間、一部受取拒否の割合。負荷も報奨も、感覚ではなくこのデータで計算されます。
ここから導入への要件も出てきます:倉庫と配送はまとめてシステムへつなぎます。配達員向けアプリのない倉庫担当者向けアプリは、正確な在庫を出しますが、それは出荷から先へは届きません。
マイページ — は購入者が、オペレーターに連絡せずに自分のデータへアクセスできる場所です:注文、書類、住所、支払い方法、返品。マイページで解決した問い一つひとつが、サポートに入らずに済んだ電話です。
マイページは独自のデータを持ちません:オペレーターが管理パネルで見るのと同じオブジェクトを、その顧客のレコードだけ、その顧客に許された操作だけ表示します。
そこにあるもの:
B2Bではマイページはより複雑です:一つの組織に、権限の異なる複数の担当者がいます。購買担当が注文を組み立て、責任者が承認し、経理が締めの書類を受け取ります。注文は一つ、行為は分かれています。
ワンタイムコードまたはパスワードでのログイン、金銭や連絡先変更の操作での二要素認証、他人の端末を切断できるセッション記録。メールや電話番号の変更は、旧と新の両方で確認します。
同じ記録を、オペレーターは注文カードで見ます:イベントは共通で、マイページ用の別の記録簿はありません。レシートと納品書は「書類」の区画にあります。
連携 — は外部プログラムとの、取り決められたデータ交換です:何を、どの形式で、どれくらいの頻度で渡すのか、データを所有するのは誰か、障害時に何が起きるのか。
システムがつながる先:

連携で最も重要な決めごとは、データに対する責任です。実体ごとに所有するシステムを定めます:品目マスタと価格はERPから、顧客はCRMから、在庫は倉庫から届き、注文はECで生まれます。同じ項目を二つのシステムで双方向に編集すると絶えず食い違いが生じるため、それは避けます。
| システム | 渡すもの | メッセージ数 | 結果 |
|---|---|---|---|
| ERP | 品目マスタ、価格 | 4 120 | エラーなし |
| 倉庫 | 在庫、引き当て | 18 640 | 再送2件 |
| CRM | 顧客、セグメント | 1 305 | エラーなし |
| マーケットプレイス | 注文、在庫 | 2 470 | 1件を調査中 |
連携が壊れるのは稼働開始のときではなく、半年後です — 外部システムが更新されたとき、通信が一時間途切れたとき、マスタに想定外の値が入ったとき。そうした出来事に耐えられるかどうかを決めるのが、六つのルールです。
注文手続きは外部システムの応答を待ちません:メッセージはキューに入り、別に処理されます。倉庫が利用できなくても販売は止まりません。
送信に失敗した場合は、間隔を広げながら再送します。すべての試行の後も通らなかったメッセージは、失われるのではなく調査用のキューに入ります。
再送されたメッセージが二つ目の注文を作ったり、在庫を二重に引き落としたりすることはありません。受け手は処理キーで重複を見分けます。
形式の変更は新しいバージョンとして出し、旧バージョンは動き続けます。外部の利用者は自分たちの都合で移行します。
すべてのメッセージが、本文、時刻、結果、試行回数とともに保存されます。障害の調査は、記憶ではなく記録に基づきます。
主要な指標の定期的な照合:注文、入金額、在庫。食い違いは棚卸しで見つかるのではなく、対応すべき課題になります。
カタログと注文
決済
在庫と倉庫
分析
分析は、外部のアクセス解析だけでなく、自社の販売データと行動データに基づいて組み立てます。解析ツールが知っているのは閲覧、システムが知っているのは金額、商品、返品です。
レポートは切り口ごとに集計されます:期間、販売チャネル、カテゴリー、ブランド、倉庫、地域、顧客セグメント、キャンペーン。どの指標もすべての切り口で参照でき、ファイルやデータ基盤へ出力できます。

最も落ち込みが大きいのはカートと注文手続きの間です。そこでは、新規登録の手順、配送料の計算、支払い方法を見直します。
セキュリティは三つのことに支えられています:決済データが店舗のシステムに入らないこと、個人データを限定して管理下に保管すること、金銭と注文に関わるあらゆる行為が痕跡を残すこと。
カード番号は認定された決済事業者の側で入力され、店舗のシステムには入りません。継続的な引き落としのために保管されるのは、カードではなくトークンです。
通信はすべてHTTPSです。データベース内の重要な項目は暗号化され、バックアップは暗号化した状態で本番環境とは別に保管されます。
役割に基づく設計:コンテンツ担当者は決済を見ず、オペレーターは価格を変更しません。管理画面へのログインは二要素認証です。
誰が価格を変え、誰が注文を取り消し、誰が顧客データを出力したか。記録は変更できず、業務データとは別に保管されます。
必要最小限のデータ項目、保管期間、要請による削除、処理と配信への同意を日時と取得元とともに記録すること。
リクエスト頻度の制限、フォームへの総当たり対策、プロモコードの再利用の監視、ピッキング前の注文の不正検知。
独立した領域として復旧があります。バックアップは、その復元が検証されるまでは役に立ちません:復元の試験は障害のときではなく、あらかじめ決めた予定に沿って行います。
スケーリングとは、作り直すことなく成長に耐える力です。増えるのは三つの量です:カタログの規模、同時に訪れる利用者の数、一時間あたりの注文件数。
カタログの限界は検索と絞り込みに、ピーク時の流入はページの配信に、注文の流量はデータベースと外部連携に現れます。対策もそれぞれ異なり、必要になった段階で導入します。
実務で使われる手法:
| 指標 | 実測 | 基準 |
|---|---|---|
| カタログの応答、p95 | 180 ms | 400 ms |
| ピーク時の時間あたり注文数 | 3 000 | 2 400 |
| キャッシュからの応答 | 86% | 70% |
| カタログの再インデックス | 9 分 | 20 分 |
| バックアップからの復旧 | 22 分 | 60 分 |
システムはモジュールから組み立てられます:各モジュールが自分のデータと操作の領域を担い、互いの関係は明示されています。プロジェクトは分割して立ち上げます — まずカタログと注文、次にロイヤルティ、分析、外部チャネルです。
商品品目、品番、説明、公開ステータス、商品カードの版、販売停止品のアーカイブ。
区分のツリー、商品の複数の枝への割り当て、並び順、特集や季節の区画のための専用ページ。
データ型と表示ルールを持つ属性マスタ — 絞り込み、比較、マーケットプレイスへの連携の土台です。
サイズ、色、容量を一つの商品カードに、品番と在庫は別々に。複数の品目を引き落とす詰め合わせも扱います。
写真、動画、書類、形式と解像度の自動生成、透かし、商品への紐づけ。
価格表、値入のルール、数量帯の価格表、個別価格と契約価格、通貨、丸め、税、履歴。
適用条件、割引の仕組み、スケジュール、上限、コードの一括生成、併用可否、最低価格。
端末をまたぐカート、価格と購入可否の再計算、注文手続きの段階、ゲスト注文、放置されたカートへの呼び戻し。
全チャネルからの単一の注文キュー、ステータスと遷移、内容の修正、追加請求、出荷への分割、キャンセル。
決済事業者の接続、与信枠の確保と引き落とし、一部返金と全額返金、通知の処理、突き合わせ。
販売と返金のレシート、オンラインレジとのデータ交換、購入者へのレシート送信、未送信書類の監視。
倉庫別の在庫、期限付きの引き当て、不良品の保留、入荷と返品の受け入れ、在庫僅少のしきい値。
配送方法、地域区分、料金、時間帯と枠、送り状の作成、ステータスの追跡、書類の印刷。
品目単位の申請、期限と可否の確認、受け取り、返金、在庫への戻し入れまたは不良品処理。
アカウント、住所、法人と契約、注文履歴、セグメント、データ処理への同意。
ポイント、ランク、付与と利用のルール、ポイントの有効期限、個別の提案、紹介制度。
検索インデックス、語形と同義語、打ち間違い、属性による絞り込み、並べ替え、結果のない検索語。
関連商品と類似商品、「一緒に買われている商品」、手動の特集と注文履歴に基づくルール。
ページ、記事、バナー、メタタグとページのアドレス、商品の構造化データ、サイトマップ、商品フィード。
注文のイベントに応じたメール、SMS、メッセンジャー、プッシュ、メッセージのテンプレート、スケジュール、配信の記録。
売上、粗利、在庫、ファネル、返品のレポート、任意の切り口、出力、データマート。
CRM、ERP、倉庫、レジ、決済・物流サービス、マーケットプレイスとのデータ交換。API、Webhook、キュー。
区画と操作ごとの役割と権限、二要素認証、社員の操作記録。
一つの基盤に複数のストアフロント、多言語と多通貨、複数の法人と倉庫、地域対応。
システムを一度のリリースで丸ごと立ち上げることはしません。下記の順序は依存関係を反映しています:どの段階も、前の段階で生まれたデータの上に成り立ちます。
現在の業務、マスタ、データを所有するシステム。成果物は、実体の図と連携のマップです。
品目マスタの移行、属性とカテゴリーの設定、価格と在庫のデータ交換。実データでの検証。
注文手続き、ステータス、決済事業者、レシートの記録、実行への引き渡し。品揃えの一部で稼働開始。
配送と返品、ロイヤルティ、分析、新しい販売チャネル。それぞれが測定を伴う独立したリリースです。
すでに稼働しているものをお書きください:会計システム、倉庫、レジ、現在のストアフロント。業務を分析し、解決策の設計をご提案します。