(57)【特許請求の範囲】
【請求項１】
異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースと、
ＯＳ（Operating System）を含む複数のプログラムが格納されるメモリと、
前記複数の通信インターフェースと前記メモリとに接続され前記複数のプログラムを実行するプロセッサと
を備え、
前記複数のプログラムは、前記ＯＳ上で実行される第１アプリと、前記ＯＳ上で実行される一つ又は複数の第２アプリとを含み、
前記一つ又は複数の第２アプリのうちの一つ以上の第２アプリの各々は、一つ以上の通信インターフェース規格上での一つ以上の通信プロトコルに従う通信を行うアプリであり、且つ、任意にインストールされ任意にアンインストール可能なアプリであり、
前記第１アプリは、前記ＯＳと前記一つ又は複数の第２アプリとの間のミドルウェアとしてのアプリである、
通信モジュール。
【請求項２】
前記一つ又は複数の第２アプリの各々について、
当該第２アプリの実行オブジェクトと、
当該第２アプリについて一つ以上の設定項目を表す設定定義オブジェクトと、
当該一つ以上の設定項目について一つ以上の設定値が入力された場合に当該入力された一つ以上の設定値が登録される設定オブジェクトと
を含んだアプリ構造体があり、
前記一つ又は複数の第２アプリの各々について、当該第２アプリの実行は、当該第２アプリの設定オブジェクトに基づいており、
前記第１アプリが、
指定された第２アプリの設定定義オブジェクトを基に、当該設定定義オブジェクトが表す一つ以上の設定項目について一つ以上の設定値を受け付けるＵＩ（User Interface）である設定画面を生成し、
当該生成した設定画面を提供し、
当該設定画面が表す一つ以上の設定項目について当該設定画面に入力された一つ以上の設定値を、前記指定された第２アプリの設定オブジェクトに登録する、
請求項１に記載の通信モジュール。
【請求項３】
前記設定画面は、前記通信モジュールに通信可能に接続された計算機で実行されるＷｅｂブラウザにより表示可能な画面である、
請求項２に記載の通信モジュール。
【請求項４】
前記一つ又は複数の第２アプリにそれぞれ対応した一つ又は複数のアプリ構造体は、ファイルシステムにおける所定のディレクトリに格納され、
各アプリ構造体において、実行オブジェクト、設定定義オブジェクト及び設定オブジェクトとは、それぞれ、実行ファイル、設定定義ファイル及び設定ファイルであり、
前記第１アプリは、前記所定のディレクトリを参照することで、前記一つ又は複数の第２アプリのインストール済を特定する、
請求項２に記載の通信モジュール。
【請求項５】
前記通信モジュールのエンドユーザ以外のエンティティにより管理されるシステムから当該エンドユーザの要求無しに第２アプリのアプリ構造体が前記所定のディレクトリに格納される、
請求項４に記載の通信モジュール。
【請求項６】
第１の第２アプリが、当該第１の第２アプリに対応した通信プロトコルに従う通信が行われる通信インターフェース規格に対応した通信インターフェース経由で、当該通信インターフェースに接続されている機器からデータを受信し、
前記第１の第２アプリとは別の第２アプリである第２の第２アプリが、前記第１の第２アプリが受信したデータ又は当該データの加工後のデータを、当該第２の第２アプリに対応した通信プロトコルに従う通信が行われる通信インターフェース規格に対応した通信インターフェース経由で、所定のサーバに送信する、
請求項１に記載の通信モジュール。
【請求項７】
前記複数のプログラムが、第３アプリとして監視アプリを含み、
少なくとも一つの第２アプリのリソース使用量が前記ＯＳにより前記メモリに格納されるようになっており、
前記監視アプリが、
前記少なくとも一つの第２アプリのリソース使用量を前記第１アプリに問い合わせ、
当該問合せに応答して前記第１アプリにより前記メモリから取得され前記第１アプリから回答されたリソース使用量を表すデータを、前記第２の第２アプリに渡し、
前記第２の第２アプリが、渡されたデータを前記所定のサーバに送信する、
請求項６に記載の通信モジュール。
【請求項８】
前記複数のプログラムが、第３アプリとして監視アプリを含み、
少なくとも一つの第２アプリのリソース使用量が前記ＯＳにより前記メモリに格納されるようになっており、
前記監視アプリが、
前記少なくとも一つの第２アプリのリソース使用量を前記第１アプリに問い合わせ、
当該問合せに応答して前記第１アプリにより前記メモリから取得され前記第１アプリから回答されたリソース使用量を表すデータを、いずれかの第２アプリ経由又は非経由で、サーバに送信する、
請求項１に記載の通信モジュール。
【請求項９】
前記複数のプログラムが、第３アプリとして課金アプリを含み、
前記第１アプリが、第２アプリにより通信インターフェース経由で通信されたデータの量であるデータ通信量を特定し、
前記課金アプリが、前記特定されたデータ通信量に基づいて、通信モジュールの使用に関する課金額を決定する、
請求項１に記載の通信モジュール。
【請求項１０】
異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースを有する通信モジュールと、
サーバと
を備え、
前記通信モジュールが、ＯＳ（Operating System）と、当該ＯＳ上で実行される第１アプリと、当該ＯＳ上で実行される一つ又は複数の第２アプリとを有し、
前記一つ又は複数の第２アプリのうちの一つ以上の第２アプリの各々は、一つ以上の通信インターフェース規格上での一つ以上の通信プロトコルに従う通信を行うアプリであり、且つ、任意にインストールされ任意にアンインストール可能なアプリであり、
前記第１アプリは、前記ＯＳと前記一つ又は複数の第２アプリとの間のミドルウェアとしてのアプリであり、
第１の第２アプリが、当該第１の第２アプリに対応した通信プロトコルに従う通信が行われる通信インターフェース規格に対応した通信インターフェース経由で、当該通信インターフェースに接続されている機器からデータを受信し、
前記第１の第２アプリそれ自体又は別の第２アプリである第２の第２アプリが、当該第２の第２アプリに対応した通信プロトコルに従う通信が行われる通信インターフェース規格に対応した通信インターフェース経由で、前記サーバにデータを送信する、
通信システム。
【請求項１１】
前記第２の第２アプリから送信されるデータが、第２アプリにより通信インターフェース経由で通信されたデータの量であるデータ通信量を含み当該第２アプリの使用履歴であるアプリ使用履歴を表すデータを含み、
前記サーバが、前記第２の第２アプリからのデータから特定される前記アプリ使用履歴に基づいて、前記通信モジュールの使用に関する課金額を決定する、
請求項１０に記載の通信システム。
【請求項１２】
前記アプリ使用履歴は、第２アプリと当該第２アプリのアクティベート時刻とを表す情報を含む、
請求項１１に記載の通信システム。
【請求項１３】
前記通信モジュールが、所定の通信網に対応し加入者識別情報を格納したカードを有しており、
前記第２の第２アプリが、前記カード内の加入者識別情報を含むデータを、前記第１アプリ経由で設定された通信タイミングで、前記サーバに送信する、
請求項１１に記載の通信システム。
【請求項１４】
前記サーバが、前記決定された課金額が反映された料金を前記所定の通信網を管理する通信事業者が請求可能にするために、前記決定された課金額を表す情報を、当該通信事業者宛に送信する、
請求項１３に記載の通信システム。
【請求項１５】
前記通信モジュールとして、少なくとも第１の通信モジュールと第２の通信モジュールとがあり、
前記サーバが、前記第１の通信モジュールのアプリ利用履歴が表す或る第２アプリのアクティベート時刻と、前記第２の通信モジュールのアプリ使用履歴が表す同一の第２アプリのアクティベート時刻とを基に、前記第１の通信モジュールに関する第１の課金額と前記第２の通信モジュールに関する第２の課金額とを決定する、
請求項１１に記載の通信システム。
【請求項１６】
前記第１の課金額のうち前記或る第２アプリの使用に関わる部分の料金と、前記第２の課金額のうち前記同一の第２アプリの使用に関わる部分の料金とのうち、当該第２アプリのアクティベート時刻が早い方の料金が安い、
請求項１５に記載の通信システム。
【請求項１７】
前記サーバは、決定された課金額の支払期限までの支払が無ければ、当該課金額が決定された通信モジュールの全部又は一部の使用を制限する、
請求項１１に記載の通信システム。
【請求項１８】
前記通信モジュールが、複数のリージョンに属する複数の通信網の各々について当該通信網の加入者識別情報を格納したカードを有しており、
前記通信モジュールにおけるいずれかのアプリが、当該通信モジュールが存在するリージョンを特定し、
当該特定されたリージョンが所定のリージョンの場合、前記通信モジュールにおけるいずれかのアプリが、当該所定のリージョンに属する通信網に対応した加入者識別情報を用いた通信を制限する、
請求項１０に記載の通信システム。
【請求項１９】
前記サーバとして、複数の通信網が属する複数のリージョンに属する複数のサーバがあり、
前記通信モジュールが、前記複数の通信網の各々について当該通信網の加入者識別情報を格納したカードを有しており、
前記通信モジュールが存在するリージョンに属するサーバが、
当該通信モジュールの通信が許可されているリージョンである許可リージョンを特定し、
当該許可リージョンに、前記通信モジュールが存在するリージョンが該当しない場合、当該リージョンに属する通信網に対応した加入者識別情報を用いた通信を制限する、
請求項１０に記載の通信システム。
【請求項２０】
異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースと、ＯＳ（Operating System）と、当該ＯＳ上で実行される第１アプリとを有する通信モジュールに、通信に使用される通信インターフェース規格に対応し当該ＯＳ上で実行され任意にアンインストール可能な第２アプリをインストールし、
前記ＯＳと前記第２アプリとの間のミドルウェアとしてのアプリである第１アプリ経由で前記第２アプリについて設定された通信タイミングで、当該第２アプリが、当該第２アプリに対応した通信インターフェース規格上での通信プロトコルに従う通信を行う、
通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、データ通信に関する。
【背景技術】
【０００２】
通信モジュールに関する技術として、例えば特許文献１に開示の技術がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−２９７９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＩｏＴ（Internet of things）のように様々な産業機器（例えば、コンプレッサ、モータ及び産業向けインクジェットプリンタ等）からデータを収集することが行われるようになってきている。このような様々な産業機器の各々には、データ通信（例えばデータ送信）のための通信モジュールが必要になる。【０００５】
通信モジュールに関わる要素として、通信に採用される通信インターフェース規格、及び、通信に採用される通信プロトコルといった要素があるが、いずれの要素も様々である。通信インターフェース規格としては、例えば、RS232C、RS485及びEthernet（登録商標）等がある。通信インターフェース規格は、典型的には、物理レイヤに関わる。通信プロトコルとしては、例えば、UDP（User Datagram Protocol）、MQTT（Message Queuing Telemetry Transport）及びModbusプロトコル等がある。通信プロトコルは、典型的には、通信インターフェース規格が属するレイヤよりも上位のレイヤに関わる。【０００６】
いずれの種類の通信インターフェース規格及び通信プロトコルが採用されるかは、通常、産業機器に依存する。産業機器の種類も、様々である。例えば、複数種類の産業機器を提供するメーカ、すなわち、モータ単体とその応用機器であるエアーコンプレッサを製造するメーカであっても、エアーコンプレッサとモータそれぞれで異なる通信インターフェース規格または通信プロトコルを採用する場合があり、これらエアーコンプレッサとモータをまとめて監視等を行う場合には、それぞれに対応する通信変換装置を設けた上でＩｏＴゲートウェイを介して通信されるクラウド監視システムまたは通信変換装置を設けオンプレミスの監視システムを構築する必要があり、このような産業機器ごとの通信規格の対応事情によって工場等のＩｏＴ化が進めにくくなっていた。【０００７】
このため、産業機器の種類に依存しないデータ通信を可能にする汎用的な通信モジュールが実現されることが望ましい。【０００８】
このような課題は、産業機器以外の機器についてもあり得る。
【課題を解決するための手段】
【０００９】
通信モジュールが、異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースを有する。通信モジュールで実行される複数のプログラムが、ＯＳ（Operating System）上で実行される第１アプリと、ＯＳ上で実行される一つ又は複数の第２アプリとを含む。一つ以上の第２アプリの各々は、一つ以上の通信インターフェース規格上での一つ以上の通信プロトコルに従う通信を行うアプリであり、且つ、任意にインストールされ任意にアンインストール可能なアプリである。第１アプリは、ＯＳと一つ又は複数の第２アプリとの間のミドルウェアとしてのアプリである。
【発明の効果】
【００１０】
機器の種類に依存しないデータ通信を可能にする汎用的な通信モジュールが実現される。
【図面の簡単な説明】
【００１１】
【図１】実施形態に係るシステム全体の構成を示す。
【図２】通信モジュールの物理的な構成を示す。
【図３】通信モジュールの論理的な構成を示す。
【図４】データ通信の流れの一例を示す。
【図５】アプリのインストールとアプリに関する設定との概要を示す。
【図６】アプリに関する設定の流れの一例を示す。
【図７】管理サーバの構成を示す。
【図８】課金の流れの概要を示す。
【発明を実施するための形態】
【００１２】
以下の説明では、「通信インターフェース装置」は、一つ以上の通信インターフェースデバイスでよい。一つ以上の通信インターフェースデバイスは、一つ以上の同種の通信インターフェースデバイス（例えば一つ以上のＮＩＣ（Network Interface Card））であってもよいし二つ以上の異種の通信インターフェースデバイス（例えばＮＩＣとＨＢＡ（Host Bus Adapter））であってもよい。
【００１３】
また、以下の説明では、「メモリ」は、一つ以上の記憶デバイスの一例である一つ以上のメモリデバイスであり、典型的には主記憶デバイスでよい。メモリにおける少なくとも一つのメモリデバイスは、揮発性メモリデバイスであってもよいし不揮発性メモリデバイスであってもよい。
【００１４】
また、以下の説明では、「永続記憶装置」は、一つ以上の記憶デバイスの一例である一つ以上の永続記憶デバイスでよい。永続記憶デバイスは、典型的には、不揮発性の記憶デバイス（例えば補助記憶デバイス）でよく、具体的には、例えば、ＨＤＤ（Hard Disk Drive）、ＳＳＤ（Solid State Drive）、ＮＶＭｅ（Non-Volatile Memory Express）ドライブ、又は、ＳＣＭ（Storage Class Memory）でよい。
【００１５】
また、以下の説明では、「記憶装置」は、メモリと永続記憶装置の少なくともメモリでよい。
【００１６】
また、以下の説明では、「プロセッサ」は、一つ以上のプロセッサデバイスでよい。少なくとも一つのプロセッサデバイスは、典型的には、ＣＰＵ（Central Processing Unit）のようなマイクロプロセッサデバイスでよいが、ＧＰＵ（Graphics Processing Unit）のような他種のプロセッサデバイスでもよい。少なくとも一つのプロセッサデバイスは、シングルコアでもよいしマルチコアでもよい。少なくとも一つのプロセッサデバイスは、プロセッサコアでもよい。少なくとも一つのプロセッサデバイスは、処理の一部又は全部を行うハードウェア記述言語によりゲートアレイの集合体である回路（例えばＦＰＧＡ（Field-Programmable Gate Array）、ＣＰＬＤ(Complex Programmable Logic Device)又はＡＳＩＣ（Application Specific Integrated Circuit））といった広義のプロセッサデバイスでもよい。
【００１７】
また、以下の説明では、「ｘｘｘテーブル」といった表現にて、入力に対して出力が得られる情報を説明することがあるが、当該情報は、どのような構造のデータでもよいし（例えば、構造化データでもよいし非構造化データでもよいし）、入力に対する出力を発生するニューラルネットワーク、遺伝的アルゴリズムやランダムフォレストに代表されるような学習モデルでもよい。従って、「ｘｘｘテーブル」を「ｘｘｘ情報」と言うことができる。また、以下の説明において、各テーブルの構成は一例であり、一つのテーブルは、二つ以上のテーブルに分割されてもよいし、二つ以上のテーブルの全部又は一部が一つのテーブルであってもよい。
【００１８】
また、以下の説明では、「ｙｙｙ部」の表現にて機能を説明することがあるが、機能は、一つ以上のコンピュータプログラムがプロセッサによって実行されることで実現されてもよいし、一つ以上のハードウェア回路（例えばＦＰＧＡ又はＡＳＩＣ）によって実現されてもよいし、それらの組合せによって実現されてもよい。プログラムがプロセッサによって実行されることで機能が実現される場合、定められた処理が、適宜に記憶装置及び／又はインターフェース装置等を用いながら行われるため、機能はプロセッサの少なくとも一部とされてもよい。機能を主語として説明された処理は、プロセッサあるいはそのプロセッサを有する装置が行う処理としてもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布計算機又は計算機が読み取り可能な記録媒体（例えば非一時的な記録媒体）であってもよい。各機能の説明は一例であり、複数の機能が一つの機能にまとめられたり、一つの機能が複数の機能に分割されたりしてもよい。
【００１９】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサによって実行されることで、定められた処理を、適宜に記憶装置及び／又はインターフェース装置等を用いながら行うため、処理の主語が、プロセッサ（或いは、そのプロセッサを有するコントローラのようなデバイス）とされてもよい。プログラムは、プログラムソースから計算機のような装置にインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は計算機が読み取り可能な（例えば非一時的な）記録媒体であってもよい。また、以下の説明において、二つ以上のプログラムが一つのプログラムとして実現されてもよいし、一つのプログラムが二つ以上のプログラムとして実現されてもよい。
【００２０】
また、以下の説明では、同種の要素を区別しないで説明する場合には、参照符号のうちの共通符号を使用し、同種の要素を区別する場合は、参照符号を使用することがある。例えば、通信モジュールを区別しない場合には、「通信モジュール１０１」と言い、通信モジュールを区別する場合には、「通信モジュール１０１Ａ」、「通信モジュール１０１Ｂ」のように言う。
【００２１】
以下、一実施形態を説明する。なお、以下の実施形態では、エンティティとして、下記が存在するものとする。
・モジュール提供者：通信モジュールを提供するエンティティ（例えば、企業）。
・ユーザ：産業機器を提供するエンティティ（例えば、産業機器のメーカ）。例えば、ユーザは、通信モジュールを入手（例えば購入）し、入手した通信モジュールが接続された産業機器を提供（例えば販売）する。
・エンドユーザ：通信モジュールが接続された産業機器を使用するエンティティ（例えば、複数の産業機器からなる製造ラインを備えた工場を有する企業）。なお、製造ラインを備えた工場を有する企業はエンドユーザでありながら、通信モジュールを購入する場合はユーザにもなり得る。
・通信事業者：所定の通信網を管理するエンティティ（例えば、携帯電話キャリア）。
【００２２】
本発明の実施形態について、産業機器の通信規格対応事情に起因するＩｏＴ化が進められにくい状況を説明したが、昨今のＩｏＴに関する事情について説明する。ＩｏＴ化が進めにくい背景として、産業機器の耐用年数は家庭用の電気機器に比べて長いため、専用の自社製品との通信することが考慮されている。このため、産業機器よりも上位のレイヤーを含むエッジやフォグレイヤーと通信することが考慮されていない製品が現在も利用されており、別途産業機器にセンサを取り付けしたり、産業機器専用の通信ポートに対して所定の通信コマンドを送信し返ってきたステータスを受信した後に変換する通信変換装置が必要となる場合がある。
【００２３】
こうした事情から、産業分野は、労働人口減少に伴う労働の効率化や省人化等の社会的要請に対して、ＩｏＴ化した産業機器が望まれている。このような課題を解決するために本発明の実施形態に係るシステム全体の構成を図１を用いて説明する。
【００２４】
通信モジュール１０１が、産業機器１０３（機器の一例）の通信インターフェース装置としての役割を担うことができる。産業機器１０３が取得するデータとして、例えば、産業機器１０３のステータスを表すデータや、産業機器１０３のセンサにより取得された計測値を表すデータがある。産業機器１０３が取得したデータが、通信モジュール１０１で送信される。
【００２５】
産業機器１０３と通信モジュール１０１との関係は、１：１でもよいし、多：１でもよいし、１：多でもよいし、多：多でもよい。通信モジュール１０１は、後述するように、産業機器１０３の種類に依存しない汎用的なモジュールなので、典型的には、１：１又は多：１になると考えられる。１：１とは、通信モジュール１０１Ｂと産業機器１０３Ｂが通信する場合である。また、他：１とは、産業機器１０３Ａ、１０３Ｂ、他の産業機器またはセンサ郡１６３と通信モジュール１０１Ｂが通信する場合である。
【００２６】
通信モジュール１０１の提供形態は様々でよい。例えば、通信モジュール１０１Ｂは、センサ群１６３（一つ以上のセンサ）が設けられた産業機器１０３Ｂに外付けされてもよいし、産業機器１０３Ａ（例えば、産業機器本体）と産業機器１０３Ａに予め接続された（例えば内蔵された）通信モジュール１０１Ａとを含んだ産業機器ユニット１０５が提供されてもよい。
【００２７】
産業機器１０３Ａ（産業機器１０３Ｂ）の通信インターフェース規格又は通信プロトコルは、通信網１０９Ａ（通信網１０９Ｂ）を介した通信のための通信インターフェース規格又は通信プロトコルは異なる。産業機器１０３Ａ（産業機器１０３Ｂ）に通信モジュール１０１Ａ（通信モジュール１０１Ｂ）が接続されることで、産業機器１０３Ａ（産業機器１０３Ｂ）が通信モジュール１０１Ａ（通信モジュール１０１Ｂ）経由で通信網１０９Ａ（通信網１０９Ｂ）を介したデータ通信を行うことができる。通信網１０９Ａ及び１０９Ｂは、同一の通信網でもよいし異なる通信網でもよい。通信網１０９Ａ及び１０９Ｂの各々は、本実施形態では無線通信網（例えば閉域網）であるが、有線通信網でもよいし、ＶＰＮ（Virtual Private Network）でもよい。
【００２８】
通信網１０９Ａ及び１０９Ｂに通信網１０９Ｃが接続されている。通信網１０９Ｃは、典型的にはインターネットであるが、他種の通信網でもよい。通信網１０９Ａ〜１０９Ｃの二つ以上が同一の通信網でもよい。
【００２９】
通信網１０９Ｃに、通信事業者サーバ１０７、配信サーバ１１７、管理サーバ１１５、ユーザシステム１１１（ユーザサーバでもよい）、及びエンドユーザクライアント１１３が接続されている。通信事業者サーバ１０７、配信サーバ１１７、管理サーバ１１５、ユーザシステム１１１、及びエンドユーザクライアント１１３のいずれも、物理的な計算機でもよいし、複数種類の計算リソース（例えば、クラウド基盤）上に実現された仮想的なシステムでもよい。
【００３０】
通信事業者サーバ１０７は、通信事業者のサーバである。通信事業者は、例えば、通信網１０９Ａ及び１０９Ｂを管理する。通信事業者サーバ１０７は、ユーザ別又はエンドユーザ別に、通信網１０９Ａ及び１０９Ｂを介した通信の通信量に応じた料金を決定する。決定された料金が、ユーザ又はエンドユーザに請求される。
【００３１】
配信サーバ１１７は、通信モジュール１０１にアプリをインストールするサーバである。配信サーバ１１７は、例えば、エンドユーザ以外のエンティティによって管理されるシステム（例えば、アプリストア）としてのサーバでよい。上記のようにアプリケーションを単にアプリと呼ぶ。
【００３２】
管理サーバ１１５は、通信モジュール１０１を管理したり、通信モジュール１０１の使用料金を決定したり、通信モジュールに搭載されるアプリケーションの使用状況を特定や算定等をするサーバである。複数のリージョンに対応した複数の管理サーバ１１５Ａ、１１５Ｂ、…があってもよい。「リージョン」は、地理的な範囲を意味し、国、州、県、市といった様々な単位で区切られてよい。リージョンごとに通信範囲や通信領域を区切ることで、設定した所定のリージョン内でデータ管理をすることができる。
【００３３】
ユーザサーバ１１１は、ユーザのサーバである。例えば、ユーザサーバ１１１は、エンドユーザが使用する産業機器１０３の使用履歴を表し当該産業機器１０３に接続されている通信モジュール１０１から送信された一定期間分のデータを分析してよい。このとき、ユーザサーバ１１１は配信サーバ１１７から分析アプリケーションを取得し、取得した分析アプリケーションの使用回数、使用時間、使用状況をユーザシステム１１１もしくは管理サーバ１１５が計測し、分析アプリケーションの使用に対する対価を特定することができる。
【００３４】
ユーザは、ユーザシステム１１１でユーザアプリケーション１８０を作成することができる。作成したユーザアプリケーション１８０は、配信サーバ１０７にアップロードされる。エンドユーザが望むユーザアプリケーション１８０を、配信サーバ１０７から通信モジュール１０１にダウンロードすることができる。
【００３５】
ユーザアプリケーション１８０をダウンロードしたダウンロード情報を管理サーバ１１５が取得し管理することで、通信モジュール１０１のエンドユーザに対してユーザアプリケーション１８０のダウンロードに対する対価を特定する。ダウンロードのみならずユーザアプリケーション１８０の利用回数や利用状況に基づいた対価を特定することができる。特定された対価は通信利用量と共に回収することができる。また、回収した対価は通信事業者または通信事業者から配信サーバ１１７の管理者を介してユーザシステム１１１のユーザに支払われる。
【００３６】
これにより、ユーザがユーザシステム１１１で作成したアプリケーションのうちエンドユーザが通信モジュール１０１で必要なアプリケーションをダウンロードすることができる。そのアプリケーションの利用状況やダウンロードに対応する対価を通信事業者を介して回収することができるため、エンドユーザは直接ユーザへ対価を支払うことなく通信事業者に通信量と併せて支払うことできる。また、エンドユーザが支払った対価は、エンドユーザが個別にユーザへ支払う必要がなく、通信事業者や配信サーバ１１７の管理者経由で支払われるため、エンドユーザの利便性が向上するシステムを提供することができる。
【００３７】
通信モジュール１０１が携帯電話網の通信を利用できることから上記したユーザアプリケーション１８０に関する対価の特定と回収を実現できる。
【００３８】
エンドユーザクライアント１１３は、エンドユーザが使用する計算機（例えば、パーソナルコンピュータ又はスマートフォン）でよく、ユーザサーバ１１１のクライアントである。図１が示す例では、ユーザＡのユーザサーバ１１１Ａにとってのクライアントが、エンドユーザクライアント１１３Ａａ及び１１３Ａｂであり、ユーザＢのユーザサーバ１１１Ｂにとってのクライアントが、エンドユーザクライアント１１３Ｂａ及び１１３Ｂｂである。
【００３９】
通信モジュール１０１の情報はエンドユーザクライアント１１３で表示することができる、また、通信モジュール１０１に表示手段を持たせた場合には通信モジュール１０１をエンドユーザクライアント１１３として利用することもできる。エンドユーザクライアント１１３の表示手段にはタッチパネル等の入力部または別途キーボード等の入力手段を設けることができ、入力部または入力手段を用いて配信サーバ１１７に登録されたユーザアプリケーション１１３を購入することができる。
【００４０】
図２は、通信モジュール１０１の物理的な構成を示す。
【００４１】
通信モジュール１０１は、異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースの一例として、複数の通信ポート２０５Ａ、２０５Ｂ、…と、複数のアンテナ２０１Ａ、２０１Ｂ、…とを備える。通信ポート２０５としては、例えば、Eathernet（登録商標）、EtherCAT（登録商標）用のＲＪ４５ポート、ＲＳ２３２Ｃ用のポート、及び、ＲＳ４８５用のポートを採用することができる。その他、Ｉ２Ｃ（Inter-Integrated Circuit）やＣＡＮ（Controller Area Network）（登録商標）を用いることができるため、物理的に使用できる通信規格であれば実施形態が限定されるものではない。
【００４２】
或る通信ポート２０５が、通信モジュール１０１のファームウェアのアップデートといった保守のための通信に使用されてもよい。また、そのような保守のための通信に使用されるポートは、通信ポート２０５とは異なる独立したポートであると通信を専有できるためより通信モジュール１０１のシステムの安全性が向上する。
【００４３】
また、アンテナ２０１としては、ＬＴＥ（Long Term Evolution）用のアンテナ、ＧＰＳ（Global Positioning System）用のアンテナ、及び、Bluetooth（登録商標）用のアンテナを採用することができる。アンテナ２０１毎に、当該アンテナ２０１を介して送受信される信号の処理を行う信号処理ユニット２０７が通信モジュール１０１に設けられていてよい。例えば、図示の通り、アンテナ２０１Ａ、２０１Ｂ、…にそれぞれ対応した信号処理ユニット２０７Ａ、２０７Ｂ、…が設けられていてよい。
【００４４】
通信モジュール１０１は、ＳＩＭ（Subscriber Identity Module）カードスロット２１３を有する。当該スロット２１３に、加入者識別情報を格納しているＳＩＭカード２１１が挿される。
【００４５】
また、ＳＩＭカードスロット２１３は物理的なものに限られずｅ−ＳＩＭ（Embedded SIM）を利用することができる。この場合は、エンドユーザは、通信モジュール１０１を利用するリージョンに適した通信事業者を選択することができる。併せて、配信サーバ１１７もリージョンや通信事業者に適したユーザアプリケーションをエンドユーザに対して表示または非表示を選択することができる。
【００４６】
ｅ−ＳＩＭを適用した本実施形態は、リージョンごとに適したサービスを提供することができ、ユーザアプリケーションの利用状況やダウンロードの対価の回収も通信事業者経由となるため、リージョンごとの法令や条例に対応するサービスによる利便性を提供することができる。以下、ＳＩＭカード２１１とＳＩＭカードスロット２１３について代表して説明するが、ｅ−ＳＩＭであっても上記したように実施できる。
【００４７】
通信モジュール１０１は、制御ユニット２０９を有する。制御ユニット２０９が、通信インターフェース装置２２１、メモリ２２３及びそれらに接続されたプロセッサ２２５を有する。インターフェース装置２２１に、ＳＩＭカード２１１、各通信ポート２０５及び各信号処理ユニット２０７が接続される。
【００４８】
メモリ２２３が、ファイルシステム情報２５１を格納する。ファイルシステム情報２５１は、ディレクトリとファイルを含む。ファイルシステム情報２５１において、ディレクトリとファイルは例えば木構造の関係を有する。ファイルシステム情報２５１が、複数のプログラムの各々について、プログラムの実行ファイルを含む構造体を含む。
【００４９】
また、メモリ２２３は、セキュア領域２８１を有してよい。セキュア領域２８１は、通信モジュール１０１の秘密鍵Ａ（公開鍵認証方式における公開鍵Ａと秘密鍵Ａからなる鍵ペアのうち、秘密鍵Ａに相当するもの）を格納してよい。通信モジュール１０１のセキュア領域２８１に秘密鍵Ａを格納した場合は、エンドユーザクライアント１１３が秘密鍵Ａに対応する公開鍵Ａを用いてデータを復号することで、通信モジュール１０１から送信されたことを担保することができる。また、公開鍵認証方式におけるエンドユーザクライアント１１３の公開鍵Ｂと秘密鍵Ｂからなる鍵ペアのうち、公開鍵Ｂに相当するものを通信モジュール１０１のセキュア領域２８１に格納した場合には、エンドユーザクライアント１１３のユーザが公開鍵Ｂに対応する秘密鍵Ｂを管理し用いることで通信モジュール１０１が産業機器１０３等から取得した情報を保護することができる。なお、メモリ２２３がセキュア領域２８１を有している場合は、プロセッサ２２５とメモリ２２３を同一のチップ内に実装するなどにより、両者を接続するバス信号線が容易にプロービングされない構造であることが望ましい。
【００５０】
プロセッサ２２５は、メモリ２２３に格納されている複数のプログラム（例えば、複数のプログラムの実行ファイル）を実行する。
【００５１】
図３は、通信モジュール１０１の論理的な構成を示す。
【００５２】
プロセッサ２２５により実行される複数のプログラムは、ファームウェア３０５、ＯＳ（Operating System）３０１、及び、複数のアプリ３０３を含む。ＯＳ３０１は、例えば、オープンソースのＯＳ、例えば、Ｌｉｎｕｘ（登録商標）でよい。また、メモリ２２３に、公開鍵管理テーブル３５１が格納される。公開鍵管理テーブル３５１は、管理サーバ１１５毎に、管理サーバＩＤと、当該管理サーバ１１５の公開鍵を表す情報とを格納する。なお、本実施例では代表して公開鍵管理テーブル３５１は公開鍵を管理する例として説明するが上記したように秘密鍵を管理することもできる。
【００５３】
複数のアプリ３０３は、ＯＳ３０１上で実行される第１アプリ３０３Ａと、ＯＳ３０１上で実行される一つ又は複数の第２アプリ３０３Ｃとを含む。エンドユーザまたはユーザは、通信モジュール１０１が図１で説明したユーザアプリケーション１８０をダウンロードすることで、アプリ３０３として利用することができる。
【００５４】
例えば、第２アプリ３０３Ｃは、通信モジュール１０１のシステムや通信に関するアプリケーションであることが多い。ユーザのみならず通信モジュール１０１の製造企業(ベンダ、供給者または提供者とも呼ぶ)が、管理サーバ１７０を経由して各通信モジュール１０１に対してＯＴＡ（On The Air）によるファームウェアアップデートまたはソフトウェアアップデートを実施することが可能である。この場合、ベンダはユーザとなる。第１アプリ３０３ＡをＯＴＡを用いて更新できるため、セキュリティ対策やバグｆｉｘが容易となり、より安心した通信モジュール１０１とすることができる。
【００５５】
一つ又は複数の第２アプリ３０３Ｃのうちの一つ以上の第２アプリ３０３Ｃの各々は、一つ以上の通信インターフェース規格上での一つ以上の通信プロトコルに従う通信を行うアプリであり、任意にインストールされ任意にアンインストール可能なアプリである。一つ又は複数の第２アプリ３０３Ｃの一例が、ルータアプリ３０３Ｃ１（ＩＰ（Internet Protocol）に従う通信を中継するルータとして通信モジュール１０１を機能させるためのアプリ）、Modbusアプリ３０３Ｃ２（Modbusプロトコルで通信するためのアプリ）、及び、MQTTアプリ３０３Ｃ３（MQTTプロトコルで通信するためのアプリ）である。
【００５６】
第１アプリ３０３Ａは、ＯＳ３０１と一つ又は複数の第２アプリとの間のミドルウェアとしてのアプリである。以下、第１アプリ３０３Ａを、「フレームワーク」と呼ぶことがある。
【００５７】
通信モジュール１０１は、異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースを備え、通信インターフェース規格や通信プロトコルの種類に応じた第２アプリがインストール（又はアクティベート）される。アクティベートとは、予め第２アプリの実行前に、配信サーバ１１７から第２アプリとしてＯＳ３０１上にダウンロードとインストールをしておき、第２アプリの管理者からユーザまたはエンドユーザが第２アプリを利用することを許可されることをいう。
【００５８】
その後、ユーザまたはエンドユーザは第２アプリを実行することができる。アクティベート処理の際に、管理サーバ１１５を介してユーザまたはエンドユーザがアクティベートを要求する処理とユーザが第２アプリをアクティベートする処理を管理するとアクティベートや第２アプリの利用状況を把握できるため、この把握された利用状況を基に第２アプリの利用料の計算が可能となる。なお、利用状況の把握は配信サーバ１１５が行ってもよく、また、第２アプリ側で利用時間や利用回数を計測し、配信サーバ１１７や管理サーバ１１５へ送信することもできる。
【００５９】
個々のアプリ３０３は独立しているが、ＯＳ３０１と一つ又は複数の第２アプリ３０３Ｃとの間のミドルウェアとしてのフレームワーク３０３Ａが存在する。このため、アプリ３０３間の連携が支援され、以って、通信モジュール１０１に接続される産業機器１０３が有するインターフェースの種類に依存しないデータ通信を可能にする汎用的な通信モジュール１０１が実現される。
【００６０】
なお、アプリ３０３毎にコンテナのような独立した実行環境が構築され当該実行環境においてアプリ３０３が実行されてもよいが、図３に例示の構成によれば、アプリ３０３はＯＳ３０１によりプロセスとみなされて実行される。このため、コンテナのような実行環境が必要とされる構成と比べて、通信モジュール１０１の必要とされるリソース量は小さくすることができる。
【００６１】
ユーザは、通信モジュール１０１が接続されエンドユーザに使用される産業機器１０３について通信モジュール１０１経由でデータを収集し、収集されたデータを分析することで、エンドユーザにとってより価値の高いサービスを提供することが期待できる。
【００６２】
ユーザまたはエンドユーザは、通信モジュール１０１にユーザによって作られた第２アプリ３０３Ｃをインストールしたり、通信モジュール１０１から第２アプリ３０３Ｃをアンインストールしたりすることができる。
【００６３】
第２アプリ３０３Ｃは、ユーザからの要求に応答して（又は、ユーザからの要求無しに）、通信モジュール１０１の提供者によってインストール（又はアンインストール）されてもよい。
【００６４】
このインストール等の処理の際に、フレームワーク３０３がフレームワーク３０３上で動作する第１アプリ３０３や第１アプリが通信するインターフェースの使用状況を確認し、使用していない第１アプリであるか、あるいは第１アプリが使用中であれば、非使用のときにインストールやアンインストールあるいはアップデート処理をすることができる。
【００６５】
これにより、インストール等のプロセスが各アプリの状況を１：多の関係ではなく、プロセスとフレームワーク３０３が１：１の関係で確認するだけでよくなり、インストール等が容易となる。また、通信モジュール１０１と接続された産業機器１０３の通信を阻害せずにインストール等を実現することができる。
【００６６】
第２アプリ３０３Ｃは、ユーザ又はモジュール提供者等によって用意されたエンドユーザ向けの第２アプリ３０３Ｃでもよいし、分析用アプリのようにユーザ向けの第２アプリ３０３Ｃでもよい。第２アプリ３０３Ｃは、アプリストアのような配信サーバ１１７からユーザにより選択されたアプリがインストールされてもよい。
【００６７】
具体的には、例えば、フレームワーク３０３Ａが、配信サーバ１１７にアクセスし、通信モジュール１０１に接続された計算機（図示しない）で実行されるＷｅｂブラウザのＷｅｂ画面上に、選択可能な第２アプリ（例えば、第２アプリのアイコン）を表示し、ユーザによりＷｅｂ画面から選択された第２アプリを、通信モジュール１０１にインストールしてよい。いずれの第２アプリ３０３Ｃがどの程度使用されたかに応じて、エンドユーザ又はユーザに対する課金額が決定されてよい。課金額の決定方法については後に説明する。
【００６８】
また、監視アプリ３０３Ｂ１は、第３アプリ３０３Ｂの一例である。フレームワーク３０３Ａ及び監視アプリ３０３Ｂ１は、通信モジュール１０１の提供者によってインストール（例えば、プリインストール）されてよい。監視アプリ３０３Ｂ１については後述する。なお、フレームワーク３０３Ａが、監視アプリ３０３Ｂ１のような第３アプリ３０３Ｂを兼ねてよい。すなわち、フレームワーク３０３Ａが、監視アプリ３０３Ｂ１を兼ねてもよい。なお、「第３アプリ」とは、ＯＳ３０３上のアプリのうち第１アプリ及び第２アプリ以外のアプリでよい。
【００６９】
図４は、データ通信の流れの一例を示す。
【００７０】
フレームワーク３０３Ａが、各第２アプリ３０３を管理する。例えば、各第２アプリ３０３は、当該第２アプリ３０３についてメモリ２２３の設定された領域に、当該第２アプリ３０３の使用履歴（例えば、稼働情報）を格納する。フレームワーク３０３Ａが、各第２アプリ３０３について、当該第２アプリ３０３に対応した領域に登録された使用履歴を参照してよい。
【００７１】
通信モジュール１０１が異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースを有するため、個々の第２アプリ３０３が、任意の二種類以上の通信プロトコルや通信インターフェース規格に対応してもよい。
【００７２】
しかし、通信プロトコルや、通信プロトコルが関わるレイヤの下位レイヤに属するや通信インターフェース規格は、様々である。このため、産業機器１０３とのデータ通信のための通信プロトコルや通信インターフェース規格と、産業機器１０３以外とのデータ通信のための通信プロトコルや通信インターフェース規格との組合せの数は膨大となり得る。
【００７３】
例えば、産業機器１０３からデータを受信し受信したデータを管理サーバ１１５に送信するケースを考察する。産業機器１０３がModbusプロトコルをサポートしていれば、データ受信の通信プロトコルとしてModbusプロトコルを使用することが考えられる。
【００７４】
一方、管理サーバ１１５へのデータ送信の通信プロトコルとしては、MQQTプロトコルやUDPといった通信プロトコルを使用することが考えられる。単一の第２アプリが、産業機器１０３とのデータ通信と産業機器１０３以外とのデータ通信とを行う必要があると、第２アプリの開発が煩雑である。
【００７５】
そこで、本実施形態では、通信モジュール１０１に接続された産業機器１０３との通信を行うが産業機器１０３以外との通信を行わない（つまり、ローカル通信を行う）ローカルの第２アプリと、通信モジュール１０１に接続された産業機器１０３以外との通信を行い当該産業機器１０３との通信を行わない（つまり、グローバル通信を行う）グローバルの第２アプリとが用意される。
【００７６】
ローカルの第２アプリとグローバルの第２アプリの各々の開発は、ローカル通信とグローバル通信の両方を行う第２アプリの開発に比べて容易であることが期待される。また、ローカル通信の通信プロトコルや通信インターフェース規格とグローバル通信の通信プロトコルや通信インターフェース規格との組合せ毎に第２アプリが必要とならないので、通信モジュール１０１のリソースを効率的に使用することも期待される。
【００７７】
これらのローカル通信を行う第２アプリとグローバル通信を行う第２アプリそれぞれが自由に動作すると、ＯＳ上でメモリのアクセス等がぶつかる場合があるが、フレームワークがこれらの第２アプリを監視し、メモリへのアクセス等を制御することにより第２アプリそれぞれを動作させることができる。
【００７８】
図４が示す例によれば、Modbusアプリ３０３Ｃ２が、ローカルの第２アプリの一例である。すわなち、ローカルの第２アプリであるModbusアプリ３０３Ｃ２が、第１の第２アプリとなる一例である。また、MQTTアプリ３０３Ｃ３が、グローバルの第２アプリの一例である。すなわち、グローバルの第２アプリであるMQTTアプリ３０３Ｃ２が、第２の第２アプリとなる一例である。
【００７９】
例えば、Modbusアプリ３０３Ｃ２が、Modbusプロトコルに従う通信が行われる通信インターフェース規格（例えばRS485）に対応した通信インターフェース経由で、当該通信インターフェースに接続されている産業機器１０３Ｂからデータを受信する。MQTTアプリ３０３Ｃ３が、Modbusアプリ３０３Ｃ２が受信したデータ又は当該データの加工後のデータを、MQTTプロトコルに従う通信が行われる通信インターフェース規格に対応した通信インターフェース経由で、管理サーバ１１５等（所定のサーバの一例）に送信する。
【００８０】
なお、通信モジュール１０１に接続される産業機器１０３によっては、MQTTアプリ３０３Ｃ３がローカルの第２アプリの一例となることもあり得る。本発明の一実施形態に係るフレームワークを用いることで、このようなローカルとグローバルの接続を切り替えることや別アプリとしてローカル向けMQTTアプリとグローバル向けMQTTアプリを併存させることができる。第２アプリ３０３Ｃ間の連携は、上述した直接の連携でも間接の連携でもよい。
【００８１】
Modbusアプリ３０３Ｃ２とMQTTアプリ３０３Ｃ３を例に取ると、それらの第２アプリ３０３Ｃ間の連携は、例えば、次の通りでよい。Modbusアプリ３０３Ｃ２が、産業機器１０３Ｂから受信したデータを、メモリ２２３のうちの、Modbusアプリ３０３Ｃ２に対応した領域に書き込む。
【００８２】
MQTTアプリ３０３Ｃ３が、Modbusアプリ３０３Ｃ２に対応した領域からデータを読み出し、読み出したデータを管理サーバ１１５に送信する。MQTTアプリ３０３Ｃ３は、Modbusアプリ３０３Ｃ２に対応した領域のアドレスを、フレームワーク３０３Ａへの問合せに対する応答から、又は、MQTTアプリ３０３Ｃ３について設定された情報から、知ることができる。
【００８３】
また、後述するように、ユーザは、Modbusアプリ３０３Ｃ２がデータを受信する通信タイミングや、Modbusアプリ３０３Ｃ２がデータを送信する通信タイミングを、フレームワーク３０３Ａ経由で通信モジュール１０１に設定することが可能である。
【００８４】
さて、個々の第２アプリ３０３Ｃは、ＯＳ３０１によりプロセスとみなされて実行される。個々の第２アプリ３０３Ｃは、実行ログのような使用履歴（例えば、リソース量）を、当該第２アプリ３０３について設定された領域に書き込む。フレームワーク３０３Ａは、個々の第２アプリ３０３Ｃの実行によって何が発生するか（例えば、いずれの種類のリソースがどの程度使用されるか）かまではわからない。
【００８５】
そこで、本実施形態では、監視アプリ３０３Ｂ１が通信モジュール１０１にインストールされる。監視アプリ３０３Ｂ１は、例えば、第２アプリ３０３Ｃ毎に、定期的に、フレームワーク３０３Ａに対し、当該第２アプリ３０３Ｃに対応した領域にデータがあるか否かを問合せる。フレームワーク３０３Ａは、データがあれば、当該データを領域から読み出して監視アプリ３０３Ｂ１に返し、データが無ければ、データが無いことを監視アプリ３０３Ｂ１に回答する。
【００８６】
監視アプリ３０３Ｂ１が問合せに応答してフレームワーク３０３Ａから受信するデータは、第２アプリ３０３Ｃの使用履歴を表す情報を含んでいる。監視アプリ３０３Ｂ１は、フレームワーク３０３Ａから受信したデータを、監視アプリ３０３Ｂ１のアプリＩＤと、当該データに対応した第２アプリ３０３ＣのアプリＩＤとに関連付けて、グローバルの第２アプリの一例であるMQTTアプリ３０３Ｃ３に渡す（例えば、メモリ２２３における所定の領域に書き込む）。MQTTアプリ３０３Ｃ３が、渡されたデータを管理サーバ１１５に送信する。
【００８７】
管理サーバ１１５は、監視アプリ３０３Ｂ１のアプリＩＤが関連付いたデータを格納する。当該データは、第２アプリ３０３Ｃの使用履歴を表す情報を含む。このように、通信モジュール１０１内の状況を監視する監視アプリ３０３Ｂ１が通信モジュール１０１において実行されることで、各第２アプリ３０３Ｃを、フレームワーク３０３Ａを通じて追跡することができる。
【００８８】
結果として、通信モジュール１０１の信頼性を維持することが期待される。例えば、複数の第２アプリ３０３Ｃを実行していた通信モジュール１０１がシステムダウンしたとする。この場合、管理サーバ１１５に格納された、各第２アプリ３０３Ｃの使用履歴を、モジュール提供者が分析することで、問題のあった第２アプリ３０３Ｃを特定することが期待できる。このようにして、モジュール提供者からユーザへ通信モジュール１０１の状況のフィードバックをすることが期待できる。
【００８９】
また、問題があった第２アプリ３０３Ｃの修正データ（又は、当該アプリ３０３Ｃの新バージョン）を配布サーバ１１７経由又は非経由で通信モジュール１０１に提供することも期待できる。
【００９０】
なお、第２アプリ３０３Ｃ毎に、メモリ２２３のどの領域に使用履歴を表す情報を書き込むかは、予め決められている。例えば、各第２アプリ３０３Ｃについて、書込み先領域のアドレスを表す設定値は、当該第２アプリ３０３Ｃに対応した後述の設定定義ファイルに基づきフレームワーク３０３Ａによって生成された設定画面を通じて入力され設定ファイルに登録された値でよい。
【００９１】
監視アプリ３０３Ｂ１は、各第２アプリ３０３Ｃについて、予め決められた領域を参照することで、当該第２アプリ３０３Ｃの使用履歴を表す情報を取得し、当該情報を含んだデータを、MQTTアプリ３０３Ｃ３のようなグローバルの第２アプリに渡すことができる。
【００９２】
また、本実施形態では、MQTTアプリ３０３Ｃ３のようなグローバルの第２アプリ３０３Ｃが存在するため、監視アプリ３０３Ｂ１は、グローバルの第２アプリ３０３Ｃ経由でデータを管理サーバ１１５に送信するが、監視アプリ３０３Ｂ１が、グローバル通信の機能を有していて、監視アプリ３０３Ｂ１それ自体が、管理サーバ１１５にデータを送信してもよい。
【００９３】
また、監視アプリ３０３Ｂ１に代えて又は加えて、他の第３アプリ３０３Ｂがインストールされてもよい。例えば、課金額を決定するアプリである課金アプリ３０３Ｂ２がインストールされてもよい。
【００９４】
フレームワーク３０３Ａが、第２アプリ３０３Ｃにより通信インターフェース経由で通信されたデータの量であるデータ通信量（別の言い方をすれば、第２アプリ３０３Ｃ以外のアプリ（例えば、監視アプリ３０３Ｂ１）による通信のデータ通信量を除くデータ通信量）を特定してよい。
【００９５】
当該データ通信量は、例えば、アプリ３０３毎の使用履歴から特定されてよい。課金アプリ３０３Ｂ２が、当該特定されたデータ通信量に基づいて、課金額を決定してよい。決定された課金額は、通信モジュール１０１の使用課金額でもよいし、通信モジュール１０１が接続された産業機器１０３の使用課金額でもよい。
【００９６】
課金額の決定は、本実施形態では、後述するように、管理サーバ１１５のようなコア装置によって行われるが、産業機器１０３に接続された通信モジュール１０１のようなエッジ装置によって行われてもよい。
【００９７】
図５は、アプリ３０３のインストールとアプリ３０３に関する設定との概要を示す。
【００９８】
ファイルシステム情報２５１によれば、木構造のディレクトリ５１１とファイル５０１とがある。具体的には、例えば、ルートディレクトリ５１１Ｔの下位に、アプリトップディレクトリ５１１Ａがあり、アプリトップディレクトリ５１１Ａの直下に、アプリ３０３毎にアプリディレクトリ５１１Ｒが作成される。
【００９９】
アプリディレクトリ５１１Ｒに、当該アプリディレクトリ５１１Ｒに対応するアプリ３０３に関わるデータ一式が格納される。なお、ディレクトリ５１１及びファイル５０１の各々は、オブジェクトの一例でよい。
【０１００】
一般に、アプリ（アプリケーションプログラム）に対する設定値は、設定画面経由でオペレータにより入力されるが、アプリの設定画面は、アプリのソースコードに記述された情報に基づくアプリ固有の画面である。アプリ毎に構成がアプリ固有であると、アプリ間の連携が煩雑であると考えられる。
【０１０１】
アプリごとに異なるインターフェースであると、通信モジュール１０１のエンドユーザまたはユーザはアプリごとにその利用方法を習得する必要が生じるためである。また、インターフェース情報をアプリごとに持たせると通信モジュールの１０１のメモリを消費やプロセッサのリソース使用量が増加するため、インターフェースを共通化することで汎用機に比べてリソースが小さい組み込み機器である通信モジュール１０１のリソース使用量を小さくすることができる。
【０１０２】
そこで、本実施形態では、少なくとも第２アプリ３０３Ｃについて、実行ファイル５０１Ｅ１、設定定義ファイル５０１Ｆ２及び設定ファイル５０１Ｓ３から構成されたアプリ構造体が採用される。
【０１０３】
実行ファイル５０１Ｅは、第２アプリ３０３Ｃの本体に相当するファイルである。第２アプリ３０３Ｃの実行は、当該第２アプリ３０３Ｃの実行ファイル５０１Ｅの実行である。設定定義ファイル５０１Ｆ２は、第２アプリ３０３Ｃについて一つ以上の設定項目を表すファイルである。
【０１０４】
設定ファイル５０１Ｓ３は、当該一つ以上の設定項目について一つ以上の設定値が入力された場合に当該入力された一つ以上の設定値が登録されるファイルである。フレームワーク３０３Ａが、設定定義ファイル５０１Ｆ２を基に設定画面を構築して提供し、設定画面に入力された設定値を設定ファイル５０１Ｓ３に登録する。
【０１０５】
各第２アプリ３０３Ｃの実行は、当該第２アプリ３０３Ｃに対応した設定ファイル５０１Ｓ３に登録された設定値に従う。これにより、アプリ３０３間の連携がし易い。また、設定画面はフレームワーク３０３Ａにより構築され提供されるので、第２アプリ３０３の開発もし易いと考えられる。
【０１０６】
フレームワーク３０３Ａは、アプリ３０３のインストールのためのインターフェースの一例として、ＣＵＩ（Character User Interface）を提供する。フレームワーク３０３Ａが提供するＣＵＩ経由で、配信サーバ１１７が、アプリ構造体をアプリトップディレクトリ５１１Ａ（所定のディレクトリの一例）に格納することが、アプリ３０３のインストールでよい。
【０１０７】
例えば、図５が示す例によれば、アプリトップディレクトリ５１１Ａに、Modbusディレクトリ５１１Ｒ２が作成され、Modbusディレクトリ５１１Ｒ２に、Modbusアプリ３０３Ｃ２のアプリ構造体（実行ファイル５０１Ｅ２、設定定義ファイル５０１Ｄ２及び設定ファイル５０１Ｓ２）が格納される。この格納処理は、Modbusアプリ３０３Ｃ２のインストールの際に行うとよい。
【０１０８】
また、通信モジュール１０１に対するアプリ３０３のインストールは、エンドユーザからの要求に応じて行われるいわゆるプル型のインストールでもよいが、本実施形態では、エンドユーザからの要求無しに配信サーバ１１７によって能動的に行われる（例えば、ユーザ又はモジュール提供者からの要求に従い行われる）いわゆるプッシュ型のインストールを行う。
【０１０９】
これにより、ユーザ又はモジュール提供者は、通信モジュール１０１の信頼性を維持することが期待できる。配信サーバ１１７は、エンドユーザ以外のエンティティにより管理されるシステムの一例である。ネットワークへの負荷を低減させるため、通信モジュール１０１の製造番号、ＳＩＭカード２１１が有するＩＭＥＩ(International Mobile Equipment Identity)や接続される通信キャリアの情報を基に、プッシュ型のインストールやアプリの配信タイミングを変更するとよい。
【０１１０】
フレームワーク３０３Ａは、アプリ３０３の設定画面としてのインターフェースの一例として、ＧＵＩ（Graphical User Interface）を提供する。図５が示す例によれば、Modbusアプリ３０３Ｃ２が例として採用されている。
【０１１１】
フレームワーク３０３Ａが、指定されたModbusアプリ３０３Ｃ２の設定定義ファイル５０１Ｄ２を基に、当該設定定義ファイル５０１Ｄ２が表す一つ以上の設定項目について一つ以上の設定値を受け付ける設定画面を生成し、当該生成した設定画面を提供する。
【０１１２】
例えば、ネットワーク１０９経由又は非経由で、管理端末６０５が通信モジュール１０１に通信可能に接続される。管理端末６０５は、入出力装置を有する計算機の一例でよい。
【０１１３】
フレームワーク３０３Ａにより生成された設定画面は、管理端末６０５に提供され表示される。当該設定画面が表す一つ以上の設定項目について、管理端末６０５のオペレータにより、一つ以上の設定値が入力される。当該設定画面に入力された一つ以上の設定値を、フレームワーク３０３Ａが、Modbusアプリ３０３Ｃ２の設定ファイル５０１Ｓ２に登録する。
【０１１４】
Modbusアプリ３０３Ｃ２の実行（例えば、Modbusプロトコルに従い産業機器１０３からデータを収集する周期、及び、収集したデータの格納先領域）は、設定ファイル５０１Ｓ２に登録された設定値に従う。
【０１１５】
なお、フレームワーク３０３Ａは、アプリ３０３のインストール管理情報（例えば、インストール済のアプリのリスト）を管理してもよいが、本実施形態では、フレームワーク３０３Ａは、アプリトップディレクトリ５１１Ａにアプリ構造体が格納されていることをアプリがインストールされていると管理し、インストール管理情報を管理しないように扱うことができる。
【０１１６】
フレームワーク３０３Ａは、アプリトップディレクトリ５１１Ａを参照することで、第２アプリ３０３Ｃのインストール済を特定する。インストール管理情報が管理されるケースにおいて、第２アプリ３０３のインストール中に通信モジュール１０１に供給される電源の遮断や切断が生じると、アプリトップディレクトリ５１１Ａ下の構造とインストール管理情報が表す内容とに不整合が起こり得る。本実施形態では、アプリトップディレクトリ５１１Ａの下位にアプリ構造体が存在することが、アプリ３０３のインストール済として管理されるので、上述のような不整合は生じにくくなりアプリのインストール情報の管理コストを低減させることができる。
【０１１７】
図６は、アプリに関する設定の流れの一例を示す。
【０１１８】
フレームワーク３０３Ａが、設定画面を提供する。具体的には、例えば、フレームワーク３０３Ａが、アプリトップディレクトリ５１１Ａを参照することでインストール済のアプリを特定し、特定されたアプリのリスト（例えば、特定されたアプリのアイコン６０３Ｒのリスト）を表示したメニュー画面６０１Ｔを提供する。
【０１１９】
いずれかのアプリのアイコン６０３Ｒがオペレータにより指定されると、フレームワーク３０３Ａは、指定されたアイコン６０３Ｒに対応したアプリの設定定義ファイル５０１Ｄに基づいて、当該設定定義ファイル５０１Ｄが表す一つ以上の設定項目について一つ以上の設定値を受け付けるＧＵＩ（例えば、当該設定定義ファイル５０１Ｄが表す一つ以上の設定項目の各々について、設定値の入力用のＵＩを有するＧＵＩ）である設定画面を生成し、生成した設定画面を提供する。
【０１２０】
図６が示す例によれば、Modbusアプリ３０３Ｃ２に対応したアイコン６０３Ｒ２が指定されている。また、設定項目は、大項目と小項目のように階層化されている。この場合、フレームワーク３０３Ａは、Modbusアプリ３０３Ｃ２の設定定義ファイル５０１Ｄ２を参照し、まず、当該設定定義ファイル５０１Ｄ２に記述されている一つ以上の設定大項目のリスト（例えば、一つ以上の設定大項目をそれぞれ表す一つ以上のアイコン）を表示したメニュー画面６０１Ｍを生成し、メニュー画面６０１Ｍを提供する。
【０１２１】
メニュー画面６０１Ｍからいずれかの設定大項目が指定された場合、フレームワーク３０３Ａは、設定定義ファイル５０１Ｄ２から、指定された設定大項目に属する一つ以上の設定小項目を特定し、特定された設定小項目毎のＵＩ（設定値の入力用のＵＩ）６０５を有する設定画面６０１Ａを生成し、生成した設定画面６０１Ａを提供する。
【０１２２】
例えば、設定大項目“接続先デバイス設定”が指定された場合、設定小項目“デバイス名”、“ポート名”、…にそれぞれ対応する入力用ＵＩ６０５ａａ、６０５ａｂ、…が表示された設定画面６０１Ａ１が提供される。また、例えば、設定大項目“接続設定”が指定された場合、設定小項目“デバイス名”、“レジスタ＃”、…にそれぞれ対応する入力用ＵＩ６０５ｂａ、６０５ｂｂ、…が表示された設定画面６０１Ａ２が提供される。
【０１２３】
画面遷移の例は、図６が示す例に限られないでよい。例えば、アプリのアイコン６０３Ｒが指定された場合、画面６０１Ｍと６０１Ａが一体となった設定画面、すなわち、設定大項目毎に、各設定小項目とその入力用ＵＩ６０５とが表示された設定画面が表示されてもよい。
【０１２４】
このように、フレームワーク３０３Ａは、アプリの設定定義ファイル５０１Ｄを基に設定画面を生成し提供することができる。
【０１２５】
なお、設定画面の提供先は、図５に例示した管理端末６０５（計算機の一例）でよい。また、設定画面は、管理端末６０５で実行されるＷｅｂブラウザにより表示可能な画面でよい。Ｗｅｂブラウザのような一般的なブラウザ経由で設定値を入力可能なので、利便性が高い。
【０１２６】
図７は、管理サーバ１１５の構成の一例を示す。
【０１２７】
管理サーバ１１５は、インターフェース装置７２１、記憶装置７２３及びそれらに接続されたプロセッサ７２５を備える計算機システムであってもよいし、当該計算機システムで一つ以上のプログラムが実行されることで実現される仮想的なシステムであってもよい。
【０１２８】
記憶装置７２３に格納されているプログラムのうちの少なくとも一つのプログラムが実行されることで、プロセッサ７２５に、管理部７６１及び課金部７６３といった機能が実現される。
【０１２９】
記憶装置７２３が、セキュア領域７８１を有してよい。セキュア領域７８１は、管理サーバ１１５の秘密鍵または公開鍵を格納してよい。
【０１３０】
記憶装置７２３が、公開鍵管理テーブル７５１、ユーザ管理テーブル７５３及び使用管理テーブル７５５を格納する。
【０１３１】
セキュア領域７８１に秘密鍵を持たせた場合の公開鍵管理テーブル７５１は、通信モジュール１０１毎に、通信モジュールＩＤと、当該通信モジュール１０１の公開鍵を表す情報とを格納する。
【０１３２】
ユーザ管理テーブル７５３は、ユーザ毎に、ユーザＩＤと、当該ユーザの情報（例えば、連絡先（例えば、電子メールアドレス）、使用される通信モジュール１０１のモジュールＩＤ、及び、当該通信モジュール１０１に接続されている産業機器１０３の情報）を格納する。
【０１３３】
使用管理テーブル７５５は、通信モジュール１０１毎に、モジュールＩＤと、当該通信モジュール１０１のアプリ使用履歴を表す情報を格納する。アプリ使用履歴は、通信モジュール１０１にインストールされているアプリ３０３毎に、下記のうちの少なくとも一つを含んでよい。
・アプリＩＤ：通信モジュール１０１におけるアプリ３０３のＩＤ。
・ユーザＩＤ：アプリ３０３を使用したユーザのＩＤ。
・エンドユーザＩＤ：アプリ３０３を使用したエンドユーザのＩＤ。
・インストール時刻：アプリがインストールされた時刻。
・アクティベート時刻：インストールされたアプリがアクティベートされた（例えば、使用開始が希望された）時刻。
・リージョンＩＤ：アプリ実行時の通信モジュール１０１が属するリージョンのＩＤ。
・リソース使用量：アプリの実行において使用されたリソースの量。
・アプリステータス：アプリのステータス（例えば、正常や異常）。
【０１３４】
アプリ実行時の通信モジュール１０１が配置されるリージョンの特定は、例えば、当該アプリを実行する通信モジュール１０１が受信したＧＰＳ信号を基に検出される。ＳＩＭカード２１１が接続される基地局や通信キャリアの情報、ＧＮＳＳ(Global Navigation Satellite System)信号を基にしてもよい。
【０１３５】
また、「リソース」は、通信モジュール１０１のリソース（典型的には、通信インターフェース、メモリ２２３及びプロセッサ２２５といった計算リソース）である。「リソース使用量」としては、データ通信量、プロセッサ使用率、プロセッサ使用時間及びメモリ使用量といった種々のリソース使用量を採用できる。
【０１３６】
通信モジュール１０１におけるアプリ３０３毎のアプリ使用履歴（例えば、リソース使用量）を表す情報を含んだデータは、当該通信モジュール１０１における監視アプリ３０３Ｂ１によって、例えば、ＯＳ３０１通じて、メモリ２２３から取得され、監視アプリ３０３Ｂ１から、例えばグローバルの第２アプリ３０３Ｃを通じて、管理サーバ１１５に送信される。管理部７６１が、当該データを、使用管理テーブル７５５のうち、当該データの送信元の通信モジュール１０１に対応した欄に登録する。課金部７６３が、使用管理テーブル７５５を基に、通信モジュール１０１の使用に関する課金額を決定する。
【０１３７】
監視アプリ３０３Ｂ１が通信モジュール１０１に接続された産業機器１０３のセンサやステータス以外を監視する変形例について説明する。監視アプリ３０３Ｂ１とは別に第２アプリとして実行してもよい。例えば、監視アプリ３０３Ｂ１は、通信モジュール１０１に接続された機器のファームウェアのアップデートを行うことができる。
【０１３８】
監視アプリ３０３Ｂ１は、産業機器１０３のファームウェアのリビジョン情報やファームウェアの内容と配信サーバ１１７に登録された産業機器１０３に対応するファームウェアのリビジョン情報やそのファームウェアの内容を監視する。
【０１３９】
配信サーバ１１７に記憶されるファームウェアが更新または登録された場合に、産業機器１０３のファームウェアと比較し、差分がある場合には、エンドユーザクライアント１１３に産業機器１０３の新しいファームウェアが存在することを表示する。
【０１４０】
表示され、ユーザまたはエンドユーザがファームウェアの更新を行うことに同意した場合には、通信モジュール１０１は接続された産業機器１０３のファームウェアを更新する。このファームウェアを更新した回数や通信を行った時間等を用いて課金額を決定または算出することができる。課金額は配信サーバ１１７または管理サーバ１１５で決定、算出、管理することができる。また、ユーザやエンドユーザがファームウェアの自動更新のサブスクリプション契約を行っている場合には、契約期間中は適宜ファームウェアを更新してもよく、この場合は契約情報を監視アプリ１１７に登録等するとよい。契約期間を満了した場合や満了前には契約を更新するかユーザまたはエンドユーザに確認するとよい。契約満了の場合は個別に課金することもでき、これによりユーザニーズに対応するファームウェアのアップデートを実現できる。
【０１４１】
図８は、アプリの使用状況や使用履歴を用いた課金額や課金方法の流れの概要を示す。
【０１４２】
管理サーバ１１５において、管理部７６１が、通信モジュール１０１Ａ、１０１Ｂ、…からデータを受信する。各通信モジュール１０１について、受信したデータは、当該通信モジュール１０１におけるアプリ使用履歴を表す情報を含む。管理部７６１は、受信したデータを、当該データの送信元の通信モジュール１０１に対応した欄に登録する。
【０１４３】
課金部７６３が、使用管理テーブル７５５が表す通信モジュール１０１のうち所定期間についての課金額が未決定の通信モジュール１０１を選択し、当該通信モジュール１０１についてアプリ使用履歴を表す情報を使用管理テーブル７５５から取得する。アプリ使用履歴を表す情報は、使用管理テーブル７５５に登録されることに代えて、通信モジュール１０１からのデータから課金部７６３により特定されてもよい（すなわち、使用管理テーブル７５５は無くてもよい）。課金部７６３は、アプリ使用履歴を表す情報に基づいて、通信モジュール１０１の使用に関する課金額を決定する。
【０１４４】
例えば、課金部７６３は、アプリ使用履歴を表す情報から、各第２アプリ３０３Ｃの使用履歴を特定し、各第２アプリ３０３Ｃの使用履歴を基に、通信モジュール１０１の使用に関する課金額を決定してよい。
【０１４５】
通信モジュール１０１によれば、第２アプリ３０３Ｃをユーザの要求に応じてインストールすることができる。また、通信モジュール１０１におけるフレームワーク３０３Ａが、インストール済の一つ以上の第２アプリ３０３Ｃのうちエンドユーザ所望の第２アプリ３０３Ｃの指定をユーザ（又はエンドユーザ）から受け付け、当該指定された第２アプリ３０３Ｃをアクティベートしてよい。
【０１４６】
このように任意に第２アプリ３０３Ｃをインストール又はアクティベートすることができるが、各第２アプリ３０３Ｃの使用履歴は監視され管理サーバ１１５に通知される。このようなアプリ使用履歴を基に、通信モジュール１０１の使用に関する課金額が決定される。
【０１４７】
この例では、課金額のベースは、任意にインストール（又はアクティベート）が可能なアプリである第２アプリ３０３Ｃの使用に起因したアプリ使用履歴（例えば、リソース使用量）に限られており、第２アプリ３０３Ｃの使用に起因しないアプリ使用履歴（例えば、監視アプリ３０３Ｂ１のデータ通信量）は含まれない。
【０１４８】
このため、ユーザにとって、課される金額が適切であることが期待され、以って、産業機器１０３の種類に依存しないデータ通信を可能にする汎用的な通信モジュール１０１の利用促進が期待される。
【０１４９】
なお、「通信モジュール１０１の使用に関する課金額」とは、ユーザ毎の課金額であってもよいし、各ユーザについて当該ユーザのエンドユーザ毎の課金額であってもよい。エンドユーザ毎の課金額を基に、ユーザが、エンドユーザに課する金額を決定してもよい。
【０１５０】
また、第２アプリ３０３Ｃの使用履歴は、当該第２アプリ３０３Ｃのアクティベート時刻を表す情報を含んでいる。インストール時刻からの使用時間でもよいが、アクティベート時刻からの使用時間をベースにすることで、より適切な課金額の決定が期待される。
【０１５１】
通信モジュール１０１が、所定の通信網（例えば、通信網１０９Ａ又は１０９Ｂ）に対応し加入者識別情報を格納したＳＩＭカード２１１（加入者識別情報を格納したカードの一例）を有している。第２アプリ３０３Ｃ（例えば、グローバルの第２アプリ）が、ＳＩＭカード２１１内の加入者識別情報を含むデータを、フレームワーク３０３Ａが提供した設定画面経由で設定された設定値の一例としての通信タイミングで、管理サーバ１１５送信してよい。
【０１５２】
このように、加入者識別情報を含むデータの送信タイミングを、フレームワーク３０３Ａ経由で設定した通信タイミングに制限することができる。なお、課金部７６３が、決定された課金額が反映された料金を所定の通信網（例えば、通信網１０９Ａ又は１０９Ｂ）を管理する通信事業者が請求可能にするために、決定された課金額を表す情報を、当該通信事業者宛に（例えば、通信事業者サーバ１０７に）送信してよい。
【０１５３】
これにより、通信モジュール１０１の通信に使用された所定の通信網を管理する通信事業者からユーザ（又はエンドユーザ）に対して課される通信料金を、当該ユーザ（又はエンドユーザ）についての課金額が反映された料金とすることが期待できる。
【０１５４】
課金部７６３が、通信モジュール１０１Ａ（第１の通信モジュールの一例）のアプリ利用履歴が表す或る第２アプリ３０３Ｃのアクティベート時刻と、通信モジュール１０１Ｂ（第２の通信モジュールの一例）のアプリ使用履歴が表す同一の第２アプリ３０３Ｃ（或る第２アプリ３０３Ｃと同一の第２アプリ３０３Ｃ）のアクティベート時刻とを基に、通信モジュール１０１Ａに関する課金額Ａと通信モジュール１０１Ｂに関する課金額Ｂとを決定してよい。
【０１５５】
このように、共通の第２アプリ３０３Ｃの使用に関する金額のベースを、当該第２プリ３０３Ｃのアクティベート時刻（例えば、アクティベート時刻からの使用時間）とすることができる。例えば、課金額Ａのうち上記或る第２アプリ３０３Ｃの使用に関わる部分の料金と、課金額Ｂのうち同一の第２アプリの使用に関わる部分の料金とのうち、当該第２アプリ３０３Ｃのアクティベート時刻が早い方の料金が安くてよい。これにより、第２アプリ３０３Ｃの積極的な利用を促進できる。
【０１５６】
アクティベート時刻が早い方の料金が安いとは、アプリ３０３Ｃの月間または年間のサブスクリプション契約の単価を低くするということである。アプリ３０３Ｃのアクティベート数が所定数を超えるごとに、既にアクティベートされていた利用者の利用料または利用料の比率を下げることもできる。
【０１５７】
例えば、第２アプリ３０３Ｃの利用者が第一の利用者数の場合には、第一の時刻から利用する第一の利用者は月額Ａ円、第一の時刻より遅い第二の時刻から利用する第二の利用者は月額Ｂ円である。その後、第二の共通アプリ３０３Ｃの利用者数が第一の利用者数より増加し第二の利用者数になった場合には、第一の利用者は月額Ａ円より安価なＣ円、第二の利用者は月額Ｂ円より安価なＤ円とするとよい。
【０１５８】
さらに、Ｂ＜Ｄの関係となると、より第一の利用者を優遇できるため、アプリの利用促進に繋がる。ひいては、ユーザによるアプリのデバッグやアップデートも進み、ベンダ、ユーザ、エンドユーザ全体で安心して利用できる通信モジュール１０１を作り上げるエコシステムを構築することができる。
【０１５９】
管理部７６１は、決定された課金額の支払期限までの支払が無ければ、当該課金額が決定された通信モジュール１０１の全部又は一部の使用を制限してよい。このように、通信モジュール１０１の使用制限を管理サーバ１１５からかけることができる。
【０１６０】
通信モジュール１０１におけるいずれかのアプリ３０３が、当該通信モジュール１０１が存在するリージョンを特定してよい（例えば、ＧＰＳ信号により検出された位置を基に所定のサーバと通信することでリージョンを特定してよい）。当該特定されたリージョンが所定のリージョンの場合、通信モジュール１０１におけるいずれかのアプリが、当該所定のリージョンに属する通信網に対応した加入者識別情報を用いた通信を制限してよい。
【０１６１】
これにより、モジュール提供者が通信を制限したいリージョンで通信モジュール１０１が制限無しに通信することを避けることができる。なお、リージョンを特定するアプリ３０３と、通信を制限するアプリ３０３は、同一でもよいし異なってもよく、また、第１アプリ、第２アプリ及び第３アプリのいずれでもよい。これにより、地域や国ごとで取り扱うデータを制限することができ、ユーザまたはエンドユーザは安心して産業機器のデータ通信を行うことができる。
【０１６２】
例えば、複数の通信網１０９Ａ及び１０９Ｂ（図１参照）が属する複数のリージョンに属する複数の管理サーバ１１５Ａ及び１１５Ｂがあってよい。通信モジュール１０１Ａが存在するリージョンに属する管理サーバ１１５Ａの管理部７６１が、当該通信モジュール１０１Ａの通信が許可されているリージョンである許可リージョンを特定してよい。
【０１６３】
当該許可リージョンに、通信モジュール１０１Ａが存在するリージョンが該当しない場合（例えば、通信モジュール１０１Ａが、通信網１０９Ａが属するリージョンではなく通信網１０９Ｂが属するリージョンに存在する場合）、管理サーバ１１５Ａの管理部７６１が、当該リージョンに属する通信網１０９Ｂに対応した加入者識別情報を用いた通信を制限してよい。
【０１６４】
また、上述した処理の少なくとも一部に代えて又は加えて、下記のような処理が行われてもよい。
【０１６５】
通信モジュール１０１と管理サーバ１１５間で送受信されるデータは、公開鍵暗号方式に従う暗号化と復号が行われてよい。すなわち、通信モジュール１０１におけるアプリ３０３が管理サーバ１１５にデータを送信する場合、当該アプリ３０３が、管理サーバ１１５の公開鍵（公開鍵管理テーブル３５１から特定された公開鍵）を用いてデータを暗号化し、暗号化されたデータを管理サーバ１１５に送信してよい。
【０１６６】
管理サーバ１１５の管理部７６１が、管理サーバ１１５の秘密鍵を用いて当該データを復号してもよい。一方、管理サーバ１１５における管理部７６１が通信モジュール１０１にデータを送信する場合、管理部７６１が、通信モジュール１０１の公開鍵（公開鍵管理テーブル７５１から特定された公開鍵）を用いてデータを暗号化し、暗号化されたデータを通信モジュール１０１に送信してよい。通信モジュール１０１におけるいずれかのアプリ３０３が、通信モジュール１０１の秘密鍵を用いて当該データを復号してもよい。
【０１６７】
このような環境において、例えば、通信モジュール１０１におけるいずれかのアプリ３０３が、ＳＩＭカード２１１内の加入者識別情報を、管理サーバ１１５の公開鍵を用いて暗号化し、暗号化された加入者識別情報を管理サーバ１１５に送信してよい。
【０１６８】
通信モジュール１０１が接続される通信網経由の通信を行う場合に、通信モジュール１０１におけるいずれかのアプリ３０３が、加入者識別情報と送信対象データ（例えば、産業機器１０３から取得されたデータ）とを含んだデータを、管理サーバ１１５の公開鍵で暗号化した後、フレームワーク３０３Ａを通じて設定された通信タイミングに基づいて、当該暗号化されたデータを管理サーバ１１５へ送信してよい。
【０１６９】
管理サーバ１１５の管理部７６１が、暗号化されたデータを受信し、当該データを管理サーバ１１５の秘密鍵で復号してよい。管理部７６１が、復号されたデータが有する加入者識別情報に基づいて、通信モジュール１０１を特定し、特定された通信モジュール１０１が通信を行うことを認証してよい。
【０１７０】
課金部７６３が、認証された通信モジュール１０１のデータ通信量（復号されたデータが有する送信対象データが表すアプリ使用履歴から特定されたデータ通信量）に基づいて、通信モジュール１０１に関する課金額を決定してよい。
【０１７１】
通信モジュール１０１からの送信対象データは、当該通信モジュール１０１にインストールされたアプリ３０３をアクティベートすること（例えば、ユーザまたはエンドユーザから管理サーバ１１５へ使用希望を受けたこと）を表すアクティベート情報を含んでよい。
【０１７２】
結果として、アクティベート情報も、管理サーバ１１５の公開鍵を用いて暗号化されてよい。管理サーバ１１５の課金部７６３が、復号されたデータが有するアクティベート情報を用いて、通信モジュール１０１に関する課金額を決定してよい。
【０１７３】
決定された課金額を表すデータは、暗号化されたデータが経由した通信網を管理する通信事業者（例えば、通信事業者サーバ１０７）に送信されてよい。通信事業者からユーザ（又はエンドユーザ）へ課される通信料金に、上記決定された課金額が反映されてよい。
【０１７４】
通信モジュール１０１Ａがアプリをアクティベートした時刻と通信モジュール１０１Ｂが同一のアプリをアクティベートした時刻とを用いて、課金部７６３が、通信モジュール１０１Ａに関する課金額と通信モジュール１０１Ｂに関する課金額とを決定してよい。例えば、通信モジュール１０１Ａでのアクティベート時刻と通信モジュール１０１Ｂでのアクティベート時刻とのうち早い方の通信モジュールに関する課金額が安価となってよい。
【０１７５】
管理サーバ１１５の管理部７６１が、ユーザが通信事業者へ料金を支払ったことを表す情報を受信した場合に、当該ユーザが使用する通信モジュール１０１の通信を継続すること又は当該通信モジュール１０１におけるアプリ３０３の使用を継続することを許可してよい。
【０１７６】
管理サーバ１１５の管理部７６１が、ユーザが通信事業者へ料金を支払ったことを表す情報を受信しない場合に、通信モジュール１０１の通信又は通信モジュール１０１におけるアプリ３０３の使用を禁止してよい。
【０１７７】
管理サーバ１１５の管理部７６１が、ユーザが通信事業者へ料金を支払ったことを表す情報を受信しない場合に、通信モジュール１０１に対して所定期間の通信又は所定期間のアプリの使用を継続することを許可してよい。
【０１７８】
管理サーバ１１５は、所定のリージョン毎に設けられてよい。通信モジュール１０１のＳＩＭカード２１１が、接続される複数の通信網に対応する複数の前記加入者識別情報を格納していてよい。管理サーバ１１５の管理部７６１が、又は、通信モジュール１０１におけるいずれかのアプリ３０３が、通信モジュール１０１が存在するリージョンを表す情報と当該リージョンに属する通信網を特定することによって、当該通信モジュール１０１が使用する加入者識別情報を特定してよい。
【０１７９】
例えば、通信モジュール１０１におけるいずれかのアプリ３０３は、当該通信モジュール１０１が存在するリージョンによって、所定のリージョンに属する管理サーバ１１５への通信を禁止するように設定されてよい。
【０１８０】
また、例えば、管理サーバ１１５の管理部７６１が、所定のリージョンに存在する通信モジュール１０１からデータを受信した場合、又は、複数の加入者識別情報のうち所定の加入者識別情報を用いた通信がなされた場合、当該通信モジュール１０１の通信を禁止してよい。「通信モジュール１０１の通信を禁止」とは、当該通信モジュール１０１が所定の加入者識別情報を用いた通信を行うことを禁止することでよい。
【０１８１】
ただし、この場合、通信モジュール１０１のグローバル側の通信は禁止するが、ローカル側の通信は許可するとよい。ローカル側の通信を許可することで、通信モジュール１０１に接続される産業機器１０３の動作を維持することができる。
【０１８２】
以上、一実施形態を説明したが、これは本発明の説明のための例示であって、本発明の範囲をこの実施形態にのみ限定する趣旨ではない。本発明は、他の種々の形態でも実行することが可能である。
【符号の説明】
【０１８３】
１０１：通信モジュール
【要約】
機器の種類に依存しないデータ通信を可能にする汎用的な通信モジュールを実現するため、通信モジュールが、異なる複数種類の通信インターフェース規格に対応した複数の通信インターフェースを有する。通信モジュールで実行される複数のプログラムが、ＯＳ（Operating System）上で実行される第１アプリと、ＯＳ上で実行される一つ又は複数の第２アプリとを含む。一つ以上の第２アプリの各々は、一つ以上の通信インターフェース規格上での一つ以上の通信プロトコルに従う通信を行うアプリであり、且つ、任意にインストールされ任意にアンインストール可能なアプリである。第１アプリは、ＯＳと一つ又は複数の第２アプリとの間のミドルウェアとしてのアプリである。【図１】
0006746826.tif 000002
【図２】
0006746826.tif 000003
【図３】
0006746826.tif 000004
【図４】
0006746826.tif 000005
【図５】
0006746826.tif 000006
【図６】
0006746826.tif 000007
【図７】
0006746826.tif 000008
【図８】
0006746826.tif 000009