(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023025886
(43)【公開日】2023-02-24
(54)【発明の名称】顧客管理システム、顧客管理システムの制御方法、顧客管理システムの制御プログラム、及び、顧客管理システムの制御プログラムの記憶媒体
(51)【国際特許分類】
G06Q 30/0201 20230101AFI20230216BHJP
G07G 1/00 20060101ALI20230216BHJP
G07G 1/12 20060101ALI20230216BHJP
G06Q 10/087 20230101ALI20230216BHJP
B65G 61/00 20060101ALI20230216BHJP
【FI】
G06Q30/02 300
G07G1/00 331B
G07G1/12 361Z
G07G1/12 321Q
G06Q10/08 330
B65G61/00 416
【審査請求】未請求
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2021131316
(22)【出願日】2021-08-11
(71)【出願人】
【識別番号】319000436
【氏名又は名称】ラトナ株式会社
(74)【代理人】
【識別番号】100185878
【弁理士】
【氏名又は名称】植田 晋一
(72)【発明者】
【氏名】高橋 智
(72)【発明者】
【氏名】大田和 響子
【テーマコード(参考)】
3E142
5L049
【Fターム(参考)】
3E142AA01
3E142EA13
3E142GA41
3E142JA01
5L049BB05
5L049BB63
(57)【要約】
【課題】顧客管理システムの構成の簡略化を図る。
【解決手段】顧客管理システム(100)は、店舗内の買い物客の動作を取得するセンサ(2、3)と、コンテナ化されたアプリケーションであるコンテナをオーケストレーション技術によりリソース管理された環境で動作させる端末であって、買い物客毎の店舗内での行動を記録した顧客行動レコードを記憶し、センサにより取得される買い物客の行動を用いて、買い物客の店舗内での行動を示す顧客行動を検出し、検出された顧客行動を顧客行動レコードに追加する、エッジ端末(1)と、を備える。エッジ端末のうちの1つである第1エッジ端末(1A)は、検出された顧客行動を、第1エッジ端末の買い物客の顧客行動レコード(111A)、及び、第1エッジ端末とは異なる第2エッジ端末(1B)に記憶された買い物客の顧客行動レコード(111B)に追加する。
【選択図】
図14
【特許請求の範囲】
【請求項1】
店舗内の買い物客の動作を取得するセンサと、
コンテナ化されたアプリケーションであるコンテナをオーケストレーション技術によりリソース管理された環境で動作させる端末であって、前記買い物客毎の前記店舗内での行動を記録した顧客行動レコードを記憶し、前記センサにより取得される前記買い物客の行動を用いて、前記買い物客の顧客行動を検出し、前記検出された前記顧客行動を前記顧客行動レコードに追加する、エッジ端末と、を備える顧客管理システムであって、
前記エッジ端末のうちの1つである第1エッジ端末は、検出された前記顧客行動を、前記第1エッジ端末の前記買い物客の前記顧客行動レコード、及び、前記第1エッジ端末とは異なる第2エッジ端末に記憶された前記買い物客の前記顧客行動レコードに追加する、顧客管理システム。
【請求項2】
請求項1に記載の顧客管理システムであって、
顧客管理システムは、複数の前記第2エッジ端末を備え、
前記第1エッジ端末は、検出された前記顧客行動を、複数の前記第2エッジ端末に記憶された前記買い物客の前記顧客行動レコードに追加する、顧客管理システム。
【請求項3】
請求項1または2に記載の顧客管理システムであって、
前記顧客行動は、前記買い物客が購入商品を取得する購入行動を含み、
前記エッジ端末は、前記センサにより取得される前記買い物客の動作を用いて、前記買い物客の前記購入行動を検出し、前記検出された前記購入行動を前記顧客行動レコード内の購入商品リストに追加する、顧客管理システム。
【請求項4】
請求項3に記載の顧客管理システムであって、
顧客管理システムは、さらに、前記エッジ端末の近傍に配置されるとともに、前記エッジ端末と接続される表示装置を備え、
前記第1エッジ端末は、前記第1エッジ端末の前記購入商品リストを、前記表示装置に表示させる、顧客管理システム。
【請求項5】
請求項4に記載の顧客管理システムであって、
顧客管理システムは、さらに、前記エッジ端末の近傍に配置されるとともに、前記エッジ端末と接続され、前記買い物客の操作を受け付ける操作装置を備え、
前記第1エッジ端末は、前記操作装置からの操作に応じて、前記購入商品リストに示される前記購入商品の商品代金の決済処理を行う、顧客管理システム。
【請求項6】
請求項5に記載の顧客管理システムであって、
前記表示装置、及び、前記操作装置は、タッチパネルディスプレイとして一体化して構成される、顧客管理システム。
【請求項7】
請求項5または6に記載の顧客管理システムであって、
前記エッジ端末は、さらに、前記店舗内の商品の在庫数を記憶し、前記決済処理が行われた前記購入商品リストに示された商品の数を前記在庫数から減ずる、顧客管理システム。
【請求項8】
請求項1から7のいずれか1項に記載の顧客管理システムであって、
前記第1エッジ端末、及び、前記第2エッジ端末は、
前記第1エッジ端末、及び、前記第2エッジ端末のそれぞれにおいて、内部に設けられる任意の前記コンテナにより読み書き可能な共有メモリ領域と、
前記買い物客の前記顧客行動を検出し、検出された前記顧客行動を示す顧客行動情報、及び、前記顧客行動情報を次に処理する前記コンテナを示す次処理コンテナ情報を、前記共有メモリ領域に書き込む、検出コンテナと、
前記顧客行動レコードを管理し、前記共有メモリ領域に書き込まれた前記顧客行動情報を読み出して前記顧客行動レコードに記録する、記録コンテナと、
前記共有メモリ領域への前記検出コンテナの書き込みを検出し、前記次処理コンテナ情報に示された前記記録コンテナの起動を開始させる、仲介コンテナと、を備える、顧客管理システム。
【請求項9】
請求項8に記載の顧客管理システムであって、
前記記録コンテナは、前記仲介コンテナにより起動された後に、所定の処理を行う起動状態に遷移し、前記起動状態において所定の処理を終了すると待機状態に遷移する、顧客管理システム。
【請求項10】
請求項8または9に記載の顧客管理システムであって、
前記第1エッジ端末及び前記第2エッジ端末は、それぞれの内部において、前記オーケストレーション技術によって、前記コンテナ間に相互に通信可能な仮想ネットワークが構築され、
前記第1エッジ端末と前記第2エッジ端末とは、前記仮想ネットワークとは異なるリアルネットワークにより接続され、
前記第1エッジ端末、及び、前記第2エッジ端末のそれぞれは、前記第1エッジ端末及び前記第2エッジ端末における、前記リアルネットワークの情報、及び、前記共有メモリ領域の構成を記憶する端末間通信コンテナを備え、
前記第1エッジ端末の前記端末間通信コンテナは、前記第2エッジ端末の前記端末間通信コンテナと、前記リアルネットワークを介して通信を行い、
前記第1エッジ端末の前記検出コンテナは、前記第1エッジ端末の前記端末間通信コンテナ、及び、前記第2エッジ端末の前記端末間通信コンテナを介して、前記顧客行動情報、及び、前記次処理コンテナ情報を、前記第2エッジ端末の前記共有メモリ領域へ書き込む、顧客管理システム。
【請求項11】
請求項10に記載の顧客管理システムであって、
前記第1エッジ端末、及び、前記第2エッジ端末は、所定のプロトコルで前記リアルネットワークによる通信を実行するネットワークアダプタを備え、
前記第1エッジ端末の前記端末間通信コンテナは、前記第2エッジ端末の前記ネットワークアダプタに通信開始要求を送信し、
前記第2エッジ端末の前記端末間通信コンテナは、前記第2エッジ端末の前記ネットワークアダプタへの前記通信開始要求の受信を検出すると、前記第1エッジ端末の前記端末間通信コンテナとの通信経路を確立する、顧客管理システム。
【請求項12】
請求項10または11に記載の顧客管理システムであって、
前記仲介コンテナは、
予め、任意の前記エッジ端末の前記リアルネットワークの構成を記憶し、
前記共有メモリ領域に前記リアルネットワークの構成に含まれない端末から前記顧客行動情報、または、前記次処理コンテナ情報の書き込みがあった場合には、前記書き込まれた情報を破棄する、顧客管理システム。
【請求項13】
請求項1から12のいずれか1項に記載の顧客管理システムであって、
前記センサは、前記買い物客の顔、及び、前記買い物客の行動を撮影するカメラであり、
前記エッジ端末は、
前記カメラの撮影画像を用いて、顔認識により前記買い物客を特定するとともに、前記顧客行動を特定する、
顧客管理システム。
【請求項14】
請求項13に記載の顧客管理システムであって、
前記エッジ端末は、前記撮影画像から顔部分を抽出して顔認識用画像を生成し、前記顔認識用画像を用いて前記顔認識を行う、顧客管理システム。
【請求項15】
請求項14に記載の顧客管理システムであって、
前記顔認識は、ネットワークを介して接続されるサーバにより行われ、
前記エッジ端末は、前記サーバに対して前記顔認識用画像を送信し、前記顔認識を行わせる、顧客管理システム。
【請求項16】
請求項13から15のいずれか1項に記載の顧客管理システムであって、
前記エッジ端末は、前記顔認識の結果を示す第1識別子とは異なる第2識別子を用いて、前記顧客行動レコードを管理する、顧客管理システム。
【請求項17】
店舗内の買い物客の動作を取得するセンサと、
コンテナ化されたアプリケーションであるコンテナをオーケストレーション技術によりリソース管理された環境で動作させる端末であって、前記買い物客毎の前記店舗内での行動を記録した顧客行動レコードを記憶し、前記センサにより取得される前記買い物客の行動を用いて、前記買い物客の顧客行動を検出し、前記検出された前記顧客行動を前記顧客行動レコードに追加する、エッジ端末と、を備える顧客管理システムの制御方法であって、
制御方法は、前記エッジ端末のうちの1つである第1エッジ端末は、検出された前記顧客行動を、前記第1エッジ端末の前記買い物客の前記顧客行動レコード、及び、前記第1エッジ端末とは異なる第2エッジ端末に記憶された前記買い物客の前記顧客行動レコードに追加することを含む、顧客管理システムの制御方法。
【請求項18】
店舗内の買い物客の動作を取得するセンサと、
コンテナ化されたアプリケーションであるコンテナをオーケストレーション技術によりリソース管理された環境で動作させる端末であって、前記買い物客毎の前記店舗内での行動を記録した顧客行動レコードを記憶し、前記センサにより取得される前記買い物客の行動を用いて、前記買い物客の顧客行動を検出し、前記検出された前記顧客行動を前記顧客行動レコードに追加する、エッジ端末と、を備える顧客管理システムの制御に用いられるコンピュータプログラムであって、
コンピュータプログラムは、前記エッジ端末のうちの1つである第1エッジ端末に対して、検出された前記顧客行動を、前記第1エッジ端末の前記買い物客の前記顧客行動レコード、及び、前記第1エッジ端末とは異なる第2エッジ端末に記憶された前記買い物客の前記顧客行動レコードに追加させることを含む、コンピュータプログラム。
【請求項19】
店舗内の買い物客の動作を取得するセンサと、
コンテナ化されたアプリケーションであるコンテナをオーケストレーション技術によりリソース管理された環境で動作させる端末であって、前記買い物客毎の前記店舗内での行動を記録した顧客行動レコードを記憶し、前記センサにより取得される前記買い物客の行動を用いて、前記買い物客の顧客行動を検出し、前記検出された前記顧客行動を前記顧客行動レコードに追加する、エッジ端末と、を備える顧客管理システムの制御に用いられるコンピュータプログラムを記録した記憶媒体であって、
コンピュータプログラムは、前記エッジ端末のうちの1つである第1エッジ端末に対して、検出された前記顧客行動を、前記第1エッジ端末の前記買い物客の前記顧客行動レコード、及び、前記第1エッジ端末とは異なる第2エッジ端末に記憶された前記買い物客の前記顧客行動レコードに追加させることを含む、記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、店舗で用いられる顧客管理システム、顧客管理システムの制御方法、顧客管理システムの制御プログラム、及び、顧客管理システムの制御プログラムの記憶媒体に関する。
【背景技術】
【0002】
近年、小売り店舗において店員の数を減らすために、決済処理の一部または全部を自動化することが検討されている。例えば、特許文献1に開示された無人店舗システムによれば、決済時に決済端末により顔認証を行うとともに、入店時及び退店時には入店チェッカー及び退店チェッカーにより顔認識を行い、その後、入店時、決済時、及び、退店時の顔認識結果を比較することにより、商品を購入して退店した利用者、及び、商品を購入せずに退店した利用者を特定することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示された技術によれば、入店チェッカー及び退店チェッカーとは別に決済端末を配置する必要がある。その結果、店舗内の設備構成が複雑化してしまうという課題がある。
【0005】
本発明は、このような課題を解決するためになされたものであり、店舗内の装置構成が複雑になることなく、買い物客の利便性の向上を図る顧客管理システムを提供することを目的とする。
【課題を解決するための手段】
【0006】
本願発明の一態様によれば、顧客管理システムは、店舗内の買い物客の動作を取得するセンサと、コンテナ化されたアプリケーションであるコンテナをオーケストレーション技術によりリソース管理された環境で動作させる端末であって、買い物客毎の店舗内での行動を記録した顧客行動レコードを記憶し、センサにより取得される買い物客の行動を用いて、買い物客の店舗内での行動を示す顧客行動を検出し、検出された顧客行動を顧客行動レコードに追加する、エッジ端末と、を備える。エッジ端末のうちの1つである第1エッジ端末は、検出された顧客行動を、第1エッジ端末の買い物客の顧客行動レコード、及び、第1エッジ端末とは異なる第2エッジ端末に記憶された買い物客の顧客行動レコードに追加する。
【0007】
本願発明の他の態様によれば、顧客管理システムにおいて、顧客行動は、買い物客が購入商品を取得する購入行動を含む。エッジ端末は、センサにより取得される買い物客の動作を用いて、買い物客が購入商品を取得する購入行動を検出し、検出された購入行動を顧客行動レコードに追加する。
【発明の効果】
【0008】
本願発明の一態様の顧客管理システムによれば、任意のエッジ端末において、センサにより取得される買い物客の動作に応じて、都度、顧客行動が検出される。そして、あるエッジ端末(第1エッジ端末)により検出された顧客行動は、任意のエッジ端末(第1エッジ端末及び第2エッジ端末)の顧客行動レコードに追加される。
【0009】
このような構成によれば、顧客行動レコードは、エッジ端末のそれぞれにおいて追加される。その結果、集中的に顧客行動レコードを管理する専用端末が不要になり、複数の同一構成のエッジ端末を用いて顧客管理システムを構成することができるので、顧客管理システムの設備構成を簡略化できる。
【0010】
本願発明の他の態様の顧客管理システムによれば、都度、買い物客による購入商品の購入行動が検出される。そして、検出された購入行動は、顧客行動レコードに追加される。このように、顧客行動レコードに購入行動を含めることで、顧客管理システムを買い物客の決済に使用できる。その結果、集中的に決済処理を行うサーバや決済専用端末が不要になり、顧客管理システムの設備構成を簡略化しながら、決済の自動化を図ることができる。
【図面の簡単な説明】
【0011】
【
図1】
図1は、第1実施形態の顧客管理システムの概略構成図である。
【
図4】
図4は、エッジ端末のハードウェア構成図である。
【
図5】
図5は、コンテナエンジン及びオーケストレーションツールを備える装置の一般的なソフトウェア構成図である。
【
図6】
図6は、マイクロサービスアーキテクチャを採用したエッジ端末のソフトウェア構成図である。
【
図7】
図7は、マイクロサービスアーキテクチャを採用したエッジ端末のソフトウェア構成図であって、共有メモリ領域を利用した処理結果の提供制御に係る構成を示す図である。
【
図8】
図8は、共有メモリ領域に記憶される第1~第3データ領域のフォーマットを示す図である。
【
図9】
図9は、第1マイクロサービスから第2マイクロサービスへの処理結果の提供制御を示すフロー図である。
【
図10】
図10は、マイクロサービスアーキテクチャを採用した2つのエッジ端末のソフトウェア構成図であって、2つのエッジ端末間における共有メモリ領域を利用した処理結果の提供制御に係る構成を示す図である。
【
図11】
図11は、顧客管理システムにおけるエッジ端末のソフトウェア構成図である。
【
図12】
図12は、エッジ端末による顧客行動情報の記録制御を示す図である。
【
図14】
図14は、2つのエッジ端末による顧客行動情報の記録制御を示す図である。
【
図16】
図16は、エッジ端末による決済制御を示す図である。
【
図17】
図17は、変形例における3つのエッジ端末の間における顧客行動情報の記録制御を示す図である。
【
図18】
図18は、第2実施形態の共有データ領域のフォーマットを示す図である。
【
図19】
図19は、処理結果の提供制御におけるサービスブローカの処理のフローチャートである。
【発明を実施するための形態】
【0012】
以下、図面を参照して、本発明の実施の形態について説明する。実施の形態の説明において、個数や量などに言及する場合や特に記載がある場合等を除き、本発明の範囲は必ずしもその個数や量などに限定するものではない。実施形態を示す図面において、同一の名称は、同一部分または相当部分を示すものとする。また、実施形態の説明において、同一の名称を付した部分等に対しては、重複する説明は繰り返さずに省略する。
【0013】
以下、図面を参照して、本発明の実施形態について説明する。
【0014】
(第1実施形態)
図1は、第1実施形態の顧客管理システムの概略構成図である。
【0015】
顧客管理システム100は、主に、小売り等を行う店舗10において用いられるシステムであって、ネットワーク側の機器と連携して動作することができる。顧客管理システム100は、例えば、店舗10の買い物客の店舗内の行動を記録するとともに、買い物客に対して決済手段を提供する。なお、顧客管理システム100は、小売りを行う店舗に限らず、種々の店舗に使用できる。
【0016】
店舗10においては、エッジ端末1が、カメラ2、走査センサ3、及び、タッチパネル4と接続されている。そして、店舗10においては、複数のエッジ端末1がLAN5(Local Area Network)を介して接続されている。なお、エッジ端末1は、MEC(Mobile Edge Computing)装置と称されることもあるため、図中においては「MEC」と示されている。
【0017】
この例においては、エッジ端末1、カメラ2、走査センサ3、及び、タッチパネル4(TP:Touch Panel)の組み合わせが2セット含まれているが、これに限らない。顧客管理システム100において、これらの組み合わせが1セット含まれてもよいし、3セット以上含まれていてもよい。エッジ端末1に対して、カメラ2、走査センサ3、及び、タッチパネル4のうちの1以上の構成が接続されていればよい。また、カメラ2、走査センサ3、及び、タッチパネル4は、エッジ端末1に直接接続されずに、LAN5を介してネットワーク接続されてもよい。
【0018】
LAN5は、WAN6(Wide Area Network)と接続されている。エッジ端末1は、店舗10の外部のサーバ7と接続され、所定の処理をサーバ7に行わせることができる。さらに、エッジ端末1は、店舗10の外部に設けられる管理端末8を用いて管理されてもよい。
【0019】
このように、エッジ端末1は、WAN6を介して接続されるサーバ7及び管理端末8と一体となって、顧客管理システム100を構成する。なお、エッジ端末1がネットワークを介して店舗10の外部の機器と通信を行わないように構成されてもよい。このような場合には、店舗10内においてエッジ端末1を中心に構成されるシステムが、顧客管理システム100と称される。
【0020】
以下、顧客管理システム100の各構成の概略について説明する。
【0021】
エッジ端末1は、顧客行動記録装置の一例であって、カメラ2及び走査センサ3の取得情報を用いて、買い物客の行動を顧客行動として検出し、検出した顧客行動を自身が備える顧客行動レコードに記憶する。例えば、エッジ端末1は、買い物客が商品棚から購入予定商品を取り出す購入行動を検出し、検出された購入行動に応じて買い物客及び購入予定商品を顧客行動レコード内の購入商品リストにおいて管理する。そして、エッジ端末1は、買い物客の操作に応じて、購入商品リストに記載された購入予定の商品の決済処理を行う。
【0022】
店舗10内においては、店内の掲示等により、買い物客が商品棚から商品を取り出す際に、取り出した商品とともに自身の顔をカメラ2で撮影されることが推奨されている。そして、エッジ端末1は、カメラ2の撮影画像を用いて顔認識及び商品認識を行うことで、購入行動を検出する。
【0023】
このように、エッジ端末1は、買い物客毎に店舗内における行動(顧客行動)を記録する顧客行動レコードを備える。顧客行動レコードには、例えば、購入予定商品の一覧、及び、それらの商品の金額を記憶する購入商品リストを備える。また、顧客行動レコードには、商品を取り出していない顧客行動も記録される。そのため、顧客行動レコードを用いることで、決済処理に加えて、買い物客に商品を勧めるようなリコメンドサービスを実行できる。
【0024】
エッジ端末1は、決済処理においては、購入商品リストに記載の商品及びその金額をタッチパネル4に表示して、買い物客の操作に応じてそれらの商品の決済処理を行う。なお、エッジ端末1は、さらに、店舗10内の商品在庫を示す在庫リストを備えており、決済された商品数を在庫リストから減ずることで、在庫管理を行う。また、エッジ端末1は、決済処理と同時に、店舗の売り上げ管理を行ってもよい。
【0025】
カメラ2は、商品棚に取り付けられるセンサの一例であって、静止画または動画を撮影し、これらの撮影データをエッジ端末1へと送信する。購入行動の検出の際には、カメラ2により撮影された、商品棚から商品と取り出した買い物客の顔部分、及び、取り出された商品を含む画像が使用される。
【0026】
走査センサ3は、走査光を用いたセンサであって、商品に印刷されたバーコードを読み取ることができる。走査センサ3は、読み取ったバーコード情報(商品ID)をエッジ端末1へと送信する。商品の認識の精度向上を図るために、カメラ2により撮影される画像に加えて、走査センサ3により取得されるバーコード情報が用いられる。
【0027】
カメラ2及び走査センサ3は、買い物客の購入行動を検出するために必要な情報を取得するセンサであって、具体的な構成はこれらに限らない。モーションキャプチャや、商品棚に取り付けられる重量センサ等、種々のセンサであってもよい。
【0028】
タッチパネル4は、表示機能及び入力機能を備えるディスプレイである。タッチパネル4は、エッジ端末1から受信したデータに応じた画像を表示するとともに、買い物客からの操作を受け付けると、操作情報をエッジ端末1に送信する。
【0029】
サーバ7は、顧客管理システム100に関する処理の一部を行うことができる。例えば、サーバ7は、エッジ端末1における顔認識や決済処理の一部を行ってもよい。
【0030】
さらに、サーバ7は、データストレージ機能を備え、エッジ端末1の制御や機械学習に用いられるプログラムを格納する。同時に、サーバ7は、エッジ端末1において取得されるログデータ等を記憶する。
【0031】
後述のようにエッジ端末1はオーケストレーションツールを備える。そのため、エッジ端末1は、システム構築時や更新時において、サーバ7からプログラムのイメージファイルを取得(デプロイ)して、システム構築を行う。また、学習済モデル等の更新頻度の高いプログラムは、サーバ7において管理運用が行われ、必要に応じてエッジ端末1に定期的にデプロイされるので更新が容易になる。
【0032】
管理端末8は、表示機能及び入力機能を備える機器であって、例えば、パーソナルコンピュータである。管理端末8は、WAN6及びLAN5を介してエッジ端末1と通信可能に構成されており、店舗10の外部から店舗10内のエッジ端末1を操作することができる。また、管理端末8は、店舗10において収集された情報をサーバ7に送信し、解析等を行わせてもよい。
【0033】
店舗10内においてエッジ端末1により取得された種々のデータは、一旦、エッジ端末1や店舗10内のストレージに記憶され、バッチ処理により数分~数日の所定の周期でサーバ7にアップロードされる。サーバ7においては、アップロードされたデータを用いて機械学習を行い、機械学習を経た学習済モデルがエッジ端末1へとダウンロードされることで、エッジ端末1のソフトウェアの更新が行われる。
【0034】
【0035】
店舗10には、2つの出入口21が設けられており、買い物客22は、出入口21を介して店舗10を出入りする。店舗10には、商品を陳列する商品棚23が複数設けられている。この図においては、商品棚23のそれぞれにエッジ端末1(MEC)及びタッチパネル4(TP)が設けられている。なお、この図には示されていないが、
図3に示されるように、商品棚23には、カメラ2及び走査センサ3が設けられている。
【0036】
エッジ端末1は、カメラ2の画像等を用いて店舗10内の買い物客22の任意の行動を検出しており、検出された顧客行動は、店舗10内の全てのエッジ端末1の顧客行動レコードに記録される。
【0037】
エッジ端末1に記録される顧客行動レコードには、買い物客22の購入行動が含まれる。具体的には、買い物客22が商品棚23から商品を取り出す際に、エッジ端末1は、カメラ2の画像等を用いて買い物客22の購入行動(買い物客22及び購入予定商品)を検出する。そして、購入行動を行った買い物客22及び購入予定商品は、店舗10内の任意のエッジ端末1の顧客行動レコード内の顧客毎の購入商品リストに記憶される。その結果、買い物客22は、任意のエッジ端末1(例えば、出入口21の近傍に存在するエッジ端末1)で決済処理を行うことができる。
【0038】
なお、顧客行動レコードには、購入商品リスト以外にも、買い物客22の店舗10内における導線を示す導線リストや、買い物客22が購入をしようとした後にキャンセルしたキャンセル商品リスト等種々のリストを含んでもよい。また、在庫リストは、顧客行動レコードに含まれてもよいし、異なるデータベースに記憶されてもよい。顧客行動レコードに購入行動以外の顧客行動が含まれることで、店舗10内の買い物客に対して、例えば、興味のある商品の提案等の種々のサービスを提供できる。
【0039】
図3は、商品棚23の概略構成図である。なお、この図に示された商品棚23の構成は一例であって、任意の構成をとりえる。
【0040】
商品棚23の内部には商品が陳列されている。商品棚23の上部にはエッジ端末1が配置され、商品棚23の右部にはタッチパネル4が設けられている。そして、最上段の商品陳列部の上部に、カメラ2及び走査センサ3が設けられている。
【0041】
買い物客22は、商品棚23から購入予定商品を取り出すと、その商品とともに自身の顔がカメラ2により撮影されるようにカメラ2に顔を向ける。この状態において、商品のバーコードがカメラ2の撮影画像に含まれるのが好ましいが、走査センサ3を用いて商品が特定されてもよい。なお、走査センサ3は購入予定商品の特定に補助的に用いられる構成のため、以下の詳細な説明において記載を省略する。
【0042】
エッジ端末1は、カメラ2の撮影画像を用いて、顔認識により買い物客22を特定するとともに、バーコード等を用いて購入予定商品を特定する。なお、バーコードは商品の特定方法の一例であって、商品の色や形態から商品の種類が特定されてもよい。そして、エッジ端末1は、顧客毎に設けられる顧客行動レコードの購入商品リストに商品を記録する。また、決済処理を行う場合には、エッジ端末1は、購入商品リストに記憶された購入予定商品の一覧をタッチパネル4に表示し、買い物客22の操作に応じて決済処理を行う。
【0043】
以下では、このような顧客管理システム100において中心的な動作を行うエッジ端末1の構成について説明する。
【0044】
【0045】
エッジ端末1は、全体を制御するCPU(Central Processing Unit)及びGPU(Graphics Processing Unit)により構成される制御部41と、ROM(Read Only Memory)、RAM(Random Access Memory)、及び/またはハードディスク等により構成され、プログラムや各種のデータ等を記憶する記憶部42と、LAN5等を介して通信を行う通信部43と、タッチパネル4等の情報表示デバイスに対してデータに応じた表示を行う表示部44と、タッチパネル4等の機器からの入力を受け付ける入力部45と、外部機器とのデータの入出力を行う入出力ポート46とを備える。制御部41、記憶部42、通信部43、表示部44、入力部45、及び、入出力ポート46は、バス接続により互いに通信可能に構成されている。
【0046】
記憶部42にはプログラムが記憶されており、記憶されたプログラムが所定の動作をすることにより、入力されたデータに対して所定の処理を行うシステムを構成するエッジ端末1が構成される。エッジ端末1と、カメラ2、走査センサ3及びタッチパネル4との間のデータの授受は、通信部43及び入出力ポート46の少なくともいずれによりなされてもよい。
【0047】
図5~7は、エッジ端末1のソフトウェア構成図である。本実施形態のソフトウェア構成においては、コンテナ技術によりそれぞれのアプリケーションがコンテナ化されるとともに、オーケストレーションツールによりコンテナの動作がマネージメントされている。
【0048】
図5には、コンテナエンジン及びオーケストレーションツールを備える装置の一般的なソフトウェア構成図が示されている。
図6には、マイクロサービスアーキテクチャが採用されたエッジ端末1のソフトウェア構成図が示されている。
図7は、マイクロサービスアーキテクチャにおいて共有メモリ領域を利用した処理結果の提供制御に関する構成を示すソフトウェア構成図である。
【0049】
図5に示されるように、エッジ端末1には、OSカーネル50(OS:Operating System)がインストールされている。さらに、OSカーネル50には、コンテナ環境の構築及びコンテナ環境においてコンテナ化されたアプリケーション(コンテナ)を実行するコンテナエンジン51、及び、コンテナ環境においてアプリケーションの実行に必要なリソースを管理するオーケストレーションツール52が設けられている。OSカーネル50は、ホストOSとも称される。
【0050】
コンテナエンジン51は、ホストとなるOSカーネル50上で、OSカーネル50の提供する環境隔離機能を利用して、個々のアプリケーション(コンテナ)が実行される仮想環境(コンテナ環境)を生成する。コンテナ環境がアプリケーション毎に設けられることにより、物理的なメモリ等のハードウェアリソースが隔離されるので、アプリケーションの実行環境の依存性を低下させることができる。
【0051】
コンテナ環境においては、コンテナイメージが動作することで、所定の処理が実行される。コンテナイメージは、実際のアプリケーションの実行に必要なプログラム(ランタイム)と、コンテナ環境での動作指示書(例えば、Dockerfile)とを用いて生成される。そして、コンテナイメージが動作することによりコンテナが実行される。実行されるコンテナは、他のコンテナやOSカーネル50上で動作するプロセスとは隔離された環境(コンテナ環境)で実行される。なお、以下においては、コンテナ環境で動作するコンテナイメージを、単に、コンテナと称するものとする。
【0052】
このように動作するコンテナは、
図5では符号56を付して説明されている。後述のように、オーケストレーションツール52によってコンテナ環境のリソース管理がされている状態においては、1以上のコンテナ56(
図5では2つのコンテナ56)が一体となったポッド58と称される単位で動作する。
【0053】
なお、同一のコンテナイメージを用いて、複数のコンテナ56を動作させることが可能である。例えば、ネットワーク上の所定の場所(レポジトリ)に格納された1つのコンテナイメージを用いて、1つまたは複数のエッジ端末1に設けられる任意のコンテナ環境において、同じ処理を実行する異なるコンテナ56を構成できる。
【0054】
オーケストレーションツール52は、コンテナエンジン51によって仮想化されたコンテナ環境を管理(オーケストレーション)する。具体的には、オーケストレーションツール52は、複数のコンテナ56からなるポッド58の実行環境として、クラスタ53と称される論理領域を構築する。クラスタ53には、各ポッド58からアクセス可能な共有メモリ領域54や、アプリケーションの実行環境であるノード55等が設けられる。ノード55のハードウェアリソースの管理は、オーケストレーションツール52の機能により行われる。
【0055】
共有メモリ領域54は、オーケストレーションツール52によってクラスタ53内に確保され、ポッド58からアクセス可能に構成された領域である。共有メモリ領域54は、同じクラスタ53内のポッド58から読み書き可能に構成されている。
【0056】
ノード55においては、ポッド管理ブロック57の機能によって、1以上のコンテナ56(
図5においては2つのコンテナ56)がポッド58と称される単位で実行される。なお、コンテナエンジン51の機能によりコンテナ56の実行環境が隔離されているが、オーケストレーションツール52の機能により、それぞれのコンテナ56が一体となってポッド58として動作する。そして、クラスタ53内においては、仮想ネットワークが構成されて、複数のポッド58、及び、共有メモリ領域54の間で相互に通信可能となる。一例として、ポッド58内のコンテナ56間では、localhost通信によりデータの送受信が行われ、ポッド58間では仮想IP通信網によりデータの送受信が行われる。
【0057】
このように、コンテナエンジン51により設けられるコンテナ56の動作環境は、原則として隔離されているが、オーケストレーションツール52を用いることにより、同じエッジ端末1のクラスタ53内においてポッド58が相互に通信可能となる。さらに、オーケストレーションツール52を用いることにより、クラスタ53内において任意のポッド58から共有メモリ領域54に対して読み書きが可能となる。
【0058】
なお、一部の機能ブロックはコンテナ化されなくてもよい。例えば、図中において59の符号が付された構成のように、アプリケーション、データテーブル、及び、ライブラリ等はコンテナ化されなくてもよい。これらの構成59は、クラスタ53のリソースを用いずに動作するが、オーケストレーションツール52の機能により、クラスタ53内のポッド58と双方向に通信することができる。
【0059】
例えば、フロントエンドのようなコンテナ化されていないアプリケーションは、コンテナ化されずにOSカーネル50上に配置されても、コンテナ化されたポッド58と相互に通信できる。また、コンテナ化されていない構成は、アプリケーションに限られず、データテーブルやライブラリであってもよく、例えば、単純なデータ構造を示すデータテーブルや、ニューラルネットワークライブラリのようなライブラリはコンテナ化されないことがある。
【0060】
なお、本実施形態においては、オーケストレーションツール52の動作として、クラスタ53内に1つのノード55が設けられる例について説明したが、これに限らない。クラスタ53内に複数のノード55が設けられてもよい。
【0061】
図6は、本実施形態におけるマイクロサービスアーキテクチャに関するソフトウェア構成図である。
図5に示された構成と対応する構成は、同じ符号が括弧つきで示されている。
【0062】
マイクロサービスアーキテクチャにおいては、オーケストレーションツール52により提供される機能によって、ノード55内に、サービスブローカ60、第1マイクロサービス61、第2マイクロサービス62、第3マイクロサービス63、及び、端末間通信サービス64が設けられている。サービスブローカ60、第1~第3マイクロサービス61~63、及び、端末間通信サービス64は、オーケストレーションツール52により動作されるポッド58である。
【0063】
さらにこの図には、オーケストレーションツール52の機能により設けられた共有メモリ領域54が示されている。共有メモリ領域54は、サービスブローカ60、第1~第3マイクロサービス61~63、及び、端末間通信サービス64から読み書き可能に構成されている。
【0064】
ここで、あるマイクロサービス(例えば、第1マイクロサービス61)は、自身の処理(第1処理)の結果を次工程のマイクロサービス(例えば、第2マイクロサービス62)に提供する。そして、第2マイクロサービス62は、提供された処理結果を用いて、さらに自身の処理(第2処理)を実行する。このように、現工程のマイクロサービスは、次工程のマイクロサービスに処理結果を提供する必要がある。
【0065】
しかしながら、コンテナ化されたマイクロサービスは、それぞれの実行環境が隔離されており仮想ネットワークのみを用いて処理結果の提供を行ってしまうと、オーケストレーションツール52のリソースを大きく消費してしまう。そこで、マイクロサービスアーキテクチャにおいては、ある工程のマイクロサービスは、共有メモリ領域54におけるデータの読み書きを介して、処理結果を次工程のマイクロサービスに提供する。
【0066】
具体的には、現工程の第1マイクロサービス61は、共有メモリ領域54に、処理結果、及び、次工程の第2マイクロサービス62を示す次工程マイクロサービス情報を書き込む。サービスブローカ60は、共有メモリ領域54への書き込みを検出可能に構成されており、第1マイクロサービス61による共有メモリ領域54への書き込みを検出すると、次工程の第2マイクロサービス62に対して実行指令を送信する。第2マイクロサービス62は、サービスブローカ60からの実行指令に応じて、共有メモリ領域54に書き込まれた処理結果を用いて、第2処理を実行する。
【0067】
なお、端末間通信サービス64は、あるエッジ端末1内のポッド58が、他のエッジ端末1のポッド58に処理結果を提供する場合に利用される。端末間通信サービス64の処理については、後に、
図10、14、15を用いて説明する。
【0068】
以下では、
図7を用いて、マイクロサービスアーキテクチャにおいてあるエッジ端末1内における共有メモリ領域54を介したマイクロサービス間の処理結果の提供動作について説明する。
【0069】
共有メモリ領域54には、第1~第3マイクロサービス61~63のそれぞれと対応し、これらのマイクロサービスに提供されるデータが格納される第1データ領域71、第2データ領域72、第3データ領域73を備える。共有メモリ領域54における第1~第3データ領域71~73の構成はオーケストレーションツール52により定められており、プロジェクトファイル等の所定のファイルに記憶されている。
【0070】
ここで、第1マイクロサービス61の第1処理の後に、その処理結果を用いて第2マイクロサービス62が第2処理を実行する例について説明する。
【0071】
マイクロサービスは、事前の設定により、常時起動するような構成、または、必要に応じて実行状態となるような構成とすることができる。サービスブローカ60は常時起動するように構成される。第1~第3マイクロサービス61~63は、他のマイクロサービスから処理結果が提供される場合に実行状態となり、所定の処理の実行後は待機状態となるように構成されている。待機状態においては、第1~第3マイクロサービス61~63は、コンテナ環境やオーケストレーション環境のリソースの消費が抑制される。そして、第1~第3マイクロサービス61~63への実行指令は、サービスブローカ60によって送信される。以下では、これらの動作における、所定結果の提供場所である第1~第3データ領域71~73について説明する。
【0072】
まず、第1マイクロサービス61は、第1処理の処理結果を生成すると、次工程の第2マイクロサービス62と対応する第2データ領域72に、処理結果、及び、次工程の第2マイクロサービス62を示す情報(次工程マイクロサービス情報)を書き込む。そして、第1マイクロサービス61は、実行状態から待機状態に遷移する。
【0073】
サービスブローカ60は、共有メモリ領域54を常時監視し、第1~第3データ領域71~73へのデータの書き込みを検知可能に構成されている。サービスブローカ60は、第2データ領域72への書き込みを検知すると、第2データ領域72の次工程マイクロサービス情報に示された第2マイクロサービス62に対して、実行指令を送信する。
【0074】
第2マイクロサービス62は、サービスブローカ60からの実行指令を受信すると、第2データ領域72を参照して処理結果を取得し、第2処理を実行する。このようにして、第1マイクロサービス61の処理結果を用いて、次工程の第2マイクロサービス62が第2処理を行うことができる。
【0075】
なお、第1~第3データ領域71~73は、共有メモリ領域54内において、事前の設定により静的に確保されてもよいし、動的に確保されてもよい。動的に確保される場合には、第1マイクロサービス61が処理を開始したタイミングで、共有メモリ領域54にデータ領域が確保される。そして、第1マイクロサービス61が第1処理を行い、処理結果及び次工程マイクロサービス情報をデータ領域に書き込む。その後、プロジェクトファイルが参照されて、そのデータ領域が第2データ領域72と対応付けられる。この対応付けは、第1マイクロサービス61が実行してもよいし、オーケストレーションツール52が実行してもよい。
【0076】
このようにすることで、第1マイクロサービス61によって第2データ領域72に処理結果が書き込むことができ、同時に、共有メモリ領域54内においては第1~第3データ領域71~73が静的に確保されない。すなわち、共有メモリ領域54においては、あるマイクロサービスが待機状態から実行状態に遷移したタイミングで所定のデータ領域が確保され、このデータ領域が次工程のマイクロサービスと対応付けられる。次工程のマイクロサービスは、この対応付けを用いて自身と対応するデータ領域を参照できる。その後、マイクロサービスが処理を終了して所定期間経過した後に、データ領域は解放される。このようにデータ領域が動的に確保されるので、リソースを有効活用できる。
【0077】
また、サービスブローカ60は、ログ取得機能を備えており、共有メモリ領域54内の第1~第3データ領域71~73のデータを取得して、データベースに記憶する。データベースには、エッジ端末1内のマイクロサービスによる処理結果の全てが記録される。データベースに記録されたデータファイルは、バッチ処理により数分~数日の所定の周期でネットワーク側のストレージにアップロードされた後に、機械学習等に用いられる。なお、このようなデータベースは、コンテナ化されていてもよい。
【0078】
なお、この図の例においては、第1~第3マイクロサービス61~63の3つが設けられたが、これに限らない。1つのエッジ端末1にマイクロサービスは4以上設けられてもよい。また、次工程のマイクロサービスは1つでなくて複数であってもよいし、複数のマイクロサービスの処理結果を用いて次工程の1つのマイクロサービスが処理を行ってもよい。例えば、本実施形態の顧客管理システム100のエッジ端末1においては、2つのマイクロサービスにより実行される顔認識及び物体検知等の処理結果を用いて、次工程のマイクロサービスが購買行動を検出する。また、マイクロサービスの処理順は一定ではなく処理結果に応じて動的に決定される。
【0079】
図8は、共有メモリ領域54内に設けられるデータ領域(第1~第3データ領域71~73)のフォーマットの一例を示す図である。この図によれば、第1~第3データ領域71~73は、それぞれにおいて、3つのデータを格納可能なフォーマットで構成されている。
【0080】
第1~第3データ領域71~73のそれぞれにおいて、「処理結果」には、現工程のマイクロサービスの処理結果が記録される。処理結果は、メタデータを付して記録されるため、複数の任意の項目を含めることができる。「次工程マイクロサービス」には、次工程のマイクロサービスの名称が示される。また、「現工程マイクロサービス」には、書き込み元である現行程のマイクロサービスの名称が示される。
【0081】
図9は、第1マイクロサービス61から第2マイクロサービス62への処理結果の提供処理を示すフロー図である。以下、このフロー図に示されるそれぞれの処理について説明する。
【0082】
この図においては、サービスブローカ60、第1マイクロサービス61、及び、第2マイクロサービス62のそれぞれの処理が時系列に示されている。この例においては、第1マイクロサービス61、第2マイクロサービス62、第3マイクロサービス63の順に処理結果が提供される。なお、第3マイクロサービス63の処理はこの図においては省略する。これらの処理は互いに連携しており、横方向の矢印によりその連携が示されている。
【0083】
まず、サービスブローカ60の処理について説明する。
【0084】
ステップS901において、サービスブローカ60は、共有メモリ領域54にアクセスし、第1~第3データ領域71~73へのデータの書き込みを検出する。
【0085】
共有メモリ領域54内のデータ領域の構造はリスト化されて、オーケストレーションツール52のプロジェクトファイルに示されている。そのため、サービスブローカ60は、プロジェクトファイルに基づいて、第1~第3データ領域71~73に個々にアクセスできる。他の形態として、サービスブローカ60は、共有メモリ領域54のデータ構造を予め取得しており、アドレスを直接指定して、第1~第3データ領域71~73にアクセスしてもよい。
【0086】
ステップS902において、サービスブローカ60は、ステップS901においてアクセスした複数の第1~第3データ領域71~73のうち、いずれかのデータ領域への書き込みがあるか否かを判定する。データ領域のいずれかに新規データが書き込まれている場合には(S902:YES)、サービスブローカ60は、次にステップS903の処理を行う。データ領域のいずれにも新規データが書き込まれていない場合には(S902:NO)、サービスブローカ60は、次にステップS901の処理を再度行う。以下では、第1データ領域71へのデータの書き込みが検出されたものとする。
【0087】
ステップS903において、サービスブローカ60は、第1データ領域71に記録された新規データを参照する。サービスブローカ60は、新規データに含まれる「次工程マイクロサービス情報」に基づいて、次工程が第1マイクロサービス61であると特定する。なお、サービスブローカ60は、第1データ領域71へのデータの書き込みを検出することで、データの書き込み領域である第1データ領域71と対応付けられた第1マイクロサービス61を次工程マイクロサービスと特定してもよい。
【0088】
ステップS904において、サービスブローカ60は、ステップS903において取得した「次工程マイクロサービス情報」に示される第1マイクロサービス61に対して、通信経路の確立を要求する。
【0089】
ステップS905において、サービスブローカ60は、ステップS904にて確立した通信経路を介して、第1マイクロサービス61に対して実行指令を送信する。なお、ここで確立される通信経路においては、gRPCのような、リモートプロシジャーコールフレームワーク(Remote Procedure Call Framework)を活用した通信が行われている。
【0090】
ステップS906において、サービスブローカ60は、第1データ領域71のデータを、エッジ端末1内のデータベースに記録する。このようにしてデータベースには、エッジ端末1内のマイクロサービスにより生成される処理結果の全てが記録されることとなり、エッジ端末1内のログ取得が可能となる。
【0091】
このようなステップS901~S906の処理を終えると、サービスブローカ60は再びステップS901の処理を行う。
【0092】
次に、第1マイクロサービス61の処理について説明する。なお、第1マイクロサービス61は、処理の実行中以外は待機状態であり、サービスブローカ60からの実行指令に応じて実行状態となり、所定の第1処理の終了後に待機状態に遷移する。
【0093】
ステップS911において、第1マイクロサービス61は、サービスブローカ60から実行指令を受信しているか否かを判定する。実行指令を受信している場合には(S911:YES)、第1マイクロサービス61は、次にステップS912の処理を行う。実行指令を受信していない場合には(S911:NO)、第1マイクロサービス61は、再度、ステップS911の処理に戻る。なお、第1マイクロサービス61は、待機状態であっても実行指令が受信可能に構成されている。
【0094】
ステップS912において、第1マイクロサービス61は、待機状態から実行状態へと遷移して、所定の処理(第1処理)を開始する。
【0095】
ステップS913において、第1マイクロサービス61は、共有メモリ領域54の第1データ領域71を参照して、前工程のマイクロサービスにより書き込まれた処理結果を取得する。なお、第1マイクロサービス61は、プロジェクトファイルを用いて取得した共有メモリ領域54のデータ構造を用いて、第1データ領域71にアクセスして処理結果を取得する。
【0096】
ステップS914において、第1マイクロサービス61は、前工程のマイクロサービスの処理結果を用いて第1処理を行い、さらに第1処理の処理結果を生成する。同時に、第1マイクロサービス61は、処理結果に応じて次工程のマイクロサービスを決定する。以降の説明においては、次工程のマイクロサービスは第2マイクロサービス62であるものとする。
【0097】
ステップS915において、第1マイクロサービス61は、ステップS914において生成された処理結果、及び、第2マイクロサービス62が示された次工程マイクロサービス情報を、
図8に示されたフォーマットで第2データ領域72に書き込む。なお、第1マイクロサービス61による書き込み処理は、ステップS913のデータの読み出し処理と同様に、予め取得した共有メモリ領域54のデータ構造を用いて行われる。
【0098】
ステップS916において、第1マイクロサービス61は、第1処理を完了すると、実行状態から待機状態に遷移する。
【0099】
その後、サービスブローカ60は、周期的に共有メモリ領域54にアクセスして第1~第3データ領域71~73へのデータの書き込みを確認し(S901)、共有メモリ領域54の第2データ領域72への新規データの書き込みを検出する(S902:Yes)。そして、サービスブローカ60は、次工程マイクロサービスとして第2マイクロサービス62を特定し(S903)、第2マイクロサービス62へ実行指令を送信する(S905)。
【0100】
第2マイクロサービス62は、サービスブローカ60からの実行指令を受信すると(S921:Yes)、待機状態から起動状態に遷移する(S922)。そして、第2マイクロサービス62は、第2データ領域72に書き込まれた処理結果を取得し(S923)、所定の第2処理を実行し(S924)、処理結果を生成する。その後、第2マイクロサービス62は、処理結果、及び、次工程マイクロサービス情報(第3マイクロサービス63)を含むデータを第3データ領域72に書き込む(S925)。一連の処理を終えると、第2マイクロサービス62は、実行状態から待機状態に遷移する(S926)。
【0101】
このように、サービスブローカ60が共有メモリ領域54への新規データの書き込みを監視して、書き込まれた新規データに示された次工程のマイクロサービスに実行指令を送信する。実行指令を受信した次工程のマイクロサービスは、共有メモリ領域54を参照して処理結果を取得して、新たな処理を行う。このように、第1~第3マイクロサービス61~63の間で処理結果の提供(授受)を行うことができる。さらに、第1~第3マイクロサービス61~63は、必要なタイミングで実行状態となり、それ以外においては待機状態となるので、システムリソースの使用量の低減を図ることができる。
【0102】
また、共有メモリ領域54を用いた処理結果の提供は、同一のエッジ端末1内のマイクロサービス間に限られず、複数のエッジ端末1のマイクロサービス間においても行うことができる。複数のエッジ端末1のマイクロサービス間における処理結果の提供制御について、
図10を用いて説明する。
【0103】
図10は、2つのエッジ端末1の間における処理結果の提供に関わる構成についての説明図である。この図においては、第1エッジ端末1A、及び、第2エッジ端末1Bが示されている。第1エッジ端末1A、及び、第2エッジ端末1Bには、
図7に示された構成と同等の構成が含まれており、それぞれにAまたはBのサフィックスが付されている。
【0104】
第1エッジ端末1Aには、サービスブローカ60A、及び、端末間通信サービス64Aに加えて、第1~第3マイクロサービス61~63が設けられている。同時に、共有メモリ領域54Aには、第1~第3マイクロサービス61~63と対応する第1~第3データ領域71~73が設けられている。
【0105】
第2エッジ端末1Bには、サービスブローカ60B、及び、端末間通信サービス64Bに加えて、第4~第6マイクロサービス101~103が設けられている。同時に、共有メモリ領域54Bには、第4~第6マイクロサービス101~103と対応する第4~第6データ領域104~106が設けられている。
【0106】
第1エッジ端末1A及び第2エッジ端末1Bには、それぞれ、ネットワークアダプタ107A、107Bが設けられている。ネットワークアダプタ107A、107Bは、オーケストレーションツール52により提供される仮想ネットワークとは異なるネットワーク(以下、リアルネットワークと称する)に準じた動作を行う。ネットワークアダプタ107A、107Bには、個々のMACアドレス、及び、個々のIPアドレスが設定されている。なお、ネットワークアダプタ107A、107Bは、OSカーネル50により制御され、コンテナエンジン51やオーケストレーションツール52はその通信機能に直接的に関与しない。
【0107】
端末間通信サービス64A、64Bは、常時起動するように設定されており、待機状態とはならない。そして、端末間通信サービス64A、64Bは、クラスタ53A、53B内の仮想ネットワークに加えて、ネットワークアダプタ107A、107Bにより実現されるリアルネットワークの情報を取得する。
【0108】
さらに、端末間通信サービス64Aは、オーケストレーションツール52Aから、プロジェクトファイルを取得して、第1エッジ端末1A内に設けられるマイクロサービスの構成(第1~第3マイクロサービス61~63)、及び、それらのマイクロサービスと対応する共有メモリ領域54Aのデータ領域の構造を取得する。同様に、端末間通信サービス64Bは、オーケストレーションツール52Bからプロジェクトファイルを取得して、エッジ端末1B内に設けられるマイクロサービスの構成(第4~第6マイクロサービス101~103)、及び、それらのマイクロサービスと対応する共有メモリ領域54Aのデータ領域の構造を取得する。
【0109】
さらに、端末間通信サービス64A、64Bは、所定の通信プロトコルを用いて予め相互に通信を行い、それぞれが存在するエッジ端末1A、1Bに設けられるマイクロサービスの構成、及び、それらのマイクロサービスと対応する共有メモリ領域54A、54Bのデータ領域の構造を取得する。
【0110】
そのため、第1エッジ端末1Aの端末間通信サービス64A、及び、第2エッジ端末1Bの端末間通信サービス64Bは、ともに、第1エッジ端末1A及び第2エッジ端末1Bのリアルネットワークに関する情報に加えて、第1エッジ端末1A及び第2エッジ端末1Bにおけるマイクロサービスの構成、及び、それらと対応する共有メモリ領域54A、54Bのデータ領域の構造を取得する。その結果、第1エッジ端末1A内の任意のマイクロサービスは、端末間通信サービス64A、64Bの機能によって、第2エッジ端末1Bの共有メモリ領域54Bに対して書き込むことができる。同様に、第2エッジ端末1B内の任意のマイクロサービスは、第1エッジ端末1Aの共有メモリ領域54Aに対して書き込むことができる。
【0111】
例えば、現工程が第1エッジ端末1Aの第1マイクロサービス61であって、次工程が第2エッジ端末1Bの第4マイクロサービス101である例について説明する。端末間通信サービス64A、64Bの両者は、第1エッジ端末1A及び第2エッジ端末1Bのリアルネットワークの情報に加えて、共有メモリ領域54A内の第1~第3データ領域71~73、及び、共有メモリ領域54B内の第4~第6データ領域104~106の構成を記憶している。
【0112】
第1エッジ端末1Aは、第1マイクロサービス61が所定の処理を実行すると、処理結果等(処理結果、及び、その処理結果を次に実行する次工程マイクロサービスを示す次工程マイクロサービス情報)を、第2エッジ端末1Bの共有メモリ領域54Bの第4データ領域104に書き込もうとする。この場合において、第1エッジ端末1Aの第1マイクロサービス61は、処理結果等の書き込み先として異なるエッジ端末1の第4データ領域104を指定することになるため、まず、第1エッジ端末1Aの端末間通信サービス64に書き込みを指示する。
【0113】
端末間通信サービス64Aは、第1マイクロサービス61から処理結果等を取得すると、次工程マイクロサービス情報(第4マイクロサービス101)を特定し、さらに、次工程マイクロサービス情報と対応する第4データ領域104が含まれる共有メモリ領域54Bを備えるエッジ端末1Bを特定する。そして、端末間通信サービス64Aは、エッジ端末1Bとリアルネットワークを介して直接通信を行うように、所定のプロトコルを用いた通信経路の確立を試みる。通信経路の確立は、ネットワークアダプタ107Aを介して、エッジ端末1Bのネットワークアダプタ107Bへ端末間通信開始要求を送信することにより行われる。
【0114】
第2エッジ端末1Bの端末間通信サービス64Bは、ネットワークアダプタ107Bを監視している。端末間通信サービス64Bは、ネットワークアダプタ107Bへの端末間通信開始要求の受信を確認すると、第1エッジ端末1Aの端末間通信サービス64Aとの間で所定のプロトコルに準じた通信経路を形成する。このようにして、端末間通信サービス64A、64Bは、ネットワークアダプタ107A、107Bを介してデータの送受信を行えるようになる。
【0115】
端末間通信サービス64Aは、確立した通信経路を介して、端末間通信サービス64Bに対して共有メモリ領域54Bの第4データ領域104への処理結果等の書き込みを指示する。その後、第2エッジ端末1Bにおいて、端末間通信サービス64Bは、共有メモリ領域54Bの第4データ領域104に所定のデータを書き込む。その結果、端末間通信サービス64A、64Bの機能により、第2エッジ端末1Bの共有メモリ領域54Bの第4データ領域104に処理結果等が記憶される。
【0116】
その後、第2エッジ端末1Bのサービスブローカ60Bは、第4データ領域104へのデータの書き込みを検出すると、次工程マイクロサービス情報を参照して第4マイクロサービス101が次工程であると判断し、第4マイクロサービス101に対して実行指令を送信する。その結果、第1エッジ端末1Aの第1マイクロサービス61の処理結果は、第2エッジ端末1Bの第4マイクロサービス101の処理に用いられる。このようにして、異なる第1エッジ端末1A及び第2エッジ端末1Bの間においても、マイクロサービス間の処理結果の提供を行うことができる。
【0117】
以下では、顧客管理システム100のエッジ端末1内のソフトウェア構成、及び、その動作について説明する。
【0118】
図11は、顧客管理システム100に用いられるエッジ端末1内のソフトウェア構成である。エッジ端末1内のソフトウェア構成において設けられるマイクロサービスとして、サービスブローカ60及び端末間通信サービス64に加えて、顧客行動記録マイクロサービス111、商品特定マイクロサービス112、顧客行動検出マイクロサービス113、画像処理マイクロサービス114、顔認識マイクロサービス115、顧客特定マイクロサービス116、及び、決済マイクロサービス117を備える。
【0119】
顧客行動記録マイクロサービス111は、買い物客22の識別ID毎に顧客行動を示した顧客行動レコードを有しており、検出された顧客行動を顧客行動レコードに記憶する。顧客行動レコードは、購入予定商品をリスト化した購入商品リスト等の種々のリストを含む。購入商品リストには、商品価格に基づいて、記憶された購入商品の金額も記録される。
【0120】
商品特定マイクロサービス112は、商品の識別子と名称及び価格とを対応付けた商品テーブルを記憶している。本実施形態においては、画像認識によりバーコード情報(数字情報)が取得されるため、このバーコード情報と、商品の名称及び価格とを対応付けた商品テーブルを備えている。顧客行動記録マイクロサービス111は、商品特定マイクロサービス112の備える商品テーブルに基づいて、購入商品の名称及び金額を顧客行動レコードに記録される。
【0121】
ここで、オーケストレーションツール52は、ポッド58を安定的に動作させる機能を備えており、動作が不安定なポッド58を自律的に再起動させることができる。顧客行動記録マイクロサービス111は、顧客行動という比較的重要な情報を記録した顧客情報レコードを備えているが、オーケストレーションツール52の機能により安定的に動作されるので、顧客行動レコードを適切に管理できる。
【0122】
顧客行動検出マイクロサービス113は、カメラ2の撮影画像を用いて買い物客22及び購入予定商品を特定することにより、買い物客22の購入行動を検出する。
【0123】
画像処理マイクロサービス114は、カメラ2の撮影画像から、顔認識用画像、及び、商品識別用画像を生成する。画像処理の具体例について、後に
図13A~13Cを用いて説明する。
【0124】
顔認識マイクロサービス115は、画像処理マイクロサービス114により生成された顔認識用画像を用いて顔認識を行う。顔認識マイクロサービス115は、人の顔の特徴点(目、鼻、口の位置等)に基づいて識別IDを特定する。顔認識マイクロサービス115は、過去に認識した特徴点と識別IDとを対応付けて記憶しており、記憶された特徴点を検出すると過去において対応付けられた識別IDを処理結果として出力し、過去に認識していない特徴点を検出すると新規の識別IDを処理結果として出力する。
【0125】
顧客特定マイクロサービス116は、識別IDと対応付けられた顧客IDを記憶している。顧客特定マイクロサービス116は、顔認識マイクロサービス115から出力された買い物客22に応じた識別IDを、対応する顧客IDに変換する。なお、顧客特定マイクロサービス116は、顧客ID毎に、決済手段や、店舗10での購入履歴等を記憶していてもよく、これらの情報は決済や商品リコメンド等のサービスに用いられる。
【0126】
なお、この例においては、顧客行動記録マイクロサービス111、商品特定マイクロサービス112、顧客行動検出マイクロサービス113、画像処理マイクロサービス114、顔認識マイクロサービス115、顧客特定マイクロサービス116、及び、決済マイクロサービス117は、コンテナ化されたマイクロサービスであるが、このような構成に限らない。任意の一部または全部の機能について、コンテナ化してエッジ端末1内に構成してもよいし、サーバ7側で構成してもよい。また、一部の機能について、コンテナ化されずにエッジ端末1内において構成してもよい。
【0127】
図12は、エッジ端末1内の具体的な処理を示す図である。この図には、買い物客22が商品棚23から商品を取り出す購入行動が検出され、購入行動を含む顧客行動が顧客行動レコードに記憶される場合の例が示されている。また、この図においては、エッジ端末1、カメラ2、タッチパネル4が示され、さらに、エッジ端末1内の種々のマイクロサービス(MS)等の詳細なソフトウェア構成が示されている。なお、マイクロサービス間の処理結果の提供は共有メモリ領域54を介して行われるが、この図においては、共有メモリ領域54の記載を省略する。
【0128】
ステップS1201において、カメラ2は画像データを取得すると、画像データをエッジ端末1内の画像処理マイクロサービス114に送信する。
【0129】
ステップS1202において、画像処理マイクロサービス114は、所定の画像処理を行い、処理結果として、行動(商品)検出用画像、及び、顔認識用画像を生成する。そして、行動検出用画像は、顧客行動検出マイクロサービス113に提供され、顔認識用画像は、顔認識マイクロサービス115に提供される。
【0130】
ここで、
図13A~13Cを用いて、画像処理マイクロサービス114による処理を説明する。
図13Aに示されるように、カメラ2の取得画像には、買い物客22の顔を含む部分131、及び、商品部分132が、背景133とともに示されている。画像処理マイクロサービス114は、同じカメラ2によって過去に取得された画像データと比較して背景133の全景を特定し、買い物客22の顔を含む部分131、及び、商品部分132を抽出する。そして、部分131については、さらに顔部分を抽出して、
図13Bに示される顔認識用画像を生成する。部分132については、店舗10内の商品を形態認識し、さらに商品のバーコード部分を抽出して、
図13Cに示される行動(商品)検出用画像を生成する。このような画像処理を予めしておくことで、次工程に提供する処理結果である画像データを小さくすることができる。
【0131】
再び
図12を参照して、ステップS1202の後の処理を説明する。
【0132】
ステップS1203において、顧客行動検出マイクロサービス113は、受け取った行動検出用画像を用いて、商品IDを特定する。例えば、商品IDはバーコードに示される数字列である。
【0133】
そして、ステップS1204において、商品特定マイクロサービス112は、顧客行動検出マイクロサービス113から商品IDを受信する。商品特定マイクロサービス112は、商品IDと対応する商品の名称及び価格を記憶した商品テーブルを有している。商品特定マイクロサービス112は、商品テーブルを参照して定められた商品の名称及び価格を顧客行動検出マイクロサービス113に提供する。
【0134】
ステップS1205において、顧客行動検出マイクロサービス113は、商品特定マイクロサービス112から受信した商品名及び価格を用いて、購入予定商品として確定する。
【0135】
次に、顔認識の処理について説明する。ステップS1206において、顔認識マイクロサービス115は、画像処理マイクロサービス114から顔認識用画像の提供を受けると、顔認識用画像に対して顔認識を行って顔の特徴点に応じた識別IDを求める。そして、顔認識マイクロサービス115は、顧客IDを顧客特定マイクロサービス116に送信する。
【0136】
ステップS1207において、顧客特定マイクロサービス116は、顔認識マイクロサービス115から識別IDを受信すると、識別IDと対応する顧客IDを特定し、その顧客IDを、顔認識マイクロサービス115を介して顧客行動検出マイクロサービス113に提供する。
【0137】
ステップS1208において、顧客行動検出マイクロサービス113は、顧客IDを用いて、購入者の確定を行う。
【0138】
ステップS1209において、顧客行動検出マイクロサービス113は、行動検出用画像を用いてS1203~S1205の処理により特定された購入予定商品と、顔認識用画像を用いてS1206~S1208の処理により特定された買い物客22の顧客IDとを対応つけて、顧客IDと購入予定商品との組み合わせである購入行動情報として検出する。そして、顧客行動検出マイクロサービス113は、購入行動情報(顧客ID、購入予定商品)を含む顧客行動情報を、処理結果として顧客行動記録マイクロサービス111に送信する。
【0139】
なお、顧客行動情報は、同じエッジ端末1の顧客行動記録マイクロサービス111だけでなく、他のエッジ端末1の顧客行動記録マイクロサービス111にも提供される。他のエッジ端末1への顧客行動情報の提供については、後に
図14、
図15を用いて説明する。
【0140】
ステップS1210において、顧客行動記録マイクロサービス111は、受信した顧客行動情報に含まれる購入行動情報を用いて、顧客行動レコード内の購入商品リストを更新する。購入商品リストには顧客ID毎の購入予定商品の一覧が記憶されている。顧客行動記録マイクロサービス111は、購入商品リストにおいて、顧客IDと対応付けられた購入予定商品一覧に、購入予定商品を新たに追加する。そして、顧客行動記録マイクロサービス111は、購入商品リスト内の顧客IDと対応付けられた購入予定商品一覧を、タッチパネル4に送信する。
【0141】
ステップS1211において、タッチパネル4には、顧客IDと対応付けられた購入商品リストに示される購入予定商品一覧が表示される。このようにすることで、カメラ2の撮影画像に含まれる買い物客22について、新たに商品棚23から取り出された商品を含む購入予定商品の全てが表示される。なお、買い物客22は、
図16を用いて説明するように、タッチパネル4を操作することで、決済処理を行うことができる。
【0142】
次に、ステップS1209の処理において、顧客行動検出マイクロサービス113が、処理結果である顧客行動情報を、自身が存在するエッジ端末1の顧客行動記録マイクロサービス111だけでなく、他のエッジ端末1の顧客行動記録マイクロサービス111に提供する動作について説明する。なお、このような複数のエッジ端末1の間における処理結果の提供は、
図10に示されるように、端末間通信サービス64A、64Bによって、他のエッジ端末1Bの共有メモリ領域54Bへ処理結果が書き込まれることにより行われる。
【0143】
図14は、2つのエッジ端末1の間における顧客行動情報の記録制御を示す図である。この図においては、第1エッジ端末1Aにおいて検出された顧客行動情報(購入行動情報)が、第1エッジ端末1Aの顧客行動記録マイクロサービス111Aが備える顧客行動レコード、及び、第2エッジ端末1Bの顧客行動記録マイクロサービス111Bが備える顧客行動レコードに記録される処理が示されている。なお、
図12の例と比較すると、第1エッジ端末1A、及び、第2エッジ端末1Bの一部のマイクロサービスが削除されており、サービスブローカ60、及び、端末間通信サービス64が追加されている。
【0144】
なお、この図におけるステップS1401は、
図12のステップS1209の処理と対応する。同様に、ステップS1405はステップS1210と対応し、ステップS1406はステップS1211と対応する。なお、以下では、
図12において省略されたサービスブローカ60A、及び、共有メモリ領域54Aの動作についても説明する。
【0145】
まず、第1エッジ端末1A内の処理について説明する。なお、第1エッジ端末1A内のソフトウェアブロックについては「A」のサフィックスを付し、第2エッジ端末1B内のソフトウェアブロックについては「B」のサフィックスを付すものとする。
【0146】
ステップS1401において、顧客行動検出マイクロサービス113Aは、買い物客22の行動を検出すると、処理結果である顧客行動情報(購入行動情報)を生成する。そして、顧客行動検出マイクロサービス113Aは、処理結果である顧客行動情報の提供先として、第1エッジ端末1Aの顧客行動記録マイクロサービス111A、及び、第2エッジ端末1Bの顧客行動記録マイクロサービス111Bを指定する。
【0147】
まず、以下では、第1エッジ端末1Aの顧客行動検出マイクロサービス113Aが、第1エッジ端末1Aの顧客行動記録マイクロサービス111Aへ、顧客行動情報を処理結果として提供する処理について説明する。
【0148】
処理結果の提供先が同じエッジ端末1内のマイクロサービスであるため、顧客行動検出マイクロサービス113Aは、クラスタ53A内の仮想ネットワークを介して、共有メモリ領域54Aの顧客行動記録マイクロサービス111Aと対応するメモリ領域に、処理結果である顧客行動情報、及び、次工程マイクロサービス情報(顧客行動記録マイクロサービス111A)を書き込む。そして、顧客行動検出マイクロサービス113Aは、処理を終了して待機状態へと遷移する。
【0149】
ステップS1402において、共有メモリ領域54A内の所定のメモリ領域には、処理結果を含む情報が、
図8のフォーマットに従って書き込まれる、この際に、処理結果である顧客行動情報とともに、「次工程マイクロサービス情報」として顧客行動記録マイクロサービス111Aが記録される。
【0150】
ステップS1403において、サービスブローカ60Aは、共有メモリ領域54Aへのデータの書き込みを監視しており、顧客行動記録マイクロサービス111Aと対応するメモリ領域への書き込みを検出する。そして、サービスブローカ60Aは、「次工程マイクロサービス情報」に示された顧客行動記録マイクロサービス111Aに対して実行指令を送信する。
【0151】
ステップS1404において、顧客行動記録マイクロサービス111Aは、待機状態から実行状態に遷移して、処理を開始すると、共有メモリ領域54A内の自身と対応付けられたメモリ領域を参照して、前工程の処理結果である顧客行動情報を取得する。
【0152】
ステップS1405において、顧客行動記録マイクロサービス111Aは、共有メモリ領域54Aから顧客行動情報を取得すると、取得した顧客行動情報を用いて顧客行動レコードを更新する。
【0153】
ここで、買い物客22が購入商品を取り出している場合には、顧客行動情報には顧客購入情報が含まれる。そのような場合には、顧客行動記録マイクロサービス111Aは、顧客購入情報に含まれる顧客IDと対応する購入商品リストを、タッチパネル4に送信すると、処理を終了して待機状態へと遷移する。
【0154】
ステップS1406において、タッチパネル4には、顧客IDと対応付けられた購入商品リストに示される商品の一覧が表示される。
【0155】
次に、第1エッジ端末1Aの顧客行動検出マイクロサービス113Aが、第2エッジ端末1Bの顧客行動記録マイクロサービス111Bへ、処理結果である顧客行動情報を提供する処理について説明する。
【0156】
ステップS1411において、顧客行動検出マイクロサービス113Aは、第1エッジ端末1Aの端末間通信サービス64A、及び、第2エッジ端末1Bの端末間通信サービス64Bを介して、第2エッジ端末1Bの共有メモリ領域54Bの所定のデータ領域に処理結果を提供する。以下では、当該処理の詳細について、
図15を用いて説明する。
【0157】
図15は、
図14のステップS1411の処理の詳細を示す図である。この図においては、
図14に示される第1エッジ端末1A、及び、第2エッジ端末1B内の構成の一部が示されている。
【0158】
ステップS1501において、第1エッジ端末1Aの顧客行動検出マイクロサービス113Aは、同じ第1エッジ端末1A内の端末間通信サービス64Aに対して、顧客行動情報、及び、次工程マイクロサービス情報を第2エッジ端末1Bの共有メモリ領域54Bへ記録するように指示する。
【0159】
ステップS1502において、端末間通信サービス64Aは、第2エッジ端末1Bとの間においてリアルネットワークを介した通信経路の確立を試みる。この場合に、端末間通信サービス64Aは、ネットワークアダプタ107Aを介して、ネットワークアダプタ107Bに対して端末間通信開始要求を送信する。
【0160】
ステップS1503において、第2エッジ端末1Bの端末間通信サービス64Bは、ネットワークアダプタ107Bを監視しており、第1エッジ端末1Aの端末間通信サービス64Aからの端末間通信開始要求を検出する。
【0161】
ステップS1504において、第2エッジ端末1Bの端末間通信サービス64Bは、端末間通信開始要求に応じて、第1エッジ端末1Aの端末間通信サービス64Aに対して、所定のプロトコルに準じた通信プロトコルを用いた通信経路の確立要求(通信経路確立要求)を送信する。
【0162】
ステップS1505において、第1エッジ端末1Aの端末間通信サービス64Aは、第2エッジ端末1Bの端末間通信サービス64Bとの間において通信プロトコルを確立すると、その通信プロトコルを介して、処理結果(顧客行動情報)、及び、次工程マイクロサービス情報を送信する。
【0163】
ステップS1506において、端末間通信サービス64Bは、端末間通信サービス64Aから受信した処理結果(顧客行動情報)、及び、次工程マイクロサービス情報を、共有メモリ領域54B内の顧客行動記録マイクロサービス111Bと対応するデータ領域に記憶する。
【0164】
このようにして、第1エッジ端末1Aの顧客行動検出マイクロサービス113Aは、端末間通信サービス64A、64Bを介して、第2エッジ端末1Bの共有メモリ領域54Bの所定のデータ領域に処理結果を提供することができる。
【0165】
再び、
図14に戻れば、以下、第2エッジ端末1BにおけるステップS1412~S1415の処理は、第1エッジ端末1AにおけるステップS1402~S1405の処理と対応する。なお、買い物客22が商品棚23から商品を取り出しており、顧客行動情報に購入商品情報が含まれている場合には、ステップS1415において、顧客行動記録マイクロサービス111Bは、顧客行動レコードの更新を行う。しかしながら、第2エッジ端末1Bと接続されるカメラ2に買い物客22が検出されていないため、第2エッジ端末1Bの近傍に買い物客22が存在しないと判断し、自身と接続されたタッチパネル4への購入商品リストの表示は行わない。
【0166】
このように、第1エッジ端末1Aの顧客行動検出マイクロサービス113Aにより購入行動が検出された場合には、顧客行動情報は、第1エッジ端末1A及び第2エッジ端末1Bの顧客行動記録マイクロサービス111A、111Bに提供されて、それぞれの購入商品リストが更新される。その結果、購入商品リストを管理するサーバを設けることなく、任意のエッジ端末1内において購入商品リストが最新状態に保たれることになる。
【0167】
さらに、買い物客22は、任意のエッジ端末1により決済処理を行うことができる。次に、決済処理について
図16を用いて説明する。
【0168】
図16は、エッジ端末1により行われる決済処理を示すフローチャートである。
【0169】
まず、ステップS1601において、買い物客22が出入口21の近くに存在するタッチパネル4を操作する。買い物客22の操作に応じて、タッチパネル4は決済開始要求を決済マイクロサービス117に送信する。
【0170】
ステップS1602において、決済マイクロサービス117は、画像処理マイクロサービス114に対して、買い物客22と対応付けられた識別IDを問い合わせる。
【0171】
ステップS1603~S1606においては、
図12のステップS1201、S1202、S1206、S1207と同じ処理が行われている。原則として、カメラ2は画像データを取得すると、取得画像をエッジ端末1の画像処理マイクロサービス114に送信している。画像処理マイクロサービス114は、提供された画像を用いて顔認識処理が行われて、対応する顧客IDが取得される。そして、画像処理マイクロサービス114は、顧客ID、画像処理マイクロサービス114を介して、決済マイクロサービス117へ提供する。
【0172】
ステップS1607において、決済マイクロサービス117は、画像処理マイクロサービス114から取得した識別IDを用いて、決済を行おうとしている買い物客22を特定する。そして、決済マイクロサービス117は、顧客行動記録マイクロサービス111に対して顧客IDを送信し、顧客IDと対応する購入商品リストをタッチパネル4に表示するように指示する。
【0173】
ステップS1608において、顧客行動記録マイクロサービス111は、顧客行動レコードを参照し、取得した顧客IDと対応する購入商品リストに示される購入予定商品をタッチパネル4に表示させる。
【0174】
ステップS1609において、タッチパネル4には、購入商品リストが表示される。そして、買い物客22の決済操作を受け付けると、決済処理要求を決済マイクロサービス117に送信する。
【0175】
ステップS1610において、決済マイクロサービス117は、決済処理要求に応じて、購入商品リストの顧客IDと対応付けられた購入予定商品の代金を決済する。なお、決済処理は、WAN6を介して接続される決済サーバにより行われてもよいし、別途、エッジ端末1と接続された精算装置(不図示)により行われてもよい。
【0176】
さらに、決済マイクロサービス117は、決済処理を行った購入予定商品リストに記載された商品数を在庫数から減じる処理を行う。商品の在庫数の管理が、別のマイクロサービスで行われている場合には、そのマイクロサービスに減じる在庫数を送信することで、在庫数の管理を行うことができる。さらに、決済マイクロサービス117は、店舗10内の売り上げを管理してもよい。
【0177】
なお、本実施形態においては、買い物客22が商品棚23から商品を取り出す際に、顧客行動レコードに含まれる購入商品リストが構成される例について説明したが、これに限らない。本実施形態は、買い物客22が、取り出した商品を商品棚23へ戻す処理についても適用することができる。この場合には、買い物客22は、タッチパネル4の操作を介してエッジ端末1に対して商品の返品処理を行う。詳細には、カメラ2の撮影画像を用いた顔認識及び商品認識を介して、返品処理を行う顧客、及び、返品商品を特定することができる。
【0178】
また、本実施形態においては、カメラ2により撮影される画像において、1つの商品を検出したがこれに限らない。商品特定マイクロサービス112は、2以上の複数の異なる種類の商品を検出できる。その場合には、購入商品情報には、これらの商品の種類毎の個数が示される。
【0179】
第1実施形態によれば以下の効果を得ることができる。
【0180】
第1実施形態の顧客管理システム100は、カメラ2と、エッジ端末1とを備える。エッジ端末1は、コンテナエンジン51によりアプリケーションはコンテナ56(または、ポッド58)として動作するとともに、その動作環境はオーケストレーションツール52によりリソース管理されている。そして、エッジ端末1は、カメラ2の撮影画像に示される買い物客22の状態から買い物客22の顧客行動を検出し、顧客行動情報を買い物客22と対応付けられた顧客行動レコードに記録する。
【0181】
このような顧客管理システム100において、第1エッジ端末1Aは、検出された顧客行動情報を、第1エッジ端末1Aの顧客行動レコードの顧客行動記録マイクロサービス111A内の顧客行動レコード、及び、第2エッジ端末1Bの顧客行動記録マイクロサービス111B内の顧客行動レコードに記録する。このような構成となることで、買い物客22の顧客行動は、任意のエッジ端末1において買い物客22毎に設けられる顧客行動レコードに記憶される。その結果、顧客行動を集中管理するサーバを設ける必要がなくなるので、簡易な構成で顧客管理システム100を構成することができる。
【0182】
第1実施形態の顧客管理システム100によれば、顧客行動には、買い物客22が購入商品を取得する購入行動を含む。そして、エッジ端末1は、買い物客22が購入商品を取得する購入行動を検出すると、購入行動情報を含む顧客行動情報を、顧客行動レコードに追加する。
【0183】
このような顧客管理システム100において、第1エッジ端末1Aは、検出された購入行動情報を、第1エッジ端末1Aの顧客行動記録マイクロサービス111A内の顧客行動レコードの購入商品リスト、及び、第2エッジ端末1Bの顧客行動記録マイクロサービス111B内の顧客行動レコードの購入商品リストに追加する。このような構成となることで、買い物客22が取得した購入予定商品は、任意のエッジ端末1内の顧客行動レコードの購入商品リストに記憶される。その結果、購入商品を集中管理するサーバを設ける必要がなくなるので、簡易な構成で顧客管理システム100を構成することができる。
【0184】
第1実施形態の顧客管理システム100によれば、さらに、表示部及び操作部であるタッチパネル4を備える。第1エッジ端末1A、及び、第2エッジ端末1Bは、さらに、タッチパネル4の操作に応じて、買い物客22の購入予定商品リストの商品代金の決済処理を行うことができる。
【0185】
このように構成されることで、出入口21の近傍に設けられたエッジ端末1と接続されたタッチパネル4を操作することで、購入商品リストに記録された購入予定商品を決済できる。その結果、店舗10の出入口21を自由に構成できるので、買い物客22の利便性を向上させることができる。
【0186】
第1実施形態の顧客管理システム100によれば、第1エッジ端末1A、及び、第2エッジ端末1Bは、さらに、決済処理後に在庫数の管理を行う。このような構成となることにより、在庫リストを集中管理するサーバを設けることなく、簡易な構成で在庫管理を行うことができる。
【0187】
第1実施形態の顧客管理システム100によれば、第1エッジ端末1A、及び、第2エッジ端末1Bのそれぞれは、任意のコンテナ56(または、ポッド58)により読み書き可能な共有メモリ領域54と、顧客行動検出マイクロサービス113(検出コンテナ)と、顧客行動記録マイクロサービス111(記録コンテナ)と、サービスブローカ60(仲介コンテナ)とを備える。
【0188】
顧客行動検出マイクロサービス113、顧客行動情報、及び、次処理コンテナ情報(次工程マイクロサービス情報:顧客行動記録マイクロサービス111)を、共有メモリ領域54に書き込む。その後、サービスブローカ60は、共有メモリ領域54への書き込みを検出すると、次処理コンテナ情報(次工程マイクロサービス情報)に示された顧客行動記録マイクロサービス111を起動させる。そして、顧客行動記録マイクロサービス111は、共有メモリ領域54へ書き込まれた購入行動情報を用いて、購入行動レコードを更新する。
【0189】
このような構成となることで、全てのエッジ端末1を同じソフトウェア構成としながら、それぞれのエッジ端末1内の顧客行動レコードを更新できる。その結果、複数のエッジ端末1における処理が共通化されるの、ソフトウェア構成が複雑化せず、保守性を高めることができる。
【0190】
第1実施形態の顧客管理システム100によれば、マイクロサービスは待機状態と起動状態との2つの状態を備える。顧客行動記録マイクロサービス111は、サービスブローカ60から実行指令を受信して起動状態となり所定の処理を実行し、処理を終了すると待機状態に遷移する。このように、顧客行動記録マイクロサービス111が必要な場合のみ起動することで、顧客管理システム100の全体のリソース使用量の低減を図ることができる。
【0191】
第1実施形態の顧客管理システム100によれば、第1エッジ端末1A及び第2エッジ端末1Bの内部においては、仮想ネットワークを介してコンテナ間通信が行われ、第1エッジ端末1Aと第2エッジ端末1Bとはリアルネットワークにより接続される。そして、第1エッジ端末1A、及び、第2エッジ端末1Bのそれぞれは、端末間通信サービス64A、64Bを備える。端末間通信サービス64A、64Bは、第1エッジ端末1A及び第2エッジ端末1Bにおける、リアルネットワークの情報、及び、共有メモリ領域54A、54B内のデータ領域の構成を記憶する。そして、第1エッジ端末1Aのコンテナは、端末間通信サービス64A、64Bを介して、第2エッジ端末1Bの共有メモリ領域54Bへの書き込みを行う。
【0192】
第1エッジ端末1A及び第2エッジ端末1Bには、それぞれにオーケストレーションツール52が設けられている。このような構成において、同じクラスタ53内(同じエッジ端末1内)においては、仮想ネットワークを用いてコンテナが共有メモリ領域54にアクセスできるが、仮想ネットワークを用いて異なるエッジ端末1のクラスタ53内の共有メモリ領域54にアクセスすることは難しい。そこで、それぞれのエッジ端末1のクラスタ53内に、クラスタ53外の構成であるネットワークアダプタ107を扱うことができる端末間通信サービス64を設ける。このような構成により、一方のエッジ端末1内のコンテナから、他方のエッジ端末1内の共有メモリ領域54へのアクセスが可能となる。
【0193】
その結果、それぞれにオーケストレーションツール52が設けられた異なるエッジ端末1の間での共有メモリ領域54を介した処理結果の提供が可能となる。この構成では、それぞれのエッジ端末1のソフトウェア構成が共通化されているので、顧客管理システム100の構成を単純化することでき、高い保守性を実現することができる。
【0194】
第1実施形態の顧客管理システム100によれば、エッジ端末1は、カメラ2の撮影画像を用いて顔認識を行うことで買い物客22を特定し(S1206)、さらに、撮影画像を用いて購入予定商品を特定する(S1205)。そして、買い物客22が特定され、かつ、購入予定商品が特定される場合には、買い物客22の行動が購入行動として検出される。このようにすることで、買い物客22が操作を行うことなく、画像処理だけで買い物客22を特定できるため、買い物客22の利便性を向上できる。さらに、カメラ2という比較的単純なセンサを導入することで購入行動を検出できるため、顧客管理システム100の設置コストの低減を図ることができる。
【0195】
第1実施形態の顧客管理システム100によれば、エッジ端末1は、カメラ2の撮影画像から顔部分を抽出した顔認識用画像を生成し、顔認識用画像を用いて顔認識を行う。このようにすることで、顔認識に必要な処理の一部が画像処理マイクロサービス114により行われるので、顔認識マイクロサービス115の処理負荷の軽減を図ることができる。
【0196】
第1実施形態の顧客管理システム100によれば、顔認識は、ネットワークを介して接続されるサーバ7により行われてもよい。一般に、顔認識処理は、処理負荷が高く、また、機械学習エンジンの更新頻度が高いため、エッジ端末1内ではなく、WAN6と接続されるサーバ7によって動作するのが好ましい。顔認識処理がサーバ7で行われる場合には、エッジ端末1は、サーバ7に対して顔認識用画像を送信することになる。顔認識画像は顔部分が抽出された画像であり、データ量が少ないので、ネットワーク負荷及びサーバ7の処理負荷の軽減を図ることができる。
【0197】
第1実施形態の顧客管理システム100によれば、顔認識の結果を示す第1識別子(識別ID)とは異なる第2識別子(顧客ID)を用いて購入予定商品リストを管理する。ここで、顔認識が他のシステムで利用されている汎用エンジンを用いて行われている場合には、同じ識別IDが他のシステムでも用いられるおそれがある。しかしながら、汎用エンジンから顔認識結果である識別IDが送信されても、識別IDとは異なる顧客IDを用いて顧客行動レコードを構成するため、買い物客22のプライバシーの保護を図ることができる。さらに、顧客ID等と紐づけられた決算手段や購入履歴等の個人情報は店舗側で管理することができるので、顧客情報を店舗10側で安全に管理できる。
【0198】
(変形例)
上述の実施形態においては、顧客管理システム100が、2つのエッジ端末1A、1Bにより構成される例について説明したがこれに限らない。顧客管理システム100が、3つ以上のエッジ端末1により構成されてもよい。本変形例においては、顧客管理システム100が、3つのエッジ端末1により構成される例について説明する。
【0199】
図17は、3つのエッジ端末1(第1エッジ端末1A、第2エッジ端末1B、及び、第3エッジ端末1C)の間における顧客行動情報の提供制御を示す図である。なお、ステップS1701、S1702の処理は、
図12のステップS1209、及び、S1210の処置と対応する。
【0200】
まず、ステップS1701において、第1エッジ端末1Aの顧客行動検出マイクロサービス113Aが、顧客行動情報を、第1エッジ端末1Aの顧客行動記録マイクロサービス111A、第2エッジ端末1Bの顧客行動記録マイクロサービス111B、及び、第3エッジ端末1Cの顧客行動記録マイクロサービス111Cに提供する。詳細には、顧客行動情報は、次工程マイクロサービス情報とともに、
図8に示されたフォーマットで、共有メモリ領域54の所定のデータ領域に書き込まれるが、当該詳細な処理はこの図では記載を省略する。
【0201】
ここで、第1エッジ端末1A内における顧客行動検出マイクロサービス112Aから顧客行動記録マイクロサービス111Aへの顧客行動情報の提供は、クラスタ53A内の仮想ネットワークを介して行われる。一方で、第1エッジ端末1Aから、第2エッジ端末1Bまたは第3エッジ端末1Cへの顧客行動情報の提供は、第1~第3エッジ端末1A~1Cが備える端末間通信サービス64A~64Cによって、リアルネットワークを介して行われる。
【0202】
ステップS1702では、第1エッジ端末1Aの顧客行動記録マイクロサービス111Aにおいて、顧客行動情報を用いて顧客行動レコードが更新される。同様に、ステップS1712では、第2エッジ端末1Bの顧客行動記録マイクロサービス111Bにおいて、顧客行動情報を用いて顧客行動レコードが更新される。ステップS1722では、第3エッジ端末1Cの顧客行動記録マイクロサービス111Cにおいて、顧客行動情報を用いて顧客行動レコードが更新される。
【0203】
その結果、顧客管理システム100においては、顧客行動レコードを管理するサーバ等を設けることなく、任意のエッジ端末1内の顧客行動レコードが同期されて最新の状態となるため、顧客管理システム100の構成を単純化することでき、高い保守性を実現することができる。
【0204】
なお、この変形例においては、顧客管理システム100が、3つのエッジ端末1により構成される、第1エッジ端末1Aが、第2エッジ端末1Bの顧客行動記録マイクロサービス111B、及び、第3エッジ端末1Cの顧客行動記録マイクロサービス111Cにおいて顧客行動情報を顧客行動レコードに記録する例を示したが、これに限らない。顧客管理システム100は、4以上のエッジ端末1により構成され、第1エッジ端末1Aが、複数の他のエッジ端末1の顧客行動記録マイクロサービス111の顧客行動記録マイクロサービス111の顧客行動レコードに顧客行動情報を記録してもよい。
【0205】
(第2実施形態)
第2実施形態においては、複数のエッジ端末1の間において処理結果の提供が行われる場合において、顧客管理システム100外の端末からの処理結果の提供を抑制する方法について説明する。
【0206】
図18は、第2実施形態において共有メモリ領域54に記録されるデータ領域のフォーマットを示す図であって、
図8の第1実施形態のフォーマットのうちの1つと対応する。この図に示されるように、第1実施形態のデータ領域と比較すると、「現工程のエッジ端末のIPアドレス」、及び、「現工程のエッジ端末のMACアドレス」が追加されている。
【0207】
「現工程のエッジ端末のIPアドレス」、及び、「現工程のエッジ端末のMACアドレス」の欄は、共有メモリ領域54に書き込みを行うマイクロサービスが存在するエッジ端末1のネットワーク構成であるIPアドレス及びMACアドレスが記録される。なお、この記録は、書き込み元のマイクロサービスの指示に応じて、書き込み元であるマイクロサービスと同じエッジ端末1に存在する端末間通信サービス64が行ってもよいし、オーケストレーションツール52が行ってもよい。サービスブローカ60は、これらの欄を用いて、事前に登録されたエッジ端末1以外からの共有メモリ領域54に書き込まれデータを確認し、登録されていないエッジ端末1からの書き込みは無視する。
【0208】
図19は、サービスブローカ60の処理を示すフローチャートであって、
図9の左列に示されたフローチャートに相当する。この処理は、
図14のステップS1403、S1413において実行される。
【0209】
この図に示される処理は、
図9の処理と比較すると、ステップS901の処理の前にステップS1901の処理が追加されており、さらに、ステップS902の後、かつ、ステップS903の前に、ステップS1902の処理が追加されている。以下では、これらの追加されたステップS1901、S1902の処理について説明する。
【0210】
ステップS1901において、サービスブローカ60Bは、端末間通信サービス64Bを介して、顧客管理システム100内のリアルネットワークに関する情報を取得する。取得した情報には、顧客管理システム100内の全てのエッジ端末1のIPアドレス及びMACアドレスが示されている。
【0211】
そして、ステップS902の処理において共有メモリ領域54Bに新規データの書き込みがあると判断された場合には(S902:Yes)、ステップS1902の処理を行う。
【0212】
ステップS1902の処理において、サービスブローカ60Bは、共有メモリ領域54Bに書き込まれた新規データが顧客管理システム100内のエッジ端末1によるものであるか否かを判定する。具体的には、サービスブローカ60Bは、新規データにおける「前工程のエッジ端末のIPアドレス」及び「前工程のエッジ端末のMACアドレス」を取得する。サービスブローカ60Bは、ステップS1901においてオーケストレーションツール52A、52Bを介して、顧客管理システム100を構成するエッジ端末1のネットワーク情報(IPアドレス及びMACアドレス)を取得しており、新規データの「前工程のエッジ端末のIPアドレス」及び「前工程のエッジ端末のIPアドレス」が、顧客管理システム100を構成するエッジ端末1に含まれるか否かを判断する。
【0213】
新規データの書き込みが顧客管理システム100内のエッジ端末1によるものである場合には(S1902:Yes)、サービスブローカ60Bは、次に、ステップS903の処理を行う。新規データの書き込みが顧客管理システム100内のエッジ端末1によるものでない場合には(S1902:No)、サービスブローカ60Bは、次に、ステップS1901の処理を行う。
【0214】
ここで、顧客管理システム100のシステム構成が動的に変化する場合には、顧客管理システム100を構成しない端末からであっても共有メモリ領域54にデータが書き込まれることがある。そこで、IPアドレス及びMACアドレスを利用することで、書き込まれる新規データの正当性を確認することができる。
【0215】
第2実施形態の顧客管理システム100によれば、サービスブローカ60は、予め、リアルネットワークの構成を記憶しており、共有メモリ領域54にリアルネットワークの構成に含まれない端末からの書き込みがあった場合には、書き込まれた情報を破棄する。このようにすることで、仮に、共有メモリ領域54に意図しないデータが記録された場合であっても、顧客管理システム100を構成しない端末から書き込まれたデータは処理されなくなるため、セキュリティの向上を図ることができる。
【0216】
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。すなわち、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。
【符号の説明】
【0217】
1、1A、1B エッジ端末
2 カメラ(センサ)
4 タッチパネル
10 店舗
50 OSカーネル
51 コンテナエンジン
52、52A、52B オーケストレーションツール
53 クラスタ
54、54A、54B 共有メモリ領域
56 コンテナ
58 ポッド
60、60A、60B サービスブローカ
61~63 第1~第3マイクロサービス
64 端末間通信サービス
71~73 第1~第3データ領域
100 顧客管理システム
101~103 第4~第6マイクロサービス
104~106 第4~第6データ領域
107A、107B ネットワークアダプタ
111、111A、111B 顧客行動記録マイクロサービス
112 商品特定マイクロサービス
113、113A、113B 顧客行動検出マイクロサービス
114 画像処理マイクロサービス
115 顔認識マイクロサービス
116 顧客特定マイクロサービス
117 決済マイクロサービス