(57)【要約】【課題】異体字を含む文字データを固定長で扱う技術を提供する。【解決手段】コンピュータが、入力文字データ列に異体字情報が含まれるかを検出し、入力文字データ列より異体字情報を検出したときは、異体字情報を、異体字情報と対応づけられた基本文字および異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する、処理を実行する。【選択図】図６
2015043164.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータが、
入力文字データ列に異体字情報が含まれるかを検出し、
前記入力文字データ列より異体字情報を検出したときは、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する、
処理を実行することを特徴とする文字データ処理方法。
【請求項２】
拡張表現データを処理する処理部に前記変換された拡張表現データを引き渡す、
処理をさらに実行することを特徴とする、請求項１に記載の文字データ処理方法。
【請求項３】
前記処理部から処理された拡張表現データを取得し、
前記取得した拡張表現データを、異体字情報と、該異体字情報に対応付けられた基本文字が含まれる標準表現の文字データ列に変換する、
処理をさらに実行することを特徴とする請求項２に記載の文字データ処理方法。
【請求項４】
前記拡張表現データは、前記異体字情報に含まれる異体字識別コード値を所定ビットシフトした値を含む、請求項１または２に記載の文字データ処理方法。
【請求項５】
コンピュータが、
文字の識別コードと前記文字の異体字を識別する異体字識別コードとを含む、前記文字に応じてコード長の異なる可変長文字コードの文字データを取得するステップと、
前記文字の識別コードと前記文字の異体字識別コードとを基に、前記識別コードと前記異体字識別コードとを復元可能な固定長文字コードを生成し、前記可変長文字コードの文字データを前記固定長コードの文字データに変換するステップと、
を実行する情報処理方法。
【請求項６】
コンピュータに、
入力文字データ列に異体字情報が含まれるかを検出させ、
前記入力文字データ列より異体字情報を検出したときは、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換させるためのプログラム。
【請求項７】
入力文字データ列に異体字情報が含まれるかを検出する手段と、
前記入力文字データ列より異体字情報を検出したときは、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する手段と、
拡張表現データを処理する処理部に前記変換された拡張表現データを引き渡す手段と、
前記処理部から処理された拡張表現データを取得する手段と、
前記取得した拡張表現データを、異体字情報と、該異体字情報に対応付けられた基本文字が含まれる標準表現の文字データ列に変換する手段と、
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、文字データ処理方法、情報処理方法、プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
従来、文字コードを考える上で、文字データの領域長（例えば、バイト（byte）数）と表示画面や帳票等に占めるフィールドの大きさとの対応関係は一通りに定められていた。例えば、英字・数字および濁点なしカタカナは半角の１バイト、日本語文字は全角の２バイト、濁点付きカタカナは半角の２バイト（1バイト＋1バイト=2バイト）の領域長で表されており表示画面や帳票等に占めるフィールドの大きさと一致していた。このように、文字を扱う業務アプリケーションでは、帳票のフィールドの大きさ、アプリケーションで扱う文字データの大きさを宣言することで、フィールドの領域のサイズと文字データの表示サイズを整合させていた。従って、文字を扱う業務アプリケーションの開発者等は、文字データの表示サイズと文字データを出力するフィールドのサイズとの整合を意識せずにソフトウェアの開発を行っていた。
【０００３】
一方、JIS 2004で定義される文字を全て扱うことのできる文字コードとしてUnicode（UTF16）が登場し、１文字の日本語を２バイト、または４バイトの領域長で混在して扱う環境が普及し初めている。UTF16を利用した環境においても、文字を扱う業務アプリケーシ
ョンの開発者等は、入力された文字データの符号化としてUTF32を使用することで、２バ
イトまたは、４バイトの領域長で混在して扱っていた文字データを、１文字当り４バイトの固定長で設計することが可能である。
【０００４】
なお、本明細書で説明する技術に関連する技術が記載されている先行技術文献としては、以下の非特許文献が存在している。
【先行技術文献】
【非特許文献】
【０００５】
Unicode、［平成25年2月5日検索］、インターネット  ＜URL：https://ja.wikipedia.org/wiki/Unicode＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年、ベースとなる文字のUnicodeに対してVS1,VS2,…といった識別情報を付与し、対
象となる文字の異体字を統一的に扱えるようにする異体字セレクタ（variation selector）という技術が普及し初めている(例えば、Windows 8（登録商標）が異体字をサポート)
。異体字セレクタを使用することにより、日本語文字に数多く存在する異体字、例えば、「高」、
2015043164.tif 000003
といった異体字を識別して表現することが可能となる。
【０００７】
ここで、異体字を識別するためにベースとなる文字に付与される識別情報は、４バイトのUTF16コードが割り当てられている。このため、異体字セレクタが付いた文字の領域長
は,UTF16で６〜８バイトの可変長で表現される。以後、異体字のベースとなる文字を基本字と記述して説明することとする。
【０００８】
異体字セレクタを扱うシステムの開発者は、一文字あたりの日本語文字をUTF16で異体
字情報なし:２〜４バイト、異体字情報あり:６〜８バイトの可変領域長として扱い、業務アプリケーションの設計を行わなければならない。ところが従来の設計では、文字数とデータ長との対応関係が固定的であるため、画面や帳票の氏名欄等は、ほとんどの場合、文字数を固定し対応するデータの大きさも文字数に対応する大きさとされていた。このため、異体字セレクタを扱うシステムの開発者は、1文字の文字コードを可変長として文字数及び領域長の両方を管理するため、設計に係る管理負担が増大してしまう。例えば、開発者は、データベースから文字を取り出す度に、対象の文字が出力しようとしている画面や帳票のフィールドに納まるか否かを、文字数をカウントしてエラーチェックを行うため、作業に係る負荷が増大してしまう。
【０００９】
１つの側面では、本発明は、異体字を含む文字データを固定長で扱う技術の提供を目的とする。
【課題を解決するための手段】
【００１０】
上記技術は、次のコンピュータが実行する文字データ処理方法の構成によって例示される。すなわち、コンピュータが、入力文字データ列に異体字情報が含まれるかを検出し、入力文字データ列より異体字情報を検出したときは、異体字情報を、異体字情報と対応づけられた基本文字および異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する、処理を実行する。
【発明の効果】
【００１１】
上記の情報処理方法によれば、異体字を含む文字データを固定長で扱う技術が提供できる。
【図面の簡単な説明】
【００１２】
【図１】本実施形態の変換装置を説明する図である。
【図２Ａ】「芦（あし）」に対する異体字の一例を示す図である。
【図２Ｂ】「芦（あし）」に対する異体字を複数に用いた文章の一例を示す図である。
【図３】情報処理装置のハードウェア構成を例示する図である。
【図４】本実施形態の変換装置の機能を説明する図である。
【図５Ａ】ＩＳＯで標準化された文字コード規格を示す図である。
【図５Ｂ】本実施形態の変換処理により変換された固定長データの一例を示す図である。
【図５Ｃ】本実施形態の変換処理により変換された固定長データの一例を示す図である。
【図６】本実施形態の変換処理を例示するフローチャートである。
【図７】本実施形態の変換処理を例示するフローチャートである。
【図８Ａ】本実施形態の変換装置をコンパイラに組み込んだケースの動作を説明する図である。
【図８Ｂ】本実施形態の変換装置をコンパイラに組み込んだケースの動作を説明する図である。
【図９】本実施形態の変換装置をミドルウェアに組み込んだケースの動作を説明する図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、一実施形態に係る変換装置について説明する。以下の実施形態の構成は例示であり、変換装置は実施形態の構成には限定されない。
【００１４】
以下、図１から図９の図面に基づいて、変換装置を説明する。
【００１５】
＜実施例１＞
図１に、本実施形態の変換装置の説明図を例示する。本実施形態の変換装置は、例えば、文字を扱う業務アプリケーションの開発を行うサーバ、コンピュータといった情報処理装置によって実現される。本実施形態の変換装置は、情報処理装置で実行されるアプリケーションおよびミドルウェアの中で異体字セレクタ（variation selector）の付いた、可変長のUnicode文字を固定長の領域長として取り扱えるようにするものである。
【００１６】
まず、背景となる異体字、異体字セレクタについて説明する。
ここで、異体字セレクタが付加された異体字について、図２Ａ，２Ｂを参照して説明する。図２Ａは、簡易慣用字体の「芦（あし）」に対する異体字の一例である。ここで、異体字とは、同じ語源の文字に二つ以上の表現（字体）が存在するものを指し、図２Ａに例示するように、簡易慣用字体の「芦（あし）」に対する異体字には４つの字体が存在する。なお、簡易慣用字体の「芦（あし）」に対する文字コード（Unicode）は、“０ｘ８２ａ６”で表される。ここで、“０ｘ＃＃＃＃”は、１６進数表記を表し、“＃”は１６進数の“０”〜“Ｆ”を表している。
【００１７】
異体字セレクタを使用する場合、図２Ａに例示する４つの異体字を、基本字、すなわち異体字のベースとなる文字に、４バイトの識別情報を付与した「文字・文字セット」として扱うことで、それぞれの異体字を表現することが可能となる。
【００１８】
異体字セレクタを使用した場合、基本字の、簡易慣用字体の「芦（あし）」の文字コードは“０ｘ８２ａ６”であるから、それぞれの異体字は、次の「文字・文字セット」により表現することができる。
【００１９】
（１）図２Ａの１番目    芦＋ＶＳ１７（０ｘ８２ａ６  ０ｘ０００ｅ０１１１）
（２）図２Ａの２番目    芦＋ＶＳ１８（０ｘ８２ａ６  ０ｘ０００ｅ０１１２）
（３）図２Ａの３番目    芦＋ＶＳ１９（０ｘ８２ａ６  ０ｘ０００ｅ０１１３）
（４）図２Ａの４番目    芦＋ＶＳ２０（０ｘ８２ａ６  ０ｘ０００ｅ０１１４）
（１）から（４）の、基本字である「芦」に後付された「ＶＳ１７」，「ＶＳ１８」，「ＶＳ１９」，「ＶＳ２０」が、異体字セレクタによる識別情報の一例を表す。このように、異体字セレクタを使用した場合、“基本文字の文字コード”＋“異体字セレクタ”によって、それぞれの異体字を表現することができる。
【００２０】
（１）の“０ｘ０００ｅ０１１１”は、例えば、異体字セレクタによる識別情報であるＶＳ１７に対応する１６進数のコードを表している。同様に（２）の“０ｘ０００ｅ０１１２”はＶＳ１８の１６進数コードを表し、（３）の“０ｘ０００ｅ０１１３”はＶＳ１９の１６進数コードを表し、（４）の“０ｘｅ００００１１４”はＶＳ２０の１６進数コードを表している。異体字セレクタを使用した場合、異体字は、基本文字と識別情報との「文字・文字セット」として扱うことができるため、異体字ごとに異なる文字コードを個別に割り当てていた従来方式に対し、統一的、体系的に文字を扱うことが可能となる。
【００２１】
図２Ａに例示の異体字セレクタと文字コードを使用することにより、例えば、図２Ｂに例示するように、文字を扱うアプリケーションの開発者等は、複数の異体字を組み合わせた文章を表現することができる。なお、上述した異体字セレクタには、ＶＳ１７からＶＳ２５６の範囲が割り当てられている。ここで、図２Ａに例示の「芦（あし）」に対する異体字では、ＶＳ１７からＶＳ２０といった識別情報が準備されている。しかし、例えば、「愛（あい）」といった異体字を持たない文字では、異体字を表現する識別情報は準備されていない。このため、異体字セレクタを使用した「文字・文字セット」の表現では、例えば、「愛（あい）」の文字コード“０ｘ８８ａ４”となる。つまり、異体字を持たない文字データの領域長は、UTF16で表現された２バイト領域長となる。
【００２２】
一方、図２Ａに例示の「芦（あし）」の場合では、それぞれの異体字が“基本文字の文字コード”＋“異体字セレクタ”によって表現される。このため、異体字を持つ「芦（あし）」では、文字データの領域長は、２バイトの“基本文字コード”と４バイトの“異体字セレクタ”を合わせ、計６バイトとなる。また、JIS 2004で定義された文字には４バイトの文字コード（例えば、
2015043164.tif 000004
の新字体等）を含むため、４バイト文字が異体字を持つ場合には、文字データは８バイトの領域長を有することとなる。
【００２３】
上述の異体字セレクタを扱う業務アプリケーションの開発者等は、文字毎に文字コードを可変長として文字数及び領域長の両方を管理するため、開発設計での管理負担が増大することとなる。
【００２４】
図１に例示の説明図に戻り、本実施形態の変換装置１０は、既存の文字を扱う業務アプリケーションまたはミドルウェアに組み込まれる。図１に例示の説明図では、異体字セレクタの付加された可変長のUnicode文字（UTF8、UTF16）は、例えば、変換装置１０を実現する情報処理装置が備える入力デバイス等を介して入力される。異体字セレクタを含む可変長の文字データは、例えば、情報処理装置が備えるＯＳ（Operating System）を介し、既存の文字を扱う業務アプリケーションに引き渡される。既存の業務アプリケーションに組み込まれた変換装置１０は、引き渡された可変長の文字データを所定長さの固定長データ、或いは、プログラム内での内部形式（Ｘ形式）に変換する。本実施形態の変換装置１０により、所定長さの固定長データに変換された文字データは、従来と同様の処理形式として扱うことが可能となる。
【００２５】
また、本実施形態の変換装置１０により、所定の処理が施された固定長の文字データは、再び変換装置１０を介して可変長の文字データに変換される。変換装置１０で変換された可変長の文字データは、異体字セレクタを含み、再びＯＳを介して、情報処理装置の備える表示デバイス等に出力される。
【００２６】
また、業務アプリケーションにおいて、本実施形態の変換装置１０により、プログラム内での処理形式（内部形式）に変換された固定長の文字データは、固定長の状態でミドルウェア等に引き渡される。また、ＯＳを介してミドルウェアに引き渡された可変長の文字データは、ミドルウェアに組み込まれた変換装置１０に引き渡される。
【００２７】
ミドルウェアに組み込まれた変換装置１０は、引き渡された可変長の文字データを所定長さの固定長の文字データに変換する。変換装置１０を介し変換された所定長さの固定長文字データ、または、ミドルウェアに引き渡された内部形式のデータは、データ領域長を維持した状態で、所定の処理が施される。図１に例示する固定長の文字データは、例えば、ミドルウェアにおいて、再び変換装置１０を介して可変長の文字データに変換される。変換装置１０で変換された異体字セレクタを含む可変長の文字データは、再びＯＳを介して、情報処理装置が備える表示デバイス等に出力される。
【００２８】
本実施形態の変換装置１０を備えることにより、異体字セレクタを扱うアプリケーション開発者等は、文字コードの領域長を意識せずに開発作業を行うことができる。このため、アプリケーションの開発者等は、文字コードに対する管理負担を軽減できる。その結果、文字を扱うアプリケーション開発に係る生産性が向上できる。
【００２９】
本実施形態の変換装置１０は、例えば、図３に例示の、コンピュータとしての情報処理装置９０によって実現される。図３は、情報処理装置９０のハードウェアの構成の例示である。図例の情報処理装置９０は、接続バスＢ１によって相互に接続されたＣＰＵ（Central Processing Unit）９１、主記憶部９２、補助記憶部９３、通信部９４、入力部９５、出力部９６を有する。
【００３０】
情報処理装置９０は、ＣＰＵ９１が補助記憶部９３に記憶されたプログラムを主記憶部９２の作業領域に実行可能に展開し、プログラムの実行を通じて周辺機器の制御を行う。これにより、情報処理装置９０は、所定の目的に合致した機能手段を実現することができる。主記憶部９２及び補助記憶部９３は、コンピュータである情報処理装置９０が読み取り可能な記録媒体である。
【００３１】
ＣＰＵ９１は、情報処理装置９０全体の制御を行う中央処理演算装置である。ＣＰＵ９１は、補助記憶部９３に格納されたプログラムに従って処理を行う。主記憶部９２は、ＣＰＵ９１がプログラムやデータをキャッシュしたり、作業領域を展開したりする記憶媒体である。主記憶部９２は、例えば、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）を含む。
【００３２】
補助記憶部９３は、各種のプログラム及び各種のデータを読み書き自在に記録媒体に格納する。補助記憶部９３は外部記憶装置とも呼ばれる。補助記憶部９３には、オペレーティングシステム（Operating System :ＯＳ）、各種プログラム、各種テーブル等が格納される。ＯＳは、通信部９４を介して接続される外部装置等とのデータの受け渡しを行う通信インターフェースプログラムを含む。外部装置等には、例えば、ネットワーク等で接続された、他の情報処理装置、外部記憶装置が含まれる。なお、補助記憶部９３は、例えば、ネットワーク上のコンピュータ群であるクラウドの一部であってもよい。
【００３３】
補助記憶部９３は、例えば、ＥＰＲＯＭ（Erasable Programmable ROM）、ソリッドス
テートドライブ装置、ハードディスクドライブ（ＨＤＤ、Hard Disk Drive）装置等であ
る。また、補助記憶部９３としては、例えば、ＣＤドライブ装置、ＤＶＤドライブ装置、ＢＤドライブ装置等が提示できる。記録媒体としては、例えば、不揮発性半導体メモリ（フラッシュメモリ）を含むシリコンディスク、ハードディスク、ＣＤ、ＤＶＤ、ＢＤ、ＵＳＢ（Universal Serial Bus）メモリ等がある。通信部９４は、例えば、ネットワーク等とのインターフェースである。
【００３４】
入力部９５は、ユーザ等からの操作指示等を受け付ける。入力部９５は、入力ボタン、キーボード、ポインティングデバイス、ワイヤレスリモコン、マイクロフォン、カメラ等の入力デバイスである。入力部９５から入力された情報は、接続バスＢ１を介してＣＰＵ９１に通知される。
【００３５】
出力部９６は、ＣＰＵ９１で処理されるデータや主記憶部９２に記憶されるデータを出力する。出力部９６は、ＣＲＴ（Cathode Ray Tube）ディスプレイ、ＬＣＤ（Liquid Crystal Display）、ＰＤＰ（Plasma Display Panel）、ＥＬ（Electroluminescence）パネル、プリンタ等の出力デバイスである。
【００３６】
図３に例示の情報処理装置９０は、ＣＰＵ９１が補助記憶部９３に記憶されているＯＳ、各種プログラムや各種データを主記憶部９２に読み出して実行することにより、対象プログラムの実行と共に、図１に例示の変換装置１０を実現する。
【００３７】
〔機能構成〕
図４に、本実施形態の変換装置１０の機能を説明する説明図を例示する。本実施形態の変換装置１０では、可変長の文字コードから固定長の文字コードへの変換処理は、ＯＳ関数やＡＰＩ（Application Programming Interface）を呼び出す上流側に組み込まれ、可
変長から固定長への変換処理を行う。ここで、上流側とは、例えば、ＯＳに対するミドルウェア側、アプリケーションプログラム側を言う。
【００３８】
図４に例示の説明図において、文字を扱う業務アプリケーションの開発者等（以下、開発者と称す）は、例えば、変換装置１０を実現する情報処理装置９０の備える入力部９５等を介して文字入力部を作成する。情報処理装置９０は、異体字セレクタを使用可能なＩＶＳ（Ideographic Variation Sequence）に対応する入出力機能を備えている。ＩＶＳでは、基本文字の文字コード（Unicode；UTF8，UTF16、UTF32）の直後に異体字セレクタを
付加し、文字の異体字を表現する。図１で説明したように、基本文字の文字コードは２から４バイトの可変長であり、異体字セレクタは４バイト長である。異体字を持たない文字も存在する場合を含め、ＩＶＳに対応する入力部９５を介して入力される文字データの領域長は２から８バイトの可変長となる。
【００３９】
本実施形態の変換装置１０は、入力された文字データを、ＯＳ関数やＡＰＩで呼び出されるアプリケーション、或いはミドルウェアに引き渡す際に、可変長の文字データを固定長の文字データに変換して引き渡す。固定長の文字データを引き渡されたアプリケーション、またはミドルウェアでは、例えば、補助記憶部９４に設けられたデータベース等を参照し、引き渡された固定長の文字データに基づき所定の処理が行われる。
【００４０】
一方、本実施形態の変換装置１０は、アプリケーション、或いはミドルウェアで処理された文字データをＯＳ関数やＡＰＩ等に引き渡す際に固定長の文字データを可変長の文字データに変換する。変換された文字データはＯＳ等を介し、変換装置１０を実現する情報処理装置９０の備える出力部９６に出力される。ＩＶＳに対応した出力部９６、例えば、ＣＲＴ等の表示画面上には、図２Ｂに例示する複数の異体字を含む文章等を表示させることができる。
【００４１】
（変換処理）
次に、図５Ａから図５Ｃを参照し、本実施形態の変換装置１０における、可変長の文字データを固定長の文字データに変換する変換処理について説明する。図５Ａは、ＩＳＯ（International Organization for Standardization）で標準化された文字コード規格：ISO/IEC 10646（UCS; Universal Coded Character Set）の例である。本実施形態の変換装置１０で対象となる基本文字の文字コード（Unicode）は、図５Ａに例示の文字コード規格の一部である。
【００４２】
図５Ａに例示するように、ISO/IEC 10646 では、基本文字の１文字は、４バイト（３２ビット）で表現され、上位ビットから順に、「群」，「面」，「区」，「点」の４つの「オクテット」に区分される。図５Ａに例示するように、「群」の最上位ビットは、「０」に固定されるので、ISO/IEC 10646 によって表現できる文字コードは、１２８（群）×２５６（面）×２５６（区）×２５６（点）となり、２１億余の文字を識別することが可能となる。なお、図５Ａに例示する、４バイトの表現形式はUCS4とも称する。
【００４３】
文字コードのUTF32は、UCS4のサブセットである上述の1114112個およびそのサブセットであるJIS 2004で定義される文字の全てを表現する。すると、UTF32で表現された文字は
、UCS4では、“０ｘ００００００００”〜“０ｘ００１０ｆｆｆｆ”の文字範囲で表現されることになる。つまり、UCS4では、（０面から１６面迄の１７面を識別する５ビット）＋（各面に含まれる２バイトの文字コードである１６ビット）＝２１ビットの情報量でUTF32を表現することが可能である。
【００４４】
また、日本語の漢字に対する異体字セレクタは、VS17〜VS256までの範囲で準備されて
おり、1つの基本文字に対して最大２４０個の異体字セレクタを持つことができる。つま
り、基本文字に対する異体字の識別は、８ビットの情報量で表現することができる。
【００４５】
本実施形態の変換装置１０は、上述した文字コードを表現する２１ビットの情報と、異体字を表現する８ビットの情報とから、例えば、４バイト（３２ビット）の情報量で表現される固定長データを生成する。変換装置１０で生成された４バイトの固定長データには、基本文字の文字コードと基本文字に対する異体字セレクタの情報が含まれる。
【００４６】
また、本実施形態の変換装置１０は、４バイト（３２ビット）の情報量で表現される固定長データから、文字コードを表現する２１ビットの情報、及び、異体字を表現する８ビットの情報を抽出し、可変長の文字データを生成する。変換装置１０で生成された可変長の文字データは、基本文字の文字コードの直後に異体字セレクタが付加された２〜８バイトのデータに変換される。
【００４７】
本実施形態の変換装置１０では、以下の２通りの処理方式で、文字コードを表現する２１ビットの情報と、異体字を表現する８ビットの情報とを含む固定長データを生成する。なお、変換装置１０で生成される固定長データは、４バイト（３２ビット）として説明する。また、異体字セレクタの“ＶＳｘｘｘ（ｘｘｘは、１７から２５６）”の“ｘｘｘ”といった異体字セレクタ番号を“ｎ”として説明する。
【００４８】
なお、本実施形態の変換装置１０の表現形式は、例えば、Unicodeで表現された基本文
字（UTF8,UTF16,UTF32）と、この基本文字の異体字を表現する情報（例えば、異体字セレクタ）とを、所定長さ（例えば、３２ビット長さ）の固定長形式で表現する拡張表現である、と言うことができる。つまり、図２Ａ、２Ｂ等で説明したように、“基本文字の文字コード”＋“異体字セレクタ”を標準表現とした場合、標準表現で表現される可変長の文字データは、基本文字が異体字を持たない形態を含め、２から８バイト長の長さとなる。本実施形態の変換装置１０の表現形式では、上述したように、基本文字を２１ビットの情報量で表現し、異体字が存在する場合には、さらに、異体字を表現する８ビットの情報を基本文字の情報と共に所定長さのデータに纏めることにより、固定長データとして表現する。
【００４９】
実施例１では、“基本文字の文字コード”＋“異体字セレクタ”または、異体字セレクタの付かない“基本文字の文字コード”を含み、例えば、３２ビットの固定長で表現する形式を拡張表現と呼ぶ。本実施形態の変換装置１０は、入力文字データ列に異体字情報が含まれるかを検出し、入力文字データ列より異体字情報を検出したときは、異体字情報を、異体字情報と対応づけられた基本文字および異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する。
【００５０】
（方式１）
方式１では、変換装置１０は、図５Ａに例示する４バイトのUTF32コード形式で表現さ
れた基本文字と、異体字セレクタ番号ｎから１を差し引いた値である（ｎ−１）を２４ビット右シフトさせた３２ビットデータとの論理和を求める。この結果、変換装置１０は、文字コードを表現する２１ビットの情報と、異体字を表現する８ビットの情報とを含む固定長データを生成することができる。
【００５１】
図５Ｂに、方式１の処理により生成された４バイトの固定長データを例示する。図５Ｂの例では、３２ビットデータの上位側８ビットの領域に異体字セレクタ番号ｎから１を差し引いた値である（ｎ−１）が格納される。また、図５Ｂの例では、３２ビットデータの
下位側２１ビットの領域に、UTF32コード形式に表現した基本文字が格納される。
【００５２】
このように、方式１の拡張表現形式では、標準表現の可変長文字データは、上位側８ビット領域に異体字の情報、下位側２１ビット領域に基本文字の情報を含む、３２ビット固定長さの拡張表現に纏めて表現することができる。つまり、図２Ａ、２Ｂに例示の、“基本文字の文字コード”＋“異体字セレクタ”の文字データは、所定長さの拡張表現のデータ形式で扱うことが可能となる。
【００５３】
方式１で生成される固定長データでは、例えば、異体字セレクタを持たない文字の場合には、固定長データは、UTF32コード形式で表現された基本文字となる。また、例えば、
変換装置１０は、生成された固定長データと“０ｘ００ｆｆｆｆｆｆ”の４バイトデータとの論理和を求めることで、上位側８ビットを無視することができるため、容易に基本文字のUTF32コード形式の表現を得ることができる。
【００５４】
（方式２）
方式２では、変換装置１０は、異体字セレクタ番号ｎから１を差し引いた値である（ｎ−１）を下位側８ビットに格納した３２ビットデータと、４バイトのUTF32コード形式に
表現した基本文字を８ビット右シフトさせたデータとの論理和を求める。この結果、変換装置１０は、文字コードを表現する２１ビットの情報と、異体字を表現する８ビットの情報とを含む固定長データを生成することができる。
【００５５】
図５Ｃに、方式２の処理より生成された４バイトの固定長データを例示する。図５Ｃの例では、３２ビットデータの下位側８ビットの領域に異体字セレクタ番号ｎから１を差し引いた値である（ｎ−１）が格納される。また、図５Ｃの例では、下位側８ビットの領域の上位側に隣接して、２１ビット領域のUTF32コード形式に表現した基本文字が格納され
る。
【００５６】
このように、方式２の拡張表現形式では、標準表現の可変長文字データは、下位側８ビット領域に異体字の情報、下位側８ビットの領域の上位側に隣接する２１ビット領域に基本文字の情報を含む、３２ビット固定長さの拡張表現に纏めて表現することができる。方式１と同様に、図２Ａ、２Ｂに例示の、“基本文字の文字コード”＋“異体字セレクタ”の文字データは、所定長さの拡張表現のデータ形式で扱うことが可能となる。
【００５７】
方式２で生成される固定長データでは、例えば、図４に例示の、ＩＶＳに対応する入力部９５を介して変換装置１０に引き渡された文字のデータ形式を維持することができる。つまり、図５Ｃに例示の固定長データでは、文字コードを表現する２１ビット領域に隣接して下位側８ビット領域に異体字セレクタ情報が格納されるため、基本文字の直後に異体字セレクタを付加するデータ形態を維持することができる。このため、例えば、異体字を含む文字列等の並べ替えを行う際の大小比較が容易であり、UTF32のデータ形式を使用し
た並べ替えと同一の結果を得ることができる。
【００５８】
なお、本実施形態の変換装置１０では、異体字セレクタ番号の番号値（ｎ）から“１”を差し引いた値により、異体字セレクタを識別する８ビットの情報を表現している。本実施形態の変換装置１０は、このような処理を行うことにより、VS17〜VS256までの範囲で
準備された異体字セレクタを“０ｘ１０”〜“０ｘｆｆ”の８ビット情報として扱うことができる。
【００５９】
〔処理フロー〕
（可変長データ→固定長データ）
図６に例示のフローチャートを参照し、本実施形態の変換装置１０の処理を説明する。図６は、可変長データから固定長データに変換する処理のフローチャートの例示である。図６に例示の処理は、例えば、主記憶部９２に実行可能に展開されたコンピュータプログラムにより実行される。図６に例示のフローチャートにおいて、Ｓ１２−Ｓ２３の処理は、入力された文字の読み込みが終了するまでの間、繰り返して実行される。
【００６０】
図６に例示のフローチャートにおいて、可変長データから固定長データへの処理の開始は、例えば、外部からミドルウェア、或いは、アプリケーションプログラムへの情報の入力を例示できる。ここで、外部からの入力とは、例えば、キーボード入力、表示画面からの文字情報の入力、ＯＣＲ（Optical Code Reader）による入力、通信モジュール等を介
した他の装置からのデータ受信、可搬型記録媒体からのデータ読み取り等である。
【００６１】
変換装置１０は、入力データをUTF32へ変換し、入力作業用バッファへ格納する（Ｓ１
１）。入力データは、例えば、図４で説明したように、ＩＶＳに対応する入力部９４を介して入力される。このため、入力データは、基本文字の文字コード（Unicode）の直後に
異体字セレクタが付加された可変長データとして、本実施形態の変換装置１０に引き渡される。なお、入力作業用バッファは、例えば、主記憶部９２の所定の記憶領域に設けられる。また、Ｓ１２−Ｓ２３の処理は、Ｓ１１の処理で入力作業用バッファに格納された入力データを対象に実行される。
【００６２】
Ｓ１２−Ｓ１３では、変換装置１０は、入力作業用バッファから１文字目を読み込み、読み込んだ文字を文字加工バッファＡに格納する（Ｓ１２）。文字加工バッファＡは、例えば、主記憶部９２の所定の記憶領域に設けられる。そして、変換装置１０は、入力作業用バッファからの文字読み込み終了であるかを判定する（Ｓ１３）。文字読み込み終了の判定は、例えば、データの終わりを示すＥＯＤ（End Of Data）等により判定してもよい
。
【００６３】
変換装置１０は、入力作業用バッファからの文字読み込み終了の場合には（Ｓ１３、ＹＥＳ）、図６に例示する処理を終了する。一方、変換装置１０は、文字の読み込みが終了でない場合には（Ｓ１３、ＮＯ）、Ｓ１２の処理で読み込んだ１文字目が基本文字か否かを判定する（Ｓ１４）。変換装置１０は、Ｓ１２の処理で読み込んだ１文字目が基本文字でない場合（Ｓ１４、ＮＯ）、Ｓ２３に移行し、異常系処理を実行する。
【００６４】
既に説明したように、変換装置１０に引き渡される入力データは、基本文字の文字コード（Unicode）の直後に異体字セレクタが付加された可変長データである。従って、変換
装置１０を含む情報処理装置９０が正常な状態では、１文字目は基本文字の文字コードであり、２文字目は基本文字に対する異体字セレクタとなる。このため、本実施形態の変換装置１０は、Ｓ１４の処理で、１文字目に読み込まれた文字が基本文字でない場合は、変換装置１０を含む情報処理装置９０の異常と判断し、Ｓ２３の異常系処理を実行する。
【００６５】
一方、変換装置１０は、Ｓ１２の処理で読み込んだ１文字目が基本文字の場合には（Ｓ１４、ＹＥＳ）、入力作業用バッファから２文字目を読み込み、読み込んだ２文字目を文字加工バッファＢに格納する（Ｓ１５）。文字加工バッファＢは、例えば、主記憶部９２の所定の記憶領域に設けられる。そして、変換装置１０は、再び、入力作業用バッファからの文字読み込み終了であるかを判定する（Ｓ１６）。
【００６６】
変換装置１０は、文字の読み込み終了の場合には（Ｓ１６、ＹＥＳ）、Ｓ１８−Ｓ２２の異体字セレクタの変換処理を行わず、Ｓ１７に移行し、文字加工バッファＡから固定長データを出力する。
【００６７】
一方、変換装置１０は、文字の読み込み終了でない場合には（Ｓ１６、ＮＯ）、Ｓ１８−Ｓ２１の異体字セレクタの変換処理を実行する。Ｓ１８では、変換装置１０は、Ｓ１５で読み込んだ２文字目が異体字セレクタか否かを判定する。例えば、日本語の漢字に対する異体字セレクタは、VS17〜VS256までの範囲で準備されている。例えば、異体字セレク
タ（VS）は、Unicodeで表現した場合、“U+E0100”が“VS17”に対応し、“U+E01EF”が
“VS256”に対応する。変換装置１０は、例えば、Ｓ１５で読み込んだ２文字目が“U+E0100”〜“U+E01EF”の範囲で表現されているか否かを判定すればよい。情報処理装置９０
のＣＰＵ９１等は、検出する手段の一例として、Ｓ１８の処理を実行する。
【００６８】
Ｓ１８の判定の結果、Ｓ１５で読み込んだ２文字目が異体字セレクタでないと判定された場合には（Ｓ１８、ＮＯ）、変換装置１０は、文字加工バッファＡから固定長の文字データを読み出してＳ１５に移行する（Ｓ２２）。また、Ｓ２２の処理では、変換装置１０は、文字加工バッファＢに格納された２文字目のデータを文字加工バッファＡへ複写する。Ｓ２２の複写処理では、変換装置１０はさらに、文字加工バッファＢを初期化してもよい。
【００６９】
一方、Ｓ１８の判定の結果、Ｓ１５で読み込んだ２文字目が異体字セレクタであると判定された場合には（Ｓ１８、ＹＥＳ）、変換装置１０は、Ｓ１９に移行し、異体字セレクタ（VS）を異体字セレクタ番号（VSn）に変換する。例えば、異体字セレクタが“VS17”
の場合では、異体字セレクタ番号“VSn”は、“１７”である。Ｓ１９では、変換装置１
０は、図５Ｂ等で説明したように、異体字セレクタ番号である“VSn”から“ＶＳｎ−１
”を求め１６進法の８ビット情報に変換する。異体字セレクタ番号“VSn”が“１７”の
場合、“ＶＳｎ−１”は“１６”となり、１６進法の８ビット情報では“０ｘ１０”である。また、異体字セレクタ番号“VSn”が“２５６”の場合、“ＶＳｎ−１”は“２５５
”となり、１６進法の８ビット情報では“０ｘｆｆ”となる。このように、Ｓ１９の処理では、“ＶＳｎ−１”は、“１６”〜“２５５”の範囲の値として出力される。この処理は、異体字セレクタ番号を少ないビット数で表現するためのビットシフト処理の例である。
【００７０】
そして、Ｓ２０の処理では、変換装置１０は、Ｓ１２の処理で読み込んだ１文字目のデータと、Ｓ１９の処理で変換された異体字セレクタ番号（VSn）を固定長データに合成す
る。例えば、（方式１）では、変換装置１０は、Ｓ１９の処理で変換した“ＶＳｎ−１”を２４ビット右シフトさせて３２ビットデータとし、Ｓ１２で文字加工バッファＡに格納された４バイトの基本文字データとの論理和を求めればよい。論理和を求める処理は、例えば、文字加工バッファＡで実行される。この結果、文字加工バッファＡには、Ｓ１２の処理で読み込んだ１文字目のデータと、Ｓ１９の処理で変換された異体字セレクタ番号（VSn）とが合成された固定長データが生成される。
【００７１】
また、（方式２）では、例えば、変換装置１０は、Ｓ１２で文字加工バッファＡに格納された４バイトの基本文字データを８ビット右シフトさせる。そして、変換装置１０は、８ビット右シフトさせた基本文字データと、Ｓ１９の処理で変換した“ＶＳｎ−１”を下位側８ビットに格納した３２ビットデータとの論理和を求めればよい。論理和を求める処理は、例えば、文字加工バッファＡで実行される。この結果、（方式１）と同様に、文字加工バッファＡには、Ｓ１２の処理で読み込んだ１文字目のデータと、Ｓ１９の処理で変換された異体字セレクタ番号（VSn）とが合成された固定長データが生成される。
【００７２】
Ｓ２１では、変換装置１０は、文字加工バッファＡから、Ｓ１９の処理で生成された固定長データを出力する。変換装置１０は、Ｓ１２に移行し、入力作業用バッファに格納された文字データが終了するまで、Ｓ１２−Ｓ２３の処理を繰り返す。
【００７３】
なお、図６に例示の処理では、変換装置１０は、例えば、文字数カウンタ等を設けると
してもよい。そして、文字数カウンタは文字数を計数する。文字数カウンタは、入力部９４の処理に応じて適宜、初期化及び加算を行う。
【００７４】
ここで、変換装置１０で実行されるＳ１１の処理は、文字の識別コードと前記文字の異体字を識別する異体字識別コードとを含む、前記文字に応じてコード長の異なる可変長文字コードの文字データを取得するステップの一例である。また、情報処理装置９０のＣＰＵ９１等は、文字の識別コードと前記文字の異体字を識別する異体字識別コードとを含む、前記文字に応じてコード長の異なる可変長文字コードの文字データを取得する手段の一例として、Ｓ１１の処理を実行する。
【００７５】
また、変換装置１０で実行されるＳ１９−Ｓ２０の処理は、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換するステップの一例である。また、情報処理装置９０のＣＰＵ９１等は、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する手段の一例として、Ｓ１９−Ｓ２０の処理を実行する。
【００７６】
また、変換装置１０で実行されるＳ２１の処理は、引き渡すステップの一例である。また、情報処理装置９０のＣＰＵ９１等は、引き渡す手段の一例として、Ｓ２１の処理を実行する。
【００７７】
（固定長データ→可変長データ）
図７に例示のフローチャートを参照し、本実施形態の変換装置１０の固定長から可変長データに変換する処理を説明する。図７は、変換処理のフローチャートの例示である。図７に例示の処理は、例えば、主記憶部９２に実行可能に展開されたコンピュータプログラムにより実行される。図７に例示のフローチャートにおいて、Ｓ３１−Ｓ３９の処理は、固定長データの文字の読み込みが終了するまでの間、繰り返して実行される。
【００７８】
固定長データには、例えば、図６で説明したように、基本文字を表現する２１ビットの情報、及び、異体字セレクタを表現する８ビットの情報が含まれる。図７に例示の、固定長から可変長データに変換する処理では、変換装置１０は、上述の情報を固定長データから抽出し、抽出した情報に対応する可変長データを生成し、出力する。
【００７９】
図７に例示のフローチャートにおいて、固定長データから可変長データへの処理の開始は、例えば、ミドルウェア、或いは、アプリケーションプログラムから外部への情報の出力を例示できる。ここで、外部への出力とは、例えば、表示デバイス、プリンタ等への出力、通信モジュールを介した他の装置への情報の送信等である。
【００８０】
変換装置１０は、固定長データの１文字目を読み込み、文字加工バッファＷへ格納する（Ｓ３１）。なお、Ｓ３１の処理により、文字加工バッファＷに格納された１文字目の固定長データには、基本文字の文字コード及び異体字セレクタが含まれている。文字加工バッファＷは、例えば、主記憶部９２の所定の記憶領域に設けられる。なお、以下の説明において、各バッファは、主記憶部９２の所定の記憶領域に設けられるものとして説明する。また、変換装置１０で実行されるＳ３１の処理は、拡張表現データを取得するステップの一例である。また、情報処理装置９０のＣＰＵ９１等は、拡張表現データを取得する手段の一例として、Ｓ３１の処理を実行する。
【００８１】
Ｓ３２では、変換装置１０は、文字の読み込み終了であるかを判定し、文字読み込み終了の場合には（Ｓ３２、ＹＥＳ）、出力作業用バッファのデータをUTF8またはUTF16へ変
換して、出力バッファへ格納する（Ｓ３３）。変換装置１０は、Ｓ３３の処理実行後に、図７に例示する処理を終了する。
【００８２】
一方、変換装置１０は、文字読み込み終了でない場合には（Ｓ３２、ＮＯ）、文字加工バッファＷに格納された固定長データから、可変長データの１文字目としての基本文字を抽出する（Ｓ３４）。
【００８３】
変換装置１０は、例えば、文字加工バッファＷに格納されたデータと“０ｘ００ｆｆｆｆｆｆ”で表される３２ビットデータとの論理積（AND）を求め、得られた処理結果を文
字加工バッファＡに格納する。このような処理により、変換装置１０は、例えば、（方式１）で変換された固定長データの中から基本文字の文字データを抽出することができる。
【００８４】
また、変換装置１０は、例えば、文字加工バッファＷに格納されたデータと“０ｘｆｆｆｆｆｆ００”で表される３２ビットデータとの論理積（AND）を求め、得られた処理結
果を文字加工バッファＡに格納する。そして、変換装置１０は、文字加工バッファＡに格納されたデータを８ビット左シフトさせる。このような処理により、変換装置１０は、例えば、（方式２）で変換された固定長データの中から基本文字の文字データを抽出することができる。
【００８５】
次に、変換装置１０は、文字加工バッファＷに格納された固定長データから、基本文字に付加する異体字セレクタに係るデータを抽出する（Ｓ３５）。ここで、異体字セレクタに係るデータは、例えば、異体字セレクタ番号である“VSn”から“１”を差し引いた“
ＶＳｎ−１”である。
【００８６】
変換装置１０は、例えば、文字加工バッファＷに格納されたデータと“０ｘｆｆ００００００”で表される３２ビットデータとの論理積（AND）を求め、得られた処理結果をバッファＶＳｎに格納する。この処理の結果により、変換装置１０は、例えば、（方式１）で変換された固定長データの中から異体字セレクタに係るデータを抽出することができる。
【００８７】
また、変換装置１０は、例えば、文字加工バッファＷに格納されたデータと“０ｘ００００００ｆｆ”で表される３２ビットデータとの論理積（AND）を求め、得られた処理結果をバッファＶＳｎに格納する。この処理の結果により、変換装置１０は、例えば、（方式２）で変換された固定長データの中から異体字セレクタに係るデータを抽出することができる。
【００８８】
Ｓ３６では、変換装置１０は、Ｓ３４の処理で抽出された基本文字（可変長データの１文字目）の３２ビットデータ（固定長）を文字加工バッファＡから出力作業用バッファへ出力する。変換装置１０は、Ｓ３６の処理実行後、Ｓ３７に移行し、所定の条件を満たす場合には（Ｓ３７、ＹＥＳ）、Ｓ３８−Ｓ３９の異体字セレクタへの変換処理を実行する。
【００８９】
Ｓ３７では、変換装置１０は、異体字セレクタの有無を判定する。例えば、異体字セレクタが存在する場合には、例えば、異体字セレクタ番号である“VSn”から“１”を差し
引いた“ＶＳｎ−１”がバッファＶＳｎに格納される。ここで、“ＶＳｎ−１”は、図６で説明したように、１６から２５５の範囲（“０ｘ１０”〜“０ｘｆｆ”）の値となる。従って、Ｓ３７では、変換装置１０は、Ｓ３５の処理でバッファＶＳｎに格納されたデータが“０ｘ０”の場合に、異体字セレクタを持たないと判定できる。また、変換装置１０は、Ｓ３５の処理でバッファＶＳｎに格納されたデータが、“０ｘ０”以外の場合に、異体字セレクタを持つと判定してもよい。
【００９０】
変換装置１０は、Ｓ３７の判定の結果、異体字セレクタが無い場合には（Ｓ３７、ＮＯ）、Ｓ３１に移行し、Ｓ３１−Ｓ３９の処理を繰り返す。一方、変換装置１０は、Ｓ３７の判定の結果、異体字セレクタが有る場合には（Ｓ３７、ＹＥＳ）、バッファＶＳｎに格納された値に基づいて、異体字セレクタ番号（VSn）を文字に変換する（Ｓ３８）。変換された異体字セレクタ番号（VSn）は、文字加工バッファＢに格納される。
【００９１】
Ｓ３８の処理では、変換装置１０は、例えば、バッファＶＳｎのデータを２４ビット左シフトさせて“１”を加え、文字加工バッファＢに格納する。このような処理により、変換装置１０は、例えば、（方式１）で変換された固定長データの中から異体字セレクタ番号（VSn）を抽出することができる。
【００９２】
また、変換装置１０は、例えば、バッファＶＳｎのデータに“１”を加え、文字加工バッファＢに格納する。このような処理により、変換装置１０は、例えば、（方式２）で変換された固定長データの中から異体字セレクタ番号（VSn）を抽出することができる。
【００９３】
変換装置１０は、さらに、文字加工バッファＢに抽出された異体字セレクタ番号（VSn
）を文字データに変換し、再び、文字加工バッファＢに格納する。この結果、文字加工バッファＢには、例えば、“Ｕ＋Ｅ０１００”といった異体字セレクタを表現する文字データが格納される。“Ｕ＋Ｅ０１００”は、異体字セレクタ番号（VS17）に対応した文字コードである。
【００９４】
Ｓ３９では、変換装置１０は、文字加工バッファＢに格納された異体字セレクタを表現する文字データを出力作業用バッファに出力し、Ｓ３１に移行する。変換装置１０は、再び、Ｓ３１−Ｓ３９の処理を繰り返すことにより、固定長データに含まれる基本文字及び異体字セレクタに係るデータを、“基本文字＋異体字セレクタ”で表現される可変長のデータに変換することができる。出力作業用バッファに出力された文字データは、Ｓ３２の文字読み込み終了判定を条件として出力バッファに格納される。
【００９５】
なお、図６に例示の処理では、変換装置１０は、例えば、文字数カウンタ等を設けるとしてもよい。なお、図６に例示の処理では、変換装置１０は、例えば、文字数カウンタ等を設けるとしてもよい。そして、文字数カウンタは文字数を計数する。文字数カウンタは、入力部９４の処理に応じて適宜、初期化及び加算を行う。
【００９６】
ここで、変換装置１０で実行されるＳ３４−Ｓ３８の処理は、標準表現の文字データ列に変換するステップの一例である。また、情報処理装置９０のＣＰＵ９１等は、標準表現の文字データ列に変換する手段の一例として、Ｓ３４−Ｓ３８の処理を実行する。
【００９７】
すなわち、変換装置１０が生成する固定長文字コードは、文字の識別コードと文字の異体字識別コードとを含む元の可変長文字コードを復元可能な固定長文字コードである。変換装置１０は、可変長文字コードから、可変長文字コードを復元可能な固定長文字コードに、文字データを変換する。このような処理により、変換装置１０は、異字体を含む可変長文字コードの文字データを固定長文字コードで扱うことができる。
【００９８】
〔動作例〕
（コンパイラ）
図８Ａに、本実施形態の変換装置１０をコンパイラに組み込んだケースの説明図を例示する。図８Ａに例示の説明図において、ソースプログラムファイル８０ａは、例えば、UTF8、UTF16で表現された文字コードを含むプログラムである。コンパイラ８０ｂは、本実施形態の変換装置１０を含む。コンパイラ８０ｂは、ソースプログラムファイル８０ａのソースコードを変換し、コンピュータが実行可能なオブジェクトコードで記述されたアプリケーション（目的プログラム）８０ｃを生成する。目的プログラム８０ｃは、例えば、情報処理装置９０で実行可能なアプリケーションである。
【００９９】
図８Ａのソースプログラムファイル８０ａでは、当該プログラムで扱うデータ宣言が行われ、初期値設定やファイル名等の環境変数、ファイルレコード等の定義付けが行われる。データ宣言には、例えば、UTF8，UTF16で表現された文字列“ＮＮＮＮ”が含まれる。また、ソースプログラムファイル８０ａでは、データの入出力に係る各種処理、データ加工に係る処理、他のソフトウェアとの連携（例えば、データ入出力）等が記述される。データの入出力に係る処理には、例えば、“ACCEPT  IN-NAME ”等で記述された外部データ入力処理等が含まれる。
【０１００】
図８Ａに例示のコンパイラ８０ｂは、コンパイル処理の実行時に、ソースプログラムファイル８０ａのファイル定義、ファイルレコード定義等に沿って、データ領域を確保する。なお、確保されるデータ領域は、固定長のデータ領域である。また、コンパイラ８０ｂは、ソースプログラムファイル８０ａの各種処理に係るソースコードに沿って、コンピュータが実行可能なオブジェクトコードへの翻訳処理を実行する。翻訳処理では、各種処理に係るソースコードに沿って、固定長データ領域の確保及び、固定長データ領域を前提とした翻訳処理が実行される。
【０１０１】
コンパイラ８０ｂに組み込まれた変換装置１０では、コンパイル処理の実行時に以下の文字データに係る変換処理を実行する。例えば、コンパイラ８０ｂの変換装置１０は、ソースプログラムファイル８０ａのデータ宣言等に含まれる、UTF8、UTF16等で表現された、可変長の文字列“ＮＮＮＮ”等をUTF32に変換し、入力作業用バッファに格納する（図６、Ｓ１１）。そして、変換装置１０は、入力用作業バッファに格納されたい文字目の読み込み処理を行い、文字加工バッファＡに格納する（図６、Ｓ１２）。変換装置１０は、所定の条件を満たす場合（図６、Ｓ１３，ＮＯ、Ｓ１４，ＹＥＳ）には、２文字目を読み込み、文字加工バッファＢに格納する（図６、Ｓ１６）。そして、変換装置１０は、２文字目が異体字セレクタ（VS）でない場合、文字加工バッファＡに格納した１文字目を目的プログラム８０ｃに出力する。そして、変換装置１０は、文字加工バッファＢを文字加工バッファＡに複写し、文字加工バッファＢの初期化処理を行う（図６、Ｓ１８，ＮＯ−Ｓ２２）。
【０１０２】
また、コンパイル処理の実行時において変換装置１０は、２文字目が異体字セレクタ（VS）の場合、Unicodeで表現された異体字セレクタ（VS）を異体字セレクタ番号（VSn）に変換する（図６、Ｓ１８，ＹＥＳ−Ｓ１９）。そして、変換装置１０は、文字加工バッファＡに格納された１文字目の基本文字と、異体字セレクタ番号（VSn）とを固定長データに合成し、合成した固定長データを目的プログラム８０ｃに出力する（図６、Ｓ２０−Ｓ２１）。
【０１０３】
また、図８Ａに例示のコンパイラ８０ｂは、例えば、“ACCEPT  IN-NAME ”といった外部データ入力処理に係るソースコードに応じて、当コンパイラ処理をRUNTIMEシステムと
して呼び出すための呼び出し関数を関連付ける。
【０１０４】
このようなコンパイラ８０ｂの処理により、目的プログラム８０ｃには、ソースプログラムファイル８０ａで宣言された“ＮＮＮＮ”といった文字列が、固定長データとして初期値として設定される。また、目的プログラム８０ｃには、ソースプログラムファイル８０ａのファイル定義等に応じた変数領域，固定長データ領域が設定される。さらに、目的プログラムの実行領域（ビジネスブロック）には、固定長データ領域とそれを前提とした処理が組み込まれる。
【０１０５】
図８Ｂは、図８Ａの目的プログラム８０ｃの実行を説明する図である。図８Ｂにおいて、コンパイラ運用システム８０ｄは、“ACCEPT  IN-NAME ”で呼び出されたRUNTIMEシステムである。図８Ｂに例示の目的プログラム８０ｃは、例えば、情報処理装置９０で実行される。
【０１０６】
図８Ｂに例示の説明図では、例えば、情報処理装置９０の備える入力部９５を介して、UTF8、UTF16で表現された文字データ入力が行われる。目的プログラム８０ｃは、入力さ
れた文字データを、外部データ入力処理により受け付ける。目的プログラム８０ｃの外部データ入力処理の実行により、“ACCEPT  IN-NAME ”に関連付けられた呼び出し関数等が呼び出され、コンパイラ運用システム８０ｄが起動される。起動されたコンパイラ運用システム８０ｄでは、図８Ａで説明したコンパイラ８０ｃの処理が実行される。
【０１０７】
コンパイラ８０ｃに組み込まれた変換装置１０は、UTF8、UTF16等で表現された、可変
長の文字データをUTF32に変換し、入力作業用バッファに格納する（図６、Ｓ１１）。そ
して、変換装置１０は、図６のＳ１２−Ｓ２３の処理を実行することにより、入力部９５を介して入力された可変長の文字データを固定長データに変換する。
【０１０８】
目的プログラム８０ｃは、変換された固定長データに基づいて、所定のデータ加工処理、他ソフトウェアとの連携処理を実行する。例えば、目的プログラム８０ｃの実行により、情報処理装置９０は、固定長データでファイルへの書き込みを行い、固定長データが書き込まれたファイルを補助記憶部９３に格納する。また、目的プログラム８０ｃを実行する情報処理装置９０は、他ソフトウェアとの連携処理では、固定長データ領域を前提とした入出力処理を実行する。
【０１０９】
データ加工処理の結果、例えば、情報処理装置９０が備える出力部９６へデータを出力する場合には、コンパイラ８０ｂは、固定長データを可変長データに変換し、目的プログラム８０ｃに出力する。コンパイラ８０ｂに組み込まれた変換装置１０では、以下の文字データに係る変換処理を実行する。
【０１１０】
例えば、コンパイラ８０ｂの変換装置１０は、固定長データの１文字目を読み込み、文字加工バッファＷへ格納する（図７、Ｓ３１）。そして、変換装置１０は、所定の条件を満たす場合、文字加工バッファＷに格納された固定長データから、可変長データの１文字目としての基本文字を抽出し、抽出した基本文字を文字加工バッファＡに格納する（図７、Ｓ３４）。また、変換装置１０は、文字加工バッファＷに格納された固定長データから、基本文字に付加する異体字セレクタに係るデータを抽出し、バッファＶＳｎに格納する（図７、Ｓ３５）。
【０１１１】
そして、変換装置１０は、１文字目の固定長データ（USC4）をバッファＶＳｎから出力作業用バッファに出力し（図７、Ｓ３６）、異体字セレクタが有る場合には、バッファＶＳｎに格納された異体字セレクタ番号（VSn）を文字データに変換する。変換された文字
データは文字加工バッファＢに格納される（図７、Ｓ３８）。変換装置１０は、文字加工バッファＢに格納された異体字セレクタの文字データ（USC4）を出力作業用バッファに出力する（図７、Ｓ３９）。
【０１１２】
出力作業用バッファに出力された１文字目の基本文字データ、及び、異体字セレクタを表現する文字データは、固定長データの文字読み込み終了を条件として、UTF8またはUTF16に変換されて出力バッファに格納される（図７、Ｓ３３）。出力バッファに格納されたUTF8またはUTF16に変換された文字データは、目的プログラム８０ｃのデータ出力処理に出力される。
【０１１３】
目的プログラム８０ｃのデータ出力処理では、UTF8またはUTF16に変換された可変長の
文字データは、出力部９６の表示画面上に出力される。ここで、基本文字が異体字セレクタを持つ場合では、基本文字の直後に異体字セレクタを付加して、文字データが出力される。
【０１１４】
（ミドルウェア）
図９に、本実施形態の変換装置１０をミドルウェアに組み込んだケースの説明図を例示する。図９のケースは、例えば、文字を扱う業務アプリケーションの開発者等が情報処理装置９０のミドルウェアに組み込まれた変換装置１０の変換機能を呼び出して使用するケースである。
【０１１５】
図９のアプリケーション８０ｅは、例えば、開発者等が設計したアプリケーションプログラムである。開発者等は、例えば、情報処理装置９０の備える入力部９５を介して、UTF8、UTF16で表現された文字データの入力を行う。アプリケーション８０ｅでは、外部データ入力処理にミドルウェアに組み込まれた変換装置１０が、変換器関数として関連付けられる。図９の例示の、外部データ入力処理では、“変換器関数(&buffer, &fixed_buffer);”により、ミドルウェアに組み込まれた変換装置１０が、変換器関数として関連付けられる。
【０１１６】
アプリケーション８０ｅにおいて、外部データ入力処理の要求により呼び出された変換装置１０は、UTF8、UTF16等で表現された、可変長の文字データをUTF32に変換し、入力作業用バッファに格納する（図６、Ｓ１１）。そして、変換装置１０は、図６のＳ１２−Ｓ２３の処理を実行することにより、入力部９５を介して入力された可変長の文字データを固定長データに変換する。変換された固定長データは、アプリケーション８０ｅの外部データ入力処理に出力される。
【０１１７】
アプリケーション８０ｅでは、例えば、データ加工処理や他ソフトウェアとの連携処理は、固定長データ領域を前提として設計される。なお、他ソフトウェアとの連携処理において、入出力の可変長のデータを固定長データに変換する場合には、開発者等は、例えば、図８Ｂに例示のコンパイラ運用システム８０ｄを呼び出し関数として連携処理に関連付けるとしてもよい。
【０１１８】
アプリケーション８０ｅにおいて、固定長データで処理された文字データを出力部９６に出力する場合では、ミドルウェアに組み込まれた変換装置１０は、外部データ出力処理に変換器関数として関連付けられる。図９の例示の、外部データ出力処理では、“変換器関数(&fixed_buffer, &customer_name);”により、ミドルウェアに組み込まれた変換装置１０が、変換器関数として関連付けられる。
【０１１９】
アプリケーション８０ｅにおいて、外部データ出力処理の要求により呼び出された変換装置１０は、固定長データの１文字目を読み込み、文字加工バッファＷへ格納する（図７、Ｓ３１）。そして、変換装置１０は、図７のＳ３２−Ｓ３９の処理を実行することにより、固定長データとして処理された文字データを可変長の文字データに変換する。変換された可変長データは、アプリケーション８０ｅの外部データ出力処理に出力される。
【０１２０】
アプリケーション８０ｅでは、変換された可変長の文字データは、所定の関数により、出力部９６に出力される。図９に例示の外部データ処理では、“printf（”cutomer name
%s \n”, &customer_name);”等の関数により、変換された可変長の文字データが出力部９６に出力される。
【０１２１】
以上、説明したように、本実施形態の変換装置１０は、基本文字及び異体字セレクタが付加された２〜８バイトの文字データを、基本文字の文字コード及び異体字セレクタに係るデータを含む固定長のデータに変換することができる。このため、ｎ文字の日本語を扱うプログラム,ＤＢ定義,帳票定義等では、変換後の固定長データを使用した内部処理が可能となる。この結果、本実施形態の変換装置１０の機能をミドルウェア，コンパイラ等に組み込むことにより、固定長日本語文字列を前提にして設計していた業務システム，業務アプリケーションは、大きな見直しをすることなくリビルドすることが可能となる。
【０１２２】
なお、図６のＳ１１では、入力データをUTF32へ変換し、入力作業用バッファへ格納す
るとしたが、UTF8、UTF16で表現された基本文字、及び、該基本文字に異体字セレクタが
付加された形式で格納するとしてもよい。
【０１２３】
《コンピュータが読み取り可能な記録媒体》
コンピュータその他の機械、装置（以下、コンピュータ等）に上記いずれかの機能を実現させるプログラムをコンピュータ等が読み取り可能な記録媒体に記録することができる。そして、コンピュータ等に、この記録媒体のプログラムを読み込ませて実行させることにより、その機能を提供させることができる。
【０１２４】
ここで、コンピュータ等が読み取り可能な記録媒体とは、データやプログラム等の情報を電気的、磁気的、光学的、機械的、または化学的作用によって蓄積し、コンピュータ等から読み取ることができる記録媒体をいう。このような記録媒体のうちコンピュータ等から取り外し可能なものとしては、例えばフレキシブルディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ、ＤＶＤ、ブルーレイディスク、ＤＡＴ、８ｍｍテープ、フラッシュメモリなどのメモリカード等がある。また、コンピュータ等に固定された記録媒体としてハードディスクやＲＯＭ等がある。
【０１２５】
《その他》
以上の実施形態は、さらに以下の付記と呼ぶ態様を含む。以下の各付記に含まれる構成要素は、他の付記に含まれる構成と組み合わせることができる。
【０１２６】
（付記１）
コンピュータが、
入力文字データ列に異体字情報が含まれるかを検出し、
前記入力文字データ列より異体字情報を検出したときは、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する、
処理を実行することを特徴とする文字データ処理方法。
【０１２７】
（付記２）
拡張表現データを処理する処理部に前記変換された拡張表現データを引き渡す、
処理をさらに実行することを特徴とする、付記１に記載の文字データ処理方法。
【０１２８】
（付記３）
前記処理部から処理された拡張表現データを取得し、
前記取得した拡張表現データを、異体字情報と、該異体字情報に対応付けられた基本文字が含まれる標準表現の文字データ列に変換する、
処理をさらに実行することを特徴とする付記２に記載の文字データ処理方法。
【０１２９】
（付記４）
前記拡張表現データは、前記異体字情報に含まれる異体字識別コード値を所定ビットシ
フトした値を含む、付記１または２に記載の文字データ処理方法。
【０１３０】
（付記５）
コンピュータが、
文字の識別コードと前記文字の異体字を識別する異体字識別コードとを含む、前記文字に応じてコード長の異なる可変長文字コードの文字データを取得するステップと、
前記文字の識別コードと前記文字の異体字識別コードとを基に、前記識別コードと前記異体字識別コードとを復元可能な固定長文字コードを生成し、前記可変長文字コードの文字データを前記固定長コードの文字データに変換するステップと、
を実行する情報処理方法。
【０１３１】
（付記６）
コンピュータに、
入力文字データ列に異体字情報が含まれるかを検出させ、
前記入力文字データ列より異体字情報を検出したときは、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換させるためのプログラム。
【０１３２】
（付記７）
拡張表現データを処理する処理部に前記変換された拡張表現データを引き渡す、
処理をさらに実行させることを特徴とする付記６に記載のプログラム。
【０１３３】
（付記８）
前記処理部から処理された拡張表現データを取得し、
前記取得した拡張表現データを、異体字情報と、該異体字情報に対応付けられた基本文字が含まれる標準表現の文字データ列に変換する、
処理をさらに実行させることを特徴とする付記７に記載のプログラム。
【０１３４】
（付記９）
前記拡張表現データは、前記異体字情報に含まれる異体字識別コード値を所定ビットシフトした値を含む、付記６または７に記載のプログラム。
【０１３５】
（付記１０）
入力文字データ列に異体字情報が含まれるかを検出する手段と、
前記入力文字データ列より異体字情報を検出したときは、前記異体字情報を、前記異体字情報と対応づけられた基本文字および前記異体字情報を含み、かつ、特定のビット演算処理により当該基本文字に変換可能な、拡張表現データに変換する手段と、
拡張表現データを処理する処理部に前記変換された拡張表現データを引き渡す手段と、
前記処理部から処理された拡張表現データを取得する手段と、
前記取得した拡張表現データを、異体字情報と、該異体字情報に対応付けられた基本文字が含まれる標準表現の文字データ列に変換する手段と、
を備える情報処理装置。
【０１３６】
（付記１１）
前記拡張表現データは、前記異体字情報に含まれる異体字識別コード値を所定ビットシフトした値を含む、付記１０に記載の情報処理装置。
【符号の説明】
【０１３７】
１０  変換装置
９０  情報処理装置
９１  ＣＰＵ
９２  主記憶部
９３  補助記憶部
９４  通信部
９５  入力部
９６  出力部
【図１】
2015043164.tif 000005
【図２Ａ】
2015043164.tif 000006
【図２Ｂ】
2015043164.tif 000007
【図３】
2015043164.tif 000008
【図４】
2015043164.tif 000009
【図５Ａ】
2015043164.tif 000010
【図５Ｂ】
2015043164.tif 000011
【図５Ｃ】
2015043164.tif 000012
【図６】
2015043164.tif 000013
【図７】
2015043164.tif 000014
【図８Ａ】
2015043164.tif 000015
【図８Ｂ】
2015043164.tif 000016
【図９】
2015043164.tif 000017