IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ コネクトフリー株式会社の特許一覧

特開2023-4017ソフトウェア利用システムおよびソフトウェア利用方法
<>
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図1
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図2
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図3
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図4
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図5
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図6
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図7
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図8
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図9
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図10
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図11
  • 特開-ソフトウェア利用システムおよびソフトウェア利用方法 図12
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023004017
(43)【公開日】2023-01-17
(54)【発明の名称】ソフトウェア利用システムおよびソフトウェア利用方法
(51)【国際特許分類】
   G06Q 10/06 20230101AFI20230110BHJP
【FI】
G06Q10/06
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2021105471
(22)【出願日】2021-06-25
(71)【出願人】
【識別番号】514318600
【氏名又は名称】コネクトフリー株式会社
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】帝都 久利寿
【テーマコード(参考)】
5L049
【Fターム(参考)】
5L049AA06
(57)【要約】
【課題】ソフトウェアの利用に係る管理をより容易に実現できるソリューションを提供する。
【解決手段】ソフトウェア利用システムは、1または複数のライブラリを格納する格納部と、ソフトウェア開発装置からのリクエストに応答して、リクエストされたライブラリに利用管理情報を付加したパッケージを生成するとともに、生成したパッケージをソフトウェア開発装置の公開鍵で暗号化した上でソフトウェア開発装置へ提供するパッケージ提供手段とを含む。利用管理情報は、ソフトウェア開発装置を特定するための識別情報を含む。ソフトウェア開発装置は、暗号化されたパッケージを秘密鍵で復号化した上で、当該パッケージを利用してアプリケーションを開発するための環境を提供する。
【選択図】図1
【特許請求の範囲】
【請求項1】
1または複数のライブラリを格納する格納部と、
ソフトウェア開発装置からのリクエストに応答して、リクエストされたライブラリに利用管理情報を付加したパッケージを生成するとともに、生成したパッケージを前記ソフトウェア開発装置の公開鍵で暗号化した上で前記ソフトウェア開発装置へ提供するパッケージ提供手段とを備え、前記利用管理情報は、前記ソフトウェア開発装置を特定するための識別情報を含み、
前記ソフトウェア開発装置は、前記暗号化されたパッケージを秘密鍵で復号化した上で、当該パッケージを利用してアプリケーションを開発するための環境を提供する、ソフトウェア利用システム。
【請求項2】
前記利用管理情報は、ライブラリの利用条件および有効期限の情報を含む、請求項1に記載のソフトウェア利用システム。
【請求項3】
前記ソフトウェア開発装置は、前記パッケージに含まれるライブラリを利用した実行コードに、当該パッケージに含まれる利用管理情報の少なくとも一部を含める、請求項1に記載のソフトウェア利用システム。
【請求項4】
前記ソフトウェア開発装置は、当該ソフトウェア開発装置を特定するための識別情報を含むリクエストを送信する、請求項1に記載のソフトウェア利用システム。
【請求項5】
前記ライブラリの所有者に対して当該ライブラリの利用に応じた料金の支払いを管理する管理手段をさらに備える、請求項1に記載のソフトウェア利用システム。
【請求項6】
1または複数のライブラリを格納するステップと、
ソフトウェア開発装置からのリクエストに応答して、リクエストされたライブラリに利用管理情報を付加したパッケージを生成するとともに、生成したパッケージを前記ソフトウェア開発装置の公開鍵で暗号化した上で前記ソフトウェア開発装置へ提供するステップとを備え、前記利用管理情報は、前記ソフトウェア開発装置を特定するための識別情報を含み、
前記ソフトウェア開発装置において、前記暗号化されたパッケージを秘密鍵で復号化した上で、当該パッケージを利用してアプリケーションを開発するための環境を提供するステップを備える、ソフトウェア利用方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ソフトウェア利用システムおよびソフトウェア利用方法に関する。
【背景技術】
【0002】
近年の情報通信技術(Information and Communication Technology:ICT)の進歩に伴って、様々なモノ(things)がインターネットなどのネットワークに接続されるようになっている。そのため、ソフトウェアの開発がますます重要になってきている。
【0003】
既存のソフトウェア資源を再利用することで、ソフトウェアの開発速度を高めることが一般的である。例えば、特開2004-206586号公報(特許文献1)は、プロジェクトを開発する際に利用されるソフトウェア部品の流通を効果的に促すソフトウェア部品流通支援方法を開示する。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2004-206586号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
特開2004-206586号公報(特許文献1)は、単一のシステム内においてソフトウェア部品が利用されることを前提としているが、現実には、ソフトウェア部品の提供者が管理できない範囲でソフトウェア部品が利用されることになる。
【0006】
本開示の典型的な目的は、ソフトウェアの利用に係る管理をより容易に実現できるソリューションを提供することである。
【課題を解決するための手段】
【0007】
本開示のある形態に従うソフトウェア利用システムは、1または複数のライブラリを格納する格納部と、ソフトウェア開発装置からのリクエストに応答して、リクエストされたライブラリに利用管理情報を付加したパッケージを生成するとともに、生成したパッケージをソフトウェア開発装置の公開鍵で暗号化した上でソフトウェア開発装置へ提供するパッケージ提供手段とを含む。利用管理情報は、ソフトウェア開発装置を特定するための識別情報を含む。ソフトウェア開発装置は、暗号化されたパッケージを秘密鍵で復号化した上で、当該パッケージを利用してアプリケーションを開発するための環境を提供する。
【0008】
利用管理情報は、ライブラリの利用条件および有効期限の情報を含んでいてもよい。
【0009】
ソフトウェア開発装置は、パッケージに含まれるライブラリを利用した実行コードに、当該パッケージに含まれる利用管理情報の少なくとも一部を含めるようにしてもよい。
【0010】
ソフトウェア開発装置は、当該ソフトウェア開発装置を特定するための識別情報を含むリクエストを送信するようにしてもよい。
【0011】
ソフトウェア利用システムは、ライブラリの所有者に対して当該ライブラリの利用に応じた料金の支払いを管理する管理手段をさらに含んでいてもよい。
【0012】
本開示の別の形態に従うソフトウェア利用方法は、1または複数のライブラリを格納するステップと、ソフトウェア開発装置からのリクエストに応答して、リクエストされたライブラリに利用管理情報を付加したパッケージを生成するとともに、生成したパッケージをソフトウェア開発装置の公開鍵で暗号化した上でソフトウェア開発装置へ提供するステップとを含む。利用管理情報は、ソフトウェア開発装置を特定するための識別情報を含む。ソフトウェア利用方法は、ソフトウェア開発装置において、暗号化されたパッケージを秘密鍵で復号化した上で、当該パッケージを利用してアプリケーションを開発するための環境を提供するステップを含む。
【発明の効果】
【0013】
本開示によれば、ソフトウェアの利用に係る管理をより容易に実現できる。
【図面の簡単な説明】
【0014】
図1】本実施の形態に従うソフトウェア利用システムにおける処理手順を概略する模式図である。
図2】本実施の形態に従うソフトウェア利用システムにおける処理手順の一例を示すシーケンス図である。
図3】本実施の形態に従うソフトウェア利用システムを構成する管理サーバのハードウェア構成例を示す模式図である。
図4】本実施の形態に従うソフトウェア利用システムを構成するソフトウェア開発装置のハードウェア構成例を示す模式図である。
図5】本実施の形態に従うソフトウェア利用システムの管理サーバが有しているライブラリ利用管理情報の一例を示す模式図である。
図6】本実施の形態に従うソフトウェア利用システムの管理サーバが生成するパッケージに含まれる利用管理情報の一例を示す模式図である。
図7】本実施の形態に従うソフトウェア利用システムのソフトウェア開発装置の機能構成例を示す模式図である。
図8】本実施の形態に従うソフトウェア利用システムにおいて生成される実行コードの一例を示す模式図である。
図9】本実施の形態に従うソフトウェア利用システムにおいて生成される実行コードの別の一例を示す模式図である。
図10】本実施の形態に従うソフトウェア利用システムにおいて生成される実行コードのさらに別の一例を示す模式図である。
図11】本実施の形態に従うソフトウェア利用システムにおいて生成される実行コードのさらに別の一例を示す模式図である。
図12】本実施の形態に従うソフトウェア利用システムにおいて生成される実行コードのさらに別の一例を示す模式図である。
【発明を実施するための形態】
【0015】
本開示に係る実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【0016】
<A.概要>
まず、本実施の形態に従うソフトウェア利用システム1におけるソフトウェアの作成、流通および利用に係る処理手順の一例を説明する。
【0017】
図1は、本実施の形態に従うソフトウェア利用システム1における処理手順を概略する模式図である。図1を参照して、ソフトウェア利用システム1は、主たる構成要素として、管理サーバ100と、ソフトウェア開発装置200とを含む。また、ソフトウェア利用システム1には、ライブラリを開発する個人または法人(以下、「ライブラリ開発者10」とも称す。)と、ライブラリを用いてアプリケーションを開発する個人または法人(以下、「アプリケーション開発者20」とも称す。)とが関与し得る。
【0018】
本明細書において、「ライブラリ」は、アプリケーションの開発に利用できるソフトウェア資産を包含する。例えば、ライブラリは、クラス、ファンクション、ファンクションブロック、プロシージャ、パッケージなどの任意の形態で流通し得る。また、ライブラリの流通形態としては、ソースコード、中間表現、オブジェクト形式、実行形式など、どのような形式であってもよい。
【0019】
本明細書において、「アプリケーション」は、任意のプログラムを包含する。すなわち、アプリケーションは、特定の処理を実行するためのプログラムに限らず、OS(Operating System)の少なくとも一部を構成するプログラムを含み得る。また、アプリケーションの形式は、ソースコード、中間表現、オブジェクト形式、実行形式などのいずれであってもよい。
【0020】
図2は、本実施の形態に従うソフトウェア利用システム1における処理手順の一例を示すシーケンス図である。図2に示す各ステップは、図1に対応付けて記載している。
【0021】
図1および図2を参照して、まず、ライブラリ開発者10が任意のライブラリ50Sを開発する(ステップS1)。ライブラリ開発者10は、開発したライブラリ50Sの登録を管理サーバ100にリクエストする(ステップS2)。登録のリクエストにおいては、ライブラリ50Sはソースコードの形式で管理サーバ100へ送信されるとともに、所有者ID52が付与される。所有者ID52は、ライブラリを開発したライブラリ開発者10を特定するための識別情報であり、開発したライブラリが利用された場合の利用料などの支払い先を特定するためなどにも使用される。
【0022】
管理サーバ100は、ライブラリ開発者10からのライブラリ50Sを検証するとともに、検証結果に問題なければ、ライブラリ50を所有者ID52と対応付けて登録する(ステップS3)。このように、管理サーバ100は、所有者ID52が対応付けられたライブラリ50をデータベース56に順次格納する。すなわち、管理サーバ100は、1または複数のライブラリ50を格納する格納部としてデータベース56を有している。なお、ライブラリ50は、ソースコードの形式のライブラリ50Sをそのまま登録されてもよいし、ライブラリ50Sから生成される中間表現やオブジェクト形式で登録されてもよい。
【0023】
管理サーバ100は、ライブラリ利用管理情報80を有している。データベース56へのライブラリ50の登録に応じて、管理サーバ100は、ライブラリ利用管理情報80に対応するエントリを追加する。ライブラリ利用管理情報80は、データベース56に登録されたライブラリ50の利用を管理するための情報を含む。
【0024】
ライブラリ開発者10がライブラリ50を開発および登録するたびに、以上のような処理が実行される。次に、1または複数のライブラリ50を利用してアプリケーションを開発する場合について説明する。
【0025】
アプリケーション開発者20は、アプリケーションの開発に必要な1または複数のライブラリを選択し、必要なライブラリ50を管理サーバ100へリクエストする(ステップS4)。ソフトウェア開発装置200から管理サーバ100へ送信されるライブラリリクエスト60は、マシンID62を含む。マシンID62は、ライブラリリクエスト60の送信元のソフトウェア開発装置200を特定するための識別情報である。このように、ソフトウェア開発装置200は、ソフトウェア開発装置200を特定するための識別情報(マシンID62)を含むリクエスト(ライブラリリクエスト60)を送信する。
【0026】
管理サーバ100は、ライブラリリクエスト60に応答して、リクエストされたライブラリ50のパッケージ70を生成する。より具体的には、管理サーバ100は、対象のライブラリ50に対して利用管理情報54を付加する(ステップS5)。利用管理情報54としては、DRM(Digital Rights Management)に従うデータ構造および管理技術を採用してもよい。利用管理情報54は、マシンID62を含む。例えば、利用管理情報54において、対応するライブラリの利用範囲がマシンID62を用いて規定される。
【0027】
続いて、管理サーバ100は、利用管理情報54が付加されたライブラリ50からなるパッケージ70を暗号化する(ステップS6)。ソフトウェア開発装置200は、秘密鍵250と公開鍵252とのキーペアを有している。パッケージ70の暗号化には、ライブラリリクエスト60を送信したソフトウェア開発装置200の公開鍵252が利用される。
【0028】
このように、管理サーバ100は、ソフトウェア開発装置200からのリクエスト(ライブラリリクエスト60)に応答して、リクエストされたライブラリ50に利用管理情報54を付加したパッケージ70を生成するとともに、生成したパッケージ70をソフトウェア開発装置200の公開鍵252で暗号化した上でソフトウェア開発装置200へ提供する。このとき、利用管理情報54は、ソフトウェア開発装置200を特定するための識別情報(マシンID62)を含む。
【0029】
また、管理サーバ100は、ライブラリ50の利用に係る課金処理を実行する(ステップS7)。より具体的には、管理サーバ100は、ライブラリ利用管理情報80の対応するエントリに課金処理に必要な情報を追加あるいは更新する。
【0030】
最終的に、管理サーバ100からソフトウェア開発装置200に対して、暗号化されたパッケージ70がダウンロードされる(ステップS8)。
【0031】
ソフトウェア開発装置200は、秘密鍵250を用いて暗号化されたパッケージ70を復号化する(ステップS9)。これによって、ソフトウェア開発装置200においてパッケージ70(ライブラリ50)が利用可能になる。
【0032】
アプリケーション開発者20は、パッケージ70(ライブラリ50)を利用してアプリケーションを開発する(ステップS10)。ソフトウェア開発装置200は、開発されたアプリケーションから実行コード90を生成する(ステップS11)。生成された実行コード90は、任意のデバイス300へ提供される。
【0033】
以上のような処理手順によって、任意のデバイス300で実行されるアプリケーションが開発される。すなわち、ソフトウェア開発装置200は、暗号化されたパッケージ70を秘密鍵250で復号化した上で、パッケージ70を利用してアプリケーションを開発するための環境を提供する。
【0034】
また、管理サーバ100は、ライブラリ50の利用に係る利用料をライブラリ開発者10に支払う(ステップS12)。利用料の支払いについては、任意の方法を採用できる。このように、管理サーバ100は、ライブラリ50の所有者(ライブラリ開発者10)に対してライブラリ50の利用に応じた料金の支払いを管理する。
【0035】
ソフトウェア利用システム1において、ダウンロードされたライブラリ50には、ダウンロード先のソフトウェア開発装置200のマシンID62を含む利用管理情報54が付加されるので、ダウンロード先のソフトウェア開発装置200以外において、ライブラリ50が不正に利用される可能性を低減できる。
【0036】
また、パッケージ70は、ダウンロード先のソフトウェア開発装置200の公開鍵252を用いて暗号化されるので、ダウンロード先のソフトウェア開発装置200以外において、ライブラリ50が不正に利用される可能性を低減できる。
【0037】
<B.ハードウェア構成例>
次に、本実施の形態に従うソフトウェア利用システム1を構成する装置のハードウェア構成例について説明する。
【0038】
(b1:管理サーバ100)
管理サーバ100は、典型的には汎用コンピュータで実現される。
【0039】
図3は、本実施の形態に従うソフトウェア利用システム1を構成する管理サーバ100のハードウェア構成例を示す模式図である。図3を参照して、管理サーバ100は、主たるコンポーネントとして、1または複数のプロセッサ102と、メインメモリ104と、入力部106と、ディスプレイ108と、ストレージ110と、通信インターフェイス120とを含む。これらのコンポーネントは、内部バス122を介して接続されている。
【0040】
プロセッサ102は、例えば、CPU(Central Processing Unit)やGPU(Graphics Processing Unit)などで構成される。複数のプロセッサ102が配置されてもよいし、複数のコアを有するプロセッサ102を採用してもよい。
【0041】
メインメモリ104は、例えば、DRAM(Dynamic Random Access Memory)やSRAM(Static Random Access Memory)などの揮発性記憶装置で構成される。
【0042】
ストレージ110は、例えば、ハードディスクやSSD(Solid State Drive)などの不揮発性記憶装置で構成される。
【0043】
ストレージ110に格納されたプログラムのうち、指定されたコードがメインメモリ104上に展開され、プロセッサ102は、メインメモリ104上に展開されたプログラムコードに含まれるコンピュータ可読命令(computer-readable instructions)を順次実行することで、後述するような各種機能を実現する。
【0044】
入力部106は、任意の入力操作を受け付ける。ディスプレイ108は、プロセッサ102での処理結果などを表示する。通信インターフェイス120は、任意の外部装置との間でデータをやり取りする。
【0045】
ストレージ110は、登録がリクエストされたライブラリ50の検証および登録の処理を実現するための検証登録エンジン112と、ソフトウェア開発装置200でのライブラリ50の利用に係る処理を実現するための利用管理エンジン114とを格納する。また、ストレージ110は、ライブラリ50が登録されたデータベース56を実現する。
【0046】
(b2:ソフトウェア開発装置200)
ソフトウェア開発装置200についても、典型的には汎用コンピュータで実現される。
【0047】
図4は、本実施の形態に従うソフトウェア利用システム1を構成するソフトウェア開発装置200のハードウェア構成例を示す模式図である。図4を参照して、ソフトウェア開発装置200は、主たるコンポーネントとして、プロセッサ202と、メインメモリ204と、入力部206と、ディスプレイ208と、ストレージ210と、通信インターフェイス220とを含む。これらのコンポーネントは、内部バス222を介して接続されている。
【0048】
プロセッサ202は、例えば、CPUやGPUなどで構成される。メインメモリ204は、DRAMやSRAMなどの揮発性記憶装置で構成される。ストレージ210は、例えば、ハードディスクやSSDなどの不揮発性記憶装置で構成され、プロセッサ202で実行される各種プログラムや各種データを保持する。
【0049】
ストレージ210に格納されたプログラムのうち、指定されたコードがメインメモリ204上に展開され、プロセッサ202は、メインメモリ204上に展開されたプログラムコードに含まれるコンピュータ可読命令を順次実行することで、後述するような各種機能を実現する。
【0050】
入力部206は、任意の入力操作を受け付ける。ディスプレイ208は、プロセッサ202での処理結果などを表示する。通信インターフェイス220は、任意の外部装置との間でデータをやり取りする。
【0051】
ストレージ210には、統合開発環境を実現するためのソフトウェア開発プログラム212と、ユーザが任意に作成するアプリケーション214とが格納される。さらに、ストレージ210には、管理サーバ100からダウンロードしたパッケージ70と、アプリケーション214から生成された実行コード90とが格納されてもよい。
【0052】
ソフトウェア開発装置200は、コンピュータ可読命令を含むソフトウェア開発プログラム212を格納する非一過性(non-transitory)のメディアから、当該格納しているプログラムなどを読み出すためのコンポーネントをさらに有していてもよい。メディアは、例えば、DVD(Digital Versatile Disc)などの光学メディア、USBメモリなどの半導体メディアなどであってもよい。なお、ソフトウェア開発プログラム212は、メディアを介してソフトウェア開発装置200にインストールされるだけではなく、ネットワーク上の配信サーバから提供されるようにしてもよい。
【0053】
(b3:その他)
管理サーバ100およびソフトウェア開発装置200の全部または一部は、コンピュータ可読命令に相当する回路が組み込まれたASIC(Application Specific Integrated Circuit)などのハードワイヤード回路を用いて実現してもよい。さらにあるいは、FPGA(Field-Programmable Gate Array)上にコンピュータ可読命令に相当する回路を用いて実現してもよい。また、プロセッサおよびメインメモリ、ASIC、FPGAなどを適宜組み合わせて実現してもよい。
【0054】
なお、ライブラリ開発者10が使用するソフトウェア開発装置についても汎用コンピュータで実現できる。
【0055】
<C.管理サーバ100の機能構成および処理>
次に、管理サーバ100の機能構成および処理について説明する。
【0056】
(c1:ライブラリ利用管理情報)
図5は、本実施の形態に従うソフトウェア利用システム1の管理サーバ100が有しているライブラリ利用管理情報80の一例を示す模式図である。図5を参照して、ライブラリ利用管理情報80は、登録管理情報82と、利用管理情報84とを含む。図5には、一例として、キーバリューストア形式でデータを管理する例を示すが、どのようなデータ管理方法を採用してもよい。
【0057】
登録管理情報82は、データベース56に登録されるライブラリ50を管理するための情報を含む。利用管理情報84は、ライブラリ50の利用を管理するための情報を含む。
【0058】
より具体的には、登録管理情報82は、エントリ毎に、ライブラリID821と、ライブラリ名822と、所有者ID823と、検証日時824と、有効期限825と、付加情報826とを含む。
【0059】
ライブラリID821には、対象のライブラリ50を特定するための識別情報が格納される。ライブラリ名822には、対象のライブラリ50の名称が格納される。所有者ID823には、対象のライブラリ50の所有者を特定するための識別情報が格納される。検証日時824には、対象のライブラリ50を検証した日時が格納される。有効期限825には、対象のライブラリ50の利用可能な期限が格納される。付加情報826には、対象のライブラリ50に関連する任意の情報が格納される。
【0060】
管理サーバ100は、新たなライブラリ50の登録がリクエストされて、検証結果に問題なければ、ライブラリ50をデータベース56に格納するとともに、登録管理情報82に新たなエントリを追加する。
【0061】
利用管理情報84は、エントリ毎に、ライブラリID841と、マシンID842と、ライセンス843と、有効期限844とを含む。
【0062】
ライブラリID841には、対象のライブラリ50を特定するための識別情報が格納される。マシンID842には、対象のライブラリ50を利用するソフトウェア開発装置200を特定するための識別情報が格納される。あるいは、マシンID842には、対象のライブラリ50を利用するソフトウェア開発プログラム212を特定するための識別情報が格納されてもよい。ライセンス843には、対象のライブラリ50の利用条件として、ライセンスの種別が格納される。ライセンスの種別としては、例えば、ソフトウェア開発装置200におけるアプリケーション214の開発、および、アプリケーション214から生成された実行コード90の実行が制限なく行えるライセンス、ソフトウェア開発装置200におけるアプリケーション214の開発のみ制限なく行えるライセンス、アプリケーション214から生成された実行コード90を行うためのライセンス、などが想定される。有効期限844には、対応するライセンスの有効期限が格納される。
【0063】
管理サーバ100は、ライブラリ50の利用がリクエストされると、所定の処理を経て、利用管理情報84に新たなエントリを追加する。
【0064】
管理サーバ100は、アプリケーション開発者20などとの契約によって定められるライセンスの種類および有効期限を管理するようにしてもよい。あるいは、管理サーバ100とは別の主体が、ライセンスの管理機能を有していてもよい。
【0065】
(c2:ライブラリ50の検証)
管理サーバ100によるライブラリ50の検証は、ライブラリ50に含まれる脆弱性の確認やライブラリ50に含まれるコードの冗長性の確認などを含む。ライブラリ50の検証については、任意の処理を採用することができる。
【0066】
(c3:利用管理情報54)
図6は、本実施の形態に従うソフトウェア利用システム1の管理サーバ100が生成するパッケージ70に含まれる利用管理情報54の一例を示す模式図である。図6を参照して、利用管理情報54は、情報として、ライブラリID541と、ライブラリハッシュ値542と、マシンID543と、公開鍵544と、ライセンス545と、有効期限546と、管理サーバアドレス547とを含む。
【0067】
ライブラリID541には、対象のライブラリ50を特定するための識別情報が格納される。ライブラリハッシュ値542には、対象のライブラリ50のデータから算出されたハッシュ値が格納される。マシンID543には、ライセンス対象のソフトウェア開発装置200を特定するための識別情報が格納される。公開鍵544には、ライセンス対象のソフトウェア開発装置200の公開鍵252の値が格納される。ライセンス545には、対象のライブラリ50の利用に係るライセンスの内容あるいは種別が格納される。有効期限546には、対象のライセンスの有効期限が格納される。管理サーバアドレス547には、管理サーバ100のIPアドレスなどが格納される。
【0068】
なお、利用管理情報54に含まれる情報は、図6に示されるものに限られず、必要に応じて任意の情報を含めることができる。
【0069】
図6に示すような利用管理情報54に従って、対象のライブラリ50およびライブラリ50を含むパッケージ70の利用が管理される。
【0070】
<D.ソフトウェア開発装置200の機能構成および処理>
次に、ソフトウェア開発装置200の機能構成および処理について説明する。
【0071】
図7は、本実施の形態に従うソフトウェア利用システム1のソフトウェア開発装置200の機能構成例を示す模式図である。
【0072】
図7に示す各モジュールは、ソフトウェア開発装置200のプロセッサ202がソフトウェア開発プログラム212を実行することで実現されてもよい。
【0073】
ソフトウェア開発装置200は、機能構成として、パッケージ格納部230と、復号モジュール232と、ライセンス管理モジュール234と、エディタ236と、実行コード生成モジュール238とを含む。
【0074】
パッケージ格納部230は、ソフトウェア開発装置200がダウンロードした1または複数のパッケージ70を格納する。復号モジュール232は、秘密鍵250を用いて、暗号化されたパッケージ70を復号化する。ライセンス管理モジュール234は、ライブラリ利用管理情報80を参照して、管理サーバ100との間でライセンスの有無および内容などを確認する。エディタ236は、アプリケーションを開発するための環境を提供する。ユーザは、エディタ236を操作して、アプリケーションのソースコード240を作成する。
【0075】
実行コード生成モジュール238は、ソースコード240からアプリケーションに相当する実行コード90を生成する。実行コード生成モジュール238は、パーサ、コンパイラ、リンカなどを含む。実行コード生成モジュール238は、パッケージ70に含まれるライブラリ50などを参照して、ソースコード240から適切な実行コード90を生成する。実行コード生成モジュール238は、実行コード90を生成するにあたって、ライセンス管理モジュール234からライセンスの情報を取得し、取得したライセンスの情報に応じた実行コード90を生成する。
【0076】
<E.実行コード>
次に、ソフトウェア開発装置200が生成する実行コード90の例について説明する。
【0077】
図8は、本実施の形態に従うソフトウェア利用システム1において生成される実行コード90の一例を示す模式図である。
【0078】
図8(A)には、アプリケーションのソースコード240の一部にライブラリ50がソースコードの形で組み込まれた場合を示す。ライブラリ50を含むソースコード240がコンパイル等されることで実行コード90が生成される。
【0079】
図8(B)には、アプリケーションのソースコード240がオブジェクト形式のライブラリ50を参照する場合を示す。この場合には、アプリケーションのソースコード240から実行コード90を生成する際に、オブジェクト形式のライブラリ50が組み込まれる。なお、実行コード90にオブジェクト形式のライブラリ50を直接組み込む形に代えて、実行コード90にオブジェクト形式のライブラリ50を間接的に参照するようにしてもよい。
【0080】
このように、ライブラリ50の配布形式に応じた方法で実行コード90を生成することができる。
【0081】
図8に示す例では、ソフトウェア開発装置200がライブラリ50を利用して生成したアプリケーション(実行コード90)の実行が制限なく行えるライセンスを想定したものである。但し、アプリケーション(実行コード90)のインストールや実行時にライブラリ50のライセンスを確認するようにしてもよい。
【0082】
図9は、本実施の形態に従うソフトウェア利用システム1において生成される実行コード90の別の一例を示す模式図である。図9には、デバイス300で実行コード90が実行される際にライセンスを確認する例を示す。
【0083】
図9を参照して、実行コード90は、オブジェクト形式のライブラリ50と、利用管理情報54Aと、ライセンス管理モジュール92とを含む。ソフトウェア開発装置200は、パッケージ70に含まれる利用管理情報54の全部または一部を含む利用管理情報54Aを生成して、実行コード90に組み込む。また、ソフトウェア開発装置200は、ライセンスを確認する処理を実現するためのライセンス管理モジュール92を実行コード90に組み込む。
【0084】
このように、ソフトウェア開発装置200は、パッケージ70に含まれるライブラリ50を利用した実行コード90に、パッケージ70に含まれる利用管理情報54の少なくとも一部を含めるようにしてもよい。
【0085】
デバイス300において実行コード90が実行されると、ライセンス管理モジュール92は、利用管理情報54Aを参照して必要なライセンスを確認する。例えば、ライセンス管理モジュール92は、利用管理情報54Aに含まれるライブラリIDおよびマシンIDを管理サーバ100へ送信することで、ライブラリ50の利用に必要なライセンスが存在していることを確認する。必要なライセンスが存在している場合に限って、実行コード90をアクティベートするようにしてもよい。あるいは、ライセンス管理モジュール92は、ライセンスを示すコードが入力された場合に限って、実行コード90をアクティベートするようにしてもよい。
【0086】
このように、図9に示す例では、ソフトウェア開発装置200がライセンス管理モジュール92および利用管理情報54Aを含む実行コード90を生成することで、実行コード90が実行される頻度や時間に応じて、実行コード90に含まれるライブラリ50の利用をより確実に把握できる。
【0087】
図10は、本実施の形態に従うソフトウェア利用システム1において生成される実行コード90のさらに別の一例を示す模式図である。図10には、実行コード90をデバイス300にインストールする際にライセンスを確認する例を示す。
【0088】
図10を参照して、生成直後の実行コード90は、オブジェクト形式のライブラリ50と、利用管理情報54Aとを含む。ソフトウェア開発装置200からデバイス300へ実行コード90をインストールするにあたって、ソフトウェア開発装置200のライセンス管理モジュール234は、利用管理情報54Aを参照して必要なライセンスを確認する。
【0089】
例えば、ライセンス管理モジュール234は、利用管理情報54Aに含まれるライブラリIDおよびマシンIDを管理サーバ100へ送信することで、ライブラリ50の利用に必要なライセンスが存在していることを確認する。必要なライセンスが存在している場合に限って、ライセンス管理モジュール234は、アクティベート情報94を実行コード90に組み込むようにしてもよい。あるいは、ライセンス管理モジュール234は、ライセンスを示すコードが入力された場合に限って、アクティベート情報94を実行コード90に組み込むようにしてもよい。
【0090】
実行コード90は、有効なアクティベート情報94が組み込まれている場合に限って、デバイス300等において実行することができる。
【0091】
このように、図10に示す例では、ソフトウェア開発装置200がデバイス300に実行コード90をインストールする際に、ライセンスを確認するので、実行コード90に含まれるライブラリ50の利用をより確実に把握できる。
【0092】
図11は、本実施の形態に従うソフトウェア利用システム1において生成される実行コード90のさらに別の一例を示す模式図である。図11には、実行コード90が実行される際に実行環境を確認する例を示す。
【0093】
図11を参照して、実行コード90は、デバイスなどの実行環境96上で実行される。実行環境96は、実行コード90が実行されるデバイスのハードウェアリソースおよびソフトウェアリソースを含む。実行コード90の実行が指示されると、実行コード90に含まれるライセンス管理モジュール92は、実行コード90を実行する実行環境96が予め定められた要件に適合しているか否かを判断する。実行環境96が要件に適合していなければ、ライセンス管理モジュール92は、実行コード90の実行を中断する。
【0094】
予め定められた要件は、例えば、プロセッサ能力、メモリ空き容量、ネットワークインターフェイスの有無、セキュリティチップの有無などが挙げられる。さらに、認証されたIPアドレスを用いる実行環境96においては、予め定められたIPアドレスであるか否かなどについても判断するようにしてもよい。このような要件は、利用管理情報54Aに含まれていてもよいし、ライセンス管理モジュール92の内部にコーディングされていてもよい。
【0095】
また、ライセンス管理モジュール92は、上述したようなライセンスを確認する処理も実行するようにしてもよい。
【0096】
上述したように、実行環境96が予め定められた要件を満たしているか否かをライセンス管理モジュール92が判断することで、実行コード90が適切に実行されることを保証できる。
【0097】
図12は、本実施の形態に従うソフトウェア利用システム1において生成される実行コード90のさらに別の一例を示す模式図である。図12には、ライセンス管理モジュール92が実行環境96に用意されている例を示す。実行環境96は、例えば、実行コード90が実行されるデバイスのファームウェアなどによって提供されてもよい。
【0098】
実行環境96から実行コード90の実行を指示すると、実行環境96のライセンス管理モジュール92は、実行コード90に含まれる利用管理情報54Aを参照して必要なライセンスを確認する。また、ライセンス管理モジュール92は、上述した任意の処理をさらに実行するようにしてもよい。
【0099】
このように、ライセンス管理モジュール92を実行環境96に用意することで、実行コード90自体のサイズを低減でき、デバイスへの組み込みや配布などをより容易化できる。
【0100】
<F.その他の実装形態>
ソフトウェア開発装置200は、秘密鍵250と公開鍵252とのキーペアを有しているが、公開鍵252を認証されたIPアドレスとして用いるようにしてもよい。ソフトウェア開発装置200の公開鍵252をIPアドレスとしても用いることにより、パッケージ70のライセンスを付与したソフトウェア開発装置200に対して、パッケージ70を送信できる。これにより、パッケージ70の送信先が偽装される可能性を低減できる。
【0101】
<G.利点>
本実施の形態に従うソフトウェア利用システムによれば、アプリケーション開発者20は、ライブラリ開発者10が開発した任意のライブラリ50を利用してアプリケーションを開発することができる。ライブラリ50の利用に際して、ライブラリ50には利用先のソフトウェア開発装置200に応じたライブラリ利用管理情報80が含められるので、ライブラリ50の利用実績や利用に係る利用料をより確実に管理できる。このような仕組みを採用することで、ライブラリ開発者10およびアプリケーション開発者20の両方にメリットがあり、ライブラリの充実化およびアプリケーション開発の効率化を実現できる。
【0102】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。本発明の範囲は上記した説明ではなくて請求の範囲によって示され、請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0103】
1 ソフトウェア利用システム、10 ライブラリ開発者、20 アプリケーション開発者、50,50S ライブラリ、52,823 所有者ID、54,54A,84 利用管理情報、56 データベース、60 ライブラリリクエスト、62,543,842 マシンID、70 パッケージ、80 ライブラリ利用管理情報、82 登録管理情報、90 実行コード、92,234 ライセンス管理モジュール、94 アクティベート情報、100 管理サーバ、102,202 プロセッサ、104,204 メインメモリ、106,206 入力部、108,208 ディスプレイ、110,210 ストレージ、112 検証登録エンジン、114 利用管理エンジン、120,220 通信インターフェイス、122,222 内部バス、200 ソフトウェア開発装置、212 ソフトウェア開発プログラム、214 アプリケーション、230 パッケージ格納部、232 復号モジュール、236 エディタ、238 実行コード生成モジュール、240 ソースコード、250 秘密鍵、252,544 公開鍵、300 デバイス、541,821,841 ライブラリID、542 ライブラリハッシュ値、545,843 ライセンス、546,825,844 有効期限、547 管理サーバアドレス、822 ライブラリ名、824 検証日時、826 付加情報。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12