(57)【要約】【課題】動作の担保された利用許諾文を生成することが可能な情報生成装置を提供する。【解決手段】情報生成装置は、登録・管理部、操作・表示部、演算処理部を具備する。登録・管理部は、機能に応じた利用許諾メッセージが付与される機能ブロックを登録して管理する。操作・表示部は、前記登録・管理部で登録される機能ブロックを表示し、前記表示する機能ブロックに対する選択を受け付け、前記選択された機能ブロックに基づいてアプリケーションを生成させるアプリケーション生成指示と、前記選択された機能ブロックに基づいて利用許諾文を生成させる利用許諾文生成指示とを受け付ける。演算処理部は、前記アプリケーション生成指示が入力されると、前記選択された機能ブロックを連結させてアプリケーションを生成し、前記利用許諾文生成指示が入力されると、前記選択された機能ブロックに付与されている利用許諾メッセージを連結させて利用許諾文を生成する。【選択図】図６
2015062100.tif 000002
【特許請求の範囲】
【請求項１】
機能に応じた利用許諾メッセージが付与される機能ブロックを登録して管理する登録・管理部と、
前記登録・管理部で登録される機能ブロックを表示し、前記表示する機能ブロックに対する選択を受け付け、前記選択された機能ブロックに基づいてアプリケーションを生成させるアプリケーション生成指示と、前記選択された機能ブロックに基づいて利用許諾文を生成させる利用許諾文生成指示とを受け付ける操作・表示部と、
前記アプリケーション生成指示が入力されると、前記選択された機能ブロックを連結させてアプリケーションを生成し、前記利用許諾文生成指示が入力されると、前記選択された機能ブロックに付与されている利用許諾メッセージを連結させて利用許諾文を生成する演算処理部と
を具備する情報生成装置。
【請求項２】
前記演算処理部は、前記生成したアプリケーションと、前記生成した利用許諾文とに対して署名を付与する請求項１記載の情報生成装置。
【請求項３】
前記演算処理部は、前記アプリケーション生成指示が入力されると、前記選択された機能ブロックにより形成される経路が閉路を含むか否かを判断し、含まない場合、前記アプリケーションを生成し、含む場合、アプリケーションを生成しない請求項１又は２記載の情報生成装置。
【請求項４】
前記操作・表示部は、前記機能ブロックのうち、外部装置への送信処理を機能として有する処理を実行する機能ブロックに対してフラグを付加する指示を受け付け、
前記登録・管理部は、前記フラグが付加される機能ブロックを登録して管理し、
前記演算処理部は、前記アプリケーション生成指示が入力されると、前記フラグが付加される機能ブロックも含めて前記アプリケーションを生成する請求項１又は３記載の情報生成装置。
【請求項５】
機能に応じた利用許諾メッセージが付与される機能ブロックを登録し、
前記登録される機能ブロックを表示部に表示し、
前記表示する機能ブロックに対する選択を受け付け、
前記選択された機能ブロックに対してアプリケーション・利用許諾文生成指示が入力されると、前記選択された機能ブロックを連結させてアプリケーションを生成し、前記選択された機能ブロックに付与されている利用許諾メッセージを連結させて利用許諾文を生成する情報生成方法。
【請求項６】
前記生成したアプリケーションと、前記生成した利用許諾文とに対して署名を付与する請求項５記載の情報生成方法。
【請求項７】
前記アプリケーション・利用許諾文生成指示が入力されると、前記選択された機能ブロックにより形成される経路が閉路を含むか否かを判断し、含まない場合、前記アプリケーションを生成し、含む場合、アプリケーションを生成しない請求項５又は６記載の情報生成方法。
【請求項８】
前記機能ブロックのうち、外部装置への送信処理を機能として有する処理を実行する機能ブロックに対してフラグを付加する指示を受け付け、
前記フラグが付加される機能ブロックを登録し、
前記アプリケーション・利用許諾文生成指示が入力されると、前記フラグが付加される機能ブロックも含めて前記アプリケーションを生成する請求項５又は７記載の情報生成方法。
【請求項９】
機能に応じた利用許諾メッセージが付与された機能ブロックに対してアプリケーション・利用許諾文生成指示が入力されると、前記機能ブロックを連結させてアプリケーションを生成し、前記機能ブロックに付与されている利用許諾メッセージを連結させて利用許諾文を生成する処理を情報生成装置のコンピュータに実行させる情報生成プログラム。
【請求項１０】
前記機能ブロックに、外部装置への送信処理を機能として有することを示すフラグが付加されている場合、前記アプリケーション・利用許諾文生成指示が入力されると、前記フラグが付加される機能ブロックも含めて前記アプリケーションを生成する処理を前記情報生成装置のコンピュータに実行させる請求項９記載の情報生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、端末及び／又はクラウドに保存されたデータを利用するアプリケーションを実行する際に、それらのデータがどのように処理・加工されるのかを利用者に対して説明する利用許諾文とその処理を実際に行うアプリケーションを生成する情報生成装置と、この情報生成装置で用いられる情報生成方法及び情報生成プログラムに関する。
【背景技術】
【０００２】
アプリケーションがユーザの持つ特定のデータを利用する際、ユーザは、利用許諾を得ることが望ましい。ユーザは、何のデータを、何の目的で、どのように利用するかが明確化されることで、アプリケーションとその開発者を信頼し、ユーザ自身が持つ個人データを提供する。一方、ユーザは、不信感を抱くアプリケーションとその開発者に対してはアプリケーションを利用しないことで個人データを提供することを避けることが可能である。
【０００３】
現在、利用許諾文はアプリケーションの開発者によって記述されているが、アプリケーションと利用許諾文とが正しく対応付いていることは担保されていない。そのため、悪意のあるアプリケーション作成者であった場合でも、利用許諾文の内容を信じるしかないという問題がある。一方、正しい挙動をしているにも関わらず、適切な信頼を得ることができないため、アプリケーションを利用してもらえないというアプリケーションの開発者に対する不利益が発生する問題もある。
【０００４】
利用許諾文とアプリケーションの挙動とを対応付けるための方法として、電話帳データへのアクセス及びインターネットアクセス等の重要な操作を、特権が必要な操作として特定の識別子が付された操作に限定し、さらに、アプリケーション内に記載された識別子を解析し、利用する識別子を宣言したファイルの記載と照らし合わせることでアクセスされるデータ及び実行される操作をユーザに対して明示的に示す方法がAndroid OS（登録商標）等で用いられている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】US patent 6125447, “PROTECTION DOMAINS TO PROVIDE SECURITY IN A COMPUTER SYSTEM”
【特許文献２】US patent 6192476, “CONTROLLING ACCESS TO A RESOURCE”
【非特許文献】
【０００６】
【非特許文献１】Satyanarayanan, Mahadev, "Pervasive Computing: Vision and Challenges", IEEE Personal Communications (IEEE), 2001.
【非特許文献２】Ya-Yunn, Su; Flinn, Jason, "Slingshot: deploying stateful services in wireless hotspots", Proceedings of the 3rd international conference on Mobile systems, applications, and services (ACM), 2005.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
現在のモデルの問題点として、それぞれの利用許諾が独立して扱われているため、ユーザは、利用許諾により許諾される処理同士が関連しているか否かが理解できず、どのデータに対してどの処理が実行されているかが不明瞭な点が挙げられる。例えば、電話帳データへのアクセスとインターネットアクセスとに対する許諾が要求されている場合、電話帳データへのアクセス及びインターネットアクセスを実行する処理がアプリケーション中に含まれていることは担保されるが、電話帳データは外部に送信されるのか端末内のみで利用されるのかを知ることはできない。現状のモデルにおいて、どのデータに対してどの処理が実行されているかを、アプリケーションの開発者が記述する、アプリケーションと対応付けられていない利用許諾文に基づいて判断することも可能であるが、アプリケーションと対応付けられていない利用許諾文は、利用許諾情報としては不完全であると言える。また、データの一部のみを利用する場合、及び、データを加工してサーバ上に集約・保存するような場合でもその処理を網羅的に識別子と関連付けることは難しく、動作の担保された利用許諾として表現することができない。
【０００８】
そこで目的は、動作の担保された利用許諾文を生成することが可能な情報生成装置と、この情報生成装置で用いられる情報生成方法及び情報生成プログラムとを提供することにある。
【課題を解決するための手段】
【０００９】
本発明は、上記目的を達成するために、以下のような手段を講じている。  
本発明の第１の態様は、機能に応じた利用許諾メッセージが付与される機能ブロックを登録して管理する登録・管理部と、前記登録・管理部で登録される機能ブロックを表示し、前記表示する機能ブロックに対する選択を受け付け、前記選択された機能ブロックに基づいてアプリケーションを生成させるアプリケーション生成指示と、前記選択された機能ブロックに基づいて利用許諾文を生成させる利用許諾文生成指示とを受け付ける操作・表示部と、前記アプリケーション生成指示が入力されると、前記選択された機能ブロックを連結させてアプリケーションを生成し、前記利用許諾文生成指示が入力されると、前記選択された機能ブロックに付与されている利用許諾メッセージを連結させて利用許諾文を生成する演算処理部とを具備する。  
第１の態様によれば、情報生成装置は、常にアプリケーションに対応付けられた利用許諾文を生成することが可能となる。
【００１０】
また、第２の態様では、前記演算処理部は、前記生成したアプリケーションと、前記生成した利用許諾文とに対して署名を付与する。  
第２の態様によれば、アプリケーションを実行する際に、システムによって生成された内容が改ざんされていないことを保証することが可能となる。
【００１１】
また、第３の態様では、前記演算処理部は、前記アプリケーション生成指示が入力されると、前記選択された機能ブロックにより形成される経路が閉路を含むか否かを判断し、含まない場合、前記アプリケーションを生成し、含む場合、アプリケーションを生成しない。  
第３の態様によれば、ループ構造のために生じる無限の経路毎に利用許諾文が生成される状態を回避することが可能となる。
【００１２】
また、第４の態様では、前記操作・表示部は、前記機能ブロックのうち、外部装置に処理を実行させる機能ブロックに対してフラグを付加する指示を受け付け、前記登録・管理部は、前記フラグが付加される機能ブロックを登録して管理し、前記演算処理部は、前記アプリケーション生成指示が入力されると、前記フラグが付加される機能ブロックも含めて前記アプリケーションを生成する。  
第４の態様によれば、画一的な安全性と高速性とのバランスではなく、個々人によって最適な按分でのプログラム実行が実現可能となる。
【発明の効果】
【００１３】
本発明によれば、動作の担保された利用許諾文を生成することが可能な情報生成装置と、この情報生成装置で用いられる情報生成方法及び情報生成プログラムとを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態に係る情報生成装置が用いられるシステムを示す図である。
【図２】図１に示す情報生成装置の機能構成を示すブロック図である。
【図３】機能ブロックのグラフ構成の例を示す図である。
【図４】図２に示す情報生成装置が機能ブロックを登録する際のシーケンス図を示す図である。
【図５】図２に示す情報生成装置が機能ブロックを登録する際のフローチャートを示す図である。
【図６】図２に示す情報生成装置がアプリケーション及び利用許諾文を生成する際のシーケンス図を示す図である。
【図７】図２に示す登録・管理部における表示例を示す図である。
【図８】図２に示す情報生成装置がアプリケーション及び利用許諾文を生成する際のフローチャートを示す図である。
【図９】第２の実施形態に係る情報生成装置の機能構成を示すブロック図である。
【図１０】エージェントにより実行されるアプリケーションの構成例を示す図である。
【図１１】エージェントにより実行されるアプリケーションの構成例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照してこの発明に係わる実施形態を説明する。
【００１６】
（第１の実施形態）  
図１は、第１の実施形態に係る情報生成装置１０が用いられるシステムを示す。図１に示されるシステムは、情報生成装置１０及びエージェント２０を備える。
【００１７】
図２は、図１に示す情報生成装置１０の機能構成を示すブロック図である。図２に示す情報生成装置１０は、機能ブロック登録・管理部１１、操作・表示部１２及び演算処理部１３を備える。
【００１８】
機能ブロック登録・管理部１１は、機能ブロックを演算処理部１３からの指示に従って登録し、登録した機能ブロックを管理する。機能ブロックは、特定の関数及び／又はオブジェクトを内包したブロックである。機能ブロックは、「データソース出力」を実施する第１の機能ブロックと、「処理」を実施する第２の機能ブロックとの２種類に大別される。
【００１９】
第１の機能ブロックは、エージェント２０と連携し、エージェント２０が保持するデータ及びエージェント２０が収集してくるデータをアプリケーション上で使用可能にする。第１の機能ブロックを通じてのみエージェント２０はアプリケーションに対してデータを提供する。第２の機能ブロックは、「データソース出力」以外のあらゆる処理、例えば、統計処理、絞込み及びデータの送信等の処理を実行する。
【００２０】
各機能ブロックには利用許諾に用いる利用許諾メッセージが付与されている。第１の機能ブロックに付与されている利用許諾メッセージには、利用するデータの種類が記載されている。また、第２の機能ブロックに付与されている利用許諾メッセージは、処理内容と対応付けられている。
【００２１】
操作・表示部１２は、外部とのインタフェースであり、アプリケーションの開発者及びシステムの管理者からの操作を受け付ける。また、操作・表示部１２は、機能ブロック登録・管理部１１に登録されている機能ブロック、アプリケーション及び利用許諾文等を表示する。
【００２２】
開発者は、操作・表示部１２に表示されている機能ブロックを選択し、操作・表示部１２上で選択した機能ブロックを連結させる。
【００２３】
また、操作・表示部１２は、システムの管理者又は信頼ある第三者により承認された機能ブロックを機能ブロック登録・管理部１１に登録する。
【００２４】
操作・表示部１２による機能ブロックの登録処理の例を具体的に示す。操作・表示部１２は、第１の機能ブロックのソースコードを表示する。システムの管理者及び信頼ある第三者は、操作・表示部１２に表示されるソースコードの目視、又は、第１の機能ブロックの実行による確認作業を経て、第１の機能ブロックにより取得されるデータの種類が、アプリケーションで利用されるデータの種類と一致するか否かを予め判断する。一致する場合、システムの管理者及び信頼ある第三者は、第１の機能ブロックを承認する。操作・表示部１２は、承認された第１の機能ブロックを機能ブロック登録・管理部１１に登録させる。
【００２５】
また、操作・表示部１２は、第２の機能ブロックのソースコードを表示する。システムの管理者及び信頼ある第三者は、操作・表示部１２に表示されるソースコードを参照し、第２の機能ブロックの処理内容と利用許諾メッセージとが対応付いているか否かを予め判断する。対応付いている場合、システムの管理者及び信頼ある第三者は、第２の機能ブロックを承認する。操作・表示部１２は、承認された第２の機能ブロックを機能ブロック登録・管理部１１に登録させる。
【００２６】
演算処理部１３は、例えば、ＣＰＵ（Central Processing Unit）、並びにＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等のＣＰＵが処理を実行するためのプログラムやデータの格納領域等を含む。演算処理部１３は、ＣＰＵにプログラムを実行させることで、アプリケーション生成部１３１、利用許諾文生成部１３２及び署名付与部１３３を実現する。
【００２７】
操作・表示部１２上で機能ブロックの配置が決定し、任意の出力が得られる構成になると、開発者は、操作・表示部１２を介してアプリケーション生成部１３１へアプリケーション生成指示を与える。アプリケーション生成部１３１は、開発者からアプリケーション生成指示が与えられると、各機能ブロックをノード、各機能ブロック間の連結部分を有向エッジとして全体をグラフと見なし、トポロジカルソートを開始する。トポロジカルソートとは、グラフが閉路を持つか否かを確認するための処理である。トポロジカルソートの結果、グラフが無閉路有向グラフである場合、アプリケーション生成部１３１は、機能ブロックの連結処理に移行する。トポロジカルソートの結果、グラフが閉路を持つ場合、アプリケーション生成部１３１は、エラーを出力する。これは、利用許諾文は、利用許諾文生成部１３２により、全ての経路に対して生成されるため、閉路が存在していると、無限に生成されてしまうからである。例えば、機能ブロックの組み合わせが図３のようなグラフ構成だった場合、Ｂ→Ｃ→Ｂで閉路が形成されているため、Ａ→Ｂ→Ｃ→Ｄ、Ａ→Ｂ→Ｃ→Ｂ→Ｃ→Ｄ、Ａ→Ｂ→Ｃ→Ｂ→Ｃ→Ｂ→Ｃ→Ｄ、…と無限通りの経路が存在する。そのため、経路毎に、無限の利用許諾文が生成されることになる。
【００２８】
アプリケーション生成部１３１は、トポロジカルソートにより無閉路有向グラフと判断されたグラフを構成する機能ブロック間の入力形式と、出力形式とが一致しているか否かを確認する。一致する場合、アプリケーション生成部１３１は、機能ブロック間で返り値を引数として渡すこと等により、機能ブロック同士を連結させる。ここで、第１の機能ブロックは出力形式を持ち、第２の機能ブロックは出力形式及び入力形式を持つ。なお、第２の機能ブロックは、複数の入力形式及び複数の出力形式を有する場合もある。
【００２９】
なお、第２の機能ブロックは、パラメータを有し、数値及び文字列を自由に変更できるようにしても良い。例えば、データの生成時間による絞込みを行う機能ブロックの場合、{epoc_start:xxx,epoc_end:yyy}といったパラメータを指定することで、複数の機能ブロックを用意しなくてもどの範囲で絞込みを行うかを変更することが可能である。ただし、パラメータは利用許諾メッセージにも含まれなければならない。
【００３０】
また、開発者は、操作・表示部１２を介して利用許諾文生成部１３２へ利用許諾文生成指示を入力する。利用許諾文生成部１３２は、利用許諾文生成指示が入力されると、連結される各機能ブロックに付与されている利用許諾メッセージに基づいて利用許諾文を生成する。このとき、利用許諾文生成部１３２は、機能ブロックに書かれた利用許諾メッセージを羅列するように利用許諾文を生成しても良いし、羅列した利用許諾メッセージを読みやすく整形して利用許諾文を生成するようにしても良い。例えば、第１の機能ブロックにより取得されるデータの種類をＡ、第２の機能ブロックの処理内容をBとした場合、利用許諾文生成部１３２は、「Ａ：Ｂ１,Ｂ２,Ｂ３…」と記載しても良いし、「Ａを取得、Ｂ１を行った後にＢ２を行い、Ｂ３を行う」と記載することも可能である。これは情報生成装置１０の処理機能によるところとする。
【００３１】
署名付与部１３３は、ハッシュ関数及び暗号鍵等の形式により実装される秘密鍵を用い、アプリケーション生成部１３１で生成されたアプリケーションと、利用許諾文生成部１３２で生成された利用許諾文とに署名を付与する。なお、この署名は、一般的な電子署名であっても良い。アプリケーションの開発者は、アプリケーション及び利用許諾文に正しく署名が付与されると、署名が付与されたアプリケーション及び利用許諾文をユーザへ配布する。
【００３２】
エージェント２０は、ユーザからアプリケーションのコンパイルの要求を受けると、まずアプリケーションと利用許諾文とに付された署名を確認する。これにより、エージェント２０は、アプリケーション及び利用許諾文に対して改ざんが加えられていないことを確認する。エージェント２０は、アプリケーション及び利用許諾文に改ざんが加えられていないことを確認すると、ユーザに対して利用許諾文を提示する。ユーザは、利用許諾文の内容に許諾する場合、アプリケーションのコンパイルを実行する。
【００３３】
次に、以上のように構成される情報生成装置１０の動作を具体的に説明する。図４は、情報生成装置１０が機能ブロックを登録する際のシーケンス図を示す。
【００３４】
まず、アプリケーションの開発者は、機能ブロックを操作・表示部１２へアップロードする（シーケンスＳ４１）。操作・表示部１２は、機能ブロックのソースコード等を表示し、システム管理者等からの承認を受け付ける（シーケンスＳ４２）。操作・表示部１２は、システム管理者等からの承認を受けると（シーケンスＳ４３）、承認を受けた機能ブロックを機能ブロック登録・管理部１１に登録させる（シーケンスＳ４４）。
【００３５】
図５は、情報生成装置１０が機能ブロックを登録する際のフローチャートを示す。
【００３６】
まず、情報生成装置１０は、操作・表示部１２により、新たな機能ブロックを受信する（ステップＳ５１）。操作・表示部１２は、機能ブロックに対する処理を待機させ、機能ブロックのソースコード等を表示する（ステップＳ５２）。
【００３７】
操作・表示部１２は、表示するソースコードに対し、システム管理者等からの承認があるか否かを判断する（ステップＳ５３）。承認がある場合（ステップＳ５３のＹｅｓ）、操作・表示部１２は、機能ブロックを機能ブロック登録・管理部１１に登録させ（ステップＳ５４）、処理を終了させる。承認がない場合（ステップＳ５３のＮｏ）、操作・表示部１２は、機能ブロックの登録を棄却し（ステップＳ５５）、処理を終了させる。
【００３８】
図６は、情報生成装置１０がアプリケーション及び利用許諾文を生成する際のシーケンス図を示す。
【００３９】
まず、情報生成装置１０は、機能ブロック登録・管理部１１に登録されている機能ブロックを操作・表示部１２に表示する（シーケンスＳ６１）。操作・表示部１２は、アプリケーションの開発者からの操作を受け付ける。図７に操作・表示部１２の表示例を示す。右側の機能ブロック選択パレットに機能ブロック登録・管理部１１から読み出された機能ブロックが表示される。開発者は、選択パレットから機能ブロックを選択し、選択した機能ブロックを連結させることで、アプリケーションを組み立てる。操作・表示部１２には、アプリケーション／利用許諾文生成ボタンが表示されている。開発者は、アプリケーションの組み立てが完了すると、アプリケーション／利用許諾文生成ボタンをクリックする（シーケンスＳ６２）。操作・表示部１２は、アプリケーション／利用許諾文生成ボタンがクリックされると、アプリケーション生成指示及び利用許諾文生成指示を演算処理部１３へ出力する（シーケンスＳ６３）。
【００４０】
演算処理部１３は、アプリケーション生成指示を受けると、トポロジカルソートを実施する（シーケンスＳ６４）。トポロジカルソートにより、グラフが無閉路有効グラフであると判断した場合、演算処理部１３は、機能ブロック同士を連結することで、アプリケーションを生成する（シーケンスＳ６５）。また、演算処理部１３は、機能ブロックに付与される利用許諾メッセージを用いて利用許諾文を生成する（シーケンスＳ６６）。
【００４１】
また、演算処理部１３は、生成されたアプリケーション及び利用許諾文に対し、署名を付与する（シーケンスＳ６７）。演算処理部１３は、生成したアプリケーション及び利用許諾文を操作・表示部１２へ出力する（シーケンスＳ６８）。
【００４２】
操作・表示部１２は、アプリケーション及び利用許諾文を開発者へ表示する（シーケンスＳ６９）。
【００４３】
図８は、情報生成装置１０がアプリケーション及び利用許諾文を生成する際のフローチャートを示す。
【００４４】
まず、情報生成装置１０は、機能ブロック登録・管理部１１に登録されている機能ブロックを読み出し、読み出した機能ブロックを操作・表示部１２に表示する（ステップＳ８１）。操作・表示部１２は、開発者が機能ブロックを組み合わせている間、待機する（ステップＳ８２）。操作・表示部１２は、図７に示す生成ボタンがクリックされると、アプリケーション及び利用許諾文の生成を開始するように演算処理部１３へアプリケーション／利用許諾文生成指示を出力する（ステップＳ８３）。
【００４５】
演算処理部１３は、アプリケーション及び利用許諾文の生成が指示されると、トポロジカルソートを用いて閉路が検出されるか否かを判断する（ステップＳ８４）。検出される場合（ステップＳ８４のＹｅｓ）、演算処理部１３は、エラーを出力し（ステップＳ８５）、処理を終了させる。閉路が検出されない場合（ステップＳ８４のＮｏ）、演算処理部１３は、組み合わされた機能ブロック間の入力形式と出力形式とが一致するか否かを判断する（ステップＳ８６）。一致する場合（ステップＳ８６のＹｅｓ）、演算処理部１３は、機能ブロックを連結し、アプリケーションを生成する（ステップＳ８７）。また、演算処理部１３は、利用許諾文を生成する（ステップＳ８８）。組み合わされた機能ブロック間の入力形式と出力形式とが一致しない場合（ステップＳ８６のＮｏ）、処理をステップＳ８５へ移行する。
【００４６】
演算処理部１３は、アプリケーション及び利用許諾文を生成すると、生成したアプリケーション及び利用許諾文に対し、署名を付与する（ステップＳ８９）。演算処理部１３は、署名を付与したアプリケーション及び利用許諾文を操作・表示部１２に表示させる（ステップＳ８１０）。
【００４７】
以上のように、第１の実施形態では、演算処理部１３は、関数やオブジェクトを内包する機能ブロックを組み合わせてアプリケーションを生成すると同時に、機能ブロック内にあらかじめ付与された利用許諾メッセージから処理全体に関する利用許諾文を生成するようにしている。これにより、連結された機能ブロックをアプリケーションプログラムとして生成すると共に、連結した機能ブロックに付与される利用許諾メッセージから利用許諾文が生成されることになるため、常にアプリケーションに対応付けられた利用許諾文を生成することが可能となる。
【００４８】
また、第１の実施形態では、署名付与部１３３は、アプリケーションの実行内容及び利用許諾文の内容を担保するため、アプリケーション及び利用許諾文を生成する際に、アプリケーション及び利用許諾文に署名を付与するようにしている。これにより、アプリケーションを実行する際に、システムによって生成された内容が改ざんされていないことを保証することが可能となる。すなわち、アプリケーション及び利用許諾文の正当性を担保することが可能となる。
【００４９】
また、第１の実施形態では、演算処理部１３は、機能ブロックが連結されるグラフに対してトポロジカルソートが可能であるかを計算することで、ループ構造の経路を有するアプリケーションを許可しないようにしている。これにより、生成される利用許諾文が、アプリケーションと必ず対応付けられることとなる。また、機能ブロックの組み合わせとして無限に利用許諾文が生成されるような組み合わせを抑制することが可能となる。
【００５０】
これまで機能を持つオブジェクト、及び、関数を組み合わせてプログラムを生成する方法は、コンポーネント型のプログラミング言語やフレームワークによって実現されてきた。しかしながら、これらの方法は、アプリケーション作成者の負担の軽減を目的としており、開発者に対する利便性を図ったものであった。本発明では、アプリケーションを生成すると同時に利用許諾文を生成することで、動作の担保された利用許諾文をアプリケーションのユーザに対して明確に提示することができ、ユーザに対する利便性を向上させることができる。
【００５１】
（第２の実施形態）  
第１の実施形態では、アプリケーションを生成する際に用いられる第２の機能ブロックによる処理は、エージェント２０上で実行されることを想定している。しかしながら、第２の機能ブロックによる処理の全てをエージェント２０が実行すると、高速性が失われてしまうことがある。
【００５２】
そこで、実際に第２の機能ブロックによる処理を実行する環境を、エージェント２０上ではなく、外部サーバ等の外部装置へ委託するようにしても構わない。しかしながら、第２の機能ブロックによる処理の実行を外部サーバへ委託することにより、エージェント２０内で扱っていたデータが外部へ送信される場合があり得る。このため、セキュリティの問題及び／又はプライバシの問題が発生することがある。
【００５３】
一般に端末上の動作プログラムを、プログラムの実行箇所のリソースが少ない端末上から、リソースの多い近傍の代理端末へ移動させて実行させる技術はCyber foraging（非特許文献１，２参照）と呼ばれている。ただし、これらの技術はプログラム全体を端末からクラウドに移行しており、一部の処理に限定して処理の受け渡しが行えるわけではない。
【００５４】
一方、Ａｍａｚｏｎ（登録商標）が開発したウェブブラウザーであるｓｉｌｋは描画アクセラレーションのために機能単位で実行場所をクラウドに変更することが可能である。しかしながら最適な高速化にのみ注目しているため、プライバシやセキュリティが守られていないという批判がある。
【００５５】
以上のように、高速化と安全性とをユーザが望むバランスで両立できる仕組みは現存していない。第２の実施形態では、エージェント２０のユーザが高速性及び安全性を選択しながら実行できるアプリケーションを生成可能な情報生成装置について説明する。
【００５６】
図９は、第２の実施形態に係る情報生成装置３０の機能構成を示すブロック図である。図９に示す情報生成装置３０は、機能ブロック登録・管理部１１、操作・表示部３１及び演算処理部１３を備える。
【００５７】
操作・表示部３１は、外部とのインタフェースであり、アプリケーションの開発者及びシステムの管理者からの操作を受け付ける。また、操作・表示部３１は、機能ブロック登録・管理部１１に登録されている機能ブロック、アプリケーション及び利用許諾文等を表示する。
【００５８】
開発者は、操作・表示部３１に表示されている機能ブロックを選択し、操作・表示部３１上で選択した機能ブロックを連結させる。
【００５９】
また、操作・表示部１２は、システムの管理者又は信頼ある第三者により承認された機能ブロックを機能ブロック登録・管理部１１に登録する。このとき、外部への送信処理を機能として有する処理を実行する第２の機能ブロックがある場合、システムの管理者又は信頼ある第三者は、この第２の機能ブロックに対してフラグを付加する。このフラグは、第２の機能ブロックによる処理が、他の場所への送信処理を含むものであることを示し、フラグを付加された第２の機能ブロック以降のすべての第２の機能ブロックが他の場所で実行されることを示すものである。
【００６０】
操作・表示部３１による機能ブロックの登録処理の例を具体的に示す。操作・表示部３１は、第１の機能ブロックのソースコードを表示する。システムの管理者及び信頼ある第三者は、操作・表示部３１に表示されるソースコードの目視、又は、第１の機能ブロックの実行による確認作業を経て、第１の機能ブロックにより取得されるデータの種類が、アプリケーションで利用されるデータの種類と一致するか否かを予め判断する。一致する場合、システムの管理者及び信頼ある第三者は、第１の機能ブロックを承認する。操作・表示部３１は、承認された第１の機能ブロックを機能ブロック登録・管理部１１に登録させる。
また、操作・表示部３１は、第２の機能ブロックのソースコードを表示する。システムの管理者及び信頼ある第三者は、操作・表示部３１に表示されるソースコードを参照し、第２の機能ブロックによる処理が外部への送信処理を機能として有するか否かを予め判断する。送信処理を機能として有する場合、システムの管理者及び信頼ある第三者は、この第２の機能ブロックに対し、フラグを付加する。また、システムの管理者及び信頼ある第三者は、操作・表示部３１に表示されるソースコードを参照し、第２の機能ブロックの処理内容と利用許諾メッセージとが対応付いているか否かを予め判断する。対応付いている場合、システムの管理者及び信頼ある第三者は、第２の機能ブロックを承認する。操作・表示部３１は、承認された第２の機能ブロックを機能ブロック登録・管理部１１に登録させる。
【００６１】
演算処理部１３は、アプリケーション生成部１３１、利用許諾文生成部１３２及び署名付与部１３３を実現する。
【００６２】
操作・表示部３１上で機能ブロックの配置が決定し、任意の出力が得られる構成になると、開発者は、操作・表示部３１を介してアプリケーション生成部１３１へアプリケーション生成指示を与える。アプリケーション生成部１３１は、開発者からアプリケーション生成指示が与えられると、各機能ブロックをノード、各機能ブロック間の連結部分を有向エッジとして全体をグラフと見なし、トポロジカルソートを開始する。トポロジカルソートの結果、グラフが無閉路有向グラフである場合、アプリケーション生成部１３１は、トポロジカルソートにより無閉路有向グラフと判断されたグラフを構成する機能ブロック間の入力形式と、出力形式とが一致しているか否かを確認する。一致する場合、アプリケーション生成部１３１は、機能ブロック間で返り値を引数として渡すこと等により、機能ブロック同士を連結させる。ここで、第１の機能ブロックは出力形式を持ち、第２の機能ブロックは出力形式及び入力形式を持つ。また、第２の機能ブロックにフラグが付されている場合は、フラグも含めて連結される。なお、第２の機能ブロックは、複数の入力形式及び複数の出力形式を有する場合もある。
【００６３】
エージェント２０は、情報生成装置３０で生成されるアプリケーション及び利用許諾文を受信する。エージェント２０は、ユーザからアプリケーションのコンパイルの要求を受けると、まずアプリケーションと利用許諾文とに付された署名を確認する。これにより、エージェント２０は、アプリケーション及び利用許諾文に対して改ざんが加えられていないことを確認する。エージェント２０は、アプリケーション及び利用許諾文に改ざんが加えられていないことを確認すると、ユーザに対して利用許諾文を提示する。ユーザは、利用許諾文の内容に許諾する場合、アプリケーションのコンパイルを実行する。
【００６４】
また、エージェント２０は、アプリケーションのコンパイルの際に、アプリケーションに、フラグが付された機能ブロックが含まれるか否かを判断する。フラグが付された機能ブロックが含まれる場合、エージェント２０は、フラグが付された機能ブロックの位置と、アプリケーションに含まれるその他の第２の機能ブロックの位置とを可換であることをユーザへ表示する。
【００６５】
ユーザは、エージェント２０の表示に基づき、高速性を担保するか、安全性を担保するかを自ら判断し、機能ブロックの位置を入れ替える。
【００６６】
図１０及び図１１は、アプリケーションの機能ブロックの構成例を示す図である。コンパイルを要求されたアプリケーションが図１０に示す構成をしている場合、エージェント２０は、エージェント２０から外部サーバへデータを送信する機能ブロックＢ１にフラグが付されていると判断する。エージェント２０は、機能ブロックＢ１の位置と、第１次メッシュ変換を実施する第２の機能ブロックＢ２の位置とを変更可能であることをユーザに表示する。
【００６７】
ユーザは、自端末が高速性及び安全性のいずれを求めるかに応じて、機能ブロックの位置を移動させる。すなわち、ユーザは、高速性よりも安全性を重視する場合、図１１に示すように、機能ブロックＢ２を機能ブロックＢ１の前に移動させる。図１１に示すアプリケーションでは、外部サーバへデータを送信する前に、エージェント２０内で緯度データ及び経度データをメッシュコードへ変換する。このため、外部サーバへ送信するデータの情報量は少なくなるため、安全性は高まることになる。一方、エージェント２０内でメッシュコードへ変換する必要があるため、空きリソースがサーバ上で変換処理を実行するよりも少なくなり、高速性が損なわれる可能性がある。
【００６８】
また、安全性よりも高速性を重視する場合、ユーザは、図１０に示す構成を維持したまま、アプリケーションのコンパイルを実行する。図１０に示すアプリケーションでは、外部サーバへ緯度データ及び経度データを一切の丸め処理を行うことなく送信するため、安全性は低くなる。一方、エージェント２０内でメッシュコードへ変換する必要がないため、空きリソースが増え、高速性を維持することが可能である。
【００６９】
以上のように、第２の実施形態では、機能ブロック登録・管理部１１は、関数及び／又はオブジェクトが他の場所で実行されることを示すフラグを付した機能ブロックを登録する。そして、エージェント２０は、アプリケーションに含まれる機能ブロックにフラグが付されている場合、アプリケーションを構成する機能ブロックの実行位置をユーザが自由に決定できるようにしている。これにより、ユーザは、セキュリティリスクの少ない機能以降を外部サーバに実行させることが可能となる。また、可変的に移動する機能ブロックをユーザが選択することが可能であるため、画一的な安全性と高速性とのバランスではなく、個々人によって最適な按分でのプログラム実行が実現可能となる。また、ユーザは、高速性と安全性とのいずれに重点を置くかを考慮した上で、外部サーバを交えてアプリケーションを実施することが可能となる。
【００７０】
したがって、第２の実施形態に係る情報生成装置３０によれば、ユーザに高速性と安全性とを選択させた上で、外部装置と連携を取りながら実行することが可能なアプリケーションを生成することができる。
【００７１】
なお、第２の実施形態では、エージェント２０の表示を参照し、ユーザが機能ブロックの位置を変更する場合を例に説明した。しかしながら、これに限定されない。例えば、エージェント２０には、セキュリティ・プライバシポリシがユーザにより予め設定されていても構わない。エージェント２０は、アプリケーションに、フラグが付された機能ブロックが含まれる場合、設定されているセキュリティ・プライバシポリシを参照して機能ブロックの実施位置を移換する。
【００７２】
なお、この発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【００７３】
また、本発明の装置は、コンピュータとプログラムによっても実現でき、プログラムを記録媒体に記録することも、ネットワークを通して提供することも可能である。
【符号の説明】
【００７４】
１０，３０…情報生成装置、１１…機能ブロック登録・管理部、１２，３１…操作・表示部、１３…演算処理部、２０…エージェント、１３１…アプリケーション生成部、１３２…利用許諾文生成部、１３３…署名付与部
【図１】
2015062100.tif 000003
【図２】
2015062100.tif 000004
【図３】
2015062100.tif 000005
【図４】
2015062100.tif 000006
【図５】
2015062100.tif 000007
【図６】
2015062100.tif 000008
【図７】
2015062100.tif 000009
【図８】
2015062100.tif 000010
【図９】
2015062100.tif 000011
【図１０】
2015062100.tif 000012
【図１１】
2015062100.tif 000013