(57)【要約】      （修正有）【課題】コンピューターで使用する文字列等のデーターを高速に検索する為に分類する分類用の符号を生成する技術を提供する。【解決手段】分類対象文字列の任意の位置から任意の文字数分文字列を取得して、２進数に変換して、２進数に変換した数値の任意の位置から任意の桁数の２進数を抽出して、抽出した２進数を１０進数に変換して分類する為の符号として生成すると言うbit単位で処理を行う。【選択図】図１
2018200546.tif 000002
【特許請求の範囲】
【請求項１】
以下に、「生成する」と「算出する」は、同じ意味として使用する事とし、以下に、変数や配列を作成すると記述しているが変数や配列が作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、また、コンピューターで普通に使われているテキスト文字（日本国では、文字コード二文字以上で一文字を表す文字と文字コード一文字で表す半角文字の事）を、文字と呼んだり、文字とリンクされている数値を文字コードと言う事があるとし、文字コードは、0〜255までの数値であるとする事とし、以下に、変数の型とは、人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型と、string型の変数ではない数値を代入する事が出来る型とがあるが、変数を作成する場合に、string型の場合のみ「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現でstring型の変数を作成する事とし、string型の変数ではない数値を代入する事が出来る変数に数値を代入する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とし、ファイルを開いたり保存したりする形式には、テキスト形式という形式があり、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式であり、テキスト形式で1byteずつデーターをファイルに記録して保存すると言う表現で説明する事とし、ファイルを開いたり保存したりする形式には、バイナリー形式と言う形式があり、バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う数値に変換される形式であり、バイナリー形式でファイルを開いて、1byteずつデーターを読み込むと言う表現で説明する事とし、100byteのstring型で変数を作成して、この変数を元データー変数と呼ぶ事とし、この元データー変数に、操作画面のデーターを入力するテキストボックスに任意に人為的に入力されたデーターを100byte取得して代入し、元データー変数に代入されたデーターを分類対象データーと呼ぶ事とし、元データー変数に代入されたデーターをテキスト形式でファイルに1byteずつ順番に最後の文字までデーターを書き込んで保存し、この元データー変数に代入されたデーターを保存したファイルの事を元データーファイルと呼ぶ事とし、元データーファイルのデーターを1byteずつ全て読込めるサイズで8bitの配列を作成して、数値１０配列と呼ぶ事とし、元データーファイルをバイナリー形式で開いて、元データーファイルに記録されているデーターを1byteずつ最初から最後まで全て読み込んで、数値１０配列の最初から最後の位置までに1byteずつ全てのデーターを代入し、8bitの変数を作成して、データー１０変数と呼ぶ事とし、数値１０配列の最初の位置に代入されている1byteのデーターを取得して、データー１０変数に代入して、8byteのstring型の変数を作成して、作成した変数をデーター２変数と呼ぶ事とし、以下の処理を２進数作成処理と呼ぶ事とし、データー１０変数に代入された１０進数の数値を２進数の数値に変換して、２進数に変換したデーターをデーター２変数に代入し、２進数作成処理を終了する事とし、以下の処理を桁調整処理と呼ぶ事とし、データー２変数に代入され���8byteのデーターを取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が８桁に満たない場合と８桁の場合の2つに分岐する事とし、この分岐をバイト分岐と呼ぶ事とし、バイト分岐で、データー２変数のデーターの文字数が８桁に満たない場合は、データー２変数のデーターの前方に0を連結して合計で８桁になる様に0を連結した文字列を作成して、データー２変数に作成した文字列を上書きで代入する事とし、バイト分岐で、データー２変数のデーターの文字数が８桁の場合は、何も行わない事とし、バイト分岐を終了する事とし、桁数調整処理を終了する事とし、32bitのstring型で変数を作成して、この変数を符号２変数と呼ぶ事とし、文字列操作関数を使用してデーター２変数に代入されたデーターの後方に相当する右側の0と1で構成された４桁分のデーターを切り出して、符号２変数に代入し、8bitの符号１０変数を作成して、符号１０変数に、符号２変数に代入された２進数の数値を１０進数に変換して代入すると言う処理を行う事で符号１０変数に代入された１０進数の数値を元データー変数に代入されている分類対象データーを代表する符号として生成するソフトウェアを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターで使用する文字列等のデーターを高速に検索する為に分類する分類用の符号を生成する技術に関する
【背景技術】
【０００２】
圧縮技術に関する文献としては、〔非特許文献１〕と〔非特許文献２〕がある。
【非特許文献１】奥村晴彦・山崎敏 著 LHAとZIP 圧縮アルゴリズム×プログラミング入門 ソフトバンク パブリッシング株式会社 2003/12/6 初版
【非特許文献２】R.セジウィック 著 野本 浩平/星 守/佐藤 創/田口 東 共訳 アルゴリズムC・新版 近代科学社 2004/5/31初版発行
【０００３】
〔非特許文献１〕は、ZIP形式の圧縮技術とLZH形式の圧縮技術を説明した文献である。それとともに、今日までに開発された圧縮技術を紹介している文献である。以下に、「生成する」と「算出する」と「処理する」は、同じ意味として使用している。
関数とは、ある処理を行う処理工程の事を言い、ソフトウェアと同じ意味で使用する事とする。
以下に、ハッシュ関数とは、分類しようとするデーターを基にその分類しようとするデーターを代表する数値を生成する為の処理工程の事を言う事とする。また、このハッシュ関数から算出された数値の事をハッシュ値と呼んだり、ハッシュコードと呼んだりする。
この文献では、分類しようとするデーターの事を分類対象データーと呼んだりする。また、分類しようとする文字列の事を分類対象文字列と呼んだりする。
簡単に言い換えると、ハッシュ関数とは、ハッシュコードを生成するソフトウェアの事であると言える。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、符号を生成する処理を行うソフトウェアを記録した記録媒体であり、ハッシュ関数の一種であるが、従来のハッシュ関数ではないので、生成される数値をハッシュ値とは呼ばずに、符号と呼ぶ事とする。
実施例では、文字列操作関数と言う関数を使用して処理している。文字列操作関数とは、文字列の状態で処理する関数の事を言う。例えば、「ああ言えば、@こう言う」と言う文字列全体を検査して「@」が含まれているかどうかを検査するとか、「@」の位置は、先頭から何文字目なのかを検査するとか、「@」で文字列を分割して「ああ言えば、」と、「こう言う」の二つに分割するなどの処理が出来る様になっている関数の事を文字列操作関数と言う。文字列操作関数には、先頭から何文字取得すると言う処理や、文字列全体が何文字かを検査する処理など、多種多様な操作が出来る様になっている。
この〔非特許文献１〕の文献では、113ページから114ページに、ハッシュ関数を使用してハッシュコードを生成して、生成したハッシュコードごとにデーターを分類して保存する事で検索処理を高速化する方法を簡単に説明している。
【０００４】
〔非特許文献１〕は、242ページから246ページに、ハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されている。記述されている特殊な処理の内容を「」内に記述する。「最初のValの計算はハッシュ関数の代わりでもあるのですが、ハッシュ関数とは違い最初の２文字を混ぜません。ですので、文字'AB'で始まるリンクリストには、'AB'で始まる文字列しか登録されないようになっています。この文字数を増やせばサーチ処理は早くなるのですが、その分テーブルの初期化処理や辞書のスライド処理に時間がかかるようになります。このあたりのバランスは実際に動かして時間を測ることで決定しました。」と記述している。最初の二文字を混ぜずに、そのままの状態の二文字で分類する方法を書いているように読み取れる。だが、隠していて何を記述しているのかが良く理解できない説明である。「Val」についても何も記述されていないのでどんな計算式なのかが全く解らない説明である。
【０００５】
〔非特許文献１〕の242ページから246ページに記述されている「ハッシュ関数とは違い最初の２文字を混ぜません。」と言う意味は、分類対象文字列の先頭二文字分が一致するデーターを分類したと言うものだと考えられる。分類対象文字列の先頭二文字として文字'AB'で始まる文字列の'AB'と言う二文字分は、ASCII文字コードだと2byteとなる。ハッシュ関数は、全ての文字列を混ぜて代表値を算出するものだと言う表現で説明しているものだと考えられる。「混ぜる」と言うあいまいな表現について鑑みるに、殆どの部分で、この様な表現でこの書籍では説明していると考えられるので、以下に、文章の表現を解釈すると、ハッシュ関数とは違う数値による分類方法として記述しているものであるから、分類対象文字列の先頭から、二文字分が一致するデーターを分類するという分類方法であると解釈できる説明文である。
【０００６】
〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、分類対象文字列の先頭から二文字分が一致するデーターを分類すると言う方法であるが、全く、符号を生成しないで分類する方法だと考えられる。また、分類対象文字列の先頭から二文字分が一致するデーターを分類すると言う方法の場合は、2byte分の文字コードが一致するデーターを分類する方法と言い換える事が出来る。本発明は、符号を生成する処理を行うソフトウェアを記録した記録媒体なので、本発明とは、全く異なる技術である。また、本発明は、byte単位で符号を算出するものでもなく、bit単位で符号を算出するものである。分類対象文字列の先頭から二文字分の文字コードが一致するデーターを分類する方法は、分類対象文字列の先頭から2byte分の文字コードが一致するデーターを分類する方法という意味であるから、byte単位で処理する技術である。本発明は、bit単位で処理する技術である。従って、本発明とは、全く異なる技術である。byte単位で算出する場合と、bit単位で算出する場合とでは、全く、処理工程が違うから、全く違う技術である。
【０００７】
〔非特許文献２〕の517ページから518ページには、任意のキーに対して、指定の数で割って得られる余りをハッシュ値とするハッシュ関数を記述している。
〔非特許文献２〕の518ページの「図１４．２ 整数キーに対する除算剰余ハッシュ関数」の説明文の部分に中央の関数(V%100)は、キーの右の２桁だけを使っているので、ランダムでないキーに対しては、性能が悪くなりやすい。と記述して、除算剰余ハッシュ関数の途中の計算の一例として説明している。例として２０個程の除算剰余ハッシュ関数の途中の計算によるハッシュ値を記述しているので、最初の行に記述されているハッシュ値の説明を行う。
中央の関数(V%100)の例として、キーを、１３８３６とした場合は、右の２桁の３６をハッシュ値として算出するハッシュ関数の存在を明記している。しかし、これらの例は、全て、キーがbyte単位の数値であるし、計算も、byte単位で行われている。キーの数値の右の２桁を抽出しているが、byte単位で１桁の数字と言う文字にした数字を抽出しているのである。右の２桁分の３６と言う数値は、2byteである。１３８３６と言う数値の、１桁の数値は、一文字分ずつに分離された1byteの文字で構成されており、全部で5byteである。１３８３６と言う数値の１桁の数値が、一文字の数値として表されているから右の２桁の３６と言う数値を抽出できるのである。本発明は、byte単位で符号を算出するものではなく、bit単位で処理して符号を算出するものである。byte単位の数値を２進数の数値に変換して、任意の位置から任意の桁数を抽出して、抽出した２進数の数値を１０進数の数値に変換して得られた数値を符号とするのが、本発明の分類用符号生成ソフトウェアを記録した記録媒体である。従って、〔非特許文献２〕の517ページから518ページに記述されている除算剰余ハッシュ関数とは、全く違う技術である。除算剰余ハッシュ関数の途中の計算で、キーとなる数値の右の２桁を抽出する処理工程とも、全く違う処理である。byte単位で算出する場合と、bit単位で算出する場合とでは、全く、処理工程が違うから、全く違う技術である。
【０００８】
分類用符号生成ソフトウェアを記録した記録媒体と言う題名であるが、コンピューターに実行させる分類用符号生成ソフトウェアを記録した記録媒体を記録したコンピューターが読み取る事が可能な記録媒体の事である。また、本発明の分類用符号生成ソフトウェアを記録した記録媒体の事を分類用符号生成ソフトウェアと略して記述する事がある。
【０００９】
コンピューターで普通に使われているテキスト文字（日本国では、文字コード二文字以上で一文字を表す文字と文字コード一文字で表す半角文字の事）を、テキスト文字または、文字と略して記述する事とする。また、テキスト文字とリンクされている数値を文字コードと言う事がある。文字コードは、0〜255までの数値である。1byteとは、一文字分のbit数の事を言う。また、現在の一文字分のbit数は、8bitである。bitとは、２進数で数値を表した時の２進数の桁数の事である。また、コンピューターで普通に使われている機械語を機械語と略して記述する事とする。コンピューターで普通に使われている機械語とは、コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を言う。
【００１０】
コンピューターで普通に使われているテキスト文字を段落〔０００９〕で簡単に説明しているが一例に過ぎない。もう少し、補足説明を行う事とする。コンピューターで普通に使われているテキスト文字にリンクしている文字コードの規格は、多種多様である。7bitを1byteとして文字コードを規定している規格もある。文字コードの前にどんな文字コードなのかを識別させる為に1byteから数byteの識別記号を挿入する文字コードの規格もある。以上でコンピューターで普通に使われているテキスト文字の補足説明を終了する。
【００１１】
コンパイラとは、ソフトウェアを制作する為に作られたソフトウエアの事を言う事とする。人間が書いたプログラムをコンピューターが読み込んでで実行する事が出来る機械語に変換処理する事でソフトウェアを制作するソフトウェアの事をコンパイラと言う事とする。
【００１２】
変数の型とは、変数を作成する場合に指定するものであり、作成する変数のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」と言う意味は、変数のデーターを代入する事ができる領域に型の違うデーターを混在させることが出来ないと言う意味である。人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型がある。string型の変数ではない数値を代入する事が出来る型もある。
string型の変数ではない、数値を代入する事が出来る変数に数値を代入する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とする。8bitの変数を作成すると言う表現で説明している場合の意味は、8bitの数値のデーターを代入する事ができる変数を作成すると言う事である。
【００１３】
変数を作成する場合、string型の場合は、「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現でstring型の変数を作成する説明を行う事にする。
string型とは、文字列を代入する事ができる変数の型を意味するものである。言い換えるとstring型とは、文字列型と言う言い方が出来るものである。string型で変数を作成して、作成したstring型の変数に文字列や文字を代入すると自動的に文字コードと言う数値から、人間が読む事ができる文字に変換されて変数に代入されるものである。
従って、string型とは、文字や文字列を代入する事が出来る変数の型をstring型だと言う事が出来るものである。
【００１４】
string型と同じ様なものとしてテキスト形式と言う形式もある。テキスト形式とは、ファイルを開いたり保存したりする形式である。
テキスト形式も、string型と同じで、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う機械語の数値から、人間が読む事ができる文字に変換される形式である。テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「テキスト形式で1byteずつデーターをファイルに記録して保存する」または、「テキスト形式でファイルを開いて1byteずつデーターを読み込む」という表現で説明する事とする。
【００１５】
バイナリー形式と言う形式もある。バイナリー形式とは、ファイルを開いたり保存したりする形式である。
バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う機械語の数値に変換される形式である。バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「バイナリー形式で、1byteづつデーターをファイルに保存する」または、「バイナリー形式でファイルを開いて、1byteずつデーターを読み込む」という表現で説明する事とする。
【００１６】
テキスト形式でファイルに記録して保存する場合は、人間が読める文字として保存される為に、1byteから数byteずつとなる。テキスト形式の場合は、文字コード一文字分ずつと言う指定となる為に、2byteであったり、3byteであったり、4byteである場合もある為である。これは、実施例で使用しているコンピューターが使用している文字コードが半角英数字の場合は、1byteずつの規格で作られており、漢字や平仮名などを表す際の規格は、2byte分、3byte分、4byte分の数値で各々、漢字や平仮名や全角カタカナを一文字として表示するように規格されている為に、データー量をはっきりと記述できないのである。実施例で使用したコンパイラの場合は、自動的に最初の1byte目の文字コードで一文字分の文字コードが何byteなのかをコンピューターに判断させて一文字分の文字コード分に相当する1byteから数byteずつ保存する事になる。しかしながら、何と言う文字を扱うのかが解らない為、サイズを一定にして記述できないものである。しかし、実施例の説明では、1byteずつ保存するという表現で説明する事にする。
【００１７】
配列とは、データーを１個から複数のデーターを代入する事が出来るものを言い、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う。配列のサイズの事を配列サイズと言ったりする事がある。配列にデーターを代入する事が出来る部分を配列要素または、配列の要素と呼び、配列要素または、配列の要素の合計数を配列要素数または、配列の要素数と呼ぶ事とする。配列要素数または、配列の要素数は、配列のサイズと同じ意味のものである。
【００１８】
配列の型には、主に数値型とstring型の二種類がある。数値型の場合は、代入できるデーターは、数値のみである。string型の場合は、人間が読む事が出来る文字列の状態のデーターのみ代入できるものである。数値型とstring型という二種類の型の特徴は、配列だけではなく、変数の場合と同じである。
【００１９】
数値型とstring型という二種類の型は、配列を作成する場合に指定するものであり、作成する配列のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」という意味は、型の違うデーターを、配列のデーターを代入する事ができる領域に混在させることが出来ないという事である。実施例では、数値型の場合は、数値型の配列を作成すると断り書きをしない事とした。数値型の配列を作成する場合に、「幾つのサイズで何bitの数値型で配列を作成する」という表現ではなく、数値を略して「幾つのサイズで何bitの型で配列を作成する」という表現をする事とする。これを10の配列サイズで8bitの型で配列を作成するという表現で説明している場合で意味を説明する。この場合は、配列の要素１個に8bitのデーターを１個代入できる様なものとして、配列要素数10個で配列を作成するという意味である。
【００２０】
string型で配列を作成する場合は、以下の様に表現する。「幾つのサイズで何bitのstring型の配列を作成する」という表現をする事とする。例えば、10個のサイズで16bitのstring型で配列を作成すると記述した場合で説明する。配列の１個のデーターを代入する事が出来る領域の１個のデーターが使用するメモリー量が2byteであるとし、10個のデーターを代入する事が出来る配列を作成するという事である。この10個のサイズで16bitのstring型で配列を作成する場合のメモリーの総使用量は、16bit×10という計算が可能となり、答えは、160bit(または、20byte)となる。
これで、string型で配列を作成する場合の表現に関する説明を終わる。
【００２１】
配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものである。以降、配列のインデックスを配列の添字または、配列番号と呼ぶ事がある。配列を作成すると通常、配列のデーターを代入できる領域の最初の位置に付けられるインデックスは0番となり、順次1ずつ番号が増えた数値が配列のデーターを代入できる各々の配列の位置にコンパイラによって自動的に付けられるものである。つまり、言い換えると配列のインデックスとは、配列に代入されるデーターの位置を示す番号の事を言うという事になる。
【００２２】
配列のインデックスを取得する場合の詳しい説明を行う。
1byteの変数を作成してこの作成した変数を仮変数と呼ぶ事として、仮変数に0を代入して初期化する。配列に代入されたデーターが全て1byteであると仮定して配列のインデックスを取得する処理工程の説明を行う事とする。配列の最初の位置に代入されているデーターから最後の位置までに代入されたデーターを1byteずつ読む度に仮変数に代入された数値に1を加算する事で回数をカウントするという処理を行うと、仮変数に代入された数値と配列のインデックスとが対応した数値になるので仮変数に代入された数値が配列のインデックスとなるので、仮変数に代入された数値を取得するのが配列のインデックスの取得方法である。
配列のインデックスの取得方法の詳しい説明を終わる。
また、配列のデーターを代入する事ができる領域の最初の位置という表現を配列の最初の位置という様に略した表現を行う場合がある。また、配列のデーターを代入する事ができる領域の最後の位置という表現を配列の最後の位置という様に略した表現を行う場合がある。
【００２３】
配列のインデックスを取得する方法について例を示して詳しく説明する。配列のサイズが10の配列の場合で説明する事とする。配列のサイズが10の配列を作成するとインデックスは、0から9までの数値がコンパイラと呼ばれるプログラムを書く為に一般的に使われるプログラムによって自動的に付けられる。最初のインデックスは、必ず0から始まるものであり、配列の最後の位置まで番号が連番で付けられる。配列のサイズが10の配列の場合は、「0,1,2,3,4,5,6,7,8,9」という連番が配列のインデックスとなる。
配列のサイズが10の配列の場合の様に、配列の最初の位置から最後の位置までに付けられた数値が配列のインデックスとなるのである。そのインデックスを配列のデーターから取得する方法は無い。インデックスを使用して配列からデーターを取得するには、最初の位置を0番として、0番から配列の最後の位置までの連番を作成して、その連番の中から１個ずつ順番に数値を取得する事でインデックスを取得して、取得したインデックスを使用して配列からデーターを取得するのである。配列の位置を指定する時に配列のインデックスを指定する事はできるが、その反対に配列に代入されたデーターからインデックスを取得する事は出来ない。配列に代入されたデーターの位置を0から１ずつ数値を積算する事で得た数値を、配列のデーターと同じ位置にあったインデックスとして使用すると言う技術が、配列に代入されたデーターからインデックスを取得する方法である。
これで、配列のインデックスを取得する方法について例を示した詳しい説明を終わる。
【００２４】
以下に、配列の末尾にデーターを代入すると記述している場合がある。未だに配列に代入されたデーターが無い場合は、普通、配列の最初の位置にデーターを代入するものである。しかし、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、データーを数byteずつ代入していく場合、配列の最初の位置にデーターを代入した後は、配列に代入されたデーターの最後の位置にあるデーターの次の位置に代入するという事になる。この場合、配列の最初の位置に既にデーターを代入した後の位置の指定を末尾と表現する事が出来る。未だに配列に代入されたデーターが無い場合で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして数byteずつデーターを配列に代入していく場合で、配列の最初の位置にデーターを代入する場合でも、配列の末尾にデーターを代入すると表現する事が出来ると考えられる。そこで、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入していく場合は、配列の最初の位置に代入する場合であっても、配列の末尾に代入すると記述している場合がある。また、以下の段落で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入していく場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター（作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されていたデーターなど）の順番通りに数byteずつ配列に代入するものとする。
【００２５】
テキスト形式とバイナリー形式は、ファイルを扱う場合のみ使用できる形式である。
実施例で使用しているコンパイラを使用した場合は、string型で変数を作成すると約２０億個の文字コードで出来た文字を代入出来るサイズで変数が作成される。つまり、約２０億byteの変数が作成される。作成された変数は代入される文字列の文字数によって、自動的にメモリーの使用量が変更されるようになっている。
【００２６】
この様にstring型で変数を作成するとメモリーの使用領域が自動的に代入されるデーターの量によって変化するものになっている。使用するコンパイラによっては、この様な自動的に代入される文字列の文字数によって変数のサイズを変更する機能が無い場合がある。そこで、本発明の明細書では、string型で変数を作成する場合、型として使用するメモリー使用量を指定する事とする。実施例で使用しているコンパイラを使用した場合、実際には、型として使用するメモリー使用量を指定して変数を作成する事はできない。
【００２７】
プログラマーとは、ソフトウェアを作成する人間の事を言う事とする。但し、人工知能を使用してソフトウェアを自動的に作成する場合は、人工知能もプログラマーであるとする。
人工知能とは、思考処理を行うソフトウェアの事である。思考処理とは、人間の様に物事を考えて処理するソフトウェアの処理工程を言う事とする。
【発明の開示】
【発明が解決しようとする課題】
【００２８】
文字列検索処理を高速化する為に、検索対象データーの文字列を分類する際にハッシュコードまたは、ハッシュ値と呼ばれるハッシュ関数を使用して算出された数値を使用するのが普通である。しかし、従来のハッシュ関数によるハッシュ値の算出には、処理時間がかかる。従来のハッシュ関数によるハッシュ値の算出に処理時間がかかる原因は、ｂｙｔｅ単位で処理するからである。コンピューターが読み込んで処理する事が出来る機械語の文字コードと言う数値を人間が読める数値に変換しなければならいと言う処理工程を避けてハッシュ値を算出する事が出来ないからである。
〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献１〕の特殊な処理の分類対象文字一文字で分類する事も可能だと推測される。〔非特許文献１〕の特殊な処理の分類対象文字一文字で分類する場合は、8bitの文字コードの一文字分で分類するので0から255までの分類となる。この様に、0から255までの分類を行う場合、本発明でも8bitの２進数を抽出して１０進数に変換した場合に生成される符号の最大数は、255になるので、最大分類数が256となり、従来のハッシュ関数によるハッシュ値の最大分類数と同じになる。しかし、処理工程が、全く違うので全く違う技術である。
また、〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献１〕の特殊な処理の分類対象文字一文字で分類する場合は、ASCIIコードの人間が読める文字に割り当てられた文字コードの部分だけの数が最大分類数となる。
また、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術も記述されているが、この方法では、分類数が幾つになるかが解らない。ソフトウェアを作成する際、かなりの問題が発生すると考えられる。
〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理の分類対象文字列の先頭から二文字分が一致するデーターで分類する技術で、二文字分の桁数の２進数を最大値の分類数だと仮定して考えると、二文字分は、2byteとなる。2byteで表現できる２進数の最大値は、「1111111111111111」で、１０進数だと65535である。つまり、0から65535までの分類数となり、65536と言う異常に大きな分類数になってしまう問題がある。65536に分類すると、ソフトウェアの処理工程で、多分岐の量が多すぎて分岐処理する分岐を探し出すだけでも大きな時間を取られそうな分類数である。
本発明は、従来のハッシュ関数を使用した処理よりも高速に処理を行わせる事が本発明の課題である。また、従来のハッシュ関数ではない分類用符号を生成する技術を開発する事が本発明の課題である。また、分類対象文字列の先頭から一文字分が一致するデーターで分類する技術や、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術よりも、最大分類数を細かく設定できる符号を生成させる事が本発明の目的である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、従来のハッシュ関数とは違う分類用の符号を生成するソフトウェアである。
【課題を解決するための手段】
【００２９】
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、分類対象文字列を２進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の２進数を１０進数に変換してハッシュ値とする符号を生成する技術を記録した記録媒体である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体も、ハッシュ関数のように、符号を生成するものである。しかし、従来のハッシュ関数とは、全く違うものである。ハッシュ関数は、分類対象文字列をbyte単位で計算してハッシュ値を求める処理を行うものである。ハッシュ関数が計算に使用するデーターは、数値であっても文字列であるから、byte単位であると言う事になる。
【００３０】
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、分類対象文字列を２進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の２進数を１０進数に変換してハッシュ値とする符号を生成する技術であるが、「任意の位置」とは、文字列の先頭の位置から何桁目の位置と言う意味であり、「任意の桁数分」とは、文字列の先頭の位置から何桁目から何桁目までの０と１から成る２進数の桁数の事である。
【００３１】
本発明の分類用符号生成ソフトウェアを記録した記録媒体で生成した符号は、最低1bitの２進数から、分類対象文字列を全て２進数に変換して、２進数に変換した数値を全て連結して作成した２進数の最大桁数以下のサイズまでの２進数を抽出して１０進数に変換して符号として生成する。
分類対象文字列を分類する為の技術として本発明の分類用符号生成ソフトウェアを記録した記録媒体である。しかし、圧縮処理を行う場合にも分類処理を行うのが普通なので、分類対象データーは、文字列や文字だけではなく、画像データーや、音響データーなど、さまざまな形式のデーターを分類する為の符号を生成するものである。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、可逆圧縮と不可逆圧縮どちらの場合でも圧縮対象データーを分類する場合に使用する事が出来る分類用の符号を生成する技術である。可逆圧縮とは、圧縮する前の元の状態のファイルに復元できる圧縮技術の事を言い、不可逆圧縮とは、圧縮前の元の状態のファイルに復元できないが、元の状態のファイルに近い状態程度には復元できる圧縮技術の事を言う。
本発明は、インターネット検索などでも使用が可能になる分類用の符号なので、インターネットで使用される種々多様なデーター形式のデーター全てに使用されるものと考えている。インターネットで使用される種々多様なデーター形式のデーターとは、例えば、地図などの画像データーなどや、写真などの画像や動画などや、文字列などである。
【００３２】
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、分類対象文字列を２進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の２進数を１０進数に変換してハッシュ値とする符号を生成する技術であるが、分類対象文字列の一文字分をどのように扱うかで処理が違ってくる。現在の文字コードは、8bitで1byteである。1byteずつ分ずつ抽出して文字コードに変換して、変換した文字コードから２進数を求めると２進数の数値が８桁に満たない場合がある。２進数の数値が８桁に満たない場合は、普通は、左側に0を連結して、８桁になる様に調整して、８桁の２進数に変換するのである。
例えば、１０進数で0は、２進数だと00000000である。例えば、１０進数で1は、２進数だと00000001である。例えば、１０進数で2は、２進数だと00000010である。例えば、１０進数で3は、２進数だと00000011である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体の技術は、七種類の技術に大別できると考えられる。つまり、２進数の数値が８桁に満たない場合に、８桁に調整するか否かによる違いや、２進数の数値を完全に逆順に並べ替えて処理する技術などを併用して処理する事で異なった符号の算出をする技術や、分類対象文字列の全ての文字列を２進数に変換して、変換した２進数から任意の桁数を抽出して連結する事で任意の長さの２進数を作成して符号を作成する技術などが考えられるのである。以下に、考えられる七種類の技術を説明する。
第一の技術は、分類対象文字列の全ての文字の文字コードを取得して、取得した文字コードを２進数に変換して、変換した２進数が８桁に満たない場合は、8桁に調整して、変換した２進数が８桁の場合は、何も処理しない事で全ての２進数を８桁に調整して、８桁に調整した２進数を全て連結して、分類対象文字列の文字列分の桁数の２進数を作成して、分類対象文字列の文字列分の桁数の２進数の任意の位置から任意の桁数分の２進数を抽出して１０進数に変換して符号とする技術。
第二の技術は、分類対象文字列の全ての文字コードを取得して、取得した全ての文字コードを２進数に変換して、変換した２進数を８桁に調整して、調整した８桁の２進数の任意の桁数を任意の位置から任意の桁数分抽出して、任意の桁数分になる様に連結して２進数を作成して、作成した任意の桁数の２進数を１０進数に変換して符号を生成する技術。
第三の技術は、第一の技術や第二の技術で、分類対象文字列の任意の位置から最小必要桁数の２進数を抽出する為に、分類対象文字列の任意の位置の文字を２進数の最小必要桁数を超える文字数分だけ抽出して、文字コードを取得して、取得した文字コードを２進数に変換して、変換した２進数を８桁に調整して、８桁に調整した２進数を連結して、必要最低限度の２進数の数値を作成して、作成した必要最低限度の２進数の数値の任意の位置から任意の桁数分の２進数を抽出して１０進数に変換して符号とする技術。
第四の技術は、第一の技術や、第二の技術や、第三の技術で、分類対象文字列の文字から文字コードを取得して、取得した文字コードを全てを２進数に変換して、変換した２進数を8桁に調整して、８桁に調整した２進数の数値を完全に逆順に並べ替えた２進数を作成して、逆順に並べ替えた２進数を全て分類対象文字列の文字の順番に連結して、分類対象文字列の文字数に相当する桁数の２進数を作成して、作成した桁数２進数の任意の位置から任意の桁数分の２進数を抽出して１０進数に変換して、得られた１０進数を符号とする技術。
第四の技術では、８桁に調整しているが、0を２進数の前方に必要分付加する事で調整している。この調整する際に、２進数の前方でなくて後方に0を付加する事でも８桁に調整できるが、調整の方法を２進数の後方に0を必要分付加する技術を使用しても本発明の簡単なレパートリーである。
第五の技術は、第一の技術や、第二の技術や、第三の技術や、第四の技術で、分類対象文字列の文字の文字コードを取得して、取得した文字コードを２進数に変換して、変換した２進数が８桁に満たない場合に、８桁に調整しているが、２進数に変換した数値が８桁に満たない場合に、８桁に調整しないで、そのままの桁数のまま全ての２進数を連結して任意の位置から任意の桁数分の２進数を抽出して１０進数に変換して、得られた１０進数を符号とする技術。
第六の技術は、第一の技術や、第二の技術や、第三の技術や、第四の技術や、第五の技術で、分類対象文字列の文字を必要文字数分取得して、取得した文字の文字コードを取得して、取得した文字コードを全てを２進数に変換して、２進数に変換した数値を完全に逆順に並べ替えた２進数を作成して、逆順に並べ替えた２進数を全て分類対象文字列の文字の順番とは、逆順に連結して、分類対象文字列の文字の必要文字数分取得した文字数分の桁数に相当する桁数の２進数を作成して、必要文字数分取得した文字数分の桁数に相当する桁数の２進数の任意の位置から任意の桁数分の２進数を抽出して１０進数に変換して、得られた１０進数を符号とする技術。
第七の技術では、第一の技術や、第二の技術や、第三の技術や、第四の技術や、第五の技術や、第六の技術で、分類対象文字列の文字から文字コードを取得して、取得した文字コードを全てを２進数に変換して、変換した２進数を正順や逆順に連結しているが、逆順と正順を交互に入れ替えた２進数を作成して、正順と逆順を交互に入れ替えた２進数の任意の位置から任意の桁数分抽出して、地湧出した２進数を１０進数に変換して符号を生成する技術。
考えられる七種類の技術を説明を終わる。
本発明の実施例では、この考えられる七種類の技術の内の第三の技術を使用して、本発明の分類用符号生成ソフトウェアを記録した記録媒体を実施した。但し、本発明の実施例では、４桁の２進数を任意の位置から取得するので分類対象文字列の一文字分だけを抽出して２進数に変換しているので、変換した２進数を連結して長い２進数を作成する処理工程は無い。第一の技術や、第二の技術や、第四の技術や、第五の技術や、第六の技術や、第七の技術は、本発明の分類用符号生成ソフトウェアを記録した記録媒体の簡単なレパートリーであると言えるので本発明である事を明言する。
【００３３】
本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して生成される符号は、2byteから分類したいと思う数までに分類できる事になる。但し、文字列を全て２進数に変換して、変換した全ての２進数を連結して作成した長い２進数の桁数分の２進数の数値を１０進数に変換して得られた符号の最大値を上限として分類できる技術である。以下に、細かく最大分類数を設定して分類できる事が解る様に9bitの２進数を１０進数に変換した場合の分類数までを記述する。
(１) 2bitの２進数を１０進数に変換した符号だと0〜2までの符号を生成するので、３種類にデーターを分類できる符号を生成する事になる。
(２) 3bitの２進数を１０進数に変換した符号と0〜7までの符号を生成するので、８種類にデーターを分類できる符号を生成する事になる。
(３) 4bitの２進数を１０進数に変換した符号だと0〜15までの符号を生成するので、１６種類にデーターを分類できる符号を生成する事になる。
(４) 5bitの２進数を１０進数に変換した符号だと0〜31までの符号を生成するので、３２種類にデーターを分類できる符号を生成する事になる。
(５) 6bitの２進数を１０進数に変換した符号だと0〜63までの符号を生成するので、６４種類にデーターを分類できる符号を生成する事になる。
(６) 7bitの２進数を１０進数に変換した符号だと0〜127までの符号を生成するので、１２８種類にデーターを分類できる符号を生成する事になる。
(７) 8bitの２進数を１０進数に変換した符号だと0〜255までの符号を生成するので、２５６種類にデーターを分類できる符号を生成する事になる。
(８) 9bitの２進数を１０進数に変換した符号だと0〜511までの符号を生成するので、５１２種類にデーターを分類できる符号を生成する事になる。
実施例では、生成する符号は、任意の位置から4bitの桁数分の２進数を抽出して１０進数に変換して得られた数値を符号とする処理を行っているが、２進数の数値から抽出する桁数を指定して符号を生成できるように作成していない。桁数を指定する事が出来る様にソフトウェアを変更しても本発明の簡単なレパートリーであるから、本発明の分類用符号生成ソフトウェアを記録した記録媒体である事を明言する。
【発明の効果】
【００３４】
コンピューターで使用されているファイルを圧縮する場合にハッシュ関数を使用して生成された数値を符号として分類対象文字列の分類に使用しているが、ハッシュ関数の代わりに本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類すると、符号の生成にかかる時間が短縮される事によって、圧縮処理時間が大幅に短縮できる効果がある。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、圧縮技術で使用すると高速な処理が可能になるので使用するメリットが大きい。圧縮技術で使用する事を想定して開発した発明である。圧縮技術で使用する技術なので、文字列のみに使用する技術では無く、画像や音響や計算処理を行うソフトウェアなどのデーターの圧縮を行う処理でも使用する事を目的とした発明である。
文字列が記録されているファイルを圧縮する場合など、ハッシュ関数を使用してハッシュ値を生成し、そのハッシュ値で文字列を分類するよりも、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類した方が処理速度が速いと言う効果を得られるはずである。
また、ソフトウェアを圧縮する場合でも、処理速度を高速にする効果がある。
また、音響ファイルや画像ファイルや動画ファイルは、既に圧縮された状態で提供されているのが普通であるが、未圧縮の音響ファイルや未圧縮の画像ファイルや未圧縮の動画ファイルの圧縮にも使用できる。
【００３５】
圧縮処理を行うソフトウェア圧縮対象ファイルは、既に圧縮された文字列が記録されているファイルだけではなく、既に圧縮されているソフトウェアや、既に圧縮された音響ファイルや、既に圧縮された画像ファイルや、既に圧縮された動画ファイルを再圧縮する場合があると想定される。本発明の分類用符号生成ソフトウェアを記録した記録媒体は、再圧縮処理を高速化できる効果がある。
【００３６】
ファイル内に記録されたデーターの中から検索を行う場合でも、ハッシュコードで分類するよりも、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類して検索する方が高速に処理できると言う効果が期待できる。
【００３７】
データーベースと呼ばれる大量のデーターの中から検索する場合でも、ハッシュ関数を使用して分類する事で高速検索処理を可能にしているが、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成して分類して検索する方が高速に処理できると言う効果が期待できる。
【００３８】
インターネットなどのネットにあるホームページの大量のデーターを入手して、入手した大量のデーターを対象にホームページ検索を行っている。この様なホームページ検索をインターネット検索と呼んでいる。インターネット検索で行っているホームページ検索にもハッシュ関数が使用されている。本発明の分類用符号生成ソフトウェアを記録した記録媒体をインターネット検索で使用する事で高速な検索処理が可能になると考えている。
また、認証や電子署名などでも、ハッシュ関数が使用されているが、本発明のも認証や電子署名で使用されると考えられる。認証または、電子署名とは、ソフトウェアの使用許諾の為のパスワードの様なものである。認証とは、許可が与えられた者の証である。電子署名とは、手書きの文字では無いが電子的な記録によって確実に本人である事を証明する為の署名の役割を果たすものの事を言う。
また、暗号処理に使用される事も有るであろうと考えられる。
本発明の分類用符号生成ソフトウェアを記録した記録媒体で符号を生成した場合は、従来からあるハッシュ関数には無い処理工程で符号を生成しているので、従来のハッシュ関数を使用してハッシュ値を生成した電子署名や認証や暗号に加えて、違う処理で電子署名や認証や暗号を生成する事が出来る様になるので、処理工程の違う処理工程を持った処理が増えた分だけ、電子署名や認証や暗号の解読不能性が高くなり、インターネットやコンピューター上のセキュリティーの向上に効果を発揮すると考えている。
また、現在では、ファイルに改ざんが無いかどうかを検査するのに、従来からあるハッシュ関数によって生成されたハッシュ値が利用されている。この様な、ファイルに改ざんが無いかどうかの検査にも、本発明の分類用符号生成ソフトウェアを記録した記録媒体で、生成した符号が利用される事が有るであろうと考えている。
【００３９】
〔非特許文献１〕は、242ページから246ページに書かれている、ハッシュ関数とは違う方法が良く解らない。しかしながら、そのハッシュ関数とは違う方法が、分類対象文字列の先頭の二文字分が一致するデーターを分類すると言う方法であると言う場合でも、分類対象文字列の先頭の二文字分が一致するデーターを分類すると言う方法を使用するよりも、本発明の分類用符号生成ソフトウェアを記録した記録媒体は、使用する効果が大きいと考えている。なぜならば、分類される数が細かく決められるので2byteの数値で分類できる最大数の65535に分類すると言う異常な数の分類を行わずに済むと考えられるからである。65535に分類すると、多分岐の数が多くなりすぎて、多分岐の分岐を探すだけでも大きな時間のロスが発生すると考えられるからである。
以上の理由から、本発明の分類用符号生成ソフトウェアを記録した記録媒体を使用して符号を生成する効果があると考えている。
【００４０】
分類数は、ソフトウェアを記録した記録媒体を作成する人間が決定するものである。しかし、人工知能を使用して分類数を決定する事も可能である。人工知能を使用して分類数を変更または、決定する方法を使っていたとしても、簡単なレパートリーなので、本発明の分類用符号生成ソフトウェアを記録した記録媒体であると明言する。
【図面の簡単な説明】
【００４１】
【図１】分類用符号生成ソフトウェアのフローチャート図
【図２】分類用符号生成ソフトウェアで使用した機材の説明図
【図３】分類用符号生成ソフトウェアの操作画面図
【図４】分類用符号生成ソフトウェアで「あいうえお」の符号を生成させた状態の操作画面図
【図５】分類用符号生成ソフトウェアで「神山義尚」の符号を生成させた状態の操作画面図
【図６】分類用符号生成ソフトウェアで「かきくけこ」の符号を生成させた状態の操作画面図
【図７】分類用符号生成ソフトウェアで「さしすせそ」の符号を生成させた状態の操作画面図
【図８】分類用符号生成ソフトウェアで「ABC」の符号を生成させた状態の操作画面図
【図９】分類用符号生成ソフトウェアで「Z」の符号を生成させた状態の操作画面図
【図１０】分類用符号生成ソフトウェアで「110」の符号を生成させた状態の操作画面図
【図１１】分類用符号生成ソフトウェアで「110」の符号を生成させた状態の操作画面図
【図１２】分類用符号生成ソフトウェアで「EFGHIJK」の符号を生成させた状態の操作画面図
【図１３】分類用符号生成ソフトウェアで「ハヒフ」の符号を生成させた状態の操作画面図
【図１４】分類用符号生成ソフトウェアで「ナニヌネノ」の符号を生成させた状態の操作画面図
【図１５】分類用符号生成ソフトウェアで「東京都千代田区霞が関」の符号を生成させた状態の操作画面図
【発明を実施するための形態】
【００４２】
分類用符号生成ソフトウェアは、図２の＜分類用符号生成ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源で動作するプログラムである。図２の＜分類用符号生成ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源は、図符号Ｂのコンピューター本体と図符号Ａのモニターと図符号Ｃのキーボードと図符号Ｄのマウスの合計４個のパーツで構成された機材であるが、これらの合計４個のパーツで構成された機材を一般的にコンピューターと呼んでいる。図符号Ｂのコンピューター本体は、パーソナルコンピューターと一般的に呼ばれているコンピューターである。図符号Ｂのコンピューター本体には、ハードディスクドライブなどの記録媒体やCPUや本体メモリーなどと呼ばれる装置が内蔵されており、本発明の分類用符号生成ソフトウェアは、図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体にインストールされているものとする。図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明の分類用符号生成ソフトウェアがインストールされていて、図符号Ｂのコンピューター本体から本発明の分類用符号生成ソフトウェアを起動する事が出来る場合は、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明の分類用符号生成ソフトウェアがインストールされているものとする。
本発明の分類用符号生成ソフトウェアがインストールされている図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明の分類用符号生成ソフトウェアを起動すると本発明の分類用符号生成ソフトウェアは、図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明の分類用符号生成ソフトウェアに書かれたCPUが処理を予定している命令文が必要な時に必要量CPUに読み込まれ、そのCPUに読み込まれた命令文がCPUによって実行される事によってコンピューターによって本発明の分類用符号生成ソフトウェアが動作する。
【００４３】
従って、本発明の分類用符号生成ソフトウェアがハードウェア資源を使用してどのような工程で処理されるのかを簡単な表現で説明すると、本発明の分類用符号生成ソフトウェアに書かれた命令文は、コンピューター本体のCPUによって処理されると表現しなおす事ができるのである。
【００４４】
図２の＜分類用符号生成ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源で動作する分類用符号生成ソフトウェアである事を段落〔００４２〕にて説明したが、コンピューターの形状は、図２の＜分類用符号生成ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源に限定できるものではなく、図符号Ａのモニター、図符号Ｂのコンピューター本体、図符号Ｃのキーボード、図符号Ｄのマウスが一体化したものや、図符号Ｄのマウスが存在しない構成のものや、図符号Ａのモニター、図符号Ｂのコンピューター本体の二つを一体化した構成のもの等いろいろある。今後、もっと多くのいろいろな形状のコンピューターが開発されていくであろうと考えられる。図２の＜分類用符号生成ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源でなくても、類似と言い得る、いわゆるコンピューターを使用して本発明の分類用符号生成ソフトウェアを動作させている場合も本発明の分類用符号生成ソフトウェアである事を明言する。
【実施例】
【００４５】
図２、図３、図４、図５、図６、図７、図８、図９、図１０、図１１、図１２、図１３、図１４、図１５は、実際とは、多少異なる事を明記する。図４、図５、図６、図７、図８、図９、図１０、図１１、図１２、図１３、図１４、図１５は、試しに符号を生成させた結果を示した図である。図３の＜分類用符号生成ソフトウェアの操作画面図＞で図符号Ｆで「4bitの符号を生成するボタン」と言うボタンの名称になっているが、正確には、４桁の0と1の文字列で表された２進数の数値を抽出して１０進数に変換して、１０進数に変換して得られた数値を符号として生成するボタンである。しかし、実施例のソフトウェアでは、「4bitの符号を生成するボタン」としてボタンを作成した。
図３の＜分類用符号生成ソフトウェアの操作画面図＞で、図符号Iをソフトウェアの名称として説明していて、「符号を生成するソフトウェア」と書かれている部分を図３の＜分類用符号生成ソフトウェアの操作画面図＞で、図符号Iが示しているが、「符号を生成するソフトウェア」とは、本発明の分類用符号生成ソフトウェアを記録した記録媒体の事である。
図符号Ｅの＜データーを入力するテキストボックス＞に入力する事が出来るデーターは、100byteまでとする。実際には、無制限に入力できるが説明の都合上、100byteまでとする。
また、テキストボックスなどの画面に表示する処理工程は、常識的処理なので処理工程を説明していない。
【００４６】
以下の段落に於いて、変数を作成すると記述しているが変数が作成される場所は、図符号Ｂのコンピューター本体の内部にある本体メモリーに作成される。但し、ＯＳと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Ｂのコンピューター本体の内部にある本体メモリーまたは、図符号Ｂのコンピューター本体の内部にあるハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、変数を作成すると記述している場合の変数が作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されると言う表現になる。
【００４７】
以下の段落に於いて、全て変数や一次元配列を使用してプログラムを作成しているが、多次元配列を使用したり、ファイルを使用する事でも同じ処理が出来ると考えられる。また、変数と一次元配列と多次元配列とファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはプログラムの書き方の違いであって、全て本発明の分類用符号生成ソフトウェアを記録した記録媒体の単純なレパートリーでしかないと言う事を明言する。
【００４８】
図１の＜分類用符号生成ソフトウェアのフローチャート図＞を参照の事。図符号Ｌと図符号Ｍには、ステップ番号を右肩位置に付してあるが、その右肩位置に付したステップ番号順に説明する事とする。まず、本発明の分類用符号生成ソフトウェアを記録した記録媒体を起動すると、図３の＜分類用符号生成ソフトウェアの操作画面図＞の様な操作画面が図符号Ａのモニターに表示される。
【００４９】
ステップ１００の「データーをキーボードで入力して、4bitの符号を生成させるボタンをマウスで左クリックする処理工程」に進む。ステップ１００は、人為的な手動による操作または入力処理工程である。
図符号Ｅの＜データーを入力するテキストボックス＞に図符号Ｃのキーボードなどの入力デバイスを使用して符号を生成する任意のデーターを人為的に入力する。符号を生成する任意のデーターとは、分類対象データーまたは、分類対象文字列の事である。図符号Ｅの＜データーを入力するテキストボックス＞に入力した任意の分類対象文字列を基に符号を生成する処理を行う。次に、図符号Ｆの＜4bitの符号を生成するボタン＞を図符号Ｄのマウスなどの入力デバイスを使用してクリックする事で処理を開始する。
【００５０】
次に、ステップ１０１の「変数代入処理工程」に進む。ステップ１０１は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
100byteのstring型で変数を作成して、この変数を元データー変数と呼ぶ事とする。この元データー変数に、図符号Ｅの＜データーを入力するテキストボックス＞に入力された分類対象文字列を全て取得して代入する。元データー変数に代入されたデーターをテキスト形式でファイルに1byteずつ順番に最後の文字までデーターを書き込んで保存する。この元データー変数に代入されたデーターを保存したファイルの事を元データーファイルと呼ぶ事とする。
【００５１】
次に、ステップ１０２の「先頭の1byte取得処理工程」に進む。ステップ１０２は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
元データーファイルのデーターを1byteずつ全て読込めるサイズで8bitの配列を作成して、作成した配列を数値１０配列と呼ぶ事にする。元データーファイルをバイナリー形式で開いてファイルに記録されている全てのデーターを1byteずつ最初から最後まで全て読み込んで、数値１０配列の最初から最後の位置までに1byteずつ全てのデーターを代入する。
【００５２】
次に、ステップ１０３の「２進数変換処理工程」に進む。ステップ１０３は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
１０進数の数値を２進数の数値に変換する処理と２進数の数値を１０進数の数値に変換する処理の説明を行う。
実施例で１０進数の数値を２進数の数値に変換する処理は、１０進数の数値を2で除算して、除算した結果の余りが0の場合は、0を記録して、除算した結果の余りが1の場合は、1を記録すると言う計算を、2で除算して算出された数値の少数点以下を切り捨てた数値が、0よりも大きい数値である間は、繰り返し処理する方法で２進数に変換した。この方法で２進数に変換した場合、最初に2で除算した余りが1の位になり、2回目に除算した余りが10の位になり、3回目に除算した余りが100の位になり、4回目に除算した余りが1000の位になると言う処理で２進数に変換していく。この１０進数の数値を２進数の数値に変換する処理は、常識的処理なので、実施例で処理工程を書いていない。また、この技術で１０進数の数値を２進数に変換した場合は、変換した２進数が８桁に満たない場合でも、前方に相当する左側の位置に0が入力される事のない0と1で構成された２進数となる。必ず、一番左側に相当する、一番大きな位が1となる２進数の算出技術である。
実施例で２進数の数値を１０進数の数値に変換する処理は、コンパイラと呼ばれるソフトウェアを作成する為のソフトウェアに添付された関数を使用している。２進数の数値を１０進数の数値に変換する処理工程も、常識的処理なので実施例で処理工程を書いていない。
他の方法で２進数の数値を１０進数に変換したり、他の方法で１０進数の数値を２進数の数値に変換しても、簡単なレパートリーであるから、本発明の分類用符号生成ソフトウェアを記録した記録媒体であると明言する。
２進数の数値に変換する処理と２進数の数値を１０進数変換する処理の説明を終了する。
8bitの変数を作成して、データー１０変数と呼ぶ事とする。数値１０配列の最初の位置に代入されている1byteのデーターを取得して、データー１０変数に代入する。
数値１０配列の最初の位置に代入されている1byteのデーターを取得して、データー１０変数に代入する理由について説明する。
第三の技術を実施例で行っている。分類対象文字列の任意の位置の最低必要文字数分だけ取得して、取得した文字列を文字コードに変換して、文字コードに変換した数値を２進数に変換して、変換した２進数が、生成する符号の為に抽出する２進数の桁数に必要最低限の桁数である事が第三の技術の処理を行う条件である。実施例では、４桁の２進数を抽出して１０進数に変換して符号を生成するのであるから、最低必要文字数は、一文字分と言う事になる。一文字分とは、1byte分であるから、２進数の桁数で言うと8bitとなる。分類対象文字列の先頭の位置の文字を抽出したのは、分類対象文字列の先頭の位置の文字を任意の位置として抽出して処理を行う事としたからである。
以上で、数値１０配列の最初の位置に代入されている1byteのデーターを取得して、データー１０変数に代入する理由について説明を終わる。
8byteのstring型の変数を作成する。作成した変数をデーター２変数と呼ぶ。
【００５３】
以下の処理を２進数作成処理と呼ぶ事とする。
データー１０変数に代入された１０進数の数値を２進数の数値に変換して、２進数に変換したデーターをデーター２変数に代入する。
２進数作成処理を終了する。
２進数作成処理で作成された２進数の説明を行う。
２進数作成処理でデーター２変数に代入されたデーターは、２進数となる。２進数作成処理を最後まで処理した結果、作成される２進数は、桁数が必ずしも８桁にならない問題がある。理由は、段落〔００５２〕で説明した１０進数の数値を２進数の数値に変換する処理技術で２進数に変換すると８桁に満たない２進数の前方方向に相当する左側に0が無い、必要最低限の0と1で表した２進数の数値に変換される為である。そこで、２進数に変換した数値が、８桁に満たない場合に数値の左側に0を連結して８桁の２進数に調整する必要が発生する。
２進数作成処理で作成された２進数の説明を終わる。
以下の処理を桁調整処理と呼ぶ。
データー２変数に代入された8byteのデーターを取得して、文字列操作関数を使用して取得したデーターの文字数を調べて、データーの文字数が８桁に満たない場合と８桁の場合の2つに分岐する。この分岐をバイト分岐と呼ぶ。
バイト分岐で、データー２変数のデーターの文字数が８桁に満たない場合は、データー２変数のデーターの前方に0を連結して合計で８桁になる様に0を連結した文字列を作成して、データー２変数に作成した文字列を上書きで代入する。
バイト分岐で、データー２変数のデーターの文字数が８桁の場合は、何も行わない。
バイト分岐を終了する。
これで、桁数調整処理を終了する。
【００５４】
次に、ステップ１０４の「32bit取得処理工程」に進む。ステップ１０４は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
32bitのstring型で変数を作成して、この変数を符号２変数と呼ぶ事とする。文字列操作関数を使用してデーター２変数に代入されたデーターの後方に相当する右側の0と1で構成された４桁分の２進数を抽出して、符号２変数に代入する。
【００５５】
次に、ステップ１０５の「生成した２進数の符号表示処理工程」に進む。ステップ１０５は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
図符号Ｈの＜生成した符号を２進数で表示するテキストボックス＞に符号２変数に代入された２進数の数値を表示する。
【００５６】
次に、ステップ１０６の「１０進数変換処理工程」に進む。ステップ１０６は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
8bitの符号１０変数を作成して、符号１０変数に、符号２変数に代入された２進数の数値を１０進数に変換して代入する。２進数の数値を１０進数の数値に変換する変換処理は、段落〔００５２〕で説明した様に、コンパイラに添付された関数を使用して１０進数の数値に変換処理した。
符号生成処理の説明を行う。
ステップ１０６の「１０進数変換処理工程」の処理で、本発明の分類用符号生成ソフトウェアを記録した記録媒体によって生成された符号が、符号１０変数に代入された事になる。本発明の分類用符号生成ソフトウェアを記録した記録媒体によって生成された符号が、符号１０変数に代入された事になると言う事を言い換えると、符号１０変数に代入された１０進数の数値を符号とすると言う意味である。
符号生成処理の説明を終了する。
【００５７】
次に、ステップ１０７の「生成した１０進数符号表示処理工程」に進む。ステップ１０７は、分類用符号生成ソフトウェアとコンピューターによる自動処理工程である。
符号１０変数に代入された１０進数の符号を図符号Ｇの＜生成した符号を１０進数で表示するテキストボックス＞に符号１０変数に代入された１０進数の符号を表示する。
【符号の説明】
【００５８】
Ａ：モニター
Ｂ：コンピューター本体
Ｃ：キーボード
Ｄ：マウス
Ｅ：データーを入力するテキストボックス
Ｆ：4bitの符号を生成するボタン
Ｇ：生成した符号を１０進数で表示するテキストボックス
Ｈ：生成した符号を２進数で表示するテキストボックス
Ｉ：ソフトウェアの名称
Ｊ：人為的な手動による操作または入力処理工程
Ｋ：分類用符号生成ソフトウェアとコンピューターによる自動処理工程
【図１】
2018200546.tif 000003
【図２】
2018200546.tif 000004
【図３】
2018200546.tif 000005
【図４】
2018200546.tif 000006
【図５】
2018200546.tif 000007
【図６】
2018200546.tif 000008
【図７】
2018200546.tif 000009
【図８】
2018200546.tif 000010
【図９】
2018200546.tif 000011
【図１０】
2018200546.tif 000012
【図１１】
2018200546.tif 000013
【図１２】
2018200546.tif 000014
【図１３】
2018200546.tif 000015
【図１４】
2018200546.tif 000016
【図１５】
2018200546.tif 000017
【手続補正書】
【提出日】平成29年7月13日(2017.7.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００２８
【補正方法】変更
【補正の内容】
【００２８】
文字列検索処理を高速化する為に、検索対象データーの文字列を分類する際にハッシュコードまたは、ハッシュ値と呼ばれるハッシュ関数を使用して算出された数値を使用するのが普通である。しかし、従来のハッシュ関数によるハッシュ値の算出には、処理時間がかかる。従来のハッシュ関数によるハッシュ値の算出に処理時間がかかる原因は、byte単位で処理するからである。コンピューターが読み込んで処理する事が出来る機械語の文字コードと言う数値を人間が読める数値に変換しなければならいと言う処理工程を避けてハッシュ値を算出する事が出来ないからである。
〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献１〕の特殊な処理は、分類対象文字一文字で分類する事も可能だと推測される。〔非特許文献１〕の特殊な処理の分類対象文字一文字で分類する場合は、8bitの文字コードの一文字分で分類するので0から255までの分類となる。この様に、0から255までの分類を行う場合、本発明でも8bitの２進数を抽出して１０進数に変換した場合に生成される符号の最大数は、255になるので、最大分類数が256となり、従来のハッシュ関数によるハッシュ値の最大分類数と同じになる。しかし、処理工程が、全く違うので全く違う技術である。
また、〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、この〔非特許文献１〕の特殊な処理の分類対象文字一文字で分類する場合は、ASCIIコードの人間が読める文字に割り当てられた文字コードの部分だけの数が最大分類数となる。
また、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術も記述されているが、この方法では、分類数が幾つになるかが解らない。ソフトウェアを作成する際、かなりの問題が発生すると考えられる。
〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理の分類対象文字列の先頭から二文字分が一致するデーターで分類する技術で、二文字分の桁数の２進数を最大値の分類数だと仮定して考えると、二文字分は、2byteとなる。2byteで表現できる２進数の最大値は、「1111111111111111」で、１０進数だと65535である。つまり、0から65535までの分類数となり、65536と言う異常に大きな分類数になってしまう問題がある。65536に分類すると、ソフトウェアの処理工程で、多分岐の量が多すぎて分岐処理する分岐を探し出すだけでも大きな時間を取られそうな分類数である。
本発明は、従来のハッシュ関数を使用した処理よりも高速に処理を行わせる事が本発明の課題である。また、従来のハッシュ関数ではない分類用符号を生成する技術を開発する事が本発明の課題である。また、分類対象文字列の先頭から一文字分が一致するデーターで分類する技術や、分類対象文字列の先頭から二文字分が一致するデーターで分類する技術よりも、最大分類数を細かく設定できる符号を生成させる事が本発明の目的である。
本発明の分類用符号生成ソフトウェアを記録した記録媒体は、従来のハッシュ関数とは違う分類用の符号を生成するソフトウェアである。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１１
【補正方法】変更
【補正の内容】
【００１１】
コンパイラとは、ソフトウェアを制作する為に作られたソフトウエアの事を言う事とする。人間が書いたプログラムをコンピューターが読み込んで実行する事が出来る機械語に変換処理する事でソフトウェアを制作するソフトウェアの事をコンパイラと言う事とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３８
【補正方法】変更
【補正の内容】
【００３８】
インターネットなどのネットにあるホームページの大量のデーターを入手して、入手した大量のデーターを対象にホームページ検索を行っている。この様なホームページ検索をインターネット検索と呼んでいる。インターネット検索で行っているホームページ検索にもハッシュ関数が使用されている。本発明の分類用符号生成ソフトウェアを記録した記録媒体をインターネット検索で使用する事で高速な検索処理が可能になると考えている。
また、認証や電子署名などでも、ハッシュ関数が使用されているが、本発明は、認証や電子署名で使用されると考えられる。認証または、電子署名とは、ソフトウェアの使用許諾の為のパスワードの様なものである。認証とは、許可が与えられた者の証である。電子署名とは、手書きの文字では無いが電子的な記録によって確実に本人である事を証明する為の署名の役割を果たすものの事を言う。
また、暗号処理に使用される事も有るであろうと考えられる。
本発明の分類用符号生成ソフトウェアを記録した記録媒体で符号を生成した場合は、従来からあるハッシュ関数には無い処理工程で符号を生成しているので、従来のハッシュ関数を使用してハッシュ値を生成した電子署名や認証や暗号に加えて、違う処理で電子署名や認証や暗号を生成する事が出来る様になるので、処理工程の違う処理工程を持った処理が増えた分だけ、電子署名や認証や暗号の解読不能性が高くなり、インターネットやコンピューター上のセキュリティーの向上に効果を発揮すると考えている。
また、現在では、ファイルに改ざんが無いかどうかを検査するのに、従来からあるハッシュ関数によって生成されたハッシュ値が利用されている。この様な、ファイルに改ざんが無いかどうかの検査にも、本発明の分類用符号生成ソフトウェアを記録した記録媒体で、生成した符号が利用される事が有るであろうと考えている。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００４８
【補正方法】変更
【補正の内容】
【００４８】
図１の＜分類用符号生成ソフトウェアのフローチャート図＞を参照の事。図符号Ｊと図符号Ｋには、ステップ番号を右肩位置に付してあるが、その右肩位置に付したステップ番号順に説明する事とする。まず、本発明の分類用符号生成ソフトウェアを記録した記録媒体を起動すると、図３の＜分類用符号生成ソフトウェアの操作画面図＞の様な操作画面が図符号Ａのモニターに表示される。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】変更
【補正の内容】
【００１２】
変数の型とは、変数を作成する場合に指定するものであり、作成する変数のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」と言う意味は、変数のデーターを代入する事ができる領域に型の違うデーターを混在させることが出来ないと言う意味である。人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型がある。string型ではない数値を代入する事が出来る型もある。
string型の変数ではない、数値を代入する事が出来る変数に数値を代入する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とする。8bitの変数を作成すると言う表現で説明している場合の意味は、8bitの数値のデーターを代入する事ができる変数を作成すると言う事である。