(57)【要約】  アプリケーション開発を支援する情報処理システムを提供する。  情報処理システムは、モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果を含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、ユーザのモジュールの購入に関する処理を行う購入装置で構成される。前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送する。前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する。
2020026547.tif 000002
【特許請求の範囲】
【請求項１】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録部と、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索部と、
を具備する情報処理装置。
【請求項２】
前記登録部は、モジュールの販売者の第１の端末から受信した前記登録情報を前記データベースに登録する、
請求項１に記載の情報処理装置。
【請求項３】
前記検索部は、モジュールの購入者の第２の端末に入力された製品の識別情報に基づいて前記データベースの検索を行い、検索結果を前記第２の端末に返送する、
請求項１に記載の情報処理装置。
【請求項４】
前記検索部は、既に検索したモジュールの出力変数と共通する入力変数を持ち、又は、既に検索したモジュールの入力変数と共通する出力変数を持つモジュール候補を検索して、前記第２の端末に提示する、
請求項３に記載の情報処理装置。
【請求項５】
前記検索部は、前記第２の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を検索して、前記第２の端末に提示する、
請求項４に記載の情報処理装置。
【請求項６】
前記検索部は、前記第２の端末上で、スライド式にパラメータ調整された類似度の検索範囲に従って、モジュールを検索する、
請求項５に記載の情報処理装置。
【請求項７】
前記検索部の検索結果に基づいて前記第２の端末で選択された複数のモジュールからアプリケーションをビルドして前記第２の端末に提供する提供部をさらに備える、
請求項３に記載の情報処理装置。
【請求項８】
第１のモジュールの出力変数と共通する入力変数を持つ第２のモジュールとを、前後の入出力の状態を確認して接続する、
請求項７に記載の情報処理装置。
【請求項９】
前記登録部は、モジュールの入力変数又は出力変数のうち少なくとも一方のａｌｉａｓ情報をさらに前記データベースに登録する、
請求項１に記載の情報処理装置。
【請求項１０】
前記第２の端末で選択された複数のモジュールからビルドしたアプリケーションの動作をテストする試験部をさらに備える、
請求項３に記載の情報処理装置。
【請求項１１】
前記試験部は、前記第２の端末からアップロードされたテストデータを使用して前記アプリケーションの動作をテストし、前記テストの結果を前記第２の端末に返送する、
請求項１０に記載の情報処理装置。
【請求項１２】
前記試験部は、前記アプリケーションに対する入力データを前記第２の端末から受信して、前記アプリケーションを動作させ、前記アプリケーションの出力データを前記第２の端末に返送する、
請求項１０に記載の情報処理装置。
【請求項１３】
前記第２の端末で選択されたモジュールを最適化する最適化部をさらに備える、
請求項１に記載の情報処理装置。
【請求項１４】
前記最適化部は、前記第２の端末から指定されたプロセッサの構成情報に基づいて、前記モジュールを最適化する、
請求項１３に記載の情報処理装置。
【請求項１５】
前記モジュールはニューラルネットワークモジュールであり、
前記最適化部は、前記第２の端末において設定された前記ニューラルネットワークモジュールのパラメータのモデル圧縮のデータタイプの設定値の組み合わせの指定に基づいて、処理速度、消費電力、又は認識精度のうち少なくとも１つとのトレードオフを前記第２の端末に提示する、
請求項１３に記載の情報処理装置。
【請求項１６】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録ステップと、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索ステップと、
を有する情報処理方法。
【請求項１７】
ユーザが製品の識別情報を入力する入力部と、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示部と、
を具備する情報処理装置。
【請求項１８】
前記入力部に、モジュールの機能さらに入力可能であり、
前記提示部は、前記入力部に入力されたモジュールの機能に類似する機能を有するモジュール候補をさらに提示する、
請求項１７に記載の情報処理装置。
【請求項１９】
ユーザが製品の識別情報を入力する入力ステップと、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示ステップと、
を有する情報処理方法。
【請求項２０】
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、
ユーザのモジュールの購入に関する処理を行う購入装置と、
を具備し、
前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送し、
前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する、
情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書で開示する技術は、アプリケーションの開発に関連する処理を実行する情報処理装置及び情報処理方法、並びに情報処理システムに関する。
【背景技術】
【０００２】
最近、アプリケーションの販売は、オンラインマーケットを通じて行われるのが一般的になってきている。例えば、販売者端末からアプリケーション販売サイトにアプリケーションがアップロードされ、購入者端末はアプリケーション販売サイトから所望のアプリケーションをダウンロードする。また、アプリケーションの販売者は、アプリケーション販売サイトを介して売り上げを受け取ることができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−１１４６５１号公報
【特許文献２】特開２００４−１８５１０３号公報
【特許文献３】特開２００８−２４２６１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本明細書で開示する技術の目的は、アプリケーションの開発に関連する処理を実行する情報処理装置及び情報処理方法、並びに情報処理システムを提供することにある。
【課題を解決するための手段】
【０００５】
本明細書で開示する技術の第１の側面は、
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録部と、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索部と、
を具備する情報処理装置である。【０００６】
第１の側面に係る情報処理装置において、前記登録部は、モジュールの販売者の第１の端末から受信した前記登録情報を前記データベースに登録する。また、前記検索部は、モジュールの購入者の第２の端末に入力された製品の識別情報に基づいて前記データベースの検索を行い、検索結果を前記第２の端末に返送する。また、前記検索部は、前記第２の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を検索して、前記第２の端末に提示する。【０００７】
また、第１の側面に係る情報処理装置は、前記検索部の検索結果に基づいて前記第２の端末で選択された複数のモジュールからアプリケーションをビルドして前記第２の端末に提供する提供部、前記第２の端末で選択された複数のモジュールからビルドしたアプリケーションの動作をテストする試験部、前記第２の端末で選択されたモジュールを最適化する最適化部をさらに備えてもよい。【０００８】
また、本明細書で開示する技術の第２の側面は、
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録ステップと、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索ステップと、
を有する情報処理方法である。【０００９】
また、本明細書で開示する技術の第３の側面は、
ユーザが製品の識別情報を入力する入力部と、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示部と、
を具備する情報処理装置である。【００１０】
第３の側面に係る情報処理装置は、前記入力部に入力された前記製品の識別情報を外部装置に送信し、前記提示部は、前記外部装置が前記製品の識別情報に基づいて検索した、関連するモジュールの機能を有する前記モジュールを提示する。また、前記提示部は、外部装置が検索した、前記第２の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を提示する。【００１１】
また、本明細書で開示する技術の第４の側面は、
ユーザが製品の識別情報を入力する入力ステップと、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示ステップと、
を有する情報処理方法である。【００１２】
また、本明細書で開示する技術の第５の側面は、
モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、
ユーザのモジュールの購入に関する処理を行う購入装置と、
を具備し、
前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送し、
前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する、
情報処理システムである。【００１３】
但し、ここで言う「システム」とは、複数の装置（又は特定の機能を実現する機能モジュール）が論理的に集合した物のことを言い、各装置や機能モジュールが単一の筐体内にあるか否かは特に問わない。
【発明の効果】
【００１４】
本明細書で開示する技術によれば、アプリケーションの開発に関連する処理を実行する情報処理装置及び情報処理方法、並びに情報処理システムを提供することができる。【００１５】
なお、本明細書に記載された効果は、あくまでも例示であり、本発明の効果はこれに限定されるものではない。また、本発明が、上記の効果以外に、さらに付加的な効果を奏する場合もある。【００１６】
本明細書で開示する技術のさらに他の目的、特徴や利点は、後述する実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
【図面の簡単な説明】
【００１７】
【図１】図１は、オンライン取引システム１００の構成例を模式的に示した図である。
【図２】図２は、カメラシステム２００の構成例を示した図である。
【図３】図３は、カメラシステム２００において、カメラ映像から人を検出して追従する処理手順を示したフローチャートである。
【図４】図４は、カメラ映像から人を検出して追従するアプリケーションの開発手順を示した図である。
【図５】図５は、アプリケーション開発の際に、購入者端末１０２とモジュール販売サイト１０３間で実施される処理シーケンス例を示した図である。
【図６】図６は、モジュール登録情報データベース１０４に格納されるモジュールの登録情報の一例を示した図である。
【図７】図７は、物体認識のＳｕｂ−ｃｌａｓｓ候補を例示した図である。
【図８】図８は、物体検出のＴａｒｇｅｔ候補を例示した図である。
【図９】図９は、Ｃｌａｓｓ名「物体認識」に含まれる各Ｓｕｂ−ｃｌａｓｓに関する、入力インターフェース、出力インターフェース、及び対象を示した図である。
【図１０】図１０は、ＲＯＳ（Ｒｏｂｏｔ  Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のモジュールと入出力インターフェースを可視化した例（入出力があるモジュールの例）を示した図である。
【図１１】図１１は、ＲＯＳのモジュールと入出力インターフェースを可視化した例（出力のみ行うモジュールの例）を示した図である。
【図１２】図１２は、ＲＯＳのモジュールと入出力インターフェースを可視化した例（入力のみあるモジュールの例）を示した図である。
【図１３】図１３は、アプリケーション開発において、モジュールを検索する手順を説明するための図である。
【図１４】図１４は、モジュールを検索する手順を説明するための図である。
【図１５】図１５は、モジュールを検索する手順を説明するための図である。
【図１６】図１６は、モジュールを検索する手順を説明するための図である。
【図１７】図１７は、モジュールを検索する手順を説明するための図である。
【図１８】図１８は、モジュール検索を通じてモジュールを追加したモジュール検索画面を例示した図である。
【図１９】図１９は、モジュールを検索する手順を説明するための図である。
【図２０】図２０は、モジュールを検索する手順を説明するための図である。
【図２１】図２１は、モジュールを検索する手順を説明するための図である。
【図２２】図２２は、モジュールを検索する手順を説明するための図である。
【図２３】図２３は、モジュールを検索する手順を説明するための図である。
【図２４】図２４は、オンライン取引システム１００においてモジュールのシミュレーションと動作テストを行う流れ（テストデータを使用する場合）を示した図である。
【図２５】図２５は、オンライン取引システム１００においてモジュールのシミュレーションと動作テストを行う流れ（実機上でモジュールを試す場合）を示した図である。
【図２６】図２６は、オンライン取引システム１００においてモジュールのシミュレーションと動作テストを行う流れ（シミュレーションで試す場合）を示した図である。
【図２７】図２７は、オンライン取引システム１００の拡張例を示した図である。
【発明を実施するための形態】
【００１８】
以下、図面を参照しながら本明細書で開示する技術の実施形態について詳細に説明する。
【００１９】
一般に、アプリケーションは、１又は複数のモジュール（若しくは、アルゴリズム）で構成される。アプリケーションを構成する一部のモジュールについて機能変更が行われることがある。アプリケーションをダウンロード販売した後に、アプリケーション全体をアップデートして機能変更を実現することはできる。
【００２０】
しかしながら、一部のモジュールのみを開発対象として機能を変更し、オンラインマーケットを通じて流通させる仕組みはまだない。また、アプリケーションは用途や販売元などに基づいて容易に検索できるのに対し、モジュールは開発者毎に異なる構成であったり、多様な用語が使用されたりするため、簡単にモジュール検索できないというのが現状である。
【００２１】
例えば、近年では、ＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）技術の急速な普及に伴ってディープラーニング技術が活用される機会が増大してきているが、ディープラーニングの学習済みモデルがモジュールという単位で開発される機会が増え、且つ高い頻度で更新されていく。したがって、このようなモジュールがオンラインマーケット上で取引の対象として扱うことができれば、メリットが大きい。
【００２２】
例えば、プログラム中の特定のモジュールを変更する際、そのモジュールに使用されている変数が他のモジュールにおいても使用されているかを容易に確認できるようにする方法について提案されている（特許文献１を参照のこと）。しかしながら、製品ＩＤを入力して現在搭載されるモジュールに代替するモジュールを検索する方法については開示されていない。
【００２３】
また、プログラムの知識がなくともデータベースからのデータの取り出しが簡単にできるようにする方法について提案されている（特許文献２を参照のこと）。しかしながら、製品ＩＤを入力して現在搭載されるモジュールに代替するモジュールを検索する方法については開示されていない。
【００２４】
また、同様多種に発生する関数を管理し関数名を知らなくても関数を容易に再利用できるようにするプログラム開発支援システムについて提案されている（特許文献３を参照のこと）。しかしながら、製品ＩＤを入力して現在搭載されるモジュールに代替するモジュールを検索する方法については開示されていない。
【００２５】
そこで、本明細書では、アプリケーションの構成要素であるモジュールを、オンラインマーケットなどで取引の対象として好適に扱う技術について、以下で提案する。
【００２６】
Ａ．システム構成
図１には、アプリケーションの構成要素であるモジュール単位でソフトウェアをオンライン取引するオンライン取引システム１００の構成例を模式的に示している。図示のオンライン取引システム１００は、販売者端末１０１と、購入者端末１０２と、モジュール販売サイト１０３と、モジュール登録情報データベース１０４からなる。各装置１０１〜１０４は、例えばインターネットのような広域ネットワーク越しに相互接続されるものとする。
【００２７】
販売者端末１０１は、モジュールの販売者が操作する端末装置（ＰＣ、タブレット端末、スマートフォンなど）である。また、購入者端末１０２は、モジュールの購入者が操作する端末装置（ＰＣ、タブレット端末、スマートフォンなど）である。モジュール販売サイト１０３は、販売者端末１０１と購入者端末１０２の間に介在して、モジュールのオンライン取引を取り仕切る。また、モジュール登録情報データベース１０４は、販売サイト１０３上で取引される各モジュールの登録情報を蓄積する。
【００２８】
ここで言う「モジュール」は、特定のアルゴリズムの入力と出力を規定してデータベースに登録することのできるデータ構造を有することを想定している。
【００２９】
モジュールの販売者は、自分の販売者端末１０１を通じて、インターネット越しにモジュール販売サイト１０３に接続して、モジュールの販売登録を行う。具体的には、モジュールの販売者は、自分の販売者端末１０１を通じて、モジュール販売サイト１０３で販売するモジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報（但し、特定の製品に依存したモジュールの場合）といったモジュールの登録情報を入力する。そして、モジュール販売サイト１０３は、販売者端末１０１を通じて入力されたモジュールの登録情報を、モジュール登録情報データベース１０４に登録する。
【００３０】
また、モジュールの販売者は、モジュール販売サイト１０３に登録したモジュールが、購入者によって購入されたとき（若しくは、購入したモジュールが購入者端末１０２にダウンロードされたとき）、その売り上げをモジュール販売サイト１０３から受け取ることができる。
【００３１】
モジュールの購入者は、自分の購入者端末１０２を通じて、インターネット越しにモジュール販売サイト１０３に接続して、モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報（但し、特定の製品に依存したモジュールの場合）といったモジュールの登録情報に基づいて、モジュール登録情報データベース１０４に登録されているモジュールを検索することができる。そして、モジュールの購入者は、自分の購入者端末１０２を通じて、所望のモジュールの購入手続きを実施し、購入したモジュールを購入者端末１０２にダウンロードする。
【００３２】
モジュールの購入や購入者端末１０２へモジュールをダウンロードする際に、モジュール販売サイト１０３は、購入者若しくはその購入者端末１０２に対して課金処理を実施する。但し、課金処理の詳細については説明を省略する。
【００３３】
モジュールの購入者は、自分の購入者端末１０２にダウンロードした複数のモジュールを組み合わせて、特定用途のアプリケーションを開発することができる。購入者端末１０２のユーザは、モジュールの購入者であるとともに、アプリケーションの開発者でもある。
【００３４】
なお、図１では、図面の簡素化のため、販売者端末１０１及び購入者端末１０２をそれぞれ１台ずつしか描いていないが、１つのモジュール販売サイト１０３を介して複数のモジュール販売者がモジュールの販売登録並びに販売を行うとともに、複数の購入者がモジュールの購入及びダウンロードを行うことが想定される。
【００３５】
ここで、図２に示すような、デジタルカメラ２０１と、デジタルカメラ２０１を搭載してパン及びチルトするパンチルト雲台２０２と、カメラ映像の処理及びパンチルト雲台２０２の駆動制御が可能なシングルボードコンピュータ２０３とを組み合わせたハードウェア構成からなるカメラシステム２００において、カメラ映像から人を検出して追従する、という特定用途のアプリケーションを、図１に示したオンライン取引システム１００を利用して開発する事例について、以下で説明する。
【００３６】
なお、図２に示したハードウェア構成からなるカメラシステム２００において、シングルボードコンピュータ２０３は、例えばＡＲＭプロセッサを搭載した「Ｒａｓｐｂｅｒｒｙ  Ｐｉ（ラズパイ）」であってもよい。また、デジタルカメラ２０１とシングルボードコンピュータ２０３間は例えばＵＳＢ（Ｕｎｉｖｅｒｅｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）で接続され、パンチルト雲台２０２とシングルボードコンピュータ２０３間はＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）で接続されるものとする。
【００３７】
カメラシステム２００において、カメラ映像から人を検出して追従するためには、例えば図３にフローチャートを示すように、デジタルカメラ２０１の映像を取得し（ステップＳ３０１）、映像から人を検出し（ステップＳ３０２）、人を検出した位置に追従する軌道を計算し（ステップＳ３０３）、その軌道通りにパンチルト雲台２０２を駆動させる（ステップＳ３０４）、という処理を実行する必要がある。また、追従が終了するまでは（ステップＳ３０５のＮｏ）、ステップＳ３０１〜Ｓ３０４の処理が繰り返し実行される。
【００３８】
したがって、カメラシステム２００においてカメラ映像から人を検出して追従するためのアプリケーションを開発するには、以下に示す各モジュールが必要であることが分かる。すなわち、
【００３９】
（ａ）デジタルカメラ２０１から映像を取得する処理を実施するモジュール。
（ｂ）映像から人を検出する処理を実施するモジュール。
（ｃ）映像内で人を検出した位置に追従する軌道を計算する処理を実施するモジュール。
（ｄ）所定の軌道通りにパンチルト雲台２０２を駆動させる処理を実施するモジュール。
【００４０】
アプリケーションの開発者は、自分の購入者端末１０２上で、モジュールの登録情報を使ってモジュール登録情報データベース１０４から上記の各モジュール（ａ）〜（ｄ）を検索して、モジュールを組み合わせ、さらに組み合わせたモジュールの動作テストを実施し、そのテスト結果に基づいて、モジュール（ａ）〜（ｄ）を購入して、それらをビルド及びダウンロードして、カメラシステム２００の実機にインストールして、利用可能にする。上記のアプリケーションの開発手順を、図４にまとめておく。
【００４１】
図５には、カメラシステム２００においてカメラ映像から人を検出して追従するためのアプリケーションを開発する際に、購入者端末１０２とモジュール販売サイト１０３間で実施される処理シーケンス例を示している。この処理シーケンスが開始する前に、販売の対象となるモジュールの情報は既にモジュール登録情報データベース１０４に登録済みであるものとする。また、この処理シーケンスでは、「モジュールの検索」、「モジュールのシミュレーションと動作テスト」、「モジュールの最適化とコンパイル」の各フェーズが順に実施される。
【００４２】
アプリケーションの開発者は、自分の購入者端末１０２上で、デジタルカメラ２０１及びパンチルト雲台２０２のデバイスＩＤを入力する（ＳＥＱ５０１）。入力した各デバイスＩＤの情報は、購入者端末１０２からモジュール販売サイト１０３へ転送される（ＳＥＱ５３１）。ここで、デバイスＩＤは、ユーザがキーボードなどの入力装置を用いて購入者端末１０２に入力するようにしてもよい。あるいは、購入者端末１０２が、ＵＳＢやＢｌｕｅｔｏｏｔｈ（登録商標）など有線又は無線通信回線を介して接続したデジタルカメラ２０１及びパンチルト雲台２０２から各デバイスＩＤの情報を自動的に読み出すようにしてもよい。購入者端末１０２と接続されるデバイスの双方が非接触型リーダ・ライタ機能を備える場合には、購入者端末１０２が、非接触型通信を用いてデバイスからＩＤを読み出すようにしてもよい。
【００４３】
モジュール販売サイト１０３側では、購入者端末１０２から受信したデバイスＩＤに基づいて、モジュール登録情報データベース１０４から、デジタルカメラ２０１及びパンチルト雲台２０２を制御するためのモジュールを検索し（ＳＥＱ５５１）、そのモジュール検索結果を購入者端末１０２に返信して（ＳＥＱ５３２）、購入者端末１０２上でアプリケーションの開発者に提示する（例えば、「モジュール検索画面（後述）」に表示する）。
【００４４】
アプリケーションの開発者は、購入者端末１０２上で、デジタルカメラ２０１及びパンチルト雲台２０２を制御するための各モジュールに対して、実現したい機能又はアルゴリズムに応じて必要なモジュールをさらに検索して、モジュールの接続を試みる（ＳＥＱ５０２）。
【００４５】
このとき、購入者端末１０２からモジュール販売サイト１０３へ、モジュールの検索情報及び接続情報が転送される（ＳＥＱ５３３）。モジュール販売サイト１０３側では、購入者端末１０２から受信したモジュールの検索情報及び接続情報に基づいて、モジュール登録情報データベース１０４から、該当するモジュールを検索する（ＳＥＱ５５２）。そして、その結果を購入者端末１０２に返信して（ＳＥＱ５３４）、購入者端末１０２上でアプリケーションの開発者に提示する（例えば、モジュール検索画面に表示する）。ここまでが、モジュールの検索フェーズである。
【００４６】
必要に応じて、モジュールの検索及びモジュール同士を接続する上記の処理シーケンスが複数回繰り返される。検索された複数のモジュールを接続していく結果として、システム１００上でプログラム（カメラ映像から人を検出して追従するためのアプリケーション）が組み上げられる（以下では、「ビルドされる」という）。そして、アプリケーションの開発者は、ビルドされたプログラムの動作テストを、シミュレーションを用いて行う（ＳＥＱ５０３）。
【００４７】
このとき、購入者端末１０２上では、アプリケーションの開発者によりシミュレーション情報の入力並びに設定が行われ、購入者端末１０２からモジュール販売サイト１０３へ、入力・設定されたシミュレーション情報とともに、テストデータがアップロードされる（ＳＥＱ５３５）。
【００４８】
モジュール販売サイト１０３側では、購入者端末１０２からアップロードされたテストデータに基づいて、ビルドされたプログラムのシミュレーションによる動作テストが実行され（ＳＥＱ５５３）、その動作テストの結果を購入者端末１０２に返信して（ＳＥＱ５３６）、購入者端末１０２上でアプリケーションの開発者に提示する（例えば、モジュール検索画面に表示する）。
【００４９】
続いて、カメラシステム２００の実機でも、ビルドされたプログラムの動作テストを実施する（ＳＥＱ５０４）。そして、購入者端末１０２からモジュール販売サイト１０３へ、実機上のテストデータをアップロードする（ＳＥＱ５３７）。
【００５０】
モジュール販売サイト１０３側では、購入者端末１０２からアップロードされた実機のテストデータに基づいて、プログラムが実行され（ＳＥＱ５５４）、そのプログラム実行結果を購入者端末１０２に返信して（ＳＥＱ５３８）、購入者端末１０２上でアプリケーションの開発者に提示する（例えば、モジュール検索画面に表示する）。ここまでが、モジュールのシミュレーションと動作テストのフェーズである。
【００５１】
その後、アプリケーションの開発者は、購入者端末１０２を使って、購入を決めたモジュール毎にモジュール販売サイト１０３に対して決済処理を行って、各モジュールを購入すると、モジュール毎にコンパイルし、アプリケーションとしてビルドしてダウンロードの手続きを行う（ＳＥＱ５０５）。
【００５２】
このとき、購入者端末１０２からモジュール販売サイト１０３へ、決済の入力情報とともに、コンパイル情報（シングルボードコンピュータ２０３のデバイスＩＤなど）と、ダウンロードの指示が送信される（ＳＥＱ５３９）。
【００５３】
モジュール販売サイト１０３側では、購入者端末１０２から受信した決済情報に基づいて決済処理を実行するとともに、コンパイル情報に基づいてモジュールを最適化して、コンパイルし、コンパイルされたモジュールの購入者端末１０２へのダウンロードを実行する（ＳＥＱ５５５）。そして、購入者端末１０２側では、インストーラがコンパイル結果をカメラシステム２００の実機にインストールする（ＳＥＱ５４０）。ここまでが、モジュールのコンパイル及び最適化フェーズである。
【００５４】
図６には、モジュール登録情報データベース１０４に格納されるモジュールの登録情報の一例を示している。同図では、カメラの映像から人を検出するモジュール「人検出ａｌｇｏ−Ｃ」に関する登録情報を例示している。
【００５５】
人検出ａｌｇｏ−Ｃモジュールの入力はｃａｍｅｒａ／ｉｍａｇｅインターフェースで表現され、カメラからの画像を入力することを表す。例えば、ＲＧＢの各色信号が８ビットの階調で表される画像を入力する場合、ｃａｍｅｒａ／ｉｍａｇｅのＲＯＳインターフェース定義は以下の通りである。
【００５６】
−  ｃａｍｅｒａ／ｉｍａｇｅ
−  ｉｎｔ８  ｒ
−  ｉｎｔ８  ｇ
−  ｉｎｔ８  ｂ
【００５７】
また、人検出ａｌｇｏ−Ｃモジュールの出力はｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースで表現され、カメラから入力される撮影画像から人を検出してその位置を出力することを表す。図６は、かかるモジュールの登録情報を、ロボットアプリケーション作成を支援するライブラリとツールを提供するＲＯＳの記法に従って表現して可視化したものである。モジュール販売登録では、モジュールの販売者が、自分の販売者端末１０１から図６に示されるモジュールの登録情報を入力して、モジュール登録情報データベース１０４に登録する。
【００５８】
図示のモジュール登録情報のうち、Ｎａｍｅはモジュールの名前を示し、Ｄｅｓｃｒｉｐｔｉｏｎはモジュールの概要を示し、Ｉｎはモジュールの入力変数名を示し、Ｏｕｔはモジュールの出力変数名を示し、Ｃｌａｓｓはアルゴリズムの一般名を示し、Ｓｕｂ−ｃｌａｓｓはアルゴリズムの目的・用途を示し（これが一般名として登録されることを許容してもよい）、Ｔａｒｇｅｔはアルゴリズムが何を対象とするのかを示し（アルゴリズムによってはＴａｒｇｅｔがない場合もある）、ＤｅｖｉｃｅＩＤはアルゴリズムが特定のデバイス・製品に依存しているかどうか（若しくは、アルゴリズムに対応しているデバイス・製品の識別情報）を示し、Ｐｒｉｃｅはアルゴリズムの販売価格を示す。なお、ＣｌａｓｓとＳｕｂ−ｃｌａｓｓ、さらにはＴａｒｇｅｔを併せて（若しくは、いずれか１つだけで）、アルゴリズムの機能を表現しているということもできる。
【００５９】
Ｆｉｌｅｓには、モジュールの実体が登録される。その形態はオブジェクトコード、ソースコード、ニューラルネットワークであれば、ネットワークの構成ファイル、学習済みの重みパラメータなどが登録される。なお、ディープラーニングの学習済みモデルが、モジュール単位で開発される機会が増え、且つ高い頻度で更新されていくことが想定される。
【００６０】
続いて、Ｃｌａｓｓ、Ｓｕｂ−Ｃｌａｓｓ、及びＴａｒｇｅｔの各項目について、それぞれ例を挙げて説明する。
【００６１】
ここで、アルゴリズムの一般名（Ｃｌａｓｓ）は、物体認識として登録する。物体認識のアルゴリズムは、“物体認識のｓｕｂ−ｃｌａｓｓ候補”に示される通り、いくつか種類が存在し、それのうちどれかを示すのがＳｕｂ−Ｃｌａｓｓである。図６に示す例では、Ｓｕｂ−ｃｌａｓｓが１つであるが、複数のＳｕｂ−ｃｌａｓｓに該当するアルゴリズムや、さらにＳｕｂ−ｃｌａｓｓの階層が深いアルゴリズムがあることも想定される。前者の場合、例えばＳｕｂ−ｃｌａｓｓセル内に複数の要素を持つことがある。また、後者の場合には、Ｓｕｂ−ｃｌａｓｓ−１、Ｓｕｂ−ｃｌａｓｓ−２など、登録情報に新しいカラムを追加してもよい。物体認識のＳｕｂ−ｃｌａｓｓ候補を図７に例示しておく。
【００６２】
物体検出をここで選択した場合、何を検出するのか定義する必要がある。その候補が、“物体検出のＴａｒｇｅｔ候補”に示される。複数のＴａｒｇｅｔが示される場合もあり、その場合にはＴａｒｇｅｔセル内に複数の要素を含むこともある。物体検出のＴａｒｇｅｔ候補を図８に例示しておく。
【００６３】
ＤｅｖｉｃｅＩＤで示すデバイス・製品として、カメラ、モーター、センサーといった機器を想定している。
【００６４】
なお、アルゴリズムの一般名であるＣｌａｓｓとして「物体認識」を指定した場合、そのＳｕｂ−ｃｌａｓｓ候補には、図７にも示したように、アルゴリズムの目的・用途に応じて、「照合」、「画像分類」、「物体検出」、「シーンの理解」、「特定物体認識」、…などが挙げられる。Ｓｕｂ−ｃｌａｓｓ毎、すなわちアルゴリズムの目的・用途に応じて、入力変数、出力変数、及び対象（ｔａｒｇｅｔ）が異なる。
【００６５】
図９には、Ｃｌａｓｓ名「物体認識」に含まれる各Ｓｕｂ−ｃｌａｓｓ「照合」、「画像分類」、「物体検出」、「シーンの理解」、「特定物体認識」に関する、入力変数、出力変数、及び対象をそれぞれ示している。
【００６６】
Ｓｕｂ−ｃｌａｓｓ「照合」のモジュールは、画像を入力とし、入力画像中のＲＯＩ（Ｒｅｇｉｏｎ  Ｏｆ  Ｉｎｔｅｒｅｓｔ）をｔａｒｇｅｔとして指定すると、入力画像中のＲＯＩの物体名を出力する。また、Ｓｕｂ−ｃｌａｓｓ「画像分類」のモジュールは、画像を入力とし、入力画像に含まれる物体の物体名を出力する。また、Ｓｕｂ−ｃｌａｓｓ「物体検出」のモジュールは、画像を入力とし、ｔａｒｇｅｔとして物体名を指定すると、入力画像中で指定した物体名の物体を検出して、その検出位置を出力する。モジュール「人検出ａｌｇｏ−Ｃ」は、Ｓｕｂ−ｃｌａｓｓ「物体検出」のモジュールであるが、図６に示した登録情報に記載されている通り、カメラ画像を入力とし、人をｔａｒｇｅｔに指定して、カメラ入力画像中から検出した人の位置を出力する。また、Ｓｕｂ−ｃｌａｓｓ「シーンの理解」のモジュールは、画像を入力とし、入力画像から理解したシーンを出力する。また、Ｓｕｂ−ｃｌａｓｓ「特定物体認識」のモジュールは、画像を入力とし、辞書を適宜参照して、入力画像に含まれる物体の物体名を出力する。
【００６７】
Ｂ．モジュールの検索
続いて、アプリケーション開発のうち、モジュールの検索について説明する。但し、必要に応じて、適宜、ＲＯＳの記法を用いて説明することにする。
【００６８】
図１０〜図１２には、ＲＯＳのモジュールと入出力インターフェースを可視化した例をそれぞれ示している。
【００６９】
図１０には、入出力があるＲＯＳモジュールの例として、人検出ａｌｇｏ−Ｃモジュール及びその入出力インターフェースを示している。
【００７０】
人検出ａｌｇｏ−Ｃモジュールの入力は、ｃａｍｅｒａ／ｉｍａｇｅインターフェースで表現され、カメラからの画像を入力することを表す。また、人検出ａｌｇｏ−Ｃモジュールの出力は、ｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースで表現され、カメラの画像から人を検出してその位置を出力することを表す。なお、人検出ａｌｇｏ−Ｃモジュールの登録情報は、図６に示した通りであり、Ｃｌａｓｓが「物体認識」、Ｓｕｂ−ｃｌａｓｓが「物体検出」であり、且つ、入力がｃａｍｅｒａ／ｉｍａｇｅインターフェースで表現され、出力がｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースで表現されることが記載されている。入出力があるデバイス（データを入力して、その処理結果を出力するデバイス）を扱うモジュールは、このタイプに当たる。
【００７１】
また、図１１には、出力のみを行うＲＯＳモジュールの例として、ｘｘｘ＿ｃａｍｅｒａモジュール及びその出力インターフェースを示している。図示のように、ｘｘｘ＿ｃａｍｅｒａモジュールは、カメラで撮像した情報をｃａｍｅｒａ／ｉｍａｇｅとして出力するモジュールである。センサーデバイスなどの出力のみを行う入力デバイスを扱うモジュールはこのタイプに当たる。
【００７２】
また、図１２には、入力のみを行うＲＯＳモジュールの例として、ｘｘｘ＿ｍｏｔｏｒモジュール（但し、ｐａｎ方向のみ回転）及びその入力インターフェースを示している。図示のように、ｘｘｘ＿ｍｏｔｏｒモジュールは、入力されたｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎの通り、モーターを制御してｐａｎ方向に駆動させるモジュールである。モーターやディスプレイなどの入力だけ受け付けるデバイスを扱うモジュールはこのタイプに当たる。
【００７３】
ここで、カメラ画像から人を検出して追従するシステム（アプリケーション）を開発する場合を例にとって、モジュールを検索する具体的な手順について、図１３〜図２２を参照しながら説明する。
【００７４】
まず、アプリケーションの開発を行う購入者が、モジュール検索画面上で、対象デバイスとしてカメラ２０１とパンチルト雲台２０２を指定すると、製品を特定する情報（すなわち、製品の識別情報）がモジュール販売サイト１０３に入力され、対応するモジュールが選定される。モジュール販売サイト１０３は、選定されたモジュールの登録情報を、モジュール登録情報データベース１０４から適宜読み出すことができる。
【００７５】
製品を特定する情報の入力、すなわちデバイスの指定には、製品を特定できる情報がなんらかの形で、購入者端末１０２に入力されればよい。例えば、対象とする製品を購入者端末１０２に接続したことによるＩＤ読み出し、購入者端末１０２のモジュール検索画面上でのＩＤ入力、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）などによる非接触のＩＤ入力でもよい。あるいは、デジタルカメラ２０１やパンチルト雲台２０２などデバイス一般名又はカテゴリなどの検索キーワードを購入者が自分の購入者端末１０２に入力して、デバイスを選定するようにしてもよい。
【００７６】
図１３に示す例では、デジタルカメラ２０１及びパンチルト雲台２０２をそれぞれ特定する識別情報が購入者すなわちアプリケーションの開発者によって入力されると、購入者端末１０２のモジュール検索画面には、識別情報に基づいて特定されるデジタルカメラ２０１及びパンチルト雲台２０２の各アイコンが表示される。さらに、モジュール販売サイト１０３では、モジュール登録情報データベース１０４を検索して、デジタルカメラ２０１及びパンチルト雲台２０２の各々に対応するモジュールｘｘｘ＿ｃａｍｅｒａと、ｘｘｘ＿ｍｏｔｏｒ（ｐａｎ）及びｘｘｘ＿ｍｏｔｏｒ（ｔｉｌｔ）が画面に出力される。さらに、モジュールｘｘｘ＿ｃａｍｅｒａの出力インターフェース（ｃａｍｅｒａ／ｉｍａｇｅ＜ｉｎｔｅｒｆａｃｅ＞）、及び、ｘｘｘ＿ｍｏｔｏｒ（ｐａｎ）及びｘｘｘ＿ｍｏｔｏｒ（ｔｉｌｔ）それぞれの入力のインターフェース（ｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎ＜ｉｎｔｅｒｆａｃｅ＞）が画面に出力される。
【００７７】
このようにして、デバイスとデバイスの接点となるモジュールが決定された後、さらにモジュールを検索する手順について、図１４〜図１７を参照しながら説明する。
【００７８】
購入者は、購入者端末１０２のモジュール検索画面上で、図１４中の参照番号１４０１で示す、ｃａｍｅｒａ／ｉｍａｇｅインターフェースの出力端をクリックする。モジュール販売サイト１０３は、このクリック操作が購入者端末１０２から通知されると、ｃａｍｅｒａ／ｉｍａｇｅインターフェースに接続できるモジュール（若しくは、入力がｃａｍｅｒａ／ｉｍａｇｅインターフェースで表現されるモジュール）を、モジュール登録情報データベース１０４から検索する。既に検索されたｘｘｘ＿ｃａｍｅｒａモジュールの出力変数と共通の入力変数を持つモジュールを、モジュール登録情報データベース１０４から検索するということもできる。そして、そのデータベース検索結果が、参照番号１４０２で示すように、購入者端末１０２のモジュール検索画面に表示される。
【００７９】
その際、購入者は、参照番号１４０３で示すＳｅａｒｃｈＢｏｘ内に、今回のアプリケーション開発の目的（若しくは、Ｃｌａｓｓ名）を「物体認識」と入力する。
【００８０】
モジュール販売サイト１０３は、購入者によって入力された目的「物体認識」が購入者端末１０２から通知されると、ｃａｍｅｒａ／ｉｍａｇｅインターフェースに接続できるモジュール（若しくは、出力がｃａｍｅｒａ／ｉｍａｇｅインターフェースで表現されるモジュール）のうち、Ｃｌａｓｓ「物体認識」にヒットするＳｕｂ−ｃｌａｓｓ（若しくは、用途）を、モジュール登録情報データベース１０４から検索する。その際、類似度判定も行い、近いものも検索する。
【００８１】
なお、購入者が指定したＣｌａｓｓにヒットする候補が多い場合には、モジュール販売サイト１０３は、購入者端末１０２を通じて、細分化するための購入者への問いかけを行う。図１５に示す例では、モジュール販売サイト１０３は、「物体認識の用途は何か？」という、テキスト又は音声のメッセージによる問いかけとともに、参照番号１４０４で示すように、用途リストとして物体認識のｓｕｂ−ｃｌａｓｓ一覧を表示する。購入者は、物体認識のｓｕｂ−ｃｌａｓｓ一覧１４０４から、１つあるいは複数のｓｕｂ−ｃｌａｓｓを選択することができる。図１５に示す例では、購入者は、ｓｕｂ−ｃｌａｓｓ一覧１４０４から、「物体検出」を選択する。
【００８２】
モジュール販売サイト１０３は、購入者がｓｕｂ−ｃｌａｓｓ「物体検出」を選択したことが購入者端末１０２から通知されると、ｃａｍｅｒａ／ｉｍａｇｅインターフェースに接続できるモジュール（若しくは、入力がｃａｍｅｒａ／ｉｍａｇｅインターフェースで表現されるモジュール）のうち、「物体認識」がＣｌａｓｓにあり、且つ、「物体検出」がｓｕｂ−ｃｌａｓｓにあるものをモジュール登録情報データベース１０４から検索する。そして、そのデータベース検索結果が、購入者端末１０２のモジュール検索画面に表示される。
【００８３】
購入者が指定したＣｌａｓｓ及びｓｕｂ−ｃｌａｓｓにヒットする候補が依然として多い場合には、図１６に示すように、モジュール販売サイト１０３は、「物体検出」の対象となるものを絞り込むために、「何を検出したいか？」というテキスト又は音声メッセージによる問いかけとともに、参照番号１４０５で示すように、検出対象（Ｔａｒｇｅｔ）一覧を表示する。購入者は、検出対象（Ｔａｒｇｅｔ）一覧１４０５から、１つあるいは複数の検出対象を選択することができる。図１６に示す例では、購入者は、検出対象（Ｔａｒｇｅｔ）一覧１４０５から、「人」を選択する。
【００８４】
モジュール販売サイト１０３は、ｃａｍｅｒａ／ｉｍａｇｅインターフェースに接続できるモジュール（若しくは、入力がｃａｍｅｒａ／ｉｍａｇｅインターフェースで表現されるモジュール）のうち、「物体認識」がＣｌａｓｓにあり、且つ、「物体検出」がｓｕｂ−ｃｌａｓｓにあり、且つ、Ｔａｒｇｅｔに「人」があるものをモジュール登録情報データベース１０４から検索する。そして、図１７中の参照番号１４０６で示すように、モジュール登録情報データベース１０４を検索してヒットしたモジュールの一覧が、購入者端末１０２のモジュール検索画面に表示される。購入者は、モジュール一覧１４０６から、１つあるいは複数のモジュールを選択することができる。図１７に示す例では、購入者は、モジュール一覧１４０６から、「（人検出）ａｌｇｏ−Ｃ」モジュールを選択する。
【００８５】
購入者が指定したＣｌａｓｓ及びｓｕｂ−ｃｌａｓｓ及びＴａｒｇｅｒにヒットする依然として候補が多い場合には、ユーザレビュー評価や、認識の精度、性能などの評価結果、システム要求仕様といった情報がモジュール登録情報データベース１０４にある場合には、モジュール販売サイト１０３においてそういった情報に基づいて多数の候補モジュールをフィルタリングして選択するようにしてもよい。
【００８６】
なお、モジュール登録情報データベース１０４の検索によりヒットしたモジュールの候補数が多いかどうかを判断するために、システム１００で一律の閾値を設定してもよいし、購入者（若しくは、アプリケーションの開発者）毎に個別の閾値を設定してもよい。あるいは、モジュール候補一覧を購入者端末１０２のモジュール検索画面に表示した上で、購入者自身で候補数が多いかどうかを毎回判断して、絞込みのトリガーをかけるようにしてもよい。
【００８７】
また、図１４〜図１７で示した各検索は、類似度検索を含む。そして、検索結果の一覧では、類似度が高いものが上に表示され、類似度が低いものが下に表示される。また、類似度の検索範囲はスライド式のパラメータ調整インターフェースなどで行う。
【００８８】
図１４〜図１７で示したモジュール検索画面を介したモジュール登録情報データベース１０４の検索を通じて、購入者は、「（人検出）ａｌｇｏ−Ｃ」モジュールを選択することができる。そして、図１８において参照番号１８０１で示すように、購入者端末１０２のモジュール検索画面上には、選択された「（人検出）ａｌｇｏ−Ｃ」モジュールが追加され、ｃａｍｅｒａ／ｉｍａｇｅインターフェースを介して「ｘｘｘ＿ｃａｍｅｒａ」モジュールと接続される。さらに、図６に示した「人検出ａｌｇｏ−Ｃ」モジュールの登録情報に基づいて、図１８中の参照番号１８０２で示すように、「人検出ａｌｇｏ−Ｃ」モジュールの出力側にはｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースが表示される。
【００８９】
なお、人検出ａｌｇｏ−Ｃモジュールの実体がニューラルネットワークであれば、そのネットワークの構成ファイルや学習済みの重みパラメータといったモジュールの実体を構成する１又は複数のファイルの情報が、モジュールの登録情報のＦｉｌｅｓ（図６を参照のこと）に登録される。ディープラーニングの学習済みモデルが、「人検出ａｌｇｏ−Ｃ」のようなモジュール単位で開発される機会が増え、且つ高い頻度で更新されていくことが想定される。
【００９０】
図１３〜図１８から分かるように、アプリケーションの開発者が、モジュール検索画面上のＧＵＩ操作によって、所望のモジュールを検索し、選択することができ、且つ、モジュール検索画面上では、モジュールの接続と、接続されたモジュール間でのデータフローが可視化される、という点を十分理解されたい。
【００９１】
続いて、購入者は、購入者端末１０２のモジュール検索画面上で、図１９中の参照番号１９０１で示す、ｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースの出力端をクリックする。モジュール販売サイト１０３は、このクリック操作が購入者端末１０２から通知されると、ｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースに接続できるモジュール（若しくは、入力がｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースで表現されるモジュール）を、モジュール登録情報データベース１０４から検索する。その際、購入者は、参照番号１９０３で示すＳｅａｒｃｈＢｏｘ内に、検索対象となるモジュールのＣｌａｓｓ名を「２次元  追従」と入力する。すると、モジュール販売サイト１０３では、ｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースに接続可能で、且つ、Ｃｌａｓｓ「２次元  追従」のモジュールを、モジュール登録情報データベース１０４から検索する。そして、図１９中の参照番号１９０２で示すように、モジュール登録情報データベース１０４を検索してヒットしたモジュールの一覧が、購入者端末１０２のモジュール検索画面に表示される。購入者は、モジュール一覧１９０２から、１つあるいは複数のモジュールを選択することができる。図１９に示す例では、購入者は、モジュール一覧１９０２から、「追従モジュールＢ」を選択する。
【００９２】
なお、購入者が指定したＣｌａｓｓ及びｓｕｂ−ｃｌａｓｓ及びＴａｒｇｅｒにヒットする依然として候補が多い場合には、ユーザレビュー評価や、認識の精度、性能などの評価結果、システム要求仕様といった情報がモジュール登録情報データベース１０４にある場合には、モジュール販売サイト１０３においてそういった情報に基づいて多数の候補モジュールをフィルタリングして選択するようにしてもよい（同上）。
【００９３】
図１８及び図１９で示したモジュール検索画面を介したモジュール登録情報データベース１０４の検索を通じて、購入者は、「追従モジュールＢ」を選択することができる。そして、図２０において参照番号２００１で示すように、購入者端末１０２のモジュール検索画面上には、選択された「追従モジュールＢ」が追加され、ｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースを介して「人検出ａｌｇｏ−Ｃ」モジュールと接続される。さらに、図２０中の参照番号２００２及び２００３で示すように、「追従モジュールＢ」の出力側には、ｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェースが表示される。
【００９４】
その後、図２１に示すように、ｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎ「追従モジュールＢ」の一方の出力側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２００２は、ｘｘｘ＿ｍｏｔｏｒモジュール（但し、ｐａｎ方向のみ回転）の入力側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２１０１との間で、前後の入出力の状態が確認される。同様に、ｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎ「追従モジュールＢ」の他方の出力側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２００３は、ｘｘｘ＿ｍｏｔｏｒモジュール（但し、ｔｉｌｔ方向のみ回転）の入力側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２１０２との間で、前後の入出力の状態が確認される。そして、同じｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェースを、前後の入出力状態が矛盾し内容に接続すると、図２２に示すように統合される。
【００９５】
図２２は、モジュール検索画面上で、開発したアプリケーションを可視化したものということもできる。図示のアプリケーションは、カメラシステム２００においてカメラ映像から人を検出して追従するという用途を持つ。ここで、ｘｘｘ＿ｃａｍｅｒａはデジタルカメラ２０１から映像を取得する処理を実施するモジュールであり、人検出ａｌｇｏ−Ｃは映像から人を検出する処理を実施するモジュールであり、追従モジュールＢは映像内で人を検出した位置に追従する軌道を計算する処理を実施するモジュールであり、ｘｘｘ＿ｍｏｔｏｒ（ｐａｎ）及びｘｘｘ＿ｍｏｔｏｒ（ｔｉｌｔ）は所定の軌道通りにパンチルト雲台２０２を駆動させる処理を実施するモジュールである。したがって、図３に示したフローチャートから必要であると導き出された複数のモジュールがモジュール検索画面を通じて検索され、これらを組み合わせてアプリケーションを開発することができたことが分かる。
【００９６】
なお、図２０並びに図２１に示したように、モジュール同士を接続する際に、一方のモジュールの出力インターフェースと、他方のモジュールの入力インターフェースの統合時に、同じ名前のインターフェース「ｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎ」があると、どちらがｐａｎ又はｔｉｌｔのいずれのデータか分からなくなるという問題がある。このような問題に備えて、モジュール登録情報データベース１０４には、インターフェースのａｌｉａｓ（別名）情報を追加して登録できるようにしてもよい。
【００９７】
図２３に示す例では、追従モジュールＢの一方の出力側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２００２に、参照番号２３０１で示すように、ａｌｉａｓ情報「ｐａｎ」を追加登録している。同様に、他方の出力側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２００３に、参照番号２３０２で示すように、ａｌｉａｓ情報「ｔｉｌｔ」を追加登録している。このような場合、一方のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２００２のデータがｐａｎであり、ｘｘｘ＿ｍｏｔｏｒ（ｐａｎ）側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２１０１と統合すべきこと、及び、他方のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２００３のデータがｔｉｌｔであり、ｘｘｘ＿ｍｏｔｏｒ（ｔｉｌｔ）側のｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェース２１０２と統合すべきことが明確となる。
【００９８】
Ｃ．モジュールのシミュレーションと動作テスト
本実施形態に係るオンライン取引システム１００では、購入者は、自分の購入者端末１０２から、モジュール販売サイト１０３を通じてモジュール検索して、複数のモジュールを組み合わせていくことで、アプリケーションの開発を実現することができる。
【００９９】
ここで、モジュールのオンライン取引の処理シーケンスにおいて、モジュールのシミュレーションと動作テストを行う目的は、モジュールの検索により任意に組んだモジュールの集合（プログラムに相当）が、ユーザ（若しくは、モジュールの購入者、アプリケーションの開発者）の期待する通りに動作するかを、モジュールの購入前に確認することにある。
【０１００】
モジュールのシミュレーションと動作テストには、テストデータを使用するパターンと、テストデータを使用しないパターンの２パターンに大別される。
【０１０１】
Ｃ−１．テストデータを使用するパターン
テストデータを使用するパターンでは、購入者端末１０２からモジュール販売サイト１０３へ、モジュールのシミュレーションと動作テストに使用するテストデータをアップロードする。
【０１０２】
モジュール販売サイト１０３では、アップロードされたテストパターンを実行して、その結果を購入者端末１０２に返送する。購入者端末１０２では、受信した実行結果を可視化する。
【０１０３】
図２４には、カメラ映像から人を検出して追従するアプリケーションを試す場合のデータの流れを示している。購入者端末１０２からモジュール販売サイト１０３へ、ｃａｍｅｒａ／ｉｍａｇｅインターフェースを介して人検出ａｌｇｏ−Ｃモジュールに入力されるテストデータがアップロードされる。モジュール販売サイト１０３側では、アップロードされたテストデータを人検出ａｌｇｏ−Ｃモジュールと追従モジュールＢを組み合わせたアプリケーションを実行するシミュレータに投入する。そして、モジュール販売サイト１０３は、シミュレーション結果を購入者端末１０２に返送する。購入者端末１０２では、受信した実行結果を可視化する。
【０１０４】
モジュールの購入者、又はアプリケーションの開発者は、可視化されたシミュレーションと動作テストの実行結果に基づいて、モジュール検索画面上で組んだモジュールの集合、すなわち開発したプログラムが正常に動作するかどうかを確認することができる。
【０１０５】
購入者は、プログラムが正常に動作することを確認できれば、自分の購入者端末１０２上で、モジュールの集合の購入手続きに進めばよい。また、購入者は、プログラムの動作が異常であったこと、又は、正常に動作するがさらに改良したい場合には、改めてモジュール検索画面上でモジュールの検索作業を繰り返し実施するようにしてもよい。
【０１０６】
Ｃ−２．テストデータを使用しないパターン
一方、テストデータを使用しないパターンとして、実機上でモジュールを試す方法と、シミュレーションでモジュールを試す方法を挙げることができる。
【０１０７】
Ｃ−２−１．実機上でモジュールを試す方法
上述した、カメラ映像から人を検出して追従するアプリケーションを試す場合を例にとって、この方法について図２５を参照しながら説明する。
【０１０８】
購入者端末１０２に、デジタルカメラ２０１及びパンチルト雲台２０２を接続する。また、デジタルカメラ２０１をパンチルト雲台２０２に取り付けておく。そして、デジタルカメラ２０１で撮影される映像を、購入者端末１０２からモジュール販売サイト１０３へ、リアルタイムに転送する。
【０１０９】
モジュール販売サイト１０３側では、テストの対象となるアプリケーションを動作させている。そして、人検出ａｌｇｏ−Ｃモジュールは、受信したリアルタイム映像をｃａｍｅｒａ／ｉｍａｇｅインターフェースを介して入力して、その映像から人を検出して、その検出位置をｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースから出力する。続いて、追跡モジュールＢは、ｔａｒｇｅｔ＿ｐｏｓｉｔｉｏｎインターフェースから人の検出位置のデータを入力すると、人の動きに追従するようにパンチルト雲台２０２をｐａｎ方向並びにｔｉｌｔ方向にそれぞれ駆動させる各制御データを算出して、ｒｏｔａｔｅ＿ｍｏｔｏｒ／ｃｍｄ／ｒａｄｉａｎインターフェースから出力する、そして、パンチルト雲台２０２をｐａｎ方向並びにｔｉｌｔ方向に駆動させるための制御データを購入者端末１０２に時々刻々と送信する。
【０１１０】
購入者端末１０２は、モジュール販売サイト１０３から受信した制御データに基づいて、パンチルト雲台２０２をｐａｎ方向並びにｔｉｌｔ方向にそれぞれ駆動する。購入者は、デジタルカメラ２０１の映像が人を追従するように、パンチルト雲台２０２が駆動してデジタルカメラ２０１の向きを変えているかどうか、すなわち自ら開発したアプリケーションが正常に動作しているかどうかを、目視などにより確認することができる。
【０１１１】
購入者は、アプリケーションが正常に動作することを確認できれば、自分の購入者端末１０２上で、モジュールの集合の購入手続きに進めばよい。また、購入者は、プログラムの動作が異常であったこと、又は、正常に動作するがさらに改良したい場合には、改めてモジュール検索画面上でモジュールの検索作業を繰り返し実施するようにしてもよい。
【０１１２】
Ｃ−２−２．シミュレーションでモジュールを試す方法
仮想雲台に取り付けられたか仮想カメラの映像から赤いキューブを追跡するシミュレータ（仮想機械）を用いて、アプリケーションを試す場合を例にとって、この方法について図２６を参照しながら説明する。
【０１１３】
購入者端末１０２上で、仮想カメラ２６０１及び仮想雲台２６０２を動作させるシミュレータを実行させる。そして、購入者は、シミュレータ画面上で、例えばマウスの操作により、（仮想的な人として）画面内の赤いキューブ２６０３を動かす。購入者端末１０２は、仮想カメラ２６０１で撮影した仮想映像を、モジュール販売サイト１０３へ、リアルタイムに転送する。
【０１１４】
モジュール販売サイト１０３側では、テストの対象となるアプリケーションを動作させており、受信した仮想映像から赤いキューブを検出し、その赤いキューブの動きに追従するように仮想雲台を駆動させる制御データを算出して、このデータを購入者端末１０２に時々刻々と送信する。
【０１１５】
購入者端末１０２で実行するシミュレータは、モジュール販売サイト１０３から受信した制御データに基づいて、仮想雲台２６０２を駆動する。購入者は、仮想カメラ２６０１の映像が赤いキューブ２６０３を追従するように、仮想雲台２６０２が駆動して仮想カメラ２６０１の向きを変えているかどうか、すなわち自ら開発したアプリケーションが正常に動作しているかどうかを、シミュレーション画面により確認することができる。
【０１１６】
購入者は、アプリケーションが正常に動作することを確認できれば、自分の購入者端末１０２上で、モジュールの集合の購入手続きに進めばよい。また、購入者は、プログラムの動作が異常であったこと、又は、正常に動作するがさらに改良したい場合には、改めてモジュール検索画面上でモジュールの検索作業を繰り返し実施するようにしてもよい。
【０１１７】
Ｄ．モジュールの最適化とコンパイル
通常、モジュール販売サイト１０３は、複数のモジュールを組み合わせたプログラムをビルドして、購入者端末１０２に配布する。
【０１１８】
一方、ニューラルネットワークをモジュール単位で配布する場合には、最適化とコンパイルが必要になる。例えば、人検出アルゴリズムからなる人検出ａｌｇｏ−Ｃモジュールの実体がニューラルネットワークであることが想定される（前述）。モジュールの最適化とコンパイルを行うアルゴリズムとして、例えば以下の２つを挙げることができる。
【０１１９】
（ａ）ユースケースに応じて処理で使用されるパラメータをモデル圧縮することで、モジュールを高速且つ省電力で動作できるように最適化する。
【０１２０】
（ｂ）配布先のプロセッサ（例えば、シングルボードコンピュータ２０３に搭載されたプロセッサ）に適合したプログラム構成に最適化する。ニューラルネットワークを実行するためのハードウェアエンジンを搭載したプロセッサが多種多様に登場しているという状況があるためである。
【０１２１】
モジュール販売サイト１０３は、上記の（ａ）及び（ｂ）を設定又は調整するためのインターフェースを、購入者端末１０２に提供するようにしてもよい。購入者は、モジュールの購入手続きを行う際に、モジュール販売サイト１０３から提供されるインターフェースを通じて、そのモジュールの最適化とコンパイルを設定又は調整することができる。
【０１２２】
具体的には、購入者は、開発したアプリケーションを実行するプロセッサを搭載したボード（例えば、シングルボードコンピュータ２０３）を、ＵＳＢなどの接続用インターフェースを介して購入者端末１０２に接続することを通じて、モジュール販売サイト１０３に対してプロセッサを設定することができる。あるいは、購入者端末１０２の画面に表示されたプルダウン方式のメニューを通じて、プロセッサを指定するようにしてもよい。
【０１２３】
また、購入者は、購入者が指定したプロセッサの構成と、パラメータのモデル圧縮のデータタイプの設定（例えば、スライド式で、３２ビット、１６ビット、８ビット、４ビット、２ビット、１ビットを調整する。但し、調整する対象は単純にビット数には限定されない）の組み合わせの指定に基づいて、処理速度、消費電力、又は認識精度のうち少なくとも１つとのトレードオフを購入者に提示する。そして、購入者の指定又は自動的に選択された、購入者自身のユースケースにおいて最適なプロセッサの構成情報とモデル圧縮のデータタイプの設定値を用いてモジュールを最適化するようにコンパイル情報を決定することができる。なお、モデル圧縮は、ニューラルネットワークにおいては、ＳＶＤ（Ｓｉｎｇｕｌａｒ  Ｖａｌｕｅ  Ｄｅｃｏｍｐｏｓｉｔｉｏｎ）、ネットワークワーク枝刈り（Ｐｒｕｎｉｎｇ）、量子化（Ｑｕａｎｔｉｚａｔｉｏｎ）、ハフマンエンコーディング（Ｈｕｆｆｍａｎ  Ｅｎｃｏｄｉｎｇ）、ディープ圧縮（Ｄｅｅｐ  Ｃｏｍｐｒｅｓｓｉｏｎ）などの手法が使われる。
【０１２４】
Ｅ．システムの拡張
図１にはオンライン取引システム１００の構成例を模式的に示したが、図２７には、上記のＢ〜Ｄ項で説明した機能を実現するための、システムの拡張構成を示している。
【０１２５】
図２７では、モジュール販売サイト１０３は、基本機能部２７０１と、モジュール試験装置２７０２と、モジュール最適化装置２７０３を備えている。基本機能部２７０１と、モジュール試験装置２７０２と、モジュール最適化装置２７０３は、それぞれ物理的に独立した複数の装置であってもよいし、いずれか少なくとも２つを組み合わせて１つの装置として構成することもできる。
【０１２６】
基本機能部２７０１は、モジュールの販売登録、モジュールの検索、及びモジュールの購入に関する処理を実行する機能を有する。
【０１２７】
モジュールの販売者は、自分の販売者端末１０１を通じて、モジュール販売サイト１０３で販売するモジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報（但し、特定の製品に依存したモジュールの場合）といったモジュールの登録情報を入力する。そして、モジュール販売サイト１０３内では、基本機能部２７０１は、販売者端末１０１を通じて入力されたモジュールの登録情報を、モジュール登録情報データベース１０４に登録する。また、モジュール販売サイト１０３に登録したモジュールが、購入者によって購入されたとき（若しくは、購入したモジュールが購入者端末１０２にダウンロードされたとき）、基本機能部２７０１は、その売り上げを販売者端末１０１に送金する。
【０１２８】
モジュールの購入者は、アプリケーションの開発過程において、必要とするモジュールの入力変数、出力変数、モジュールの機能、モジュールの効果、製品の識別情報（但し、特定の製品に依存したモジュールの場合）などのモジュール検索のための情報を自分の購入者端末１０２に入力する。基本機能部２７０１は、購入者端末１０２に入力された情報を元に、モジュール登録情報データベース１０４に登録されているモジュールを検索し、その検索結果は購入者端末１０２に画面に提示される。なお、モジュールの購入者は、図１４〜図２２に示したようなモジュール検索画面上で、アプリケーションの開発に必要なモジュールを逐次選択していくことで、複数のモジュールを組み合わせてアプリケーションを開発することができるが、その処理手順の詳細は既に説明した通りである。また、基本機能部２７０１は、モジュールの購入手続きも実施し、購入者が購入したモジュールをその購入者の購入者端末１０２にダウンロードする。
【０１２９】
また、モジュール試験装置２７０２は、テストデータを使用してモジュールの動作をシミュレーションする機能を有する。
【０１３０】
購入者がモジュールの検索により任意に組んだモジュールの集合（プログラムに相当）が、ユーザ（若しくは、モジュールの購入者、アプリケーションの開発者）の期待する通りに動作するかを、モジュールの購入前に確認することにある。このような場合、購入者端末１０２からモジュール販売サイト１０３へ、モジュールのシミュレーションと動作テストに使用するテストデータをアップロードする。モジュール試験装置２７０２は、アップロードされたテストデータを、購入者が開発したアプリケーションを実行するシミュレータに投入する。そして、モジュール試験装置２７０２は、シミュレーション結果を購入者端末１０２に返送する。購入者端末１０２では、受信した実行結果を可視化する。
【０１３１】
モジュール最適化装置２７０３は、購入者が選択した複数のモジュールを組み合わせたプログラムを、配布先のプロセッサ（例えば、シングルボードコンピュータ２０３に搭載されたプロセッサ）に適合したプログラム構成に最適化する機能を有する。
【０１３２】
購入者は、開発したアプリケーションを実行するプロセッサを搭載したボード（例えば、シングルボードコンピュータ２０３）を、ＵＳＢなどの接続用インターフェースを介して購入者端末１０２に接続することを通じて、プロセッサを指定する。あるいは、購入者は、購入者端末１０２の画面に表示されたプルダウン方式のメニューを通じて、プロセッサを指定する。そして、モジュール最適化装置２７０３は、基本機能部２７０１により検索した複数のモジュールを組み合わせたプログラムを、指定されたプロセッサに適合したプログラム構成となるように最適化する。また、基本機能部２７０１によって購入者端末１０２にダウンロードされるプログラムは、モジュール最適化装置２７０３によって最適化されたバイナリ形式のプログラムである。
【０１３３】
ニューラルネットワークを実行するためのハードウェアエンジンを搭載したプロセッサが多種多様に登場しているという状況があるため、モジュール最適化装置２７０３によるプログラムの最適化は重要である。
【産業上の利用可能性】
【０１３４】
以上、特定の実施形態を参照しながら、本明細書で開示する技術について詳細に説明してきた。しかしながら、本明細書で開示する技術の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。【０１３５】
本明細書で開示する技術を適用したオンライン取引システムは、モジュール検索が容易であり、モジュール単位でソフトウェアを取引することが可能になる。したがって、アプリケーションの開発者は、本明細書で開示する技術を適用したオンライン取引システムを利用して、モジュールを検索し、複数のモジュールを組み合わせて、アプリケーションを開発することができる。ディープラーニング技術が活用される機会が増大してきている近年においては、ディープラーニングの学習済みモデルがモジュールという単位で開発される機会が増え、且つ高い頻度で更新されていく。したがって、モジュールがオンラインマーケット上で取引の対象として扱うことを可能にする、本明細書で開示する技術のメリットは大きい。【０１３６】
要するに、例示という形態により本明細書で開示する技術について説明してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本明細書で開示する技術の要旨を判断するためには、特許請求の範囲を参酌すべきである。【０１３７】
なお、本明細書の開示の技術は、以下のような構成をとることも可能である。
（１）モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録部と、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索部と、
を具備する情報処理装置。
（２）前記登録部は、モジュールの販売者の第１の端末から受信した前記登録情報を前記データベースに登録する、
上記（１）に記載の情報処理装置。
（３）前記検索部は、モジュールの購入者の第２の端末に入力された製品の識別情報に基づいて前記データベースの検索を行い、検索結果を前記第２の端末に返送する、
上記（１）又は（２）のいずれかに記載の情報処理装置。
（４）前記検索部は、既に検索したモジュールの出力変数と共通する入力変数を持ち、又は、既に検索したモジュールの入力変数と共通する出力変数を持つモジュール候補を検索して、前記第２の端末に提示する、
上記（３）に記載の情報処理装置。
（５）前記検索部は、前記第２の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を検索して、前記第２の端末に提示する、
上記（４）に記載の情報処理装置。
（６）前記検索部は、前記第２の端末上で、スライド式にパラメータ調整された類似度の検索範囲に従って、モジュールを検索する、
上記（５）に記載の情報処理装置。
（７）前記検索部の検索結果に基づいて前記第２の端末で選択された複数のモジュールからアプリケーションをビルドして前記第２の端末に提供する提供部をさらに備える、
上記（３）乃至（６）のいずれかに記載の情報処理装置。
（８）第１のモジュールの出力変数と共通する入力変数を持つ第２のモジュールとを、前後の入出力の状態を確認して接続する、
上記（７）に記載の情報処理装置。
（９）前記登録部は、モジュールの入力変数又は出力変数のうち少なくとも一方のａｌｉａｓ情報をさらに前記データベースに登録する、
上記（１）乃至（８）のいずれかに記載の情報処理装置。
（１０）前記第２の端末で選択された複数のモジュールからビルドしたアプリケーションの動作をテストする試験部をさらに備える、
上記（３）乃至（９）のいずれかに記載の情報処理装置。
（１１）前記試験部は、前記第２の端末からアップロードされたテストデータを使用して前記アプリケーションの動作をテストし、前記テストの結果を前記第２の端末に返送する、
上記（１０）に記載の情報処理装置。
（１２）前記試験部は、前記アプリケーションに対する入力データを前記第２の端末から受信して、前記アプリケーションを動作させ、前記アプリケーションの出力データを前記第２の端末に返送する、
上記（１０）に記載の情報処理装置。
（１３）前記第２の端末で選択されたモジュールを最適化する最適化部をさらに備える、
上記（１）乃至（１２）のいずれかに記載の情報処理装置。
（１４）前記最適化部は、前記第２の端末から指定されたプロセッサの構成情報に基づいて、前記モジュールを最適化する、
上記（１３）に記載の情報処理装置。
（１５）前記モジュールはニューラルネットワークモジュールであり、
前記最適化部は、前記第２の端末において設定された前記ニューラルネットワークモジュールのパラメータのモデル圧縮のデータタイプの設定値の組み合わせの指定に基づいて、処理速度、消費電力、又は認識精度のうち少なくとも１つとのトレードオフを前記第２の端末に提示する、
上記（１３）又は（１４）のいずれかに記載の情報処理装置。
（１６）モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録ステップと、
製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索する検索ステップと、
を有する情報処理方法。
（１７）ユーザが製品の識別情報を入力する入力部と、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示部と、
を具備する情報処理装置。
（１７−１）前記入力部に入力された前記製品の識別情報を外部装置に送信し、
前記提示部は、前記外部装置が前記製品の識別情報に基づいて検索した、関連するモジュールの機能を有する前記モジュールを提示する、
上記（１７）に記載の情報処理装置。
（１８）前記入力部に、モジュールの機能さらに入力可能であり、
前記提示部は、前記入力部に入力されたモジュールの機能に類似する機能を有するモジュール候補をさらに提示する、
請求項１７に記載の情報処理装置。
（１８−１）前記提示部は、外部装置が検索した、既に検索したモジュールの出力変数と共通する入力変数を持ち、又は、既に検索したモジュールの入力変数と共通する出力変数を持つモジュール候補を提示する、
上記（１８）に記載の情報処理装置。
（１８−２）前記提示部は、外部装置が検索した、前記第２の端末で指定されたモジュールの機能に類似するモジュールの機能を有するモジュール候補を提示する、
上記（１８）に記載の情報処理装置。
（１８−３）前記提示部が提示するモジュール候補の中からモジュールの選択を前記入力部に入力可能であり、選択したモジュールを外部装置に通知する、
上記（１８）に記載の情報処理装置。
（１９）ユーザが製品の識別情報を入力する入力ステップと、
前記製品の識別情報に基づいて検索された、関連するモジュールの機能を有するモジュールを前記ユーザに提示する提示ステップと、
を有する情報処理方法。
（２０）モジュールの入力変数、出力変数、モジュールの機能、モジュールの効果のうち少なくとも１つを含む登録情報をデータベースに登録する登録して、モジュールの販売に関する処理を行う販売装置と、
ユーザのモジュールの購入に関する処理を行う購入装置と、
を具備し、
前記販売装置は、前記購入装置に入力された製品の識別情報に基づいて、関連するモジュールの機能を有するモジュールを前記データベースから検索して、検索結果を前記購入装置に返送し、
前記購入装置は、前記販売装置から返送されたモジュールを前記ユーザに提示する、
情報処理システム。
【符号の説明】
【０１３８】
１００…オンライン取引システム、１０１…販売者端末
１０２…購入者端末、１０３…モジュール販売サイト
１０４…モジュール登録情報データベース
２００…カメラシステム、２０１…デジタルカメラ
２０２…パンチルト雲台、２０３…シングルボードコンピュータ
２７０１…基本機能部、２７０２…モジュール試験装置
２７０３…モジュール最適化装置
【図１】
2020026547.tif 000003
【図２】
2020026547.tif 000004
【図３】
2020026547.tif 000005
【図４】
2020026547.tif 000006
【図５】
2020026547.tif 000007
【図６】
2020026547.tif 000008
【図７】
2020026547.tif 000009
【図８】
2020026547.tif 000010
【図９】
2020026547.tif 000011
【図１０】
2020026547.tif 000012
【図１１】
2020026547.tif 000013
【図１２】
2020026547.tif 000014
【図１３】
2020026547.tif 000015
【図１４】
2020026547.tif 000016
【図１５】
2020026547.tif 000017
【図１６】
2020026547.tif 000018
【図１７】
2020026547.tif 000019
【図１８】
2020026547.tif 000020
【図１９】
2020026547.tif 000021
【図２０】
2020026547.tif 000022
【図２１】
2020026547.tif 000023
【図２２】
2020026547.tif 000024
【図２３】
2020026547.tif 000025
【図２４】
2020026547.tif 000026
【図２５】
2020026547.tif 000027
【図２６】
2020026547.tif 000028
【図２７】
2020026547.tif 000029
【国際調査報告】
2020026547.tif 000030
2020026547.tif 000031
2020026547.tif 000032