以下に、本発明に係る実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。また、下記実施形態における構成要素には、当業者が置換可能かつ容易なもの、あるいは実質的に同一のものが含まれる。
[実施形態]
<プログラム管理システムの概要>
図1に示す本実施形態のプログラム管理システムSys1は、端末機器10と、外部機器20とを備え、これらが相互に通信し連携することで、端末機器10によって作成されたプログラムを、外部機器20によって適正に管理することができるシステムである。端末機器10は、プログラム管理システムSys1による管理の対象となるソフトウェアプログラムを作成可能な電子機器である。外部機器20は、ネットワークN上に実装されるクラウドサービス機器(クラウドサーバ)を構成するものである。ネットワークNは、Wi-Fi(登録商標)、4G、5G等を用いた無線通信、通信線を用いた有線通信を問わず任意の通信網によって構成され、外部機器20と端末機器10とを通信可能に接続する。外部機器20と端末機器10とは、典型的には、ネットワークNを介して相互に通信を行う。端末機器10は、典型的には、外部機器20と相互に通信し連携することで当該外部機器20から様々なクラウドサービスを受けることができる。本実施形態のプログラム管理システムSys1は、端末機器10によって作成されたプログラムについて、外部機器20によって類似するプログラムの有無を判定し、判定結果に応じた処理を行うことで、プログラムを適正に管理するものである。典型的には、プログラム管理システムSys1は、作成されたプログラムについて、承認の可否を審査する前に、類似するプログラムの有無を判定する。以下、各図を参照してプログラム管理システムSys1の各構成について詳細に説明する。
<管理対象となるプログラム>
ここでまず、プログラム管理システムSys1による管理の対象となるソフトウェアプログラムについて説明する。本実施形態において、管理の対象となるソフトウェアプログラムは、動作対象機器で実行させることで当該動作対象機器を動作させるプログラムである。
ここで、動作対象機器とは、プログラム管理システムSys1による管理の対象となるプログラムによって動作する機器である。動作対象機器は、典型的には、ユーザが携帯可能に構成されるものであるがこれに限らない。動作対象機器は、例えば、スマートフォン、タブレット型PC、ノート型PC、デスクトップ型PC、PDA、携帯ゲーム機器、人体に装着可能なウェアラブル機器等によって構成することができる。ウェアラブル機器としては、例えば、リストバンド型、眼鏡型、指輪型、靴型、ペンダント型等の機器が挙げられる。動作対象機器としては、例えば、端末機器10や当該端末機器10と相互に通信可能である電子時計等が含まれていてもよい。
本実施形態において、管理の対象となるソフトウェアプログラムは、典型的には、動作対象機器のブラウザ等の他のアプリケーションプログラムの中に組み込まれて実行される比較的に小さなサイズのプログラムである。ここでは一例として、管理の対象となるソフトウェアプログラムは、ブラウザ上で実行されるアプリケーションプログラムであるアプレットや当該アプレットを構成する各種ブロックプログラムであるものとして説明する。アプレットは、典型的には、シーケンスが決まっているアプリケーションプログラムという位置づけである。
本実施形態のアプレットは、動作対象機器で実行させることで当該動作対象機器を動作させるプログラムである。アプレットは、動作対象機器を単体で所定の動作を行わせるプログラムであってもよいし、複数の動作対象機器を連携させて所定の動作を行わせるプログラムであってもよい。本実施形態のアプレットは、複数のブロックプログラムを含んで構成される。ここでは、アプレットは、ブロックプログラムとして、サービスブロックプログラムと、トリガブロックプログラムと、アクションブロックプログラムとを含み、これら3つの要素が組み合わせられることで1つのアプレットが構築される例を示す。つまり、本実施形態のアプレットは、サービスブロックプログラムとトリガブロックプログラムとアクションブロックプログラムとを組み合わせた「全体プログラム」を構成するものである。ただし、これら3つのブロックプログラムのうち、いずれかを選んで組み合わせることで「全体プログラム」を構成することも可能である。「全体プログラム」を構成する各ブロックプログラムは、「piece(ピース)」と呼ばれる場合もある。以下の説明では、サービスブロックプログラムを「サービスブロック」、トリガブロックプログラムを「トリガブロック」、アクションブロックプログラムを「アクションブロック」という場合がある。
サービスブロックとは、ユーザが望む目的に応じたサービス内容に応じて動作対象機器が出力する出力情報を規定するプログラムである。言い換えれば、サービスブロックとは、サービス内容に応じて取得したい出力情報の内容を特定するプログラムである。このサービスブロックは、例えば、外部のwebサイトから出力情報の元となる情報を得て、アクションで示すために当該情報を加工して出力情報を生成するプログラムを含んでいてもよい。
トリガブロックとは、サービス内容に応じた出力情報を出力するためのアクションを発動するトリガの内容と当該トリガを生成するトリガ生成部とを規定しトリガ生成部にトリガを生成させるプログラムである。ここで、トリガとは、サービスの内容に応じたアクションを発動させるためのきっかけである。トリガ生成部とは、動作対象機器に設けられ、トリガを生成するものである。動作対象機器においてトリガ生成部を構成し得るもの(トリガ生成部候補)としては、一例として、動作対象機器の入力部、検出部、計時部等が挙げられる。動作対象機器の入力部は、動作対象機器に対する種々の入力を受け付ける部分であり、例えば、タッチパネル、操作ボタン、音声入力装置、リューズ、プッシュボタン、レジスタリング等を含んで構成されてもよい。動作対象機器の検出部は、種々の情報を検出する検出器であり、例えば、加速度センサ、チルトスイッチ、照度センサ、温度センサ、電圧センサ、測位器等を含んで構成されてもよい。動作対象機器の計時部は、時刻(機器内部時刻)を計時する回路である。当該トリガ生成部によって生成されるトリガとしては、一例として、入力部に対する所定の入力、検出部による所定の情報の検出、計時部による計時結果等が挙げられる。トリガブロックは、当該トリガブロックを含むアプレットが動作対象機器の処理部によって実行されることで、当該トリガブロックによって規定されたトリガ生成部にトリガを生成させる。言い換えれば、このトリガブロックは、サービスが動作するきっかけ(トリガ)となる入力を定めたプログラムということもできる。
アクションブロックとは、サービス内容に応じた出力情報を出力するためのアクションの内容と当該アクションを実行するアクション実行部とを規定しアクション実行部にアクションを実行させるプログラムである。ここで、アクションとは、アプレットによって提供するサービスの内容に応じた動作である。アクション実行部とは、動作対象機器に設けられ、アクションを実行するものである。動作対象機器においてアクション実行部を構成し得るもの(アクション実行部候補)としては、一例として、動作対象機器の通信部、出力部等が挙げられる。動作対象機器の通信部は、動作対象機器の外部と通信可能な通信モジュールである。動作対象機器の出力部は、動作対象機器において種々の出力を行う部分であり、例えば、ディスプレイ、表示灯、スピーカ/アラームブザー、バイブレータ、指針、日板等を含んで構成されてもよい。当該アクション実行部によって実行されるアクションとしては、一例として、通信部による外部への出力情報の出力、出力部による出力情報の出力等が挙げられる。アクションブロックは、当該アクションブロックを含むアプレットが動作対象機器の処理部によって実行されることで、当該アクションブロックによって規定されたアクション実行部に出力情報を出力するためのアクションを実行させる。言い換えれば、アクションブロックは、サービスで得られた出力情報を出力するアクションを定めたプログラムということもできる。
上記のように構成されるアプレットは、上述したサービスブロックと、トリガブロックと、アクションブロックとによって構成され、サービスの内容に応じた出力情報とトリガとアクションとを関連付けて規定する。当該アプレットは、例えば、ネットワークNや近距離無線通信を介して動作対象機器の記憶部に記憶される。そして、当該アプレットは、動作対象機器の処理部によって実行されることで、トリガ生成部が生成したトリガによって、サービス内容に応じた出力情報を出力するアクションをアクション実行部に実行させることができる。
例えば、後述する外部機器20の記憶部23、あるいは、他の外部機器の記憶部には、ブロックプログラム記憶領域(不図示)が設けられており、当該ブロックプログラム記憶領域にはサービスブロック、トリガブロック、アクションブロックに用いられるブロックプログラムが数多く記憶されている。後述する端末機器10でアプレットを作成する過程では、例えば、ネットワークNを介してブロックプログラム記憶領域のブロックプログラムを目的別に複数表示し、その中からブロックプログラムを選択することができる。そして、選択された各ブロックプログラムの関連付けと詳細な動作の条件を規定し、アプレットとして後述する端末機器10の記憶部15に保存される。
アプレットは、動作対象機器を単体で所定の動作を行わせる場合には、当該動作対象機器に記憶され、当該動作対象機器に、トリガ生成部によるトリガの生成、出力情報に関する情報の取得、及び、アクション実行部によるアクションの実行を行わせる。この場合、アプレットは、例えば、動作対象機器によるトリガ生成を起点とし、当該動作対象機器に外部の機器からサービス内容に応じた出力情報に関する情報を取得させ、取得した情報に基づいてサービス内容に応じた出力情報を当該動作対象機器に出力させるアクションを実行させる。また、アプレットは、複数の動作対象機器を連携させて所定の動作を行わせる場合には、複数の動作対象機器のいずれかに記憶され、当該複数の動作対象機器を連携させて、トリガ生成部によるトリガの生成、出力情報に関する情報の取得、及び、アクション実行部によるアクションの実行を行わせる。この場合、アプレットは、例えば、第1の動作対象機器のトリガ生成を起点とし、当該トリガに応じて第2の動作対象機器に外部の機器からサービス内容に応じた出力情報に関する情報を取得させると共に当該取得した情報を第1の動作対象機器に送信させ、当該第1の動作対象機器に、取得した情報に基づいてサービス内容に応じた出力情報を出力させるアクションを実行させる。また、アプレットは、サービスブロック、トリガブロック、アクションブロックのうちいずれかがそれぞれ複数のブロックプログラムによって構成されてもよい。言い換えれば、1つのアプレットにおいて、使用されるブロックプログラムのうち、例えば、サービスブロックによって規定される出力情報、トリガブロックによって規定されるトリガ、アクションブロックによって規定されるアクションが複数規定されていてもよい。
本実施形態において、プログラム管理システムSys1による管理の対象となるソフトウェアプログラムは、上述したサービスブロック、トリガブロック、アクションブロック、又は、サービスブロックとトリガブロックとアクションブロックとのうちいずれかを組み合わせたアプレットである。
<ブロックプログラムの連携>
ここで、先にも述べたようにアプレットの実行過程は、トリガブロックの実行に伴いサービスブロックが実行され、サービス内容に応じて取得した出力情報をアクションブロックに送り、アクションブロックが実行される。この際、図2に示すように、アプレットを構成する各ブロックプログラム、すなわち、トリガブロック、サービスブロック、アクションブロックは、それぞれにおける情報の入力形式(Input)、及び、情報の出力形式(Output)に応じて相互に連携可能か否かが定まる。ブロックプログラムにおける情報の入力形式、及び、情報の出力形式は、典型的には、ブロックプログラム本体に情報として記述されている。
ここで、ブロックプログラムにおける情報の入力形式とは、他のブロックプログラムと連携する際に、当該他のブロックプログラムから入力される情報の形式である。ブロックプログラムにおける情報の出力形式とは、他のブロックプログラムと連携する際に、当該他のブロックプログラムへ出力する情報の形式である。一例として、アプレットにおいて、当該アプレットによる動作の起点プログラムとなるトリガブロックには情報の出力形式のみ存在し、情報の入力形式は存在しない。アプレットにおいて、動作の中継プログラムとなるサービスブロックには情報の入力形式、及び、情報の出力形式の双方が存在する。アプレットにおいて、動作の終点プログラムとなるアクションブロックには情報の入力形式のみ存在し、情報の出力形式は存在しない。ただし、1つのアプレットにおいて、複数のトリガブロックや複数のアクションブロックが相互に連携し、トリガブロック、アクションブロックが動作の中継プログラムとなる場合には、トリガブロック、アクションブロックも情報の入力形式、及び、情報の出力形式の双方が存在することも許容される。
ブロックプログラムにおける情報の入力形式、及び、情報の出力形式としては、例えば、「ブーリアン(真(true)/偽(false))」、「文字列」、「数値(単位を含む)」、「None(無し)」等が挙げられる。ブロックプログラムにおける情報の入力形式、及び、情報の出力形式としては、ここで列挙したもの以外のものを含んでいてもよい。
なおここでは、一例として、ブロックプログラムにおける情報の入力形式が「None(無し)」である場合、図3の「Case1-1」、「Case1-2」、「Case1-3」、「Case1-4」に例示するように、それに対応する情報の出力形式がどの出力形式であっても許容され、情報の出力形式が一致していなくてもいずれのブロックプログラムとも連携可能とされる。また、ブロックプログラムにおける情報の出力形式が「None(無し)」である場合、図4の「Case2-1」に例示するように、それに対応する情報の入力形式が「None(無し)」であるブロックプログラムとは連携可能である一方、図4の「Case2-2」、「Case2-3」、「Case2-4」に例示するように、情報の入力形式が「None(無し)」以外の形式であるブロックプログラムとは連携不能とされる。
2つのブロックプログラムは、情報出力側のブロックプログラムの情報の出力形式と、情報入力側のブロックプログラムの情報の入力形式とが一致する場合、又は、情報入力側の入力形式が情報出力側の出力形式を許容する場合に相互に連携可能である。一方、2つのブロックプログラムは、情報出力側のブロックプログラムの情報の出力形式と、情報入力側のブロックプログラムの情報の入力形式とが一致しない場合でかつ許容もされない場合に相互に連携不能である。
図2の例で言えば、トリガブロックとサービスブロックとは、トリガブロックにおける情報の出力形式と、サービスブロックにおける情報の入力形式とが一致する場合、又は、サービスブロックにおける情報の入力形式がトリガブロックにおける情報の出力形式を許容する場合に相互に連携可能である。サービスブロックとアクションブロックとは、サービスブロックにおける情報の出力形式と、アクションブロックにおける情報の入力形式とが一致する場合、又は、アクションブロックにおける情報の入力形式がサービスブロックにおける情報の出力形式を許容する場合に相互に連携可能である。
より具体的には、トリガブロックにおける情報の出力形式とは、他のブロックプログラム(図2の例で言えばサービスブロック)と連携する際に、当該他のブロックプログラムへ出力する情報の形式である。トリガブロックは、他のブロックプログラム(例えば、サービスブロック)における情報の入力形式が当該トリガブロックにおける情報の出力形式と合致する場合や許容される場合に、当該他のブロックプログラムと連携が可能である。一方、トリガブロックは、他のブロックプログラム(例えば、サービスブロック)における情報の入力形式が当該サービスブロックにおける情報の出力形式と合致しない場合でかつ許容もされない場合、当該他のブロックプログラムとは連携不能である。例えば、トリガが「時計のプッシュボタンの操作」や「時計のリューズの操作」である場合、単にトリガを発生させるだけであり、次のブロックプログラム(サービスブロック)に対して情報を渡す(出力する)必要がないので、出力形式は「None」である。例えば、サービスブロックが出力する情報が時計から得られる情報により異なる場合(例えば、目標の歩数に対する達成度を時計の表示部に表示する等の場合)、トリガが「加速度センサ等のセンサ値に基づくもの」となり、出力形式は「数値(例えば、時計が計数した歩数等のセンサ値)」である。
サービスブロックにおける情報の入力形式とは、他のブロックプログラム(図2の例で言えばトリガブロック)と連携する際に、当該他のブロックプログラムから入力される情報の形式である。サービスブロックは、他のブロックプログラム(例えば、トリガブロック)における情報の出力形式が当該サービスブロックにおける情報の入力形式と合致する場合や許容される場合に当該他のブロックプログラムと連携が可能である。一方、サービスブロックは、他のブロックプログラム(例えば、トリガブロック)における情報の出力形式が当該サービスブロックにおける情報の入力形式と合致しない場合でかつ許容もされない場合、当該他のブロックプログラムとは連携不能である。
サービスブロックにおける情報の出力形式とは、他のブロックプログラム(図2の例で言えばアクションブロック)と連携する際に、当該他のブロックプログラムへ出力する情報の形式である。サービスブロックは、他のブロックプログラム(例えば、アクションブロック)における情報の入力形式が当該サービスブロックにおける情報の出力形式と合致する場合や許容される場合に、当該他のブロックプログラムと連携が可能である。一方、サービスブロックは、他のブロックプログラム(例えば、アクションブロック)における情報の入力形式が当該サービスブロックにおける情報の出力形式と合致しない場合でかつ許容もされない場合、当該他のブロックプログラムとは連携不能である。例えば、出力情報が「明日の予想最高気温が今日の最高気温より高いか低いか」である場合、出力形式は「ブーリアン」であり、出力情報が「降水確率」である場合、出力形式は「数値[%]」であり、出力情報が「気温」である場合、出力形式は「数値[℃]」であり、出力情報が「天気」である場合、出力形式は「晴れ、曇り、雨等の文字列」である。
アクションブロックにおける情報の入力形式とは、他のブロックプログラム(図2の例で言えばサービスブロック)と連携する際に、当該他のブロックプログラムから入力される情報の形式である。アクションブロックは、他のブロックプログラム(例えば、サービスブロック)における情報の出力形式が当該アクションブロックにおける情報の入力形式と合致する場合や許容される場合に、当該他のブロックプログラムと連携が可能である。一方、アクションブロックは、他のブロックプログラム(例えば、サービスブロック)における情報の出力形式が当該アクションブロックにおける情報の入力形式と合致しない場合でかつ許容もされない場合、当該他のブロックプログラムとは連携不能である。例えば、入力情報が野球で応援しているチームが勝っているか負けているかの場合、入力形式は「ブーリアン」であり、入力情報が明日の降水確率である場合、入力形式は「数値」である。
<ブロックプログラムにおける情報の入力形式/出力形式の付加情報>
ブロックプログラムは、情報の入力形式/出力形式に、さらに付加情報が付される場合がある。アプレットを構成する各ブロックプログラム、すなわち、トリガブロック、サービスブロック、アクションブロックは、それぞれにおける情報の入力形式、及び、情報の出力形式に付加情報が付されている場合、入力形式、及び、出力形式に加えて、当該付加情報にも基づいて相互に連携可能か否かが定まる。上述した例でいうと、情報の入力形式/出力形式が「ブーリアン」、「None」である場合には付加情報は存在しない。以下、情報の入力形式/出力形式が「文字列」、「数値(単位を含む)」である場合の付加情報について個別に例を挙げて説明する。
<情報の入力形式/出力形式が「文字列」である場合の付加情報>
ブロックプログラムは、情報の入力形式/出力形式が「文字列」である場合、付加情報として当該「文字列」の「フォーマット形式」に関する情報が設定、付加される場合がある。図5は、ブロックプログラムにおける情報の入力形式/出力形式が「文字列」である場合に、付加情報として付加される「フォーマット形式」の一例である。
この場合、2つのブロックプログラムは、典型的には、情報出力側のブロックプログラムにおいて付加情報をなす「フォーマット形式」と、情報入力側のブロックプログラムにおいて付加情報をなす「フォーマット形式」とが一致する場合に相互に連携可能とされる。一方、2つのブロックプログラムは、典型的には、当該情報出力側の「フォーマット形式」と、当該情報入力側の「フォーマット形式」とが一致しない場合に相互に連携不能とされる。ただし、これらの連携可否条件には例外が設けられる場合もある。
例えば、ブロックプログラムは、図6の「Case3-1」に例示するように、入力形式の付加情報をなす「フォーマット形式」が「email」である場合、出力形式の付加情報をなす「フォーマット形式」が「email」であるブロックプログラムとは連携可能とされる。一方、ブロックプログラムは、図6の「Case3-2」に例示するように、入力形式の付加情報をなす「フォーマット形式」が「date」である場合、出力形式の付加情報をなす「フォーマット形式」が「email」であるブロックプログラムとは連携不能とされる。また、ブロックプログラムは、図6の「Case3-3」に例示するように、入力形式の付加情報をなす「フォーマット形式」が「text」である場合、出力形式の付加情報をなす「フォーマット形式」がいずれの形式(Any format)のブロックプログラムであっても連携可能とされる。
<情報の入力形式/出力形式が「数値」である場合の付加情報>
ブロックプログラムは、情報の入力形式/出力形式が「数値」である場合、付加情報として当該「数値」の「下限値(minimum)」、「上限値(maximum)」に関する情報が設定、付加される場合がある。入力形式/出力形式の付加情報をなす「下限値」、「上限値」は、当該「数値」がとりうる範囲を表している。なお、典型的には、「下限値(minimum)」、「上限値(maximum)」は予めデフォルト値が設定されているので、ユーザによる設定がされない場合は、当該デフォルト値自体が設定値となる。
この場合、2つのブロックプログラムは、典型的には、図7の「Case4-1」、及び、図8に例示するように、情報出力側のブロックプログラムにおいて出力形式の付加情報をなす「下限値」が、情報入力側のブロックプログラムにおいて入力形式の付加情報をなす「下限値」以上である場合に相互に連携可能とされる一方、当該出力形式の「下限値」が、当該入力形式の「下限値」未満である場合に相互に連携不能とされる。また、2つのブロックプログラムは、典型的には、図7の「Case4-2」、及び、図8に例示するように、情報出力側のブロックプログラムにおいて出力形式の付加情報をなす「上限値」が、情報入力側のブロックプログラムにおいて入力形式の付加情報をなす「上限値」以下である場合に相互に連携可能とされる一方、当該出力形式の「上限値」が、当該入力形式の「上限値」を超える場合に相互に連携不能とされる。
<端末機器の基本構成>
端末機器10は、上述したようにプログラム管理システムSys1による管理の対象となるソフトウェアプログラムを作成可能な電子機器である。端末機器10は、例えば、外部機器20を含む各種機器と連携して各種プログラムを作成可能である。本実施形態の端末機器10は、管理の対象となるソフトウェアプログラムとして、上述したサービスブロック、トリガブロック、アクションブロック、又は、アプレットを作成可能である。端末機器10は、例えば、スマートフォン、タブレット型PC、ノート型PC、デスクトップ型PC等の種々のコンピュータ機器によって構成することができる。図1等の例では、端末機器10は、スマートフォンであるものとして図示している。
端末機器10は、CPU等の中央演算処理装置を含む周知のマイクロコンピュータを主体とする電子回路、半導体メモリ等の各種記憶装置等を含んで構成される。端末機器10は、既知のPCやワークステーションなどのコンピュータシステムに種々の処理を実現させるプログラムをインストールすることで構成することもできる。
具体的には、端末機器10は、図9に示すように、電源部11と、端末側通信部としての通信部12と、入力部13と、出力部14と、端末側記憶部としての記憶部15と、端末側処理部としての処理部16とを有する。
電源部11は、端末機器10の電力源である。電源部11は、リチウムイオン電池等の充放電可能な二次電池等を含んで構成され、端末機器10内の各部に対して電力を供給する。
通信部12は、端末機器10の外部と通信可能な通信モジュールである。通信部12は、少なくとも外部機器20と通信可能である。通信部12は、無線通信、有線通信を問わずネットワークNと通信可能に接続され、当該ネットワークNを介して外部機器20と通信を行う。
入力部13は、端末機器10に対する種々の入力を受け付ける部分である。入力部13は、例えば、端末機器10に対する操作入力を受け付けるタッチパネル13a、端末機器10に対する音声入力を受け付ける音声入力装置13b等を含んで構成される。入力部13は、この他、キーボード、マウスポインタ等の入力装置を含んで構成されてもよい。
出力部14は、端末機器10において種々の出力を行う部分である。出力部14は、例えば、画像情報を出力するディスプレイ14a、音情報を出力するスピーカ14b等を含んで構成される。ディスプレイ14aは、処理部16によって制御され画像を表示可能である端末側表示部を構成するものである。ディスプレイ14aは、例えば、画像を表示する液晶ディスプレイ、プラズマディスプレイ、有機ELディスプレイ等の画像表示装置等によって構成される。上述したタッチパネル13aは、このディスプレイ14aはこの表面に重畳させて設けられている。
記憶部15は、端末機器10に内蔵されるROM、RAM、半導体メモリ等の記憶装置である。記憶部15は、端末機器10での各種処理に必要な条件や情報、端末機器10で実行する各種プログラム、制御データ等が格納されている。記憶部15は、例えば、通信部12によって受信された各種情報、入力部13によって入力された各種情報、出力部14によって出力される各種情報等を記憶することができる。記憶部15は、例えば、通信部12によって受信された各種情報として、当該通信部12を介して外部機器20等からダウンロードしたサービスブロック、トリガブロック、アクションブロック、アプレット等を記憶することができる。記憶部15は、処理部16等によってこれらの情報が必要に応じて読み出される。
処理部16は、端末機器10の各部と電気的に接続され、端末機器10の各部を統括的に制御するものである。処理部16は、CPU等の中央演算処理装置を含む周知のマイクロコンピュータを主体とする電子回路を含んで構成される。処理部16は、端末機器10の各部と通信可能に接続され、各部との間で相互に各種信号を授受可能である。処理部16は、記憶部15に記憶されている各種プログラムを実行し、当該プログラムが動作することにより端末機器10の各部を動作させ各種機能を実現するための種々の処理を実行する。
本実施形態の処理部16は、上記各種処理機能を実現するために、機能概念的に、作成処理部16a、及び、動作処理部16bを含んで構成される。処理部16は、例えば、記憶部15から読み込んだプログラムを実行することにより、これら作成処理部16a、及び、動作処理部16bの各処理機能を実現する。
作成処理部16aは、作成プログラムを作成する処理を実行可能な機能を有する部分である。ここで、作成プログラムとは、典型的には、端末機器10において作成され、後述するように外部機器20に対する承認申請の対象となるプログラムである。作成処理部16aは、入力部13に対する入力等に応じて作成プログラムを作成する処理を実行可能である。
動作処理部16bは、端末機器10の各部を動作させる処理を実行可能な機能を有する部分である。動作処理部16bは、電源部11、通信部12、入力部13(タッチパネル13a、音声入力装置13b)、出力部14(ディスプレイ14a、スピーカ14b)、記憶部15の動作を制御する処理を実行可能である。動作処理部16bは、例えば、入力部13への入力に応じて、外部機器20から通信部12を介して各種情報を受信しダウンロードし記憶部15に格納する処理を実行可能である。また、動作処理部16bは、例えば、入力部13への入力に応じて、各種情報を通信部12を介して外部機器20に送信しアップロードする処理を実行可能である。
<プログラムの作成>
本実施形態の処理部16の作成処理部16aは、入力部13に対する入力に応じて、サービスブロック、トリガブロック、アクションブロック、アプレットを作成する処理を実行可能である。作成処理部16aは、例えば、通信部12を介して外部機器20等の機器から取得した作成情報に基づいて、入力部13に対する入力に応じて、サービスブロック、トリガブロック、アクションブロック、アプレットを作成することができる。ここで、作成情報とは、上述したようにサービスブロック、トリガブロック、アクションブロック、アプレットを作成する際に参照される様々な情報である。作成情報は、例えば、サービスの内容、トリガの内容、アクションの内容、トリガ生成部、アクション実行部等の候補やアプレットを構成するサービスブロック、トリガブロック、アクションブロック等の候補についての情報を含んでいてもよい。また、作成情報は、例えば、サービスブロック、トリガブロック、アクションブロック、アプレットを作成するためのプログラム作成用のプログラムを含んでいてもよい。この場合、作成処理部16aは、当該プログラム作成用のプログラムに従ってサービスブロック、トリガブロック、アクションブロック、アプレットを作成するようにしてもよい。また、作成処理部16aは、例えば、上記のような作成情報にはよらずに、入力部13に対する入力に応じて、サービスブロック、トリガブロック、アクションブロック、アプレットを作成することもできる。記憶部15は、作成処理部16aによって作成されたサービスブロック、トリガブロック、アクションブロック、アプレットを記憶することができる。
作成処理部16aによって作成されるサービスブロック、トリガブロック、アクションブロック、アプレットは、上述の「作成プログラム」に相当し、すなわち、外部機器20に対する承認申請の対象となるプログラムに相当する。なお、サービスブロック、トリガブロック、アクションブロック、アプレットを作成するプログラム作成用のプログラムは、端末機器10のユーザが自由に外部機器20や他の外部機器から端末機器10にインストールして利用することができる。したがって、この「作成プログラム」は、不特定多数の作者が自分の嗜好に基づいて任意に作成可能である。
<プログラムの外部機器へのアップロード>
本実施形態の処理部16の動作処理部16bは、例えば、入力部13への入力に応じて、作成プログラムを、通信部12を介して外部機器20に送信しアップロードする処理を実行可能である。つまり、本実施形態の通信部12は、作成処理部16aによって作成された作成プログラムを外部、ここでは、外部機器20に送信可能である。本実施形態の端末機器10は、上記のようにして作成処理部16aによって作成された作成プログラムを当該通信部12を介して外部の外部機器20に送信する。この場合、動作処理部16bは、当該作成プログラムについての付加的な情報と共に作成プログラムを外部機器20に送信しアップロードするようにしてもよい。作成プログラムについての付加的な情報とは、作成プログラムに付随する種々の情報であり、例えば、当該作成プログラムの内容を表すアイコン画像、タイトル、カテゴリ、説明文等の種々の情報を含んでいてもよい。
動作処理部16bは、例えば、図10のような選択画面100、200を介して、作成した作成プログラムについての種々の情報を選択させることができる。動作処理部16bは、例えば、作成処理部16aによる作成プログラムの作成が完了すると、図10に例示した選択画面100をディスプレイ14aに表示させる。図10に例示した選択画面100は、作成した作成プログラムの名称を選択するために操作される画面であり、例えば、「新しいアプレットを作成しました」、「名前を決めてください」等の文字画像と共に、作成プログラムを表すアイコン画像101が表示される。動作処理部16bは、図10に例示した選択画面100において、タッチパネル13aに対する作者のタップ操作等に応じてアイコン画像101が選択されると、例えば、タッチパネル13aを介して作者による「名称」の入力操作を受け付ける。
次に、動作処理部16bは、例えば、図10に例示した選択画面200をディスプレイ14aに表示させる。図10に例示した選択画面200は、作成した作成プログラムの公開に関する情報を選択するために操作される画面であり、例えば、作成プログラムを表すアイコン画像201と共に、非公開選択領域202、限定公開選択領域203、一般公開選択領域204が表示される。非公開選択領域202は、当該作成プログラムを「非公開」とする場合に選択される領域である。限定公開選択領域203は、当該作成プログラムを「限定公開」とする場合に選択される領域である。一般公開選択領域204は、当該作成プログラムを「一般公開」とする場合に選択される領域である。ここで、「非公開」とは、当該プログラムを外部に対して公開しないことを表す。「限定公開」とは、当該プログラムを外部に対して制限つきで公開することを表し、例えば、公開対象等を限定して公開することを表す。「一般公開」とは、当該プログラムを外部に対して制限なく公開することを表す。
動作処理部16bは、図10に示す選択画面200において、タッチパネル13aに対する作者のタップ操作等に応じて非公開選択領域202が選択されると、当該作成プログラムについての付加的な情報と共に当該作成プログラムを記憶部15に記憶する一方、外部機器20にはアップロードしない。一方、動作処理部16bは、図10に示す選択画面200において、タッチパネル13aに対する作者のタップ操作等に応じて限定公開選択領域203、あるいは、一般公開選択領域204が選択されると、当該作成プログラムについての付加的な情報と共に当該作成プログラムを記憶部15に記憶すると共に、外部機器20に送信しアップロードする。
外部機器20に送信されアップロードされた作成プログラムは、外部機器20による承認を要する作成プログラムに相当し、外部機器20に対する承認申請の対象となる。動作処理部16bは、典型的には、承認を要する全ての作成プログラムを通信部12から外部機器20に送信する。そして、外部機器20に送信された作成プログラムは、当該外部機器20において承認審査が行われる。
ここで、端末機器10によって作成された「作成プログラム」は、上述したように不特定多数の作者が自分の嗜好に基づいて任意に作成可能である。このため、プログラム管理システムSys1において、承認申請の対象となる作成プログラムは、相対的に大量になり易い傾向にある。
これに対して、本実施形態の外部機器20は、承認の可否を審査する前に、承認申請の対象となった作成プログラムと類似する既存のプログラムの有無を判定し、類似するプログラムが有る場合には作者に対してその旨を報知する。これにより、本実施形態のプログラム管理システムSys1は、作者に対して、類似するプログラムが見つかった作成プログラムについての承認申請の再考を促すことで、無駄な承認申請、無駄な承認審査の抑制を図ることができる。以下、図11等を外部機器20の詳細について説明する。
<外部機器の基本構成>
外部機器20は、上述したようにネットワークN上に実装されるクラウドサービス機器(クラウドサーバ)を構成するものである。外部機器20は、ネットワークN上において、いわゆるリポジトリを構成する。外部機器20は、端末機器10によって作成されアップロードされた作成プログラムを管理する。当該外部機器20によるプログラムの管理には、例えば、当該プログラムの承認審査、当該プログラムのデータベース化、当該プログラムの公開等が含まれる。外部機器20は、CPU等の中央演算処理装置を含む周知のマイクロコンピュータを主体とする電子回路、各種記憶装置等を含んで構成される。外部機器20は、既知のPCやワークステーションなどの種々のコンピュータ機器に種々の処理を実現させるプログラムをインストールすることで構成することもできる。外部機器20は、単体の機器によって構成されてもよいし、複数の機器を相互通信可能に組み合わせることで構成されてもよい。
具体的には、外部機器20は、図11に示すように、電源部21と、外部機器側通信部としての通信部22と、外部機器側記憶部としての記憶部23と、外部機器側処理部としての処理部24とを有する。
電源部21は、外部機器20の電力源である。電源部21は、例えば、商用電源等から外部機器20の各部に対して電力を供給する。
通信部22は、外部機器20の外部と通信可能な通信モジュールである。通信部22は、少なくとも端末機器10と通信可能であり、端末機器10から送信された作成プログラムを受信可能である。通信部22は、無線通信、有線通信を問わずネットワークNと通信可能に接続され、当該ネットワークNを介して端末機器10等と通信を行う。
記憶部23は、外部機器20に内蔵されるROM、RAM、半導体メモリ等の記憶装置である。典型的には、記憶部23は、上述した端末機器10の記憶部15等と比較して記憶容量が相対的に大きい。記憶部23は、外部機器20での各種処理に必要な条件や情報、外部機器20で実行する各種プログラム、制御データ等が格納されている。記憶部23は、端末機器10から送信され通信部22によって受信された作成プログラムを記憶する。記憶部23は、例えば、端末機器10から送信され通信部22によって受信された作成プログラムを全て記憶することができる。また、記憶部23は、例えば、外部機器20において予め承認されたプログラムである承認済みプログラムを記憶し、処理部24による処理に応じてデータベース化することもできる。記憶部23に記憶されているプログラムは、ネットワークN等を介して端末機器10や他の機器にダウンロードされ、利用可能である。また、記憶部23は、プログラム管理システムSys1におけるプログラムの管理に必要な種々の情報を記憶する。記憶部23は、処理部24等によってこれらの情報が必要に応じて読み出される。
処理部24は、外部機器20の各部と電気的に接続され、外部機器20の各部を統括的に制御するものである。処理部24は、CPU等の中央演算処理装置を含む周知のマイクロコンピュータを主体とする電子回路を含んで構成される。処理部24は、外部機器20の各部と通信可能に接続され、各部との間で相互に各種信号を授受可能である。処理部24は、記憶部23に記憶されている各種プログラムを実行し、当該プログラムが動作することにより外部機器20の各部を動作させ各種機能を実現するための種々の処理を実行する。処理部24は、プログラム管理システムSys1における様々なサービスに必要な種々の処理を実行する。
本実施形態の処理部24は、上記各種処理機能を実現するために、機能概念的に、判定処理部24a、報知処理部24b、承認処理部24c、及び、動作処理部24dを含んで構成される。処理部24は、例えば、記憶部23から読み込んだプログラムを実行することにより、これら判定処理部24a、報知処理部24b、承認処理部24c、及び、動作処理部24dの各処理機能を実現する。
判定処理部24aは、記憶部23に記憶されている承認済みプログラムに基づいて、作成プログラムと類似するプログラムである類似プログラムの有無を判定する処理を実行可能な機能を有する部分である。判定処理部24aによる類似判定の対象となる作成プログラムは、上述したように、端末機器10の作成処理部16aによって作成された後、当該端末機器10から送信され通信部22によって受信された作成プログラムであり、承認申請の対象となった作成プログラムである。判定処理部24aは、記憶部23に記憶されている承認済みプログラムに、当該承認申請の対象となった作成プログラムと類似する類似プログラムがあるか否かを判定する処理を実行可能である。
報知処理部24bは、判定処理部24aによって、作成プログラムと類似する類似プログラムが有ると判定された場合に、当該類似プログラムが有ることを報知する処理を実行可能な機能を有する部分である。報知処理部24bは、判定処理部24aによって類似プログラムが有ると判定された場合に、端末機器10に対して、当該類似プログラムが有ることを報知する処理を実行可能である。
承認処理部24cは、判定処理部24aによる類似プログラムの有無を判定する処理の後に、当該作成プログラムを承認する処理を実行可能な機能を有する部分である。承認処理部24cは、典型的には、判定処理部24aによる類似判定によって、記憶部23に記憶されている承認済みプログラムに、承認申請の対象となった作成プログラムと類似する類似プログラムが無いと判定された場合に、当該作成プログラムを承認する処理を実行可能である。ただし、承認処理部24cは、作成プログラムと類似する類似プログラムが有ると判定された場合であっても、作者の希望に応じて当該作成プログラムを承認する処理を実行可能である。つまり、承認処理部24cは、端末機器10から送信され通信部22によって受信された全ての作成プログラムに対して承認する処理を実行可能である。
承認処理部24cは、例えば、作成プログラムの公開を承認するためのルールに基づいて、種々のアルゴリズムを用いて自動で作成プログラムや当該作成プログラムについての付加的な情報の内容を解析することで当該作成プログラムの承認の可否を決定してもよい。また、承認処理部24cは、例えば、作成プログラムの公開を承認するためのルールに基づいて、係員が作成プログラムや当該作成プログラムについての付加的な情報の内容を解析した上で、承認の可否が外部機器20に入力されることで当該作成プログラムの承認の可否を決定してもよい。承認処理部24cは、例えば、作成プログラムの承認審査の結果として、「承認」、「非承認」、又は、「承認の保留」のいずれかを決定する。「承認」とは、当該作成プログラムの公開が承認されたことを表す。「非承認」とは、当該作成プログラムの公開が承認されなかったことを表す。「承認の保留」とは、当該作成プログラムの公開の承認が保留されたことを表しており、言い換えれば、現在審査中であることを表す。
動作処理部24dは、外部機器20の各部を動作させる処理を実行可能な機能を有する部分である。動作処理部24dは、電源部21、通信部22、記憶部23の動作を制御する処理を実行可能である。動作処理部24dは、例えば、端末機器10から通信部22を介して各種情報を受信し記憶部23に格納する処理を実行可能である。また、動作処理部24dは、例えば、各種情報を通信部22を介して端末機器10に送信する処理を実行可能である。
<作成プログラムの類似判定、及び、承認審査の流れ>
図12を参照してプログラム管理システムSys1における作成プログラムの類似判定、及び、承認審査を含む処理手順の一例について説明する。
図12に示すプログラム管理システムSys1おけるプログラム管理方法は、プログラム作成ステップ(ST1)、類似判定ステップ(ST3)、報知ステップ(ST5)、承認審査ステップ(ST9)等の各ステップを含む。ここでは、上記各ステップに関する処理は、端末機器10の処理部16、及び、外部機器20の処理部24によって実行される。
まず、端末機器10の作成処理部16aは、承認申請の対象となる作成プログラムを作成するプログラム作成ステップ(ST1)を実行する。作成処理部16aは、例えば、上述した種々の作成情報や入力部13に対する作者の入力等に応じて、作成プログラムとして、サービスブロック、トリガブロック、アクションブロック、アプレット等を作成する。作成処理部16aは、当該作成プログラムについての付加的な情報と共に当該作成プログラムを記憶部15に記憶する。
次に、端末機器10の動作処理部16bは、プログラム作成ステップ(ST1)で作成された作成プログラムの承認を申請する承認申請ステップ(ST2)を実行する。動作処理部16bは、例えば、上述した図10の選択画面100、200等を介して入力部13に対する作者の入力に応じて、外部機器20に対して作成プログラムの承認を申請する処理を実行する。この場合、動作処理部16bは、当該作成プログラムを付加的な情報と共に、通信部12を介して外部機器20に送信しアップロードし、作成プログラムの承認を申請する。
外部機器20の動作処理部24dは、端末機器10から送信され通信部22によって受信された作成プログラム、及び、当該作成プログラムの付加的な情報を記憶部23に記憶する。そして、外部機器20の判定処理部24aは、端末機器10から送信され通信部22によって受信された当該作成プログラムと類似する類似プログラムの有無を判定する類似判定ステップ(ST3)を実行する。判定処理部24aは、記憶部23に記憶されている作成プログラム、付加的な情報、及び、類似判定データとしての承認済みプログラムに基づいて、当該承認済みプログラムに、当該作成プログラムと類似する類似プログラムがあるか否かを判定することで類似プログラムの有無を判定する。判定処理部24aによる類似判定の具体例については、後で詳細に説明する。
そして、外部機器20の報知処理部24bは、類似判定ステップ(ST3)において、判定処理部24aによって類似プログラムが有ると判定された場合(ST4:Yes)、類似プログラムが有ることを報知する報知ステップ(ST5)を実行する。この場合、報知処理部24bは、端末機器10に対して、通信部22を介して当該類似プログラムが有ることを報知する。ここでは、動作処理部24dは、例えば、判定処理部24aによる類似判定の判定結果と共に報知処理部24bによって生成される類似報知信号を、通信部22を介して端末機器10側に送信し、判定結果を報知する。この結果、端末機器10は、判定処理部24aによって作成プログラムと類似する類似プログラムが有ると判定された場合に、報知処理部24bによる処理に応じて類似プログラムが有ることが報知される。
端末機器10の動作処理部16bは、外部機器20から通信部12を介して判定結果と共に類似報知信号を受信すると、判定結果出力ステップ(ST6)を実行する。動作処理部16bは、この判定結果出力ステップ(ST6)では、受信した判定結果、類似報知信号に基づいて、出力部14(ディスプレイ14a、スピーカ14b)から判定結果と共に類似プログラムが有ったことを表す情報を出力させる。動作処理部16bは、例えば、判定結果と共に類似プログラムが有ったことを表す情報をディスプレイ14aに画像として表示させるようにしてもよいし、スピーカ14bから音情報として出力させるようにしてもよい。この場合、動作処理部16bは、例えば、作成プログラムの承認申請の取り止めや作成プログラムの改良を促す情報を出力部14から出力させるようにしてもよい。
そして、動作処理部16bは、入力部13に対する作者の入力等に応じて、このまま作成プログラムの承認申請を継続するか否かを判定する申請継続判定ステップ(ST7)を実行する。動作処理部16bは、入力部13に対する作者の入力等に応じて、作成プログラムの承認申請の取り止めや作成プログラムの改良が選択された場合(ST7:No)、この処理手順を終了し、例えば、作成プログラムの再作成や改良に関する処理を改めて実行する。
動作処理部16bは、入力部13に対する作者の入力等に応じて、承認申請の継続が選択された場合(ST7:Yes)、外部機器20に対してこのまま作成プログラムの承認申請の継続を要求する申請継続要求ステップ(ST8)を実行する。動作処理部16bは、通信部12を介して外部機器20に申請継続要求を送信する。
外部機器20の承認処理部24cは、端末機器10から通信部22を介して申請継続要求を受信すると、当該受信した申請継続要求に基づいて、作成プログラムを承認する承認審査ステップ(ST9)を実行する。承認処理部24cは、上述したように種々の手法を用いて、記憶部23に記憶されている作成プログラムや当該作成プログラムについての付加的な情報の内容を解析することで当該作成プログラムの承認の可否を決定する。
一方、承認処理部24cは、類似判定ステップ(ST3)において、判定処理部24aによって類似プログラムが無いと判定された場合(ST4:No)、ST5~ST8の処理をとばして、上記承認審査ステップ(ST9)を実行する。
そして、承認処理部24cは、例えば、承認処理部24cによる承認審査の審査結果を通知する通知ステップ(ST10)を実行する。この場合、動作処理部24dは、例えば、承認処理部24cによる承認審査の審査結果を、通信部22を介して端末機器10側に送信し、審査結果を通知する。この結果、端末機器10は、承認処理部24cによる承認審査の審査結果が通知される。
端末機器10の動作処理部16bは、外部機器20から通信部12を介して審査結果を受信すると、審査結果出力ステップ(ST11)を実行し、この処理手順を終了する。動作処理部16bは、この審査結果出力ステップ(ST11)では、受信した審査結果に基づいて、出力部14(ディスプレイ14a、スピーカ14b)から審査結果を出力させる。動作処理部16bは、例えば、審査結果をディスプレイ14aに画像として表示させるようにしてもよいし、スピーカ14bから音情報として出力させるようにしてもよい。
一方、外部機器20の動作処理部24dは、承認処理部24cによる承認審査の審査結果を反映する審査結果反映ステップ(ST11)を実行し、この処理手順を終了する。動作処理部24dは、承認審査ステップ(ST9)において、承認処理部24cによって作成プログラムの「承認」が決定された場合、承認申請の対象となって作成プログラムを、類似判定データを構成する承認済みプログラムとして記憶部23に登録、記憶する。一方、動作処理部24dは、承認審査ステップ(ST9)において、承認処理部24cによって作成プログラムの「非承認」、又は、「承認の保留」が決定された場合、承認申請の対象となって作成プログラムを、類似判定データを構成する承認済みプログラムとしては登録しない。
上述したプログラム管理方法は、予め用意された管理プログラムを、プログラム管理システムSys1(端末機器10、外部機器20)を構成するコンピュータで実行することによって実現することができる。この管理プログラムは、上述したプログラム作成ステップ(ST1)、類似判定ステップ(ST3)、報知ステップ(ST5)、承認審査ステップ(ST9)等、図12に記載した各処理をコンピュータに実行させるプログラムである。
<類似判定の具体例>
次に、図13~図23を参照して、類似判定ステップ(ST3)の具体例について説明する。判定処理部24aは、類似判定ステップ(ST3)において、類似の判定に対する影響度が相対的に高い類似度判定項目を優先して順に類似プログラムの有無を判定することができる。また、判定処理部24aは、類似判定ステップ(ST3)において、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目の評価値の合計に基づいて、類似プログラムの有無を判定することができる。いずれの場合においても、判定処理部24aは、種々のアルゴリズムを用いて自動で類似プログラムの有無を判定してもよいし、一部、又は、全部において係員の判断、操作を介在させて類似プログラムの有無を判定してもよい。以下、サービスブロック、トリガブロック、アクションブロック、アプレットそれぞれについての類似判定の具体例を説明する。
<サービスブロックの類似判定>
判定処理部24aは、サービスブロックと類似する類似プログラムの有無を判定する場合、例えば、当該サービスブロックで使用しているアプリケーションプログラミングインターフェース(API:Application Programming Interface)、又は、当該サービスブロックにおける情報の出力形式等を類似度判定項目とし、当該類似度判定項目に基づいて類似プログラムの有無を判定する。判定処理部24aは、サービスブロックにおける情報の出力形式に上述した付加情報も付されている場合には当該付加情報も類似度判定項目として類似プログラムの有無を判定するようにしてもよい。判定処理部24aは、加えて、例えば、当該サービスブロックの内容を表すアイコン画像、カテゴリ、タイトル、説明文等を類似度判定項目として類似プログラムの有無を判定するようにしてもよい。
サービスブロックで使用しているAPI、サービスブロックにおける情報の出力形式は、典型的には、サービスブロック本体に含まれる情報である。サービスブロックで使用しているAPIとは、ソフトウェアコンポーネントが互いにやりとりするために使用するインタフェースの仕様である。サービスブロックで使用しているAPIは、例えば、サービスブロックが規定する出力情報を生成するためにアクセスするインターネット上のウェブページ(サービスの情報源)のURL等についての情報を含む。サービスブロックにおける情報の出力形式とは、上述したように、他のブロックプログラムと連携する際に、当該他のブロックプログラムへ出力する情報の形式である。サービスブロックにおける情報の出力形式の付加情報とは、上述したように、当該出力形式の種類に応じて付加される情報である。
一方、サービスブロックの内容を表すアイコン画像、カテゴリ、タイトル、説明文は、典型的には、当該サービスブロックの付加的な情報に含まれる情報である。例えば、サービスブロックの内容を表すアイコン画像、カテゴリ、タイトル、説明文は、当該サービスブロックの作成時に入力部13に対する作者の入力に応じて設定される。
判定処理部24aは、承認申請の対象となる作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラム(類似判定データ)として記憶されているサービスブロックとについて、それぞれの上記類似度判定項目を抽出する。そして、判定処理部24aは、抽出した類似度判定項目を相互に比較し類似度を判定することで、類似プログラムの有無を判定する。
以下では、サービスブロックについての類似判定の具体例として、図13を参照して影響度順に基づく類似判定について説明し、図14、図15を参照して影響度評価値に基づく類似判定について説明する。
なお、以下で説明する具体例では、「類似度判定項目S1」が「サービスブロックの内容を表すアイコン画像」であり、「類似度判定項目S2」が「サービスブロックで使用しているAPI」であり、「類似度判定項目S3」が「サービスブロックにおける情報の出力形式」であり、「類似度判定項目S4」が「サービスブロックの内容を表すカテゴリ」であり、「類似度判定項目S5」が「サービスブロックの内容を表すタイトル」であり、「類似度判定項目S6」が「サービスブロックの内容を表す説明文」であるものとして説明する。「類似度判定項目S2」は、サービスブロックを構成する本質的な項目であり、類似の判定に対する影響度が相対的に高い傾向にある。「類似度判定項目S3」もサービスブロックを構成する本質的な項目であり、「類似度判定項目S2」に次いで類似の判定に対する影響度が高い傾向にある。「類似度判定項目S5」は、サービスブロックを表す付加的な項目であるが、比較的に作者の意図に沿ってサービスブロックの内容を表し易い傾向にあり、「類似度判定項目S3」に次いで類似の判定に対する影響度が高い傾向にある。「類似度判定項目S6」もサービスブロックを表す付加的な項目であるが、比較的に作者の意図に沿ってサービスブロックの内容を表し易い傾向にあり、「類似度判定項目S5」に次いで類似の判定に対する影響度が高い傾向にある。「類似度判定項目S1」、「類似度判定項目S4」は、いずれもサービスブロックを表す付加的な項目であり、類似の判定に対する影響度が相対的に低い傾向にある。なお、上述の類似の判定に対する影響度は、言い換えれば、類似判定の判定正確性に相当し、影響度が高いほど当該判定正確性も相対的に高くなる傾向にある。
また、図13、図14では、出力形式に付加情報が付加されている場合を例に挙げて説明する。この場合、上記に加えて、さらに「類似度判定項目S3-1」が「出力形式の付加情報」とされる。「類似度判定項目S3-1」は、「類似度判定項目S3」と同様にサービスブロックを構成する本質的な項目であり、「類似度判定項目S3」と同等程度に類似の判定に対する影響度が高い傾向にある。判定処理部24aは、出力形式に付加情報が付加されている場合には、出力形式の一致に加えて、付加情報が一致するか否か(近似するか否か)まで判断し、一致(近似)していれば、類似度が相対的に高いと判定する。判定処理部24aは、例えば、サービスブロックの出力形式が「文字列」である場合、類似判定に係るサービスブロック同士において、付加情報をなす「フォーマット形式」が相互に一致していれば、その時点で、類似度が相対的に高いと判定する。また、判定処理部24aは、例えば、サービスブロックの出力形式が「数値」である場合、類似判定に係るサービスブロック同士において、付加情報をなす「下限値」、「上限値」が一致、又は、所定の範囲で近似(略一致)していれば、その時点で、類似度が相対的に高いと判定する。例えば、サービスブロックにおいて規定される出力情報が「降水確率」である場合、付加情報をなす「下限値」、「上限値」は、それぞれ「下限値」=0、「上限値」=100と設定される蓋然性が高い。言い換えれば、付加情報をなす「下限値」、「上限値」がそれぞれ「下限値」=0、「上限値」=100と設定されている場合、サービスブロックにおいて規定される出力情報は、「降水確率」等である可能性が相対的に高いものと推定できる。判定処理部24aは、このような傾向を利用して、類似判定に係るサービスブロック同士において、付加情報をなす「下限値」、「上限値」によって規定される「数値」の範囲が相互に近い場合には類似度が相対的に高いと判定することができる。
一方、図15では、出力形式に付加情報が付加されていない場合を例に挙げて説明する。
<サービスブロックの類似判定の具体例1:影響度順に基づく類似判定>
この場合、判定処理部24aは、図13に示すように、類似度判定項目S1~S6、S3-1について、類似の判定に対する影響度が相対的に高い類似度判定項目を優先して順に類似プログラムの有無を判定する。
まず、判定処理部24aは、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとについて、「類似度判定項目S2」、すなわち、「サービスブロックで使用しているAPI」が一致するか否かを判定するステップ(ST201)を実行する。判定処理部24aは、例えば、各サービスブロックのプログラムコードからAPI情報を抽出して当該ステップ(ST201)の判定を行う。判定処理部24aは、この判定を記憶部23に承認済みプログラムとして記憶されているすべてのサービスブロックに対して行う(以下で説明する類似度判定項目についても同様である。)。
判定処理部24aは、「類似度判定項目S2」が一致すると判定した場合(ST201:Yes)、「類似度判定項目S3」、すなわち、「サービスブロックにおける情報の出力形式」が一致するか否かを判定するステップ(ST202)を実行する。判定処理部24aは、各サービスブロックのプログラムコードから情報の出力形式を抽出して当該ステップ(ST202)の判定を行う。
判定処理部24aは、「類似度判定項目S3」が一致すると判定した場合(ST202:Yes)、「サービスブロックにおける情報の出力形式」に「付加情報」が有るか否かを判定するステップ(ST203)を実行する。判定処理部24aは、各サービスブロックのプログラムコードに基づいて当該ステップ(ST203)の判定を行う。
判定処理部24aは、「付加情報」が有ると判定した場合(ST203:Yes)、「類似度判定項目S3-1」、すなわち、「出力形式の付加情報」が一致(近似)するか否かを判定するステップ(ST204)を実行する。判定処理部24aは、各サービスブロックのプログラムコードから出力形式の付加情報を抽出して当該ステップ(ST204)の判定を行う。「付加情報」の一致(近似)の判定は、当該「付加情報」が「文字列」における「フォーマット形式」である場合や当該「付加情報」が「数値」における「下限値」、「上限値」である場合等、上述した要領で行われる。
判定処理部24aは、「類似度判定項目S3-1」が一致(近似)すると判定した場合(ST204:Yes)、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとの類似度が「高」であるものと判定するステップ(ST205)を実行する。これにより、判定処理部24aは、作成プログラムを構成するサービスブロックとの類似度が「高」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST204)において、「類似度判定項目S3-1」が一致しないと判定した場合(ST204:No)、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとの類似度が「中」であるものと判定するステップ(ST210)を実行する。これにより、判定処理部24aは、作成プログラムを構成するサービスブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST203)において、「付加情報」が無いと判定した場合(ST203:No)、ステップ(ST204)の処理は行わずにステップ(ST205)に移行し、作成プログラムを構成するサービスブロックとの類似度が「高」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST202)において、「類似度判定項目S3」が一致しないと判定した場合(ST202:No)、「類似度判定項目S5」、すなわち、「サービスブロックの内容を表すタイトル」が一致するか否かを判定するステップ(ST206)を実行する。判定処理部24aは、例えば、各サービスブロックのタイトルからキーワードを抽出して当該ステップ(ST206)の判定を行う。
判定処理部24aは、「類似度判定項目S5」が一致すると判定した場合(ST206:Yes)、ステップ(ST210)に移行し、作成プログラムを構成するサービスブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST206)において、「類似度判定項目S5」が一致しないと判定した場合(ST206:No)、「類似度判定項目S6」、すなわち、「サービスブロックの内容を表す説明文」が一致するか否かを判定するステップ(ST207)を実行する。判定処理部24aは、例えば、各サービスブロックの説明文からキーワードや出現頻度が高いワードを抽出して当該ステップ(ST207)の判定を行う。
判定処理部24aは、「類似度判定項目S6」が一致すると判定した場合(ST207:Yes)、ステップ(ST210)に移行し、作成プログラムを構成するサービスブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST207)において、「類似度判定項目S6」が一致しないと判定した場合(ST207:No)、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとの類似度が「低」であるものと判定するステップ(ST214)を実行する。これにより、判定処理部24aは、作成プログラムを構成するサービスブロックとの類似度が「低」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST201)において、「類似度判定項目S2」が一致しないと判定した場合(ST201:No)、ステップ(ST206)と同様に、「類似度判定項目S5」が一致するか否かを判定するステップ(ST208)を実行する。
判定処理部24aは、「類似度判定項目S5」が一致すると判定した場合(ST208:Yes)、ステップ(ST207)と同様に、「類似度判定項目S6」が一致するか否かを判定するステップ(ST209)を実行する。
判定処理部24aは、「類似度判定項目S6」が一致すると判定した場合(ST209:Yes)、ステップ(ST210)に移行し、作成プログラムを構成するサービスブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST209)において、「類似度判定項目S6」が一致しないと判定した場合(ST209:No)、ステップ(ST214)に移行し、作成プログラムを構成するサービスブロックとの類似度が「低」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST208)において、「類似度判定項目S5」が一致しないと判定した場合(ST208:No)、ステップ(ST207)と同様に、「類似度判定項目S6」が一致するか否かを判定するステップ(ST211)を実行する。
判定処理部24aは、「類似度判定項目S6」が一致すると判定した場合(ST211:Yes)、ステップ(ST214)に移行し、作成プログラムを構成するサービスブロックとの類似度が「低」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST211)において、「類似度判定項目S6」が一致しないと判定した場合(ST211:No)、「類似度判定項目S1」、すなわち、「サービスブロックの内容を表すアイコン画像」が一致するか否かを判定するステップ(ST212)を実行する。判定処理部24aは、例えば、種々の検索エンジンによってサービスブロックのアイコン画像の類似画像を検索することで当該ステップ(ST212)の判定を行う。
判定処理部24aは、「類似度判定項目S1」が一致すると判定した場合(ST212:Yes)、「類似度判定項目S4」、すなわち、「サービスブロックの内容を表すカテゴリ」が一致するか否かを判定するステップ(ST213)を実行する。
判定処理部24aは、「類似度判定項目S4」が一致すると判定した場合(ST213:Yes)、ステップ(ST214)に移行し、作成プログラムを構成するサービスブロックとの類似度が「低」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST212)において、「類似度判定項目S1」が一致しないと判定した場合(ST212:No)、及び、ステップ(ST213)において、「類似度判定項目S4」が一致しないと判定した場合(ST214:No)、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとが「非類似」であるものと判定するステップ(ST215)を実行する。これにより、判定処理部24aは、作成プログラムを構成するサービスブロックと類似する類似プログラムが無いと判定し、この類似判定を終了する。
以上が影響度順に基づくサービスブロックの類似判定である。
<サービスブロックの類似判定の具体例2:影響度評価値に基づく類似判定1>
この場合、判定処理部24aは、図14に示すように、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目S1~S6、S3-1の評価値の合計に基づいて、類似プログラムの有無を判定する。
ここでは一例として、「類似度判定項目S2」は、類似の判定に対する影響度が最も高い傾向にあることから、評価値の重み付けが最も大きい「8」に設定される。「類似度判定項目S3」、及び、「類似度判定項目S3-1」は、「類似度判定項目S2」に次いで類似の判定に対する影響度が高い傾向にあるにあることから、評価値の重み付けが次に大きい「6」に設定される。「類似度判定項目S5」は、「類似度判定項目S3」、「類似度判定項目S3-1」に次いで類似の判定に対する影響度が高い傾向にあることから、評価値の重み付けが次に大きい「5」に設定される。「類似度判定項目S6」は、「類似度判定項目S5」に次いで類似の判定に対する影響度が高い傾向にあることから、評価値の重み付けが次に大きい「3」に設定される。「類似度判定項目S1」、「類似度判定項目S4」は、いずれも類似の判定に対する影響度が相対的に低い傾向にあることから、評価値の重み付けが次に大きい「1」に設定される。
判定処理部24aは、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとについて、類似度判定項目S1~S6、S3-1のうち一致する項目を判定、抽出する。そして、判定処理部24aは、記憶部23に承認済みプログラムとして記憶されているサービスブロックについて、類似度判定項目S1~S6、S3-1のうち作成プログラムを構成するサービスブロックと一致する項目の評価値を合計し、複数の類似度判定項目S1~S6、S3-1の評価値の合計を算出する。そして、判定処理部24aは、一致する類似度判定項目S1~S6、S3-1の合計の評価値に基づいて、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとの類似度を判定する。
例えば、判定処理部24aは、一致する類似度判定項目S1~S6、S3-1の合計の評価値が「20」以上であるサービスブロックを、作成プログラムを構成するサービスブロックとの類似度が「高」であるものと判定する。これにより、判定処理部24aは、類似度が「高」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目S1~S6、S3-1の合計の評価値が「8」以上「19」以下であるサービスブロックを、作成プログラムを構成するサービスブロックとの類似度が「中」であるものと判定する。これにより、判定処理部24aは、類似度が「中」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目S1~S6、S3-1の合計の評価値が「1」以上「7」以下であるサービスブロックを、作成プログラムを構成するサービスブロックとの類似度が「低」であるものと判定する。これにより、判定処理部24aは、類似度が「低」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目S1~S6の合計の評価値が「0」であるサービスブロックを、作成プログラムを構成するサービスブロックと「非類似」であるものと判定する。判定処理部24aは、上記判定を記憶部23に承認済みプログラムとして記憶されているすべてのサービスブロックに対して行う。
図14の例では、記憶部23に承認済みプログラムとして記憶されているサービスブロックのうち、第1のサービスブロックSB1は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S2、S3、S3-1、S4、S6が一致し、一致する類似度判定項目S1、S2、S3、S3-1、S4、S6の合計の評価値が「25」と算出され、類似度が「高」である類似プログラムであるものと判定される。第2のサービスブロックSB2は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S2、S3、S4、S6が一致し、一致する類似度判定項目S1、S2、S3、S4、S6の合計の評価値が「19」と算出され、類似度が「中」である類似プログラムであるものと判定される。第3のサービスブロックSB3は、作成プログラムを構成するサービスブロックと類似度判定項目S3、S3-1、S4、S6が一致し、一致する類似度判定項目S3、S3-1、S4、S6の合計の評価値が「16」と算出され、類似度が「中」である類似プログラムであるものと判定される。第4のサービスブロックSB4は、作成プログラムを構成するサービスブロックと類似度判定項目S3、S4、S6が一致し、一致する類似度判定項目S3、S4、S6の合計の評価値が「10」と算出され、類似度が「中」である類似プログラムであるものと判定される。第5のサービスブロックSB5は、作成プログラムを構成するサービスブロックと類似度判定項目S4、S5、S6が一致し、一致する類似度判定項目S4、S5、S6の合計の評価値が「9」と算出され、類似度が「中」である類似プログラムであるものと判定される。第6のサービスブロックSB6は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S4、S5が一致し、一致する類似度判定項目S1、S4、S5の合計の評価値が「7」と算出され、類似度が「低」である類似プログラムであるものと判定される。第7のサービスブロックSB7は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S4、S6が一致し、一致する類似度判定項目S1、S4、S6の合計の評価値が「5」と算出され、類似度が「低」である類似プログラムであるものと判定される。第8のサービスブロックSB8は、作成プログラムを構成するサービスブロックと類似度判定項目S4、S6が一致し、一致する類似度判定項目S4、S6の合計の評価値が「4」と算出され、類似度が「低」である類似プログラムであるものと判定される。第9のサービスブロックSB9は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S4が一致し、一致する類似度判定項目S1、S4の合計の評価値が「2」と算出され、類似度が「低」である類似プログラムであるものと判定される。第10のサービスブロックSB10は、作成プログラムを構成するサービスブロックと一致する類似度判定項目が無く、一致する類似度判定項目の合計の評価値が「0」と算出され、当該サービスブロックと「非類似」であるものと判定される。
判定処理部24aは、作成プログラムを構成するサービスブロックとの類似度が「高」、「中」、「低」である類似プログラムがいずれも無い場合、すなわち、記憶部23に承認済みプログラムとして記憶されているすべてのサービスブロックが当該サービスブロックと「非類似」である場合、作成プログラムを構成するサービスブロックと類似する類似プログラムが無いと判定する。
以上が付加情報が有る場合の影響度評価値に基づくサービスブロックの類似判定である。
<サービスブロックの類似判定の具体例3:影響度評価値に基づく類似判定2>
この場合、判定処理部24aは、図15に示すように、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目S1~S6の評価値の合計に基づいて、類似プログラムの有無を判定する。ここでの類似度判定項目S1~S6の評価値の重み付けは、類似度判定項目として類似度判定項目S3-1が存在しないこと以外は上記の図14と同様である。この場合も、判定処理部24aは、上記と同様に、一致する類似度判定項目S1~S6の合計の評価値を算出し、当該合計の評価値に基づいて、作成プログラムを構成するサービスブロックと、記憶部23に承認済みプログラムとして記憶されているサービスブロックとの類似度を判定する。
この例では、判定処理部24aは、一致する類似度判定項目S1~S6の合計の評価値が「14」以上であるサービスブロックを、作成プログラムを構成するサービスブロックとの類似度が「高」であるものと判定する。これにより、判定処理部24aは、類似度が「高」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目S1~S6の合計の評価値が「8」以上「13」以下であるサービスブロックを、作成プログラムを構成するサービスブロックとの類似度が「中」であるものと判定する。これにより、判定処理部24aは、類似度が「中」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目S1~S6の合計の評価値が「7」以上「4」以下であるサービスブロックを、作成プログラムを構成するサービスブロックとの類似度が「低」であるものと判定する。これにより、判定処理部24aは、類似度が「低」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目S1~S6の合計の評価値が「0」であるサービスブロックを、作成プログラムを構成するサービスブロックと「非類似」であるものと判定する。判定処理部24aは、上記判定を記憶部23に承認済みプログラムとして記憶されているすべてのサービスブロックに対して行う。
図15の例では、記憶部23に承認済みプログラムとして記憶されているサービスブロックのうち、第1のサービスブロックSB1は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S2、S3、S4、S6が一致し、一致する類似度判定項目S1、S2、S3、S4、S6の合計の評価値が「19」と算出され、類似度が「高」である類似プログラムであるものと判定される。第2のサービスブロックSB2は、作成プログラムを構成するサービスブロックと類似度判定項目S3、S4、S6が一致し、一致する類似度判定項目S3、S4、S6の合計の評価値が「10」と算出され、類似度が「中」である類似プログラムであるものと判定される。第3のサービスブロックSB3は、作成プログラムを構成するサービスブロックと類似度判定項目S4、S5、S6が一致し、一致する類似度判定項目S4、S5、S6の合計の評価値が「9」と算出され、類似度が「中」である類似プログラムであるものと判定される。第4のサービスブロックSB4は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S4、S5が一致し、一致する類似度判定項目S1、S4、S5の合計の評価値が「7」と算出され、類似度が「低」である類似プログラムであるものと判定される。第5のサービスブロックSB5は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S4、S6が一致し、一致する類似度判定項目S1、S4、S6の合計の評価値が「5」と算出され、類似度が「低」である類似プログラムであるものと判定される。第6のサービスブロックSB6は、作成プログラムを構成するサービスブロックと類似度判定項目S4、S6が一致し、一致する類似度判定項目S4、S6の合計の評価値が「4」と算出され、類似度が「低」である類似プログラムであるものと判定される。第7のサービスブロックSB7は、作成プログラムを構成するサービスブロックと類似度判定項目S1、S4が一致し、一致する類似度判定項目S1、S4の合計の評価値が「2」と算出され、類似度が「低」である類似プログラムであるものと判定される。第8のサービスブロックSB8は、作成プログラムを構成するサービスブロックと一致する類似度判定項目が無く、一致する類似度判定項目の合計の評価値が「0」と算出され、当該サービスブロックと「非類似」であるものと判定される。
判定処理部24aは、作成プログラムを構成するサービスブロックとの類似度が「高」、「中」、「低」である類似プログラムがいずれも無い場合、すなわち、記憶部23に承認済みプログラムとして記憶されているすべてのサービスブロックが当該サービスブロックと「非類似」である場合、作成プログラムを構成するサービスブロックと類似する類似プログラムが無いと判定する。
以上が付加情報が無い場合の影響度評価値に基づくサービスブロックの類似判定である。
なお、判定処理部24aは、サービスブロックの類似判定において、例えば、作成プログラムを構成するサービスブロックとの類似度が「中」や「低」である類似プログラムが有ると判定した場合、さらに、係員の判断、操作を介在させてより詳細に類似プログラムの有無を判定してもよい。
また、図12で説明した報知ステップ(ST5)、判定結果出力ステップ(ST6)は、上述のようにして判定された類似プログラムの類似度に応じた内容で適宜実行されてもよい。例えば、動作処理部16bは、類似度が「高」である類似プログラムが有ると判定された場合、出力部14(ディスプレイ14a、スピーカ14b)から「同様のプログラムが既に登録されています。それでも、審査申請しますか?」等の趣旨の情報を出力させてもよい。また例えば、動作処理部16bは、類似度が「中」である類似プログラムが有ると判定された場合、出力部14から「類似のプログラムが既に登録されています。それでも、審査申請しますか?」等の趣旨の情報を出力させてもよい。また例えば、動作処理部16bは、類似度が「低」である類似プログラムが有ると判定された場合、「やや類似するプログラムが既に登録されていますが、このまま、審査申請しますか?」等の趣旨の情報を出力させてもよい。
また、判定処理部24aは、影響度評価値に基づくサービスブロックの類似判定において、一致する類似度判定項目の合計の評価値が「0」であるサービスブロックのみを、作成プログラムを構成するサービスブロックと「非類似」であるものと判定するものとして説明したがこれに限らない。判定処理部24aは、一致する類似度判定項目の合計の評価値が相対的に低いサービスブロック、例えば、合計の評価値が「3」以下であるサービスブロックも含めて、作成プログラムを構成するサービスブロックと「非類似」であるものと判定してもよい。
<トリガブロックの類似判定>
判定処理部24aは、トリガブロックと類似する類似プログラムの有無を判定する場合、例えば、当該トリガブロックにおける情報の出力形式等を類似度判定項目とし、当該類似度判定項目に基づいて類似プログラムの有無を判定する。判定処理部24aは、トリガブロックにおける情報の出力形式に上述した付加情報も付されている場合には当該付加情報も類似度判定項目として類似プログラムの有無を判定するようにしてもよい。判定処理部24aは、加えて、例えば、当該トリガブロックの内容を表すタイトル、説明文等を類似度判定項目として類似プログラムの有無を判定するようにしてもよい。なお、トリガブロックの類似判定の説明においては、上述したサービスブロックの類似判定の説明と重複する説明については一部省略している。
トリガブロックにおける情報の出力形式は、典型的には、トリガブロック本体に含まれる情報である。トリガブロックにおける情報の出力形式とは、上述したように、他のブロックプログラムと連携する際に、当該他のブロックプログラムへ出力する情報の形式である。トリガブロックにおける情報の出力形式の付加情報とは、上述したように、当該出力形式の種類に応じて付加される情報である。
一方、トリガブロックの内容を表すタイトル、説明文は、典型的には、当該トリガブロックの付加的な情報に含まれる情報である。例えば、トリガブロックの内容を表すタイトル、説明文は、当該トリガブロックの作成時に入力部13に対する作者の入力に応じて設定される。
判定処理部24aは、承認申請の対象となる作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラム(類似判定データ)として記憶されているトリガブロックとについて、それぞれの上記類似度判定項目を抽出する。そして、判定処理部24aは、抽出した類似度判定項目を相互に比較し類似度を判定することで、類似プログラムの有無を判定する。
以下では、トリガブロックについての類似判定の具体例として、図16を参照して影響度順に基づく類似判定について説明し、図17、図18を参照して影響度評価値に基づく類似判定について説明する。
なお、以下で説明する具体例では、「類似度判定項目T1」が「トリガブロックにおける情報の出力形式」であり、「類似度判定項目T2」が「トリガブロックの内容を表すタイトル」であり、「類似度判定項目T3」が「トリガブロックの内容を表す説明文」であるものとして説明する。「類似度判定項目T1」は、トリガブロックを構成する本質的な項目であり、類似の判定に対する影響度が相対的に高い傾向にある。「類似度判定項目T2」は、トリガブロックを表す付加的な項目であるが、比較的に作者の意図に沿ってトリガブロックの内容を表し易い傾向にあり、「類似度判定項目T1」に次いで類似の判定に対する影響度が高い傾向にある。「類似度判定項目T3」もトリガブロックを表す付加的な項目であるが、「類似度判定項目T1」、「類似度判定項目T2」と比較すると、類似の判定に対する影響度が相対的に低い傾向にある。
また、図16、図17では、出力形式に付加情報が付加されている場合を例に挙げて説明する。この場合、上記に加えて、さらに「類似度判定項目T1-1」が「出力形式の付加情報」とされる。「類似度判定項目T1-1」は、「類似度判定項目T1」と同様にトリガブロックを構成する本質的な項目であり、「類似度判定項目T1」に次いで類似の判定に対する影響度が高い傾向にある。判定処理部24aは、出力形式に付加情報が付加されている場合には、出力形式の一致に加えて、付加情報が一致するか否か(近似するか否か)まで判断し、一致(近似)していれば、類似度が相対的に高いと判定する。
一方、図18では、出力形式に付加情報が付加されていない場合を例に挙げて説明する。
<トリガブロックの類似判定の具体例1:影響度順に基づく類似判定>
この場合、判定処理部24aは、図16に示すように、類似度判定項目T1~T3、T1-1について、類似の判定に対する影響度が相対的に高い類似度判定項目を優先して順に類似プログラムの有無を判定する。概略的には、判定処理部24aは、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとについて、類似度判定項目T1が一致しないと判定した場合、両者が非類似であるものと判定する。一方、判定処理部24aは、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとについて、類似度判定項目T1が一致すると判定した場合、両者が類似であるものと判定し、類似度判定項目T1-1、T2、T3の一致の有無に応じてその類似度を判定する。
まず、判定処理部24aは、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとについて、「類似度判定項目T1」、すなわち、「トリガブロックにおける情報の出力形式」が一致するか否かを判定するステップ(ST301)を実行する。判定処理部24aは、各トリガブロックのプログラムコードからトリガに関する情報を抽出して当該ステップ(ST301)の判定を行う。判定処理部24aは、この判定を記憶部23に承認済みプログラムとして記憶されているすべてのトリガブロックに対して行う(以下で説明する類似度判定項目についても同様である。)。
判定処理部24aは、「類似度判定項目T1」が一致すると判定した場合(ST301:Yes)、「トリガブロックにおける情報の出力形式」に「付加情報」が有るか否かを判定するステップ(ST302)を実行する。判定処理部24aは、各トリガブロックのプログラムコードに基づいて当該ステップ(ST302)の判定を行う。
判定処理部24aは、「付加情報」が有ると判定した場合(ST302:Yes)、「類似度判定項目T1-1」、すなわち、「出力形式の付加情報」が一致(近似)するか否かを判定するステップ(ST303)を実行する。判定処理部24aは、各トリガブロックのプログラムコードから出力形式の付加情報を抽出して当該ステップ(ST303)の判定を行う。「付加情報」の一致(近似)の判定は、当該「付加情報」が「文字列」における「フォーマット形式」である場合や当該「付加情報」が「数値」における「下限値」、「上限値」である場合等、上述した要領で行われる。
判定処理部24aは、「類似度判定項目T1-1」が一致(近似)すると判定した場合(ST303:Yes)、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとの類似度が「高」であるものと判定するステップ(ST304)を実行する。これにより、判定処理部24aは、作成プログラムを構成するトリガブロックとの類似度が「高」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST303)において、「類似度判定項目T1-1」が一致しないと判定した場合(ST303:No)、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとの類似度が「中」であるものと判定するステップ(ST307)を実行する。これにより、判定処理部24aは、作成プログラムを構成するトリガブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST302)において、「付加情報」が無いと判定した場合(ST302:No)、「類似度判定項目T2」、すなわち、「トリガブロックの内容を表すタイトル」が一致するか否かを判定するステップ(ST305)を実行する。判定処理部24aは、例えば、各トリガブロックのタイトルからキーワードを抽出して当該ステップ(ST305)の判定を行う。
判定処理部24aは、「類似度判定項目T2」が一致すると判定した場合(ST305:Yes)、ステップ(ST304)に移行し、作成プログラムを構成するトリガブロックとの類似度が「高」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST305)において、「類似度判定項目T2」が一致しないと判定した場合(ST305:No)、「類似度判定項目T3」、すなわち、「トリガブロックの内容を表す説明文」が一致するか否かを判定するステップ(ST306)を実行する。判定処理部24aは、例えば、各トリガブロックの説明文からキーワードや出現頻度が高いワードを抽出して当該ステップ(ST306)の判定を行う。
判定処理部24aは、「類似度判定項目T3」が一致すると判定した場合(ST306:Yes)、ステップ(ST307)に移行し、作成プログラムを構成するトリガブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST306)において、「類似度判定項目T3」が一致しないと判定した場合(ST306:No)、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとの類似度が「低」であるものと判定するステップ(ST308)を実行する。これにより、判定処理部24aは、作成プログラムを構成するトリガブロックとの類似度が「低」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST301)において、「類似度判定項目T1」が一致しないと判定した場合(ST301:No)、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとが「非類似」であるものと判定するステップ(ST309)を実行する。これにより、判定処理部24aは、作成プログラムを構成するトリガブロックと類似する類似プログラムが無いと判定し、この類似判定を終了する。
以上が影響度順に基づくトリガブロックの類似判定である。
<トリガブロックの類似判定の具体例2:影響度評価値に基づく類似判定1>
この場合、判定処理部24aは、図17に示すように、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目T1~T3、T1-1の評価値の合計に基づいて、類似プログラムの有無を判定する。
ここでは一例として、「類似度判定項目T1」は、類似の判定に対する影響度が最も高い傾向にあることから、評価値の重み付けが最も大きい「5」に設定される。「類似度判定項目T1-1」は、「類似度判定項目T1」に次いで類似の判定に対する影響度が高い傾向にあるにあることから、評価値の重み付けが次に大きい「4」に設定される。「類似度判定項目T2」は、「類似度判定項目T1-1」に次いで類似の判定に対する影響度が高い傾向にあるにあることから、評価値の重み付けが次に大きい「2」に設定される。「類似度判定項目T3」は、「類似度判定項目T1」、「類似度判定項目T1-1」、「類似度判定項目T2」と比較すると、類似の判定に対する影響度が相対的に低い傾向にあることから、評価値の重み付けが次に大きい「1」に設定される。
判定処理部24aは、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとについて、類似度判定項目T1~T3、T1-1のうち一致する項目を判定、抽出する。そして、判定処理部24aは、記憶部23に承認済みプログラムとして記憶されているトリガブロックについて、類似度判定項目T1~T3、T1-1のうち作成プログラムを構成するトリガブロックと一致する項目の評価値を合計し、複数の類似度判定項目T1~T3、T1-1の評価値の合計を算出する。そして、判定処理部24aは、一致する類似度判定項目T1~T3、T1-1の合計の評価値に基づいて、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとの類似度を判定する。
例えば、判定処理部24aは、一致する類似度判定項目T1~T3、T1-1の合計の評価値が「9」以上であるトリガブロックを、作成プログラムを構成するトリガブロックとの類似度が「高」であるものと判定する。これにより、判定処理部24aは、類似度が「高」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目T1~T3、T1-1の合計の評価値が「6」以上「8」以下であるであるトリガブロックを、作成プログラムを構成するトリガブロックとの類似度が「中」であるものと判定する。これにより、判定処理部24aは、類似度が「中」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目T1~T3、T1-1の合計の評価値が「5」であるトリガブロックを、作成プログラムを構成するトリガブロックとの類似度が「低」であるものと判定する。これにより、判定処理部24aは、類似度が「低」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目T1~T3、T1-1の合計の評価値が「4」以下であるトリガブロックを、作成プログラムを構成するトリガブロックと「非類似」であるものと判定する。判定処理部24aは、上記判定を記憶部23に承認済みプログラムとして記憶されているすべてのトリガブロックに対して行う。
図17の例では、記憶部23に承認済みプログラムとして記憶されているトリガブロックのうち、第1のトリガブロックTB1は、作成プログラムを構成するトリガブロックと類似度判定項目T1、T1-1、T2、T3が一致し、一致する類似度判定項目T1、T1-1、T2、T3の合計の評価値が「12」と算出され、類似度が「高」である類似プログラムであるものと判定される。第2のトリガブロックTB2は、作成プログラムを構成するトリガブロックと類似度判定項目T1、T2、T3が一致し、一致する類似度判定項目T1、T2、T3の合計の評価値が「8」と算出され、類似度が「中」である類似プログラムであるものと判定される。第3のトリガブロックTB3は、作成プログラムを構成するトリガブロックと類似度判定項目T1、T2が一致し、一致する類似度判定項目T1、T2の合計の評価値が「7」と算出され、類似度が「中」である類似プログラムであるものと判定される。第4のトリガブロックTB4は、作成プログラムを構成するトリガブロックと類似度判定項目T1、T3が一致し、一致する類似度判定項目T1、T3の合計の評価値が「6」と算出され、類似度が「中」である類似プログラムであるものと判定される。第5のトリガブロックTB5は、作成プログラムを構成するトリガブロックと類似度判定項目T1が一致し、一致する類似度判定項目T1の合計の評価値が「5」と算出され、当該トリガブロックと「低」であるものと判定される。第6のトリガブロックTB6は、作成プログラムを構成するトリガブロックと類似度判定項目T2、T3が一致し、一致する類似度判定項目T2、T3の合計の評価値が「3」と算出され、当該トリガブロックと「非類似」であるものと判定される。第7のトリガブロックTB7は、作成プログラムを構成するトリガブロックと類似度判定項目T2が一致し、一致する類似度判定項目T2の合計の評価値が「2」と算出され、当該トリガブロックと「非類似」であるものと判定される。第8のトリガブロックTB8は、作成プログラムを構成するトリガブロックと類似度判定項目T3が一致し、一致する類似度判定項目T3の合計の評価値が「1」と算出され、当該トリガブロックと「非類似」であるものと判定される。第9のトリガブロックTB9は、作成プログラムを構成するトリガブロックと一致する類似度判定項目が無く、一致する類似度判定項目の合計の評価値が「0」と算出され、当該トリガブロックと「非類似」であるものと判定される。
判定処理部24aは、作成プログラムを構成するトリガブロックとの類似度が「高」、「中」、「低」である類似プログラムがいずれも無い場合、すなわち、記憶部23に承認済みプログラムとして記憶されているすべてのトリガブロックが当該トリガブロックと「非類似」である場合、作成プログラムを構成するトリガブロックと類似する類似プログラムが無いと判定する。
以上が付加情報が有る場合の影響度評価値に基づくトリガブロックの類似判定である。
<トリガブロックの類似判定の具体例3:影響度評価値に基づく類似判定2>
この場合、判定処理部24aは、図18に示すように、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目T1~T3の評価値の合計に基づいて、類似プログラムの有無を判定する。ここでの類似度判定項目T1~T3の評価値の重み付けは、類似度判定項目として類似度判定項目T1-1が存在しないこと以外は上記の図17と同様である。この場合も、判定処理部24aは、上記と同様に、一致する類似度判定項目T1~T3の合計の評価値を算出し、当該合計の評価値に基づいて、作成プログラムを構成するトリガブロックと、記憶部23に承認済みプログラムとして記憶されているトリガブロックとの類似度を判定する。
この例では、判定処理部24aは、一致する類似度判定項目T1~T3の合計の評価値が「7」以上であるトリガブロックを、作成プログラムを構成するトリガブロックとの類似度が「高」であるものと判定する。これにより、判定処理部24aは、類似度が「高」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目T1~T3の合計の評価値が「6」であるトリガブロックを、作成プログラムを構成するトリガブロックとの類似度が「中」であるものと判定する。これにより、判定処理部24aは、類似度が「中」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目T1~T3の合計の評価値が「5」であるトリガブロックを、作成プログラムを構成するトリガブロックとの類似度が「低」であるものと判定する。これにより、判定処理部24aは、類似度が「低」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目T1~T3の合計の評価値が「4」以下であるトリガブロックを、作成プログラムを構成するトリガブロックと「非類似」であるものと判定する。判定処理部24aは、上記判定を記憶部23に承認済みプログラムとして記憶されているすべてのトリガブロックに対して行う。
図18の例では、記憶部23に承認済みプログラムとして記憶されているトリガブロックのうち、第1のトリガブロックTB1は、作成プログラムを構成するトリガブロックと類似度判定項目T1、T2、T3が一致し、一致する類似度判定項目T1、T2、T3の合計の評価値が「8」と算出され、類似度が「高」である類似プログラムであるものと判定される。第2のトリガブロックTB2は、作成プログラムを構成するトリガブロックと類似度判定項目T1、T2が一致し、一致する類似度判定項目T1、T2の合計の評価値が「7」と算出され、類似度が「高」である類似プログラムであるものと判定される。第3のトリガブロックTB3は、作成プログラムを構成するトリガブロックと類似度判定項目T1、T3が一致し、一致する類似度判定項目T1、T3の合計の評価値が「6」と算出され、類似度が「中」である類似プログラムであるものと判定される。第4のトリガブロックTB4は、作成プログラムを構成するトリガブロックと類似度判定項目T1が一致し、一致する類似度判定項目T1の合計の評価値が「5」と算出され、類似度が「低」である類似プログラムであるものと判定される。第5のトリガブロックTB5は、作成プログラムを構成するトリガブロックと類似度判定項目T2、T3が一致し、一致する類似度判定項目T2、T3の合計の評価値が「3」と算出され、当該トリガブロックと「非類似」であるものと判定される。第6のトリガブロックTB6は、作成プログラムを構成するトリガブロックと類似度判定項目T2が一致し、一致する類似度判定項目T2の合計の評価値が「2」と算出され、当該トリガブロックと「非類似」であるものと判定される。第7のトリガブロックTB7は、作成プログラムを構成するトリガブロックと類似度判定項目T3が一致し、一致する類似度判定項目T3の合計の評価値が「1」と算出され、当該トリガブロックと「非類似」であるものと判定される。第8のトリガブロックTB8は、作成プログラムを構成するトリガブロックと一致する類似度判定項目が無く、一致する類似度判定項目の合計の評価値が「0」と算出され、当該トリガブロックと「非類似」であるものと判定される。
判定処理部24aは、作成プログラムを構成するトリガブロックとの類似度が「高」、「中」、「低」である類似プログラムがいずれも無い場合、すなわち、記憶部23に承認済みプログラムとして記憶されているすべてのトリガブロックが当該トリガブロックと「非類似」である場合、作成プログラムを構成するトリガブロックと類似する類似プログラムが無いと判定する。
以上が付加情報がない場合の影響度評価値に基づくトリガブロックの類似判定である。
なお、判定処理部24aは、影響度評価値に基づくトリガブロックの類似判定において、一致する類似度判定項目T1~T3の合計の評価値が「4」以下であるトリガブロックを、作成プログラムを構成するトリガブロックと「非類似」であるものと判定するものとして説明したがこれに限らない。判定処理部24aは、一致する類似度判定項目T1~T3の合計の評価値が「0」であるトリガブロックのみを、作成プログラムを構成するトリガブロックと「非類似」であるものと判定してもよい。
<アクションブロックの類似判定>
判定処理部24aは、アクションブロックと類似する類似プログラムの有無を判定する場合、例えば、当該アクションブロックで使用しているアプリケーションプログラミングインターフェース(API)、又は、当該アクションブロックにおける情報の入力形式等を類似度判定項目とし、当該類似度判定項目に基づいて類似プログラムの有無を判定する。判定処理部24aは、アクションブロックにおける情報の入力形式に上述した付加情報も付されている場合には当該付加情報も類似度判定項目として類似プログラムの有無を判定するようにしてもよい。判定処理部24aは、加えて、例えば、当該アクションブロックの内容を表すタイトル、説明文、設定情報(Preference)等を類似度判定項目として類似プログラムの有無を判定するようにしてもよい。なお、アクションブロックの類似判定の説明においては、上述したサービスブロック、トリガブロックの類似判定の説明と重複する説明については一部省略している。
アクションブロックで使用しているAPI、アクションブロックにおける情報の入力形式、設定情報は、典型的には、アクションブロック本体に含まれる情報である。アクションブロックで使用しているAPIとは、上述と同様に、ソフトウェアコンポーネントが互いにやりとりするために使用するインタフェースの仕様である。例えば、アクションブロックで使用しているAPIは、アクションブロックが規定するアクションを実行するためにアクセスするインターネット上のウェブ ページのURL等についての情報を含む。アクションブロックにおける情報の入力形式とは、上述したように、他のブロックプログラムと連携する際に、当該他のブロックプログラムから入力される情報の形式である。アクションブロックにおける情報の入力形式の付加情報とは、上述したように、当該入力形式の種類に応じて付加される情報である。設定情報は、アクションブロックによって規定されたアクションを実行するためにユーザによって予め設定されることを要する項目である。例えば、アクションが「メールの送信」である場合、設定情報は「宛先」、「件名」、「本文」等の項目である。
一方、アクションブロックの内容を表すタイトル、説明文は、典型的には、当該アクションブロックの付加的な情報に含まれる情報である。例えば、アクションブロックの内容を表すタイトル、説明文は、当該アクションブロックの作成時に入力部13に対する作者の入力に応じて設定される。
判定処理部24aは、承認申請の対象となる作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラム(類似判定データ)として記憶されているアクションブロックとについて、それぞれの上記類似度判定項目を抽出する。そして、判定処理部24aは、抽出した類似度判定項目を相互に比較し類似度を判定することで、類似プログラムの有無を判定する。
なお、判定処理部24aは、アクションブロックが規定する内容、例えば、アクションやアクション実行部の種類に応じて類似判定で用いる類似度判定項目を異ならせるようにしてもよい。
以下では、アクションブロックについての類似判定の具体例として、図19、図20を参照して影響度順に基づく類似判定について説明し、図21、図22、図23を参照して影響度評価値に基づく類似判定について説明する。
なお、以下で説明する具体例では、「類似度判定項目A1」が「アクションブロックにおける情報の入力形式」であり、「類似度判定項目A2」が「アクションブロックの内容を表すタイトル」であり、「類似度判定項目A3」が「アクションブロックの内容を表す説明文」であり、「類似度判定項目A4」が「アクションブロックで使用しているAPI」であり、「類似度判定項目A5」が「アクションブロックの設定情報」である。「類似度判定項目A1」、「類似度判定項目A4」は、共にアクションブロックを構成する本質的な項目であり、類似の判定に対する影響度が相対的に高い傾向にある。「類似度判定項目A5」もアクションブロックを構成する本質的な項目であり、「類似度判定項目A1」、「類似度判定項目A4」に次いで類似の判定に対する影響度が高い傾向にある。「類似度判定項目A2」は、アクションブロックを表す付加的な項目であり、比較的に作者の意図に沿ってアクションブロックの内容を表し易い傾向にあるが、「類似度判定項目A1」、「類似度判定項目A4」、「類似度判定項目A5」と比較すると、類似の判定に対する影響度が相対的に低い傾向にある。「類似度判定項目A3」もアクションブロックを表す付加的な項目であり、「類似度判定項目A2」と比較すると、類似の判定に対する影響度がさらに低い傾向にある。
また、図19、図20、図21では、入力形式に付加情報が付加されている場合を例に挙げて説明する。この場合、上記に加えて、さらに「類似度判定項目A1-1」が「入力形式の付加情報」とされる。「類似度判定項目A1-1」は、「類似度判定項目A1」と同様にアクションブロックを構成する本質的な項目であり、「類似度判定項目A1」に次いで類似の判定に対する影響度が高い傾向にある。判定処理部24aは、入力形式に付加情報が付加されている場合には、入力形式の一致に加えて、付加情報が一致するか否か(近似するか否か)まで判断し、一致(近似)していれば、類似度が相対的に高いと判定する。
一方、図22、図23では、入力形式に付加情報が付加されていない場合を例に挙げて説明する。
<アクションブロックの類似判定の具体例1:影響度順に基づく類似判定>
この場合、判定処理部24aは、図19、図20に示すように、類似度判定項目A1~A5、A1-1について、類似の判定に対する影響度が相対的に高い類似度判定項目を優先して順に類似プログラムの有無を判定する。概略的には、判定処理部24aは、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとについて、類似度判定項目A1が一致しないと判定した場合、両者が非類似であるものと判定する。一方、判定処理部24aは、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとについて、類似度判定項目A1が一致すると判定した場合、両者が類似であるものと判定し、類似度判定項目A1-1、A2、A3、A4、A5の一致の有無に応じてその類似度を判定する。
まず、判定処理部24aは、図19に示すように、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとについて、「類似度判定項目A1」、すなわち、「アクションブロックにおける情報の入力形式」が一致するか否かを判定するステップ(ST401)を実行する。判定処理部24aは、各アクションブロックのプログラムコードからアクションに関する情報を抽出して当該ステップ(ST401)の判定を行う。判定処理部24aは、この判定を記憶部23に承認済みプログラムとして記憶されているすべてのアクションブロックに対して行う(以下で説明する類似度判定項目についても同様である。)。
判定処理部24aは、「類似度判定項目A1」が一致すると判定した場合(ST401:Yes)、「アクションブロックにおける情報の入力形式」に「付加情報」が有るか否かを判定するステップ(ST402)を実行する。判定処理部24aは、各アクションブロックのプログラムコードに基づいて当該ステップ(ST402)の判定を行う。
判定処理部24aは、「付加情報」が有ると判定した場合(ST402:Yes)、「付加情報」が「文字列」における「フォーマット形式」であり、当該「フォーマット形式」が「email(メール)」であるか否かを判定するステップ(ST403)を実行する。
判定処理部24aは、「付加情報」が「文字列」における「フォーマット形式」ではないと判定した場合、及び、「付加情報」が「文字列」における「フォーマット形式」であるが当該「フォーマット形式」が「email(メール)」ではないと判定した場合(ST403:No)、「類似度判定項目A1-1」、すなわち、「入力形式の付加情報」が一致(近似)するか否かを判定するステップ(ST404)を実行する。判定処理部24aは、各アクションブロックのプログラムコードから入力形式の付加情報を抽出して当該ステップ(ST404)の判定を行う。「付加情報」の一致(近似)の判定は、当該「付加情報」が「文字列」における「フォーマット形式」である場合や当該「付加情報」が「数値」における「下限値」、「上限値」である場合等、上述した要領で行われる。
判定処理部24aは、「類似度判定項目A1-1」が一致(近似)すると判定した場合(ST404:Yes)、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとの類似度が「高」であるものと判定するステップ(ST405)を実行する。これにより、判定処理部24aは、作成プログラムを構成するアクションブロックとの類似度が「高」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST404)において、「類似度判定項目A1-1」が一致しないと判定した場合(ST404:No)、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとの類似度が「中」であるものと判定するステップ(ST408)を実行する。これにより、判定処理部24aは、作成プログラムを構成するアクションブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST402)において、「付加情報」が無いと判定した場合(ST402:No)、「類似度判定項目A2」、すなわち、「アクションブロックの内容を表すタイトル」が一致するか否かを判定するステップ(ST406)を実行する。判定処理部24aは、例えば、各アクションブロックのタイトルからキーワードを抽出して当該ステップ(ST406)の判定を行う。
判定処理部24aは、「類似度判定項目A2」が一致すると判定した場合(ST406:Yes)、ステップ(ST405)に移行し、作成プログラムを構成するアクションブロックとの類似度が「高」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST406)において、「類似度判定項目A2」が一致しないと判定した場合(ST406:No)、「類似度判定項目A3」、すなわち、「アクションブロックの内容を表す説明文」が一致するか否かを判定するステップ(ST407)を実行する。判定処理部24aは、例えば、各アクションブロックの説明文からキーワードや出現頻度が高いワードを抽出して当該ステップ(ST407)の判定を行う。
判定処理部24aは、「類似度判定項目A3」が一致すると判定した場合(ST407:Yes)、ステップ(ST408)に移行し、作成プログラムを構成するアクションブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST407)において、「類似度判定項目A3」が一致しないと判定した場合(ST407:No)、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとの類似度が「低」であるものと判定するステップ(ST409)を実行する。これにより、判定処理部24aは、作成プログラムを構成するアクションブロックとの類似度が「低」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST401)において、「類似度判定項目A1」が一致しないと判定した場合(ST401:No)、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとが「非類似」であるものと判定するステップ(ST410)を実行する。これにより、判定処理部24aは、作成プログラムを構成するアクションブロックと類似する類似プログラムが無いと判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST403)において、「付加情報」が「文字列」における「フォーマット形式」であり、当該「フォーマット形式」が「email(メール)」であると判定した場合(ST403:Yes)、図20に示すように、「類似度判定項目A4」、すなわち、「アクションブロックで使用しているAPI」が一致するか否かを判定するステップ(ST411)を実行する。判定処理部24aは、各アクションブロックのプログラムコードからAPI情報を抽出して当該ステップ(ST411)の判定を行う。
判定処理部24aは、「類似度判定項目A4」が一致すると判定した場合(ST411:Yes)、「類似度判定項目A5」、すなわち、「アクションブロックの設定情報」が一致するか否かを判定するステップ(ST412)を実行する。判定処理部24aは、例えば、各アクションブロックのプログラムコードから設定情報を抽出して当該ステップ(ST412)の判定を行う。
判定処理部24aは、「類似度判定項目A5」が一致すると判定した場合(ST412:Yes)、ステップ(ST405)に移行し、作成プログラムを構成するアクションブロックとの類似度が「高」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST412)において、「類似度判定項目A5」が一致しないと判定した場合(ST412:No)、ステップ(ST408)に移行し、作成プログラムを構成するアクションブロックとの類似度が「中」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST411)において、「類似度判定項目A4」が一致しないと判定した場合(ST411:No)、ステップ(ST412)と同様に、「類似度判定項目A5」が一致するか否かを判定するステップ(ST413)を実行する。
判定処理部24aは、「類似度判定項目A5」が一致すると判定した場合(ST413:Yes)、ステップ(ST409)に移行し、作成プログラムを構成するアクションブロックとの類似度が「低」である類似プログラムが有ると判定し、この類似判定を終了する。
判定処理部24aは、ステップ(ST413)において、「類似度判定項目A5」が一致しないと判定した場合(ST413:No)、ステップ(ST410)に移行し、作成プログラムを構成するアクションブロックと類似する類似プログラムが無いと判定し、この類似判定を終了する。
以上が影響度順に基づくアクションブロックの類似判定である。
<アクションブロックの類似判定の具体例2:影響度評価値に基づく類似判定1>
まず、アクションが1つの動作対象機器で完結するタイプのアクションブロックで、かつ、付加情報が有る場合の類似判定について説明する。この場合、判定処理部24aは、図21に示すように、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目A1~A3、A1-1の評価値の合計に基づいて、類似プログラムの有無を判定する。
ここでは一例として、「類似度判定項目A1」は、類似の判定に対する影響度が最も高い傾向にあることから、評価値の重み付けが最も大きい「5」に設定される。「類似度判定項目A1-1」は、「類似度判定項目A1」に次いで類似の判定に対する影響度が高い傾向にあるにあることから、評価値の重み付けが次に大きい「4」に設定される。「類似度判定項目A2」は、「類似度判定項目A1-1」に次いで類似の判定に対する影響度が高い傾向にあるにあることから、評価値の重み付けが次に大きい「2」に設定される。「類似度判定項目A3」は、「類似度判定項目A1」、「類似度判定項目A1-1」、「類似度判定項目A2」と比較すると、類似の判定に対する影響度が相対的に低い傾向にあることから、評価値の重み付けが次に大きい「1」に設定される。
判定処理部24aは、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとについて、類似度判定項目A1~A3、A1-1のうち一致する項目を判定、抽出する。そして、判定処理部24aは、記憶部23に承認済みプログラムとして記憶されているアクションブロックについて、類似度判定項目A1~A3、A1-1のうち作成プログラムを構成するアクションブロックと一致する項目の評価値を合計し、複数の類似度判定項目A1~A3、A1-1の評価値の合計を算出する。そして、判定処理部24aは、一致する類似度判定項目A1~A3、A1-1の合計の評価値に基づいて、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとの類似度を判定する。
例えば、判定処理部24aは、一致する類似度判定項目A1~A3、A1-1の合計の評価値が「9」以上であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「高」であるものと判定する。これにより、判定処理部24aは、類似度が「高」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A1~A3、A1-1の合計の評価値が「6」以上「8」であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「中」であるものと判定する。これにより、判定処理部24aは、類似度が「中」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A1~A3、A1-1の合計の評価値が「5」であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「低」であるものと判定する。これにより、判定処理部24aは、類似度が「低」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A1~A3、A1-1の合計の評価値が「4」以下であるアクションブロックを、作成プログラムを構成するアクションブロックと「非類似」であるものと判定する。判定処理部24aは、上記判定を記憶部23に承認済みプログラムとして記憶されているすべてのアクションブロックに対して行う。
図21の例では、記憶部23に承認済みプログラムとして記憶されているアクションブロックのうち、第1のアクションブロックAB1は、作成プログラムを構成するアクションブロックと類似度判定項目A1、A1-1、A2、A3が一致し、一致する類似度判定項目A1、A1-1、A2、A3の合計の評価値が「12」と算出され、類似度が「高」である類似プログラムであるものと判定される。第2のアクションブロックAB2は、作成プログラムを構成するアクションブロックと類似度判定項目A1、A2、A3が一致し、一致する類似度判定項目A1、A2、A3の合計の評価値が「8」と算出され、類似度が「中」である類似プログラムであるものと判定される。第3のアクションブロックAB3は、作成プログラムを構成するアクションブロックと類似度判定項目A1、A2が一致し、一致する類似度判定項目A1、A2の合計の評価値が「7」と算出され、類似度が「中」である類似プログラムであるものと判定される。第4のアクションブロックAB4は、作成プログラムを構成するアクションブロックと類似度判定項目A1、A3が一致し、一致する類似度判定項目A1、A3の合計の評価値が「6」と算出され、類似度が「中」である類似プログラムであるものと判定される。第5のアクションブロックAB5は、作成プログラムを構成するアクションブロックと類似度判定項目A1が一致し、一致する類似度判定項目A1の合計の評価値が「5」と算出され、当該アクションブロックと「低」であるものと判定される。第6のアクションブロックAB6は、作成プログラムを構成するアクションブロックと類似度判定項目A2、A3が一致し、一致する類似度判定項目A2、A3の合計の評価値が「3」と算出され、当該アクションブロックと「非類似」であるものと判定される。第7のアクションブロックAB7は、作成プログラムを構成するアクションブロックと類似度判定項目A2が一致し、一致する類似度判定項目A2の合計の評価値が「2」と算出され、当該アクションブロックと「非類似」であるものと判定される。第8のアクションブロックAB8は、作成プログラムを構成するアクションブロックと類似度判定項目A3が一致し、一致する類似度判定項目A3の合計の評価値が「1」と算出され、当該アクションブロックと「非類似」であるものと判定される。第9のアクションブロックAB9は、作成プログラムを構成するアクションブロックと一致する類似度判定項目が無く、一致する類似度判定項目の合計の評価値が「0」と算出され、当該アクションブロックと「非類似」であるものと判定される。
判定処理部24aは、作成プログラムを構成するアクションブロックとの類似度が「高」、「中」、「低」である類似プログラムがいずれも無い場合、すなわち、記憶部23に承認済みプログラムとして記憶されているすべてのアクションブロックが当該アクションブロックと「非類似」である場合、作成プログラムを構成するアクションブロックと類似する類似プログラムが無いと判定する。
以上がアクションが1つの動作対象機器で完結するタイプのアクションブロックで、かつ、付加情報が有る場合の影響度評価値に基づくアクションブロックの類似判定である。
<アクションブロックの類似判定の具体例3:影響度評価値に基づく類似判定2>
次に、アクションが1つの動作対象機器で完結するタイプのアクションブロックで、かつ、付加情報が無い場合の類似判定について説明する。この場合、判定処理部24aは、図22に示すように、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目A1~A3の評価値の合計に基づいて、類似プログラムの有無を判定する。ここでの類似度判定項目A1~A3の評価値の重み付けは、類似度判定項目として類似度判定項目A1-1が存在しないこと以外は上記の図21と同様である。この場合も、上記と同様に、一致する類似度判定項目A1~A3の合計の評価値を算出し、当該合計の評価値に基づいて、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとの類似度を判定する。
この例では、判定処理部24aは、一致する類似度判定項目A1~A3の合計の評価値が「7」以上であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「高」であるものと判定する。これにより、判定処理部24aは、類似度が「高」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A1~A3の合計の評価値が「6」であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「中」であるものと判定する。これにより、判定処理部24aは、類似度が「中」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A1~A3の合計の評価値が「5」であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「低」であるものと判定する。これにより、判定処理部24aは、類似度が「低」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A1~A3の合計の評価値が「4」以下であるアクションブロックを、作成プログラムを構成するアクションブロックと「非類似」であるものと判定する。判定処理部24aは、上記判定を記憶部23に承認済みプログラムとして記憶されているすべてのアクションブロックに対して行う。
図22の例では、記憶部23に承認済みプログラムとして記憶されているアクションブロックのうち、第1のアクションブロックAB1は、作成プログラムを構成するアクションブロックと類似度判定項目A1、A2、A3が一致し、一致する類似度判定項目A1、A2、A3の合計の評価値が「8」と算出され、類似度が「高」である類似プログラムであるものと判定される。第2のアクションブロックAB2は、作成プログラムを構成するアクションブロックと類似度判定項目A1、A2が一致し、一致する類似度判定項目A1、A2の合計の評価値が「7」と算出され、類似度が「高」である類似プログラムであるものと判定される。第3のアクションブロックAB3は、作成プログラムを構成するアクションブロックと類似度判定項目A1、A3が一致し、一致する類似度判定項目A1、A3の合計の評価値が「6」と算出され、類似度が「中」である類似プログラムであるものと判定される。第4のアクションブロックAB4は、作成プログラムを構成するアクションブロックと類似度判定項目A1が一致し、一致する類似度判定項目A1の合計の評価値が「5」と算出され、類似度が「低」である類似プログラムであるものと判定される。第5のアクションブロックAB5は、作成プログラムを構成するアクションブロックと類似度判定項目A2、A3が一致し、一致する類似度判定項目A2、A3の合計の評価値が「3」と算出され、当該アクションブロックと「非類似」であるものと判定される。第6のアクションブロックAB6は、作成プログラムを構成するアクションブロックと類似度判定項目A2が一致し、一致する類似度判定項目A2の合計の評価値が「2」と算出され、当該アクションブロックと「非類似」であるものと判定される。第7のアクションブロックAB7は、作成プログラムを構成するアクションブロックと類似度判定項目A3が一致し、一致する類似度判定項目A3の合計の評価値が「1」と算出され、当該アクションブロックと「非類似」であるものと判定される。第8のアクションブロックAB8は、作成プログラムを構成するアクションブロックと一致する類似度判定項目が無く、一致する類似度判定項目の合計の評価値が「0」と算出され、当該アクションブロックと「非類似」であるものと判定される。
判定処理部24aは、作成プログラムを構成するアクションブロックとの類似度が「高」、「中」、「低」である類似プログラムがいずれも無い場合、すなわち、記憶部23に承認済みプログラムとして記憶されているすべてのアクションブロックが当該アクションブロックと「非類似」である場合、作成プログラムを構成するアクションブロックと類似する類似プログラムが無いと判定する。
以上がアクションが1つの動作対象機器で完結するタイプのアクションブロックで、かつ、付加情報が無い場合の影響度評価値に基づくアクションブロックの類似判定である。
<アクションブロックの類似判定の具体例4:影響度評価値に基づく類似判定2>
次に、アクションが1つの動作対象機器で完結せず他の機器にメールを送信するアクションを含むタイプのアクションブロックの類似判定について説明する。この場合、判定処理部24aは、図23に示すように、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目A4~A5の評価値の合計に基づいて、類似プログラムの有無を判定する。
ここでは一例として、「類似度判定項目A4」は、類似の判定に対する影響度が最も高い傾向にあることから、評価値の重み付けが最も大きい「5」に設定される。「類似度判定項目A5」は、「類似度判定項目A4」に次いで類似の判定に対する影響度が高い傾向にあるにあることから、評価値の重み付けが次に大きい「3」に設定される。
判定処理部24aは、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとについて、類似度判定項目A4~A5のうち一致する項目を判定、抽出する。そして、判定処理部24aは、記憶部23に承認済みプログラムとして記憶されているアクションブロックについて、類似度判定項目A4~A5のうち作成プログラムを構成するアクションブロックと一致する項目の評価値を合計し、複数の類似度判定項目A4~A5の評価値の合計を算出する。そして、判定処理部24aは、一致する類似度判定項目A4~A5の合計の評価値に基づいて、作成プログラムを構成するアクションブロックと、記憶部23に承認済みプログラムとして記憶されているアクションブロックとの類似度を判定する。
例えば、判定処理部24aは、一致する類似度判定項目A4~A5の合計の評価値が「8」であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「高」であるものと判定する。これにより、判定処理部24aは、類似度が「高」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A4~A5の合計の評価値が「5」であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「中」であるものと判定する。これにより、判定処理部24aは、類似度が「中」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A4~A5の合計の評価値が「3」であるアクションブロックを、作成プログラムを構成するアクションブロックとの類似度が「低」であるものと判定する。これにより、判定処理部24aは、類似度が「低」である類似プログラムが有ると判定する。判定処理部24aは、一致する類似度判定項目A4~A5の合計の評価値が「0」以下であるアクションブロックを、作成プログラムを構成するアクションブロックと「非類似」であるものと判定する。判定処理部24aは、上記判定を記憶部23に承認済みプログラムとして記憶されているすべてのアクションブロックに対して行う。
図23の例では、記憶部23に承認済みプログラムとして記憶されているアクションブロックのうち、第1のアクションブロックAB1は、作成プログラムを構成するアクションブロックと類似度判定項目A4、A5が一致し、一致する類似度判定項目A4、A5の合計の評価値が「8」と算出され、類似度が「高」である類似プログラムであるものと判定される。第2のアクションブロックAB2は、作成プログラムを構成するアクションブロックと類似度判定項目A4が一致し、一致する類似度判定項目A4の合計の評価値が「5」と算出され、類似度が「中」である類似プログラムであるものと判定される。第3のアクションブロックAB3は、作成プログラムを構成するアクションブロックと類似度判定項目A5が一致し、一致する類似度判定項目A5の合計の評価値が「3」と算出され、類似度が「低」である類似プログラムであるものと判定される。第4のアクションブロックAB4は、作成プログラムを構成するアクションブロックと一致する類似度判定項目が無く、一致する類似度判定項目の合計の評価値が「0」と算出され、当該アクションブロックと「非類似」であるものと判定される。
判定処理部24aは、作成プログラムを構成するアクションブロックとの類似度が「高」、「中」、「低」である類似プログラムがいずれも無い場合、すなわち、記憶部23に承認済みプログラムとして記憶されているすべてのアクションブロックが当該アクションブロックと「非類似」である場合、作成プログラムを構成するアクションブロックと類似する類似プログラムが無いと判定する。
以上が影響度評価値に基づくアクションブロックの類似判定である。
<アプレットの類似判定>
判定処理部24aは、全体プログラムであるアプレットと類似する類似プログラムの有無を判定する場合、例えば、当該アプレットを構成するサービスブロック、トリガブロック、及び、アクションブロックの組み合わせに基づいて、類似プログラムの有無を判定する。
ここで、アプレットを構成するサービスブロック、トリガブロック、及び、アクションブロックは、典型的には、承認済みプログラムに相当し、承認後、記憶部23に登録、記憶される際に、各プログラムを識別して管理のための付加的な情報としてIDコード(識別情報)が割り振られて登録される。
このことを利用し、判定処理部24aは、サービスブロック、トリガブロック、及び、アクションブロックに割り振られたIDコードに基づいて、アプレットを構成するサービスブロック、トリガブロック、及び、アクションブロックの組み合わせを判定し類似プログラムの有無を判定する。
具体的には、判定処理部24aは、作成プログラムを構成するアプレットと、記憶部23に承認済みプログラムとして記憶されているアプレットとについて、それぞれのサービスブロック、トリガブロック、アクションブロックのIDコードを抽出する。そして、判定処理部24aは、抽出した各ブロックのIDコードを相互に比較し、使用されているサービスブロック、トリガブロック、アクションブロック、及び、その並び順等を類似度判定項目として比較することで、当該アプレットを構成するサービスブロック、トリガブロック、及び、アクションブロックの組み合わせを比較し、類似プログラムの有無を判定する。判定処理部24aは、この判定を記憶部23に承認済みプログラムとして記憶されているすべてのアプレットに対して行う。
なお、判定処理部24aは、アプレットのより詳細な類似判定を行う場合には、上述したサービスブロック、トリガブロック、アクションブロックの類似判定も併用して当該アプレットの類似判定を行ってもよい。例えば、判定処理部24aは、類似するサービスブロック、トリガブロック、アクションブロックの数に応じて、アプレットの類似度を判定するようにしてもよい。また、判定処理部24aは、アプレットの類似判定において、上述したサービスブロック、トリガブロック、アクションブロックの類似判定と同様に、当該アプレットの内容を表すアイコン画像、カテゴリ、タイトル、説明文等を類似度判定項目として類似プログラムの有無を判定するようにしてもよい。
<実施形態の作用効果>
以上で説明したプログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、承認済みプログラムにおいて、承認申請の対象となる作成プログラムと類似する類似プログラムが有ると判定した場合に、当該類似プログラムが有ることを報知する処理を実行する。この構成により、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、例えば、承認の可否を審査する前に、承認申請の対象となった作成プログラムと類似する既存のプログラムの有無を判定し、類似するプログラムが有る場合には作者に対してその旨を報知することができる。これにより、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、作者に対して、類似するプログラムが見つかった作成プログラムについての承認申請の再考や作成プログラムの改良を促すことができ、無駄な承認申請、無駄な承認審査を抑制することができる。
特に、不特定多数の作者によって自分の嗜好に基づいて任意に作成される上記作成プログラムが承認申請の対象となる場合、当該承認申請の対象となる作成プログラムが相対的に大量になり易い傾向にあるが、このプログラム管理システムSys1は、このような場合に、顕著に無駄な承認申請、無駄な承認審査を抑制することができる。
またこの結果、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、類似プログラムの重複審査だけでなく、類似プログラムの重複登録自体も抑制することができ、プラットホームとしての利便性を向上することができる。
一方、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、承認申請の対象となった作成プログラムと類似するプログラムが有る場合に承認審査を行わないのではなく、その旨を作者に報知した上であくまでも作者の意思で承認申請を継続するか否かを決定させるようにすることができる。この結果、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、作者の作成意欲を削がないようにした上で、あくまでも作者の意思で無駄な承認申請、無駄な承認審査を抑制することができる。
この結果、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、作成されたプログラムを適正に管理することができる。
具体的には、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、作成プログラムと類似する類似プログラムの有無を判定する処理の後に、当該作成プログラムを承認する処理を実行する。これにより、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、例えば、類似プログラムが存在すると判定された作成プログラムについて、承認申請の継続の意思を確認した上で承認審査を行うことができる。この結果、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、上記のように無駄な承認審査の抑制と、作成意欲の減退抑制とを両立することができる。
一例として、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、類似の判定に対する影響度が相対的に高い類似度判定項目を優先して順に類似プログラムの有無を判定することができる。この場合、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、演算負荷を抑制して作成プログラムの類似判定を行うことができるので、作成されたプログラムをより適正に管理することができる。
他の一例として、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、類似の判定に対する影響度に応じて重み付けされた複数の類似度判定項目の評価値の合計に基づいて、類似プログラムの有無を判定することができる。この場合、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、より複雑に総合的に作成プログラムの類似判定を行うことができるので、作成されたプログラムをより適正に管理することができる。
ここでは、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、サービスブロック、トリガブロック、アクションブロック、又は、これらのうちいずれかを組み合わせたアプレットを管理対象のプログラムとすることができる。この場合、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、管理対象のプログラムがブロックプログラムを組み合わせたアプレット、又は、当該アプレットを構成するブロックプログラムであることから、特に類似プログラムが重複し易い傾向にある。これに対して、プログラム管理システムSys1は、上記のように作成プログラムと類似する既存のプログラムの有無を判定し、類似するプログラムが有る場合には作者に対してその旨を報知することができるので、無駄を抑制して効率的にプログラムを管理することができるという効果を顕著に発揮することができる。
この場合、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、サービスブロックについては、使用しているAPIやサービスブロックにおける情報の出力形式を類似度判定項目として類似プログラムの有無を判定することができる。また、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、トリガブロックについては、トリガブロックにおける情報の出力形式を類似度判定項目として類似プログラムの有無を判定することができる。また、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、アクションブロックについては、使用しているAPIやアクションブロックにおける情報の入力形式を類似度判定項目として類似プログラムの有無を判定することができる。また、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、全体プログラムであるアプレットについては、構成するサービスブロック、トリガブロック、アクションブロックの組み合わせを類似度判定項目として類似プログラムの有無を判定することができる。この結果、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、サービスブロック、トリガブロック、アクションブロック、アプレットについて精度よく類似プログラムの有無を判定することができるので、作成されたプログラムをより適正に管理することができる。
また、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、上述した付加情報を類似度判定項目として類似プログラムの有無を判定することができる。すなわち、判定処理部24aは、サービスブロック、トリガブロック、又は、アクションブロックのうちのいずれかのブロックプログラムと類似する類似プログラムの有無を判定する場合で、かつ、当該ブロックプログラムにおける情報の出力形式、又は、情報の入力形式に付加情報が付されている場合、当該付加情報に基づいて、類似プログラムの有無を判定することができる。この結果、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、サービスブロック、トリガブロック、アクションブロックについてより多面的に精度よく類似プログラムの有無を判定することができるので、作成されたプログラムをさらに適正に管理することができる。
また、プログラム管理システムSys1、管理プログラム、外部機器20、及び、端末機器10は、端末機器10と外部機器20とが連携することで、端末機器10によって作成されたプログラムを、外部機器20によって適正に管理することができる。
なお、上述した本発明の実施形態に係るプログラム管理システム、管理プログラム、外部機器、及び、端末機器は、上述した実施形態に限定されず、特許請求の範囲に記載された範囲で種々の変更が可能である。
以上の説明では、端末機器10によって作成され、外部機器20による管理の対象となるソフトウェアプログラムは、各動作対象機器で実行させることで当該動作対象機器を動作させるプログラムであるものとして説明したがこれに限らない。当該ソフトウェアプログラムは、サービスブロック、トリガブロック、アクションブロック、又は、アプレットであるものとして説明したがこれに限らない。
以上の説明では、プログラム管理システムSys1は、端末機器10と、外部機器20とを備え、これらが相互に通信し連携するものとして説明したがこれに限らず、1つの機器で構成されてもよいし、3つ以上の機器で分散されて構成されてもよい。
以上で説明した各プログラムの類似判定は、一例に過ぎず上記の内容に限らない。
以上の説明では、端末機器10、外部機器20は、それぞれ単体の機器として構成されるものとして説明したがこれに限らない。端末機器10、外部機器20の機能分散の形態は、上記に限られず、同様の効果や機能を奏し得る範囲において、任意の単位で機能的または物理的に分散・統合して構成することができる。
以上で説明した処理部16、24は、それぞれ単一の電子回路によって各処理機能が実現されるものとして説明したがこれに限らない。処理部16、24は、複数の独立した電子回路を組み合わせて各電子回路がプログラムを実行することにより各処理機能が実現されてもよい。処理部16、24が有する処理機能は、単一又は複数の処理回路に適宜に分散又は統合されて実現されてもよい。例えば、処理部16、24が有する各処理機能については、その全部又は任意の一部を、例えば、CPU等及び当該CPU等にて解釈実行されるプログラムにて実現してもよく、また、ワイヤードロジック等によるハードウェアとして実現してもよい。
本実施形態に係るプログラム管理システム、管理プログラム、外部機器、及び、端末機器は、以上で説明した実施形態、変形例の構成要素を適宜組み合わせることで構成してもよい。