(57)【要約】  カスタム製品について説明し、関連付けるための技法について説明されている。一実施形態では、カスタム製品の属性を定義する第１の属性値が、カスタム製品をカスタマイズしているユーザから受信される。第１の属性値の受信を受けて、アクセサリー製品の第２の属性の正当な属性値のセットが判断され得る。正当な属性値のセットは、第１の属性値と互換性のあるアクセサリー製品の第２の属性の１つ以上の属性値を特定する。正当な属性値のセットは、連続する値範囲内のどの値も第１の属性値と互換性がある連続する値範囲を特定し得る。一実施形態において、ユーザは、正当な属性値を有するアクセサリー製品を選択することに制限され得る。
2014531637.tif 000002
【特許請求の範囲】
【請求項１】
１以上のコンピュータ装置で実行する方法であり、
カスタム製品をカスタマイズするユーザから、前記カスタム製品の属性を定義する第１の属性値を受信するステップと、
前記第１の属性値の受信に応じて、前記カスタム製品またはアクセサリー製品のうちの少なくとも一方の第２の属性に対する正当な属性値のセットを判断するステップと、
を備えた方法において、
前記正当な属性値のセットが、前記カスタム製品、または、前記第１の属性値に適した値を持つ前記アクセサリー製品の前記第２の属性の１つ以上の属性値を特定することを特徴とする方法。
【請求項２】
前記正当な属性値のセットが、前記第１の属性値に適した連続する値の範囲を示し、前記連続する値の範囲内で選択された任意の値が前記第１の属性値に適した値であり、
前記正当な値の範囲内で属性値を選択するように前記ユーザを制限するステップをさらに含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１の属性値が、前記カスタム製品をカスタマイズする前記ユーザによって選択された任意の属性値であることを特徴とする請求項１に記載の方法。
【請求項４】
前記正当な属性値のセット内の属性値を有する１つ以上のアクセサリー製品のセットを特定するステップと、
前記１つ以上のアクセサリー製品が、前記カスタム製品と互換性のある推奨製品として前記ユーザに表示されるようにするステップと、をさらに含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記正当な属性値のセット内の属性値を有する特定のアクセサリー製品を特定するステップと、前記アクセサリー製品の第３の属性を定義する第３の属性値を特定するステップと、
前記カスタム製品が前記第３の属性値に適した値を持つかどうかを判断するステップと、
前記カスタム製品が前記第３の属性値に適していないという判断を受けて、前記ユーザに対する前記特定のアクセサリー製品の推奨しないようにするテップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項６】
前記カスタム製品またはアクセサリー製品のうちの少なくとも一方の第２の属性に対する正当な属性値のセットを判断することが、前記第１の属性値の受信に応じて、前記第１の属性値を前記第１の属性と関連付けるｋｅｙ−ｖａｌｕｅペアを含むｋｅｙ−ｖａｌｕｅ式を形成するステップと、
前記ｋｅｙ−ｖａｌｕｅ式を、前記第２の属性の前記正当な属性値のセットを特定する１つ以上のオプション文字列とマッチさせるステップと、
を含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記カスタム製品が、前記カスタム製品を第２の製品と関連付ける製品バンドルの一部であり、前記カスタム製品が、前記カスタム製品と関連付けられた第１の制約のセットを特定する第１のフィルタと関連付けられており、前記第２の製品が、前記第２の製品と関連付けられた第２の制約のセットを特定する第２のフィルタと関連付けられており、
前記第１の制約のセットと前記第２の制約のセットとを満たす１つ以上のアクセサリー製品のセットを判断するステップと、前記アクセサリー製品のセットを互換性のあるアクセサリー製品として前記ユーザに推奨するステップと、
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記第２のフィルタが、前記第２の製品が前記カスタム製品に依存するものであると指定し、ユーザ入力を受信するステップと、前記バンドルから前記カスタム製品を削除するステップと、前記バンドルからの前記カスタム製品の削除を受けて、前記第２の製品が前記カスタム製品に依存していると判断し、前記第２の製品を前記製品バンドルから削除するステップと、をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
前記製品バンドルのｋｅｙ−ｖａｌｕｅ式を形成するステップと、前記ｋｅｙ−ｖａｌｕｅ式を１つ以上のレンダリングファイルとマッチさせるステップと、前記レンダリングファイルに基づいて、前記製品バンドルの画像をレンダリングするステップと、前記画像が前記ユーザに表示されるようにするステップと、をさらに含むことを特徴とする請求項７に記載の方法。
【請求項１０】
前記第１の属性値を受信する前に、前記カスタム製品の第３の属性の第１のデフォルト値を表示させるステップと、前記第１の属性値の受信を受けて、前記カスタム製品の前記第３の属性の、前記第１のデフォルト値とは異なる第２のデフォルト値を表示させるステップと、をさらに含むことを特徴とする請求項１に記載の方法。
【請求項１１】
１以上の命令シーケンスが記憶された１つ以上の非一時的なコンピュータ読み取り可能な記録媒体であって、
実行することにより、
カスタム製品をカスタマイズするユーザから、前記カスタム製品の属性を定義する第１の属性値を受信するステップと、
前記第１の属性値の受信に応じて、前記カスタム製品またはアクセサリー製品のうちの少なくとも一方の第２の属性の正当な属性値のセットを判断するステップとを実行させる命令を記憶し、
前記正当な属性値のセットが、前記カスタム製品または前記第１の属性値に適した値を有する前記アクセサリー製品の前記第２の属性の１つ以上の属性値を特定するものであることを特徴とする１つ以上の非一時的コンピュータ可読媒体。
【請求項１２】
前記正当な属性値のセットが、前記第１の属性値に適した連続する値の範囲を示し、前記連続する値の範囲内で選択された任意の値が前記第１の属性値に適した値であり、
前記正当な値範囲内の属性値を選択することに、前記ユーザを制限するステップを実行させる命令をさらに記憶することを特徴とする請求項１１に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１３】
前記第１の属性値が、前記カスタム製品をカスタマイズする前記ユーザによって選択された任意の属性値であることを特徴とする請求項１１に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１４】
前記正当な属性値のセット内の属性値を有する１つ以上のアクセサリー製品のセットを特定するステップと、
前記１つ以上のアクセサリー製品が、前記カスタム製品と互換性のある推奨製品として前記ユーザに表示されるようにするステップとを実行させる命令をさらに記憶することを特徴とする、請求項１１に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１５】
前記正当な属性値のセット内の属性値を有する特定のアクセサリー製品を特定するステップと、
前記アクセサリー製品の第３の属性を定義する第３の属性値を特定するステップと、
前記カスタム製品が、前記第３の属性値と互換性を持つかどうかを判断するステップと、
前記カスタム製品が前記第３の属性値と互換性を持たないと判断したことを受けて、前記ユーザに対する前記特定のアクセサリー製品の推奨を防ぐステップとを実行させる命令をさらに備えることを特徴とする請求項１１に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１６】
前記カスタム製品またはアクセサリー製品のうちの少なくとも一方の第２の属性の正当な属性値のセットを判断するステップが、前記第１の属性値の受信を応じて、前記第１の属性値を前記第１の属性と関連付けるｋｅｙ−ｖａｌｕｅペアを含むｋｅｙ−ｖａｌｕｅ式を形成するステップと、
前記ｋｅｙ−ｖａｌｕｅ式を、前記第２の属性の前記正当な属性値のセットを特定する１つ以上のオプション文字列とマッチさせるステップとを実行させる命令をさらに備えることを特徴とする請求項１１に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１７】
前記カスタム製品が、前記カスタム製品を第２の製品と関連付ける製品バンドルの一部であり、前記カスタム製品が、前記カスタム製品と関連付けられた第１の制約のセットを特定する第１のフィルタと関連付けられ、前記第２の製品が、前記第２の製品と関連付けられた第２の制約のセットを特定する第２のフィルタと関連付けられ、前記第１の制約のセットと前記第２の制約のセットとを満たす１つ以上のアクセサリー製品のセットを判断するステップと、
前記アクセサリー製品のセットを互換性のあるアクセサリー製品として前記ユーザに推奨するステップとを実行させる命令をさらに備えることを特徴とする、請求項１１に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１８】
前記第２のフィルタが、前記第２の製品が前記カスタム製品に依存するものであると指定し、ユーザ入力を受信するステップと、
前記バンドルから前記カスタム製品を削除するステップと、
前記バンドルからの前記カスタム製品の削除を受けて、前記第２の製品が前記カスタム製品に依存していると判断し、前記第２の製品を前記製品バンドルから削除するステップとを実行させる命令をさらに備えることを特徴とする請求項１７に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項１９】
前記製品バンドルのｋｅｙ−ｖａｌｕｅ式を形成するステップと、
前記ｋｅｙ−ｖａｌｕｅ式を１つ以上のレンダリングファイルとマッチさせるステップと、
前記レンダリングファイルに基づいて、前記製品バンドルの画像をレンダリングするステップと、前記画像が前記ユーザに表示されるようにするステップとを実行させる命令をさらに備えることを特徴とする請求項１７に記載の１つ以上の非一時的コンピュータ可読媒体。
【請求項２０】
前記第１の属性値を受信する前に、前記カスタム製品の第３の属性の第１のデフォルト値を表示させるステップと、
前記第１の属性値の受信を受けて、前記カスタム製品の前記第３の属性の、前記第１のデフォルト値とは異なる第２のデフォルト値を表示させるステップとを実行させる命令をさらに備えることを特徴とする、請求項１１に記載の１つ以上の非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、製品オプションフレームワークおよびアクセサリーに関する。
【背景技術】
【０００２】
本セクションに記載の手法は、追求でき得る手法ではあるが、必ずしも以前に考案または追求された手法とは限らない。そのため、別段の記載がない限り、本セクションに記載の手法はいずれも、単に本セクションに含まれるという理由だけで先行技術として妥当であると想定されるべきでない。
【０００３】
オンラインショッピングなどのＥコマースサイトにより、エンドユーザは、ネットワーク接続経由で製品を閲覧し、選択し、注文することができる。多くの場合、これらのサイトは、提供されている製品に関する情報を記憶および維持するために、リレーショナルデータベース管理システム（ＲＤＢＭＳ）を実装している。エンドユーザが特定の製品または製品のセットに関する情報についてサイトに問い合わせを行うと、そのサイトは、ＲＤＢＭＳに記憶された製品記録から製品情報にアクセスし、表示するために、この情報をエンドユーザに返す。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ユーザがオーダーメイド製品を注文できるコンピュータシステムにおいて、注文可能な製品の記述は、コンピュータ実装されたデータ定義にとって特殊な課題が存在する。データ定義は、データ特性という点から、広範にわたる商品について迅速かつ柔軟に記述する方法を提供する必要がある。各製品には、多数の属性と、複数の他の製品と組み合わせたり一緒に用いられたりする可能性があり、それらは膨大な数の順列を表す。例えば、ユーザには、個々の製品の選択肢が何千とあり得る。そして多くの製品が、他の製品と互換性を持つことも、他の製品の付属品（アクセサリー）となることもある。これらの問題が特に複雑なのが、オーダーメイドの額入り製品や取り付け済み製品の場合であり、この場合、顧客は任意の画像を選択したりアップロードしたりすることができ、額と、マットまたは台紙、グレージングまたは他の保護材を選んでから、組み上がった製品を注文することができる。ある顧客が定義した製品であれば、過去の受注製品履歴内にまったく重複するものがなくても、コンピュータシステムは、その製品を製造することが可能かどうか、または顧客が選択したものが実際に提供されるかどうかを判断する必要がある。
【０００５】
このような状況において、リレーショナルデータベース構造や、製品とその属性とを記述する他の方法では、不十分であり、柔軟性もないことがわかってきた。典型的なＲＤＢＭＳ実装では、互換性の問題を解消し、付属品を製品とマッチさせるために、ストアドプロシージャまたは他のカスタムコードの広範に及ぶプログラミングが必要とされてきた。さらに、オーダーメイドという状況で必要とされる記憶レコードの数も非現実的である。単純な例として、シャツを、５０種類のスタイル、１０の色、そして５つのサイズで提供するとなると、ＲＤＢＭＳは、顧客が注文でき得る製品すべてに一意の在庫番号（ＳＫＵ）を表すのに、２，５００のレコードを記憶する必要がある。ただし顧客も、特定のＳＫＵについては、特異な組み合わせや不当な組み合わせであるということで、決して注文しないであろう。例えば、ベビーサイズでオレンジ色とピンク色によるストライプの男性用シャツというスタイルを注文できるようにすることは現実的でない。より複雑な例として、額入り印刷物などの製品の順列の組み合わせだと、属性に制約が課されていても何兆通りと可能であり、属性が広い範囲で連続的に変化する場合には無限となる。そのため、考えられる全ての製品の順列の組み合わせについて一定数のレコードを生成することは、記憶領域の無駄であろう。
【図面の簡単な説明】
【０００６】
【図１】カスタム製品をモデル化するための属性エンジンおよび製品オプションフレームワークを備えるシステムを表す。
【図２】一実施形態にかかる、製品オプションフレームワークを実装および使用するための処理例を表すフローチャートである。
【図３】一実施形態にかかる、アクセサリーフレームワークを使用した処理例を表すフローチャートである。
【図４】一実施形態にかかる、デフォルト値指定フレームワークを使用するための処理例を表すフローチャートである。
【図５】一実施形態にかかる、レンダリングフレームワークを使用するための処理例を表すフローチャートである。
【図６】製品とフィルタとの関係を表す。
【図７】製品とフィルタとの不均等な関係を表す。
【図８】本明細書の技法が実装され得るコンピュータシステムを表すブロック図である。
【発明を実施するための形態】
【０００７】
以降の説明には、本発明に対する理解を徹底するために、説明目的で数々の具体的な詳細が記載されている。ただし本発明は、これら具体的な詳細がなくても実施され得ることが明らかであろう。他の事例では、本発明を無用にわかりにくくすることを避けるために、公知の構造および装置がブロック図形式で明示されている。
【０００８】
本明細書では、以下の概略に従って実施形態が記載されている。
【０００９】
１．０  概要
２．０  構造的および機能的概要
３．０  製品およびアクセサリーを定義およびカスタマイズするための柔軟なフレームワーク
３．１  属性エンジン：Ｋｅｙ−Ｖａｌｕｅの説明とオプション文字列
３．２  製品オプションフレームワーク
３．３  アクセサリーフレームワーク
３．４  グループ化された製品向けのバンドルフレームワーク
３．５  デフォルトのフレームワーク
３．６  レンダリングフレームワーク
３．７  追加フレームワーク
４．０  実装メカニズム−ハードウェア概要
５．０  拡張および代替選択肢
【００１０】
１．０  概要
カスタム製品について説明し、関連付けるための技法について説明する。一実施形態では、カスタム製品の属性を定義する第１の属性値が、カスタム製品をカスタマイズしているユーザから受信される。第１の属性値の受信を受けて、カスタム製品またはアクセサリー製品の第２の属性の正当な属性値のセットが判断され得る。正当な属性値のセットは、カスタム製品、または、第１の属性値に適する値を持つアクセサリー製品の第２の属性の１つ以上の属性値を特定する。正当な属性値のセットは連続する値の範囲内の任意の値が第１の属性値に適した連続する値範囲を特定し得る。一実施形態において、ユーザは、正当な値範囲内で属性値を選択することに制限され得る。別の実施形態において、第１の属性値は、カスタム製品をカスタマイズしているユーザによって選択された任意の属性値であり得る。
【００１１】
一実施形態では、正当な属性値のセット内に属性値を有する１つ以上のアクセサリー製品のセットが特定されている。１つ以上のアクセサリー製品はその後、カスタム製品と互換性のある推奨製品としてユーザに表示され得る。別の実施形態では、１つ以上のアクセサリー製品のセットの特定のアクセサリーが特定される。その後、特定のアクセサリー製品の第３の属性を定義する第３の属性値が特定され得る。その後、カスタム製品に対する第３の属性の互換性が判断される。カスタム製品が第３の属性値に適していないと判断されたことを受けて、ユーザに対して特定のアクセサリー製品が推奨されるのを防ぐ。
【００１２】
一実施形態では、アクセサリー製品の第２の属性の正当な属性値のセットを判断することが、ｋｅｙ−ｖａｌｕｅ式に基づき得る。第１の属性値の受信を受けて、第１の属性値を第１の属性と関連付けるｋｅｙ−ｖａｌｕｅペアを含むｋｅｙ−ｖａｌｕｅ式が形成され得る。ｋｅｙ−ｖａｌｕｅ式はその後、第２の属性の正当な属性値のセットを特定する１つ以上のオプション文字列とマッチさせる。
【００１３】
一実施形態では、カスタム製品は、そのカスタム製品を第２の製品と関連付けた製品のバンドルの一部であり得る。カスタム製品は、そのカスタム製品と関連付けられた第１の制約のセットを特定する第１のフィルタと関連付けられ得る。そして第２の製品は、その第２の製品と関連付けられた第２の制約のセットを特定する第２のフィルタと関連付けられ得る。次に、第１の制約のセットと第２の制約のセットとを満たす１つ以上のアクセサリー製品のセットが判断され、製品バンドルと互換性があるものとしてユーザに推奨され得る。別の実施形態では、第２のフィルタが、第２の製品がカスタム製品に依存するものであると指定し得る。ユーザがバンドルからカスタム製品を削除すると、第２の製品も製品バンドルから削除され得る。
【００１４】
一実施形態では、製品のバンドルのｋｅｙ−ｖａｌｕｅ式が、１つ以上のレンダリングファイルにマッピングされ得る。このレンダリングファイルに基づいて、製品バンドルの画像がレンダリングされ、ユーザに表示され得る。
【００１５】
一実施形態では、カスタム製品の第３の属性の第１のデフォルト値が、第１の属性値を受信する前に表示され得る。第１の属性値の受信を受けて、第１のデフォルト値と異なる、カスタム製品の第３の属性の第２のデフォルト値が表示され得る。
【００１６】
２．０  構造的および機能的概要
本明細書に記載された技法によると、システムは、任意の属性値を有する製品を注文する機会をユーザに提供するように構成され得る。例えば、写真、デジタル画像、美術作品、その他の額入れ可能画像など、オーダーメイドの額入り製品の場合、システムは、任意のサイズを有する画像および額を注文する機会をユーザに提供し得る。そのため、システムは、ユーザの製品注文を８×１０インチ（２０．３２〜２５．４センチメートル）、２０×３０インチ（５０．８〜７６．２センチメートル）といった固定サイズに制限するのではなく、ユーザが１０．５×２９．３インチ（２６．６７〜７４．４２センチメートル）といった任意のサイズで製品をリクエストできるようにし得る。そのため、カスタマイズ可能な製品は、連続して変わる値の範囲で提供され得るため、あらゆる寸法が可能な製品をＲＤＢＭＳで別個の値として表すのは非現実的である。属性値が、連続する指定範囲（例えば４インチ（１０．１６センチメートル）から４８インチ（１２１．９２センチメートル））内のどこかに該当すると、顧客が指定できる一意の値の数を、記憶することは不可能でないにしても、記憶コストが極めて高くなる。
【００１７】
他の実施形態では、システムが、第１の製品に対応していると分かっている選択製品だけを購入できるオプションをユーザに提供するように構成され得る。さらに、指定された第１の属性を有する特定の第１の製品が選択されると、システムは、第２の製品の属性を修正することも、第２の製品に特定の属性を指定できないようにすることもできる。さらに、システムは、注文処理を簡便化して、完了した注文を正確に行うことを確保するために、特定のデフォルト製品オプションまたは特定のデフォルト属性をユーザに提供し得る。
【００１８】
さらに、製品が、連続する値の範囲のうち任意値で表される寸法を有することができる場合には、ある製品が別の製品に対応しているどうかを判断することが極めて困難となり得る。任意の値を選択することには、最終カスタム製品の他の属性値と、最終カスタム製品の画像をレンダリングする方法とに関する示唆が含まれ得る。例えば、ある寸法が６インチ（１５．２４センチメートル）である額入り印刷物をユーザが注文している場合、注文された寸法に適していない額またはマットの組み合わせを購入するオプションをそのユーザに提供することは適切ではない。別例として、グレージングなどの製品を切断して特定の指定サイズの製品を製造することは不可能であり得る。別例として、特定の紙は特定の寸法で切断できず、特定サイズのマット用に特定の紙を注文するには別の製造工程が必要となり得る。これらの制約には相互に関連があり得るため、システムの複雑性が増す。
【００１９】
本明細書に記載された技法によると、かかる制約は、カスタム製品のデザイン時に大きな柔軟性を許容する情報モデルで効率的に表され得る。いくつかの実施形態では、ユーザが製品をデザインしているときに、どの属性および関連製品が有効であるか、あるいは
別の形で許可されるかを、システムが製品のデータベースまたは他の情報モデリング要素に問い合わせを行うる。データベースまたは他の情報モデリング要素は、互換性のある製品の結果セットを絞り込む方法を提供し得る。この結果セットは、デザイン中の製品の制限または修正も行い得る。
【００２０】
図１は、各種実施形態を実施し得るカスタム製品をモデル化するための属性エンジンおよび製品オプションフレームワークを備えるシステムを表す。コンピュータシステム１０２は、属性エンジン１０８を使用して処理され、ｋｅｙ−ｖａｌｕｅストア１０６に記憶される複数の製品データ定義１０４を備える。サーバコンピュータ、ホストまたは他の演算装置の中央演算装置（ＣＰＵ）または複数のＣＰＵコアを備え得るプロセッサ１２０が、属性エンジン１０８、ならびに製品オプションフレームワーク１１０、アクセサリーフレームワーク１１２、バンドルフレームワーク１１４、デフォルト値指定フレームワーク１１６、およびレンダリングフレームワーク１３０を実行する。アクセサリーフレームワーク１１２、バンドルフレームワーク１１４、デフォルト値指定フレームワーク１１６、およびレンダリングフレームワーク１３０の各々は連結されており、製品オプションフレームワーク１１０に提供された機能にアクセスすることができる。属性エンジン１０８およびフレームワーク１１０、１１２、１１４、１１６、１３０の各々は、オブジェクト指向クラス、データ定義、およびデータベースプロシージャという形態で、相互運用可能なコンピュータプログラムのセットを備え得る。これらのフレームワークの各々は、他のフレームワークのメソッドによって呼び出し可能な関数のアプリケーション・プログラミング・インターフェイス（ＡＰＩ）を露出し得る。いくつかの実施形態では、図１の１つ以上の要素が、実装形態に応じて、省略され得るか、あるいは他の要素と結合され得る。加えて、コンピュータシステム１０２は、実装形態に応じて更なる要素とロジックとを含み得るが、簡潔化のために図示されていない。
【００２１】
一実施形態では、属性エンジンおよび先述の要素ならびに「フレームワーク」と呼ばれる要素などを含む要素が、１つ以上の非一時的な記憶媒体に記憶または記録されているコンピュータプログラム命令という形態で実装され、後で汎用コンピュータまたは特殊用途コンピュータのメモリにロードされてプロセッサ１２０によって実行され得る。各々のロジック要素は、コンピュータの電子デジタルメモリ、レジスタまたはプロセッサを備え得るか、命令が実行されると、それらの形態またはコンテンツで表され得る。別の実施形態では、これらの要素の各々が、１つ以上の特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、または図６を参照しながら本明細書でさらに説明している要素を含む他のハードウェア要素を用いて電子デジタル回路ロジックの形態で実装され得る。図１の各要素について、以下さらに詳しく説明する。
【００２２】
３．０  製品およびアクセサリーを定義およびカスタマイズするための柔軟なフレームワーク
３．１  属性エンジン：ｋｅｙ−ｖａｌｕｅの説明とオプション文字列
一実施形態では、属性エンジン１０８が、製品の特徴およびそれらの制約について柔軟に記述できる指定された構文をサポートするロジックで構成されている。製品オプションフレームワーク１１０は、属性エンジン１０８を使用して、カスタム製品の現在の定義方法、カスタム製品が定義され得る方法に関する制限または他の制約、および／またはカスタム製品と他の製品およびレンダリングファイルとの関係を判断し得る。
【００２３】
一実施形態では、属性エンジン１０８によってサポートされている指定された構文が、製品の特徴および制約をキーおよび値のセットで記述されたｋｅｙ−ｖａｌｕｅ構文である。キーは、１つ以上の製品を記述する目的で使用され得る特定の属性を表し得る。各キーは、特定の値または正当な値のセットと関連付けられ得る。そこでは値が、対応する属性の具体的な特徴を表す。例えば、カスタム印刷またはカスタムメイドのシャツの場合、その製品は、これに制限されるものではないが、スタイル、色、およびサイズ属性を含むキーを用いて記述され得る。スタイル属性値は５０個、色については１０個の値、サイズについては５個の値が利用でき得るが、これらの値の全ての順列の組み合わせが利用可能あるいは注文可能であるとは限らない。
【００２４】
実装形態に応じて、キーごとの正当な値のセットが、別個の値のセット、値の範囲、計算された値のセットとして、あるいはその他任意の適切なメカニズムによって指定され得る。
【００２５】
一実施形態では、正当な値のセットを別個のセットとして指定するために、拡張構文が使用され得る。拡張構文は、正当な値のセットを形成する各値を列挙もしくは他の形で定義するための任意の適切な構文を含み得る。例えば、カスタムメイドまたはカスタム印刷のシャツの場合、正当な値のセットは、赤、緑、または青という３つの別の値で指定され得る。このように、これらの値から任意の値を３つ選択したものが、選択可能なオプションを構成する。ただし本実施例では、黄色など別の色だと、対応する製品属性に利用できない不当な値となる。
【００２６】
一実施形態では、正当な値のセットを連続する値の範囲で指定するために、インテンショナル構文が使用され得る。連続する範囲内の任意の値が、正当な値として許可され得る。カスタムメイドまたはカスタム印刷のシャツの場合に改めて言及すると、正当な値のセットは、０と２５６との間のあらゆるＲＧＢ値で指定され得る。そのため、０から２５６の範囲内のあらゆるＲＧＢ値が色の選択として有効である。そして、指定範囲外のＲＧＢ値は無効である。別例では、製品は、境界内の連続した値の幅および高さの印刷物あり得る。したがってユーザは、印刷物に対して正当な境界内で任意の幅または高さを指定し得る。
【００２７】
計算値は、評価関数に基づいて計算される任意の値または値のセットであり得る。この計算は、ユーザがカスタム製品をデザインしているときにリアルタイムで行われ得る。例えば、評価関数は、幅および高さの入力に基づいてカスタム印刷物の表面積を計算し得る。表面積が計算されると、評価関数が、計算された表面積に応じて印刷物をさらに小、中、大に分類し得る。
【００２８】
一実施形態では、各キーが名前空間と関連付けられ得る。名前空間は、シャツ、印刷物、額など、任意の特定製品または製品クラスを表し得る。各々の名前空間は、その名前空間内のカスタム製品の潜在的属性に対する複数の属性定義と関連付けられ得る。その結果、属性および許容値の宣言により、属性エンジン１０８が広範囲の製品を記述することができる。
【００２９】
ｋｅｙ−ｖａｌｕｅ構文は、テキスト文字列でシリアル化（serialization）または表記することができ、以下さらに説明するマッチング演算に加えることができる。本明細書でさらに説明する製品オプションの構成で、定められた計算処理を実装してマッチング演算を行い得る。マッチング演算は、これに限定するものではないが、カスタム製品の定義とアクセサリーフィルタ、デフォルトフィルタ、およびレンダリングファイルをマッチングさせるなど、各種目的で使用され得る。
【００３０】
一例を挙げると、ｋｅｙ−ｖａｌｕｅ式は、以下を含み得る。
【００３１】
［１］  ｓｔｙｌｅ＝ｂａｓｉｃ＆ｃｏｌｏｒ＝ｗｈｉｔｅ＆ｓｉｚｅ＝ｌａｒｇｅ
式中、「＝」は演算子であり、「＆」はセパレータである。本明細書における本実施例および他のすべての実施例において、［１］など、括弧で括られた数字は、本明細書における説明用の式を特定するに過ぎず、括弧で括られたこれらの数字は、式または式の構文定義の一部を成すものではない。［１］の記述は、次に示す他の式をマッチさせる。
【００３２】
［２］  ｓｔｙｌｅ＝ｂａｓｉｃ
［３］  ｓｔｙｌｅ＝｛ｂａｓｉｃ，ｄａｒｋ，ｈｏｏｄｅｄ｝
第１の式と第２または第３の式との間のセットの構成要素に競合は存在しないので、これらの式はマッチングされる。一実施形態において、製品オプションフレームワークは、［１］の形の式を動的に形成し得る。そして、かかる式を数多く作成でき得るとともに、一時的に記憶でき得る。式［２］は、記憶式をフィルタリングし、ｓｔｙｌｅ＝ｂａｓｉｃである記憶式だけの結果セットを生成する目的でマッチング関数に適用でき得る。同様に、式［３］も、記憶式をフィルタリングして、スタイル属性が指定されたセットの構成要素のいずれかである結果セットを抽出する目的で使用され得る。
【００３３】
一実施形態では、式が、製品属性を計算値と表し得る。例えば、印刷物製品なら、幅、高さ、および媒体という属性を有し得る。印刷物製品と関連付けられたある式は、次のとおりであり得る。
【００３４】
［４］  ｗｉｄｔｈ＝｛＞＝８，＜＝６０｝
したがって、幅に対して可能な値は、８単位以上、６０単位以下であり得ることが示される。単位は、インチ、センチメートル、または他の線形測定単位であり得る。従来のＲＤＢＭＳ手法では、同等の式または製品の記述を行うにはプログラミングコードが必要だったが、本手法では、汎用化されたマッチング関数と他の汎用化されたフレームワーク関数とによって処理される宣言が使用され得る。
【００３５】
キーと値とを結ぶ演算子は、等号、不等号、または制約付き等号を表し得る。例えば、式は次の演算子を使用し得る。
【００３６】
［５］  ｋｅｙ＝ｖａｌｕｅ  −  存在が必須でない値に等しいことを表現する。
【００３７】
［６］  ｋｅｙ！＝ｖａｌｕｅ  −  等しくないことを表す。
【００３８】
［７］  ｋｅｙ：＝ｖａｌｕｅ  −  存在必須の値に等しいことを表現する。
【００３９】
例えば、次のような式
［８］  ｓｔｙｌｅ＝｛ｂａｓｉｃ，ｄａｒｋ，ｆｉｔｔｅｄ｝＆ｓｉｚｅ！＝｛ｓｍａｌｌ｝は、
ｂａｓｉｃ（ベーシック）か、ｄａｒｋ（暗色）か、あるいはｆｉｔｔｅｄ（あつらえ）で、かつサイズがｓｍａｌｌ（小）でないスタイルのシャツにマッチする。
【００４０】
一実施形態では、指定された構文のｋｅｙ−ｖａｌｕｅ式を用いた製品の記述が、価格など、製品に関する他の情報や、特定の属性値が事前にわかっていない製品の他の属性を取得する目的で使用され得る。この手法の利点は、新しい製品または属性値が、複雑なプログラミングを使用せず、新しい宣言式を使用するだけでシステムに取り込まれ得るということである。例えば、新しい製品属性を追加して製品価格を変更する場合に、プログラムロジックや複雑なデータベーステーブルを更新するのではなく、その属性の価格属性を更新し、例えば、「製品がウィジェットを有する場合、価格は２９．９５ドルである」といった比較的単純な条件ロジックを価格テーブルで更新するだけで良い。
【００４１】
これにより、コンピュータシステム全体に記載された製品の数が、何度もプログラム変更を行わなくても速やかに増やすことができる。「大または中のシャツは、価格がすべてＰである」あるいは「緑色のウィジェットは価格が１０ドル上がる」といった単純な業務文を保存する宣言ステートメント。これらのステートメントを、ソフトウェアエンジニアではなく、業務アナリストが作成および入力することができ、プログラムフレームワーク内で、上記演算子を用いて連結されたｋｅｙ−ｖａｌｕｅペアを表すシリアル化されたステートメントという形で使用され得る。
【００４２】
一実施形態では、マッチングロジックが、上記［５］、［６］、および［７］の形の式を使用して、２つ以上の属性を含む文字列における属性値間での実際のマッチ数を作成および記憶する。得られた数は、マッチング近似度、または式どうしの間にマッチが存在する確率の高さを表す。例えば、マッチング近似度は、［５］の形の式の充足率に基づいて判断され得る。近似度の表現、すなわち、存在する属性値と存在しない属性値が混在する式の間での非厳密なマッチングは、従来のＲＤＢＭＳでは生来的に行われないのが典型的である。
【００４３】
一実施形態では、式の構文および関連付けられたマッチングロジック、そして他のプログラムフレームワーク要素が、製品名称および製品コンテキストの宣言をサポートする。例えば、ある製品が次のように宣言されると仮定する。
【００４４】
［９］  ［ｓｔｙｌｅ＝ｂａｓｉｃ＆ｃｏｌｏｒ＝ｗｈｉｔｅ＆ｓｉｚｅ＝ｌａｒｇｅ］
また、次のような複数のコンテキストも定義され得る。
【００４５】
［１０］  ［ｒｅｇｉｏｎ＝ｕｓ＆ｃｕｒｒｅｎｃｙ＝ｕｓｄ］
［１１］  ［ｒｅｇｉｏｎ＝ｇｂ＆ｃｕｒｒｅｎｃｙ＝ｇｂｐ］
他のコンテキスト例として、Ｓｉｔｅ（場所）やＳｅｌｌｅｒ（販売者）などがある。例えば、このプラットフォームによって処理された同じ製品であっても、製品を提供しているウェブサイトや販売者の身元に応じて扱われ方が異なり得る。例えば、販売者がディズニー（登録商標）であれば、特定製品の出所のライセンス許諾者、メーカー、または他の実体について記述した属性にフィルタを適用することにより、ディズニーを出所とする製品だけを提供することができる。
【００４６】
製品は、名称、価格、およびデフォルト値を有し得る。例えば、式［１０］はデフォルトのコンテキスト、そして［１１］は優先的な代替コンテキストであり得る。コンテキストはいくつでも定義および使用され得る。例えば、［１１］の場合、英国にいるエンドユーザまたは顧客が、本明細書の技法を実装しているサーバコンピュータに接続すると、サーバコンピュータは、［１１］をデフォルトのコンテキストとして取得し得る。そして、フィルタリング関数または他の判断関数を実行するマッチング関数にそのコンテキスト文字列を渡し得る。非厳密マッチあるいは近似マッチとなり、そのマッチング属性数が、データフィルタリングや応答メッセージあるいは応答アクションを促す目的で使用され得る。例えば、現在のユーザが英国にいても、通貨としてユーロを選択していると、式［１１］がマッチせず、システムは例外を投げるか、修正を促すメッセージを提示し得る。
【００４７】
この構造を用いれば、データベーステーブルを広範囲にわたってプログラミングしたり変更したりしなくても、時間の経過とともに製品定義が常に改良され得る。
【００４８】
一実施形態では、第２のセットが第１のセットの下位セット一式である場合に、セットマッチングロジックがマッチを返す。例えば、｛ｂａｓｉｃ，ｄａｒｋ｝というセットは、上記式［８］にマッチする。これに対し、｛ｂａｓｉｃ，ｌｉｇｈｔ｝はマッチしない。実施形態において、セットマッチングロジックは、注文リストを強制するように構成されている。例えば印刷物製品の場合だと、［ｗｉｄｔｈ，ｈｅｉｇｈｔ］という表記が寸法の注文リストを指定し、宣言［８，１１］は［１１，８］にマッチしない。
【００４９】
３．２  製品オプションフレームワーク
一実施形態では、先述の機能を促す目的で製品を定義できるようにするための製品オプションが構成され得る。製品オプションフレームワークは、先述の属性エンジンを使用して、ある製品がアクセサリーまたは関連製品として第２の製品と互換性を持つかどうかを処理または判断するための具体例である。このフレームワークは、製品の属性および関係を定義し、他の値とマッチさせることのできる式を指定するための、ｋｅｙ−ｖａｌｕｅをベースとする構文の式と相互運用し得る。このフレームワークは、第１の製品を、第１の製品に対するアクセサリーなど１つ以上の第２の互換性がある製品にマッチさせるための依存関係、デフォルト値、およびフィルタを宣言する方法を提供し得る。これらの手法により、先に述べた従来のＲＤＢＭＳ手法の欠点を克服することができる。さらに、この手法だと、カスタムプログラミングではなく構成値を用いて、新しく複雑な製品記述を効率良く追加することができる。
【００５０】
図２は、一実施形態にかかる、製品オプションフレームワーク１１０を実装および使用するための処理例を表すフローチャートである。ステップ２０２で、１つ以上の製品の名前空間が確立される。一実施形態では、製品データ定義１０４で定義された各製品が、記述的な名前空間と関連付けられている。名前空間は、シャツや印刷物など、製品のクラスを表し得る。
【００５１】
ステップ２０４で、製品の属性名およびタイプが確立される。一実施形態では、各々の名前空間が、製品の潜在的属性を表す複数の属性定義を有する。名前空間が「Ｐｒｉｎｔ」の場合、属性は、［Ｗｉｄｔｈ，Ｈｅｉｇｈｔ］と定義されたサイズ属性と媒体属性とを含み得るが、これらに制限されない。属性定義は、属性名、正当な属性値、および文字列、小数、整数、配列、ブールなどの属性データ型の宣言を含む。
【００５２】
ステップ２０６で、ステップ２０４で確立された対応製品の属性に対する正当値が確立される。属性値は、先述のとおり、別個のセットまたは連続する範囲として指定され得る。属性値は、計算される場合や基準値となる場合もある。例えば、選択されたデジタル画像資産のアスペクト比に基づいた計算により、サイズがＬａｒｇｅとなり、３２×４８インチ（８１．２８×１２１．９２センチメートル）の寸法範囲内に収まる長方形となり得る。フレームワークは、式が評価される時点で計算値を判断できるように、評価言語を実装し得る。この手法の利点は、典型的なＲＤＢＭＳ手法の場合のような複雑なテーブル結合を使用するのではなく、正当な値の宣言が使用され得るということである。
【００５３】
一実施形態では、各製品が、キー値の定義を備えている。任意の属性がキー値として指定され得る。そしてキー値は、式の評価時に使用され得る。キー値は、製品を一意に特定する任意の属性の組み合わせを含み得る。
【００５４】
製品の名前空間、属性、値、およびキー値が定義されると、キー値から、１つ以上の製品オプションが宣言または定義され得る。製品オプション例は、先述の式例を含む。
【００５５】
ステップ２０８で、１つ以上の製品について、関係、依存関係、デフォルト値、および他のフィルタ条件が確立され得る。例えば、このステップは、下記のとおり、アクセサリーフィルタ、デフォルトフィルタ、レンダリングマッピング、および他のフィルタを定義することを含み得る。これらのフィルタは、ユーザがカスタム製品をデザインしているときに、制約を特定し、結果セットを絞り込む目的で使用され得る。
【００５６】
ステップ２１０で、これらのデータがオプション文字列およびフィルタ式にシリアル化される。一実施形態において、データをシリアル化することは、各種製品オプションおよび関連付けられたフィルタに対して先述のようなｋｅｙ−ｖａｌｕｅ式を生成することを含む。シリアル化されたデータは、ｋｅｙ−ｖａｌｕｅストア１０６に記憶され得る。そして先述のマッチング技法を用いて、受信クエリと照合され得る。
【００５７】
一実施形態では、ｋｅｙ−ｖａｌｕｅストア１０６の特殊用途データ定義が提供されており、ＭｅｍＣａｃｈｅや他の中間キャッシュなど、市販またはオープンソースのｋｅｙ−ｖａｌｕｅストアを使用して記憶され得る。一実施形態では、他のインフラストラクチャソフトウェア要素が、特殊用途ｋｅｙ−ｖａｌｕｅストアを利用して、製品間の表現関係を使用する。他のインフラストラクチャ要素の例として、アクセサリー、依存関係、デフォルト値、およびレンダリングなどがある。
【００５８】
ステップ２１２で、カスタム製品を定義する１つ以上の属性値が受信される。例えば、ユーザが印刷物をカスタマイズしている場合、そのユーザは印刷物の幅と高さとを指定し得る。ユーザによって選択あるいは他の方法で指定された属性値は、カスタム製品またはアクセサリー製品の他の属性値の使用可否およびデフォルト値に影響し得る。さらに、ユーザによって選択された属性値は、推奨されるアクセサリー製品と、カスタム製品の代表画像のレンダリング方法とに影響し得る。
【００５９】
ステップ２１４で、受信された属性値を使用して、マッチするオプション文字列およびフィルタを検索する。例えば、属性および対応する属性値は、１つ以上のｋｅｙ−ｖａｌｕｅ式にシリアル化され得る。この式は、製品アクセサリーフレームワークにクエリを出す目的で使用され得る。その後、先述のようなマッチング演算が実施され、マッチする製品オプションおよびフィルタが判断され得る。マッチする製品オプションおよびフィルタはその後、クエリ結果セットを提供する目的で使用され得る。
【００６０】
ステップ２１６で、検索結果が返される。結果セットは、利用可能な属性値ならびにユーザによって選択され得るアクセサリーに関する制約、ユーザに表示されるべきデフォルトの属性値、ユーザに推奨されるべき互換性のあるアクセサリー製品のセット、および製品のレンダリング画像を特定し得るか、あるいは他の方法で含み得るが、それらに制限されない。
【００６１】
３．３  アクセサリーフレームワーク
一実施形態において、製品オプションフレームワークは、１つ以上のコンピュータプログラム、ｋｅｙ−ｖａｌｕｅストア定義、ストアドプロシージャ、またはある製品が別の製品のアクセサリーになり得るかどうかを判断するための関数を実装する他のソフトウェア要素を備えるアクセサリーフレームワークを備えるか、かかるフレームワークにアクセスすることができる。
【００６２】
さらに、アクセサリーフレームワークは、複数の製品の製品特徴を判断して、互換性を持つように構成されている。例えば、額入り製品というコンテキストでは、ｓｉｚｅ＝［ｗ，ｈ］、ｍｏｌｄｉｎｇｓ、ｍｏｕｎｔ  ｔｙｐｅ、ｆｌｏａｔ  ｗｉｄｔｈｓ［ｌ，ｔ，ｒ，ｂ］、ｍａｔ１、ｍａｔ２、ｍａｔ  ｗｉｄｔｈｓ［ｌ，ｔ，ｒ，ｂ］、ｇｌａｚｉｎｇという属性を有する額が定義され得る。属性例は、次に説明するロジックを反映する。額入り製品の額のサイズは、選択された材料とだけ互換性を持ち得る。額は、モールディングタイプと正当な額の開口サイズとを含み得る。顧客がリクエストした額のサイズは、特定のモールディングタイプと互換性がない場合がある。特定の印刷物サイズやモールディングタイプ、あるいは開口サイズと互換性がない場合があるフロートマウントなど、さまざまな取り付けオプションが提供され得る。フロートマウントは、製品の左部、最上部、右部、および底部に、指定されたフロート間隔の幅を有し得る。さまざまなタイプと、さまざまな左部、最上部、右部、および底部の幅と、を有する１枚または２枚のマットが存在し得る。プラスチックまたはガラスのグレージングが存在し得る。グレージングは存在しない場合もある。
【００６３】
特定の属性に対して異なる値を選択すると、他の属性の許容値に影響し得る。そのため、指定された製品と他の製品との互換性に影響し得る。例えば印刷物の場合、Ｍａｔ１が存在し、有効な値を有するのであれば、Ｆｌｏａｔ  Ｗｉｄｔｈｓが無効であるか、あるいはゼロでなければならなない。Ｍｏｕｎｔ  ＴｙｐｅがＦｌｏａｔであれば、Ｆｌｏａｔ  Ｗｉｄｔｈｓは整数値を持つ必要があり、Ｍａｔ  Ｗｉｄｔｈｓの値はゼロでなければならない。Ｍｏｕｎｔ  ＴｙｐｅがＭａｔでＭａｔ  Ｗｉｄｔｈｓが３”であれば、総製品サイズが大きくなり、モールディングサイズは、結果的に得られるサイズと互換性を持つ場合も持たない場合もあり、他の値は正当にも不当にもなり得る。
【００６４】
印刷物は、サイズ［ｗ，ｈ］と媒体とを含み得る。エンドユーザまたは顧客が印刷物製品を検討している場合、コンピュータシステムは、特定の印刷物の作成に対して正当であるか、許可されている他の製品（アクセサリー）に関する情報だけを取得および表示する必要がある。そのため、標準的な額が、選択された印刷物にマッチするかどうか、あるいは、カスタム額が可能かどうかを把握している必要がある。一例を挙げると、印刷物のサイズが［３０，４６］の場合、［４，６］という標準（一定）サイズ額だと互換性がないので、除外される必要がある。ただし、［３０，４８］の額であれば大丈夫で、［３２，４８］の額は、クロッピングされれば互換性を持ち得る。
【００６５】
一実施形態において、アクセサリーフレームワークは、複数のフィルタと、比較ロジックと、施行ロジックと、を実装するように構成されたロジックを備える。一実施形態では、実施例として先述の式［１］から［９］で説明した形で鍵の属性と値とを備えているオプション文字列により、第１の製品が定義される。第１の製品は第１のフィルタ定義とも関連付けられている。第１のフィルタ定義は、ＳＱＬサーバデータベースまたは同等の手続き処理システムにストアドプロシージャを含み得る。比較ロジックは、第１のオプション文字列を受信し、第１のフィルタ定義を適用して、最終的には、マッチする第２の製品の結果セットを生成するように構成されている。例えば、第１のオプション文字列がＰｒｏｄｕｃｔＴｙｐｅ＝Ｐｒｉｎｔと指定した場合、第２の製品の結果セットは、ＰｒｏｄｕｃｔＴｙｐｅ＝Ｎｅｃｋｔｉｅである製品をすべて除外する。
【００６６】
マッチする第２の製品は、第２レベルのフィルタリングを受けるアクセサリー候補または互換製品を表す。第２の製品の各々は、異なるオプション文字列によって定義されており、関連付けられた第２のフィルタを有する。施行ロジックは、各々の第２のフィルタを第１のオプション文字列に適用して、第１の製品がその第２の製品と互換性があるかどうかを判断し、ＶａｌｉｄまたはＩｎｖａｌｉｄの結果を返すように構成されている。互換性がない場合、その第２の製品は結果セットから削除され得る。例えば、第２の製品のうちの１つは、［４，６］というサイズを有する標準（一定）サイズの額を備え得る。印刷物のサイズが［３０，４８］である場合、その額のフィルタ定義は第１の製品を除外する。
【００６７】
施行ロジックは次に、施行目的でさらなるフィルタを生成または取得し得る。例えば、施行フィルタが、マウントタイプがＭａｔで［３２，４８］のサイズを有するカスタム額製品だけを指定すると仮定する。施行フィルタは第１の製品にバインドされており、ユーザインターフェイスでユーザに表示されるオプション製品を管理するときに使用される。そのため、例えば、ユーザが特定印刷物用のオプションを閲覧しているとき、そのユーザは、［３２，４８］というサイズを有する額のみ選択することができ、マウントタイプはＭａｔのみ選択することができる。他の属性値は、ノングレアのグレージングだけを許可するなどの形で実施され得る。
【００６８】
一実施形態では、フィルタが、データベースシステムにおけるストアドプロシージャと定義され得る。一実施形態では、フィルタが、フィルタのセットＩＤ、製品ＩＤ、製品タイプ、コンテキスト、フィルタ、フィルタ式、およびフィルタ変数の関連付けを含む。フィルタのセットＩＤは、識別用の一意の値である。製品ＩＤ値はオプションであり、その製品との関連性を明示するために、フィルタを特定の製品と関連付け得る。製品タイプ値はオプションであり、その製品タイプとの関連性を明示するために、フィルタを特定の製品タイプと関連付け得る。コンテキスト値はオプションであり、コンテキストの識別に関する上記タイプの宣言型文字列を含み得る。
【００６９】
フィルタは、先述のｋｅｙ−ｖａｌｕｅ形式の宣言型文字列か、あるいは基底のデータベースによって提供される評価言語フレームワークに従ってフィルタロジックを実装する１つ以上のプログラムステートメントを含み得る。例えば、フィルタの意図定義や表現定義を事前に知ることができない場合には、プログラムステートメントがオンザフライでそのフィルタの宣言型文字列を計算することを可能にする。例えば、サイズ値を計算することができ、その後そのフィルタを完全に表現する宣言型文字列でキャプチャすることができる。フィルタ式は、先述のタイプの静的な宣言型文字列を含み得るか、あるいは計算され得る。フィルタ変数はオプションであり、プログラムステートメントで使用される計算値を特定し得る。
【００７０】
各フィルタは、マッピングテーブルも含むか、あるいは関連している。マッピングテーブルは、フィルタがマッチしたときに推奨または出力する製品を特定する１つ以上のオプション文字列のリストを含む。そのため、フィルタの出力は、フィルタを通過する第１の製品と互換性のある、あるいはかかる第１の製品のアクセサリーである１つ以上の推奨製品のセットであり得る。マッピングテーブルは、任意数のエントリを有し得る。アクセサリーフレームワークは、第１の製品がフィルタを通過する際、マッピングテーブルで特定されるすべての第２の製品に対して第１の製品の第２レベルフィルタリングを実行するときに使用するマッピングテーブルのコンテンツを取得するように構成されている。各々のマッピング・テーブル・エントリは、第２レベルのフィルタリングステップで、施行にあたっての必須属性を特定し得る。こうして各マッピングテーブルは、関連付けられた第２の製品が第１の製品と互換性を持つために満たす必要のある制約を有する。
【００７１】
この手法の利点は、複雑なフィルタまたは計算されたフィルタを開発するのに、データベーススキーマの変更を必要とせず、フィルタ宣言に配置される小さなプログラムコードを準備するだけで良いということである。
【００７２】
図３は、一実施形態にかかる、アクセサリーフレームワーク１１２を実装および使用するための処理例を表すフローチャートである。ステップ３０２で、カスタム製品を定義する属性および属性値を使用して、上記表現［１］から［９］で説明したような１つ以上のｋｅｙ−ｖａｌｕｅ式が形成される。例えば、ユーザは、特定のカスタム印刷物製品の寸法を選択し得るか、あるいは別の方法で指定し得る。これらの寸法は、１つ以上のｋｅｙ−ｖａｌｕｅペアを含む属性文字列へとシリアル化され得る。ｋｅｙ−ｖａｌｕｅペアは、印刷物の幅を特定する幅キーおよび対応値を含む第１のｋｅｙ−ｖａｌｕｅペアと、印刷物の高さを特定する高さキーおよび対応値を含む第２のｋｅｙ−ｖａｌｕｅペアと、を含み得る。
【００７３】
ステップ３０４で、ｋｅｙ−ｖａｌｕｅ式は、カスタム製品と関連付けられたアクセサリーフィルタと照合される。例えば、幅および高さ属性のｋｅｙ−ｖａｌｕｅペアは、関連付けられた幅および高さ値に基づき、付属の額製品の互換額サイズを特定するフィルタと照合され得る。このフィルタは、先述のフィルタのセットＩＤ、製品ＩＤ、製品タイプ、コンテキスト、フィルタ、フィルタ式、およびフィルタ変数のうち１つまたは複数を含み得る。
【００７４】
ステップ３０６では、アクセサリー製品の属性の正当値のセットを判断するために、アクセサリーフィルタが適用される。例えば、カスタム印刷物が［３２，４８］というサイズを有する場合、施行ロジックは、付属額のサイズを［３２，４８］に制限し得る。あるいは、クロッピングや他のカスタマイズを許可するために、［３０−３２，４６−４８］といったサイズの範囲を許可し得る。
【００７５】
ステップ３０８で、属性を正当な属性値のセットに制限するために、アクセサリー製品に制約が課される。このステップは、ユーザを制限するか、あるいは別の方法で、ユーザが不当なアクセサリー製品の属性値を選択するのを防ぐ施行ロジックを含み得る。施行ロジックは、正当な値のセットから外れた属性値を有するアクセサリーの推奨も防ぎ得る。このステップは、マッチしたアクセサリー製品と関連付けられたフィルタによって説明されたカスタム製品の互換性を判断するために、先述の第２のフィルタリングを実行することも含み得る。そのため、アクセサリー製品が第１のレベルのフィルタリングを満たした場合でも、カスタム製品に互換性がないと第２レベルフィルタリングが特定した場合には、施行ロジックがアクセサリー製品を除外し得る。
【００７６】
３．４  グループ化された製品向けのバンドルフレームワーク
一実施形態において、製品オプションフレームワークは、他の属性の値に依存する処理属性をサポートするためのロジックを提供するバンドルフレームワークを含むか、あるいはかかるバンドルフレームワークにアクセスすることができる。このフレームワークにより、あるアクセサリーが特定の第１の製品に適していない場合があるということ、そして、製品製造という観点と、製品のデジタル画像がディスプレイ装置で視覚化またはレンダリングできるかどうかという観点との両方から互換性を判断するということを説明することができる。
【００７７】
図６は、製品バンドルとフィルタのセット、そしてアクセサリー製品の間の関係例を表している。一実施形態において、製品バンドルは、グラフィカル・ユーザ・インターフェイスで一緒に視覚化でき、かつ互換性があるか、あるいは一緒に使用するため、もしくは組み合わせたカスタムメイドの製品で使用するために一緒に注文できる２つ以上製品の関連付けと定義される。バンドルフレームワークを実装するロジックは、製品間の依存関係を解決することができる。
【００７８】
一実施形態では、製品バンドル６０２が、印刷物６０４および額６０６など、２つ以上製品を含む。バンドルは、依存関係を反映し得る。例えば、額６０６がバンドルから削除されると、印刷物６０４が残り得る。そして独立して視覚化および注文できるようになる。依存関係は必須ではなく、複数の製品を、依存関係なくバンドルに加えることができる。対照的に、印刷物６０４が削除されると、額が額入り製品と別に注文されることはないので、額６０６も削除される必要がある。
【００７９】
各製品は、フィルタのセット６０８における特定のフィルタ６１０Ａ、６１０Ｂと関連付けられている。各フィルタ６１０Ａ、６１０Ｂは、製品バンドル６０２における対応構成製品とマッチし、フィルタのセット６０８を介して製品バンドルと関連付けられている。フィルタのセット６０８は、個々のフィルタ６０１Ａ、６１０Ｂのすべてが製品バンドル６０２内の製品に各々マッチする場合に限り有効である。そのため、フィルタのセット６０８は、全体として製品バンドルに適用される結合された制約を施行することができる。一実装形態では、フィルタのセットが、自らのマッピングテーブルで、１つ以上の特定のアクセサリー製品にバインドされ得る。その目的は、そのフィルタのセット内の全フィルタが製品バンドルの対応製品にマッチすると判断された場合に、指定されたアクセサリー製品を推奨することである。
【００８０】
額入り印刷物用のハンガー６１２などのアクセサリー製品が、そのフィルタの依存マッチとしてフィルタ６１０Ｂの１つと関連付けられ得る。一実施形態では、フィルタのセット６０８が、特定の依存製品を参照する１つの依存関係の宣言か、あるいは複数の依存製品にマッチするオプション文字列を含む。そのため、ハンガー６１２など特定の依存製品が製品バンドル６０２に追加されると、カスタムメイドの提供、注文、あるいはユーザ・インターフェイス・ディスプレイでの表示のためにこの依存製品を許可するまたは削除する時期を判断する目的で、その製品バンドルのフィルタのセット６０８で定義された依存関係が使用され得る。依存マッチは、バンドルの構成製品の両方がそのバンドルに存在する場合に限り、特定のアクセサリー製品がバンドルと関連付けられるのが適切であり得るか、あるいはかかる特定のアクセサリー製品が、そのバンドル内の特定の製品とだけ関連付けられるのが適切であり得るというコンセプトを反映する。例えば、バンドル６０２が印刷物６０４と額６０６とを含む場合には、組み合わせた額入り製品用のハンガー６１２を顧客に提供するのが適切であり、そのハンガーは、その特定の額６０６とだけ互換性を持ち得るため、そのハンガーは額に依存している。ただし、その額６０６がバンドルから削除されたら、ハンガー６１２が提供されるべきでない。
【００８１】
一実施形態において、バンドルフレームワークは、組み合わせた製品のどのビューが有効であるか、あるいはグラフィカル・ユーザ・インターフェイスまたはどのビューを他のディスプレイに表示すべきかを判断することによってバンドル製品の正確なレンダリングをサポートするためのロジックを備える。概して、製品がバンドルに追加されると、このバンドルロジックは、各製品を調べ、先述のとおり各製品をフィルタに基づいてフィルタリングし、フィルタのマッチに基づいて許可された１つ以上のビューを選択および注文するように構成されている。例えば、製品タイプがシャツであれば、シャツに適切なビューまたはレンダリングロジックだけが使用されるべきである。他の製品タイプを伴う場合には、他のビューの方がその特定の製品タイプを良好にレンダリングまたは例示し得る。
【００８２】
レンダリングロジックが、バンドル内の製品と対応フィルタとを完全にマッチさせる必要はない。図７は、許可された製品レンダリングビューを定義する２つのフィルタを有するフィルタのセットと関連付けられた３つの構成製品を有する製品バンドルを表している。このバンドル内の製品のうち２つしか、マッチするレンダリングフィルタを持たないことが確認され得る。第３の製品に対するマッチはなくても良く、単にバンドル内のある製品がレンダリングされないことを意味するに過ぎない。製品の性質によってはこのような状況も適切であり得る。むしろ、フィルタが対応製品の下位セット一式であれば、完全にマッチする下位セットでなくても、レンダリングは進行することができる。ただし、マッチするフィルタの数が大きいほど、ビューの関連性が高いことを表す。フィルタは順序を表し得る。例えば、印刷物の画像を最初にレンダリングし、次にマットおよび印刷物の上に額をレンダリングするのは適切であり得る。
【００８３】
レンダリングロジックは、製品オプションとバンドルとを収容するように構成され得る。一実施形態において、レンダリングロジックは、レンダリングファイルを定義することをサポートしており、純粋なプログラミングではなく、宣言ステートメントを用いてレンダリングロジックに要素を加える。ビューの属性は、レンダリング処理を行う構成ファイルの働きをするレンダリングファイルで宣言され得る。一実施形態において、レンダリングロジックの機能は、他の宣言ステートメントと先述のマッチング構文とによって製品のバンドルにマッチングされる。この構成では、レンダリング構成ファイル内の宣言が、先述のマッチング構文に従って分析された後、レンダリングパラメータに変換され得る。例えば、属性エンジンによって消費可能な宣言は、額入り印刷物の隅の許可ビューを指定し、隅の正しい視覚的レンダリングを作成するためのパラメータを生成する出力構成ファイルを生成し得る。
【００８４】
製品のマウントがマットタイプかフロートタイプかに応じて各種製品の互換ビューを作成するために、特定の製品の宣言とレンダリングロジックとが協調し得る。額のサイズに基づいて、レンダリング画像にスケーリングが適用され得る。例えば、顧客の選んだ印刷物が比較的小さいものであれば、印刷物の注文時にスケーリングが適用されて拡大され、印刷物の境界外の表示領域を除外する。逆に、大きな印刷物は、正しくレンダリングするために縮小する必要があり、スケーリングおよび他の効果の指示が、レンダリングフィルタの一部として宣言され得る。レンダリングのためのフィルタ宣言は、額要素、マット、および他の製品特徴のレンダリング処理時に使用するテクスチャへの参照も含み得る。
【００８５】
３．５  デフォルト値指定フレームワーク
一実施形態では、エンドユーザである消費者に、特定の製品タイプごとにデフォルトの属性のセットを提供するのが有用であり得る。現在の手法は、各々多数の属性を有する多数の製品タイプを提供する目的で使用され得るため、結果的に多数の順列が存在する。そのため、選択肢の数が多すぎてユーザを圧倒してしまう可能性がある。そのため、一実施形態では、デフォルト値指定フレームワークが、ユーザの製品選択を支援する各種デフォルトの属性値を宣言および施行するためのロジックを備える。デフォルト値指定フレームワークは、新しい製品に適切なデフォルト値を指定してシステムに導入するための柔軟かつ宣言的なメカニズムを提供する。
【００８６】
デフォルト値指定フレームワークは、各種製品属性に適切なデフォルト値を割り当てる上でも有用である。例えば、製品タイプがＴシャツであれば、サイズ属性の適切なデフォルト値はＬａｒｇｅであり得る。製品タイプが幼児服であれば、サイズの適切なデフォルト値は「６か月」であり得る。したがって、サイズのすべての値が全製品タイプに該当するとは限らないということが明らかであろう。そのため、アナリストまたは他の製品マネージャは、システムが値オプション例をエンドユーザ消費者に速やかに表示できるように、属性値ごとにデフォルト値を宣言することができる。例えば、ユーザはシャツを選択した場合もあるが、色値を選択していなかった場合もある。デフォルト値指定エンジンは、宣言を確認して、現在のエンドユーザ選択のセットに最も該当する色を特定し、そのデフォルト値をレンダリング画面と他の額ワークおよびフィルタとに適用することができる。
【００８７】
一実施形態では、ユーザが特定の属性値を選択または変更したときに、同じ製品の他の属性のデフォルト値も変わり得る。例えば、製品がジークレー印刷物であり、マウントタイプがフロートであれば、関連するデフォルト値は、｛Ｍｏｌｄｉｎｇ！＝Ｍｅｔａｌ｝（ｉｓ  ｎｏｔ  ｍｅｔａｌ）となる。あるいは、製品が印刷物であり、印刷サイズが［２０，１６］であり、マウントタイプがマットであれば、良好なデフォルト外観を提示するために、マットサイズ値がデフォルトで３”になり得る。小型の印刷物の場合、デフォルトのマットサイズはずっと小さいこともある。
【００８８】
デフォルト値宣言の一例は、Ｓｉｚｅ．Ｄｅｆａｕｌｔ＝Ｌａｒｇｅであり、デフォルト値宣言の代替例が、Ｗｈｅｎ  Ｓｔｙｌｅ＝ＩｎｆａｎｔＴＳｈｉｒｔ  ｔｈｅｎ  Ｓｉｚｅ．Ｄｅｆａｕｌｔ＝６Ｍｏｎｔｈｓである。連続するレベルのデフォルト値が提供され得る。代替宣言の一例を挙げると、Ｉｆ  Ｓｔｙｌｅ＝ＩｎｆａｎｔＴＳｈｉｒｔ＆Ｃｏｌｏｒ＝Ｌｉｍｅ：：Ｓｉｚｅ．Ｄｅｆａｕｌｔ＝１２Ｍｏｎｔｈｓである。こうして、連続するデフォルト宣言が確立され得る。粒度が段階的に大きくなるにつれて、そのデフォルト値を指定するための規則のセットが狭まり、それまでの広い規則をオーバーライドする。
【００８９】
一実施形態では、フィルタの各デフォルト値宣言が、上記と同じ形式で表される。フィルタ変数宣言と現在のコンテキストとに基づいてフィルタ式変数が評価され、フィルタが生成される。生成されたフィルタは、特定の製品とマッチングされ、デフォルトの属性値にマッピングされる。デフォルトの属性値は、フィルタのマッピングテーブルで宣言され得る。
【００９０】
図４は、一実施形態にかかる、デフォルト値指定フレームワーク１１６を実装および使用するための処理例を表すフローチャートである。ステップ４０２で、カスタム製品を定義するか、あるいは別の方法でカスタム製品と関連付けられる属性および属性値を使用して、上記表現［１］から［９］で説明したような１つ以上のｋｅｙ−ｖａｌｕｅ式が形成される。実装形態によっては、これらが、ステップ３０２で、アクセサリーフィルタリングまたはさまざまな属性および値に対して使用されるカスタム製品の属性および値と同じであり得る。
【００９１】
ステップ４０４で、ｋｅｙ−ｖａｌｕｅ式がデフォルトフィルタと照合される。例えば、ユーザがＴシャツをデザインしており、黒い色を選んだ場合には、「Ｃｏｌｏｒ」属性および関連付けられた値「Ｂｌａｃｋ」が、１つ以上の該当するデフォルトフィルタと照合され得る。このコンテキストにおける該当デフォルトフィルタは、デフォルト値を判断および選択するときに色属性が使用される任意のフィルタであり得る。
【００９２】
ステップ４０６で、デフォルトフィルタが適用され、カスタム製品および／またはアクセサリー製品の属性のデフォルト値が判断される。例えば、ユーザが黒色を選択すると、デフォルトフィルタが、ラージがそのＴシャツのデフォルトサイズであると判断し得る。野球帽が推奨された場合には、推奨されるデフォルト色が緑であり得る。
【００９３】
ステップ４０８で、デフォルト値がカスタム製品および／またはアクセサリー製品に適用される。このステップは、デフォルト値を選択することと、選択された値がエンドユーザに表示されるようにすることと、を含み得る。例えば、ユーザがカスタムＴシャツをデザインしており、黒色を選択すると、システムはＬａｒｇｅをデフォルトサイズとして自動的に選択し得る。これらの属性値は、ラージサイズの黒色Ｔシャツの代表画像をレンダリングする目的で使用され得る。
【００９４】
カスタム製品をデザインしている間に、ユーザは他の属性のデフォルト値に影響する１つ以上の属性値を更新し得る。そのため、更新された属性値がステップ４１０で受信されると、プロセスはステップ４０２に戻ってデフォルト値を更新し得る。例えば、ユーザが色属性をＢｌａｃｋからＰｕｒｐｌｅに変えると、デフォルトのサイズ属性はＬａｒｇｅからＭｅｄｉｕｍに変更され得る。
【００９５】
３．６  レンダリングフレームワーク
レンダリングフレームワーク７３０は、１つ以上のコンピュータプログラム、ストアドプロシージャなど他のソフトウェア要素、または次に示す関数を実行するように構成された他のコンピュータロジックを備え得る。さらに、レンダリングフレームワーク７３０は、３Ｄモデルを、ブラウザなどのユーザステーションに送達可能な２Ｄグラフィカル画像に変換するように特別構成されているロジックに連結され得る。一実施形態において、レンダリングロジックはリアルビューレンダリングエンジンと称される。
【００９６】
一実施形態では、ユーザが製造用に構成している製品の人工画像がユーザに示される。このレンダリングを作成するに当たり、すべての製品オプションが事前に作成された画像として列挙されるわけではない。最終製品サイズなど一部のオプションは、画像生成に影響しない場合がある。額の色や印刷物の表面など他のオプションが、画像に人工的に適用され得る。適切なｋｅｙ−ｖａｌｕｅ下位のセットを選択し、それらをリアルビューレンダリングエンジンにマッピングすることが、オプションフレームワークの別の拡張である。
【００９７】
一実施形態では、製造され得る代替の製品、アクセサリー、およびバンドルを提案するための一連の画像がユーザに表示される。製品が製造可能であり、製品を人工的にプレビュー可能であるという制約、そしてユーザまたは販売者によって課された任意の付加的なコンテキスト上の制約という複数の制約を満たすすべての可能な構成の中から、実現され得る製品のセットをオプションフレームワークが選択する。解のセットを制約できるだけでなく、制約された解を多少該当するものとしてマークできることが、優れたユーザエクスペリエンスを提供する上での鍵である。
【００９８】
一実施形態において、オプションフレームワークは、選択された製品属性をレンダリングエンジンの指示にマッピングする目的で使用される。このマッピングは、先述のマッチングロジックを実装し得る。例えば、選択された製品属性のｋｅｙ−ｖａｌｕｅペアは、特定のレンダリングファイルにマッピングされ得る。リアルビューレンダリングエンジンは、レンダリングファイルにアクセスして画像を生成し得る。
【００９９】
一実施形態において、オプションフレームワークは、外部の画像キャッシュを最大限に有効利用し、性能を最大限に引き出すために、生成されたリアルビュー画像と関連付けられたクエリ文字列を正規化および最小化する目的で使用される。
【０１００】
図５は、一実施形態にかかる、レンダリングフレームワーク１３０を実装および使用するための処理例を表すフローチャートである。ステップ５０２で、１つ以上のカスタム製品を定義する属性および属性値を使用して、上記表現［１］から［９］で説明したような１つ以上のｋｅｙ−ｖａｌｕｅ式が形成される。一実施形態において、このステップは、製品バンドルにおける各々の製品のｋｅｙ−ｖａｌｕｅ式を形成することを含み得る。
【０１０１】
ステップ５０４で、ｋｅｙ−ｖａｌｕｅ式がレンダリングファイルにマッピングされる。例えば、ユーザが寸法３２×４８インチ（８１．２８×１２１．９２センチメートル）のカスタム印刷物をデザインし、その印刷物を黒色の木製額とバンドルした場合には、Ｓｉｚｅ＝［３２ｘ４８］＆Ｍｏｌｄｉｎｇ＝Ｗｏｏｄ＆Ｃｏｌｏｒ＝Ｂｌａｃｋというｋｅｙ−ｖａｌｕｅ式が形成され得る。この式は、カスタム額に収められた印刷物を反映する画像をレンダリングするためにレンダリングエンジンによって処理され得る１つ以上のレンダリングファイルにマッピングされ得る。
【０１０２】
ステップ５０６で、レンダリングエンジンが、カスタム製品を表す画像をレンダリングする。カスタム製品または製品バンドルの適切な画像表示を生成するためにステップ５０４で特定されたレンダリングファイルを使用するこのステップで、任意の適切なレンダリングプロセスが実施され得る。例えば、このステップは、３Ｄモデルを、ブラウザなどのユーザステーションに送達可能な２Ｄグラフィカル画像に変換することを含み得る。
【０１０３】
ステップ５０８で、代表画像が、製品をデザインしているエンドユーザに表示される。このステップは、代表画像を、ウェブブラウザ、またはユーザがカスタム製品をデザインする目的で使用している他のアプリケーションプログラムによって表示させることなどを含み得る。
【０１０４】
３．７  追加フレームワーク
先述のフレームワークに加え、属性エンジン１０８では、複雑なデータベーススキーマや複雑なプログラミングを必要とせずに、他のフレームワークの追加および実装を容易に行うことができる。一実施形態では、価格設定フレームワークが提供され得る。価格設定フレームワークは、ｋｅｙ−ｖａｌｕｅ式を対応する価格値にマッピングし得る。例えば、新しい製品が、価格を計算するときに該当する特定の属性の新しい属性値を含む場合に、新しいキー名が生成され、価格設定テーブルに書き込まれ得る。その後、このｋｅｙ−ｖａｌｕｅマッチは、価格設定フィルタを適用して、特定の属性が新しい属性値を有する場合に、価格がその特定された価格に変更されるようにし得る。
【０１０５】
別の実施形態では、システムの他の要素が製品記述を検索または取得できるように、記述フレームワークが提供され得る。
【０１０６】
４．０  実装メカニズム−ハードウェアの概要
一実施形態によると、本明細書に記載されている技法は、１つ以上の特殊用途の演算装置によって実施される。特殊用途の演算装置は、それらの技法を実行するために有線接続され得るか、あるいは、それらの技法を実行するように永続的にされている１つ以上の特定用途向け集積回路（ＡＳＩＣ）またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などのデジタル電子装置を含み得るか、ファームウェア、メモリ、他の記憶領域、またはそれらの組み合わせに記憶されているプログラム命令に従ってそれらの技法を実行するようにプログラムされた１つ以上の汎用ハードウェアプロセッサを含み得る。かかる特殊用途の演算装置はまた、それらの技法を達成するために、カスタム配線されたロジック、ＡＳＩＣ、またはＦＰＧＡをカスタムプログラミングと結合し得る。特殊用途の演算装置は、それらの技法を実装するために、有線接続された、かつ／またはプログラムロジックを包含しているデスクトップコンピュータシステム、可搬型コンピュータシステム、ハンドヘルド装置、ネットワーキング装置、またはその他任意の装置であり得る。
【０１０７】
例えば、図８は、コンピュータシステム８００を表すブロック図である。コンピュータシステム８００は、情報を通信するためのバス８０２または他の通信メカニズムと、情報を処理するための、バス８０２と連結されたハードウェアプロセッサ８０４と、を備える。ハードウェアプロセッサ８０４は、例えば汎用マイクロプロセッサであり得る。
【０１０８】
コンピュータシステム８００は、プロセッサ８０４によって実行される情報と命令とを記憶するための、バス８０２に連結された、ランダム・アクセス・メモリ（ＲＡＭ）や他の動的な記憶装置などのメインメモリ８０６も備える。メインメモリ８０６は、プロセッサ８０４によって実行される命令の実行中に一時的な変数または他の中間情報を記憶する目的でも使用され得る。かかる命令は、プロセッサ８０４にアクセス可能な非一時記憶媒体に記憶されると、コンピュータシステム８００を、命令で指定された処理を実行するようにカスタマイズされている特殊用途マシンに変換する。
【０１０９】
コンピュータシステム８００は、プロセッサ８０４のための静的な情報と命令とを記憶するための、バス８０２に連結された読み出し専用メモリ（ＲＯＭ）８０８または他の静的な記憶装置をさらに備える。そして、情報と命令を記憶するための磁気ディスクや光学ディスクなどの記憶装置８１０がバス８０２に提供または連結されている。
【０１１０】
コンピュータシステム８００は、陰極線管（ＣＲＴ）など、情報をコンピュータユーザに表示するためのディスプレイ８１２に、バス８０２を介して連結され得る。そして、プロセッサ８０４に情報およびコマンドのセットを伝達するための、英数字および他のキーを備える入力装置８１４がバス８０２に連結されている。別のタイプのユーザ入力装置は、方向情報およびコマンドのセットをプロセッサ８０４に伝達するため、およびディスプレイ８１２上のカーソル移動を制御するための、マウス、トラックボール、あるいはカーソル方向キーなどのカーソルコントロール８１６である。入力装置は、第１の軸（例えばｘ）と第２の軸（例えばｙ）という２本の軸による２自由度を有するのが典型的で、これらの軸により、平面における位置を指定することができる。
【０１１１】
コンピュータシステム８００は、カスタマイズされた有線接続ロジック、１つ以上のＡＳＩＣまたはＦＰＧＡ、そして、（コンピュータシステムとの組み合わせにより、コンピュータシステム８００を特殊用途マシンにするか、あるいはコンピュータシステム８００が特殊用途マシンとなるようにプログラムするファームウェアおよび／またはプログラムロジックを使用して、本明細書に記載された技法を実装し得る。一実施形態によると、本明細書の技法は、メインメモリ８０６に格納されている１つ以上の命令の１つ以上のシーケンスをプロセッサ８０４が実行したのを受けて、コンピュータシステム８００によって実行される。かかる命令は、記憶装置８１０など別の記憶媒体からメインメモリ８０６に読み込まれ得る。メインメモリ８０６に格納されている命令のシーケンスが実行されると、プロセッサ８０４が、本明細書に記載された処理ステップを実行する。代替実施形態では、有線接続回路が、ソフトウェア命令の代わりに、あるいはソフトウェア命令と組み合わせて使用され得る。
【０１１２】
本明細書で使用されている「記憶媒体」という用語は、マシンをある具体的な方法で動作させるデータおよび／または命令を記憶する任意の非一時媒体を表す。かかる記憶媒体は、不揮発性媒体および／または揮発性媒体を含み得る。不揮発性媒体は、例えば、記憶装置８１０などの光学または磁気ディスクを含む。揮発性媒体は、メインメモリ８０６などの動的なメモリを含む。記憶媒体の一般的な形態として、例えば、フロッピー（登録商標）ディスク、フレキシブルディスク、ハードディスク、ソリッド・ステート・ドライブ、磁気テープ、またはその他任意の磁気データ記憶媒体、ＣＤ−ＲＯＭ、その他任意の光学データ記憶媒体、穿孔のパターンを有する任意の物理媒体、ＲＡＭ、ＰＲＯＭとＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、その他任意のメモリチップまたはカートリッジなどがある。
【０１１３】
記憶媒体は、伝送媒体とは別になっているが、併用され得る。伝送媒体は、記憶媒体間での情報伝送に関与する。例えば、伝送媒体として、バス８０２を構成する同軸ケーブル、銅線、光ファイバなどがある。伝送媒体は、無線または赤外線によるデータ通信中に生成される音波または光波などの形態をとることもできる。
【０１１４】
媒体の各種形態は、１つ以上の命令の１つ以上のシーケンスをプロセッサ８０４に伝えて実行させることに関与し得る。例えば、これらの命令はまず、リモートコンピュータの磁気ディスクまたはソリッド・ステート・ドライブで搬送され得る。リモートコンピュータは、これらの命令を自身の動的なメモリにロードし、モデムを使用して電話回線経由で送ることができる。コンピュータシステム８００のローカルモデムは、電話回線でデータを受信し、赤外線送信機を使用してデータを赤外線信号に変換する。赤外線検出器が赤外線信号で搬送されたデータを受信することができ、適切な回路がデータをバス８０２に配置することができる。バス８０２がそのデータをメインメモリ８０６に搬送し、そこからプロセッサ８０４が命令を取得して実行する。メインメモリ８０６によって受信された命令は、任意で、プロセッサ８０４による実行の前または後に記憶装置８１０に記憶され得る。
【０１１５】
コンピュータシステム８００は、バス８０２に連結された通信インターフェイス８１８も備える。通信インターフェイス８１８は、ローカルネットワーク８２２に接続されているネットワークリンク８２０に連結して双方向データ通信を提供する。例えば、通信インターフェイス８１８は、サービス総合デジタルネットワーク（ＩＳＤＮ）カード、ケーブルモデム、衛星モデム、または対応するタイプの電話回線とのデータ通信接続を提供するためのモデムであり得る。別例として、通信インターフェイス８１８は、互換性があるＬＡＮにデータ通信接続を提供するためのローカル・エリア・ネットワーク（ＬＡＮ）カードであり得る。無線リンクも実装され得る。かかる実装形態では、通信インターフェイス８１８が、各種情報を表すデジタル・データ・ストリームを搬送する電気、電磁、あるいは光信号を送受信する。
【０１１６】
ネットワークリンク８２０は、１つ以上のネットワークを経由して他のデータ装置へのデータ通信を提供するのが典型的である。例えば、ネットワークリンク８２０は、ローカルネットワーク８２２を経由して、ホストコンピュータ８２４との接続、あるいはインターネット・サービス・プロバイダ（ＩＳＰ）８２６によって運用されるデータ装置との接続を提供し得る。ＩＳＰ  ８２６は、現在「インターネット」８２８と一般に称される世界的なパケットデータ通信網を通じてデータ通信サービスを提供する。ローカルネットワーク８２２およびインターネット８２８はともに、デジタル・データ・ストリームを搬送する電気、電磁、あるいは光信号を使用する。各種ネットワークを流れる信号、そして通信インターフェイス８１８を介し、ネットワークリンク８２０を経由しコンピュータシステム８００との間でデジタルデータを搬送する信号が、伝送媒体の形態例である。
【０１１７】
コンピュータシステム８００は、ネットワーク、ネットワークリンク８２０、および通信インターフェイス８１８を通じて、メッセージの送信とプログラムコードなどのデータの受信とを行うことができる。インターネットを例に挙げると、サーバ８３０が、インターネット８２８、ＩＳＰ  ８２６、ローカルネットワーク８２２、通信インターフェイス８１８を通じて、リクエストされたアプリケーションプログラム用コードを送信し得る。
【０１１８】
受信されたコードは、プロセッサ８０４によって実行され、かつ／または記憶装置８１０または他の不揮発性記憶領域に記憶されて後で実行され得る。
【０１１９】
５．０  拡張および代替選択肢
上記明細書では、本発明の実施形態について、実装形態によって異なり得る数々の具体的な詳細に言及しながら説明してきた。そのため、本発明の範囲、および出願人が意図する本発明の範囲に関する唯一かつ排他的な指標は、本特許請求の範囲に記載される特定の形態の、本出願に由来する一組の請求項であり、後続の補正も含む。かかる特許請求の範囲に含まれる用語について本明細書で明示的に規定された定義が、特許請求の範囲で使用されているそのような用語の意味を司るものとする。したがって、請求項で明示的に引用されていない限定、要素、性質、特徴、利点または属性は、かかる請求項の範囲を一切限定することはないものとする。そのため、明細書および図面は、限定的な意味ではなく、例示的な意味であるとみなされるべきである。
【図１】
2014531637.tif 000003
【図２】
2014531637.tif 000004
【図３】
2014531637.tif 000005
【図４】
2014531637.tif 000006
【図５】
2014531637.tif 000007
【図６】
2014531637.tif 000008
【図７】
2014531637.tif 000009
【図８】
2014531637.tif 000010
【国際調査報告】
2014531637.tif 000011