(57)【特許請求の範囲】
【請求項１】
入力データを受け付けるデータ入力部と、
前記入力データに対応する出力データを生成するために実行される一連のＮ個（Ｎは２以上の整数）の処理の各々で使用可能な方式を示すルールを格納するルール格納部であって、前記Ｎ個の処理のうちの少なくとも二つの前記処理には、前記出力データを生成するに際して独立に使用可能な複数個の前記ルールが存在する、前記Ｎ個の処理ごとの前記複数のルールを格納するルール格納部と、
前記ルール格納部が格納する前記処理ごとの前記複数のルールを使用することによって、前記入力データから前記出力データを生成することができる一連のＮ個の処理からなる処理工程を示す組合せパターンであって、前記複数のルールが存在するそれぞれの前記処理から一つの前記ルールを選択することで得られ、かつ、前記複数のルールが存在するそれぞれの前記処理の前記複数のルールの個数どうしを乗じて得られる組合せの数だけ存在するそれぞれの組合せパターンを抽出するパターン抽出部と、
前記パターン抽出部によって抽出されたそれぞれの組合せパターンのすべてを網羅して実行し、前記入力データから前記出力データを生成するパターン実行部と、
前記パターン実行部によって実行された前記組合せパターンのうち、予め設定された条件を満足する前記組合せパターンを格納する特定情報格納部と
を備えたことを特徴とするデータ生成装置。
【請求項２】
前記ルール格納部は、
前記複数のルールとして、複数のアルゴリズムと、複数のパラメータ設定値との少なくともいずれかを格納することを特徴とする請求項１記載のデータ生成装置。
【請求項３】
前記データ入力部は、
前記入力データとして、前記出力データである差分データの作成に使用する旧版データと、前記旧版データから更新された新版データとを受け付け、
前記ルール格納部は、
前記複数のルールとして、複数の差分アルゴリズムと、前記差分データの生成に使用される複数のパラメータ設定値との少なくともいずれかを格納することを特徴とする請求項２記載のデータ生成装置。
【請求項４】
コンピュータを、
入力データを受け付けるデータ入力部、
前記入力データに対応する出力データを生成するために実行される一連のＮ個（Ｎは２以上の整数）の処理の各々で使用可能な方式を示すルールを格納するルール格納部であって、前記Ｎ個の処理のうちの少なくとも二つの前記処理には、前記出力データを生成するに際して独立に使用可能な複数個の前記ルールが存在する、前記Ｎ個の処理ごとの前記複数のルールを格納するルール格納部、
前記ルール格納部が格納する前記処理ごとの前記複数のルールを使用することによって、前記入力データから前記出力データを生成することができる一連のＮ個の処理からなる処理工程を示す組合せパターンであって、前記複数のルールが存在するそれぞれの前記処理から一つの前記ルールを選択することで得られ、かつ、前記複数のルールが存在するそれぞれの前記処理の前記複数のルールの個数どうしを乗じて得られる組合せの数だけ存在するそれぞれの組合せパターンを抽出するパターン抽出部、
前記パターン抽出部によって抽出されたそれぞれの組合せパターンのすべてを網羅して実行し、前記入力データから前記出力データを生成するパターン実行部、
前記パターン実行部によって実行された前記組合せパターンのうち、予め設定された条件を満足する前記組合せパターンを格納する特定情報格納部、
として機能させるためのデータ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のアルゴリズムからアルゴリズムの組み合わせを複数構築し、構築したそれぞれのアルゴリズムの組み合わせを実行することにより入力データに対応する最適な出力データを特定し、また最適な出力データを生成するアルゴリズムの組み合わせを特定するデータ生成装置に関する。
【背景技術】
【０００２】
一以上の処理を実行し所望の出力データを生成可能なアルゴリズムの組合せが複数あり、組合せごとに出力データの性能値に差異が生じる場合、最適な出力データを生成するアルゴリズムの組合せを取得し、また最適なアルゴリズムの組合せから出力データを取得したい場合がある。
【０００３】
これに関して、従来例では、アルゴリズム最適化方法の例として、差分更新での差分データ作成に関するアルゴリズム、方式について開示している（特許文献１〜５）。しかし、これらはいずれも、差分データを作成する方式や、その際の差分サイズ削減のための特定の方式（アルゴリズム）について示したものである。複数のアルゴリズムから最適なアルゴリズムの組合せ、あるいは最適なアルゴリズムの組合せにより生成された出力データを提供する技術については開示していない。
【０００４】
１つ以上の処理を実行して所定のデータの作成する場合であってデータ作成の各過程で使用する方式／アルゴリズムが複数あり、その種類によって、出力結果となる出力データの性能値（ファイルサイズ、画質など）に差異が生じるような場合において、各過程で適用可能な複数の方式／アルゴリズム、あるいはそれらを組み合わせたパターンについて網羅的に実際にデータを出力して条件値となる値（差分更新の例では差分サイズ）を比較して最適な（同、差分サイズが最小となった）方式／アルゴリズム、あるいはそれらの「組合せパターン」を得ることが出来れば、正確かつ効率的に作業を行うことが出来る。
【０００５】
しかし、上記のように従来例の差分更新に関しては、このような技術は開示されていない。このため、例えばデータの種別により差分傾向が異なる差分サイズを最小化するには、データ種別ごとに差分傾向を分析して、差分抽出方式をチューニングする必要があった。データ種別毎に最適な差分抽出方式、差分表現方式を見出すこれらの分析作業は、データ規模が小さければ手作業の実施である程度可能であったが、大容量データの場合は手動で行うには作業負荷が高い。
【０００６】
また、差分量は差分抽出方式・差分表現方式の組み合わせによっても異なるので、手作業でこれらの網羅的な調査・分析を行うことは作業負荷が大きい。
【０００７】
また、対象パターン数が膨大な場合、網羅的な調査・分析を行えず、最適パターン検出の精度が低下し、品質的にも問題である。
【特許文献１】特開２００４−１５２１３６号公報
【特許文献２】特開２００４−２８７７０５号公報
【特許文献３】特開２００３−２５６２４８号公報
【特許文献４】特開２００４−１９１４１９号公報
【特許文献５】特開２００２−３２７７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明は、一以上の処理を実行し所望の出力データを生成可能なアルゴリズムの組合せが複数あり、組合せごとに出力データの性能値に差異が生じる場合に、最適な出力データを特定し、また最適な出力データを生成するアルゴリズム組合せを特定する装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明のデータ生成装置は、
入力データから前記入力データに対応する出力データを生成するデータ生成装置において、
前記入力データを受け付けるデータ入力部と、
前記出力データの生成に使用可能な複数のルールをメモリに記憶して格納するルール格納部と、
前記ルール格納部が前記メモリに記憶して格納した前記複数のルールのうち前記出力データの生成に使用するルールを選択して前記メモリから読み出し、選択して読み出した前記ルールに基づいて、前記入力データから前記出力データを生成可能な互いに異なる複数の出力データ生成経路を構築する経路構築部と、
前記経路構築部が構築したそれぞれの前記出力データ生成経路によって、前記出力データ生成経路ごとに前記出力データである経路別出力データを生成する出力データ生成部と
を備えたことを特徴とする。
【発明の効果】
【００１０】
本発明により、一以上の処理を実行し所望の出力データを生成可能なアルゴリズムの組合せが複数あり、組合せごとに出力データの性能値に差異が生じる場合において、各アルゴリズムの組合せごとの出力データを自動的に得ることができる。
【発明を実施するための最良の形態】
【００１１】
実施の形態１．
図１〜図１０を用いて、実施の形態１を説明する。実施の形態１は、後述の実施１〜実施例３に共通する最適アルゴリズム判定装置の基本構成と、基本動作とを説明する。そして、後述の実施例１〜実施例３では、最適アルゴリズム判定装置をファイル圧縮に適用した場合（実施例１）、差分データ更新に適用した場合（実施例２）、及び音楽ファイル変換に適用した場合（実施例３）について説明する。
【００１２】
実施の形態１の最適アルゴリズム判定装置は、同一の入力データをもとに１つ以上の処理を実行して所定の出力データを作成する場合であって、出力データを作成する各過程において使用可能な方式／アルゴリズムが複数あり、その種類により出力結果となる出力データの性能値（例えば、ファイルサイズ、画質など）に差異が生じるような場合において、各過程で適用可能な複数の方式／アルゴリズム、あるいはそれらを組合せたパターンについて網羅的に実際に出力データを生成し、判定のための条件値となる値（差分更新の例では差分サイズ）を比較して最適な方式／アルゴリズム、あるいはそれらの組合せ、最適出力データ等を得ることができる装置である。
【００１３】
図１は、本実施の形態１のシステム構成を示す構成図である。図１は、実施例１で述べるファイル圧縮を例にした場合を示している。図１のシステムでは、最適アルゴリズム判定装置１００と端末装置２２０とがインターネット２１０に接続しており互いに通信可能であり、最適アルゴリズム判定装置１００から端末装置２２０に圧縮ファイルを送信可能である。また、最適アルゴリズム判定装置１００は、メモリカード８１９に圧縮ファイルを記憶させることができる。最適アルゴリズム判定装置１００は、複数のアルゴリズムからアルゴリズムの組合せを複数構築し、構築したそれぞれのアルゴリズムの組合せを実行することにより、入力データに対応する最適な出力データを得る。
【００１４】
以下、図２〜図５を用いて、最適アルゴリズム判定装置１００の動作の概要を説明する。まず、下記（１）〜（３）の用語を説明し、続いて図２〜図５により、具体的に用語及び動作を説明する。
以下において、
（１）「ルール」とは、入力データからその入力データに対応する出力データの生成処理に使用可能なアルゴリズム、あるいは「パラメータ組合せ設定」等の方式、手段をいう。
（２）「実行パターン」とは、原則として、一つの処理において独立して適用可能なルールをいう。
（３）「組合せパターン」（出力データ生成経路）とは、「ルール」に基づいて構築された、入力データから出力データを生成することができる一連の処理工程をいう。なお、「組合せパターン」は少なくとも一つのルールを含めばよい。また、「組合せパターン」を「探索パターン」と呼ぶ場合がある。
【００１５】
図２は、最適アルゴリズム判定装置１００が「組合せパターン」を抽出（構築）する場合の例を示す図である。
（１）入力データ２０１から、出力データＡを生成する場合を想定する。同一の入力データ２０１から、「ルール１−１」と「ルール１−２」とのいずれかを使用して出力データが生成されるとする。処理１の「実行パターン」は、「ルール１−１」と「ルール１−２」である。この場合、同一の入力データ２０１であっても「ルール１−１」を適用する場合と、「ルール１−２」を適用する場合とでは、出力結果である出力データａ１と出力データａ２とについて、その性能値（ファイルサイズ、画質など）に差異が生じる場合を想定する。すなわち、出力データａ１と出力データａ２とは、ともに出力データＡとなるべき出力データであるが、適用するアルゴリズムが異なるため、性能値が異なる。本実施の形態１、実施例１〜実施例３ではこのような場合を想定している。
（２）最適アルゴリズム判定装置１００（図８で後述する探索パターン抽出部１０４）は、処理１に適用することができる「ルール１−１」と「ルール１−２」とを選択する。そして、選択したこれらのルールから、「組合せパターン１１」（出力データ生成経路）と、「組合せパターン１２」（出力データ生成経路）とを抽出する。最適アルゴリズム判定装置１００（図８で後述する探索パターン実行部１０５）は、抽出された「組合せパターン１１」、「組合せパターン１２」を順次実行し、それぞれの出力データａ１（経路別出力データ），出力データａ２（経路別出力データ）を生成する。最適アルゴリズム判定装置１００（図８で後述する最適パターン判定部１０７）は、出力データａ１と出力データａとのうちいずれかを最適データとして特定して出力データＡとし、また最適データを生成した「組合せパターン」を「最適組合せパターン」として特定する。
（３）このように、最適アルゴリズム判定装置１００は、出力データＡを生成するあらゆる「組合せパターン」（この場合「組合せパターン１１」、「組合せパターン１２」）を網羅的に実行し、最適な出力データＡ（出力データａ１，ａ２のいずれか）と、最適な出力データＡを生成した「組合せパターン」である「最適組合せパターン」とを特定する。
【００１６】
図３は、最適アルゴリズム判定装置１００が、「組合せパターン」を抽出（構築）する場合の別の例を示す図である。
（１）最適アルゴリズム判定装置１００（探索パターン抽出部１０４）は、入力データ２０１から出力データＢの生成に使用するルール（アルゴリズム、あるいはパラメータの組合せ設定）を選択する。図３は、最適アルゴリズム判定装置１００（探索パターン抽出部１０４）が、「ルール１−１」、「ルール１−２」、「ルール２−１」、「ルール２−２」の４つを選択した場合を示している。すなわち最適アルゴリズム判定装置１００が、処理１について「ルール１−１」、「ルール１−２」を選択し、処理２について「ルール２−１」、「ルール２−２」を選択した状態を示している。この場合、処理１の実行パターンは「ルール１−１」と「ルール１−２」であり、処理２の実行パターンは「ルール２−１」と「ルール２−２」である。
（２）最適アルゴリズム判定装置１００（探索パターン抽出部１０４）は、選択した「ルール１−１」等に基づいて、「組合せパターン」を抽出（構築）する。図３においては、最適アルゴリズム判定装置１００（探索パターン抽出部１０４）は、「ルール１−１」等に基づいて、
「ルール１−１」と「ルール２−１」から成る組合せパターン１３、
「ルール１−１」と「ルール２−２」から成る組合せパターン１５、
「ルール１−２」と「ルール２−１」から成る組合せパターン１４、
「ルール１−２」と「ルール２−２」から成る組合せパターン１６の
互いに異なる４通りの組合せパターンを抽出（構築）する。
（３）そして、最適アルゴリズム判定装置１００（探索パターン実行部１０５）は、組合せパターン１３等の互いに異なる４通りの組合せパターンを実行し、
組合せパターン１３（出力データ生成経路）から出力データｂ１（経路別出力データ）を生成し、
組合せパターン１４（出力データ生成経路）から出力データｂ２（経路別出力データ）を生成し、
組合せパターン１５（出力データ生成経路）から出力データｂ３（経路別出力データ）を生成し、
組合せパターン１６（出力データ生成経路）から出力データｂ４（経路別出力データ）を生成する。
（４）最適アルゴリズム判定装置１００（最適パターン判定部１０７）は各出力データｂ１等のなかから、いずれかを最適データとして選び、選んだ最適データを出力データＢとする。
【００１７】
図４は、最適アルゴリズム判定装置１００が、組合せパターンを構築する場合の別の例を示す図である。最適アルゴリズム判定装置１００（探索パターン抽出部１０４）は、処理１に適用することができる「ルール１−１」と「ルール１−２」とを選択する。そして、選択したこれらのルールから、「組合せパターン１７」と、「組合せパターン１８」とを抽出する。「組合せパターン１７」は「ルール１−１」から構築され、「組合せパターン１８」は「ルール１−１」と「ルール１−２」とから構築されている。この場合、例えば、「ルール１−１」は実施例２で後述する適用が必須の「必須ルール」であり、「ルール１−２」は適用しなくても構わない「オプションルール」である。最適アルゴリズム判定装置１００（探索パターン実行部１０５）は、抽出された「組合せパターン１７」、「組合せパターン１８」を順次実行し、それぞれの出力データｃ１，出力データｃ２を生成する。最適アルゴリズム判定装置１００（最適パターン判定部１０７）は、各出力データｃ１等のなかから、いずれかを最適データとして選び、選んだ最適データを出力データＣとする。また最適データを生成した「組合せパターン」を「最適組合せパターン」として特定する。
【００１８】
図５は、最適アルゴリズム判定装置１００が、「組合せパターン」を構築する場合の別の例を示す図である。最適アルゴリズム判定装置１００（探索パターン抽出部１０４）は、処理１に適用することができる「ルール１」を選択する。処理１の「ルール１」は、この場合、例えば、パラメータの組合せ設定であるとする。「ルール１」では、パラメータ設定として「Ｐ＝１」と「Ｐ＝２」とのいずれかの設定を選ぶ必要があるとする。この場合、処理１の「実行パターン」は「Ｐ＝１」と「Ｐ＝２」との２通りである。最適アルゴリズム判定装置１００（探索パターン抽出部１０４）は、「Ｐ＝１」を設定する「組合せパターン１９」と、「Ｐ＝２」を設定する「組合せパターン２０」とを抽出する。最適アルゴリズム判定装置１００（探索パターン実行部１０５）は、「組合せパターン１９」と「組合せパターン２０」とを実行し、出力データｄ１と出力データｄ２とを生成する。最適アルゴリズム判定装置１００（最適パターン判定部１０７）は、各出力データｄ１等のなかから、いずれかを最適データとして選び、選んだ最適データを出力データＤとする。また最適データを生成した「組合せパターン」を「最適組合せパターン」として特定する。
【００１９】
図６は、実施の形態１における最適アルゴリズム判定装置１００の外観を示す図である。図６において、最適アルゴリズム判定装置１００は、システムユニット８５０、液晶表示装置８１３、キーボード８１４、マウス８１５、コンパクトディスク装置（ＣＤＤ）８１８、プリンタ８２１を備え、これらはケーブルで接続されている。また最適アルゴリズム判定装置１００は、インターネット２１０に接続されている。
【００２０】
図７は、実施の形態１における最適アルゴリズム判定装置１００のハードウェア構成図である。図７において、最適アルゴリズム判定装置１００は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）８１０を備えている。ＣＰＵ８１０は、バス８２５を介してＲＯＭ８１１、ＲＡＭ８１２、液晶表示装置８１３、キーボード８１４、マウス８１５、通信ボード８１６、ＦＤＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ  Ｄｒｉｖｅ）８１７、ＣＤＤ８１８、メモリカード８１９、携帯音楽プレーヤー８２０、プリンタ８２１、磁気ディスク装置８３０と接続されている。ＲＡＭ８１２は、揮発性メモリの一例である。ＲＯＭ８１１、ＦＤＤ８１７、ＣＤＤ８１８、磁気ディスク装置８３０は不揮発性メモリの一例である。これらは、、記憶部あるいは格納部の一例である。
【００２１】
通信ボード８１６を介して最適アルゴリズム判定装置１００は、インターネット２１０に接続されている。また、通信ボード８１６、キーボード８１４、ＦＤＤ８１７などは、データ入力部の一例である。また、例えば、通信ボード８１６、液晶表示装置８１３、磁気ディスク装置８３０などは、出力部の一例である。
【００２２】
磁気ディスク装置８３０には、オペレーティングシステム（ＯＳ）８３１、ウィンドウシステム８３２、プログラム群８３３、ファイル群８３４が記憶されている。プログラム群８３３は、ＣＰＵ８１０、ＯＳ８３１、ウィンドウシステム８３２により実行される。
【００２３】
上記プログラム群８３３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ８１０により読み出され実行される。
【００２４】
ファイル群８３４には、以下に述べる実施の形態の説明において、「入力データ」、「出力データ」、「ルール」（アルゴリズム、パラメータ組合せの設定など）、「特定情報」として説明するものが記憶される。
【００２５】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、ＲＯＭ８１１に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、ハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。
【００２６】
また、以下に述べる実施の形態を実施するプログラムは、また、磁気ディスク装置８３０、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）、光ディスク、ＣＤ（コンパクトディスク）、ＭＤ（ミニディスク）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のその他の記録媒体による記録装置を用いて記憶されても構わない。
【００２７】
次に図８を用いて、実施の形態１における最適アルゴリズム判定装置１００の構成を説明する。図８は、実施の形態１における最適アルゴリズム判定装置１００の構成図である。最適アルゴリズム判定装置１００は、入力データに対して１つ以上の処理を実行し、入力データに対応する所定の出力データを出力する。
【００２８】
最適アルゴリズム判定装置１００は、アルゴリズム登録部１０１（ルール受付部）、最適パターン判定条件指定部１０２（目標値受付部）、アルゴリズム指定部１０３（選択条件受付部）、探索パターン抽出部１０４（経路構築部）、探索パターン実行部１０５（出力データ生成部）、データ入力部１０６、最適パターン判定部１０７（出力データ特定部）、アルゴリズム格納部１０８（ルール格納部）、及び特定情報格納部１０９を備える。
【００２９】
アルゴリズム登録部１０１等の各構成要素の機能を説明する。
（１）アルゴリズム登録部１０１（ルール受付部）は、データ処理に使用する各種アルゴリズム、あるいは「各種パラメータ組み合わせルール」の追加、削除を行う。アルゴリズム登録部１０１は、アルゴリズム格納部１０８に格納するためのルールの登録を受け付け、登録を受け付けたルールをアルゴリズム格納部１０８に格納する。また、アルゴリズム格納部１０８に格納したルールの削除を受け付け、受け付けたルールをアルゴリズム格納部１０８から削除する。
（２）最適パターン判定条件指定部１０２（目標値受付部）は、最適パターン判定部１０７による「最適組合せパターン」の判定において、判定条件となる目標性能値の入力を受け付けて設定する。ここで「目標性能値」とは、出力データに要求される目標性能を示す値である。例えば、最適アルゴリズム判定装置１００により出力データとして圧縮ファイルを生成する場合は、「目標性能値」は、「ファイルサイズ」である。
（３）アルゴリズム指定部１０３（選択条件受付部）は、前記探索パターン抽出部１０４がルールを選択する場合の「選択条件」をユーザから受け付ける。探索パターン抽出部１０４は、アルゴリズム指定部１０３が受け付けた選択条件に基づいて、ルールを選択する。例えば、選択条件として、ユーザは、アルゴリズム指定部１０３により、「組合せパターン」の抽出に使用するアルゴリズムを指定する。この場合、探索パターン抽出部１０４は、ユーザが指定したアルゴリズムに限定して選択する。
（４）探索パターン抽出部１０４（経路構築部）は、アルゴリズム格納部１０８がメモリに記憶して格納した複数のルールのうち出力データの生成に使用するルールを選択してメモリから読み出す。そして、選択して読み出したルールを使用して、入力データから出力データを生成可能な互いに異なる複数の「組合せパターン」（出力データ生成経路）を抽出（構築）する。
（５）探索パターン実行部１０５（出力データ生成部）は、探索パターン抽出部１０４の抽出した各探索パターンの順次実行を行う。探索パターン実行部１０５は、探索パターン抽出部１０４が抽出した複数の「組合せパターン」を順次実行し、各「組合せパターン」のそれぞれから、各「組合せパターン」ごとの出力データ（経路別出力データ）を生成する。
（６）データ入力部１０６は、処理対象となるデータを入力データとして受け付ける。
（７）最適パターン判定部１０７（出力データ特定部）は、探索パターン実行部１０５の実行結果から、最適パターン判定条件指定部１０２で指定された判定条件（目標性能値）に従い、最適な出力データの特定、及び最適な「組合せパターン」の特定等を行う。最適パターン判定部１０７は、最適パターン判定条件指定部１０２が受け付けた「目標性能値」に従い、探索パターン実行部１０５がそれぞれの「組合せパターン」によって生成した出力データのなかから「目標性能値」に最も適合する出力データを「最適データ」として特定する。特定結果は、出力部に出力する。また、最適パターン判定部１０７は、「最適データ」を生成した「組合せパターン」を「最適組合せパターン」（最適経路）として特定し出力部に出力する。
（８）アルゴリズム格納部１０８（ルール格納部）は、入力データに関するデータ処理に使用するアルゴリズムや「パラメータ組み合わせルール」等の「ルール」をメモリに記憶する。ここで「メモリ」とは、半導体素子やフラッシュメモリや磁気ディスクなどである。
（９）特定情報格納部１０９は、最適パターン判定部１０７が特定した最適データや、「最適組合せパターン」を格納する。
【００３０】
次に図９を参照して、最適アルゴリズム判定装置１００の動作を説明する。図９は、最適アルゴリズム判定装置１００の動作を示すフローチャートである。最適アルゴリズム判定装置１００のアルゴリズム格納部１０８のメモリには、出力データ作成のための各処理で使用する１つ以上のルール（変換方式／アルゴリズムなど）が、あらかじめアルゴリズム登録部１０１により登録されているものとする。最適アルゴリズム判定装置１００は、以下のＳ（ステップ）１〜Ｓ８を実行する。
【００３１】
Ｓ１において、まずユーザが、例えば、図６で述べたキーボード８１４、あるいはマウス８１５などの入力装置を用いて、変換対象とする入力データを指定すると、最適アルゴリズム判定装置１００は、データ入力部１０６に入力データ２０１を入力する。これによりデータ入力部１０６が入力データを受け付ける。
【００３２】
Ｓ２において、ユーザが、最適パターン判定条件指定部１０２により、最適パターン判定部１０７による「最適組合せパターン」の判定（あるいは最適データの判定）に使用する判定条件値（目標性能値）の設定を行う。ここで「判定条件値」とは、出力データに要求される目標性能を示す値であり、例えば出力データが圧縮ファイルであれば、目標のファイルサイズである。具体的には、ユーザがキーボード８１４、あるいはマウス８１５などの入力装置を用いて、判定条件を入力する。最適パターン判定条件指定部１０２は、入力された判定条件を受け付ける。
【００３３】
Ｓ３おいて、ユーザが、あらかじめ使用するアルゴリズム（ルール）を限定することが可能である。このＳ３はオプション的な過程である。選択するアルゴリズムを限定したい場合は、ユーザは、マウス８１５等の入力装置によりアルゴリズム指定部１０３に対して、探索パターン抽出部１０４が選択するアルゴリズムの選択条件を指定することが可能である。例えば選択条件の例として、探索パターン抽出部１０４が選択するべきアルゴリズムを指定する。あるいは、探索パターン抽出部１０４に選択させたくないアルゴリズムを指定する。この場合、次のＳ４では探索パターン抽出部１０４は、アルゴリズム指定部１０３が受け付けた選択条件にしたがって、アルゴリズムを選択する。
【００３４】
Ｓ４において、探索パターン抽出部１０４が、アルゴリズム登録部１０１によりアルゴリズム格納部１０８のメモリに記憶され格納されている複数のアルゴリズム（ルール）のうち出力データの生成に使用するアルゴリズムを選択してメモリから読み出す。そして、選択して読み出したアルゴリズムを使用して、図２〜図５で述べたような、入力データから出力データを生成可能な互いに異なる複数の「組合せパターン」を抽出（構築）する。
【００３５】
Ｓ５において、探索パターン実行部１０５は、Ｓ４で探索パターン抽出部１０４が抽出した「組合せパターン」を１つずつ実行する。１つ実行が終われば、未実行の「組合せパターン」がないかをチェックする（Ｓ６）。この処理を「組合せパターン」１つずつ繰り返し（Ｓ５，Ｓ６）、それぞれの「組合せパターン」ごとに出力データ（経路別出力データ）を生成する。
【００３６】
Ｓ７において、最適パターン判定部１０７は、探索パターン実行部１０５により生成された各「組合せパターン」の出力データから、ユーザによりステップＳ２で指定された判定条件に従い、最も「判定条件」に適合する出力データを最適データとして、また、その「最適データ」を出力した「組合せパターン」を「最適組合せパターン」として特定する。
【００３７】
Ｓ８において、最適パターン判定部１０７は、ステップＳ７で特定した「最適データ」や「最適組合せパターン」に関して、前記の「判定条件」に対応する「最適データ」の性能値である「最適データ性能値」（例えば、最適データのファイルサイズ）や、「最適組合せパターン」を構築するアルゴリズムなどの情報を、図７で出力部として示した、液晶表示装置８１３、プリンタ８２１、磁気ディスク装置８３０等の出力部に出力することによって、ユーザに通知する。
【００３８】
なお、最適パターン判定条件指定部１０２は、判定条件とする項目の種類や、さらにはその項目の値についての条件値（最小、最大、あるいは特定の値に近似）の指定を受け付け可能とする。
【００３９】
さらに、最適パターン判定条件指定部１０２は、後者の条件値の指定で特定の値の指定を受け付ける場合は、各出力データの値と指定した値との差異量（絶対値）による近似ではなく、条件値をオーバーした出力データはＮＧとし、オーバーしない範囲から最も条件に近いものを指定する、といった追加条件の指定を受け付けることも可能とする。
【００４０】
なお、最適パターン判定部１０７は、「最適組合せパターン」としては特定されなかった他の「組合せパターン」に関する情報、例えば、使用アルゴリズム、出力データのサイズ、出力データの出力までの実行時間などを出力し、ユーザに参考情報として提供するようにしても構わない。
【００４１】
以上により、入力データから出力データを生成する場合において、適用可能なアルゴリズムの「組合せパターン」について総当り的に出力データを作成し、各出力データの比較を自動化することにより、ユーザは、指定した判定条件に最も近い出力データを得る「組合せパターン」を簡易な手順で確認することが出来る。
【００４２】
図１０は、図９のＳ５における探索パターン実行部１０５が各「組合せパターン」を実行する場合の詳細な処理フローを示す図である。図２〜図５で述べた内容に対応する。図１０は、探索パターン抽出部１０４が「ルール１１」等をアルゴリズム格納部１０８から選択し、それぞれのルールに基づき、例えば図３の場合と同様に、ＮＮ通りの「組合せパターン」を既に抽出した場合を示している。
【００４３】
入力データ２０１から「組合せパターン」ごとの出力データ２０３を得るためには、データ変換処理（処理１等）は、１つ以上あるものとする。図１０では、データ変換処理は、処理１〜処理ＮのＮ個ある場合を示している。探索パターン実行部１０５は実行順序として、処理１（Ｓ５−１）、処理２（Ｓ５−２）、・・・、処理Ｎ（Ｓ５−Ｎ）の順に実行するものとする。処理１〜処理Ｎには、それぞれの処理で適用可能なアルゴリズム（ルール）が一つ以上存在するものとする。図１０では、処理１〜処理Ｎのそれぞれには、適用可能なアルゴリズムがＮ個ずつある。なお図１０ではアルゴリズムをルールと記載している。
処理１には、「ルール１１」〜「ルール１Ｎ」までのＮ個のルールがある。
処理２には、「ルール２１」〜「ルール２Ｎ」までのＮ個のルールがある。
以下同様にして、
処理Ｎには、「ルールＮ１」〜「ルールＮＮ」までのＮ個のルールがある。
以下、探索パターン実行部１０５は入力データ２０１に対して、複数の「組合せパターン」を抽出し、各「組合せパターン」ごとに（Ｓ５−１）〜（Ｓ５−Ｎ）の過程を実行し、「組合せパターン」ごとに出力データ２０３を生成する。
【００４４】
（Ｓ５−１）において、探索パターン実行部１０５は、入力データ２０１に対し、抽出した「組合せパターン」にしたがい、処理１で「ルール１１」〜「ルール１Ｎ」のいずれかのアルゴリズムを適用し、中間データ２０２−１を出力する。よってトータルで出力する中間データ２０２−１の数は、ルールの数に一致する。
【００４５】
（Ｓ５−２）において、探索パターン実行部１０５は、中間データ２０２−１に対して、抽出した「組合せパターン」にしたがい、処理２で「ルール２１」〜「ルール２Ｎ」のいずれかのアルゴリズムを適用し、中間データ２０２−２を出力する。よってトータルで出力する中間データ２０２−２の数は、入力データとなる「中間データ２０２−１」×「処理２のルールの数」に一致する。従って、Ｎの２乗通りある。
【００４６】
（Ｓ５−Ｎ）において、「中間データ２０２−Ｎ−１」に対して、処理Ｎで「ルールＮ１」〜「ルールＮＮ」のいずれかのアルゴリズム適用を行い、出力データ２０３を出力する。よってトータルで出力する出力データ２０３の数は、入力データとなる「中間データ２０２−２」×「処理３のルールの数」に一致する。
【００４７】
このように、探索パターン実行部１０５は、抽出した「組合せパターン」にしたがい、１つの入力データ２０１に対し、「組合せパターン」ごとに、（Ｓ５−１）〜（Ｓ５−Ｎ）で適用するルールの組み合わせ数だけ、出力データ２０３を出力可能である。よって、「組合せパターン」数は、最大、Ｎ×Ｎ×・・・×Ｎ＝ＮのＮ乗となる。
【００４８】
なお、探索パターン実行部１０５は、定義された処理１〜処理Ｎのうち、必ずしもすべての処理を実行するとは限らない。例えば、出力データ２０３の性能上は差が出ない、あるいは差が極めて小さい場合などは、一部の処理（アルゴリズム適用）を実行しなくても構わない。また、処理１〜処理Ｎの「ルール」は１種類以上としているが、「ルール」が１種類の場合は、その処理は１通りである。
【００４９】
また、処理１〜処理Ｎで使用するルールは、特定の１つのアルゴリズムでなくても構わない。図５で述べたような、出力データ２０３の性能に影響する「パラメータの組み合わせ」でも構わない。
【００５０】
このパラメータの組み合わせについて説明する。図５の場合と同様であるが、たとえば、図１０の処理１で、性能に影響の出るパラメータがＰ１、Ｐ２、Ｐ３の３種類があるとする。そして、それぞれ設定可能な値が
Ｐ１では１〜１０の１０種類、
Ｐ２では１，２，３の３種類、
Ｐ３では０から８の９種類の値の設定が可能とする。すなわち、
（Ｐ１、Ｐ２、Ｐ３）＝（１、１、０）〜（１０、３、８）
この場合、設定可能な値は、
Ｐ１が１０通り、
Ｐ２が３通り、
Ｐ３が９通りである。
（Ｐ１、Ｐ２、Ｐ３）の値の設定は必須であり、あるパラメータ設定値によっては他のパラメータが影響をうけて設定値不可の値が生じる、といった制約は一切ないものとした場合、「実行パターン」の総数は、
（Ｐ１、Ｐ２、Ｐ３）＝１０×３×９＝２７０通りとなる。
つまり、この場合は「処理１のルール数＝２７０」と考える。このような場合、探索パターン抽出部１０４は、ルール数２７０と判断して「組合せパターン」を抽出する。これは、図５で説明したとおりである。なお、このようなケースにおいては、各パラメータの値はある程度、相関関係あり、設定して効果の得られる値の範囲が大体決まっている場合もある。そのような場合は、アルゴリズム指定部１０３により、ユーザが各パラメータで設定する値を予め指定しておくことができるようにしてもよい。ユーザからこの指定がされた場合、探索パターン抽出部１０４は、その設定値の範囲から可能な組み合わせの数を決定し、「組合せパターン」を抽出する。
【００５１】
（実施例１）（ファイル圧縮）
図１１、図１２を用いて実施例１を説明する。以上では最適アルゴリズム判定装置１００の基本構成について説明した。この基本構成に基づく第１の実施例として、最適アルゴリズム判定装置１００で行う処理を、「ファイル圧縮」とした場合について述べる。実施例１のシステム構成は、図１と同様である。
【００５２】
図１１は、最適アルゴリズム判定装置１００が実行する処理であるファイル圧縮処理（Ｓ５−１−Ａ）、およびその処理で使用するルール（圧縮アルゴリズム）と、データフローを示す図である。図１１は、図１０に対応する。図１１は図１０と同様に、探索パターン抽出部１０４が「圧縮アルゴリズム１」等をアルゴリズム格納部１０８から選択し、それぞれの圧縮アルゴリズムに基づき、「組合せパターン」を抽出した場合を示している。図１１を参照して、入力データ２０１が１ファイルあり、これを圧縮し、複数の出力データのうち、ファイルサイズの一番小さい出力データを特定する場合を説明する。なお、この実施例１では図１に示すように、ファイルを外部に提供する等の目的で、ファイルを電子メールに添付して端末装置２２０に送信する場合や、入力データ２０１より容量の小さいメディア（記憶媒体：メモリカード８１９）でファイルを配布する必要がある場合を想定する。このため、ファイルのサイズを現在（入力データ）よりも小さくしなくてはならず、そのために圧縮を行おうする場合を想定する。
【００５３】
図１２は、実施例１の最適アルゴリズム判定装置１００の操作を示すフローチャートである。図１１、図１２を参照して実施例１の最適アルゴリズム判定装置１００の動作を説明する。まず事前に、ユーザは、アルゴリズム登録部１０１により、ルールとして、ファイル圧縮処理（Ｓ５−１−Ａ）で使用する圧縮アルゴリズム１〜圧縮アルゴリズムＮをアルゴリズム格納部１０８に登録しておく。アルゴリズムの具体例としては、通常のファイル圧縮アルゴリズムである、ｌｈａ，ｚｉｐ，ｔａｒなどを登録しておく。
【００５４】
次に、ユーザが、ある入力ファイル２０１に対して、サイズが最小となるファイル圧縮を最適アルゴリズム判定装置１００により、以下のように図１２のＳ１０１〜Ｓ１０８の手順に従い行う。
【００５５】
まず、Ｓ１０１（Ｓ１に相当）の処理として、ユーザは、圧縮したいファイルを入力データ２０１として指定する。
【００５６】
次に、Ｓ１０２（Ｓ２に相当）の処理として、ユーザは、最適パターン判定条件指定部１０２により、判定条件を設定する。この実施例１では、判定条件となる項目は出力データ２０３の「ファイルサイズ」である。また、値の条件は「最小」となることである。
【００５７】
次に、Ｓ１０３（Ｓ３に相当）の処理として、ユーザは、アルゴリズム指定部１０３により、登録されている圧縮アルゴリズム１〜圧縮アルゴリズムＮのうち、適用除外したいものがある場合は、これを指定する。指定方法としては、使用したいもの、使用しないもの、いずれの指定方法でも構わない。本実施例１の場合、出力データである圧縮データを別のユーザに渡す場合、受け取り側で解凍できないアルゴリズムがある、と言ったような場合に、これを適用除外対象アルゴリズムとして指定できれば有効である。
【００５８】
次に、Ｓ１０４（Ｓ４に相当）の処理として、探索パターン抽出部１０４が、実行対象とする圧縮アルゴリズムを選択（抽出）する。なおＳ１０３でアルゴリズム指定部１０３により何らかの選択条件が指定されている場合、探索パターン抽出部１０４は、その選択条件の範囲内で圧縮アルゴリズムを選択（抽出）する。例えば４種類の圧縮アルゴリズムが登録されており、Ｓ１０３で１種類除外対象に指定された場合は、３種類を選択する。そして、探索パターン抽出部１０４は、選択した圧縮アルゴリズムに基づき、複数の「組合せパターン」を抽出する。前記のように３種類を選択した場合、例えば
「入力データ２０１→圧縮アルゴリズム１」、
「入力データ２０１→圧縮アルゴリズム２」、
「入力データ２０１→圧縮アルゴリズム３」
という３つの「組合せパターン」を抽出する。
【００５９】
次に、Ｓ１０５，Ｓ１０６（Ｓ５、Ｓ６に相当）の処理として、探索パターン実行部１０５が、Ｓ１０４で抽出した各「組合せパターン」を実行し、各「組合せパターン」における出力データ２０３−１〜出力データ２０３−Ｎを出力する。
【００６０】
次にＳ１０７（Ｓ７に相当）の処理として、最適パターン判定部１０７は、Ｓ１０５で探索パターン実行部１０５により生成された出力データ２０３−１等のファイルサイズを取得し、ファイルサイズが最小である出力データ（圧縮ファイル）、及びファイルサイズを最小とした「組合せパターン」を特定する。
【００６１】
次に、Ｓ１０８（Ｓ８に相当）の処理として、最適パターン判定部１０７は、最小と判定した出力データ、例えば出力データ２０３−１をファイルサイズ最小と判定したとすると、出力データ２０３−１を生成した「組合せパターン」を「最適組合せパターン」として、および出力データ２０３−１自身を「最適データ２０４」（最小圧縮ファイル）として出力部に出力する。必要であれば、ユーザへの参考情報として、各「組合せパターン」の出力データサイズなどの情報を実行結果情報として、一緒に出力しても良い。
【００６２】
なお、Ｓ１０２では、最適パターンの判定条件が固定の場合（例えばファイルサイズを所定の値以下と指定するような場合）は、ユーザが直接指定する方法のほか、あらかじめユーザが実行するアプリケーション内部に定義しておいても良い。あるいはアプリケーションのＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）から、ユーザが条件の追加設定を行なったり、あるいはデフォルト設定を変更可能にしても良い。
【００６３】
さらに、出力データのファイル形式として使用できない形式が事前にわかっているような場合は、アルゴリズム指定部１０３により、あらかじめ除外したいアルゴリズムを指定しておき（Ｓ１０３）、探索パターン抽出部１０４は、これを除外した範囲内でアルゴリズムを選択し、選択したアルゴリズムに基づき各「組合せパターン」を構築し、探索パターン実行部１０５が各「組合せパターン」の実行（Ｓ１０５）を行い、最適パターン判定部１０７が、この出力データ２０３−１等から、サイズ最小のファイルを出力するようにすることも可能とする。
【００６４】
この実施例１の最適アルゴリズム判定装置１００は、探索パターン抽出部１０４、探索パターン実行部１０５を備えたので、アルゴリズムさえ登録しておけば、それらの出力結果を１つ１つ手動で作成する必要なく、簡易な操作で全パターンを自動実行することが可能となり、作業負担の大幅な軽減・より的確なアルゴリズム選択を行える、といった効果がある。
【００６５】
なお、上記は、入力データ２０１は１つの場合としたが、複数ファイルをまとめて入力データ２０１として、サイズが最小となる１つの圧縮ファイルとなる出力データ２０３を得るような場合においても、もちろん適用が可能である。
【００６６】
また、最適パターンの判定条件を、「ファイルサイズが一定のサイズ以下」とする場合は、あらかじめ最適パターン判定条件指定部１０２で、そのサイズ以下、と指定しておく。そして、探索パターン実行部１０５は、そのサイズを超えるファイルについての「組合せパターン」によるファイル生成を中断するようにしても構わない。すなわち、最適パターン判定条件指定部１０２が出力データに要求される判定条件（目標性能値：ここではファイルサイズ）を受け付ける。探索パターン実行部１０５は、それぞれの「組合せパターン」によって「組合せパターン」ごとの出力データを生成する場合に、それぞれの「組合せパターン」について最適パターン判定条件指定部１０２が受け付けた判定条件に適合する出力データを生成することができるかどうかを監視する。そして、いずれかの「組合せパターン」について判定条件に適合する出力データを生成することができないと判断した場合には、その判断に係る「組合せパターン」による出力データの生成処理を中止する。探索パターン実行部１０５は、中止した「組合せパターン」を不適合と判定する。これによって実行時間を節約し、また最適アルゴリズム判定装置１００のディスク容量を節約することが出来る。
【００６７】
また、最適アルゴリズム判定装置１００のディスクの空き容量に余裕がない場合（例えば図７の磁気ディスク装置８３０を想定）は、「組合せパターン」を実行するごとに、ファイルサイズ（目標性能値の一例）が最小となるケースの出力データ２０３を１種類のみ残し（ディスクに記憶し）、図９に示したＳ１０５、Ｓ１０６を繰り返し実行することで、ディスク容量を節約することができる。
具体的には、
（１）前記探索パターン抽出部１０４は、複数（例えば４つ）の「組合せパターン」を抽出する。
（２）探索パターン実行部１０５は、「組合せパターン」ごとに、順次、出力データ２０３−１、出力データ２０３−２、出力データ２０３−３、出力データ２０３−４を生成する。
（３）最適パターン判定部１０７は、探索パターン実行部１０５により１番目に生成された出力データ２０３−１（第１経路別出力データの一例）を図８に示す特定情報格納部１０９（例えば図７の磁気ディスク装置８３０を想定）に最適データの候補を示す「候補データ」として保存する。
（４）次に探索パターン実行部１０５によって２番目の出力データ２０３−２（第２経路別出力データの一例）が生成された場合、最適パターン判定部１０７は、候補データとして保存されている出力データ２０３−１と出力データ２０３−２とのうち、どちらが判定条件に適合するかを判断する。そして、より適合しないと判断した方を削除し、より適合していると判断した方を特定情報格納部１０９に「候補データ」として保存する。候補データとして出力データ２０３−１を維持し保存したとする。
（５）次に探索パターン実行部１０５によって３番目の出力データ２０３−３（第３経路別出力データの一例）が生成された場合、最適パターン判定部１０７は、候補データとして保存している出力データ２０３−１と、出力データ２０３−３とのうち、どちらが判定条件に適合するかを判断する。そして、より適合しないと判断した方を削除し、より適合していると判断した方を特定情報格納部１０９に最適データの候補である候補データとして保存する。この場合、候補データである出力データ２０３−１の方がより適合していると判断した場合、出力データ２０３−１を候補データとして維持し保存する。
（６）次に探索パターン実行部１０５によって４番目の出力データ２０３−４（第４経路別出力データの一例）が生成された場合、最適パターン判定部１０７は、候補データとして保存している出力データ２０３−１と、出力データ２０３−４とのうち、どちらが判定条件に適合するかを判断する。そして、より適合しないと判断した方を削除し、より適合していると判断した方を特定情報格納部１０９に最適データの候補である候補データとして保存する。この場合、候補データである出力データ２０３−４の方がより適合していると判断した場合、出力データ２０３−１を削除し、出力データ２０３−４を新たな候補データとして特定情報格納部１０９に保存する。
（７）最適パターン判定部１０７は、最終的に候補データとして保存されている出力データ２０３−４を「最適データ」として特定する。
（８）以上の（１）から（７）により、最適アルゴリズム判定装置１００に「組合せパターン」ごとのファイル出力を行えるだけの十分なディスクの空き領域がないような場合でも、２つの出力データを格納できるディスク容量（記憶容量）があれば、登録した全アルゴリズムからファイルサイズが最小となる圧縮ファイル、及びファイル圧縮アルゴリズムの探索・判定を行うことができる。
【００６８】
さらに、２ファイル分（２つの出力データ分）の出力容量の確保も厳しい場合は、最適パターン判定部１０７は、探索パターン実行部１０５が生成した出力ファイル（出力データ）のサイズ情報（ファイルサイズ）のみ残し、１つの「組合せパターン」ごとにファイル作成（出力データ作成）・ファイル削除（出力データ削除）を行うようにする。そして、最適パターン判定部１０７は、最適パターン判定条件指定部１０２が受け付けた判定条件に最も適合するファイルサイズ（最適データ性能値の一例）を特定するともに、そのファイルサイズとなる出力データを生成した「組合せパターン」を「最適組合せパターン」として特定する。最適パターン判定部１０７は、特定した判定条件に最も適合するファイルサイズと、「最適組合せパターン」の情報とを特定情報格納部１０９に保存する。これにより、１つの「組合せパターン」の出力ファイル分（出力データ分）の空き容量がディスク（特定情報格納部１０９）にあれば、登録した全アルゴリズムからサイズ最小となるファイル圧縮アルゴリズムの探索・判定を行うことができる。ただし、この場合は「最適組合せパターン」がわかった後で、再度、その「最適組合せパターン」で最適データ（出力データ２０４）を再生成しなおす必要性が生じる。
【００６９】
また、出力データ２０３−１等のサイズを判定条件としたが、最適パターン判定条件指定部１０２により、複数の判定条件を指定することも可能である。最適パターン判定条件指定部１０２は、出力データに対する複数の判定条件（目標性能値）を受け付ける。そして、最適パターン判定部１０７は、最適パターン判定条件指定部１０２が受け付けた複数の判定条件に基づいて、最適データを特定する。各出力データ２０３−１等にサイズの差がほとんどない場合、ファイルサイズに加え、実行時間の早い出力データを優先するといった複数の判定条件を設定し（実行時間を判定条件として設定）、最適データを判定しても構わない。すなわち、第１の判定条件としてファイルサイズを設定し、第２の判定条件として出力データを生成するまでの実行時間（出力データ生成時間）を設定することも可能である。最適パターン判定部１０７は第１及び第２の判定条件に基づき判定を行なう。
【００７０】
以上より、本実施例１では、ファイルを外部に提供する等の目的で、メール添付や、入力データ２０１より容量の小さいメディアで配布する必要があり、ファイルのサイズを現在より小さくする必要があり、そのために圧縮を行おうとする場合に効果がある。多数ある圧縮方式について、手動でファイル圧縮を実行し、サイズ比較を行い最適アルゴリズムを決定する方法に比べ、ユーザの作業負担を減らし、効率的に正確にサイズ最小となるアルゴリズムの選択を行える効果がある。
【００７１】
また、ファイルのサイズを判定条件として指定する場合、最小値を指定する他、「所定のサイズ以下」といった指定も可能とする。これにより、サイズは大差ない複数のアルゴリズムが存在する場合に、サイズ以外のユーザ自身の嗜好を加味した判断も可能である。
【００７２】
また、複数条件を指定して判定することも可能なため、条件が複雑になっても調査すべき「組合せパターン」の抽出作業を、短時間かつ正確に行える効果がある。
【００７３】
また、あらかじめサイズや実行時間などの上限値を設定しておくことで、希望条件を大幅に上回るアルゴリズムでの実行時間を短縮することが可能であり、無駄な時間の節約、ディスク容量の節約を図る効果がある。
【００７４】
また、全ての「組合せパターン」の出力ファイルを作成する場合、ディスク容量を大量に消費するケースも想定されるが、そのような場合に備えて、全ファイルは残さず、ディスク空き容量を有効に使用する出力方式も指定可能であるため、空き容量が少ない場合でも最適アルゴリズムの探索を行える効果がある。
【００７５】
（実施例２．）（差分更新向け差分データ作成）
図１３〜図２１を用いて実施例２を説明する。実施例２は、最適アルゴリズム判定装置１００で行う処理を、「差分更新向けの差分データ作成」とした場合である。
【００７６】
＜１．差分データ作成の課題、最適アルゴリズム判定装置１００の適用の意義＞
差分更新では、新旧のデータの差分データを作成し、これを旧版に適用することで、新版への書き換え、バージョンアップを行う。通常、バージョンアップは、新版全体データを配布、置き換える方式の方が簡易で良いが、差分更新は、携帯電話などの組み込み機器のように、新版データを配布する通信回線やバージョンを行う端末のディスク容量などに制約があり、新版全体データを配布する方式を使えない場合に適用されることが多い。そのため、配布する差分データも極力サイズを小さくすることが要求される。しかし、差分データサイズは、その作成過程で使用するアルゴリズムによって異なり、差分データの作成過程も２過程以上あり、それぞれに有効なアルゴリズムがある。このため、差分量を最小とするには、最終的には、これらアルゴリズムの組み合わせを選択する必要がある。アルゴリズムの組み合わせ全てを網羅するように差分データを作成し、差分量が最小となる組み合わせの確認を手動で行うには作業負荷が大きい。自動実行による作業効率化、精度の高い最適な「組合せパターン」の発見を支援する環境が必要であり、最適アルゴリズム判定装置１００の適用による効果が大きい。
【００７７】
図１３は、本実施例２が想定するシステムの例を示す図である。図１３は、最適アルゴリズム判定装置１００により多数のアルゴリズムの組み合わせ全てを網羅的に探索して最適な差分データを自動的に取得し、取得した差分データをネットワークを介して携帯電話に配信するような場合を想定する。
【００７８】
＜２．差分作成で行う処理の内容説明＞
図１４は、本実施例２において、最適アルゴリズム判定装置１００が、図９に示したＳ５に相当する「組合せパターン」を実行する場合の詳細処理、およびその処理で使用するアルゴリズム（ルール）と、データフローを示す図である。図１４は、実施の形態１で説明した図１０と同様に、探索パターン抽出部１０４が、すでにルールを選択し、選択したルールに基づいて複数の「組合せパターン」を抽出した状態を示している。
【００７９】
＜３．入力データと出力データ＞
差分データ作成の場合、入力データ２０１は、差分データを作成したい「新版データ」と「旧版データ」の２つのファイルを対にしたファイルとなる。また、出力結果である各「組合せパターン」ごとの出力データ２０３は、「差分データ」である。「差分データ」を得るためは、図１４に示す処理１〜処理３を順次実行する必要がある。なお、後述のように処理１は、「差分データ」を得るために必須ではない処理（後述のオプション処理）であり、処理１を実行しない場合もあり得る。
【００８０】
＜４．処理の種類と各処理の入出力データ＞
図１４に示す様に処理は、処理１〜処理３の３種類ある。
処理１は、フォーマット変換（Ｓ５−１―Ｂ）である。
処理２は、バイナリ比較（差分抽出ともいう）（Ｓ５−２―Ｂ）である。
処理３は、差分表現（差分データ出力ともいう）（Ｓ５−３―Ｂ）である。
【００８１】
（１）処理１は、入力データを入力データ２０１（新旧データ）とし、中間データ２０２−１（フォーマット変換後の新旧データ）を出力する。
（２）処理２は、入力データを入力データ２０１（処理１を実行しない場合）、もしくは処理１を実行した場合は中間データ２０２−１とし、中間データ２０２−２（一致／更新領域情報）を出力する。
（３）処理３は、入力データを中間データ２０２−２とし、各「組合せパターン」ごとに出力データ２０３（差分データ）を出力する。中間データ２０２−１、中間データ２０２−２、出力データ２０３は、それぞれの処理で適用するルールの組み合わせ別（組合せパターン別）に出力される。即ち、例えば図３に示したのと同様に、それぞれの処理において、探索パターン抽出部１０４が抽出した「組合せパターン」ごとに出力され、複数の出力があり得る。
【００８２】
＜５．差分データ作成プロセス概要説明＞
一般的に、差分データ作成のプロセスは、差分抽出、差分表現の２段階からなる。これらには、図１４の処理２（差分抽出）と処理３（差分表現）が相当する。図１４の処理２、処理３は必須の処理である。一方、図１４の処理１はオプション的な処理である。処理１は差分サイズ削減上の効果はあるものの、「実行しなくても差分データの作成自体は可能」といった位置づけの処理である。
【００８３】
＜６．一般的な処理の分類（必須処理とオプション処理）＞
なお、上記＜５．差分データ作成プロセス概要説明＞で述べたようなことは、図１０に示した一般的な場合にもあり得ることであり、処理１〜処理Ｎの中には、出力データ２０３を得るために必須な処理と、必須とはいえない処理の２種類あるものとする。以下、出力データ２０３を得るために必須な処理を「必須処理」と呼び、必須でない処理を「オプション処理」と呼ぶこととする。以下、「必須処理」である差分抽出（処理２）と差分表現（処理３）とについて一般的な処理概要をまず説明し、続いてこの２つの処理でそれぞれ差分サイズ削減に有効なアルゴリズム（ルール）の例について説明する。その後に、「オプション処理」であるフォーマット変換（処理１）について説明する。
【００８４】
＜７．処理２の差分抽出（概要）＞
処理２の差分抽出（Ｓ５−２−Ｂ）では、新版データを旧版とバイナリ比較を行うことにより、一致箇所と、不一致箇所（更新箇所）とをバイト単位で検出する処理を行う。バイナリ比較の一般的なアルゴリズムとしては、ｒｓｙｎｃやＬＣＳ（Ｌｏｎｇｅｓｔ  Ｃｏｍｍｏｎ  Ｓｕｂｓｅｑｕｅｎｃｅ：最長一致箇所）探索などのアルゴリズムがある。本実施例２では、処理２の差分抽出は、ｒｓｙｎｃとＬＣＳとを組み合わせて行なう。
（１）まず、ｒｓｙｎｃによるブロック単位での新版データを分割し、旧版からの一致するブロック探索を行う。
（２）一致するブロックがない場合は、ＬＣＳにより、ブロックデータをより小さなバイト列データとして、一致するバイト列を探する。一致した場合は、一致しなくなるまで探索するバイト長を１バイトずつ延長して最長の一致領域（＝ＬＣＳ）を探す、という方式で差分抽出を行う。出力として一致個所と不一致個所の情報（一致／更新領域情報、中間データ２０２−２）を出力することとする。なおｒｓｙｎｃやＬＣＳは差分抽出の一般的アルゴリズムであるので、詳しい説明はここではこれ以上は行わない。
【００８５】
＜８．処理２の差分抽出（使用ルールの定義）＞
なお、上記方式での差分抽出では、出力する「一致／更新領域の構成比（差分量相当）」は、上記アルゴリズムで使用する「パラメータ情報の設定値」により違いが生じる。上記パラメータの具体的な例としては、ｒｓｙｎｃアルゴリズムで使用する比較用分割ブロックサイズや、ＬＣＳとして一致比較を行う最小連続バイト数、バイト列一致時の延長バイト数などがある。よって差分抽出処理は、これらのパラメータ値の設定は必須であるが、設定値の「組合せパターン」がいくつかあるので、パターン毎に「一致／更新領域の構成比（差分サイズ）」が異なる。よって処理２では、「設定値の組み合わせ１つ１つ」をルールとみなし、扱うこととする。ただし、これらのパラメータの値設定は必須であるため、デフォルトとしてそれぞれのデフォルト値を決めたデフォルトパターンを設定しておく。探索パターン抽出部１０４による「組合せパターン」の抽出（構築）では、デフォルト値以外も含めあらゆる組み合わせを抽出する。また、処理２のルールの性格上、処理２ではルールは同時に１つしか使用できないものとする。
【００８６】
また、この場合、ルールは登録しておかなくても、実行時にユーザから組み合わせ対象となるパラメータの値範囲設定があれば、パラメータ値の「組合せパターン」の自動生成（ルールの自動生成）を行うことも可能とする。
【００８７】
なお、本実施例２では記載をしていなが、上記パラメータ組み合わせ設定以外に、同時使用可能（組み合わせ可能）なルールを登録しても良い。
【００８８】
＜９．一般的なルールの考え方、扱いの定義（必須ルールとオプションルール）＞
処理２の差分抽出に関わらず、図１０に示した一般的な場合においても、処理１〜処理Ｎの各処理のルールには、２種類あるものとする。
第１に、同時に使用できないルール（必須パラメータ値の組み合わせなど）である。
第２に、同時に使用可能なルールである。
言い換えると、ルールは、以下の２種類があるといえる。
（１）第１に、必ず使用しなければならないルール（以下「必須ルール」という。）である。上記設定必須パラメータは「必須ルール」に該当する。ただし、上記パラメータのように１通りではなく、組み合わせが複数ある場合である。１通りしかない場合は、必ず実行し出力も１通りなので、「基本処理」と呼び、ルールとは区別することとする。
（２）第２に、使用しなくてもよいルール（以下「オプションルール」という。）である。例えば、使用しなくても出力データ２０３は得られるが、出力データ２０３の性能（ファイルサイズ等）に効果を期待できるルールを意味する。なお「オプション処理」のルールは、全て「オプションルール」となる。
【００８９】
＜１０．処理３の差分表現の説明＞
次に処理３について説明する。処理３（Ｓ５−３−Ｂ）の差分表現は、差分抽出（Ｓ５−２−Ｂ）で得た「一致箇所・不一致箇所情報」を元に、これをバイナリで表現した差分データの出力を行う。処理２の差分抽出で出力した中間データ２０２−２（一致／更新領域情報）は、新版と旧版との一致、不一致（更新）の領域情報（各領域の開始、終了番地などの情報）である。しかし、差分データとして配布するには好ましい形式ではい。このため、中間データ２０２−２（一致／更新領域情報）に対して処理を行う。処理３の差分表現は、中間データ２０２−２（一致／更新領域情報）について、より少ないバイト数で更新状況（後述のＣＯＰＹ，ＳＫＩＰ，ＤＡＴＡなどの種別と、サイズなどの情報がわかる形で）を効率よく表現した「差分コマンドの形式」で表現する。この処理３は、処理２の差分抽出と同様に「必須処理」である。処理３の差分表現には、実行必須の「必須ルール」と「オプションルール」とが含まれるものとする。以下、それぞれ説明する。
【００９０】
＜１１．処理３の差分表現の「必須ルール」（概要）＞
差分データサイズを小さくするには、差分表現は極力少ないバイト数で、差分の情報を効率的に表現できることが要求される。バイナリ差分の表現方式としては、Ｗ３ＣのＧｄｉｆｆなどが一般的に使用されている。本実施例２では、このＧｄｉｆｆを一部拡張した方式での差分表現を、差分表現の基本方式（必須ルール）とする。図１５により、本実施例２で使用する主要な３種類の差分表現について説明する。基本方式では、上記中間データ２０２−２（一致／更新領域情報）のうち、「一致箇所」はＣＯＰＹコマンドとＳＫＩＰコマンドで表現し，「不一致箇所」はＤＡＴＡコマンドとして表現する。一致領域には、位置ずれのある場合、ない場合の２種類があるので、それぞれＣＯＰＹ（位置ずれあり）、ＳＫＩＰ（位置ずれなし）と区別している。
【００９１】
＜１２．処理３の差分表現の「必須ルール」（差分コマンド体系）＞
図１６に、図１５の差分表現の基本方式に従った本実施例２で使用する差分コマンド体系を示す。まず、コマンド種別は常に１バイトで表現し、０〜２５５まで２５６種類のコマンドを定義可能とする。
（１）０は、差分データの終端を意味する。
（２）次に、１〜２４２までが、ＤＡＴＡコマンド（不一致領域＝更新領域）とし、コマンド種別に１バイトで、値は更新データのバイト数を示すものとする。２４３バイト以上の更新領域の場合は、２つ以上のＤＡＴＡコマンドを使って表現するものとする。
（３）次に、２４３〜２４５をＣＯＰＹ領域とし、２つのパラメータ（コピー元の旧版アドレスと、領域サイズ）を記述する。領域サイズのバイト数を１〜３までとし、２４３が１バイト、２４４が２バイト、２４５を３バイトとするため、ＣＯＰＹコマンドは３種類としている。コピー元アドレスは、新旧データのデータサイズやアドレス空間（差分更新対象がプログラムの場合）より使用するアドレスバイト数が異なるので、この影響を受けてコピー元アドレスに必要なバイト数は異なる。
（４）次に、２４６〜２４８をＳＫＩＰ領域とし、１つのパラメータ（領域サイズ）を記述する。これも、ＣＯＰＹコマンド同様、領域サイズのバイト数を１〜３までとし、２４６が１バイト、２４７が２バイト、２４８を３バイトとするため、ＳＫＩＰコマンドは３種類としている。
（５）次に、２４９〜２５４までが、拡張用予約コマンド（未使用）、２５５が、書き換え時のイメージ書き出しを行うＦＬＵＳＨコマンドとしている。
（６）差分適用は、直接旧版データに適用・書き換えではなく、新版を分割したより小さな単位で、ワークメモリ上に
「旧版コピー」→「差分適用での新版イメージ作成」→「旧版該当領域への新版イメージ上書き」
を行っている。書き換え失敗発生時のダメージを小さくする目的でこのような方式を取っている。この「旧版該当領域への新版イメージ上書き」を実行するのがＦＬＵＳＨコマンドである。これは差分表現としては不要だが、差分適用時に必要なため、コマンドとして定義している。
【００９２】
＜１３．処理３の差分表現の「必須ルール」（ＣＯＰＹ⇒ＤＡＴＡ変換）＞
また差分表現効率化として、ＣＯＰＹコマンドは領域サイズが小さい場合、ＤＡＴＡコマンドで表現した方が使用バイト数を少なく出来る場合があり、このような場合はＤＡＴＡコマンドに変換する処理を行う。（ＣＯＰＹコマンドで、コピー元アドレスを４バイト使用する場合、４バイトのＣＯＰＹ領域はＣＯＰＹコマンドでは、１＋４＋１＝６バイト、ＤＡＴＡコマンドでは  １＋４＝５  でＤＡＴＡコマンドのほうが使用バイト数は少ない）
【００９３】
以上、＜１１．処理３の差分表現の必須ルール（概要）＞から＜１３．処理３の差分表現の必須ルール（ＣＯＰＹ⇒ＤＡＴＡ変換）＞が、本実施例２での差分表現（処理３）の「必須ルール」である。
【００９４】
＜１４．処理３の差分表現の「オプションルール」＞
続いて、差分表現の「オプションルール」を説明する。差分表現の「オプションルール」は、必須ではないが「必須ルール」で作成した差分データをもとに、更なるサイズ削減効果を持つ「オプションルール」について説明する。これらは、「必須ルール」で作成した差分データに適用し、差分コマンドの変換処理を行うものである。ここでは、例として、「ＩＮＳＥＲＴ／ＤＥＬＥＴＥコマンド」を挙げる。なお、「必須ルール」と「オプションルール」との関係は図４で示したような関係である。
【００９５】
＜１５．処理３の差分表現のオプションルール１（マクロコピー）＞
図１７は、差分表現の効率化のルール（オプションルール）の１つであるマクロコピーの概要を示す図である。従来の差分表現方式では、新版の先頭アドレスから順に差分を表現する方式を取っている。この方式では、図１７に示すように、ＣＯＰＹ領域とＤＡＴＡ領域とが交互に繰り返し出てくるような場合、データ内容の不変領域が多く、変更領域が少ない場合であるにもかかわらず、差分コマンドとして表現すると差分量が大きくなるという問題がある。これは、ＣＯＰＹコマンドはＳＫＩＰコマンドと比較すると、処理サイズの他にコピー元アドレス分を余分に要するためである。しかし、各ＣＯＰＹ領域の位置ずれのサイズ（オフセット）が同一である場合、１コマンド毎に、このアドレス指定バイト数分は冗長であり、差分表現として非効率である。この対策として、「ＣＯＰＹコマンドのオフセットが同一である領域はこの領域全体を１つのＣＯＰＹ領域として表現してから、その後に相違部分の情報をＤＡＴＡコマンドとＳＫＩＰコマンドで表現する差分表現方法（マクロコピー）」が有効である。この方法を用いると、アドレス指定を必要とするＣＯＰＹコマンドは最初の１つで良く、それ以外のＣＯＰＹコマンドはアドレス指定の不要なＳＫＩＰコマンドに変換出来るため、差分データサイズの削減が可能である。
【００９６】
＜１６．処理３の差分表現のオプションルール２（ＩＮＳＥＲＴ／ＤＥＬＥＴＥコマンド）＞
図１８、図１９は、差分表現効率化のルール（オプションルール）の１つである「ＩＮＳＥＲＴコマンド」，「ＤＥＬＥＴＥコマンド」の概要を示す図である。たとえばデータ更新で、データテーブルのレコード相当が多数追加（図１８）、あるいは削除（図１９）したような場合、その前後の領域（レコード）の内容は不変だが位置ずれが生じるので、ＣＯＰＹコマンドが多くなる傾向がある。ＣＯＰＹコマンドが多くなると、マクロコピー同様、不変領域が多く変更領域が少ない場合にもかかわらず、差分コマンドとして表現すると差分量が大きくなるという問題がある。そこで更新を表現するコマンドとして、置換（上書き）の意味しか持たないＤＡＴＡコマンドのほかに、追加、削除を意味するＩＮＳＥＲＴ，ＤＥＬＥＴＥの各コマンドを追加すれば、新旧のオフセットが自動調整され、位置ずれ領域はＳＫＩＰコマンド、あるいはコマンドなしで表現することが可能になる。以下、詳細について図１８、図１９に従い説明する。
【００９７】
図１８は、ＩＮＳＥＲＴコマンドの例である。新版で２箇所の追加領域がある。これにより、追加領域はＤＡＴＡコマンド、以後の不変領域はＣＯＰＹコマンドで表現することになり、追加領域だけでなく、不変領域の差分量も増えてしまう。特に、追加領域が多ければ多いほど、ＣＯＰＹ領域が増え、差分増加量も増える。そこで、ＤＡＴＡで表現していた追加領域をＩＮＳＥＲＴコマンドとして表現することで差分量削減を図る。ＩＮＳＥＲＴコマンドは、図１６の差分コマンドの未使用数（２４９−２５４のいずれか）を割り当て、引数として追加になったバイト数、追加する値を指定する。すると図中の各ＤＡＴＡコマンドは、１＋データバイト数→１＋１＋データバイト数で１バイト増となるが、以後のＣＯＰＹコマンドはＳＫＩＰコマンドで表現可能であり、４×ＣＯＰＹコマンド分のバイト数を削減できる。合計では、３２バイトから２４バイトに削減できる。
【００９８】
図１９は、ＤＥＬＥＴＥコマンドの例である。新版で３箇所の削除領域がある。これにより、削除領域以後の不変領域はＣＯＰＹコマンドで表現することになり、不変領域の差分量も増えてしまう。特に、削除領域が多ければ多いほど、ＣＯＰＹ領域が増え、差分増加量も増える。そこで、削除領域をＤＥＬＥＴＥコマンドとして表現することで差分量削減を図る。ＤＥＬＥＴＥコマンドは、図１６の差分コマンドの未使用数（２４９−２５４のいずれか）を割り当て、引数として削除になったバイト数を指定する。すると図中の各ＣＯＰＹコマンド（６ｂｙｔｅ）は、ＤＥＬＥＴＥコマンド（２ｂｙｔｅ）とＳＫＩＰコマンド（２ｂｙｔｅ）に置換でき、２バイト少なく出来る。合計では、２０バイトから１４バイトに削減できる。
【００９９】
以上、差分表現（処理３）の「オプションルール」の例として、「マクロコピー」、「ＩＮＳＥＲＴ／ＤＥＬＥＴＥコマンド」を挙げた。これらは「オプションルール」であるため、２つ同時に使用しても、単独で使用しても構わない。ただし、この２つのアルゴリズムは、差分コマンドの内容がある特定の傾向にあることを前提としているので、更新内容に前提に該当するケースがない場合、差分サイズ削減効果は期待できない。
【０１００】
このことは、データ種別（データ構造）だけでなく、更新の内容によっても、ルールの差分削減の有効性が異なることを意味する。
【０１０１】
以上より、本実施例２のように、組み合わせ可能なあらゆる「組合せパターン」ごとの出力データ２０３を作成し、最適データ２０４の決定を自動的に行える環境は、作業の効率化、最適パターン選択の精度向上を図る効果がある。
【０１０２】
＜１７．処理１のフォーマット変換（オプション処理）＞
以上、差分データ作成の「必須処理」である、差分抽出・差分表現について説明した。次に「オプション処理」である、フォーマット変換処理（処理１）について説明する。
【０１０３】
＜１８．処理１のフォーマット変換の概要＞
処理１の「フォーマット変換」とは、入力データ２０１である新旧データを、更新の発生する位置に注目し、分散して発生している更新箇所を１箇所に集約するよう変換することである。これにより、変換新旧データ（中間データ２０２−１）に対して差分抽出（処理２）を行えば、変換しない場合（入力データ２０１、新旧データ）に比べ、更新箇所の数が削減される。このため、より少ない差分コマンドでの表現が可能となり差分データサイズを小さくする効果が得られる。以下、具体的なルールの例としてバイト列変換を示す。
【０１０４】
＜１９．処理１のフォーマット変換ルール・バイト列変換その１＞
図２０は、フォーマット変換の例を示す図である。図の左側が、フォーマット変換の「実施前」の新旧データを示す。また、右側が、フォーマット変換の「実施後」の新旧データを示す。両側とも、上側が旧版、下側が新版の各データである。図２０の変換実施前は、１レコードが８ｂｙｔｅであり７ｂｙｔｅ目の要素が頻繁に変更となっている例を示しており、新版と旧版でアドレス（先頭からのオフセット）は異なっているものとしている。従来の差分表現ではＳＫＩＰとＤＡＴＡの繰り返しとなり、合計で１７ｂｙｔｅの差分データが必要となる（ＳＫＩＰ領域がＣＯＰＹ領域の場合は、３２ｂｙｔｅである）。ここで、「７ｂｙｔｅ目の要素が変更になりやすい」ことを前提条件とすることで、差分データサイズをより小さくすることができる。７ｂｙｔｅ目の要素のみをデータから抽出し、データの最後方に移動させる形式にフォーマット変換を行う。この変換データに対して差分を取ると「ＤＡＴＡコマンド」が１箇所に集まるため、差分データサイズが８ｂｙｔｅとなり、変換しない場合に比べバイト数を約５０％削減できる（ＣＯＰＹコマンドの場合は、１２ｂｙｔｅで約６０％の削減である）。このようなケースを、フォーマット変換の１つの「ルール」として使用するには、新旧データのフォーマットを解析し、どの要素の更新が発生しているかの規則性を確認の上、アルゴリズム登録部１０１により、「ルール」として最適アルゴリズム判定装置１００に登録しておく。
【０１０５】
＜２０．処理１のフォーマット変換ルール・バイト列変換その２＞
上記のように、特定のバイト列で更新が見られるケースは、プログラムデータで機械語の命令サイズが固定バイト数の場合に多く見られる。これは、特定関数を改修してサイズに増減が生じた結果、以後の関数も位置ずれが生じたような場合、これら関数の参照先（アドレス直接参照や、オフセットを使用している）も影響受けて位置ずれが発生する。このような差分では、関数参照（ジャンプ命令）の命令コードのパラメータ部の値が変更になり、これが特例バイト列の更新発生となる。しかし、ＣＰＵによっては機械語の命令コード体系が固定バイトではなく、可変バイトの場合もある。そのような場合、この固定バイトのフォーマット変換は適用しても差分サイズ削減の効果は期待できない。しかし、あらかじめ「ルール」として、アルゴリズム登録部１０１により、そのＣＰＵのプログラムデータの構造を解析する情報を与えておき、新旧データをこれに従い解析可能にすれば、上記と同様、関数の改修による位置ずれの影響で発生したバイト位置を特定できる。よって、上記と同様、更新の発生するバイト列のみ一箇所に集めるようなフォーマット変換を行うことが可能となる。
【０１０６】
つまり、ここではプログラムデータ向けに、ＣＰＵに応じて新旧データの機械語フォーマットを解析し、更新バイト列局所化を行うバイト列変換の「ルール」を用意することが可能である。さらにプログラムでなくデータの場合でも、同様の解析情報があれば同様のバイト列変換処理を行うルールの提供は可能である。各種データのフォーマット定義情報をＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）やｗｉｎｄｏｗｓ（登録商標）のＩＮＩファイル形式など所定形式で記述して登録しておけば、そのデータ種別に対するバイト列変換が可能となる。
【０１０７】
＜２１．図１４の説明補足＞
以下、これまでの説明をもとに、図１４について補足する。処理１〜処理３の登録ルールの具体例としては、以下のとおりである。
（１）図１４において、処理１のフォーマット変換は、先に述べた「オプション処理」に相当する。先に述べた「バイト列変換のルール」が、データ種別毎（プログラム用にＣＰＵ別、データ用にデータフォーマット別）に、アルゴリズム登録部１０１により事前登録されているものとする。
（２）処理２のバイナリ比較（差分抽出）は、先に述べた「必須処理」である。先に述べたパラメータ設定値の組み合わせの各パターンが、ユーザによりアルゴリズム登録部１０１を介して、ルール（必須ルール）として事前登録されている。あるいは、探索パターン実行部１０５が、実行時に各パラメータの設定値の指定範囲を受け取り、これらから可能な組み合わせをそれぞれルールとして動的に生成し使用する方式でも良い。
（３）処理３の差分表現は、先に述べた「必須処理」である。この処理３は「必須ルール」の他に、先に述べた「マクロコピー」、「ＩＮＳＥＲＴ／ＤＥＬＥＴＥコマンド変換」を「オプションルール」として登録している。
【０１０８】
＜２２．全体処理フロー（Ｓ２０１〜Ｓ２０８）＞
図２１を参照して実施例２における最適アルゴリズム判定装置１００の動作を説明する。図２１は、実施例２における最適アルゴリズム判定装置１００の動作を説明するフローチャートであり、実施の形態１の図９に対応する。図２１により、ユーザがある入力ファイル２０１から、図２１のＳ２０１〜Ｓ２０８の手順に従い、最適データ２０４として、最小差分データ（差分ファイル）の出力を行う処理フローについて説明する。
【０１０９】
事前に、ユーザは、最適アルゴリズム判定装置１００が処理１〜処理３で使用するアルゴリズムをアルゴリズム登録部１０１により登録しておく。
【０１１０】
続いてＳ２０１（Ｓ１に相当）の処理として、ユーザは、差分データを作成したい新版データと旧版データとの２ファイルをマウス８１５やキーボード８１４などの入力装置により入力データ２０１として指定する。
【０１１１】
次にＳ２０２（Ｓ２に相当）の処理として、ユーザは、最適パターン判定条件指定部１０２により、判定条件を設定する。この実施例２では、判定条件となる項目は出力データ２０３の「ファイルサイズ」である。また、値の条件は「最小」となることである。
【０１１２】
次にＳ２０３（Ｓ３に相当）の処理として、ユーザは、アルゴリズム指定部１０３により、登録されている処理１〜処理３用のアルゴリズムから適用除外したいものがある場合は、これを指定する。指定方法としては、使用したいアルゴリズムを指定する場合、使用しないアルゴリズムを指定する場合、いずれの指定方法でも構わない。
【０１１３】
次にＳ２０４（Ｓ４に相当）の処理として、探索パターン抽出部１０４が、実行対象とするアルゴリズム（ルール）を選択（抽出）する。Ｓ２０３で全登録アルゴリズムから実行対象とするものが指定されている場合は、その範囲内で選択する。探索パターン抽出部１０４は、選択したアルゴリズム（ルール）に基づき、出力データを生成可能な互いに異なる複数の「組合せパターン」を抽出（構築）する。
【０１１４】
次にＳ２０５、Ｓ２０６（Ｓ５、Ｓ６に相当）の処理として、探索パターン実行部１０５が、探索パターン抽出部１０４がＳ２０４で抽出した各「組合せパターン」を実行し、それぞれの「組合せパターン」ごとに出力データを生成する。
【０１１５】
次にＳ２０７（Ｓ７に相当）の処理として、最適パターン判定部１０７は、Ｓ２０５で探索パターン実行部１０５により生成された出力データ２０３のファイルサイズを取得し、ファイルサイズが最小である出力データ２０３を最適データ２０４（最小差分データ）として特定する。また、最適データを生成した「組合せパターン」を「最適組合せパターン」として特定する。
【０１１６】
次にＳ２０８（Ｓ８に相当）の処理として、最適パターン判定部１０７は、最適データ２０４（最小差分データ）、「最適組合せパターン」等を、液晶表示装置８１３、プリンタ８２１、磁気ディスク装置８３０などの出力部に出力する。
【０１１７】
＜２３．追加：入力データのデータ種別＞
なお、Ｓ２０３に関して、本実施例２の場合、入力データ２０１のデータ種別により有効なアルゴリズムが異なるため、あらかじめ効果が期待できないアルゴリズム（入力データ２０１のデータ種別には有効でないアルゴリズム）がわかっている場合は、アルゴリズム指定部１０３により、効果が期待できないアルゴリズムを適用除外対象として指定すればよい。これにより、Ｓ２０５、Ｓ２０６で無駄なルール実行（アルゴリズム実行）を行う必要がなくなり、実行時間を短縮できる。また、入力データ２０１のデータ種別により、効果の期待できるルールとそうでないルールを判別できる場合がある。このため、ユーザは、アルゴリズム指定部１０３により、入力データ２０１のデータ種別について使用するアルゴリズムを指定（選択条件の一例）することが可能である。
【０１１８】
＜２４．Ｓ２０４における探索パターン抽出でのバリエーション詳細説明＞
（１）（処理１の実行パターン数Ａについて）
図１４に示した処理１（Ｓ５−１−Ｂ）のフォーマット変換では、登録ルールはバイト列変換ルールがある。これは、データ種別毎に使用可能なルールは１つであり、したがって、処理１として適用可能なルール数は、「１」となる。ただし、処理１は「オプション処理」であり、実行しない場合もありうる。よって、処理１のフォーマット変換としての「実行パターン数（Ａとおく）」は、最大２である。データ種別の指定は、アルゴリズム指定部１０３により、Ｓ２０３の使用アルゴリズム指定の過程で行う。
（２）（処理２の実行パターン数Ｂについて）
処理２（Ｓ５−２−Ｂ）のバイナリ比較（差分抽出）では、登録ルールは「パラメータ組み合わせルール」である。「パラメータ組み合わせルール」は、複数の組み合わせがある。設定可能なパラメータがＰ１、Ｐ２、Ｐ３の３種類とし、それぞれの設定値がＰ１が２種類、Ｐ２が３種類、Ｐ３が４種類とすれば、パラメータ（Ｐ１、Ｐ２、Ｐ３）の組み合わせ数は、２×３×４＝２４（通り）となる。差分抽出処理は「必須処理」なので、差分抽出処理（処理２）としての実行パターン数（Ｂとおく）の最大は、上記の組み合わせ数＝２４（通り）である。なお、アルゴリズム指定部１０３により、Ｓ２０３における使用アルゴリズム指定の過程で、上記パラメータの設定値で使用する値を限定することも可能であり、そうすれば、上記組み合わせ数も設定に応じ全組み合わせの場合よりも少なくなる。
（３）（処理３の実行パターン数Ｃについて）
処理３（Ｓ５−３−Ｂ）の差分表現では、「必須ルール」の他に、「オプションルール」として登録ルールは「マクロコピー」と、「ＩＮＳＥＲＴ／ＤＥＬＥＴＥ」との２種類である。よって、差分表現の「実行パターン」として、まずは次の（ａ）〜（ｄ）の４通りがある。
（ａ）「マクロコピー」と「ＩＮＳＥＲＴ／ＤＥＬＥＴＥ」とのいずれも実行しない（必須ルールのみ実行する）。
（ｂ）「マクロコピー」だけ実行する（必須ルール＋「マクロコピー」）。
（ｃ）「ＩＮＳＥＲＴ／ＤＥＬＥＴＥ」だけ実行する（必須ルール＋「ＩＮＳＥＲＴ／ＤＥＬＥＴＥ」）。
（ｄ）「マクロコピー」と「ＩＮＳＥＲＴ／ＤＥＬＥＴＥ」とも両方実行する（必須ルール＋「マクロコピー」、「ＩＮＳＥＲＴ／ＤＥＬＥＴＥ」）。
よって、差分表現としての実行パターン数（Ｃとおく）は、最大４（通り）となる。さらに、「マクロコピー」については、マクロコピーの検出ルールを複数あるとした場合は、「マクロコピー」の実行パターンが増え、Ｃも増える。なお、アルゴリズム指定部１０３により、Ｓ２０３の使用アルゴリズム指定の過程で、差分表現で上記４種類の実行パターンを指定したり、「マクロコピー」の検出ルールが複数ある場合、使用するものを限定することも可能であり、そうすれば、上記組み合わせ数も設定に応じ全組み合わせの場合よりも少なくなる。
【０１１９】
よって最適「組合せパターン」探索のために実行するべき「組合せパターン」の最大数は、
Ａ×Ｂ×Ｃ＝２×２４×４＝１９２
となる。探索パターン抽出部１０４は、処理１〜処理３で使用可能なアルゴリズム（ルール）をアルゴリズム格納部１０８から選択し、選択したアルゴリズムにもとづいて、最大で互いに異なる「Ａ×Ｂ×Ｃ＝１９２（通り）」の「組合せパターン」を抽出（構築）する。そして、探索パターン実行部１０５が、１９２（通り）の「組合せパターン」を実行して、１９２個の出力データ２０３を生成する。
【０１２０】
本実施例２の最適アルゴリズム判定装置１００は、処理が２つ以上あり、それぞれの処理に有効なルールを登録し、登録したルールを適用して複数の「組合せパターン」ごとに出力データを生成し、複数の「組合せパターン」から最適パターンの選択を行うことが出来る。
【０１２１】
＜２５．実施例２の効果＞
以上より、手動で「最適組合せパターン」を判定するには、上記の例では最大１９２（通り）の差分データを作成する必要がある。しかし、本実施例２の最適アルゴリズム判定装置１００を使用すれば、各処理に必なルールのみを登録しておけば、出力結果（出力データ）を１つ１つ手動で作成する必要ない。最適アルゴリズム判定装置１００は、簡易な操作で全ての「組合せパターン」を自動実行し、正確に最適データ（本実施例２の場合は最小差分データ）を特定し、また最適データを生成する「最適組合せパターン」を特定することができる。よって、作業負担の大幅な軽減、より的確なアルゴリズム選択を行うことができる。
【０１２２】
＜２６．追記１＞
また、本実施例２においても、実施例１と同様に実行時間やディスク容量節約を考慮した処理が可能である。また、Ｓ２０４における「組合せパターン」の抽出において、差分データ作成の場合、処理１（フォーマット変換）はオプション処理である。よって探索パターン抽出部１０４は、処理１を実行せず、処理２から開始する「組合せパターン」を構築してもよいのはもちろんである。また、処理３（差分表現）に関しても、更新内容が登録されたマクロコピーやＩＮＳＥＲＴ／ＤＥＬＥＴＥのルールでは効果のあるケースを含んでいないことが明らかである場合は、「必須ルール」のみ行い、これらの「オプションルール」の適用を除外するようにアルゴリズム指定部１０３により指定し、「組合せパターン」の抽出を行うようにしても良い。
【０１２３】
＜２７．追記２＞
また、Ｓ２０８では、ユーザへの参考情報として、最適パターン判定部１０７は、各「組合せパターン」により生成された出力データ２０３についての情報、例えば出力データサイズなどを「実行結果情報」として、一緒に出力部に出力しても良い。
【０１２４】
＜２８．追記３＞
また、各処理の新たなルールの発見、あるいはルール適用効果の個別確認を支援するため、各処理の適用結果である中間データを分析する分析手段、あるいは中間データ分析部を追加し、各処理の実行結果の分析情報を人間がわかりやすい形で提供することを行っても良い。特に差分データ作成の場合、最初に処理２の差分抽出のみデフォルトのルールで実行し、一致・更新領域情報を出力し、これを人間が理解しやすい形式に出力すれば、さらには更新発生個所の分布や、更新内容などの統計情報を出力することで、更新傾向の確認や、バイナリ比較で効果のあるパラメータ値の組み合わせを確認したり、フォーマット変換や差分表現の新たなルール発見を支援する効果が得られる。
【０１２５】
（実施例３）（携帯音楽プレーヤーへの音楽ファイル作成）
次に図２２〜図２４を用いて実施例３を説明する。実施例３として、最適アルゴリズム判定装置１００で行う処理を、携帯音楽プレーヤー８２０への音楽コンテンツ登録とした場合について述べる。
【０１２６】
図２２は、実施例３のシステム構成の一例を示す図である。最適アルゴリズム判定装置１００と音楽配信サーバとがインターネットを介して接続している。最適アルゴリズム判定装置１００は、音楽配信サーバからダウンロードした音楽ファイル、あるいは音楽ＣＤから作成した音楽ファイル等を変換し、携帯音楽プレーヤー８２０に使用するメモリカード８１９に登録することができる。
【０１２７】
メモリカード８１９など記憶容量が少ない記憶媒体を使用する携帯音楽プレーヤー８２０の場合、あるいは記憶容量は十分にあるが、空き容量が少なく新規に登録可能な曲数に制約があるような場合、「お気に入りの音楽ＣＤ３枚を登録したいが全て登録できるのか？」といったことは、実際に変換ファイルを作成してサイズを確認してみないとわからない。ファイルサイズは、使用する変換アルゴリズムによっても差が出る。現在の音楽変換（エンコード）の一般的アルゴリズムとしてはＡＡＣ，ＡＩＦＦ，ＭＰ３，ＷＡＶなど複数の種類がある。使用するアルゴリズムにより、１曲の差は僅かであっても、曲数が多い場合は合計サイズの差が大きくなることも考えられる。変換後のサイズについては、非常に大雑把な数字ではあるが、ある程度は大まかな目処は付く。例えば、ＡＡＣステレオモード（１２８ｋｂｐｓ）、３〜４分前後の曲であれば３〜４ＭＢ程度である。しかし、実際には楽曲によりサイズは若干異なるので、実際は変換ファイルを作成してみないと正確な数字はわからない。特に複数の曲を変換する場合、その合計がどうなるかを正確に予測することは難しい。また、音楽変換アルゴリズムでは、同一アルゴリズムでもパラメータ値（ビットレート、サンプリングレートなど）を持つので、このパラメータ値の設定により出力結果が異なる。例えばビットレートの場合、当然ながら高レートを指定すれば高音質であるが、ファイルサイズは大きくなる。逆にすれば、品質は良くないがファイルサイズは小さくできる。曲数が多く、なおかつ空き領域に余裕がないような場合は、特にお気に入りの曲は高音質、それ以外は低音質といった条件指定をして、所望の曲を取りこぼしなく全曲登録できることが望ましい。
【０１２８】
明らかに曲数が多ければ、アルゴリズムやレート指定の調整では間に合わず、全曲収録は困難であるが、本実施例３の最適アルゴリズム判定装置１００は、アルゴリズムやレート指定の調整で救える微妙なケースを対象に、「最適組合せパターン」探索を行い、手動では困難であった全曲登録を簡易な手順で可能にすることを目的とする。
【０１２９】
図２３は、最適アルゴリズム判定装置１００が、本実施例３の場合に実行する処理である音楽ファイル変換アルゴリズム処理（Ｓ５−１−Ｃ）、およびその処理で使用する音楽ファイル変換アルゴリズム（ルールの一例）と、データフローを示す図である。図１０、図１１、図１４等と同様に、探索パターン抽出部１０４によりルールが選択され、組合せパターンが抽出された後を示している。
【０１３０】
入力データ２０１は複数の音楽ファイルであり、これを変換してファイルサイズが一番小さくなるようにしたい場合について説明する。このよう場合の例としては、指定した複数の音楽ファイルは、ユーザのお気に入りの楽曲を集めたもの、あるいはお気に入りのＣＤの収録曲などといった場合が想定される。
【０１３１】
最適アルゴリズム判定装置１００には、事前に音楽ファイル変換処理（Ｓ５−１−Ｃ）で使用するアルゴリズムをアルゴリズム登録部１０１により登録しているものとする。アルゴリズムの具体例としては、通常の音楽ファイル変換アルゴリズムであるｍｐ３，ｗｍａ，ｍ４ａなどを登録しておく。図２３では、音楽ファイル変換アルゴリズム１〜音楽ファイル変換アルゴリズムＮのＮ個を登録したものとする。
【０１３２】
図２４を参照して実施例３における最適アルゴリズム判定装置１００の動作を説明する。図２４は、実施例３における最適アルゴリズム判定装置１００の動作を説明するフローチャートであり、実施の形態１の図９に対応する。図２４により、ユーザが指定した複数の入力ファイルに対して、合計サイズが所定サイズ以下となるように、最適アルゴリズム判定装置１００は、音楽ファイル変換を行う動作を説明する。
【０１３３】
まずＳ３０１（Ｓ１に相当）の処理として、ユーザは、変換したい音楽ファイル群を入力データ２０１としてマウス８１５などの入力装置により指定する。
【０１３４】
次にＳ３０２（Ｓ２に相当）の処理として、ユーザは、最適パターン判定条件指定部１０２により、判定条件を設定する。この実施例３では、判定条件となる項目は出力データ２０３の「合計ファイルサイズ」である。また、値の条件は、一例として「５０ＭＢ（メガバイト）以下」とする。ここで指定する「５０ＭＢ」という数字は、例えば、メモリカード８１９などの記憶媒体の出力先領域の空き容量サイズである。
【０１３５】
次にＳ３０３（Ｓ３に相当）の処理として、ユーザは、アルゴリズム指定部１０３により、登録されている音楽ファイル変換アルゴリズムから適用除外したいものがある場合は、これを指定する。指定方法としては、使用したいもの、使用しないもの、いずれの指定方法でも構わない。例えば、携帯音楽プレーヤー８２０によって再生出来ない形式がある場合は、その形式の音楽ファイル変換アルゴリズムを指定して除外する、といった使い方がある。この他にも、指定した以外の形式には変換したくないような場合に指定すると、探索パターン（「組合せパターン」）から除外できるので有効である。
（１）さらに、音楽ファイル変換の場合、各音楽ファイル変換アルゴリズム毎にパラメータ情報としてビットレートやサンプリングレートなどが設定できるので、ユーザは、これらの値の範囲などもアルゴリズム指定部１０３により設定することができる。音質を一定以上に保ちたい場合などに指定する。
（２）また、複数ある曲のうち、特にお気に入りの曲だけは、高品質を確保したい、といった場合、ユーザは、アルゴリズム指定部１０３により、曲や曲のグループを定義し、これらの単位で、アルゴリズムやパラメータなどの条件を設定することも可能とする。
（３）また、事前に登録済音楽ファイルから削除してよい曲を最適アルゴリズム判定装置１００に記憶しておき、「最適組合せパターン」の判定の結果、空き容量が不足する場合は、最適パターン判定部１０７が、これらのファイル（削除してもよい曲）を削除した場合に登録可能かどうかも含めて判定を行うようにすれば、ユーザの希望に沿うディスク領域（記憶媒体の記憶領域）の有効利用を図ることが出来る。
【０１３６】
次にＳ３０４（Ｓ４に相当）の処理として、探索パターン抽出部１０４が、実行対象とする音楽ファイル変換アルゴリズムを選択する。Ｓ３０３で何か条件が指定されていれば、その範囲内で抽出する。例えば４種類の音楽ファイル変換アルゴリズムが登録されており、Ｓ３０３で１種類が除外対象に指定された場合は、３種類を３パターンとして選択する。また、音楽ファイル変換の場合、Ｓ３０３で述べたように、各音楽ファイル変換アルゴリズム毎にパラメータ情報としてビットレートやサンプリングレートなどが設定できる。これらビットレートなどが設定されている場合は、探索パターン抽出部１０４は、これらの組み合わせを含めて「組合せパターン」を抽出（構築）する。
【０１３７】
次にＳ３０５、Ｓ３０６（Ｓ５，Ｓ６に相当）の処理として、探索パターン実行部１０５が、Ｓ３０４で抽出した各「組合せパターン」を実行し、各「組合せパターン」ごとの出力データ２０３−１等を生成する。
【０１３８】
次にＳ３０７（Ｓ７に相当）の処理として、最適パターン判定部１０７は、Ｓ３０５で生成した出力データ２０３−１等のファイルサイズを取得し、出力データ２０３−１等のなかから判定条件に最も適合する最適データと、最適データを生成した「最適組合せパターン」とを特定する。
【０１３９】
次にＳ３０８（Ｓ８に相当）の処理として、最適パターン判定部１０７は、「最適データ」と「最適組合せパターン」とを出力部に出力する。もしＳ３０７において最適データを特定できない場合は、最適パターン判定部１０７は、近似するパターンについて、上記のような情報を提供したり、あるいは該当パターンなし、といった出力を行う。このような条件を満たさない場合の動作については、実行前にユーザがあらかじめ選択出来るようにしておくことを可能とする。また、ユーザへの参考情報として、各「組合せパターン」ごとの各曲（出力データ２０３−１、出力データ２０３−２等）の出力データサイズなどの情報を実行結果情報として、一緒に出力部に出力しても良い。
【０１４０】
また、本実施例３においても、実施例１と同様に実行時間・ディスク容量節約を考慮した処理を可能とする。
【０１４１】
また、出力ファイルサイズの確認は、これまでは探索パターン実行部１０５が、実際に処理を実行して出力ファイル（出力データ）を得て、実際のファイルサイズを参照して行う方式としている。しかし、変換対象とする音楽ファイルの解析、使用する音楽ファイル変換アルゴリズムやそのパラメータ値などにより、概算レベルでも算出可能な計算式を最適アルゴリズム判定装置１００が有する場合は、最適アルゴリズム判定装置１００は、実際に出力ファイル作成は行わず、計算したファイルサイズにより判定を行っても良い。そうすれば、精度に若干の誤差はあるかもしれないが、実行時間、ディスク消費量を節約した最適パターンの判定を行うことが出来る。
【０１４２】
携帯音楽プレーヤー８２０は、近年、記憶媒体が従来のＭＤやＣＤなどから、ハードディスク、フラッシュメモリ、メモリカードなど、パーソナルコンピュータと同様の媒体へと移行しつつあり、軽量・小型化・大容量化が進んでいる。また、携帯電話にも音楽ダウンロード機能や再生機能が搭載されるようになり、携帯音楽プレーヤー８２０は製品の多様化が進んでいる。
【０１４３】
これらの製品の方向性としては、大別すると２つある。一つは、記憶媒体をハードディスクとし、これまでの製品にはなかった大容量の記憶容量（現在は数十ＧＢ相当）とすることで、個人の保有する音楽を全て登録・持ち歩き可能にする、といった革新的な音楽視聴スタイル実現をセールスポイントとするものである。もう一つは、携帯電話のように、記憶容量は前者に比べると格段に少なくなるが、記憶媒体に安価なメモリカードなどを使用し、携帯中に手軽に音楽を聞けることをセールスポイントとするものである。
【０１４４】
本実施例３は、主に後者（携帯電話の例）において効果が期待できると考える。音楽再生能を搭載した携帯電話などでは、記憶媒体は、端末コストの関係で記憶容量に制約がある。現状は、前者（大容量の記憶容量）のような利用は不可能である。メモリカードも大容量化が進んではいるものの、大容量版は数万円と高価であり、普及が進んでいない。この金額は電車内などで暇つぶし的に気軽に音楽を聞きたいユーザ層や、学生ユーザ層には負担であるため、比較的購入しやすい２５６ＭＢ程度が上限であり、端末メーカー側も、動作保証する上限サイズをこのレベルにしているところが多い。
【０１４５】
なお、今後の技術革新でメモリカードの価格が下がり、大容量サイズのメモリカードのコストの問題が解決し、いずれ普及が進むと考えられるが、大容量の記憶容量であっても、ユーザの利用形態により、記憶容量に余裕のない制約のある状況は今後も存在しうると考えられ、このような場合に本実施例３の最適アルゴリズム判定装置１００は有効と考える。
【０１４６】
例えば、大容量型の携帯音楽プレーヤーなどは、ＵＳＢ／ＩＥＥＥ１３９４などのインタフェースを持つ記憶デバイスとして通常のＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）用ＵＳＢメモリと同様の扱いも可能である。よって音楽プレーヤーだけでなく、大容量のＵＳＢメモリとして通常のＰＣ向けデータの保存・持ち運び装置としても使用可能である。携帯音楽プレーヤーの中には、写真表示機能を持たせた製品なども出ている。大容量の記憶容量のうち、一部だけ音楽プレーヤー用に使用する利用形態を想定した場合、音楽用に使える容量に制約が生じるケースもあると思われる。そのような場合、本実施例３の最適アルゴリズム判定装置１００を適用すれば、前記で説明したのと同様の効果が得られる。さらには、音楽専用で使用する場合であっても、通常のＰＣのハードディスク上で音楽ファイル登録を行うような記憶容量の全体サイズとしては事実上制約がないような場合も含め、空き容量が少なくなった状態で新たに曲を追加登録したい場合においては、容量の制約問題は生じるので、同様の効果が得られる。
【０１４７】
また本実施例３は、映像ファイルの場合についても適用可能である。ＤＶＤレコーダーで録画した映像コンテンツをＤＶＤ−ＲＡＭやＤＶＤ−Ｒなどの保存用記憶媒体に登録する場合、レコーダーには数百ＧＢ（ギガバイト）単位の大容量の記憶装置を持つ。しかし、保存用記憶媒体（ＤＶＤ−ＲＡＭ等）は１０ＧＢ以下であり、転送時には保存用記憶媒体の上限サイズ（または空き容量）を意識する必要があり、そのままでは格納できない場合もある。そこで、場合によっては、映像のビットレートを落として変換することで、登録可能にしたい場合も考えられる。
【０１４８】
なお、映像のエンコード（ファイル変換）は非常に時間がかかり、ディスク容量も消費する。よって先に述べたように、変換対象とする映像ファイルの解析、使用するファイル変換アルゴリズムやそのパラメータ値などにより概算レベルでも算出可能な計算式を有する場合は、実際に出力ファイル作成は行わず、計算のみのよって最適なパターンの判定を行っても良い。そうすれば、精度に若干の誤差はあるかもしれないが、実行時間、ディスク消費量を節約しながら、概算レベルでの最適パターンの判定を行うことが出来る。
【０１４９】
実施の形態１の最適アルゴリズム判定装置１００は、探索パターン抽出部１０４が「組合せパターン」を構築し、探索パターン実行部１０５が、各「組合せパターン」を実行して各「組合せパターン」ごとに出力データを生成する。よって、１つ以上の処理を実行して所定のデータを作成する場合にデータ作成の各過程で使用するアルゴリズムが複数あり、その種類により出力結果となる出力データの性能値に差異が生じるような場合において、各過程で適用可能なアルゴリズムの組み合わせである「組合せパターン」について網羅的に実際に出力データを出力し、出力データのなかから容易に最適データを選ぶことができる。
【０１５０】
実施の形態１の最適アルゴリズム判定装置１００は、アルゴリズム指定部１０３を備えたので、ユーザは、使用するアルゴリズム、あるいは使用しないアルゴリズムを指定することができる。これにより、無駄な「組合せパターン」が減り、実行時間の短縮を図ることができる。
【０１５１】
実施の形態１の最適アルゴリズム判定装置１００は、アルゴリズム登録部１０１を備えたので、ユーザは自由にアルゴリズムを登録することができる。
【０１５２】
実施の形態１の最適アルゴリズム判定装置１００は、判定条件を受け付ける最適パターン判定条件指定部１０２と、「組合せパターン」により出力データの生成実行中に、判定条件に適合する出力データが生成できるかどうかを監視し、生成できないと判断した場合に、その判断に係る「組合せパターン」による出力データの生成を中止する探索パターン実行部１０５とを備えたので、実行時間を節約することができる。また、その「組合せパターン」による生成処理を中止するため、その「組合せパターン」の出力データを記憶する必要がなくなり、記憶容量を節約できる。
【０１５３】
実施の形態１の最適アルゴリズム判定装置１００は、判定条件を受け付ける最適パターン判定条件指定部１０２と、判定条件に基づいて、各「組合せパターン」により生成された出力データから判定条件に最も適合する出力データを最適データとして特定する最適パターン判定部１０７とを備えた。よって、１つ以上の処理を実行して所定のデータを作成する場合にデータ作成の各過程で使用するアルゴリズムが複数あり、その種類により出力結果となる出力データの性能値に差異が生じるような場合において、各過程で適用可能なアルゴリズムの組み合わせである「組合せパターン」について網羅的に実際に出力データを出力し、出力データのなかから自動的に最適データを得ることができる。
【０１５４】
実施の形態１の最適アルゴリズム判定装置１００は、最適パターン判定条件指定部１０２は複数の判定条件を受け付け、最適パターン判定部１０７は、複数の条件に基づいて最適データを特定するので、ユーザは柔軟な判定条件の指定が可能となり、希望する出力データを得やすくなる。
【０１５５】
実施の形態１の最適アルゴリズム判定装置１００は、最適パターン判定条件指定部１０２が、判定条件として出力データの生成時間を受け付けるので、実行時間の短い出力データを知ることができる。
【０１５６】
実施の形態１の最適アルゴリズム判定装置１００は、最適パターン判定条件指定部１０２が、判定条件として出力データのデータサイズを受け付けるので、同一の入力データから最もデータサイズの小さい出力データを最適データとして得ることができる。
【０１５７】
実施の形態１の最適アルゴリズム判定装置１００は、最適パターン判定部１０７が、最適パターン判定条件指定部１０２の受け付けた判定条件に対応する最適データ性能値を特定するので、ユーザは、最適データと判定条件との対応を容易にしることができる。
【０１５８】
実施の形態１の最適アルゴリズム判定装置１００は、最適パターン判定部１０７が、最適データを生成した「組合せパターン」を特定する。よって、１つ以上の処理を実行して所定のデータを作成する場合にデータ作成の各過程で使用するアルゴリズムが複数あり、その種類により出力結果となる出力データの性能値に差異が生じるような場合において、各過程で適用可能なアルゴリズムの組み合わせである「組合せパターン」について網羅的に実際に出力データを出力し、「組合せパターン」のなかから容易に最適な「組合せパターン」を選ぶことができる。
【０１５９】
実施の形態１の最適アルゴリズム判定装置１００は、最適パターン判定部１０７が、各「組合せパターン」により順次生成される出力データについて、２組ずつ比較し、２組のうちより判定条件に適合する出力データを候補データとして保存し、最終的な候補データを最適データとするので、記憶部の記憶容量が出力データ２つぶんを格納可能な程度しかない場合にも、最適データを得ることができる。
【０１６０】
実施の形態２．
実施の形態２は、実施の形態１の最適アルゴリズム判定装置１００の動作を、方法、プログラム、及びプログラムを記録した記録媒体により実施する実施形態である。
【０１６１】
前記の実施の形態１においては、最適アルゴリズム判定装置１００における「〜部」として示した各構成要素の動作は互いに関連しており、動作の関連を考慮しながら、一連の動作を一連のステップと把握することによりデータ生成方法の実施形態とすることができる。また、最適アルゴリズム判定装置１００の各構成要素の一連の動作をコンピュータに実施させる一連の処理に置き換えることができる。各構成要素の動作を一連の処理に置き換えることにより、データ生成プログラムの実施形態とすることができる。また、このデータ生成プログラムを、コンピュータ読み取り可能な記録媒体に記録させることで、プログラムを記録したコンピュータ読み取り可能な記録媒体の実施の形態とすることができる。
【０１６２】
図２５は、実施の形態１の最適アルゴリズム判定装置１００の
（１）データ入力部１０６の動作、
（２）アルゴリズム格納部１０８がアルゴリズムを複数のアルゴリズム（ルール）をメモリに格納する動作、
（３）探索パターン抽出部１０４が、「組合せパターン」を抽出（構築）する動作、
（４）探索パターン実行部１０５が、「組合せパターン」ごとに出力データを生成する動作
という一連の動作をステップに置き換えてデータ生成方法の実施形態としたフローチャートを示す。
【０１６３】
Ｓ４０１は、データ入力部が、入力データを受け付けるステップである。Ｓ４０２は、アルゴリズム格納部１０８（ルール格納部）が、出力データの生成に使用可能な複数のルールをメモリに記憶して格納するステップである。Ｓ４０３は、探索パターン抽出部１０４（経路構築部）が、前記メモリに記憶された複数のルールのうち出力データの生成に使用するルールを選択してメモリから読み出し、選択して読み出したルールに基づいて、入力データから出力データを生成可能な互いに異なる複数の組合せパターン（出力データ生成経路）を構築するステップである。Ｓ４０４は、最適パターン判定部１０７（出力データ生成部）が、探索パターン抽出部１０４の構築したそれぞれの組合せパターンによって、組合せパターンごとに出力データ（経路別出力データ）を生成するステップである。
【０１６４】
また図２６は、最適アルゴリズム判定装置１００の各構成要素の動作をコンピュータに実行させる処理と把握した場合におけるデータ生成プログラムのフローチャートである。図２６は、図２５に対応する。
【０１６５】
プログラムの実施形態及びプログラムを記録したコンピュータ読み取り可能な記録媒体の実施形態は、すべて図６、図７に示したようなコンピュータシステムで動作可能なプログラムにより構成することができる。
【０１６６】
実施の形態２のデータ生成方法によれば、１つ以上の処理を実行して所定のデータを作成する場合にデータ作成の各過程で使用するアルゴリズムが複数あり、その種類により出力結果となる出力データの性能値に差異が生じるような場合において、各過程で適用可能なアルゴリズムの組み合わせである「組合せパターン」について網羅的に実際に出力データを出力し、出力データのなかから容易に最適データを選ぶことができる。
【０１６７】
実施の形態２のデータ生成プログラムによれば、１つ以上の処理を実行して所定のデータを作成する場合にデータ作成の各過程で使用するアルゴリズムが複数あり、その種類により出力結果となる出力データの性能値に差異が生じるような場合において、各過程で適用可能なアルゴリズムの組み合わせである「組合せパターン」について網羅的に実際に出力データを出力し、出力データのなかから容易に最適データを選ぶことができる。
【０１６８】
以上の実施の形態では、入力データに対し、１つ以上の処理を実行し、所定のデータを出力する処理において、出力データ作成のための各過程で使用する変換方式／アルゴリズムが複数あり、その種類によって、出力結果となる出力データの性能値（ファイルサイズ、画質など）に差異が生じるようなアルゴリズム適用処理過程において、以下を備えた最適方式／アルゴリズム選択装置・選択方式を説明した。
（１）データ作成のための各過程で使用可能なアルゴリズムを登録するアルゴリズム登録手段
（２）複数の登録アルゴリズムからこれらの可能な「組合せパターン」を抽出する探索パターン抽出手段
（３）探索パターン抽出手段で検出した各パターンを順次実行してそれぞれの出力データを出力する探索パターン実行手段
（４）探索パターン実行手段の各種出力データに対し、ユーザが目標とする性能値の指定が可能な最適パターン判定条件指定手段
（５）探索パターン実行手段の各種出力データの中から、最適パターン判定条件指定手段で指定した条件に最も近似するパターンを特定、そのパターンのアルゴリズムの組み合わせを通知する最適パターン判定手段
【０１６９】
以上の実施の形態では、最適パターン判定条件指定手段について、２つ以上の条件を指定することが可能な最適パターン判定条件指定手段と、これに従い指定した条件に最も近似するパターンを特定、そのパターンのアルゴリズムの組み合わせを通知する最適パターン判定手を備えた最適方式／アルゴリズム選択装置・選択方式を説明した。
【０１７０】
以上の実施の形態では、あらかじめ有効なアルゴリズムがわかっている場合などにユーザが予め探索パターンを限定するよう使用アルゴリズムを指定することが可能なアルゴリズム指定手段を備えた最適方式／アルゴリズム選択装置・選択方式を説明した。
【０１７１】
以上の実施の形態では、出力データを得るまでの処理過程が２つ以上の場合において、各処理過程毎に１つ以上のアルゴリズム登録、適用が可能であり、各過程のアルゴリズム組み合わせの全「組合せパターン」から最適パターンの選択を行うことが可能な探索パターン抽出手段、探索パターン実行手段、最適パターン判定条件指定手段，最適パターン判定手段を備えた最適方式／アルゴリズム選択装置・選択方式を説明した。
【０１７２】
以上の実施の形態では、出力データの数が多く、ディスク容量を圧迫する場合の対策として、出力データは、指定条件の結果値のみ保存し、出力データ自体は保存せずに生成後削除する探索パターン実行手段を備えた最適方式／アルゴリズム選択装置・選択方式を説明した。
【０１７３】
以上の実施の形態では、出力データの数が多く、ディスク容量を圧迫する場合の対策として、出力データは、あらかじめ指定条件の閾値を設定しておき、閾値を超える場合は生成処理を中断し、そのパターンは不適格と判定する探索パターン実行手段と、最適パターン判定条件指定手段と、最適パターン判定手段とを備えた最適方式／アルゴリズム選択装置・選択方式を説明した。
【０１７４】
以上の実施の形態では、出力データの数が多く、ディスク容量を圧迫する場合の対策として、出力データは、実行時点で指定条件の値に最も近い値のデータのみ保存し、以後のパターン実行でこれを上回る近似値の出力データが出現した場合は、古い方を削除し、新しい出力データを残すことで、より近似値に近い出力データのみを残す探索パターン実行手段、最適パターン判定条件指定手段、最適パターン判定手段を備えた最適方式／アルゴリズム選択装置・選択方式を説明した。
【０１７５】
以上の実施の形態では、出力データに対するユーザが最適パターン判定条件指定手段により目標とする指定する性能値の条件を、出力データ生成の実行時間とする最適方式／アルゴリズム選択装置・選択方式を説明した。
【０１７６】
以上の実施の形態では、出力データに対してユーザが最適パターン判定条件指定手段により目標として指定する性能値の条件を、出力データのデータサイズとする最適方式／アルゴリズム選択装置・選択方式を説明した。
【図面の簡単な説明】
【０１７７】
【図１】実施の形態１におけるシステム構成の例を示す。
【図２】実施の形態１における最適アルゴリズム判定装置１００の動作概要を説明する図である。
【図３】実施の形態１における最適アルゴリズム判定装置１００の動作概要を説明する図である。
【図４】実施の形態１における最適アルゴリズム判定装置１００の動作概要を説明する図である。
【図５】実施の形態１における最適アルゴリズム判定装置１００の動作概要を説明する図である。
【図６】実施の形態１における最適アルゴリズム判定装置１００の外観を示す図である。
【図７】実施の形態１における最適アルゴリズム判定装置１００のハードウェア構成を示す図である。
【図８】実施の形態１における最適アルゴリズム判定装置１００のブロック図である。
【図９】実施の形態１における最適アルゴリズム判定装置１００の動作を説明するフローチャートである。
【図１０】実施の形態１における探索パターン実行部１０５の処理フローを示す図である。
【図１１】実施例１における探索パターン実行部１０５によるファイル圧縮を説明する図である。
【図１２】実施例１における最適アルゴリズム判定装置１００の動作を説明するフローチャートである。
【図１３】実施例２におけるシステム構成の例を示す。
【図１４】実施例２における探索パターン実行部１０５の処理フローを示す図である。
【図１５】実施例２における差分表現を説明する図である。
【図１６】実施例２における差分コマンド体系を示す図である。
【図１７】実施例２におけるマクロコピーを説明する図である。
【図１８】実施例２における差分表現のＩＮＳＥＲＴコマンドを説明する図である。
【図１９】実施例２における差分表現のＤＥＬＥＴＥコマンドを説明する図である。
【図２０】実施例２におけるフォーマット変換を説明する図である。
【図２１】実施例２における最適アルゴリズム判定装置１００の動作を説明するフローチャートである。
【図２２】実施例３におけるシステム構成の例を示す。
【図２３】実施例３における探索パターン実行部１０５の処理フローを示す図である。
【図２４】実施例３における最適アルゴリズム判定装置１００の動作を説明するフローチャートである。
【図２５】実施の形態２におけるデータ生成方法を説明するフローチャートである。
【図２６】実施の形態２におけるデータ生成プログラムを説明するフローチャートである。
【符号の説明】
【０１７８】
１００  最適アルゴリズム判定装置、１０１  アルゴリズム登録部、１０２  最適パターン判定条件指定部、１０３  アルゴリズム指定部、１０４  探索パターン抽出部、１０５  探索パターン実行部、１０６  データ入力部、１０７  最適パターン判定部、１０８  アルゴリズム格納部、１０９  特定情報格納部、２１０  インターネット、２２０  端末装置、８００  コンピュータシステム、８１０  ＣＰＵ、８１１  ＲＯＭ、８１２  ＲＡＭ、８１３  液晶表示装置、８１４  キーボード、８１５  マウス、８１６  通信ボード、８１７  ＦＤＤ、８１８  ＣＤＤ、８１９  メモリカード、８２０  携帯音楽プレーヤー、８２１  プリンタ、８２５  バス、８３０  磁気ディスク装置、８３１  ＯＳ、８３２  ウィンドウシステム、８３３  プログラム群、８３４  ファイル群、８５０  システムユニット。
【図１】
0004804836.tif 000002
【図２】
0004804836.tif 000003
【図３】
0004804836.tif 000004
【図４】
0004804836.tif 000005
【図５】
0004804836.tif 000006
【図６】
0004804836.tif 000007
【図７】
0004804836.tif 000008
【図８】
0004804836.tif 000009
【図９】
0004804836.tif 000010
【図１０】
0004804836.tif 000011
【図１１】
0004804836.tif 000012
【図１２】
0004804836.tif 000013
【図１３】
0004804836.tif 000014
【図１４】
0004804836.tif 000015
【図１５】
0004804836.tif 000016
【図１６】
0004804836.tif 000017
【図１７】
0004804836.tif 000018
【図１８】
0004804836.tif 000019
【図１９】
0004804836.tif 000020
【図２０】
0004804836.tif 000021
【図２１】
0004804836.tif 000022
【図２２】
0004804836.tif 000023
【図２３】
0004804836.tif 000024
【図２４】
0004804836.tif 000025
【図２５】
0004804836.tif 000026
【図２６】
0004804836.tif 000027