(57)【要約】【課題】円滑なプログラムモジュールの流通を実現するシステムの提供を可能にする。【解決手段】プログラムモジュール流通装置１０は，プログラムホルダ２からの登録要求により，流通させるプログラムモジュールをプログラムモジュールデータベース（ＰＭＤＢ）１００に登録し蓄積する。ユーザ３からの要求により，プログラムモジュールの検索条件を入力し，検索条件に合致するプログラムモジュールをＰＭＤＢ１００から検索する。検索されたプログラムモジュールを表示し，所望するプログラムモジュールをユーザ３に選択させて，選択されたプログラムモジュール群のすべての組合せを試用できるプログラムおよびテストデータを提供する。ユーザ３が購入する場合，プログラムモジュールに電子透かしを付加してプログラムモジュールを提供する。【選択図】　　図１
2004038745.tif 000002
【特許請求の範囲】
【請求項１】
入力された検索条件に合致するプログラムモジュールをユーザに提供するプログラムモジュール流通方法であって，
流通させるプログラムモジュールを，そのプログラムモジュールの機能情報または入出力の型の情報とともに登録し蓄積する過程と，
プログラムモジュールを希望するユーザから，プログラムモジュールの検索条件を入力する過程と，
検索条件に合致するプログラムモジュールを検索する過程と，
検索されたプログラムモジュール情報を表示する過程と，
ユーザが所望するプログラムモジュールをユーザに選択させる過程と，
選択されたプログラムモジュール群のすべての組合せを試用できるプログラムおよびテストデータをユーザに提供する過程と，
プログラムモジュールに電子透かしを付加してプログラムモジュールを提供する過程とを有する
ことを特徴とするプログラムモジュール流通方法。
【請求項２】
前記プログラムモジュールの検索条件を入力する過程は，
プログラムモジュールの機能に関する検索条件を入力する過程と，
プログラムモジュールの入出力の型に関する検索条件を入力する過程と，
入力データに対して所望の出力データとなる入力データと出力データの組の情報を検索条件として入力する過程の少なくとも一つを有する
ことを特徴とする請求項１記載のプログラムモジュール流通方法。
【請求項３】
入力された検索条件に合致するプログラムモジュールをユーザに提供するプログラムモジュール流通装置であって，
流通させるプログラムモジュールを，そのプログラムモジュールの機能情報または入出力の型の情報とともに登録し蓄積する手段と，
プログラムモジュールを希望するユーザから，プログラムモジュールの検索条件を入力する手段と，
検索条件に合致するプログラムモジュールを検索する手段と，
検索されたプログラムモジュール情報を表示する手段と，
ユーザが所望するプログラムモジュールをユーザに選択させる手段と，
選択されたプログラムモジュール群のすべての組合せを試用できるプログラムおよびテストデータをユーザに提供する手段と，
プログラムモジュールに電子透かしを付加してプログラムモジュールを提供する手段とを備える
ことを特徴とするプログラムモジュール流通装置。
【請求項４】
前記プログラムモジュールの検索条件を入力する手段は，
プログラムモジュールの機能に関する検索条件を入力する手段と，
プログラムモジュールの入出力の型に関する検索条件を入力する手段と，
入力データに対する所望の出力データを検索条件として入力する手段の少なくとも一つを備える
ことを特徴とする請求項３記載のプログラムモジュール流通装置。
【請求項５】
請求項１または請求項２のいずれか１項に記載のプログラムモジュール流通方法をコンピュータに実行させるためのプログラムモジュール流通用プログラム。
【請求項６】
請求項１または請求項２のいずれか１項に記載のプログラムモジュール流通方法をコンピュータに実行させるためのプログラムモジュール流通用プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は，プログラムモジュール流通方法，プログラムモジュール流通装置，プログラムモジュール流通用プログラムおよびプログラムモジュール流通用プログラムを記録した記録媒体に関し，出力すべき対象の学習データ（入力データと理想的な出力データ）が与えられた際に，プログラムモジュールを入出力の型で分類したデータベースを利用して，プログラムを自動で生成し，ユーザの望むアプリケーションプログラムをユーザに提供する技術であって，情報流通技術の中の一分野であるコンテンツ流通技術の分野に属する。
【０００２】
【従来の技術】
現在，ソフトウェアの流通においては，オフライン，オンライン等，様々な形態がある。代表的なオフライン流通では，ソフトウェアをＣＤ　（Ｃｏｍｐａｃｔ　Ｄｉｓｋ）　等のメディアにパッケージ化して小売店にて販売している。ＷＷＷ上でユーザＩＤやＣＤのシリアル番号を入力すると，オンラインでバージョンアップ等ができるようになっている。
【０００３】
また，代表的なオンライン販売として，シェアウェア等にてよく利用されるが，ＷＷＷ上にソフトウェアをダウンロード可能にしておき，ユーザがダウンロードした場合に，ユーザに所定の銀行口座に送金させる形態がある。また，所望のプログラムが市場にない場合には，ユーザがプログラムの仕様書を書いて発注し，作成してもらうという形態がある。
【０００４】
【発明が解決しようとする課題】
仕様書に明記されているプログラムのモジュールは，大抵の場合，他の誰かがどこかで作成しているモジュールである。しかし，以下の３つの課題によって，本モジュールが再利用されることはほとんどない。
【０００５】
１．発注を受けている会社の担当者（以下，プログラムユーザという）は，そのモジュールおよび作成者（以下，プログラムホルダという）の存在を知り得ない。
【０００６】
２．もし，モジュールを見つけたとしても，入出力の型を合せたり，内容を理解するのに手間がかかる。本当に所望の動作をするのかがわからない。
【０００７】
３．プログラムホルダは，モジュールを再利用可能な形態で開示してしまうと，プログラムユーザが不正利用する可能性があるため，プログラムユーザへの監視が不可欠である。しかし，不特定多数のプログラムユーザの監視は困難である。
【０００８】
本発明では，上記従来技術の問題点を解決し，円滑なプログラムモジュールの流通を実現する方法およびシステムを提供することを目的とする。
【０００９】
【課題を解決するための手段】
本発明では，上記課題１〜３を，以下の１〜３の手段を用いて解決し，円滑なプログラムモジュールの流通を可能とする。
【００１０】
１．プログラムモジュール（以下，ＰＭとも記す）の入出力を定義し，その定義に沿って作成されたプログラムモジュールおよび機能説明書をプログラムモジュールデータベース（以下，ＰＭＤＢとも記す）に蓄積する。ＰＭＤＢは，センタで集中管理する。
【００１１】
２．ＰＭの入出力型，ＰＭの機能，所望の入出力などの検索条件に沿うデータ処理プログラムを対話的に生成し，ＧＵＩ（Ｇｒａｐｈｉｃａｌ　Ｕｓｅｒ　Ｉｎｔｅｒｆａｃｅ）を付加したシミュレーション用のプログラムおよび確認用の入出力データを生成・配信する。
【００１２】
３．プログラムモジュールに電子透かしを添付する。電子透かしはＰＭＤＢのあるセンタで管理される。
【００１３】
本発明を用いることにより，以下の３つの作用が得られる。
【００１４】
１．プログラムホルダは，ＰＭＤＢにアクセスして所有するプログラムを登録し，ユーザはＰＭＤＢにアクセスして必要なモジュールを検索するため，ユーザは，既作成済みのプログラムモジュールの存在を知り，購入を検討することができる。その結果，上記課題１を解決することができる。
【００１５】
２．ユーザは，自動生成されたシミュレーション用のプログラムの配信を受け，該プログラムの動作をＧＵＩを通して確認できる。その結果，上記課題２を解決することができる。
【００１６】
３．ユーザが動作を確認して購入する場合，配信モジュール（バイナリデータ）に電子透かしを添付するため，よく似た動作を行うモジュールが世の中で発見された場合，どのユーザが不正コピーを行ったかを特定できる。その結果，課題３を解決することができる。
【００１７】
【発明の実施の形態】
図１は，本発明のプログラムモジュール配信システムの概要を示す図である。図中，１はプログラムモジュール配信センタ，２はプログラムホルダが使用する装置（以下，単にプログラムホルダという），３はユーザが使用する装置（以下，単にユーザという），４はネットワーク，１０はプログラムモジュール流通装置，１００はプログラムモジュール流通装置１０内のプログラムモジュールデータベース（ＰＭＤＢ）を表す。
【００１８】
プログラムホルダ２は，ネットワーク４を介してプログラムモジュール配信センタ１にあるプログラムモジュール流通装置１０にアクセスし，流通させるプログラムモジュールを登録する。ユーザ３は，ネットワーク４を介してプログラムモジュール流通装置１０にアクセスし，ＰＭＤＢ１００から所望のプログラムモジュールを検索する。
【００１９】
図２は，本発明のプログラムモジュール流通装置の詳細な構成図である。１００はプログラムモジュールおよび機能説明書が蓄積されるＰＭＤＢ，１０１はユーザ３のアクセス要求に対してユーザ認証を行うユーザ認証・管理部，１０２はユーザ３から検索条件を入力する検索条件入力部，１０３は入力された検索条件をもとにＰＭＤＢ１００を検索する検索部，１０４は検索条件に合致したプログラムモジュールを表示する検索結果表示部，１０５はＧＵＩ付加の条件を入力する選択情報・ＧＵＩ付加条件入力部，１０６は試用のためのプログラムモジュールにＧＵＩを付加するＧＵＩ付加部，１０７はＧＵＩを付加したプログラムモジュールをテスト用入出力データとともにユーザ３に提供する試用プログラム・テストデータ提供部，１０８はユーザ３からの購入情報を入力する購入情報入力部，１０９はプログラムモジュールに電子透かしを付加する電子透かし付加部，１１０は認証情報，検索情報，購入情報および登録情報を記録するログ管理部，１１１はホルダ認証を行うホルダ認証・管理部，１１２は登録情報を入力する登録情報入力部，１１３はプログラムモジュールをＰＭＤＢ１００に登録する登録部，１１４はユーザ３およびプログラムホルダ２と通信を行う通信部を表す。
【００２０】
プログラムモジュール流通装置１０が行う処理として，大きく分けて，ユーザ３に所望するプログラムモジュールを検索させる検索処理，ユーザ３からのプログラムモジュールの購入要求を処理する購入処理，プログラムホルダ２からのプログラムモジュールの登録を処理する登録処理がある。以下に，検索処理，購入処理，登録処理の処理フローおよび各部の機能の詳細を説明する。
【００２１】
〔検索処理〕
図３は，検索処理フローの概要を示す図である。以下で詳細に説明する。
【００２２】
ユーザ認証ステップＳ１：プログラムモジュール流通装置１０は，ユーザ３のアクセス要求に対し，ユーザＩＤ，パスワードによる認証をユーザ認証・管理部１０１で行う。認証した結果の認証情報（ユーザ名，時刻）をログ管理部１１０で記録する。
【００２３】
検索条件入力ステップＳ２：プログラムモジュール流通装置１０は，ユーザ認証の後，ユーザ３に検索条件入力ユーザインタフェースを提供し，ユーザ３から入力された検索条件を検索条件入力部１０２で獲得する。そして，検索情報（ユーザ名，時刻，検索条件）をログ管理部１１０で記録する。検索の例としては，プログラムモジュールの機能，入力型，出力型などのキーワード検索や，入力データに対する所望の出力データを用いた検索などがある。また，文章からキーワードを複数抽出する方法でもよい。プログラムモジュールの機能とは，例えば「文書作成」，「表計算」，「ファイル圧縮」，「画像変換」，…というような機能を表す情報であり，機能を表すものであれば文章でもよい。プログラムモジュールの入力型とは，例えばプログラムモジュールが入力するファイルのファイル形式，プログラムモジュールの入力パラメータ（引数）などの情報である。出力型も同様に出力ファイルのファイル形式などの情報である。
【００２４】
入力データに対する所望の出力データを用いた検索とは，ユーザ３が，検索条件として，入力データが「Ａ」のデータ（またはファイル）を指定し，出力データが「Ｂ」のデータ（またはファイル）を指定したときに，検索対象のプログラムモジュール（複数のプログラムモジュールの組合せでもよい）が「Ａ」を入力して「Ｂ」を出力するようなプログラムモジュール群を検索することをいう。
【００２５】
入力された検索条件をもとに，後述するように，ＰＭＤＢ１００から条件に合致するプログラムモジュールを検索部１０３で検索する。
【００２６】
図４に検索条件入力ユーザインタフェースの例を示す。図４には，条件入力の一例として，機能，入力型，出力型，所望の入出力が示されている。
【００２７】
条件入力として，機能の文章を入力すると，検索条件入力部１０２は，入力した文章の中からキーワードを複数抽出し，キーワードをＡＮＤ（論理積条件）やＯＲ（論理和条件）を用いて結合して検索条件を合成する。合成方法としては，単語辞書（図示省略）を保持し，単語同士の類似度，連結度を定義して，ある閾値以上の類似度を持つとＯＲで，ある閾値以上の連結度を持つとＡＮＤで検索条件を作成する。
【００２８】
図４に示す例では，検索条件としてプログラムモジュールの機能が「ＪＰＥＧファイルを入力して画面に表示するモジュール」という文章で入力されており，これから所定の単語辞書等を用いて以下の検索条件が合成されている。
・検索条件１：「ＪＰＥＧ」＆「入力」
・検索条件２：「画面」＆「表示」　　　（＆はＡＮＤ条件を表す）。
【００２９】
検索ステップＳ３：検索条件入力ステップＳ２で獲得した検索条件に従い，ＰＭＤＢ１００を検索部１０３で検索する。
【００３０】
検索結果表示ステップＳ４：検索結果表示部１０４で条件に合致したＰＭを入出力関係を明らかにして表示する。
【００３１】
図５に検索結果表示部１０４の表示画面の一例を示す。図５の検索結果画面では，図４で入力された文章「ＪＰＥＧファイルを入力して画面に表示するモジュール」から生成された「ＪＰＥＧ」＆「入力」と「画面」＆「表示」という各検索条件に対して合致したＰＭの機能をそれぞれ表示している。
【００３２】
図５に示す検索結果の表示画面において，表示されたＰＭの機能を表す文字列部分をクリックすると，そのＰＭの詳細表示が行われ，ユーザはＰＭの詳細である作成者，機能，入出力型，値段情報などを見ることができる。
【００３３】
所望ＰＭ選択ステップＳ５：選択情報・ＧＵＩ付加条件入力部１０５は，ＧＵＩ付加の条件の入力ユーザインタフェースをユーザ３に提供する。ＧＵＩ付加の条件の入力ユーザインタフェースとは，検索結果の表示画面上に表示されたＰＭの機能を表す各文字列の前のチェックボックスをクリックすることによって，ユーザ３が所望するＰＭ（機能）を選択することができるインタフェースである。ユーザは，これらのチェックボックスをクリック（図５では×印で表している）することにより，自分の必要とするＰＭを選んで試用することができる。図５の例では，「ＪＰＥＧを入力してＢＭＰに変換」と「ＪＰＥＧを入力して圧縮パラメータを操作」と「ＢＭＰ画像を画面に表示」の３つの機能を選択している。
【００３４】
ＧＵＩ付加ＰＭ提供ステップＳ６：ＧＵＩ付加部１０６でＧＵＩ付加条件を満たすようにＰＭにＧＵＩを付加し，試用プログラム・テストデータ提供部１０７で，ＧＵＩを付加したＰＭをテスト用入出力データとともにユーザ３に送信して提供する。
【００３５】
図６に，ＧＵＩを付加したＰＭの例を示す。選ばれたＰＭを入出力型をもとに連結し，すべての組合わせを表示する。ユーザは各矢印に沿ってボタンを押すことができる。「テストデータの入力」ボタンを押すと，テスト用ファイルが入力される。「ＪＰＥＧ圧縮パラメータ操作」ボタンを押すと，ＪＰＥＧの圧縮パラメータをユーザ３が操作することができる。「ＪＰＥＧ入力＆ＢＭＰ変換」ボタンを押すとＪＰＥＧファイルがＢＭＰファイルに変換される。最後に「ＢＭＰ画像表示」ボタンを押すとＢＭＰ画像が画面に表示される。
【００３６】
〔購入処理〕
図７は，購入処理フローの概要を示す図である。以下で詳細に説明する。
【００３７】
ユーザ認証ステップＳ１１：ユーザ３のアクセス要求に対し，ユーザＩＤ，パスワードによる認証をユーザ認証・管理部１０１で行う。認証した結果の認証情報（ユーザ名，時刻）をログ管理部１１０で記録する。
【００３８】
購入情報入力ステップＳ１２：購入情報入力部１０８にて，購入情報（必要ＰＭのＩＤ，ライセンスの形態，ライセンス数など）の入力ユーザインタフェース（図示省略）をユーザ３に提供し，ユーザ３に購入情報を入力させる。入力した購入情報をログ管理部１１０で記録する。
【００３９】
電子透かし付加ステップＳ１３：電子透かし付加部１０９にて，ＰＭに電子透かしを付加し，ユーザ３に提供する。図８に電子透かし付加処理フローの一例を示す。まず，ユーザ３の要求に対して，管理番号とその管理番号に対応するキーワードを発行し，プログラムモジュール流通装置１０内に保管する（ステップＳ１３０）。次に，配布するプログラムモジュールに対して，電子透かしとして以下の機能１〜４を付加する（ステップＳ１３１）。これらの機能は，例えば解読がきわめて困難な形でプログラムモジュール中に組み込まれた処理手順のようなものである。
・機能１：機能１はプログラムモジュール中に機能２〜４が存在するかどうかを判定し，これらを制御する機能である。
・機能２：機能２は内部変数としてプログラムモジュール中に組み込まれた管理番号からユーザＩＤを発行する機能である。
・機能３：機能３はプログラムモジュール流通装置１０（センタ）にユーザＩＤ，管理番号，ユーザ３のネットワークＩＤを送信する機能である。
・機能４：キーワードの入力に対して管理番号を発行する機能である。
【００４０】
最後に，これらの機能を付加したプログラムモジュールを再コンパイルして（ステップＳ１３２），電子透かし付加プログラムモジュールを作成し，作成した電子透かし付加ＰＭをユーザ３に提供する。
【００４１】
ユーザ３は，提供されたプログラムモジュールをコピー可能で，かつ，ユーザＩＤを知り得るが，管理番号およびキーワードは知り得ない。ただし，プログラムモジュールは内部変数として管理番号を持つ。
【００４２】
このプログラムモジュールが動作するときの電子透かしとして付加した機能のフローは，以下のとおりとなる。
（１）機能１が機能２を呼び出し，内部変数として保持する管理番号からユーザＩＤを取得する。
（２）機能１が機能３を呼び出し，センタにユーザＩＤ，管理番号，ネットワークＩＤを送信する。
（３）センタは，受信したユーザＩＤ，管理番号，ネットワークＩＤをログ情報として記録するとともに，これらからプログラムモジュールの正当性を確認する。正当性を確認できたならば対応するキーワードを返信する。正当性が確認されない場合（例：複数のネットワークＩＤが登録されている場合など）には，キーワードの返信を行わない。
（４）機能１から機能４を呼び出し，センタから受信したキーワードから管理番号を取得する。
（５）機能４によって取得した管理番号と，内部変数として保持する管理番号とを比較し，一致した場合には次のステップに進み，一致しない場合にはプログラムモジュールの動作をストップさせる。
【００４３】
ここでは，プログラムモジュールに付加する電子透かしの例として，センタと交信する機能を付加する例を説明したが，不正にコピーされたプログラムモジュールの動作をストップさせるのではなく，不正にコピーされたプログラムモジュールの流出元を検出できる機能を持たせるだけでよい場合には，プログラムモジュール中に組み込まれた管理番号またはユーザＩＤを，電子透かし読み取り装置によって抽出できる仕組みの電子透かしを用いることもできる。
【００４４】
〔登録処理〕
図９は，登録処理フローの概要を示す図である。以下で詳細に説明する。
【００４５】
ホルダ認証ステップＳ２１：プログラムモジュール流通装置１０は，プログラムホルダ２のアクセス要求に対し，ホルダＩＤ，パスワードによる認証をホルダ認証・管理部１１１で行う。認証した結果の認証情報（ホルダＩＤ，時刻）をログ管理部１１０で記録する。
【００４６】
登録情報入力ステップＳ２２：登録情報入力部１１２にて，登録情報（プログラムの名称，テスト用入出力データ，ライセンスの形態，提供する際の値段，ＰＭの保管場所，ＰＭの機能，ＰＭの入出力型，動作プラットフォームなど）の入力ユーザインタフェース（図示省略）を提供し，プログラムホルダ２に登録情報を入力させる。入力した登録情報をログ管理部１１０で記録する。
【００４７】
ＰＭの登録ステップＳ２３：登録部１１３にて，ＰＭのＩＤを発行し，ＰＭの保管場所にアクセスしてＰＭを取得し，登録情報とともにＰＭをＰＭＤＢ１００に登録する。
【００４８】
図１０に，ＰＭＤＢ１００の詳細について例示する。ＰＭＤＢ１００は，プログラムモジュールデータテーブルから構成され，ＰＭを一意に識別するＰＭのＩＤ，プログラムの名称，ホルダＩＤ，ＰＭの入力型，ＰＭの出力型，ＰＭの機能，ＰＭの値段，テスト用入出力データ，動作プラットフォーム（ＯＳ等の計算機環境）のエントリを持つ。
【００４９】
以上のプログラムモジュール流通装置１０が行う処理は，コンピュータとソフトウェアプログラムとによって実現することができ，そのプログラムは，コンピュータが読み取り可能な可搬媒体メモリ，半導体メモリ，ハードディスク等の適当な記録媒体に格納して，そこから読み出すことによりコンピュータに実行させることができる。
【００５０】
【発明の効果】
本発明を用いることにより，プログラムホルダは，ＰＭＤＢにアクセスして所有するプログラムモジュールを登録し，ユーザはＰＭＤＢにアクセスして必要なモジュールを検索するため，ユーザは，既作成済みのプログラムモジュールの存在を知り，購入を検討することができる。
【００５１】
また，本発明を用いることにより，ユーザは，シミュレーション用のプログラムの配信を受け，そのプログラムの動作をＧＵＩを通して確認することができる。
【００５２】
また，本発明を用いることにより，ユーザが動作を確認して購入する場合に，配信モジュール（バイナリ）に電子透かしを添付するため，よく似た動作を行うモジュールが世の中で発見された場合，どのユーザが不正コピーを行ったかを特定することができる。
【００５３】
以上により，円滑なプログラムモジュールの流通を実現するシステムの提供が可能となる。
【図面の簡単な説明】
【図１】本発明のプログラムモジュール配信システムの概要を示す図である。
【図２】本発明の実施の形態に係るプログラムモジュール流通装置の詳細な構成図である。
【図３】検索処理フローの概要を示す図である。
【図４】検索条件入力ユーザインタフェースの一例を示す図である。
【図５】検索結果表示部の表示画面の一例を示す図である。
【図６】ＧＵＩを付加したＰＭの一例を示す図である。
【図７】購入処理フローの概要を示す図である。
【図８】電子透かし付加処理フローの一例を示す図である。
【図９】登録処理フローの概要を示す図である。
【図１０】ＰＭＤＢの一例を示す図である。
【符号の説明】
１　プログラムモジュール配信センタ
２　プログラムホルダ
３　ユーザ
４　ネットワーク
１０　プログラムモジュール流通装置
１００　プログラムモジュールデータベース（ＰＭＤＢ）
１０１　ユーザ認証・管理部
１０２　検索条件入力部
１０３　検索部
１０４　検索結果表示部
１０５　選択情報・ＧＵＩ付加条件入力部
１０６　ＧＵＩ付加部
１０７　試用プログラム・テストデータ提供部
１０８　購入情報入力部
１０９　電子透かし付加部
１１０　ログ管理部
１１１　ホルダ認証・管理部
１１２　登録情報入力部
１１３　登録部
１１４　通信部
【図１】
2004038745.tif 000003
【図２】
2004038745.tif 000004
【図３】
2004038745.tif 000005
【図４】
2004038745.tif 000006
【図５】
2004038745.tif 000007
【図６】
2004038745.tif 000008
【図７】
2004038745.tif 000009
【図８】
2004038745.tif 000010
【図９】
2004038745.tif 000011
【図１０】
2004038745.tif 000012