(57)【要約】【課題】動作不良を起こした際の原因がハードウェアにある可能性が高いかソフトウェアにある可能性が高いか判断できる信頼性判定装置、信頼性判定システム、およびソースコード共有システムを提供する。【解決手段】デバイス２００でソースコードを含むアプリケーションが実行され、その実行動作が正常であったか異常であったかを示す実行結果を取得し、実行結果とハードウェアバージョンおよびソフトウェアバージョンとを含む実行結果情報と、ハードウェアバージョンおよびソフトウェアバージョン毎の判定結果とを記録する実行結果管理部１１０と、実行結果情報、並びに実行結果情報に含まれるハードウェアバージョンと同一のハードウェアバージョンの判定結果またはソフトウェアバージョンと同一のソフトウェアバージョンの判定結果に基づき、デバイスのハードウェアおよびソフトウェアの信頼性をそれぞれ判定する判定部１２０と、を備える。【選択図】図１
2018169969.tif 000002
【特許請求の範囲】
【請求項１】
ソースコードをデバイス間で共有するためにハードウェアおよびソフトウェアの信頼性を判定する信頼性判定装置であって、
前記デバイスでソースコードを含むアプリケーションが実行され、その実行動作が正常であったか異常であったかを示す実行結果を取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報と、ハードウェアバージョンおよびソフトウェアバージョン毎の判定結果とを記録する実行結果管理部と、
前記実行結果情報、並びに前記実行結果情報に含まれるハードウェアバージョンと同一のハードウェアバージョンの判定結果またはソフトウェアバージョンと同一のソフトウェアバージョンの判定結果に基づき、デバイスのハードウェアおよびソフトウェアの信頼性をそれぞれ判定する判定部と、を備える、ことを特徴とする信頼性判定装置。
【請求項２】
前記判定部は、
前記実行結果が正常であった場合、前記実行結果情報に含まれる前記ハードウェアバージョンおよび前記ソフトウェアバージョンを信頼性が高いと判定し、
前記実行結果が異常であった場合に、
前記ハードウェアバージョンおよび前記ソフトウェアバージョンのいずれも信頼性が高いと判定されていない場合は、前記ハードウェアバージョンおよび前記ソフトウェアバージョンを信頼性が低いと判定し、
前記ハードウェアバージョンは信頼性が高いと判定されておらず、前記ソフトウェアバージョンは信頼性が高いと判定されていた場合は、前記ハードウェアバージョンのみ信頼性が低いと判定し、
前記ハードウェアバージョンは信頼性が高いと判定されており、前記ソフトウェアバージョンは信頼性が高いと判定されていない場合は、前記ソフトウェアバージョンのみ信頼性が低いと判定し、
前記ハードウェアバージョンおよび前記ソフトウェアバージョンのいずれも信頼性が高いと判定されている場合は、ユーザ設定により前記ソフトウェアバージョンおよび前記ハードウェアバージョンの信頼性を判定しなおす、ことを特徴とする請求項１記載の信頼性判定装置。
【請求項３】
前記判定部は、ソフトウェアバージョンおよびハードウェアバージョンの信頼性の高さの度合いを示す信頼度を算出する、ことを特徴とする請求項１記載の信頼性判定装置。
【請求項４】
前記判定部の判定結果に基づいてデバイスのハードウェアバージョン毎にソースコード編集権限を設定する、編集権限管理部と、をさらに備えることを特徴とする請求項１記載の信頼性判定装置。
【請求項５】
デバイスとサーバによって構成され、ソースコードをデバイス間で共有するためにハードウェアおよびソフトウェアの信頼性を判定する信頼性判定システムであって、
前記サーバは、
請求項１記載の信頼性判定装置、を備え、
前記デバイスは、
前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、
ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信するソースコード受信部と、
前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録するアプリケーション記憶部と、
前記アプリケーション記憶部に記録されたソースコードを実行するアプリケーション実行部と、
前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、
前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、を備えることを特徴とする信頼性判定システム。
【請求項６】
前記ハードウェアバージョン管理部は、
ハードウェアが未変更であるか変更済みであるかを選択する選択手段を備え、
変更済みが選択された場合に前記ハードウェアバージョンを更新する、ことを特徴とする請求項５記載の信頼性判定システム。
【請求項７】
前記ハードウェアバージョン管理部は、
前記デバイスに接続されたハードウェアリストを検出する検出手段を備え、
前記ハードウェアリストに変化があった場合に、前記ハードウェアバージョンを更新する、ことを特徴とする請求項５に記載の信頼性判定システム。
【請求項８】
前記実行結果登録部は、
アプリケーション実行部が実行するアプリケーションのソフトウェアおよびハードウェアの動作が正常か異常を選択させる選択手段を備え、
当該選択手段による選択結果を実行結果として登録する、ことを特徴とする請求項５に記載の信頼性判定システム。
【請求項９】
前記実行結果登録部は、
アプリケーションが正常動作した場合の出力結果の範囲を示す設定値を保持し、
アプリケーションの出力結果が前記設定値の範囲内か範囲外かを確認し、
前記設定値の範囲内であった場合に実行結果を正常として登録し、
前記設定値の範囲外であった場合に実行結果を異常として登録する、ことを特徴とする請求項５記載の信頼性判定システム。
【請求項１０】
少なくとも２つのデバイスと、サーバによって構成され、ソースコードをデバイス間で共有するソースコード共有システムであって、
前記サーバは、
請求項１記載の信頼性判定装置を備え、
前記デバイスは、
前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、
ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信するソースコード受信部と、
前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録するアプリケーション記憶部と、
前記アプリケーション記憶部に記録されたソースコードを実行するアプリケーション実行部と、
前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、
前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、を備え、
信頼性が高いことが確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有する、ことを特徴とするソースコード共有システム。
【請求項１１】
少なくとも２つのデバイスと、サーバによって構成され、ソースコードをデバイス間で共有するソースコード共有システムであって、
前記サーバは、
請求項４記載の信頼性判定装置と、
前記編集権限情報を送信する編集権限情報送信部と、を備え、
前記デバイスは、
前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、
ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信するソースコード受信部と、
前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録するアプリケーション記憶部と、
前記アプリケーション記憶部に記録されたソースコードを実行するアプリケーション実行部と、
前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、
前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、
ユーザによる入力を受け付け、前記アプリケーション記憶部に記録されたソースコードを編集する編集部と、
前記サーバから編集権限情報を取得する編集権限情報取得部と、
前記取得した編集権限情報に基づいて編集したソースコードを送信するソースコード送信部と、を備え、
信頼性が高いことが確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有することを特徴とするソースコード共有システム。
【請求項１２】
少なくとも２つのデバイスと、サーバと、ソースコード編集部によって構成され、ソースコードをデバイス間で共有するソースコード共有システムであって、
前記サーバは、
請求項４記載の信頼性判定装置と、
前記編集権限情報を送信する編集権限情報送信部と、
ユーザ固有のユーザＩＤとデバイス固有のデバイスＩＤとを関連付けて記録するユーザ情報管理部と、を備え、
前記ソースコード編集部は、
ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信する第１のソースコード受信部と、
前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録する第１のアプリケーション記憶部と、
前記ソースコードを編集する前記ユーザＩＤの認証を行うユーザ認証部と、
前記認証されたユーザＩＤに基づいて編集されたソースコードに新規のソフトウェアバージョンを付与し、前記ユーザＩＤと関連付けて前記第１のアプリケーション記憶部に記録する編集部と、
前記認証されたユーザＩＤに関連付けられた前記デバイスＩＤに付与された編集権限を取得する編集権限情報取得部と、
前記取得した編集権限情報に基づいて、前記ユーザＩＤと関連付けられた前記デバイスおよびその他のデバイスに編集されたソースコードを送信するソースコード送信部と、を備え、
前記デバイスは、
前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、
前記ソースコード送信部から送信されたソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信する第２のソースコード受信部と、
前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録する第２のアプリケーション記憶部と、
前記アプリケーション記憶部に記録されたソースコードを実行するアプリケーション実行部と、
前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、
前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、を備え、
信頼性が高いことが確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有することを特徴とするソースコード共有システム。
【請求項１３】
第１のデバイスは、信頼性が高いと確認されていないハードウェアバージョンを有し、
信頼性が高いと確認されているハードウェアバージョンを有する第２のデバイスの検索を前記サーバに要求する動作確認デバイス検索部と、
前記サーバから応答された第２のデバイスに対しソースコードを含む動作確認要求を送信する動作確認要求送信部と、をさらに備え、
前記第２のデバイスは、
前記第１のデバイスから送信される動作確認要求を受信する動作確認要求受信部と、
動作確認結果を前記第１のデバイスに送信する動作確認結果送信部と、をさらに備え、
前記サーバは、
前記第１のデバイスからの要求に基づき、信頼性が高いと確認されているハードウェアバージョンを有する第２のデバイスを応答する動作確認デバイス応答部と、をさらに備え、
前記判定部は、前記第２のデバイスから送信された前記動作確認結果に基づいて、前記第１のデバイスから送信されたソースコードのソフトウェアバージョンの信頼性を判定する、ことを特徴とする請求項１１または１２に記載のソースコード共有システム。
【請求項１４】
前記サーバは、ソフトウェアバージョンおよびハードウェアバージョンの信頼性の高さの度合いを示す信頼度を算出し、
前記動作確認デバイス検索部は、ハードウェアバージョンの信頼度に基づいて前記第２のデバイスを選出する、ことを特徴とする請求項１３記載のソースコード共有システム。
【請求項１５】
前記デバイスは、
前記サーバに信頼性が高いと確認されたソースコードをテストコードとして要求するテストコード要求部をさらに備え、
前記サーバは、前記デバイスのテストコードの要求に対して、前記デバイスのハードウェアバージョンに応じてテストコードを送信し、テストコードの実行結果が正常であるときは、前記デバイスのハードウェアバージョンの信頼性が高いと判定する、ことを特徴とする請求項１１記載のソースコード共有システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、動作不良を起こした際の原因がハードウェアにある可能性が高いかソフトウェアにある可能性が高いか判断できる信頼性判定装置、信頼性判定システム、およびソースコード共有システムに関する。
【背景技術】
【０００２】
近年、ソースコードをデバイス間で共有し、それぞれのデバイスで編集可能とするため、様々な技術が提案されている。特許文献１では、アプリケーションのローカル環境のクローンをサーバ上に生成することで、複数のユーザがコンテンツを編集することを可能にしている。
【０００３】
また、特許文献２では、第１のユーザが作成したソースコードの未確定変更情報を第２のユーザに共有し、第２のユーザが第１のユーザに対して未確定変更情報を確定させる指示を行った後、第１のユーザが当該確定指示を行うことができるソースコード共有支援装置を開示している。これにより、ソースコードの共有の際、不安定なソースコードがソースコード管理サーバに紛れ込むことを防ぐことを可能にしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５６４９１７１号公報
【特許文献２】特許第６０２９１１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、ハードウェア制御を含むアプリケーションの場合、動作不良の原因がハードウェア、ソフトウェアの双方に存在する可能性がある。そのため、ソースコードを共有した際に動作不良があった場合、その原因がハードウェアにあるのか、ソフトウェアにあるのか切り分ける作業が必要となる。
【０００６】
また、動作確認がとれていないハードウェア上で開発されたソフトウェアには、本来想定しない動作を引き起こしてしまう可能性がある。しかしながら、特許文献１も２もこの点については考慮されていない。
【０００７】
本発明は、このような事情に鑑みてなされたものであり、動作確認をしたハードウェアとソフトウェアのバージョン管理を行い、ハードウェアとソフトウェアのバージョン毎の信頼性を設定することで、ハードウェアとソフトウェアのバージョン毎の信頼性を用いてさらに信頼性を判定することができ、動作不良を起こした際の原因がハードウェアにある可能性が高いかソフトウェアにある可能性が高いか判断できる信頼性判定装置、信頼性判定システム、およびソースコード共有システムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
（１）上記の目的を達成するため、本発明は、以下のような手段を講じた。すなわち、本発明の信頼性判定装置は、ソースコードをデバイス間で共有するためにハードウェアおよびソフトウェアの信頼性を判定する信頼性判定装置であって、前記デバイスでソースコードを含むアプリケーションが実行され、その実行動作が正常であったか異常であったかを示す実行結果を取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報と、ハードウェアバージョンおよびソフトウェアバージョン毎の判定結果とを記録する実行結果管理部と、前記実行結果情報、並びに前記実行結果情報に含まれるハードウェアバージョンと同一のハードウェアバージョンの判定結果またはソフトウェアバージョンと同一のソフトウェアバージョンの判定結果に基づき、デバイスのハードウェアおよびソフトウェアの信頼性をそれぞれ判定する判定部と、を備える。
【０００９】
このように、動作確認をしたハードウェアとソフトウェアのバージョン管理を行い、ハードウェアとソフトウェアのバージョン毎の信頼性を設定することで、ハードウェアとソフトウェアのバージョン毎の信頼性を用いてさらに信頼性を判定することができ、動作不良を起こした際の原因がハードウェアにある可能性が高いかソフトウェアにある可能性が高いか判断できる。
【００１０】
（２）また、本発明の信頼性判定装置において、前記判定部は、前記実行結果が正常であった場合、前記実行結果情報に含まれる前記ハードウェアバージョンおよび前記ソフトウェアバージョンを信頼性が高いと判定し、前記実行結果が異常であった場合に、前記ハードウェアバージョンおよび前記ソフトウェアバージョンのいずれも信頼性が高いと判定されていない場合は、前記ハードウェアバージョンおよび前記ソフトウェアバージョンを信頼性が低いと判定し、前記ハードウェアバージョンは信頼性が高いと判定されておらず、前記ソフトウェアバージョンは信頼性が高いと判定されていた場合は、前記ハードウェアバージョンのみ信頼性が低いと判定し、前記ハードウェアバージョンは信頼性が高いと判定されており、前記ソフトウェアバージョンは信頼性が高いと判定されていない場合は、前記ソフトウェアバージョンのみ信頼性が低いと判定し、前記ハードウェアバージョンおよび前記ソフトウェアバージョンのいずれも信頼性が高いと判定されている場合は、ユーザ設定により前記ソフトウェアバージョンおよび前記ハードウェアバージョンの信頼性を判定しなおす。
【００１１】
これにより、ハードウェアとソフトウェアのバージョン毎の信頼性を用いた信頼性の判定を具体的に行うことができる。
【００１２】
（３）また、本発明の信頼性判定装置において、前記判定部は、ソフトウェアバージョンおよびハードウェアバージョンの信頼性の高さの度合いを示す信頼度を算出する。
【００１３】
これにより、実行結果が正常でなかった場合に、信頼度を参照することで、ソフトウェア、ハードウェアのどちらに原因がありそうかを詳細に判断することができる。
【００１４】
（４）また、本発明の信頼性判定装置は、前記判定部の判定結果に基づいてデバイスのハードウェアバージョン毎にソースコード編集権限を設定する、編集権限管理部と、をさらに備える。
【００１５】
これにより、ソースコードをデバイス間で共有する際に、編集権限を有するデバイスで編集されたソースコードと、編集権限を有さないデバイスで編集されたソースコードとの間に差を設けることができ、不安定なソースコードが紛れ込む確率を下げることができる。
【００１６】
（５）また、本発明の信頼性判定システムは、デバイスとサーバによって構成され、ソースコードをデバイス間で共有するためにハードウェアおよびソフトウェアの信頼性を判定する信頼性判定システムであって、前記サーバは、上記（１）記載の信頼性判定装置、を備え、前記デバイスは、前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信するソースコード受信部と、前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録するアプリケーション記憶部と、前記アプリケーション記憶部に記録されたソースコードを実行するアプリケーション実行部と、前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、を備える。
【００１７】
これにより、ハードウェアとソフトウェアのバージョン毎の信頼性に基づいてさらに信頼性を判定することができ、動作不良を起こした際の原因がハードウェアにある可能性が高いかソフトウェアにある可能性が高いか判断できる。
【００１８】
（６）また、本発明の信頼性判定システムにおいて、前記ハードウェアバージョン管理部は、ハードウェアが未変更であるか変更済みであるかを選択する選択手段を備え、変更済みが選択された場合に前記ハードウェアバージョンを更新する。
【００１９】
これにより、ハードウェアバージョンの更新を、ユーザの選択に基づいて判定することができる。
【００２０】
（７）また、本発明の信頼性判定システムにおいて、前記ハードウェアバージョン管理部は、前記デバイスに接続されたハードウェアリストを検出する検出手段を備え、前記ハードウェアリストに変化があった場合に、前記ハードウェアバージョンを更新する。
【００２１】
これにより、ハードウェアバージョンを自動で更新することができる。
【００２２】
（８）また、本発明の信頼性判定システムにおいて、前記実行結果登録部は、アプリケーション実行部が実行するアプリケーションのソフトウェアおよびハードウェアの動作が正常か異常を選択させる選択手段を備え、当該選択手段による選択結果を実行結果として登録する。
【００２３】
これにより、出力結果が正常か異常かを、ユーザの選択に基づいて判定することができる。
【００２４】
（９）また、本発明の信頼性判定システムにおいて、前記実行結果登録部は、アプリケーションが正常動作した場合の出力結果の範囲を示す設定値を保持し、アプリケーションの出力結果が前記設定値の範囲内か範囲外かを確認し、前記設定値の範囲内であった場合に実行結果を正常として登録し、前記設定値の範囲外であった場合に実行結果を異常として登録する。
【００２５】
これにより、出力結果が正常か異常かを、予め設定した値に基づいて、自動で判断することができる。
【００２６】
（１０）また、本発明のソースコード共有システムは、少なくとも２つのデバイスと、サーバによって構成され、ソースコードをデバイス間で共有するソースコード共有システムであって、前記サーバは、上記（１）記載の信頼性判定装置を備え、前記デバイスは、前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信するソースコード受信部と、前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録するアプリケーション記憶部と、前記アプリケーション記憶部に記録されたソースコードを実行するアプリケーション実行部と、前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、を備え、信頼性が高いことが確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有する。
【００２７】
これにより、ハードウェアとソフトウェアのバージョン毎の信頼性に基づいてさらに信頼性を判定した結果、信頼性が確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有することができる。
【００２８】
（１１）また、本発明のソースコード共有システムは、少なくとも２つのデバイスと、サーバによって構成され、ソースコードをデバイス間で共有するソースコード共有システムであって、前記サーバは、上記（４）記載の信頼性判定装置と、前記編集権限情報を送信する編集権限情報送信部と、を備え、前記デバイスは、前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信するソースコード受信部と、前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録するアプリケーション記憶部と、前記アプリケーション記憶部に記憶されたソースコードを実行するアプリケーション実行部と、前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、前記アプリケーションの動作が正常であったか異常であったかを示す実行結果、前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、ユーザによる入力を受け付け、前記アプリケーション記憶部に記憶されたソースコードを編集する編集部と、前記サーバから編集権限情報を取得する編集権限情報取得部と、前記取得した編集権限情報に基づいて編集したソースコードを送信するソースコード送信部と、を備え、信頼性が高いことが確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有する。
【００２９】
これにより、編集権限を有するデバイスで編集されたソースコードを複数のデバイスで共有することができる。
【００３０】
（１２）また、本発明のソースコード共有システムは、少なくとも２つのデバイスと、サーバと、ソースコード編集部によって構成され、ソースコードをデバイス間で共有するソースコード共有システムであって、前記サーバは、上記（４）記載の信頼性判定装置と、前記編集権限情報を送信する編集権限情報送信部と、ユーザ固有のユーザＩＤとデバイス固有のデバイスＩＤとを関連付けて記録するユーザ情報管理部と、を備え、前記ソースコード編集部は、ソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信する第１のソースコード受信部と、前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録する第１のアプリケーション記憶部と、前記ソースコードを編集する前記ユーザＩＤの認証を行うユーザ認証部と、前記認証されたユーザＩＤに基づいて編集されたソースコードに新規のソフトウェアバージョンを付与し、前記ユーザＩＤと関連付けて前記第１のアプリケーション記憶部に記録する編集部と、前記認証されたユーザＩＤに関連付けられた前記デバイスＩＤに付与された編集権限を取得する編集権限情報取得部と、前記取得した編集権限情報に基づいて、前記ユーザＩＤと関連付けられた前記デバイスおよびその他のデバイスに編集されたソースコードを送信するソースコード送信部と、を備え、前記デバイスは、前記デバイスに接続されたハードウェアのバージョンを記録するハードウェアバージョン管理部と、前記ソースコード送信部から送信されたソースコードおよび前記ソースコードに関連付けられたソフトウェアバージョンを受信する第２のソースコード受信部と、前記受信したソースコードおよびソフトウェアバージョンを関連付けて記録する第２のアプリケーション記憶部と、前記アプリケーション記憶部に記録されたソースコードを実行するアプリケーション実行部と、前記アプリケーション実行部に従い前記デバイスに接続されたハードウェアを制御するハードウェア制御部と、前記アプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、前記実行結果と前記ハードウェアバージョンおよび前記ソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置の実行結果管理部に通知する実行結果登録部と、を備え、信頼性が高いことが確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有する。
【００３１】
これにより、編集権限をユーザＩＤと関連付けて管理でき、編集部がデバイスと異なる構成とすることができ、編集権限を有するユーザＩＤに基づいて編集されたソースコードを複数のデバイスで共有することができる。
【００３２】
（１３）また、本発明のソースコード共有システムにおいて、第１のデバイスは、信頼性が高いと確認されていないハードウェアバージョンを有し、信頼性が高いと確認されているハードウェアバージョンを有する第２のデバイスの検索を前記サーバに要求する動作確認デバイス検索部と、前記サーバから応答された第２のデバイスに対しソースコードを含む動作確認要求を送信する動作確認要求送信部と、をさらに備え、前記第２のデバイスは、前記第１のデバイスから送信される動作確認要求を受信する動作確認要求受信部と、動作確認結果を前記第１のデバイスに送信する動作確認結果送信部と、をさらに備え、前記サーバは、前記第１のデバイスからの要求に基づき、信頼性が高いと確認されているハードウェアバージョンを有する第２のデバイスを応答する動作確認デバイス応答部と、をさらに備え、前記判定部は、前記第２のデバイスから送信された前記動作確認結果に基づいて、前記第１のデバイスから送信されたソースコードのソフトウェアバージョンの信頼性を判定する。
【００３３】
これにより、ハードウェアの動作確認がとれていない第１のデバイス上で編集したソースコードを共有する際、ハードウェアの動作確認がとれている第２のデバイスに動作確認を要求し、当該第２のデバイスで動作確認がとれた場合にソースコードの共有を許可することで、不安定なソースコードが紛れ込む確率を下げることができる。
【００３４】
（１４）また、本発明のソースコード共有システムにおいて、前記サーバは、ソフトウェアバージョンおよびハードウェアバージョンの信頼性の高さの度合いを示す信頼度を算出し、前記動作確認デバイス検索部は、ハードウェアバージョンの信頼度に基づいて前記第２のデバイスを選出する。
【００３５】
これにより、ハードウェアの動作確認がとれている第２のデバイスが複数存在する場合に、信頼度に基づいて第２のデバイスを選出することができる。
【００３６】
（１５）また、本発明のソースコード共有システムにおいて、前記デバイスは、前記サーバに信頼性が高いと確認されたソースコードをテストコードとして要求するテストコード要求部をさらに備え、前記サーバは、前記デバイスのテストコードの要求に対して、前記デバイスのハードウェアバージョンに応じてテストコードを送信し、テストコードの実行結果が正常であるときは、前記デバイスのハードウェアバージョンの信頼性が高いと判定する。
【００３７】
これにより、編集不可であった場合でも、テストコードを用いてハードウェアの信頼性が高いことを確認でき、編集可能となる。
【発明の効果】
【００３８】
本発明によれば、動作確認をしたハードウェアとソフトウェアのバージョン管理を行い、ハードウェアとソフトウェアのバージョン毎の信頼性を設定することで、ハードウェアとソフトウェアのバージョン毎の信頼性を用いてさらに信頼性を判定することができ、動作不良を起こした際の原因がハードウェアにある可能性が高いかソフトウェアにある可能性が高いか判断できる。
【図面の簡単な説明】
【００３９】
【図１】第１の実施形態に係るソースコード共有システムの構成の一例を示すブロック図である。
【図２】デバイスがソースコードを受信してからアプリケーションの動作確認を行い、ソフトウェア、ハードウェアの信頼性を判定するまでの処理を示すフローチャートである。
【図３】信頼性の判定をする際の手順を示すフローチャートである。
【図４】実行結果管理部に登録される情報の一例を示す表である。
【図５】信頼度の算出をする際の手順を示すフローチャートである。
【図６】第１の実施形態の変形例１の構成の一例を示すブロック図である。
【図７】第１の実施形態の変形例２の構成の一例を示すブロック図である。
【図８】第２の実施形態に係るソースコード共有システムの構成の一例を示すブロック図である。
【図９】デバイスがソースコードを受信してから、編集権限の設定を行うまでの処理を示すフローチャートである。
【図１０】デバイスでソースコードを編集してから、編集内容を他のデバイスへ送信するまでの処理を示すフローチャートである。
【図１１】第２の実施形態の変形例の構成の一例を示すブロック図である。
【図１２】第３の実施形態に係るソースコード共有システムの構成の一例を示すブロック図である。
【図１３】動作確認処理を含む、ソースコード共有までの処理を示すフローチャートである。
【図１４】動作確認を行う場合の検索要求から動作確認の受信までの処理を示すフローチャートである。
【図１５】第４の実施形態に係るソースコード共有システムの構成の一例を示すブロック図である。
【図１６】テストコード要求処理を含む、ソースコード共有までの処理を示すフローチャートである。
【図１７】ソフトウェアおよびハードウェアのバージョン進化の例を示す樹形図である。
【発明を実施するための形態】
【００４０】
［第１の実施形態］
（ソースコード共有システムの構成）
図１は、本実施形態に係るソースコード共有システムの構成の一例を示すブロック図である。ソースコード共有システム１０は、複数のデバイス２００とサーバ１００によって構成されている。なお、特に説明しない場合は、ブロック図に記載されているデバイスと同様のデバイスが複数存在するものとする。サーバ１００は、信頼性判定装置３０を備える。デバイス２００はセンサやアクチュエータなどのハードウェアを含み、デバイス２００上で実行されるアプリケーションは当該ハードウェアの制御を含む。例えば、一定時間毎にセンサ情報を取得する、ロボットアームのアクチュエータを制御する、といったものである。なお、本実施形態ではサーバ１００が信頼性判定装置３０を備える構成としているが、信頼性判定装置３０がサーバ１００と別に設けられていてもよいし、信頼性判定装置３０の一部の機能が別の装置（デバイス２００など）に設けられていてもよい。
【００４１】
信頼性判定装置３０は、実行結果管理部１１０、および判定部１２０から構成されている。実行結果管理部１１０は、ソースコードを含むアプリケーションの動作が正常であったか異常であったかを示す実行結果を取得し、実行結果とハードウェアバージョンおよびソフトウェアバージョン（後述する）とを含む実行結果情報と、ハードウェアバージョンおよびソフトウェアバージョン毎の判定結果とを記録する。実行結果は、アプリケーションが正しく動作したかどうかのブーリアン値である。
【００４２】
判定部１２０は、実行結果管理部１１０に登録される実行結果、並びに実行結果情報に含まれるハードウェアバージョンと同一のハードウェアバージョンの判定結果またはソフトウェアバージョンと同一のソフトウェアバージョンの判定結果に基づき、各デバイスのハードウェアおよびソフトウェアの信頼性をそれぞれ判定する。判定部１２０により判定された判定結果は実行結果管理部１１０に記録される。
【００４３】
デバイス２００は、ハードウェアバージョン管理部２１０、ソースコード受信部２２０、アプリケーション記憶部２３０、アプリケーション実行部２４０、ハードウェア制御部２５０、および実行結果登録部２６０から構成されている。ハードウェアバージョン管理部２１０は、デバイス２００に接続されるハードウェアのバージョンを記録する。デバイス２００のハードウェアバージョンは、ハードウェアのバージョンを示すユニークＩＤである。ハードウェアのバージョンは、デバイス２００が作製されるのと同時に付与される。以降、デバイス２００に接続されるハードウェアに変更が加えられる度に、ハードウェアバージョン管理部２１０が管理するハードウェアバージョンを更新し、新たなバージョンＩＤを付与する。ハードウェアバージョンは、同様の構成のデバイスであっても、デバイス毎に異なる値が付与される。
【００４４】
ハードウェアバージョン管理部２１０は、ハードウェアバージョンとともにデバイスＩＤを管理してもよい。また、ハードウェアバージョンにデバイスＩＤを含む構成としてもよい。デバイスＩＤは、デバイス毎に付与されるユニークＩＤである。デバイスＩＤは、デバイスが製造された際に付与される文字列である。あるいは、デバイスがネットワークに接続する際のネットワークアドレスやネットワークインターフェイスのＭＡＣアドレスなどを基に固有のＩＤを付与してもよい。
【００４５】
ハードウェアバージョン管理部２１０は、ハードウェアに変更が加えられたかどうかを選択する選択手段を提示してもよい。これにより、ハードウェアバージョンの更新を、ユーザの選択に基づいて判定することができる。この場合、開発者はハードウェアに変更を加える度に当該選択手段に従い、ハードウェアに変更を加えたという選択を行う。ハードウェアバージョン管理部２１０は変更が加えられたという選択を受け取る度に新たなハードウェアバージョンを付与するための更新処理を行う。選択手段は、デバイスにボタン、スイッチなどを備え、当該ボタン、スイッチを操作することであってもよいし、ディスプレイと入力手段（マウスやキーボード）をデバイスに備え、当該ディスプレイに表示されたユーザインタフェース（UI）を当該入力手段により操作することでもよい。あるいは、デバイス２００とネットワークで接続された別の機器（例えばサーバ１００）にディスプレイと入力手段を備え、当該機器上で操作することでもよい。
【００４６】
あるいは、ハードウェアバージョン管理部２１０が定期的にデバイスとハードウェア間の通信に用いられるシリアルバス（I2Cなど）をスキャンし、シリアルバスに接続されているハードウェアリストを取得し、当該ハードウェアリストに変化があった場合に、新たなバージョンＩＤを付与してもよい。これにより、ハードウェアバージョンを自動で更新することができる。また、ハードウェアの耐用年数などを考慮し、前回付与したバージョンＩＤから一定期間経過した際にハードウェアバージョン更新処理を行ってもよい。
【００４７】
ソースコード受信部２２０は、ソースコードおよびソースコードに関連付けられたソフトウェアバージョンを受信する。アプリケーション記憶部２３０は、ソースコード受信部２２０が受信したソースコードおよびソフトウェアバージョンを関連付けて記録する。
【００４８】
ソフトウェアバージョンは、ソフトウェアのバージョンを示すユニークＩＤである。ソフトウェアのバージョンは、ソースコードに編集が加えられる度に自動的に更新され、付与されるユニークなＩＤを用いる。あるいは、ある編集のまとまり毎に開発者がバージョン登録を行い、その際にソースコードに付与されるユニークなＩＤを用いてもよい。ソフトウェアバージョンおよびハードウェアバージョンは、サーバにより付与されてもよい。
【００４９】
アプリケーション実行部２４０は、アプリケーション記憶部２３０に記録されたソースコードを実行する。ハードウェア制御部２５０は、アプリケーション実行部２４０に従いデバイス２００に接続されたハードウェアを制御する。その結果、例えば、一定時間毎にセンサ情報を取得する、ロボットアームのアクチュエータを制御する、といったデバイス２００に接続されたハードウェアの制御ができる。
【００５０】
実行結果登録部２６０は、ソースコードを含むアプリケーションが実行された実行動作が正常であったか異常であったかを示す実行結果を判定または取得し、実行結果とハードウェアバージョンおよびソフトウェアバージョンとを含む実行結果情報を、信頼性判定装置３０の実行結果管理部１１０に通知する。
【００５１】
実行結果登録部２６０は、アプリケーションの動作確認を行う開発者に対し、アプリケーションのソフトウェアおよびハードウェアが正しく動作したかを選択させる選択手段を提示してもよい。これにより、出力結果が正常か異常かを、ユーザの選択に基づいて判定することができる。この場合、開発者は提示に従い、当該選択手段により選択し、実行結果を登録する。選択手段は、デバイスにボタン、スイッチなどを備え、当該ボタン、スイッチを操作することであってもよいし、ディスプレイと入力手段（マウスやキーボード）をデバイスに備え、当該ディスプレイに表示されたＵＩを当該入力手段により操作することでもよい。あるいは、デバイス２００とネットワークで接続された別の機器（例えばサーバ１００）にディスプレイと入力手段を備え、当該機器上で操作することでもよい。
【００５２】
実行結果登録部２６０は、アプリケーションが正常動作した場合の出力結果の範囲を予め設定しておき、アプリケーションを実行した際の出力結果が当該範囲内であるかどうかを確認することで、自動的に正しく動作したかどうかを登録してもよい。これにより、出力結果が正常か異常かを、予め設定した値に基づいて、自動で判断することができる。例えば、あるセンサの値を取得するアプリケーションにおいて、正常動作した場合のセンサ値の取り得る値を設定しておき、アプリケーションの出力結果が当該設定値の範囲内かどうかを判定する。
【００５３】
なお、ソースコード共有システム１０を信頼性判定システム７０として機能させる場合は、デバイス２００は１つのみでもよい。
【００５４】
（ソースコード共有システムの動作）
図２は、デバイスがソースコードを受信してからアプリケーションの動作確認を行い、ソフトウェア、ハードウェアの信頼性を判定するまでの処理を示すフローチャートである。まず、デバイスは、ソースコードを受信する（ステップＳ１）。次に、デバイスは、受信したソースコードを含むアプリケーションの実行を行い（ステップＳ２）、実行結果情報をサーバに通知する。そして、サーバは、実行結果情報を登録し（ステップＳ３）、ソフトウェアおよびハードウェアの信頼性を判定する（ステップＳ４）。
【００５５】
図３は、信頼性の判定をする際の手順を示すフローチャートである。まず、判定部は、実行結果情報を取得する（ステップＴ１）。次に、実行結果情報に含まれるハードウェアバージョンおよびソフトウェアバージョンの信頼性を取得する（ステップＴ２）。次に、実行結果が正常であった場合、当該ハードウェアバージョン、ソフトウェアバージョンを信頼性が高いと判定し（ステップＴ３）、判定結果を実行結果管理部に通知する（ステップＴ４）。一方、実行結果が正常でなかった場合、当該ハードウェアバージョンおよび当該ソフトウェアバージョンの信頼性が高いと確認されているか否かを判断する。いずれも信頼性が高いと確認されていなかった場合、当該ハードウェアバージョンおよびソフトウェアバージョンを信頼性が低いと判定し（ステップＴ５）、判定結果を実行結果管理部に通知する（ステップＴ４）。また、いずれか一方のみ信頼性が高いと確認されている場合、他方の信頼性が低いと判定し（ステップＴ６）、判定結果を実行結果管理部に通知する（ステップＴ４）。
【００５６】
また、実行結果が正常でなく、いずれも信頼性が高いと確認できている場合には、判定をしないでユーザに通知する（ステップＴ７）。この場合、ユーザ設定により、当該ソフトウェアバージョンおよび当該ハードウェアバージョンのどちらか一方、あるいは両方を信頼性が低いと判定し直すようにしてもよい。
【００５７】
例えば、一度信頼性が高いと確認できたハードウェアがすぐに故障するよりは、ソフトウェアの環境変数の埋め込み等による問題の可能性が高いという判断であれば、当該ソフトウェアバージョンのみ信頼性が低いと判定し直す。あるいは、温度が低い／高いなどの特定の環境条件により正常に動作しないという可能性が高いという判断であれば、当該ハードウェアバージョンのみ信頼性が低いと判定し直す。あるいは、原因が特定できないため、当該ハードウェアバージョン、ソフトウェアバージョンの両方を信頼性が低いと判定しなおす。
【００５８】
このような判定を用いると、ソースコードを複数のデバイスで共有した際、実行結果が正常でなかった場合に、ハードウェアに原因がある可能性が高いのかソフトウェアに原因がある可能性が高いのかを判断し、修正することができる。
【００５９】
具体的には下記のような手順が考えられる。
a) まず、デバイスID=Da、ハードウェアバージョン=Hx、ソフトウェアバージョン=S0について、当該ハードウェアバージョンおよび当該ソフトウェアバージョンの信頼性はまだ確認されていないとする。このときの実行結果がfalseであった場合（result(Da,Hx,S0)=false）、当該ハードウェアバージョンおよび当該ソフトウェアバージョンは信頼性が低いと判定して、sw(S0)=false,hw(Hx)=falseを登録する。
b) ソフトウェアS0を修正し、ソフトウェアS1とした際に、実行結果がtrueであった場合（result(Da,Hx,S1)=true）に、当該ハードウェアバージョン、ソフトウェアバージョンにおける、当該デバイスIDのソフトウェアおよびハードウェアは信頼性が高いと判定して、sw(S1)=true, hw(Hx)=trueを登録する。
c) デバイスDbがソフトウェアS1を受信し、ハードウェアバージョン=Hyにおいて、S1を実行した際、実行結果がfalseであった場合（result(Db,Hy,S1)=false）、当該ソフトウェアS1の信頼性はすでに確認されているため、sw(S1)=trueである。当該ハードウェアバージョンHyの信頼性については、実行結果がfalseであったため、信頼性が低いと判定され、hw(Hy)=falseとして登録される。
d) デバイスDbのハードウェアを修正し、ハードウェアバージョンをHzとした際に、ソフトウェアS1を実行し、実行結果がtrueであった場合（result(Db,Hz,S1)=true）、当該ハードウェアバージョンHzは信頼性が高いと判定され、hw(Hz)=trueとして登録される。
【００６０】
図４は、実行結果管理部に登録される情報の一例を示す表である。なお、上記判定方法は一例であり、その他の判定方法を用いてもよい。また、複数回の実行結果を用いたり、複数の過去の信頼性の情報を用いたりしてもよい。
【００６１】
ここで、ソフトウェアおよびハードウェアの信頼性（true,false）の他に信頼性の高さの度合いを示す信頼度という概念を導入することもできる。例えば、ソフトウェアが特定のハードウェア上でのみ動くような固有の設定値を含んでいたり、ハードウェアが特定の条件（環境（温度、湿度、など）条件、動作条件（動作速度、繰り返し間隔、など））でのみ動作するように作成されていたりする場合に、実行結果が正常であっても、ソフトウェアおよびハードウェアの信頼性が高いことを保証できない場合が存在する。
【００６２】
このような場合に、信頼性のように高低２値ではない信頼度を設定することで、詳細な判断が可能となる。ソフトウェアバージョンS1の信頼度Csw(S1)は、複数のハードウェアで動作させ、正常な実行結果が得られる毎に信頼度Csw(S1)を増加させ、正常な実行結果が得られなかった場合には信頼度Csw(S1)を減少させる。ハードウェアバージョンHxの信頼度Chw(Hx)は、複数のソフトウェアを動作させ、正常な実行結果が得られる毎に信頼度Chw(Hx)を増加させ、正常な実行結果が得られなかった場合には信頼度Chw(Hx)を減少させる。
【００６３】
信頼度の計算方法には、例えば図５のような方法が考えられる。図５は、信頼度の算出をする際の手順を示すフローチャートである。ソフトウェアの初期信頼度をC_s、ハードウェアの初期信頼度をC_hとして予め設定する。初期信頼度は０より大きく１未満の任意の数値とすることができる。例えば、C_s=C_h=0.5とする。実行結果Result(Hx,S1)を基に信頼度の更新を行う処理をする。
n>=0,m>=0の整数n,mに対して、
ソフトウェアバージョンS1をn回目に更新した際の信頼度をCsw(S1,n)、
ハードウェアバージョンHxのm回目に更新した際の信頼度をChw(Hx,m)と表す。
S1の更新回数n=0、すなわち、S1の信頼度の設定がまだ行われていなかった場合、
Csw(S1,n)=C_s (n=0)
とする（ステップＵ１）。
Hxの更新回数m=0、すなわち、Hxの信頼度の設定がまだ行われていなかった場合、
Chw(Hx,m)=C_h (m=0)
とする（ステップＵ２）。
実行結果Result(Hx,S1)が正常（=true）だった場合には、まず以下の式によりソフトウェアの信頼度を更新する（ステップＵ３）。
Csw(S1,n+1) = 1-(1-Csw(S1,n))(1-Chw(Hx,m))
その後、以下の式によりハードウェアの信頼度を更新する（ステップＵ４）。
Chw(Hx,m+1) = 1-(1-Chw(Hx,m))(1-Csw(S1,n+1))
実行結果Result(Hx,S1)が異常（=false）だった場合には、まず以下の式によりソフトウェアの信頼度を更新する（ステップＵ５）。
Csw(S1,n+1)=Csw(S1,n)(1-Chw(Hx,m))
その後、以下の式によりハードウェアの信頼度を更新する（ステップＵ６）。
Chw(Hx,m+1)=Chw(Hx,m)(1-Csw(S1,n+1))
【００６４】
以上の計算により、実行結果が異常であった場合に、信頼度の高いハードウェア（ソフトウェア）上で動作させていた場合、ソフトウェア（ハードウェア）に問題がある可能性が高いと判断して、信頼度が大きく低下する。一方、信頼度の低いハードウェア（ソフトウェア）上で動作させていた場合、ハードウェア（ソフトウェア）に問題がある可能性が高いと判断して、信頼度の低下率は低く抑えることができる。
【００６５】
また、実行結果が正常であった場合に、信頼度の高いハードウェア（ソフトウェア）上で動作させていた場合、ハードウェア／ソフトウェアともに正常である可能性が高いと判断して、信頼度は大きく上昇する。一方、信頼度の低いハードウェア（ソフトウェア）上で動作させていた場合、偶然正しく動作した可能性も高いと判断して、ソフトウェア（ハードウェア）信頼度の上昇率は低く抑えることができる。これにより、実行結果が正常でなかった場合に、信頼度を参照することで、ソフトウェア、ハードウェアのどちらに原因がありそうかを詳細に判断することができる。
【００６６】
前述の信頼度の更新において、特定のハードウェア（ソフトウェア）バージョンにおいて実行結果が正常であり、ソフトウェア（ハードウェア）を更新した際に実行結果が異常となり、ハードウェア（ソフトウェア）の信頼度が低下し、何度かのバージョンアップの末に原因がソフトウェア（ハードウェア）であると特定できた場合、実行結果が正常であった段階での値を基に信頼度を更新してもよい。
【００６７】
例えば、あるハードウェアバージョンHxにおいて、ソフトウェアバージョンS1で正常動作を確認した後（ハードウェアの信頼度=Chw(Hx,1)）、ソフトウェアバージョンをS2,S3,と更新していった場合に実行結果が異常となり（ハードウェアの信頼度=Chw(Hx,3)< Chw(Hx,1)）、S4に更新した際に実行結果が正常となり、Hxの異常ではなかったことが判明した場合、直前に更新された信頼度Chw(Hx,3)ではなく、実行結果が正常であった段階の信頼度Chw(Hx,1)を用いて、以下のように信頼度を更新する。
Chw(Hx,4) = 1-(1-Chw(Hx,1))(1-Csw(S4,0))
【００６８】
信頼度の概念を導入した際に、信頼度が設定した閾値以下になった場合に当該ソフトウェア／ハードウェアバージョンは信頼性が低いと判定する、あるいは信頼度が設定した閾値以上になった場合に当該ソフトウェア／ハードウェアバージョンは信頼性が高いと判定することにより、ソフトウェア／ハードウェアの信頼性を判定してもよい。
【００６９】
上記の説明では、実行結果登録部２６０、ハードウェアバージョン管理部２１０をデバイス２００に備えた場合の実施形態を示したが、図６に示すように、これらをサーバ１００に備えてもよい。図６は、第１の実施形態の変形例１の構成の一例を示すブロック図である。この場合、ハードウェア開発者があるデバイス２００に接続されたハードウェアに変更を加えた場合、サーバ１００に具備されたハードウェアバージョン管理部２１０に対し、デバイス２００に関連付けられたハードウェアバージョンを更新する処理を行う。また、サーバ１００に具備された実行結果登録部２６０により、実行結果を実行結果管理部１１０に登録する。なお、以降のブロック図では、信頼性判定装置３０を図示しない。
【００７０】
図７は、第１の実施形態の変形例２の構成の一例を示すブロック図である。アプリケーションの出力結果を基に実行結果を自動判定する場合は、図７に示すように、デバイス２００にアプリケーション出力結果送信部２７０を備え、サーバ１００にアプリケーション出力結果受信部１３０を備える構成としてもよい。アプリケーション出力結果送信部２７０は、デバイス２００で実行したアプリケーションの出力結果を、デバイスＩＤと関連付けてサーバ１００に送信する。アプリケーション出力結果受信部１３０は、アプリケーション出力結果を受信し、サーバはこれを基に実行結果を判定して実行結果管理部１１０に当該実行結果を登録する。
【００７１】
このように、動作確認をしたハードウェアとソフトウェアのバージョン管理を行い、ハードウェアとソフトウェアのバージョン毎の信頼性を設定することで、ハードウェアとソフトウェアのバージョン毎の信頼性を用いてさらに信頼性を判定することができ、動作不良を起こした際の原因がハードウェアにある可能性が高いかソフトウェアにある可能性が高いか判断できる。その結果、信頼性が高いことが確認されたソフトウェアバージョンを有するソースコードを複数のデバイスで共有することができる。
【００７２】
［第２の実施形態］
（ソースコード共有システムの構成）
図８は、本実施形態に係るソースコード共有システム１０の構成の一例を示すブロック図である。本実施形態では、ハードウェアおよびソフトウェアの信頼性に基づいて、各デバイスで編集されたソースコードを他のデバイスへ送信する権限を与えるかどうかを判断する。ソースコード共有システム１０の構成は、第１の実施形態と同様である。
【００７３】
デバイス２００は、第１の実施形態の構成に加えて、編集部２８０、編集権限情報取得部２９０、およびソースコード送信部３００を備える。編集部２８０は、ユーザによる入力を受け付け、デバイスのアプリケーション記憶部２３０に記録されたソースコードを編集する。
【００７４】
編集権限情報取得部２９０は、サーバ１００に対して編集権限の取得要求を送信し、サーバ１００から編集権限情報を取得する。
【００７５】
ソースコード送信部３００は、取得した編集権限情報に基づいて編集したソースコードを送信する。ソースコード送信部３００は、取得した編集権限情報が編集可能であった場合には、編集が加えられたソースコードを他のデバイスにも送信する。編集不可であった場合には、編集が加えられたソースコードを他のデバイスには送信しない。
【００７６】
ここで、編集可能であった場合に、編集が加えられたソースコードを他のデバイスに対して送信するかどうかを選択する手段を提示して、送信するという選択が行われた際にのみ、他のデバイスに当該ソースコードを送信するようにしてもよい。また、ソースコードに編集を加える前に編集権限を取得し、デバイス内でのソースコードの編集自体の権限を管理するようにしてもよい。
【００７７】
サーバ１００は、第１の実施形態の構成に加えて、編集権限管理部１４０、および編集権限情報送信部１５０を備える。編集権限管理部１４０は、ハードウェアおよびソフトウェアの信頼性に基づいて、各デバイスで編集されたソースコードを他のデバイスへ送信する権限を与えるかどうかを判断する。編集権限は、デバイスの現在時刻のハードウェアバージョンおよび編集が加えられたソースコードのソフトウェアバージョンにおいて、いずれも信頼性が高いことが確認されているデバイスに対して、編集可能という権限が与えられ、編集が加えられたソースコードの送信が許可される。それ以外のデバイスに対しては編集不可の権限が与えられ、ソースコードの送信は許可されない。編集権限管理部１４０で管理する編集権限は、ソースコードのハードウェア制御に関わる部分のみに限ってもよい。なお、上記の権限付与の条件は一例であり、上記の条件以外の条件により権限を付与してもよい。
【００７８】
編集権限情報送信部１５０は、デバイス２００の編集権限情報取得部２９０から送信された編集権限の取得要求に対し、編集権限情報を送信する。
【００７９】
（ソースコード共有システムの動作）
図９は、デバイスがソースコードを受信してから、編集権限の設定を行うまでの処理を示すフローチャートである。ソフトウェア、ハードウェアの信頼性を判定するまでの処理は前述の通り行う（ステップＶ１〜Ｖ４）。その後、サーバに備えられた編集権限管理部により、当該判定結果に基づき編集権限の設定を行う（ステップＶ５）。編集権限は、デバイスの現在時刻のハードウェアバージョン（Hnow）およびソフトウェアバージョン（Snow）において、いずれも信頼性が高いことが確認されている（hw(Hnow)=true,sw(Snow)=true）場合、信頼性が高いことが確認されたデバイスに対して、編集可能という権限が与えられ、それ以外のデバイスに対しては編集不可の権限が与えられる。
【００８０】
図１０は、デバイスでソースコードを編集してから、編集内容を他のデバイスへ送信するまでの処理を示すフローチャートである。デバイスD_editに備えられた編集部は、ユーザによる入力を受け付け、デバイスのアプリケーション記憶部に記憶されたソースコードを編集する。その後、デバイスD_editに備えられた編集権限情報取得部により、サーバに対して編集権限の取得要求が送信される（ステップＷ１）。
【００８１】
サーバは、デバイスD_editから送信された編集権限の取得要求を受信し（ステップＷ２）、設定された編集権限を参照し、デバイスD_editに与えられている編集権限情報を取得する。このとき、編集権限の取得要求に含まれるハードウェアバージョンまたはソフトウェアバージョンの少なくとも一方の信頼性が確認されていないときは、再度判定と編集権限の設定を行ってもよい。そして、デバイスD_editに当該権限情報を送信する（ステップＷ３）。
【００８２】
デバイスD_editは、サーバから送信される編集権限を取得し（ステップＷ４）、編集可能であった場合には、編集が加えられたソースコードを他のデバイスにも送信し（ステップＷ５）、終了する。編集不可であった場合には、編集が加えられたソースコードを他のデバイスには送信せず、処理を終了する。
【００８３】
これにより、ソースコードをデバイス間で共有する際に、編集権限を有するデバイスで編集されたソースコードと、編集権限を有さないデバイスで編集されたソースコードとの間に差を設けることができ、不安定なソースコードが紛れ込む確率を下げることができる。
【００８４】
上記では、編集部２８０、編集権限情報取得部２９０、ソースコード送信部３００をデバイス２００に備えた場合の実施形態について説明したが、図１１に示すように、サーバ１００にユーザ情報管理部１６０を備え、ソースコード受信部２２０、アプリケーション記憶部２３０、編集部２８０、編集権限情報取得部２９０、ユーザ認証部１７０、ソースコード送信部３００を備えたソースコード編集部４００を設けてもよい。この場合、ソースコード編集部４００は、デバイス２００およびサーバ１００とネットワーク経由で接続されているとする。また、ソースコード編集部４００は、サーバ１００内に備えてもよいし、デバイス２００およびサーバ１００とネットワーク経由で接続された別の機器上に備えてもよい。
【００８５】
この変形例では、サーバ１００に具備されたユーザ情報管理部１６０は、ユーザＩＤとユーザが動作確認に用いるデバイスのデバイスＩＤとを結びつけて管理する。新規のユーザＩＤが登録された場合、動作確認に用いるデバイスＩＤの入力手段を提示し、デバイスＩＤを入力させる。デバイスＩＤの入力手段の提示は、新規ユーザの登録時でもよいし、ユーザＩＤに紐付けられた編集権限を取得する際でもよい。
【００８６】
ソースコード編集部４００に備えられたソースコード受信部２２０は、ソースコードを受信し、ソフトウェアバージョンと関連付けてアプリケーション記憶部２３０に記憶する。ユーザ認証部１７０は、ソースコードの編集を行うユーザの認証を行う。ユーザ認証は、例えばユーザＩＤと別途設定したパスワードを入力することで行う。
【００８７】
編集部２８０は、ユーザによる入力を受け付け、ソースコード編集部４００に備えられたアプリケーション記憶部２３０に記録されているソースコードを編集する。編集されたソースコードには新たなソフトウェアバージョンが付与され、編集を行ったユーザのユーザＩＤと関連付けられ、ソースコード編集部４００のアプリケーション記憶部２３０に記憶される。編集されたソースコードは、ユーザＩＤと関連付けられたデバイス２００へ送信され、アプリケーションの実行、判定、および編集権限の設定が行われる。編集権限情報取得部２９０は、認証されたユーザＩＤと関連付けられたデバイスＩＤに付与された編集権限を取得する。
【００８８】
ソースコード送信部３００は、取得した編集権限が、編集可能であった場合には、編集が加えられたソースコードを他のデバイスに送信する。編集不可であった場合には、編集が加えられたソースコードを他のデバイスには送信しない。
【００８９】
これにより、編集権限をユーザＩＤと関連付けて管理でき、ソースコード編集部がデバイスと異なる構成とすることができる。また、編集権限を有するユーザＩＤに基づいて編集されたソースコードを複数のデバイスで共有することができる。
【００９０】
［第３の実施形態］
（ソースコード共有システムの構成）
図１２は、本実施形態に係るソースコード共有システム１０の構成の一例を示すブロック図である。全ての開発者が、信頼性の高いハードウェアを所有できるとは限らない。また、編集されたソースコードの確認をできないデバイスもある。そのため、本実施形態では、信頼性の高いハードウェアを持つ開発者に対して、ソースコードの編集内容と、動作確認要求を送信し、動作確認を行うことで、信頼性の高いハードウェアを持たない開発者がソースコードを共有することができるようにする。本実施形態に係るソースコード共有システム１０は、信頼性が確認できていないハードウェアを持つ第１のデバイス２０１、信頼性が高いことが確認できているハードウェアを持つ第２のデバイス２０２、およびサーバ１００により構成されている。
【００９１】
第１のデバイスは、編集権限情報取得部２９０、動作確認要求判定部３１０、動作確認デバイス検索部３２０、動作確認要求送信部３３０、および動作確認受信部３４０から構成されている。動作確認要求判定部３１０は、動作確認を実施するかどうかを判定する。判定方法は、毎回動作確認要求を行うこととしてもよいし、動作確認を行うかどうかを選択する選択手段を提示し、動作確認を行うという選択が行われた場合にのみ、動作確認要求を行うこととしてもよい。
【００９２】
動作確認デバイス検索部３２０は、動作確認要求を行うと判定された場合、信頼性が高いことが確認されているハードウェアを持つ第２のデバイス２０２をサーバ１００に問い合わせる。当該第２のデバイス２０２は、第１のデバイス２０１が編集を加える前のソースコードのソフトウェアバージョンについて、実行結果が正常であるハードウェアバージョンを、当該デバイス検索問い合わせを実施した時刻においても備えているデバイスとする。
【００９３】
条件を満たす第２のデバイス２０２が複数みつかった場合は、以下のような方法でデバイスを選定し、送信する。（１）ランダムで一つのデバイスを選定する。（２）一つのデバイスを選択するための選択手段を提示し、選択されたデバイスを選定する。（３）前述の信頼度の概念が導入されていた場合、信頼度の最も高いハードウェアバージョンを持つデバイスを選定する。なお、第２のデバイスの選定は、サーバ１００が行ってもよいし、第１のデバイス２０１が行ってもよい。
【００９４】
動作確認要求送信部３３０は、サーバ１００から通知された第２のデバイス２０２に対して、編集されたソースコードと動作確認要求を送信する。
【００９５】
第２のデバイス２０２は、第１の実施形態と同様の構成に加えて、動作確認要求受信部３５０、判定結果受信部３６０、および動作確認結果送信部３７０を備える。動作確認要求受信部３５０は、第１のデバイス２０１の動作確認要求送信部３３０から送信された、編集されたソースコードと動作確認要求を受信する。
【００９６】
判定結果受信部３６０は、編集されたソースコードに基づいた実行結果に対する、サーバ１００の判定結果を受信する。動作確認結果送信部３７０は、第１のデバイス２０１に対し、受信した判定結果を送信する。なお、判定結果は、サーバ１００から第１のデバイス２０１に対し直接送信してもよい。
【００９７】
サーバ１００は、第１の実施形態と同様の構成に加えて、動作確認デバイス応答部１８０を備える。動作確認デバイス応答部１８０は、第１のデバイス２０１の動作確認デバイス検索部３２０からの問い合わせに応じて、条件を満たす第２のデバイス２０２を検索し、検索結果を第１のデバイス２０１に対して応答する。
【００９８】
（ソースコード共有システムの動作）
図１３は、動作確認処理を含む、ソースコード共有までの処理を示すフローチャートである。編集権限の取得までは、前述の通り処理を行う（ステップＸ１〜Ｘ４）。編集権限の取得の結果、編集不可であった場合には、第１のデバイスは、第２のデバイスへ動作確認要求を送信するかどうかを判定する。動作確認要求を行うと判定された場合、第１のデバイスは、動作確認処理をする（ステップＸ５）。動作確認処理の詳細は後述する。動作確認が成功した場合、第１のデバイスは、他のデバイスにソースコードの送信をし（ステップＸ６）、終了する。また、動作確認要求を行わないと判定された場合、および、動作確認が成功しなかった場合、そのまま終了する。
【００９９】
図１４は、動作確認を行う場合の検索要求から動作確認の受信までの処理を示すフローチャートである。まず、第１のデバイスは、信頼性が確認できているハードウェアを持つ第２のデバイスの検索要求をサーバに送信する（ステップＹ１）。次に、サーバは、第２のデバイスの検索要求を受信し（ステップＹ２）、条件を満たす第２のデバイスを検索し、検索結果を第１のデバイスに対して応答する（ステップＹ３）。
【０１００】
そして、第１のデバイスは、サーバの応答を受信し（ステップＹ４）、条件を満たす第２のデバイスが存在しない場合、そこで処理を終了する。また、条件を満たす第２のデバイスが存在する場合、第１のデバイスは、第２のデバイスに対して、編集されたソースコード（ソフトウェアバージョンS1’）と動作確認要求を送信する（ステップＹ５）。
【０１０１】
第２のデバイスは、編集されたソースコードと動作確認要求を受信し（ステップＹ６）、受信したソースコードS1’を実行する（ステップＹ７）。そして、実行結果情報をサーバに登録する（ステップＹ８）。サーバは登録された実行結果情報に基づいてソフトウェアの信頼性を判定する（ステップＹ９）。第２のデバイスは、サーバの判定結果を受信し（ステップＹ１０）、第１のデバイスに対し、動作確認結果を送信する（ステップＹ１１）。動作確認結果は、ソフトウェアの信頼性（sw(S1’)（=true/falseのブーリアン値））である。
【０１０２】
第１のデバイスは、動作確認結果を受信する（ステップＹ１２）。動作確認が成功であった場合は、前述の方法と同様、他のデバイスに対してソースコードの送信を行う。動作確認が失敗であった場合は、そのまま処理を終了する。
【０１０３】
これにより、ハードウェアの動作確認がとれていない第１のデバイス上で編集したソースコードを共有する際、ハードウェアの動作確認がとれている第２のデバイスに動作確認を要求し、当該第２のデバイスで動作確認がとれた場合にソースコードの共有を許可することで、不安定なソースコードが紛れ込む確率を下げることができる。
【０１０４】
［第４の実施形態］
（ソースコード共有システムの構成）
図１５は、本実施形態に係るソースコード共有システム１０の構成の一例を示すブロック図である。ハードウェアおよびソフトウェアのいずれも信頼性が高いことが確認されていない場合は、いずれかを修正したとしても、どちらに問題が生じているか判断できない場合がある。本実施形態では、編集不可であって、ハードウェアとソフトウェアのいずれに問題が生じているか判断できない場合に、ハードウェアの信頼性が高いことを確認して、ハードウェアに問題が生じている可能性が低いことを判断できるようにするため、テストコードの提供を要求して検証する機能を備える。ソースコード共有システム１０の構成は、第２の実施形態と同様である。
【０１０５】
デバイス２００は、第２の実施形態の構成に加えて、テストコード要求部３８０を備える。テストコード要求部３８０は、サーバ１００のテストコード送信部１９０にテストコードを要求する。
【０１０６】
サーバ１００は、第２の実施形態の構成に加えて、テストコード送信部１９０を備える。テストコード送信部１９０は、デバイス２００のテストコード要求部３８０のテストコード要求を受信し、サーバ１００の保有する信頼性が高いことが確認されたソースコードから適切なものをテストコードとして送信する。ソースコードからテストコードを選択する基準は様々考えられるが、例えば、次のようにする。すなわち、編集を加える前のソースコードのソフトウェアバージョンの信頼性が高いと登録された際の実行結果が示すハードウェアバージョンについて、同一のハードウェアバージョンであるデバイスの信頼性が高いことを確認したソフトウェアの中で最も古いソフトウェアバージョンのソースコードをテストコードとして送信する。
【０１０７】
また、編集を加える前のソースコードのソフトウェアバージョンの信頼性が高いと登録された際の実行結果が示すハードウェアバージョンについて、同一のハードウェアバージョンであるデバイスの信頼性が高いことを確認したソフトウェアの中で最も新しいソフトウェアバージョンのソースコードをテストコードとして提供してもよい。
【０１０８】
テストコードとして、最も古いコードを提供する場合は、最も古いコードが当該ハードウェアを動作させる必要最低限の機能を持ったコードであり、挙動が単純でテストコードに適するという考えに基づく。また、最も新しいコードを提供する場合は、最も新しいコードが当該ハードウェアを動作させるために必要なエラー処理が十分に記述され、エラーが発生しにくくテストコードに適するという考えに基づく。
【０１０９】
（ソースコード共有システムの動作）
図１６は、テストコード要求処理を含む、ソースコード共有までの処理を示すフローチャートである。編集権限の取得までは、前述の通り処理を行う（ステップＺ１〜Ｚ４）。編集権限の取得の結果、編集不可であった場合には、デバイスは、サーバにテストコードを要求する（ステップＺ５）。サーバは、サーバの保有するソースコードから適切なものをテストコードとして送信する（ステップＺ６）。
【０１１０】
次に、デバイスは、テストコードを受信する（ステップＺ７）。そして、受信したソースコードを含むアプリケーションを実行し、ハードウェアの信頼性の確認をする（ステップＺ８）。なお、図１６のフローチャートは、信頼性の確認の処理の詳細は省略した。ハードウェアの信頼性の確認の結果、信頼性が高いことが確認された場合は、編集されたソースコード（ソフトウェア）に問題がある可能性が高いことが分かる。このときは、再度、ソースコードの編集（修正）をして、編集権限の取得要求をすればよい。また、信頼性が高いことが確認されなかった場合は、ハードウェアに問題がある可能性が高いことが分かるため、編集されたソースコードを送信しないで終了する。
【０１１１】
図１７はソフトウェアおよびハードウェアのバージョン進化の例を示す樹形図である。図１７において、最も古いソフトウェアバージョンのソースコードをテストコードとして選択する場合を例に説明する。
a) 例えばソフトウェアバージョンS004、ハードウェアバージョンH001で信頼性が高い（result(S004,H001)=true）と確認されていた場合に、信頼性が高いと確認できていないハードウェアバージョンH001’を持つ新たなデバイス上でS004から派生されたソフトウェアS004’を共有しようとした場合を考える。この場合、S004の信頼性が高いと確認できたハードウェア（＝H001）によって、信頼性が高いことが確認されたソフトウェアの中で最も古いソフトウェア（＝S001）をテストコードとして提供する。そして、テストコードであるソフトウェアバージョンS001、ハードウェアバージョンH001’で信頼性が高い（result(S001,H001’)=true）と確認された場合には、ハードウェアバージョンH001’の信頼性が高いと判定される。
b) また、例えばソフトウェアバージョンS102、ハードウェアバージョンH002で信頼性が高い（result(S102,H002)=true）と確認されていた場合に、信頼性が確認できていないハードウェアバージョンH002’を持つ新たなデバイス上でS102から派生されたソフトウェアS102’を共有しようとした場合を考える。この場合、S102の信頼性が高いと確認できたハードウェア（＝H002）によって、信頼性が高いことが確認されたソフトウェアの中で最も古いソフトウェア（＝S101）をテストコードとして提供する。その後の処理は、上述a)と同様である
【０１１２】
また、図１７において、最も新しいソフトウェアバージョンのソースコードをテストコードとして選択する場合は、a)の場合にはS004をテストコードとして提供し、b)の場合には、S102をテストコードとして提供する。なお、図１７において、H001とH001’およびH002とH002’はそれぞれ同じデバイスＩＤを有するとし、H001とH002は異なるデバイスＩＤを有するとする。
【０１１３】
これにより、編集不可であり、ハードウェアまたはソフトウェアのいずれも信頼性が高いことが確認されていない場合でも、テストコードを用いてハードウェアの信頼性が高いことを確認でき、ハードウェアに問題が生じている可能性が低いことを判断できる。
【符号の説明】
【０１１４】
１０  ソースコード共有システム
３０  信頼性判定装置
５０  信頼性判定システム
１００  サーバ
１１０  実行結果管理部
１２０  判定部
１３０  アプリケーション出力結果受信部
１４０  編集権限管理部
１５０  編集権限情報送信部
１６０  ユーザ情報管理部
１７０  ユーザ認証部
１８０  動作確認デバイス応答部
１９０  テストコード送信部
２００  デバイス
２０１  第１のデバイス
２０２  第２のデバイス
２１０  ハードウェアバージョン管理部
２２０  ソースコード受信部
２３０  アプリケーション記憶部
２４０  アプリケーション実行部
２５０  ハードウェア制御部
２６０  実行結果登録部
２７０  アプリケーション出力結果送信部
２８０  編集部
２９０  編集権限情報取得部
３００  ソースコード送信部
３１０  動作確認要求判定部
３２０  動作確認デバイス検索部
３３０  動作確認要求送信部
３４０  動作確認受信部
３５０  動作確認要求受信部
３６０  判定結果受信部
３７０  動作確認結果送信部
３８０  テストコード要求部
４００  ソースコード編集部
【図１】
2018169969.tif 000003
【図２】
2018169969.tif 000004
【図３】
2018169969.tif 000005
【図４】
2018169969.tif 000006
【図５】
2018169969.tif 000007
【図６】
2018169969.tif 000008
【図７】
2018169969.tif 000009
【図８】
2018169969.tif 000010
【図９】
2018169969.tif 000011
【図１０】
2018169969.tif 000012
【図１１】
2018169969.tif 000013
【図１２】
2018169969.tif 000014
【図１３】
2018169969.tif 000015
【図１４】
2018169969.tif 000016
【図１５】
2018169969.tif 000017
【図１６】
2018169969.tif 000018
【図１７】
2018169969.tif 000019