クレスコ・イー・ソリューション

ENGINEER COLUMNエンジニアコラム

ConnectPlusユニコード開発第1回 無知ではいられない

当社は、 2006年12月20日にSAPユニコードシステム専用の接続ツールConnectPlusUnicode Version2.1をリリースいたしました。このコラムでは、開発を通じてSAPユニコードシステムについて分かったこと、考えたことなどを紹介していきたいと思っています。

開発に取り組むまで、ユニコードについて「世界中の様々な文字を同時に使うことができる」や「すべての文字が同じ長さになる」ぐらいの曖昧なとらえ方していました。 英字、数字、半角カナ、全角かな漢字を意識する必要のないユニコードは、なにか「先進的」で「開発しやすい」文字コードという漠然としたイメージがあったように思います。しかし、実際に開発を始めてみると、ユニコードについて、いかに自分が無知であったかを痛感しました。

今回は、典型的な誤解の例として、ユニコード文字の長さについての話をしたいと思います。話のなかで分からない言葉が出てくるかもしれませんが、次回から詳しく説明をしたいと思っていますので、気にせずに読み進んでみてください。

文字のバイト長は同じではない

先ほど、ユニコードについて「すべての文字が同じ長さになる」という捉え方をしていたと言いましたが、このような誤解をしている方は、意外に多いのではないかと思います。ユニコードの規格では、群、面、区、点の 4 つの値の組み合わせですべての文字コードが定義されているのですが、その文字コードを符号化すると、そのバイト長は必ずしも同じにはならないのです。

例えば、UTF-8 というエンコード方式を使って文字を符号化すると、1文字あたり1バイトから4バイトまでのバイト列に変換されます。数字やアルファベットは、1文字あたり1バイト、半角カナや全角かな、一般的な漢字は、3バイトのバイト列といった具合です。

SAPユニコードシステムとバイト長

SAPユニコードシステムでは、2つのエンコード方式が採用されています。システムの内部では、UTF-16と呼ばれるエンコード方式で文字が符号化されます。このUTF-16は、半角カナや全角かな、一般的な漢字を2バイトの長さに符号化します。一方、データの入出力では、前述のエンコード方式UTF-8で符号化されます。2つのエンコード方式が使われている理由については、別の回で触れるつもりですが、ここでは、SAP ユニコードシステムで日本語文字を使うと、どのようなことが起こるのかを考えてみたいと思います。

SAPシステムの品目マスターには「品目テキスト」という項目があります。品目コードに対する名称、つまり品名を入力する項目で、文字型で長さ40の属性を持っています。これまでのSAPシステムの場合、品目テキスト項目に入力可能なデータは、文字数に関係なく40バイトでした。アルファベットや数字は1文字あたり1バイト、日本語文字は、シフトJISで符号化されるので、半角カナは、1文字あたり1バイト、全角かなや漢字は、1文字あたり2バイトになりますが、どんな文字が混じっても、入力可能なデータは40バイトでした。また、SAPシステムから品目テキストの値を出力した場合、特別な処理を行わない限り、シフトJISで符号化されて、未入力部分に空文字が埋められるので、どんな文字が入力されていても、出力されるデータのバイト長は40バイト固定でした。

SAPユニコードシステムの場合でも、品目テキストは、文字型で長さ40の項目であることに変わりはありません。ですが、1文字あたり2バイトの領域が用意され、UTF-16でほとんどの文字が2バイトで符号化されるので、英数字と同様に全角かな文字も40文字まで入力可能になります。一方、品目テキストの値をSAPシステムから出力する際には、文字がUTF-8で符号化されるので、英数字のみ40文字であれば40バイト、全角かな文字のみ40文字であれば120バイト、英数字20文字と全角かな20文字であれば80バイトといった具合に、入力した文字によって出力されるバイト長が変化します。

つまり、ユニコードシステムに切り替えると、これまでバイト固定長で出力されていたデータが、バイト可変長で出力されるようになるのです。例えば、SAPシステムから他のシステムへデータを転送している場合、データフォーマットがCSVやXMLであればこのような可変長のデータを取り扱うことは簡単ですが、バイト固定長のデータフォーマットでデータ転送を行っている場合は、大幅なシステム修正が必要になるかもしれません。

無知ではいられない

今回SAPユニコードシステムを使って開発を行ってきましたが、個人的な印象では、SAPユニコードシステム自体は、これまでのSAPシステムと同様に、日本企業の基幹システムとしての運用に十分堪えるものではないか思っています。

しかし、文字コードは、SAPシステム単体だけで片付けられる問題ではありません。パソコンにデータをダウンロードしたり、取引先へEDI でデータを送信したり、様々な方法でSAPシステムのデータを利用しているのではないかと思います。そして、SAPシステムから出力されるユニコードデータをどうやって処理するのかは、SAPではなく、利用者側が考えることになる問題です。SAPユーザもユニコードについて無知ではいられないと思うのです。

このコラムを通じて、SAPシステムに関わる方々に、少しでもユニコードについて情報を発信できればと思っています。どうぞよろしくお願いいたします。

関連コラムー一覧

DOWNLOAD資料ダウンロード

パンフレット、製品詳細資料、導入事例など
各種資料をダウンロードいただけます。

ダウンロードはこちら

CONTACT USお問い合わせ

Webで簡単お問い合わせ

製品、導入事例、関連セミナーなどお気軽にお問い合わせください。

お問い合わせはこちら