(57)【特許請求の範囲】
【請求項１】
公衆ネットワークを通じてソフトウェアを提供するソフトウェアマーケットシステムであって、
提供対象のソフトウェアを保持するサーバ装置と、
前記サーバ装置に対し前記公衆ネットワークを介して接続され前記ソフトウェアの購入を予定する利用者が操作する利用者端末と、を含み、
前記サーバ装置は、
前記ソフトウェアの動作に関与するパラメータを解析するパラメータ解析部と、
前記パラメータ解析部により解析されたパラメータの解析情報に基づいて前記利用者が前記パラメータの値を任意に設定可能なユーザインタフェースパネル（以下「ＵＩパネル」という）を生成するＵＩパネル生成部と、
前記ＵＩパネル生成部により生成されたＵＩパネルおよび前記ソフトウェアが動作可能な所定環境を前記利用者端末に提供するデモ環境提供部と、を備え、
前記利用者端末は、
前記デモ環境提供部により提供された前記所定環境で前記ソフトウェアを動作可能にするとともに、前記ＵＩパネルを前記利用者端末に表示して前記利用者による前記ＵＩパネルの操作入力を可能にし、この操作入力により設定された前記パラメータの値に基づいて前記ソフトウェアを動作させこの動作に伴う動作情報を前記利用者端末に表示するウェブブラウザ部、を備えることを特徴とするソフトウェアマーケットシステム。
【請求項２】
前記サーバ装置は、
前記利用者による前記ＵＩパネルの操作入力により設定された前記パラメータの値を前記ソフトウェアのパラメータに組み込むパラメータ組込部と、
前記パラメータ組込部により前記パラメータが組み込まれた前記ソフトウェアのファイルを前記利用者端末に転送するソフトウェア転送部と、を備え、
前記利用者端末は、
前記ソフトウェア転送部により転送された前記ソフトウェアのファイルを保存するファイル保存部、を備えることを特徴とする請求項１に記載のソフトウェアマーケットシステム。
【請求項３】
前記サーバ装置は、前記ソフトウェアの提供に対する対価の支払い決済が完了した場合に生成されて前記ソフトウェアの動作を許容するキー情報を、前記ソフトウェア転送部に転送される前記ソフトウェアのファイルに組み込むことを特徴とする請求項２に記載のソフトウェアマーケットシステム。
【請求項４】
提供対象のソフトウェアを保持し、このソフトウェアの購入を予定する利用者が操作する利用者端末に公衆ネットワークを通じて前記ソフトウェアを提供するサーバ装置であって、
前記ソフトウェアの動作に関与するパラメータを解析するパラメータ解析部と、
前記パラメータ解析部により解析されたパラメータの解析情報に基づいて前記利用者が前記利用者端末を介して前記パラメータの値を任意に設定可能なＵＩパネルを生成するＵＩパネル生成部と、
前記ＵＩパネル生成部により生成されたＵＩパネルおよび前記ソフトウェアが動作可能な所定環境を前記利用者端末に提供するデモ環境提供部と、
を備えることを特徴とするサーバ装置。
【請求項５】
前記利用者による前記ＵＩパネルの操作入力により設定された前記パラメータの値を前記ソフトウェアのパラメータに組み込むパラメータ組込部と、
前記パラメータ組込部により前記パラメータが組み込まれた前記ソフトウェアのファイルを前記利用者端末に転送するソフトウェア転送部と、を備えることを特徴とする請求項４に記載のサーバ装置。
【請求項６】
前記ソフトウェアの提供に対する対価の支払い決済が完了した場合に生成されて前記ソフトウェアの動作を許容するキー情報を、前記ソフトウェア転送部に転送される前記ソフトウェアのファイルに組み込むことを特徴とする請求項５に記載のサーバ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インターネット等の公衆ネットワークを通じてソフトウェアを提供するソフトウェアマーケットシステムおよびサーバ装置に関するものである。
【背景技術】
【０００２】
インターネット等の公衆ネットワーク（公衆通信回線網）を通じてソフトウェアを提供する技術として、例えば、下記に特許文献１に開示される「ソフトウェア購入方法及びシステム」がある。
【０００３】
この開示技術によると、プログラムの作成を依頼する依頼者がＷＥＢサーバにアップロードした依頼項目や要求仕様を、開発者がダウンロードしてプログラムを作成し、作成したプログラムを開発者がＷＥＢサーバにアップロードする。依頼者は、アップロードされたプログラムをＷＥＢサーバからダウンロードして使用する。なお、この開示技術では、品質テストを実施するテスト実施者によるテストをパスしたプログラムだけがテスト済みのプログラムとして、依頼者に提供される。これにより、高品質なソフトウェアの購入を可能にしている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−２８８３６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記特許文献１の開示技術によると、プログラムの依頼者は、所望の機能を実現するための依頼項目や要求仕様を、プログラムの作成を依頼する都度、ＷＥＢサーバにアップロードする必要があり依頼手続が煩雑である。また、所望の機能ごとにプログラムの開発を依頼していたのでは時間がかかるとともにコストも嵩み得るという問題もある。
【０００６】
ところで、近年、JavaScript（登録商標）を代表とするスクリプト言語の急速な普及によって、プログラム言語の記述が容易化している。そのため、依頼者自らが標準的な機能をカスタマイズして所望の機能を得ることも考えられる。しかし、それにはスクリプト言語に対する高度な専門知識を必要とすることから、このような専門知識を持つ者以外は、自らカスタマイズして所望の機能を得ることは難しい。
【０００７】
本発明は、上述した課題を解決するためになされたものであり、専門知識を持たない利用者であっても容易にソフトウェアをカスタマイズすることができ、カスタマイズした場合のソフトウェアの動作を容易に確認し得るソフトウェアマーケットシステムおよびサーバ装置を提供することを目的とする。また、本発明の別の目的は、専門知識を持たない利用者であっても、このようなカスタマイズにより得られた所望の動作をするソフトウェアを迅速かつ廉価に入手し得るソフトウェアマーケットシステムおよびサーバ装置を提供することである。
【課題を解決するための手段】
【０００８】
上記目的を達成するため、特許請求の範囲に記載された請求項１の技術的手段を採用する。この手段によると、ソフトウェアマーケットシステムは、提供対象のソフトウェアを保持するサーバ装置と、このサーバ装置に対し公衆ネットワークを介して接続されソフトウェアの購入を予定する利用者が操作する利用者端末と、を含む。そして、このサーバ装置は、パラメータ解析部、ユーザインタフェースパネル（以下「ＵＩパネル」という）生成部およびデモ環境提供部を備え、ソフトウェアの動作に関与するパラメータを解析し（パラメータ解析部）、このパラメータの解析情報に基づいて利用者がパラメータの値を任意に設定可能なＵＩパネルを生成し（ＵＩパネル生成部）、この生成されたＵＩパネルおよびソフトウェアが動作可能な所定環境を利用者端末に提供する（デモ環境提供部）。一方、利用者端末はウェブブラウザ部を備え、このウェブブラウザ部により、デモ環境提供部により提供された所定環境でソフトウェアを動作可能にするとともに、ＵＩパネルを利用者端末に表示して利用者によるＵＩパネルの操作入力を可能にし、この操作入力により設定されたパラメータの値に基づいてソフトウェアを動作させこの動作に伴う動作情報を利用者端末に表示する。これにより、利用者は、利用者端末に表示されるＵＩパネルを介して、ソフトウェアの動作に関与するパラメータを操作することが可能になる。また、この操作入力により任意に設定されたパラメータの値に基づいて動作するソフトウェアの動作情報が利用者端末に表示される。
【０００９】
また、特許請求の範囲に記載された請求項２の技術的手段を採用する。この手段によると、サーバ装置は、パラメータ組込部とソフトウェア転送部を備え、利用者によるＵＩパネルの操作入力により設定されたパラメータの値をソフトウェアのパラメータに組み込み、このパラメータが組み込まれたソフトウェアのファイルを利用者端末に転送する。そして、利用者端末は、ソフトウェア転送部により転送されたソフトウェアのファイルを保存するファイル保存部を備える。これにより、ＵＩパネルの操作入力により設定されたパラメータの値が組み込まれたソフトウェアは、サーバ装置から利用者端末に転送されてそのファイルが利用者端末のファイル保存部に保存される。
【００１０】
さらに、特許請求の範囲に記載された請求項３や請求項６の技術的手段を採用する。これらの手段によると、サーバ装置は、ソフトウェアの提供に対する対価の支払い決済が完了した場合に生成されてソフトウェアの動作を許容するキー情報を、ソフトウェア転送部に転送されるソフトウェアのファイルに組み込む。これにより、対価の支払い決済が完了しない場合には、このようなキー情報が生成されない。
【００１１】
また、上記目的を達成するため、特許請求の範囲に記載された請求項４の技術的手段を採用する。この手段によると、サーバ装置は、パラメータ解析部、ＵＩパネル生成部およびデモ環境提供部を備える。そして、このサーバ装置は、ソフトウェアの動作に関与するパラメータを解析し（パラメータ解析部）、このパラメータの解析情報に基づいて利用者が利用者端末を介してパラメータの値を任意に設定可能なＵＩパネルを生成し（ＵＩパネル生成部）、この生成されたＵＩパネルおよびソフトウェアが動作可能な所定環境を利用者端末に提供する（デモ環境提供部）。これにより、利用者端末には、ＵＩパネルの操作によって任意に設定されたパラメータの値に基づくソフトウェアの動作情報が表示されるので、利用者は、ＵＩパネルの操作入力により設定されるパラメータの値に従ったソフトウェアの動作を利用者端末の表示から把握することが可能になる。
【００１２】
また、特許請求の範囲に記載された請求項５の技術的手段を採用する。この手段によると、サーバ装置は、パラメータ組込部とソフトウェア転送部を備え、利用者によるＵＩパネルの操作入力により設定されたパラメータの値をソフトウェアのパラメータに組み込み、このパラメータが組み込まれたソフトウェアのファイルを利用者端末に転送する。これにより、ＵＩパネルの操作入力により任意に設定されたパラメータの値が組み込まれたソフトウェアが、サーバ装置から利用者端末に転送される。
【発明の効果】
【００１３】
請求項１の発明では、利用者は、利用者端末に表示されるＵＩパネルを介して、ソフトウェアの動作に関与するパラメータを操作することが可能になる。また、この操作入力により任意に設定されたパラメータの値に基づいて動作するソフトウェアの動作情報が利用者端末に表示されるので、専門知識のない利用者でも、ＵＩパネルを介してパラメータを変化させることで、それに伴うソフトウェアの動作を容易に確認することができる。したがって、専門知識を持たない利用者であっても容易にソフトウェアをカスタマイズすることができ、カスタマイズした場合のソフトウェアの動作を容易に確認することができる。
【００１４】
請求項２の発明では、ＵＩパネルの操作入力により設定されたパラメータの値が組み込まれたソフトウェアは、サーバ装置から利用者端末に転送されてそのファイルが利用者端末のファイル保存部に保存される。そのため、専門知識のない利用者でも、ＵＩパネルを介してパラメータを変化させてカスタマイズしたソフトウェアを容易に入手することが可能になる。したがって、専門知識を持たない利用者であっても、このようなカスタマイズにより得られた所望の動作をするソフトウェアを迅速かつ廉価に入手することができる。
【００１５】
請求項３の発明および請求項６の発明では、対価の支払い決済が完了しない場合には、このようなキー情報が生成されないため、ソフトウェアの提供に対する対価の支払いをすることなく取得されたソフトウェアについてはその動作を禁止することが可能になる。したがって、カスタマイズにより得られた所望の動作をするソフトウェアの不正取得を抑制することができる。
【００１６】
請求項４の発明では、利用者端末には、ＵＩパネルの操作によって任意に設定されたパラメータの値に基づくソフトウェアの動作情報が表示されるので、利用者は、ＵＩパネルの操作入力により任意に設定されるパラメータの値に従ったソフトウェアの動作を利用者端末の表示から把握することが可能になる。そのため、専門知識のない利用者でも、ＵＩパネルを介してパラメータの設定値（任意データ）を変化させることで、それに伴うソフトウェアの動作を容易に確認することができる。したがって、専門知識を持たない利用者であっても容易にソフトウェアをカスタマイズすることができ、カスタマイズした場合のソフトウェアの動作を容易に確認することができる。
【００１７】
請求項５の発明では、ＵＩパネルの操作入力により任意に設定されたパラメータの値が組み込まれたソフトウェアが、サーバ装置から利用者端末に転送される。そのため、専門知識のない利用者でも、ＵＩパネルを介して任意にパラメータの値を変化させてカスタマイズしたソフトウェアを容易に入手することが可能になる。したがって、専門知識を持たない利用者であっても、このようなカスタマイズにより得られた所望の動作をするソフトウェアを迅速かつ廉価に入手することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態に係るソフトウェアマーケットシステム（以下「マーケットシステム」という）の一例を示す配置図である。
【図２】図１に示すマーケットシステムを構成する、マーケットブラウザ、アプリケーションサーバおよびデータベースサーバの間で変換される各データの流れを示すデータ互換変換フロー図である。
【図３】図３(A)および図３(B)は定義情報の生成例を示す説明図、図３(C)は商品ソフトウェアのインタフェースを表すクラス図である。
【図４】本実施形態に係るマーケットシステムにおいて商品ソフトウェアを購入する際に行われるオブジェクト間の連携例を示すＵＭＬシーケンス図である。
【図５】図５(A)は、埋め込まれる動作パラメータの設定例、図５(B)は、ダウンロードされるアーカイブに含まれるファイルへの動作パラメータの埋め込みの例、をそれぞれ示す説明図である。
【図６】本実施形態に係るマーケットシステムにおけるユースケース図である。
【図７】図６に示すユースケース図に表される定義情報生成処理に関するロバストネス図である。
【図８】図６に示すユースケース図に表されるＵＩパネル生成準備処理およびＵＩパネル生成処理に関するロバストネス図である。
【図９】定義情報(B)と設定情報(B)の対応関係を示す説明図である。
【図１０】ＵＩパネル生成処理の処理の流れを示すフローチャートである。
【図１１】図１０に示すコントロールの配列生成処理の流れを示すフローチャートである。
【図１２】図６に示すユースケース図に表されるＵＩパネル初期化準備処理およびＵＩパネル初期化処理に関するロバストネス図である。
【図１３】ＵＩパネル初期化処理の流れを示すフローチャートである。
【図１４】図６に示すユースケース図に表されるパラメータ保存処理に関するロバストネス図である。
【図１５】図６に示すユースケース図に表されるダウンロード準備処理およびダウンロード処理に関するロバストネス図である。
【図１６】ダウンロード処理の流れを示すフローチャートである。
【図１７】本実施形態の改変例によるマーケットシステムにおいて決済をする際に行われるオブジェクト間の連携例を示すＵＭＬシーケンス図である。
【図１８】ライセンスチェック機能付きのダウンロード準備処理およびそのダウンロード処理に関するロバストネス図である。
【図１９】マーケットブラウザによるディスプレィ画面の表示例を示す説明図で、図１９(A)はトップ画面、図１９(B)はライブデモ画面、をそれぞれ示す。
【図２０】図１９に続く説明図で、図２０(A)は購入画面、図２０(B)は支払い画面、図２０(C)はダウンロード画面、をそれぞれ示す。
【発明を実施するための形態】
【００１９】
以下、本発明のマーケットシステム（ソフトウェアマーケットシステム）およびサーバ装置の実施形態について各図を参照して説明する。本実施形態に係るマーケットシステム１０は、インターネット上に構築されるネットワークマーケットにおいて、商品としてのソフトウェア（以下「商品ソフトウェア」という）を販売するために構成されるネットワークコンピューティングの一例である。なお、ネットワークコンピューティングとは、ネットワークを中心としたコンピュータの利用形態のことである。
【００２０】
まず、マーケットシステム１０の構成概要を図１に基づいて説明する。図１は、マーケットシステム１０の一例をＵＭＬ2.0の表記法による配置図により示したものである。ＵＭＬは、統一モデリング言語（Unified Modeling Language）のことである。
【００２１】
図１に示すように、マーケットシステム１０は、データセンター２０（ノード）と利用者環境３０（ノード）とこれらノードを繋ぐ接続５０とにより構成されている。接続５０は、典型的には、インターネット等の公衆ネットワークである。なお、同図に示す「＜＜」および「＞＞」で囲まれる記述はステレオタイプであることを表し、＜＜ネットワーク＞＞は、接続５０のステレオタイプの一例として定義されている。
【００２２】
データセンター２０は、ハードウェアとしてサーバ装置２１を備えたノードであり、インターネット等の接続５０に繋げられている。サーバ装置２１は、典型的には、ＣＰＵ（中央演算処理装置）、メモリ（半導体記憶装置）、ハードディスクドライブ（磁気ディスク装置）、入出力インタフェース（入出力装置）や通信インタフェース（通信制御装置）等を備えたコンピュータであり、データセンター２０の特質からハードディスクドライブは大容量タイプ（テラバイトまたはペタバイトオーダ）のものを有する。
【００２３】
サーバ装置２１には、ウェブサーバ２３、アプリケーションサーバ２５、ファイルシステム２７およびデータベースサーバ２９等のソフトウェアコンポーネント（以下「コンポーネント」という）が実装されており、通信インタフェースを介して公衆ネットワークに接続されている。これにより、サーバ装置２１は、利用者環境３０の端末装置３１と後述するような連携動作を行う。なお、これらのコンポーネントについては後述する。
【００２４】
利用者環境３０は、端末装置３１を備えたノードであり、当該マーケットシステム１０の利用者が端末装置３１を操作する。端末装置３１は、典型的にはパーソナルコンピュータであり、ＣＰＵ（中央演算処理装置）、メモリ（半導体記憶装置）、ハードディスクドライブ（磁気ディスク装置）、入出力インタフェース（入出力装置）、通信インタフェース（通信制御装置）、ディスプレィ（表示装置）、キーボード（入力装置）やポインティングデバイス（入力装置）等を備えている。なお、利用者環境３０は、特許請求の範囲に記載の「利用者端末」に相当し得るものである。
【００２５】
端末装置３１には、マーケットブラウザ３３が実装されている。このマーケットブラウザ３３は、端末装置３１が通信インタフェースにより公衆ネットワークを介してデータセンター２０のサーバ装置２１に接続されることによって、ウェブサーバ２３等、サーバ装置２１のコンポーネントと連携動作を行う。ここで、マーケットブラウザ３３や、サーバ装置２１に実装されるウェブサーバ２３等の各コンポーネントについて説明する。
【００２６】
マーケットブラウザ３３は、フロントエンドアプリケーションの実行環境を実現するコンポーネントであり、典型的にはウェブブラウザである。この実行環境は、商品ソフトウェアの実行環境でもある。フロントエンドアプリケーションは、利用者が購入する商品ソフトウェアの動作およびライブデモを行うためのソフトウェアで、例えば、ＨＴＭＬ（HyperText Markup Language）、ＣＳＳ（Cascading Style Sheets）、JavaScript（登録商標）等を用いてマーケットブラウザ３３に実装される。フロントエンドアプリケーションは、次に説明するウェブサーバ２３から配布される。以下、フロントエンドアプリケーションのことを「フロントエンドアプリ」という。また、以下、本明細書中に記載する「Java」および「JavaScript」は、登録商標である旨を上記のように括弧書きで付記しないが、いずれも登録商標であることに注意されたい。なお、マーケットブラウザ３３は、特許請求の範囲に記載の「ウェブブラウザ部」に相当し得るものである。
【００２７】
マーケットブラウザ３３は、ライブデモを行うためにウェブサーバ２３と接続５０を介して通信しライブデモに必要なフロントエンドアプリ一式をダウンロードして実行する。「ライブデモ」とは、商品ソフトウェアを動作させその動作に伴う動作情報（動作状態や動作結果等）をリアルタイムにディスプレィに表示する機能のことで、当該動作に関与するパラメータ（以下「動作パラメータ」という）の値がＵＩパネルにより変更されるとその値を即時反映させて動作確認することができる。「ＵＩパネル」は、ディスプレィ画面において動作パラメータの変更を行うためのユーザインタフェースである。動作パラメータの変更は、ディスプレィ画面の特定領域に表示される、チェックボックス、スライダー、ドロップダウンリスト、テキストボックス（テキストフィールド）等を、マウス等のポインティングデバイスにより操作したり、キーボード入力したりすることにより行う。
【００２８】
ウェブサーバ２３は、マーケットブラウザ３３にフロントエンドアプリ等を配布して、アプリケーションサーバ２５のバックエンドアプリケーションとインタフェースをとるサーバ機能を実現するコンポーネントである。フロントエンドアプリ等には、前述したように、ライブデモに必要なフロントエンドアプリ一式等の商品ソフトウェアの動作可能な所定環境が含まれる。なお、ウェブサーバ２３は、特許請求の範囲に記載の「デモ環境提供部」に相当し得るものである。
【００２９】
アプリケーションサーバ２５は、バックエンドアプリケーションの実行環境を実現するコンポーネントである。バックエンドアプリケーションは、マーケットシステム１０の本体（以下「マーケット本体」という）であり、典型的には、JavaやＰＨＰ（Hypertext Preprocessor）等の開発言語を用いてアプリケーションサーバ２５に実装される。以下、バックエンドアプリケーションのことを「バックエンドアプリ」という。なお、アプリケーションサーバ２５は、特許請求の範囲に記載の「パラメータ解析部」および「ＵＩパネル生成部」に相当し得るものである。
【００３０】
ファイルシステム２７は、サーバ装置２１のハードディスクドライブに格納された商品ソフトウェアやフロントエンドアプリ等のファイルを読み出したり、後述するように商品ソフトウェア等を集めた商品アーカイブをハードディスクドライブに格納したりするためのコンポーネントである。
【００３１】
データベースサーバ２９は、後述するパラメータ定義情報やパラメータ自体をサーバ装置２１のハードディスクドライブに保持したり格納したりするためのコンポーネントである。例えば、リレーショナルデータベースサーバがこれに相当する。なお、データベースサーバ２９によってサーバ装置２１のハードディスクドライブに保持や格納することを、以下「データベースサーバ２９に保存」と表現する場合があるので注意されたい。
【００３２】
次に、マーケットシステム１０で扱うデータについて図２および図３を参照して説明する。図２には、マーケットブラウザ３３、アプリケーションサーバ２５およびデータベースサーバ２９の間で変換される各データの流れを示すデータ互換変換フロー図が図示されている。また、図３(A)には、JavaScriptで記述されたソースコードに含まれる生パラメータの例、図３(B)には、図３(A)に示す生パラメータから生成される定義情報の例、をそれぞれ示す説明図が図示されている。また、図３(C)には、商品ソフトウェアのインタフェースを表すクラス図が図示されている。
【００３３】
マーケットシステム１０では、商品ソフトウェアに組み込まれる動作パラメータのことを「生パラメータ」という。本実施形態では、図３(A)に表される一点鎖線の枠内に示すように、この生パラメータは、JavaScript等のスクリプト言語のソースコードに記述されている。例えば、JavaScriptの場合、defaults変数に動作パラメータの初期値を設定する。生パラメータは、例えば、ＪＳＯＮ（JavaScript Object Notation）に準拠した形式で記述する。また、options変数にライブデモで設定された動作パラメータを保持することで、ＵＩパネルと商品ソフトウェアとのインタフェースを確保する。そのため、例えば、ＵＩパネルから商品ソフトウェアに動作パラメータを設定するための関数として、setOptionsを用いる。また、商品ソフトウェアからマーケットブラウザ３３に動作パラメータを一括して渡すための関数として、getOptionsを用いる。その他、例えば、キーとそのキーに関連付けられた値との組み合わせで構成される形式のほかに、配列形式やネスト（入れ子）構造を採る場合もある。
【００３４】
マーケットシステム１０では、このような動作パラメータの個々に関するメタレベルの情報として、「定義情報」を持つ。図３(B)に示すように、定義情報の各レコードには、レコードを識別するためのキーとパラメータの型、初期値や値の範囲等のパラメータ付加情報とが含まれている。なお、この図の例は定義情報の一例であり、後述する定義情報生成処理によって、図３(A)に示すようなスクリプト言語のソースコードから、図３(B)に示す定義情報が自動的に生成される（図３(A)に示す一点鎖線の枠から図３(B)の一覧表に向かう矢印は、定義情報が自動生成されることを示す）。
【００３５】
また、生パラメータを処理に適した形に変換したものとして、マーケットシステム１０では「設定情報」を保持している。設定情報の各レコードには、レコードを識別するためのキーとそのキーに関連付けられた値、さらに定義情報との対応情報が含まれている。
【００３６】
このようにマーケットシステム１０においては、生パラメータ、定義情報および設定情報といった各種のデータを、マーケットブラウザ３３、アプリケーションサーバ２５ならびにデータベースサーバ２９で取り扱う。そのため、図２に示すように、マーケットブラウザ３３、アプリケーションサーバ２５やデータベースサーバ２９の各コンポーネントで情報処理可能なデータ形式にこれらのデータが変換される。
【００３７】
本実施形態では、各コンポーネントのデータ形式として３種類のものが存在する。即ち、マーケットブラウザ３３やファイルシステム２７により処理可能なフロントエンド形式、アプリケーションサーバ２５により処理可能なバックエンド形式、および、データベースサーバ２９により処理可能なリレーショナル形式である。
【００３８】
図２に示すように、フロントエンド形式には、生パラメータ(F)、定義情報(F)および設定情報(F)がある（図２に示す白色の丸印）。フロントエンド形式は、主に、マーケットブラウザ３３で処理するためのデータ形式であり、例えば、前述したように、ＪＳＯＮが用いられる。生パラメータ(F)については、ファイルシステム２７においても使用される。
【００３９】
バックエンド形式には、生パラメータ(B)、定義情報(B)および設定情報(B)がある（図２に示す灰色の丸印）。バックエンド形式は、アプリケーションサーバ２５で処理するためのデータ形式である。具体的には、アプリケーションサーバ２５のオブジェクトとしてのマーケット本体で処理されるデータ形式で、例えば、連想配列や通常の配列を組み合わせて構成される。
【００４０】
リレーショナル形式には、定義情報(R)および設定情報(R)がある（図２に示す黒色の丸印）。リレーショナル形式は、データベースサーバ２９に保存するデータ形式であり、マーケットシステム１０では、このデータ形式によって商品ソフトウェアや関連するデータを永続的にデータベースサーバ２９に保存する。
【００４１】
図２に示す各丸印を接続する矢印は、上述したデータ形式の変換方向を意味しており、これらのデータ形式の変換は、データ形式相互変換ライブラリによって行われる。このデータ形式相互変換ライブラリは、バックエンド形式が各変換の中心に位置することから、例えば、アプリケーションサーバ２５に実装される。
【００４２】
なお、定義情報(B)から生パラメータ(B)への変換、定義情報(F)から定義情報(B)への変換、設定情報(F)から設定情報(B)への変換、および、定義情報(B)と設定情報(B)の間における相互変換、については必要ないため、これらは実装されていない。
【００４３】
次に、マーケットシステム１０で行われる主要な処理の概要を説明する。主要な処理には、定義情報生成処理、ＵＩパネル生成準備処理、ＵＩパネル生成処理、ＵＩパネル初期化準備処理、ＵＩパネル初期化処理、パラメータ保存処理、ダウンロード準備処理、ダウンロード処理がある。
【００４４】
定義情報生成処理は、アプリケーションサーバ２５に実装されたバックエンドアプリが、商品ソフトウェアに埋め込まれた生パラメータ(F)を解析し、この生パラメータ(F)から定義情報(R)を生成する情報処理である。この処理は、特許請求の範囲に記載の「パラメータ解析部」に相当し得るものである。これにより生成されたリレーショナル形式の定義情報(R)は、データベースサーバ２９に保存されて、ＵＩパネル生成準備処理やＵＩパネル初期化準備処理に用いられる。
【００４５】
ＵＩパネル生成準備処理は、バックエンドアプリがデータベースサーバ２９に保存された定義情報(R)と商品ソフトウェアに埋め込まれた生パラメータ(F)とから、ＵＩパネルの生成に必要なデータ（定義情報(B)および設定情報(B)）を準備するためにこれらの情報を生成する情報処理である。ＵＩパネルは、バックエンドアプリで生成するため、定義情報および設定情報はいずれもバックエンド形式でアプリケーションサーバ２５に提供される。定義情報(R)と設定情報(R)から、定義情報(B)および設定情報(B)を生成する場合もある。このＵＩパネル生成準備処理は、次に説明するＵＩパネル生成処理とともに、特許請求の範囲に記載の「ＵＩパネル生成部」に相当し得るものである。
【００４６】
ＵＩパネルは、前述したように、ディスプレィ画面において動作パラメータの変更を行うためのユーザインタフェースであり、端末装置３１のディスプレィに表示される操作盤である。利用者はこのＵＩパネルをマウス等のポインティングデバイスで操作したり数値等をキーボードで入力したりすることよって、動作パラメータの設定値を変更することが可能になる。
【００４７】
ＵＩパネル生成処理は、バックエンドアプリがＵＩパネル生成準備処理によって準備された定義情報(B)および設定情報(B)から、ＵＩパネルを生成する情報処理である。この処理は、ＵＩパネル生成準備処理とともに特許請求の範囲に記載の「ＵＩパネル生成部」に相当し得るものである。これにより生成されたＵＩパネルは、ウェブサーバ２３を介してマーケットブラウザ３３に提供されて、フロントエンドアプリによって端末装置３１のディスプレィに表示することが可能になる。
【００４８】
ＵＩパネル初期化準備処理は、バックエンドアプリがデータベースサーバ２９に保存された定義情報(R)と商品ソフトウェアに埋め込まれた生パラメータ(F)とから、ＵＩパネルの初期化に必要なデータ（定義情報(F)および設定情報(F)）を生成する情報処理である。ＵＩパネルの初期化処理は、フロントエンドアプリにより行われることから、定義情報および設定情報はいずれもフロントエンド形式でマーケットブラウザ３３に提供される。定義情報(R)と設定情報(R)から、定義情報(F)および設定情報(F)を生成する場合もある。
【００４９】
ＵＩパネル初期化処理は、マーケットブラウザ３３に実装されたフロントエンドアプリが定義情報(R)および設定情報(R)に基づいてＵＩパネルを初期化する情報処理である。この処理によって、端末装置３１のディスプレィにはデフォルト値等に初期設定されたＵＩパネルが表示される。フロントエンドアプリは、前述したように、利用者が購入する商品ソフトウェアをライブデモとして動作させるとともに、ＵＩパネルの操作により動作パラメータの値をリアルタイムに変動させ得る。これにより、商品ソフトウェアには、ＵＩパネルの操作により変動した動作パラメータの値が直ちに設定されるため、当該商品ソフトウェアがそのパラメータの値に応じた動作を行うことにより、その動きがライブデモとしてディスプレィに表示される。
【００５０】
パラメータ保存処理は、アプリケーションサーバ２５に実装されたバックエンドアプリが、ライブデモで設定された生パラメータ(F)から設定情報(R)を生成してデータベースサーバ２９に保存する情報処理である。ライブデモにおいてＵＩパネルの操作により商品ソフトウェアに設定された動作パラメータは、生パラメータのフロントエンド形式で取得される。そのため、生パラメータ(F)は、リレーショナル形式の設定情報(R)でサーバ装置２１のハードディスクドライブに保存される。
【００５１】
ダウンロード準備処理は、バックエンドアプリがデータベースサーバ２９に保存された定義情報(R)と設定情報(R)から商品ソフトウェアに埋め込む生パラメータ(F)を生成する情報処理である。パラメータ保存処理により利用者がライブデモで設定した動作パラメータは、リレーショナル形式の設定情報(R)でデータベースサーバ２９に保存されていることから、フロントエンド形式の生パラメータ(F)に変換してダウンロード処理に渡す。
【００５２】
ダウンロード処理は、利用者が商品アーカイブ（商品ソフトウェア等を集めたアーカイブファイル）をマーケットブラウザ３３を介して端末装置３１にダウンロード可能にするための情報処理であり、バックエンドアプリにより行われるものである。
【００５３】
なお、このようにバックエンドアプリやフロントエンドアプリに関与する商品ソフトウェアは、図３(C)に示すインタフェースに準拠することによって、当該マーケットシステム１０による取り扱いが可能になる。なお、この例では、仮の名称として「商品ソフトウェア」をクラス名に記載しているが、実際には当該マーケットシステム１０で取り扱われる商品名称が記述される。
【００５４】
即ち、図３(C)に示すクラス図に表されるインタフェースを採ることにより、属性として、初期値を生パラメータ(F)のフロントエンド形式で保持し、操作として、初期化、パラメータ設定およびパラメータ取得の各メソッドを実装する。これにより、前述したように、定義情報生成処理では生パラメータ(F)から定義情報(R)を生成することが可能になる。
【００５５】
続いて、図４に示すＵＭＬシーケンス図を参照して、マーケットシステム１０におけるオブジェクト間の連携例について説明する。このシーケンス図は、商品ソフトウェアを購入する利用者（以下「購入者」という）がマーケットシステム１０にアクセスしてから、ライブデモによる動作パラメータが保存されるまでの流れを示す。
【００５６】
まず、ＵＭＬシーケンス図について説明する。図４の紙面上方に並ぶ矩形は、それぞれが「オブジェクト」を示す。また紙面上方にオブジェクトと並ぶスティックマンは、外部に存在する要素を示す。各オブジェクトから紙面下方に伸びる破線は、各オブジェクトが生存していることを表す「ライフライン」であり、上方から下方に向かって時間が経過していることを示す。ライフラインに重なる帯状の細長い矩形は、上方でライフラインにつながるオブジェクトが活動している期間である「活性期間」を示す。
【００５７】
各ライフラインの間を結ぶ紙面横向き方向に伸びる実線で黒三角形の矢印が付いたものは、根元の活性期間につながるオブジェクトから送信される「同期メッセージ」を示す。このメッセージを受信したオブジェクトが返す「応答メッセージ」は、折り返しの破線の矢印で表されている。また、同様の破線の矢印で上方にステレオタイプが記述されたものは、矢印の先端が指すオブジェクトが最初に受信する「生成メッセージ」を示す。
【００５８】
図４に示すように、購入者９０が「マーケット本体」オブジェクト１１０にアクセス（メッセージ２１１）すると（活性区間３１１）、「マーケット本体」オブジェクト１１０のバックエンドアプリが「ＵＩパネル」オブジェクト１２０を生成（メッセージ２１２）して、それをフロントエンドアプリに渡す（活性区間３２１）。また「マーケット本体」オブジェクト１１０のフロントエンドアプリが「ＵＩパネル」オブジェクト１２０を初期化して（メッセージ２１３）、さらにフロントエンドアプリが「商品ソフトウェア」オブジェクト１３０をインスタンス化（メッセージ２１４）する。これによりＵＩパネルと商品ソフトウェアが初期化される（活性区間３３１，３４１）。
【００５９】
その後、購入者９０が「ＵＩパネル」オブジェクト１２０を操作（メッセージ２２１）すると（活性区間３１２）、フロントエンドアプリが「ＵＩパネル」オブジェクト１２０から取り出した動作パラメータの引渡し（メッセージ２２２）を行い（活性区間３３２）、さらに「商品ソフトウェア」オブジェクト１３０に動作パラメータの設定（メッセージ２２３）を行う（活性区間３２２）。また、フロントエンドアプリが「商品ソフトウェア」オブジェクト１３０の活性区間３４２において設定された動作パラメータを自己呼出し３４３により即時反映させる。これにより、商品ソフトウェアには、ＵＩパネルの操作により変動した動作パラメータの値が直ちに反映されることから、前述したように、商品ソフトウェアのライブデモが可能になる。
【００６０】
そして、購入者９０が動作パラメータを保存（メッセージ２３１）する操作を行うと（活性区間３１３）、フロントエンドアプリは、「商品ソフトウェア」オブジェクト１３０に設定された動作パラメータを取得（メッセージ２３２）して（活性区間３４４）、バックエンドアプリに渡す（メッセージ２３３）。バックエンドアプリは動作パラメータを自己呼出し３２４によりデータベースサーバに保存する（活性区間３２３）。なお、「ＵＩパネル」オブジェクト１２０および「商品ソフトウェア」オブジェクト１３０は、その後、停止する（図４に示す×印）。
【００６１】
このようにして、動作パラメータがデータベースサーバ２９に保存されると、前述したダウンロード準備処理およびダウンロード処理により商品ソフトウェアに生パラメータ(F)が埋め込まれる。ここで、動作パラメータの埋め込みの例として図５を参照して説明する。図５(A)には、埋め込まれる動作パラメータの設定例、図５(B)には、ダウンロードされるアーカイブに含まれるファイルへの埋め込みの例、がそれぞれ図示されている。
【００６２】
図５(A)に示すように、データベースサーバ２９にリレーショナル形式で保存された設定情報(R)が、フロントエンド形式の生パラメータ(F)に変換されて、図５(B)に示す一点鎖線の枠内にＪＳＯＮ（JavaScript Object Notation）で記述される。
【００６３】
即ち、(1) キー"minCount"      →  値3、
(2) キー"duration"      →  値3500、
(3) キー"interval"      →  値10000、
(4) キー"array.0:test0" →  値"string1"、
(5) キー"array.0:img"   →  値"img/image1.png"、
(6) キー"array.0:color" →  値"#FF0000"、
(7) キー"array.1:test0" →  値"string2"、
(8) キー"array.1:img"   →  値"img/image2.png"、
(9) キー"array.1:color" →  値"#00FF00"、
(10) キー"array.2:test0" →  値"string3"、
(11) キー"array.2:img"   →  値"img/image3.png"、
(12) キー"array.2:color" →  値"#0000FF"、
が、ＪＳＯＮで、
【００６４】
$('#vertical-scroller').verticalScroller({
"minCount": 3,                                  …  (1)'
"duration": 3500,                               …  (2)'
"interval": 10000,                              …  (3)'
"array": [{
"test0": "string1",                         …  (4)'
"img":   "img/image1.png",                  …  (5)'
"color": "#FF0000"                          …  (6)'
}, {
"test0": "string2",                         …  (7)'
"img":   "img/image2.png",                  …  (8)'
"color": "#00FF00"                          …  (9)'
}, {
"test0": "string3",                         …  (10)'
"img":   "img/image3.png",                  …  (11)'
"color": "#0000FF"                          …  (12)'
}]
});
に記述されて埋め込まれる。設定情報の(1)〜(12)は、ＪＳＯＮの(1)'〜(12)'にそれぞれ対応していることがわかる。
【００６５】
ここで、マーケットシステム１０のユースケース図について図６を参照して説明する。まず、ユースケース図について説明する。矩形はシステムの境界を表し、矩形内の楕円はユースケースを表す。またスティックマンはアクターを表す。また、実線は、アクターとユースケースの関係を表し、<<include>>が付記されている矢印付きの破線は、矢印の先端が指すユースケースが矢印の根元につながるユースケースの一部を構成することを表す。なお、このユースケース図においては、システムの使用機能の直感的な理解を優先させたため、一部においてＵＭＬの標準的な記述方法には従っていないことに注意されたい。
【００６６】
まず、製作者８０とマーケットシステム１０との関係について説明する。製作者８０が商品ソフトウェアをマーケットシステム１０で取り扱われ得るようにアプリケーションサーバ２５に登録（アップロード）するユースケースとして、「商品をアップロードする」ユースケース３３-1は、マーケットブラウザ３３においてアプリケーションサーバ２５の「商品ファイル類を保存する」ユースケース２５-1と、アプリケーションサーバ２５の「定義情報を生成する」ユースケース２５-2とを含む。「商品ファイル類を保存する」ユースケース２５-1はファイルシステム２７に関与し、また「定義情報を生成する」ユースケース２５-2はデータベースサーバ２９に関与する。これらの関係については、定義情報生成処理のロバストネス図（図７）を参照して後述する。
【００６７】
次に購入者９０とマーケットシステム１０との関係について説明する。購入者９０がマーケットブラウザ３３を操作してディスプレィに表示される商品ソフトウェアの一覧から、興味のある商品ソフトウェアを選択する場合のユースケースとして、「ライブデモを操作する」ユースケース３３-2は、マーケットブラウザ３３の「ライブデモを初期化する」ユースケース３３-3を含む。また、この「ライブデモを初期化する」ユースケース３３-3」は、アプリケーションサーバ２５の「ＵＩパネルを生成する」ユースケース２５-3と、マーケットブラウザ３３の「ＵＩパネルを初期化する」ユースケース３３-4とを含む。「ＵＩパネルを生成する」ユースケース２５-3は、ファイルシステム２７とデータベースサーバ２９の双方に関与する。これらの関係については、ＵＩパネル生成準備処理およびＵＩパネル生成処理に関するロバストネス図等（図８〜図１１）や、ＵＩパネル初期化準備処理およびＵＩパネル初期化準備処理に関するロバストネス図等（図１２，図１３）を参照して後述する。
【００６８】
購入者９０がマーケットブラウザ３３のディスプレィに表示されるＵＩパネルを操作して商品ソフトウェアの動作パラメータを変更する場合のユースケースとして、「ライブデモを操作する」ユースケース３３-2は、マーケットブラウザ３３の「パラメータを変更する」ユースケース３３-5を含む。
【００６９】
また、購入者９０がＵＩパネルを操作して変更した動作パラメータを保存する場合のユースケースとして、「ライブデモを操作する」ユースケース３３-2は、アプリケーションサーバ２５の「パラメータを保存する」ユースケース２５-4を含む。この「パラメータを保存する」ユースケース２５-4はデータベースサーバ２９に関与する。これらの関係については、パラメータ保存処理に関するロバストネス図（図１４）を参照して後述する。
【００７０】
さらに、購入者９０がＵＩパネルを操作して動作パラメータを保存した商品ソフトウェアをダウンロードする場合のユースケースとして、アプリケーションサーバ２５の「ダウンロードする」ユースケース２５-5がある。この「ダウンロードする」ユースケース２５-5は、ファイルシステム２７とデータベースサーバ２９の双方に関与する。これらの関係については、ダウンロード準備処理およびダウンロード処理に関するロバストネス図等（図１５，図１６）を参照して後述する。
【００７１】
また、購入者９０がＵＩパネルを操作して商品ソフトウェアをダウンロードする際に、代金の支払い等に関して決済する場合のユースケースとしては、「決済する」ユースケース３３-6が決済システム４０に関与する。これらの関係については、決済をする際に行われるオブジェクト間の連携例を示すシーケンス図(図１７）や、ライセンスキーを含めたダウンロード準備処理およびそのダウンロード処理に関するロバストネス図(図１８）を参照して後述する。
【００７２】
続いて、図７に示すロバストネス図を参照して定義情報生成処理について説明する。まず、ロバストネス図について説明する。スティックマンはアクターを表し、また丸印の左側に├が付いた記号は、バウンダリ要素を表す。バウンダリは、アクターが相互作用する画面やシステムインタフェース等のソフトウェア要素を示す。丸印の下側に＿が付く記号は、エンティティ要素を表す。エンティティ要素は一般的に概念モデルに含まれるエンティティ型を示す。回転方向を示すような矢印が付いた記号は、コントロール要素を表す。コントロール要素は、バウンダリ要素とエンティティ要素とを繋ぐ役割を持ち、一般的には処理を示す。矢印付きの実線は、矢印の根元につながる記号が矢印の先端が指す記号を生成することを表す。また、矢印付きの破線は、矢印の根元につながる記号が矢印の先端が指す記号を利用することを表す。なお、このロバストネス図においても、ユースケースの記述内容の直感的な理解を優先させたため、一部においてＵＭＬの標準的な記述方法には従っていないことに注意されたい。
【００７３】
図７に示すように、製作者８０が商品ソフトウェアをマーケットシステム１０で取り扱われ得るようにアプリケーションサーバ２５にアップロードするユースケースでは、製作者８０がマーケットブラウザ３３の「アップロード画面」（バウンダリ）３３ａを介して商品ソフトウェアのアップロードを要求すると、アプリケーションサーバ２５では、商品ファイル類保存処理（コントロール）２５ａと定義情報生成処理（コントロール）２５ｂが生成される。商品ファイル類保存処理（コントロール）２５ａは、ファイルシステム２７において商品ソフトウェアのファイル一式（商品ファイル類）を商品アーカイブ（エンティティ）２７ａとしてファイルシステム２７に保存する。
【００７４】
一方、定義情報生成処理（コントロール）２５ｂは、アップロードされた商品ソフトウェアに埋め込まれた生パラメータ(F)を解析する。生パラメータ(F)は、前述したように、スクリプト言語のソースコードで記述されていることから、例えば、テキストデータからパラメータを示す特定の文字情報を検索することにより解析が行われる。解析された生パラメータ(F)は、ファイルシステム２７において生パラメータ(F)（エンティティ）２７ｄとして保存され、またこの生パラメータ（F)から定義情報（R)（エンティティ）２９ａを生成してデータベースサーバ２９に保存する。
【００７５】
この定義情報生成処理の目的は、ＵＩパネルの自動生成のための前準備として、定義情報（R)を生成してデータベースサーバ２９に保存することである。定義情報(R)は、前述したように、各パラメータのデータ型や取り得る範囲等を保持する情報である。そのため、定義情報(R)の生成をしなければ、次に説明するように、ＵＩパネルを自動生成することができない。各パラメータの取り得る範囲は、スクリプト言語のソースコードに記述されている場合にはそれに従う。また、ソースコードに記述されていない場合には、例えば、データ型が整数である場合、最小値は「０」、最大値は初期値（デフォルト値）の１０倍、設定間隔は「１」、というように予め決められたルールに従ってデータの取り得る範囲を設定する（図３参照）。なお、最小値、最大値や設定間隔等のルールは、ソースコードに記述された初期値（デフォルト値）の大きさやデータ型等に応じて自動的に変更したり設定したりするように構成しても良い。この処理でデータベースサーバ２９に保存される定義情報(R)は、ＵＩパネル生成準備処理およびＵＩパネル初期化準備処理の入力データとして使用される。
【００７６】
なお、この定義情報生成処理（コントロール）２５ｂの入力データは、商品ソフトウェアにスクリプト言語で記述された生パラメータ(F)であり、通常、これにはデフォルト値が記載されている。定義情報生成処理の出力データは、定義情報(R)でありデータベースサーバ２９（サーバ装置２１のハードディスクドライブ）に保存される。この定義情報生成処理（コントロール）２５ｂによって、データ形式相互変換ライブラリによりデータ変換される変換フローは、生パラメータ(F)→生パラメータ(B)→定義情報(B)→定義情報(R)である（図２参照）。
【００７７】
次に図８〜１１に示すロバストネス図等を参照してＵＩパネル生成準備処理およびＵＩパネル生成処理について説明する。図８には、ＵＩパネル生成準備処理およびＵＩパネル生成処理に関するロバストネス図が図示されている。図９には、定義情報(B)と設定情報(B)の対応関係を示す説明図が図示されている。図１０には、ＵＩパネル生成処理の処理の流れを示すフローチャートが図示されている。図１１には、図１０に示すコントロールの配列生成処理の流れを示すフローチャートが図示されている。
【００７８】
図８に示すように、購入者９０が商品ソフトウェアを選択する場合のユースケースでは、購入者９０がマーケットブラウザ３３の「ライブデモ画面」（バウンダリ）３３ｂを介して商品ソフトウェアを選択すると、アプリケーションサーバ２５では、ＵＩパネル生成準備処理（コントロール）２５ｃが生成される。ＵＩパネル生成準備処理（コントロール）２５ｃは、データベースサーバ２９に保存された定義情報(R)（エンティティ）２９ｄと商品ソフトウェアに埋め込まれた生パラメータ(F)（エンティティ）２７ｄとから、ＵＩパネルの生成に必要なデータ（定義情報(B)および設定情報(B)）を生成する。この処理の目的は、ＵＩパネルを自動生成するために使用するデータを生成してアプリケーションサーバ２５にロードすることである。ＵＩパネル生成処理は、バックエンドアプリ（マーケット本体）であるため、定義情報(B)および設定情報(B)はいずれもバックエンド形式で生成される。
【００７９】
このＵＩパネル生成準備処理（コントロール）２５ｃの入力データは、先の定義情報生成処理（コントロール）２５ｂによってデータベースサーバ２９に保存された定義情報(R)であり、これを入力としてＵＩパネル生成準備処理（コントロール）２５ｃが定義情報(B)（エンティティ）２５ｄを生成する。ＵＩパネル生成準備処理（コントロール）２５ｃでは、設定情報(B)（エンティティ）２５ｅも生成する。この生成には２つのパターンがある。
【００８０】
一方のパターン（Ａパターン）は、ライブデモの初期値として特に指定されることのない場合で、その場合には、商品ソフトウェアに最初から生パラメータ(F)として埋め込まれているデフォルト値を入力データとして使用して設定情報(B)（エンティティ）２５ｅを生成する。これに対して、ライブデモの初期値として、パラメータ保存処理で保存された動作パラメータを用いる場合が、他方のパターン（Ｂパターン）であり、この場合には、データベースサーバ２９に保存された設定情報(R)を使用して設定情報(B)（エンティティ）２５ｅを生成する。
【００８１】
なお、このＵＩパネル生成準備処理（コントロール）２５ｃによって、データ形式相互変換ライブラリによりデータ変換される変換フローは、Ａパターンでは、定義情報(R)→定義情報(B)と、生パラメータ(F)→生パラメータ(B)→設定情報(B)、であり、また、Ｂパターンでは、定義情報(R)→定義情報(B)と、設定情報(R)→設定情報(B)、である（図２参照）。
【００８２】
ここで、ＵＩパネル生成準備処理（コントロール）２５ｃにより生成される、定義情報(B)（エンティティ）２５ｄと設定情報(B)（エンティティ）２５ｅの対応関係を図９に例示する。この対応関係は、「定義情報．キー ＝＝ 設定情報．定義情報キー」を条件、即ち定義情報のキーと設定情報の定義情報キー（設定情報には「定義情報キー」カラムがある）とが等しい場合の対応関係である。
【００８３】
先に説明した図３(A)に示す生パラメータの例（JavaScriptで記述されたソースコード）を生パラメータ(F)として埋め込まれているデフォルト値であると仮定した場合、図９に示す設定情報(B)の例は、パラメータ保存処理で保存された動作パラメータを用いる場合のＢパターンに相当する。図９に示す設定情報(B)は、動作パラメータの埋め込みの例として図５で参照した各パラメータに対応するからである。
【００８４】
なお、図９に示す例では、キーとして配列（array0,array1,array2）が定義されているため、それに対応した各値が設定されている。定義情報には、配列であるか否かを示すカラムが存在し、その情報により配列の有無を判断している。例えば、配列もまたキーのネストもない場合には「key」と表し、配列（キーのネストなし）の場合には「key.0」のように表現することで、配列の有無を明示する。また、キーのネストがある場合には「key:key」のように表現し、親キーが配列であるキーのネストは「key.0:key」のように表現する。また、子キーが配列であるキーのネストは「key:key.0」と、さらに親キー、子キーのいずれも配列であるキーのネストは「key.0:key.0」というように表現する。これにより、配列とキーのネストとの関係を明示することが可能になる。
【００８５】
なお、デフォルト値の生パラメータ(F)から生成した場合、つまりＡパターンの場合には、設定情報(B)は、以下のように生成される。
【００８６】
キー      │      値
−−−−−−−−┼−−−−−−−−
array.0:test0 │  string0
array.0:img   │  img/test0.png
array.0:color │  #FF0000
array.1:test0 │  string1
array.1:img   │  img/test1.png
array.1:color │  #00FF00
【００８７】
図８に戻ると、アプリケーションサーバ２５では、ＵＩパネル生成処理（コントロール）２５ｆも生成されていることがわかる。ＵＩパネル生成処理（コントロール）２５ｆでは、ＵＩパネル生成準備処理（コントロール）２５ｃにより生成された定義情報(B)および設定情報(B)を使用してＵＩパネルを生成しＵＩパネルをマーケットブラウザ３３に渡す。これにより、マーケットブラウザ３３では購入者９０がＵＩパネルの操作が可能になる。
【００８８】
ＵＩパネル生成処理（コントロール）２５ｆについては、図１０および図１１にフローチャートが表されているので、ここからはこれらの図を参照して説明する。
【００８９】
図１０に示すように、ＵＩパネル生成処理では、ステップＳ１０１（始端）およびステップＳ１０９（終端）をループ端とする繰り返し処理がすべてのレコード（Ｘ）について終了するまで行われる。即ち、設定情報の各レコード（Ｘ）に対して、ステップＳ１０３によりレコード（Ｘ）が配列であるか否かを判断し、レコード（Ｘ）が配列である場合には（Ｓ１０３；Ｙｅｓ）、ステップＳ２００によるコントロールの配列生成処理が行われる。この配列を判断する処理では、前述したように、定義情報の所定のカラムを参照することによって配列であるか否かの判断を行っている。
【００９０】
レコード（Ｘ）が配列でない場合には（Ｓ１０３；Ｎｏ）、次のステップＳ１０５によりレコード（Ｘ）のデータ型を判断する。データ型は、図９に示すように、定義情報(B)に明示されているため、それを参照して判断する。例えば、データ型がブーリアンである場合（Ｓ１０５；Boolean）、ステップＳ１０７ａに処理を移行してチェックボックス生成処理を行う。また、データ型が整数または浮動小数点である場合（Ｓ１０５；Integer/Float）、ステップＳ１０７ｂに処理を移行してスライダー生成処理を行う。また、データ型が選択である場合（Ｓ１０５；Select）、ステップＳ１０７ｃに処理を移行してドロップダウンリスト生成処理を行う。また、データ型が文字列である場合（Ｓ１０５；Text）、ステップＳ１０７ｄに処理を移行してテキストフィールド生成処理を行う。また、データ型が色である場合（Ｓ１０５；Color）、ステップＳ１０７ｅに処理を移行してカラーピッカー生成処理を行う。また、データ型が画像である場合（Ｓ１０５；Image）、ステップＳ１０７ｆに処理を移行して画像選択生成処理を行う。
【００９１】
そして、ステップＳ１０９によってすべてのレコード（Ｘ）について終了したと判断された場合には、ループを離脱して一連のＵＩパネル生成処理を終了する。これに対して、まだ終了したと判断されない場合には、再度、ステップＳ１０１に戻って各処理が行われる。
【００９２】
続いて図１１を参照してコントロールの配列生成処理について説明する。設定情報の各レコード（Ｘ）に配列が含まれている場合には、配列の各要素について、図１０に示すステップＳ１０５で判断したようにデータ型に応じたＵＩパネルの生成処理を行う必要がある。そのため、図１０と図１１を比較するとわかるように、コントロールの配列生成処理は、ステップＳ２０３の判断処理を除いて、メインルーチンのＵＩパネル生成処理を構成する処理ステップとほぼ同様に構成される。
【００９３】
即ち、図１１に示すステップＳ２０５は、図１０に示すＳ１０５と同様であり、図１１に示すステップＳ２０７ａ〜２０７ｆは、図１０に示すＳ１０７ａ〜１０７ｆと同様である。またループ端の判断条件についても、図１１に示すステップＳ２０１，Ｓ２０９は、図１０に示すステップＳ１０１，Ｓ１０９と同じである。したがって、ステップＳ２０１，Ｓ２０５，Ｓ２０７ａ〜２０７ｆ，Ｓ２０９による各処理の内容については説明を省略し、ステップＳ２０３による判断条件に関して説明する。
【００９４】
ステップＳ２０３による判断条件は、「Ｘ．キー ＝＝ Ｙ．定義情報キー」である。即ち、ＸのキーとＹの定義情報キー（設定情報には「定義情報キー」カラムがある）とが等しいか否かを判断している。ＸのキーとＹの定義情報キーとが等しい場合には（Ｓ２０３；Ｙｅｓ）、ステップＳ２０５によるデータ型の判断処理に移行し、等しくない場合には（Ｓ２０３；Ｎｏ）、ステップＳ２０９に移行してループ端（終端）によるループの離脱可否の判断が行われる。設定情報のすべてのレコード（Ｘ）について処理が終わると、ループを離脱してメインルーチンのＵＩパネル生成処理に戻る（リターン）。
【００９５】
このようなＵＩパネル生成処理が行われることによって、定義情報(B)や設定情報(B)に基づく、チェックボックス、スライダー、ドロップダウンリスト、テキストフィールド、カラーピッカーや画像等の画面コンポーネントを備えたＵＩパネルが生成される。
【００９６】
次に図１２，図１３に示すロバストネス図等を参照してＵＩパネル初期化準備処理およびＵＩパネル初期化処理について説明する。図１２にはＵＩパネル初期化準備処理およびＵＩパネル初期化処理のロバストネス図が図示されている。また、図１３には、ＵＩパネル初期化処理の流れを示すフローチャートが図示されている。
【００９７】
ＵＩパネル生成処理によりＵＩパネルが生成されると、次にＵＩパネル初期化準備処理およびＵＩパネル初期化処理によってＵＩパネルの初期化が行われる。なお、マーケットブラウザ３３の「ライブデモ画面」からＵＩパネルの初期化を行うことができ、ライブデモの初期値として、デフォルト値または保存した動作パラメータの設定値を選択することができる。
【００９８】
図１２に示すように、ＵＩパネルの生成に続いてＵＩパネルの初期化に移行すると、アプリケーションサーバ２５では、ＵＩパネル初期化準備処理（コントロール）２５ｇが生成される。ＵＩパネル初期化準備処理（コントロール）２５ｇは、データベースサーバ２９に保存された定義情報(R)から定義情報(F)を生成する。この定義情報(R)は、定義情報生成処理により生成されてデータベースサーバ２９に保存されたものである。この処理の目的は、ＵＩパネルを初期化するために使用するデータ（定義情報(F)および設定情報(F)）を生成してアプリケーションサーバ２５にロードすることである。ＵＩパネル初期化処理は、フロントエンドアプリ（ウェブブラウザ）であるため、生成される定義情報(F)および設定情報(F)はフロントエンド形式を採る。
【００９９】
このようにＵＩパネル初期化準備処理（コントロール）２５ｇでは設定情報(F)も生成するが、これの生成には２つのパターンがある。ＵＩパネル生成準備処理の場合と同様に、ライブデモの初期値として特に指定されることのないＡパターンと、ライブデモの初期値として、パラメータ保存処理で保存された動作パラメータを用いるＢパターンである。Ａパターンの場合、商品ソフトウェアに最初から生パラメータ(F)として埋め込まれているデフォルト値を入力データとして使用する。また、Ｂパターンの場合には、データベースサーバ２９に保存された設定情報(R)を使用する。
【０１００】
なお、このＵＩパネル初期化準備処理（コントロール）２５ｇによって、データ形式相互変換ライブラリによりデータ変換される変換フローは、Ａパターンでは、定義情報(R)→定義情報(B)→定義情報(F)と、生パラメータ(F)→生パラメータ(B)→設定情報(B)→設定情報(F)、であり、また、Ｂパターンでは、定義情報(R)→定義情報(B)→定義情報(F)と、設定情報(R)→設定情報(B)→設定情報(F)である（図２参照）。
【０１０１】
ＵＩパネル初期化準備処理（コントロール）２５ｇによって定義情報(F)および設定情報(F)が生成されてマーケットブラウザ３３に渡されると、マーケットブラウザ３３では、マーケットブラウザ３３から渡された定義情報(F)（エンティティ）３３ｄおよび設定情報(F)（エンティティ）３３ｅを使用してＵＩパネル初期化処理（コントロール）３３ｆがＵＩパネル（バウンダリ）３３ｃを初期化する。なお、ＵＩパネルの初期化、つまりＵＩパネル初期化処理の起動は、マーケットブラウザ３３によりディスプレィ画面に表示される起動ボタンの押下をトリガーに開始するように構成しても良い。ＵＩパネル初期化処理（コントロール）３３ｆについては、図１３にフローチャートが表されている。
【０１０２】
図１３に示すように、ＵＩパネル初期化処理では、ステップＳ３０１（始端）およびステップＳ３０９（終端）をループ端とする繰り返し処理がすべてのレコード（Ｙ）について終了するまで行われる。即ち、設定情報の各レコード（Ｙ）に対して、ステップＳ３０３により、Ｘ．キーとＹ．定義情報キーとが等しい（Ｘ．キー ＝＝ Ｙ．定義情報キーを満たす）場合、その定義情報をＸに設定する処理を行う。
【０１０３】
次のステップＳ３０５によりレコード（Ｘ）のデータ型を判断する。データ型は、定義情報(F)に明示されているため、それを参照して判断する。例えば、データ型がブーリアンである場合（Ｓ３０５；Boolean）、ステップＳ３０７ａに処理を移行してチェックボックスの値（チェックボックス．値）に設定情報のレコードＹの値（Ｙ．値）を入れてチェックボックスを設定する。また、データ型が整数または浮動小数点である場合（Ｓ３０５；Integer/Float）、ステップＳ３０７ｂに処理を移行してスライダーの値（スライダー．値）に設定情報のレコードＹの値（Ｙ．値）を入れてスライダーを設定する。また、データ型が選択である場合（Ｓ３０５；Select）、ステップＳ３０７ｃに処理を移行してドロップダウンリストの値（ドロップダウンリスト．値）に設定情報のレコードＹの値（Ｙ．値）を入れてドロップダウンリストを設定する。また、データ型が文字列である場合（Ｓ３０５；Text）、ステップＳ３０７ｄに処理を移行してテキストフィールドの値（テキストフィールド．値）に設定情報のレコードＹの値（Ｙ．値）を入れてテキストフィールドを設定する。また、データ型が色である場合（Ｓ３０５；Color）、ステップＳ３０７ｅに処理を移行してカラーピッカーの値（カラーピッカー．値）に設定情報のレコードＹの値（Ｙ．値）を入れてカラーピッカーを設定する。また、データ型が画像である場合（Ｓ３０５；Image）、ステップＳ３０７ｆに処理を移行して画像選択の値（画像選択．値）に設定情報のレコードＹの値（Ｙ．値）を入れて画像選択を設定する。
【０１０４】
そして、ステップＳ３０９によりすべてのレコード（Ｙ）について終了したと判断された場合には、ループを離脱した後、ステップＳ３１１によって、設定値に変更がある旨を商品ソフトウェアに通知して一連のＵＩパネル初期化処理を終了する。この通知は、例えば、JavaScriptの場合、前述したsetOptions関数を用いる。これに対し、まだ終了したと判断されない場合には、再度、ステップＳ３０１に戻って各処理が行われる。
【０１０５】
このようなＵＩパネル初期化処理が行われることによって、定義情報(F)や設定情報(F)に基づいて初期化されたＵＩパネルがマーケットブラウザ３３（ディスプレィ画面の特定領域）に表示される（図１９(B)に示す破線枠内を参照）。
【０１０６】
次に図１４に示すロバストネス図を参照してパラメータ保存処理について説明する。図１４には、パラメータ保存処理に関するロバストネス図が図示されている。
【０１０７】
図１４に示すように、購入者９０がＵＩパネルを操作して変更した動作パラメータを保存する場合のユースケースでは、購入者９０がマーケットブラウザ３３の「ライブデモ画面」（バウンダリ）３３ｂを介してパラメータの保存を選択すると、アプリケーションサーバ２５では、パラメータ保存処理（コントロール）２５ｈが生成される。ライブデモによってディスプレィに表示される商品ソフトウェアの動作状態等を見ながら利用者（購入者）がＵＩパネルを操作して変更した動作パラメータの値を取り出してデータベースサーバ２９に保存することが、この処理の目的である。保存された動作パラメータ（設定情報(R)）は、商品ソフトウェアをダウンロードする際や、前述したように、ＵＩパネルを生成する際やＵＩパネルを初期化する際に、使用される。
【０１０８】
パラメータ保存処理（コントロール）２５ｈは、パラメータ取得処理（コントロール）３３ｈがマーケットブラウザ３３に保存した生パラメータ(F)を読み出し、その生パラメータ(F)から設定情報(R)を生成してデータベースサーバ２９に保存する。パラメータ取得処理（コントロール）３３ｈは、ＵＩパネルの操作により動作パラメータの値が変更される都度（または所定時間ごと）に商品ソフトウェアから動作パラメータ（の値）を取得してその動作パラメータ（の値）を端末装置３１のハードディスクドライブに保存している。データベースサーバ２９に保存された設定情報(R)は、前述したＵＩパネル生成準備処理やＵＩパネル初期化準備処理、また次に説明するダウンロード準備処理に使用される。このパラメータ保存処理（コントロール）２５ｈによって、データ形式相互変換ライブラリによりデータ変換される変換フローは、生パラメータ(F)→生パラメータ(B)→設定情報(B)→設定情報(R)である（図２参照）。
【０１０９】
次に図１５，図１６に示すロバストネス図等を参照してダウンロード準備処理およびダウンロード処理について説明する。図１５には、ダウンロード準備処理およびダウンロード処理に関するロバストネス図が図示されており、また図１６には、ダウンロード処理の流れを示すフローチャートが図示されている。
【０１１０】
図１５に示すように、購入者９０が保存した動作パラメータを設定して商品ソフトウェアを購入する場合のユースケースでは、購入者９０がマーケットブラウザ３３の「ダウンロード画面」（バウンダリ）３３ｊを介してダウンロードを選択すると、アプリケーションサーバ２５では、ダウンロード準備処理（コントロール）２５ｉが生成される。データベースサーバ２９に保存した動作パラメータを商品ソフトウェアに設定すること、つまりダウンロードするアーカイブに動作パラメータを埋め込むためデータベースサーバ２９に保存された設定情報(R)（エンティティ）２９ｂから生パラメータ(F)を生成することが、この処理の目的である。生パラメータ(F)を生成する過程において、動作パラメータのデータ型に関する情報を得る必要上、定義情報(R)（エンティティ）２９ａも補助的に使用（参照）する。なお、「アーカイブに動作パラメータを埋め込む」とは、ダウンロードされるアーカイブに商品ソフトウェアとともに、動作パラメータをソフトウェア的に同梱（例えば、ZIPファイルフォーマットで圧縮処理されること）することをいう。
【０１１１】
このため、このダウンロード準備処理（コントロール）２５ｉによって、データ形式相互変換ライブラリによりデータ変換される変換フローは、設定情報(R)→設定情報(B)→生パラメータ(B)→生パラメータ(F)であり（図２参照）、生パラメータ(B)を生成する際に定義情報(R)から変換した定義情報(B)を参照する。これにより、生成された生パラメータ(F)（エンティティ）２７ｄは、ファイルシステム２７に保存されて、ダウンロード処理（コントロール）２５ｊが商品アーカイブを生成する際に使用する。
【０１１２】
このように生パラメータ(F)（エンティティ）２７ｄが生成されると、アプリケーションサーバ２５では、ダウンロード処理（コントロール）２５ｊが生成されて、生パラメータ(F)が商品アーカイブに埋め込まれる。また、ダウンロード処理（コントロール）２５ｊは、商品ファイル類保存処理（コントロール）２５ａによりファイルシステム２７に保存された商品アーカイブ（エンティティ）２７ａを使用して、商品アーカイブ（エンティティ）２７ａのダウンロードを行う。このダウンロード処理（コントロール）２５ｊについては、図１６にフローチャートが表されているので、商品アーカイブのダウンロードについて図１６を参照して説明する。
【０１１３】
図１６に示すように、ダウンロード処理では、ステップＳ５０１によりフォルダ構造を作成する処理が行われる。この処理では、例えば、商品ソフトウェアの識別記号、購入者の識別記号や購入年月日の組み合わせにより生成されるフォルダ名を付与したフォルダや、所定の階層構造を持つフォルダ等を生成する。フォルダが作成されると、次にステップＳ５０３により、商品ファイルを複製する処理が行われる。商品ソフトウェアのファイル一式（商品ファイル類）、即ち、商品ソフトウェア２７ｂと、当該商品ソフトウェアの各種設定データである設定ファイル２７ｃとを、複製して商品ファイル類としてステップＳ５０１により作成したフォルダに格納する。
【０１１４】
続くステップＳ５０５では、複製した商品ソフトウェアに生パラメータ(F)を埋め込む処理が行われる。生パラメータ(F)の埋め込みは、商品ソフトウェアを呼び出す際の引数を書き換えることにより行われる。例えば、ＨＴＭＬファイルからJavaScriptを呼び出す場合には、ＨＴＭＬファイルの呼び出し部に記載された引数をこのステップにより書き換える。商品ソフトウェアの内部では、デフォルトのパラメータよりも引数で与えられたパラメータを優先して使用するように処理している。生パラメータ(F)が埋め込まれると、ステップＳ５０７によりフォルダ全体をアーカイブする処理が行われる。つまり、商品ソフトウェアのファイル一式（商品ファイル類）を、例えば、ZIPファイルフォーマットでソフトウェア的に圧縮してこれらを１つのファイルにまとめる（同梱する）。なお、このような圧縮処理の前に、JavaScriptで記述されたソースコードの可読性を極度に低下させる難読化処理を行う。これにより、不正コピー等を妨げることが可能になる。
【０１１５】
最後に、ステップＳ５０９によって、ステップＳ５０５により生成されたアーカイブファイルをアプリケーションサーバ２５に送出する。これにより、端末装置３１では、ダウンロードアーカイブ３３ｋが端末装置３１のハードディスクドライブに保存されてダウンロードを終了する。つまり、商品ソフトウェアの購入手続が完了する。なお、購入者は、端末装置３１においてダウンロードアーカイブ３３ｋをソフトウェア的に解凍（展開）することにより、商品ソフトウェアを使用することが可能になる。
【０１１６】
次に図１７，図１８に示すロバストネス図等を参照して決済処理について説明する。図１７には、マーケットシステム１０において決済をする際に行われるオブジェクト間の連携例を示すシーケンス図が図示されている。また、図１８には、ライセンスキーを含めたダウンロード準備処理およびそのダウンロード処理に関するロバストネス図が図示されている。
【０１１７】
本マーケットシステム１０は、インターネット等の公衆ネットワークを通じて商品ソフトウェアを提供するものであるが、商品ソフトウェアは、例えば、JavaScript等のスクリプト言語で実装される。スクリプト言語は、通常、インタプリティブであり、コンパイラ等でオブジェクトコードに変換する必要がない。そのため、本マーケットシステム１０で提供される商品ソフトウェアでは、生パラメータ(F)が埋め込まれたものであってもソースコードがそのまま記述されているため、正規の購入手続を経ることなく入手した場合にもそれを使用することが可能である。
【０１１８】
このため、本マーケットシステム１０の改変例として、商品ソフトウェアの購入手続においてライセンスステートメントを発行し、このライセンスステートメントに対応して生成されるライセンスキーを、購入者が商品アーカイブをダウンロードする際に発行して、両者が符合しなければ商品ソフトウェアが動作しない構成のマーケットシステムを図１７および図１８を参照して説明する。図１７には、マーケットシステム（オブジェクト１００）において決済をする際に行われるオブジェクト間の連携例を示すＵＭＬシーケンス図が図示されている。また図１８には、マーケットシステム１００による、ライセンスチェック機能付きのダウンロード準備処理およびそのダウンロード処理に関するロバストネス図が図示されている。
【０１１９】
図１７に示すように、マーケットシステム（オブジェクト１００）において決済をする際に行われるオブジェクト間の連携例について説明する。このＵＭＬシーケンス図は、商品ソフトウェアを購入するため代金の支払いをクレジット決済する購入者がマーケットシステム１００にアクセスしてから、商品アーカイブのダウンロード画面がディスプレィに表示されるまでの流れを示す。
【０１２０】
図１７に示すように、購入者９０が「マーケットシステム」オブジェクト１００に支払いを要求（メッセージ２５１）すると（活性区間３５１）、「マーケットシステム」オブジェクト１００のバックエンドアプリが自己呼出し３６１ａによりライセンスステートメントを保存する（活性区間３６１）。ライセンスステートメントは、例えば、マーケットブラウザ３３による商品ソフトウェアの購入画面において、任意の文字列入力を受け付けるテキストボックスを表示して購入者による文字入力を許容する。例えば、購入者名の前に「Licensed to」の文字列を付加したものをライセンスステートメントにしても良い。
【０１２１】
ライセンスステートメントを保存すると、「マーケットシステム」オブジェクト１００は、決済システム４０に対して支払いを要求（メッセージ２５２）して決済システム４０から返されるトークン（メッセージ２５３）を待つ（活性区間３６１）。このトークンは、支払い要求に対して決済システム４０が確定処理（活性区間３７１）を行った結果（支払い要求の戻り値）を識別するためのものである。「マーケットシステム」オブジェクト１００は、トークン（メッセージ２５３）を受信すると、購入者９０に対して決済画面のＵＲＬ（メッセージ２５４）を送信する（活性区間３６１）。このＵＲＬに基づいて、マーケットブラウザ３３（購入者９０）では、インターネット上に存在する決済システム４０の決済画面をディスプレィに表示する（活性区間３５１）。
【０１２２】
購入者９０が決済システム４０の決済画面からクレジットカード番号等の決済情報を入力して決済（メッセージ２６１）すると（活性区間３５２）、それを受信した決済システム４０では購入者９０に対して決済情報を確認する確認画面のＵＲＬ（メッセージ２６２）を送信する（活性区間３７２）。このＵＲＬに基づいて、マーケットブラウザ３３（購入者９０）では、インターネット上に存在する決済システム４０の確認画面をディスプレィに表示する（活性区間３５２）。
【０１２３】
購入者９０が決済システム４０の確認画面から支払いを確定（メッセージ２７１）すると（活性区間３５３）、それを受信したマーケットシステム１００では決済システム４０に対して支払い確定のトークン（メッセージ２７２）を決済システム４０に送信する（活性区間３６２）。このトークンを受信した決済システム４０では、マーケットシステム１００に対して支払い受付成否のメッセージ２７３を送信し（活性区間３７３）、それを受信したマーケットシステム１００は、商品アーカイブのダウンロード画面のＵＲＬ（メッセージ２７４）を購入者９０に送信する（活性区間３６２）。このＵＲＬに基づいて、マーケットブラウザ３３（購入者９０）では、インターネット上に存在するダウンロード画面をディスプレィに表示する（活性区間３５３）。
【０１２４】
このようにして、クレジット決済が完了して商品アーカイブファイルのダウンロードが可能になると、購入者９０は商品アーカイブを端末装置３１にダウンロードする。マーケットシステム１００では、商品アーカイブを端末装置３１にダウンロードするタイミングにおいて、ライセンスステートメントからライセンスキーを生成して発行する。例えば、予め準備された秘密鍵（１６進数８０桁）をαとすると、この秘密鍵αと、ライセンスステートメントを１６進数８０桁（空白箇所は０）にしたβと、の各ビットごとの排他的論理和をとってその結果をライセンスキーγにして、発行する。
【０１２５】
商品ソフトウェアは、その初期化時に、α、β、γの各ビットごとの排他的論理和をとった結果のすべてのビットが０（ゼロ）になることを条件にライセンスの正当性を判定（ライセンスの検証）する。即ち、ライセンスステートメントが書き換えられた場合やライセンスキーが異なる場合等、秘密鍵αとライセンスステートメントβとライセンスキーγのいずれか１つ以上が正当性を欠く場合には、当該商品ソフトウェアは動作することができない。これにより、商品ソフトウェアの代金（対価）の支払い決済が完了しない場合には、このようなライセンスキーγ（キー情報）が生成されないため、商品ソフトウェアの提供に対する代金（対価）の支払いをすることなく取得された商品ソフトウェアについてはその動作を禁止することが可能になる。したがって、カスタマイズにより得られた所望の動作をする商品ソフトウェアの不正取得を抑制することができる。
【０１２６】
このようなライセンスチェック機能付きのダウンロードに関するロバストネス図について説明する。なお、図１５に示すロバストネス図（マーケットシステム１０によるダウンロード処理等）と、実質的に同一の構成要素については、同一の符号を付してあるので、それらの説明を省略する。
【０１２７】
図１８に示すように、購入者９０がマーケットブラウザ３３の「ダウンロード画面」（バウンダリ）３３ｊを介してダウンロードを選択すると、アプリケーションサーバ２５では、ダウンロード準備処理（コントロール）２５ｋが生成される。ダウンロード準備処理（コントロール）２５ｋは、前述したマーケットシステム１０によるダウンロード準備処理（コントロール）２５ｉと同様に、データベースサーバ２９に保存された設定情報(R)（エンティティ）２９ｂから生パラメータ(F)２７ｄを生成する。
【０１２８】
また、前述したように、マーケットブラウザ３３では、商品ソフトウェアの購入画面にテキストボックスを表示してライセンスステートメントの入力を受け付ける。そのため、ダウンロード準備処理（コントロール）２５ｋでは、入力されたライセンスステートメントの文字列をフロントエンド形式のライセンスステートメント(F)（エンティティ）２７ｅとして保存するとともに、このライセンスステートメント２７ｅ：βと予め用意している秘密鍵：αとによってライセンスキー２７ｆ：γを生成（発行）する。ライセンスキー２７ｆは、例えば、フロントエンド形式でファイルシステム２７に保存される。なお、ライセンスステートメント(F)は、次回以降の購入画面の生成に使用するため、リレーショナル形式のライセンスステートメント(R)（エンティティ）２９ｃに変換されてデータベースサーバ２９に保存される。
【０１２９】
このように生パラメータ(F)２７ｄとライセンスキー２７ｆが生成されると、アプリケーションサーバ２５では、ダウンロード処理（コントロール）２５ｍが生成されて、生パラメータ(F)が商品アーカイブに埋め込まれる。また、ダウンロード処理（コントロール）２５ｍは、商品ファイル類保存処理（コントロール）２５ａによりファイルシステム２７に保存された商品アーカイブ（エンティティ）２７ａに加えて、ライセンスステートメント(R)（エンティティ）２９ｃとライセンスキー（エンティティ）２７ｆを使用して、商品アーカイブ（エンティティ）２７ａのダウンロードを行う。これにより、マーケットシステム１００からは、ライセンスステートメント２９ｃとライセンスキー２７ｆが設定された状態でダウンロードされる。
【０１３０】
ここで、端末装置３１に実装されるマーケットブラウザ３３の一例を図１９および図２０を参照して説明する。図１９および図２０には、マーケットブラウザ３３によるディスプレィ画面の表示例を示す説明図が図示されている。
【０１３１】
接続５０を介して端末装置３１をサーバ装置２１に接続すると、利用者は、図１９(A)に示すように、マーケットブラウザ３３によりアプリケーションサーバ２５のトップ画面を閲覧することができる。このトップ画面は、ｊＱｕｅｒｙ（JavaScriptのライブラリ）のプラグインソフトウェアを販売する「ｊＱｕｅｒｙのポータルサイト」の一例で、端末装置３１のディスプレィ画面の上方にサイト名が表示されている。なお、「プラグインソフトウェア」とは、アプリケーションソフトウェアの機能を拡張するために追加されるプログラムのことで、ここではｊＱｕｅｒｙライブラリの動作を拡張する機能を有する。また、画面中央には、「カテゴリー一覧」のタイトルバーを有する商品ソフトウェアの分類表示枠と、「検索」のタイトルバーを有する検索用のキーワード等を入力可能なテキストボックス等が表示されている。また、これらの下方には、新着Ｑｕｅｒｙや人気Ｑｕｅｒｙに関する、商品ソフトウェアの紹介とそのリンクが表示されている。
【０１３２】
例えば、トップ画面において、新着Ｑｕｅｒｙの「垂直スクローラー」をマウス等のポインティングデバイスで選択すると、図１９(B)に示すように、端末装置３１のディスプレィ画面が切り換わって、「垂直スクローラー」のライブデモ画面が表示される。この画面のほぼ中央において、一点鎖線で囲まれる表示範囲がライブデモ領域であり、また破線で囲まれる表示範囲がＵＩパネル領域である。ＵＩパネル領域に表示されるＵＩパネルは、前述したＵＩパネル生成準備処理およびＵＩパネル生成処理により生成され、ＵＩパネル初期化準備処理およびＵＩパネル初期化処理により表示内容が初期設定されている。
【０１３３】
例えば、ＵＩパネル領域の上段に表示される「操作盤」の項目中、minCountの値「２」、durationの値「３０００」、intervalの値「８０００」は、図３(A)に示す生パラメータや図３(B)に示す定義情報に対応した設定例である。これらの動作パラメータの値は、テキストボックスに直接、数値を入力したり、テキストボックスの紙面右側に表示されるスライダーの操作により数値を変更したりすることが可能に構成されている。ＵＩパネル領域の中段に表示される「panel」や同下段に表示される「window」の各項目についても同様に、テキストボックスまたはスライダーにより操作可能に構成されている。
【０１３４】
一点鎖線で囲まれる表示範囲のライブデモ領域では、ＵＩパネルに設定された動作パラメータの値に従って動作する商品ソフトウェアの動作状態が表示される。この「垂直スクローラー」の例では、枠内に表示される「Content1 This is a sample post!」、「Content2 This is a sample post!」、「Content3 This is a sample post!」 等の文字列が紙面上方向または下方向（垂直方向）に自動的に移動しており、ＵＩパネルを介して所定の動作パラメータの値を変更すると、スクロールの速さ、表示幅や背景色等が変化する。つまり、動作パラメータの値が変更されると、商品ソフトウェア「垂直スクローラー」に即時に反映されてその動作に伴う動作情報として、スクロールの速さ等が変化する。なお、これらの情報処理は、図６に示すユースケース図において、「ライブデモを操作する」ユースケース３３-2、「ライブデモを初期化する」ユースケース３３-3、「ＵＩパネルを初期化する」ユースケース３３-4、「パラメータを変更する」ユースケース３３-5、に対応するものである。
【０１３５】
図２０(A)には、購入画面の例が表示されている。購入画面は、例えば、ユーザ登録された利用者がログインした状態において、ライブデモ画面（図１９(B)）で「購入する」ボタンを押下（例えばマウスによるクリック操作）することにより移行する。この図２０(A)の例では、購入画面のほぼ中央にタイトルバー「新規購入してダウンロードします。」が表示され、商品ソフトウェアの値段、商品に埋め込むライセンスステートメントの入力テキストボックスおよび支払い手続を開始するための「購入する」ボタンが表示されている。この例では、文字列「○○○○○Inc.」がライセンスステートメントに入力されている。
【０１３６】
購入画面において「購入する」ボタンを押下すると、図２０(B)に示す支払い画面が表示される。この画面では支払い方法を選択する。この例では、電子メールのアカウントとパスワードを入力することで決済手続が可能なインターネット上の決済サービスを利用した支払い方法を選択している。クレジットカードにより決済手続を選択する場合には、その下方に表示される「クレジットカードで支払う」の部分をマウス等でクリックする。なお、これらの情報処理は、図６に示すユースケース図において「決済する」ユースケース３３-6に対応するものである。
【０１３７】
支払い手続が完了すると、図２０(C)に示すダウンロード画面が表示される。例えば、画面中央の「ダウンロードページへ」ボタンをマウス等でクリックすると、アーカイブファイルを保存するため、端末装置３１のダウンロード先を指定可能なテキストボックス等が表示され、ダウンロードの開始ボタンをクリックすることでダウンロードを開始する。なお、これらの情報処理は、図６に示すユースケース図において「ダウンロードする」ユースケース２５-5に対応するものである。
【０１３８】
以上説明したように、本実施形態に係るマーケットシステム１０，１００によると、サーバ装置２１は、アプリケーションサーバ２５（パラメータ解析部、ＵＩパネル生成部）とウェブサーバ２３（デモ環境提供部）を備えることで、パラメータ解析部により商品ソフトウェアの動作パラメータを解析し、ＵＩパネル生成部により、動作パラメータの解析情報に基づいて購入者９０が動作パラメータの値を任意に設定可能なＵＩパネルを生成し、デモ環境提供部により、ＵＩパネルおよび商品ソフトウェアが動作可能な所定環境を端末装置３１に提供するようにした。一方、端末装置３１は、マーケットブラウザ３３（ウェブブラウザ部）を備えることで、ウェブブラウザ部により、ウェブサーバ２３（デモ環境提供部）により提供された所定環境で商品ソフトウェアを動作可能にするとともに、ＵＩパネルを端末装置３１のディスプレィに表示して購入者９０によるＵＩパネルの操作入力を可能にするようにした。また、ウェブブラウザ部により、ＵＩパネルの操作入力により設定された動作パラメータの値に基づいて商品ソフトウェアを動作させこの動作に伴う動作情報を端末装置３１のディスプレィに表示するようにした。
【０１３９】
これにより、購入者９０は、端末装置３１のディスプレィに表示されるＵＩパネルを介して、商品ソフトウェアの動作パラメータを操作することが可能になる。また、ＵＩパネルの操作入力により任意に設定された動作パラメータの値に基づいて動作する商品ソフトウェアの動作情報が端末装置３１のディスプレィに表示される。そのため、購入者９０は、ＵＩパネルの操作入力により設定される動作パラメータの値に従った商品ソフトウェアの動作を端末装置３１のディスプレィの表示から把握することが可能になる。したがって、専門知識のない購入者９０でも、ＵＩパネルを介して動作パラメータを変化させることで、それに伴う商品ソフトウェアの動作を容易に確認することができる。また、専門知識を持たない購入者９０であっても容易にソフトウェアをカスタマイズすることができ、カスタマイズした場合の商品ソフトウェアの動作を容易に確認することができる。
【０１４０】
また、本実施形態に係るマーケットシステム１０，１００によると、サーバ装置２１は、アプリケーションサーバ２５（パラメータ組込部とソフトウェア転送部）を備えることで、購入者９０によるＵＩパネルの操作入力により設定されたパラメータの値を商品ソフトウェアの動作パラメータに組み込み、この動作パラメータが組み込まれた商品ソフトウェアのファイルを端末装置３１に転送する。そして、端末装置３１は、転送された商品ソフトウェアのファイルを保存するマーケットブラウザ３３（ファイル保存部）を備える。これにより、ＵＩパネルの操作入力により設定された動作パラメータの値が組み込まれた商品ソフトウェアは、サーバ装置２１から端末装置３１に転送されてそのファイルが端末装置３１のマーケットブラウザ３３（ファイル保存部）に保存される。そのため、専門知識のない購入者９０でも、ＵＩパネルを介して動作パラメータを変化させてカスタマイズした商品ソフトウェアを容易に入手することが可能になる。したがって、専門知識を持たない購入者９０であっても、このようなカスタマイズにより得られた所望の動作をする商品ソフトウェアを迅速かつ廉価に入手することができる。
【０１４１】
さらに、本実施形態に係るマーケットシステム１００によると、サーバ装置２１は、商品ソフトウェアの提供に対する代金の支払い決済が完了した場合に生成されて商品ソフトウェアの動作を許容するライセンスキーを、アプリケーションサーバ２５（ソフトウェア転送部）に転送される商品ソフトウェアのファイルに組み込む。これにより、代金の支払い決済が完了しない場合には、このようなライセンスキーが生成されないため、商品ソフトウェアの提供に対する代金の支払いをすることなく取得された商品ソフトウェアについてはその動作を禁止することが可能になる。したがって、カスタマイズにより得られた所望の動作をする商品ソフトウェアの不正取得を抑制することができる。
【０１４２】
また、マーケットシステム１０，１００では、アプリケーションサーバ２５（パラメータ解析部、ＵＩパネル生成部）により、商品ソフトウェアの動作パラメータを解析し、動作パラメータの解析情報に基づいて購入者９０が動作パラメータの値を任意に設定可能にＵＩパネルを自動に生成するように構成した。これにより、例えば、マーケットシステムの運営会社や商品ソフトウェアの製作者が、商品ソフトウェアごとに当該商品ソフトウェアの機能に合わせたＵＩパネルを個々に作成する必要がない。したがって、様々な商品ソフトウェアに個別に対応したＵＩパネルを容易に生成できるため、当該マーケットシステム１０，１００の利用促進を促すことが可能になる。
【０１４３】
さらに、マーケットシステム１０，１００では、ライブデモで設定される動作パラメータを、動作パラメータの定義情報と対応付けて決済後まで保持し、ダウンロードされるアーカイブファイルに埋め込むように構成した。これにより、アーカイブファイルに埋め込まれるパラメータは、ファイル上は商品であるソフトウェアと分離されるため、動作パラメータを手作業で書き換えて使用することも可能になる。
【０１４４】
また、マーケットシステム１０，１００では、バックエンドアプリ（マーケット本体）と商品ソフトウェアとの間において、図３(C)に示すようなインタフェースを定義しており、またバックエンドアプリ（マーケット本体）とＵＩパネルと商品ソフトウェアとの三者間で、動作パラメータに関する記述形式として、例えば、ＪＳＯＮ（JavaScript Object Notation）に準拠した形式を採る。これにより、三者間で定義したインタフェースの仕様に準拠する限りにおいて、任意のソフトウェアを商品ソフトウェアとしてマーケットシステム１０、１００で流通させることが可能になる。
【０１４５】
なお、上述したマーケットシステム１０，１００では、スクリプト言語の一例として、JavaScriptを用いる場合を例示して説明したが、例えば、ＰＨＰ（Hypertext Preprocessor）、ＪＳＰ（Java Server Pages）、ＡＳＰ（Active Server Pages）、Adobe Flash（登録商標）等で記述された商品ソフトウェアにも、本発明を適用することができる。
【０１４６】
また、上述したマーケットシステム１０，１００では、フロントエンドアプリおよびバックエンドアプリの概念をそれぞれ明示して説明したが、このような概念は本発明の適用に必ずしも必要になるものではなく、例えば、フロントエンドアプリとバックエンドアプリの双方に、あるいはフロントエンドアプリまたはバックエンドアプリのいずれか一方に、関わるシステムについても、本発明を適用することができる。
【符号の説明】
【０１４７】
１０…マーケットシステム（ソフトウェアマーケットシステム）
２０…データセンター
２１…サーバ装置
２３…ウェブサーバ(デモ環境提供部）
２５…アプリケーションサーバ（パラメータ解析部、ＵＩパネル生成部、パラメータ組込部、ソフトウェア転送部）
２７…ファイルシステム
２９…データベースサーバ
３０…利用者環境
３１…端末装置（利用者端末）
３３…マーケットブラウザ（ウェブブラウザ部、ファイル保存部）
４０…決済システム
５０…接続（公衆ネットワーク）
８０…製作者
９０…購入者（利用者）
【要約】
【課題】専門知識を持たない利用者であっても容易にソフトウェアをカスタマイズすることができ、カスタマイズした場合のソフトウェアの動作を容易に確認し得るソフトウェアマーケットシステムおよびサーバ装置を提供する。
【解決手段】マーケットシステム１０では、サーバ装置２１は、アプリケーションサーバ２５とウェブサーバ２３を備えることで、商品ソフトウェアの動作パラメータを解析し、動作パラメータの解析情報に基づいて購入者が動作パラメータの値を任意に設定可能なＵＩパネルを生成し、ＵＩパネルおよび商品ソフトウェアが動作可能な所定環境を端末装置３１に提供する。一方、端末装置３１は、マーケットブラウザ３３を備えることで、ウェブサーバ２３により提供された所定環境で商品ソフトウェアを動作可能にするとともに、ＵＩパネルを端末装置３１のディスプレィに表示して購入者によるＵＩパネルの操作入力を可能にする。
【選択図】図１【図１】
0005613798.tif 000002
【図４】
0005613798.tif 000003
【図６】
0005613798.tif 000004
【図７】
0005613798.tif 000005
【図８】
0005613798.tif 000006
【図１０】
0005613798.tif 000007
【図１１】
0005613798.tif 000008
【図１２】
0005613798.tif 000009
【図１３】
0005613798.tif 000010
【図１４】
0005613798.tif 000011
【図１５】
0005613798.tif 000012
【図１６】
0005613798.tif 000013
【図１７】
0005613798.tif 000014
【図１８】
0005613798.tif 000015
【図２】
0005613798.tif 000016
【図３】
0005613798.tif 000017
【図５】
0005613798.tif 000018
【図９】
0005613798.tif 000019
【図１９】
0005613798.tif 000020
【図２０】
0005613798.tif 000021