ConnectPlusユニコード開発

第1回 無知ではいられない

当社は、 2006 年 12 月 20 日に SAP ユニコードシステム専用の接続ツール ConnectPlus Unicode Version 2.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 システムに関わる方々に、少しでもユニコード について情報を発信できればと思っています。どうぞよろしくお願いいたします。

お問い合わせ

  • Webで簡単お問い合わせ

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

  • SAPアダプタ ショールーム

    製品デモンストレーションを
    見てみませんか?

  • 資料ダウンロード

    製品別のパンフレットや導入事例の資料をダウンロードできます。

  • エンジニアコラム
  • 特別コラム
  • サイト内用語解説