混合ローカル文字セットまたは UTF-8 マルチリンガル データベースのサポート

このトピックでは、混合ローカル文字セットのデプロイメント、または UTF-8 (8 ビット Unicode Transformation Format) マルチリンガル データベースのサポートに関するガイドラインを示します。
同一の Rational® ClearQuest® データベース セットに接続する複数のコンピュータがそれぞれ異なるローカル文字セットを使用しているような環境で作業している場合、 またはデータベース セットに ClearQuest UTF-8 データ コード ページ (65001) を選択している場合には、 次の文字表現の問題を考慮する必要があります。

ローカル文字セットの構成

ローカル文字セットは、 クライアント オペレーティング システムのコマンド行シェルでの入力と表示が 可能な文字の集合です。UNIX システムでは、ローカル文字セットは LANG 環境変数によって 制御されます。Windows では、[地域と言語のオプション] の設定によって制御されます。

7.0 より前のバージョンの Rational ClearQuest では、ClearQuest データ コード ページと ローカル文字セットが一致している場合を除き、書き込み操作は許可されていませんでした。設定が一致していない場合は、読み取り専用操作のみが許可されていました。 読み取り専用モードが必要だった理由は、ClearQuest アプリケーションが データベースにデータを書き込むとき、データベース セットの ClearQuest データ コード ページではなく、 クライアントまたは Web サーバーのローカル文字セットを使用していたためです。

バージョン 7.0 以降、Rational ClearQuest ソフトウェアは データを Unicode で処理し、アプリケーションは ClearQuest データ コード ページを 使用してデータベースに書き込みます。これらのアプリケーションは、 ローカル文字セットが ClearQuest データ コード ページと一致しない場合でも、 読み取り/書き込みモードで ClearQuest データベースに接続できます。

データベース セットの ClearQuest データ コード ページの選択と設定

製造元データベース文字セットは、 Oracle の場合は文字セット または charset、IBM® DB2® の場合は コード ページ またはコード セット、SQL Server の場合はコード ページ または Collation と呼ばれます。

データベースの製造元データベース文字セットの選択と設定

Rational ClearQuest バージョン 7.1.1 より、Oracle および DB2 のデータベース セットに UTF-8 の ClearQuest データ コード ページを選択することができます。 UTF-8 データ コード ページでは、ユーザー データベースにマルチリンガル文字の保管が可能です。 データ コード ページとして UTF-8 を選択すると、オペレーティング システムのローカル コード ページも UTF-8 である (これは、Windows システムではオプションでありません) 場合を除いて、混合ローカル文字セットのデプロイメントで作業することになります。

ClearQuest データ コード ページの文字でローカル文字セットに含まれていない可能性のあるものを処理するためのフックとスクリプトのコーディング

混合ローカル文字セットのデプロイメントまたは UTF-8 マルチリンガル データベース環境のために作成されたスクリプトとフックは、 ローカル文字セットに含まれていない可能性のある ClearQuest 文字データを処理しなければなりません。 このような環境でこの機能を完全に利用するには、Unicode をサポートするように それらのスクリプトとフックをコーディングする必要があります。

Designer には、新しい設定、[Unicode 認識] が組み込まれました。 バージョン 7.0 向けに作成されるフックは、ClearQuest API 呼び出しから 戻される文字列内の文字がローカル文字セットにある文字のみでなければならない (RETURN_STRING_LOCAL) か、 任意の Unicode 文字が許容される (RETURN_STRING_UNICODE) のかを指定できます。 また、戻り値文字列モードを制御するために使用できる新しい API 関数もあります。RETURN_STRING_LOCAL モードの場合、API 呼び出しは、 戻り値文字列にローカル文字セットで表せない文字が含まれていると例外を戻します。RETURN_STRING_UNICODE の場合、API 呼び出しはすべての文字をエラーなしで戻します。

混合ローカル文字セットまたは UTF-8 のデプロイメントにおいて、フックとスクリプトがすべてのデータを 処理できるようにするには、モードを RETURN_STRING_UNICODE に設定し、 戻される Unicode 文字を適切に処理する必要があります。戻り値文字列モードを RETURN_STRING_UNICODE に 設定するだけでは十分でありません。作成したコードが Unicode 文字を 正しく処理できることを確認してください。下に示すガイドラインが参考になりますが、 結局のところ、スクリプト言語に合わせて適切な Unicode プログラミング手法を使用しなければならないということです。

バージョン 7.0 にアップグレードする場合、 環境内のすべてのローカル文字セットが ClearQuest データ コード ページに 一致している場合は (前のバージョンではこれが普通でした)、これらの変更による既存スキーマへの影響はありません。デフォルト モードは RETURN_STRING_LOCAL で、 この場合、フックとスクリプトは以前と同じように機能します。

バージョン 7.0 を、ローカル文字セットが ClearQuest データ コード ページと 一致しない環境に展開する場合、 スクリプトが ClearQuest ソフトウェアの Unicode 文字データを 処理できることを確認し、スクリプトの戻り値文字列モードを RETURN_STRING_UNICODE に設定し、 パッケージをバージョン 7.0 にアップグレードする必要があります。Unicode をサポートする ClearQuest パッケージ の一覧については、表 1 を参照してください。Unicode を処理しないスクリプトも実行できますが、 システムが、ローカル文字セットに含まれていない文字データをスクリプトに戻そうとすると、 エラーが戻されます。これらのスクリプトは、 処理するデータがクライアントまたは Web サーバーのローカル文字セットに限定されている限り、引き続き機能します。

表 1. パッケージの戻り値文字列モード
パッケージ 戻り値文字列モード
AMWorkActivitySchedule RETURN_STRING_UNICODE
ATStateTypes RETURN_STRING_UNICODE
Attachments RETURN_STRING_UNICODE
BTStateTypes RETURN_STRING_UNICODE
Customer RETURN_STRING_UNICODE
EnhancementRequest RETURN_STRING_UNICODE
History RETURN_STRING_UNICODE
Notes RETURN_STRING_UNICODE
Project RETURN_STRING_UNICODE
Resolution RETURN_STRING_UNICODE
混合文字セット デプロイメントに対処しなければならないアプリケーションを開発する際は、 いくつかの考慮事項に対応する必要があります。
  • 戻り値文字列モード

    ClearQuest ソフトウェアは、 すべてのデータを Unicode 文字として扱います。しかし、スキーマ フック (Perl と Visual Basic) と その他の ClearQuest API アプリケーション または統合は、Unicode 文字を処理するように作成されていないこともあります。 この問題に対処するために、バージョン 7.0 で戻り値文字列モードが使用可能になりました。 Designer スクリプト エディタでフック コードを [Unicode 認識] に設定して、 スクリプトが RETURN_STRING_UNICODE 戻り値文字列モードで実行することを 指定できます (これを行うには、[Unicode 認識] チェック ボックスを選択します)。スクリプトは、SetPerlReturnStringMode メソッドまたは SetBasicReturnStringMode メソッドを呼び出して、 戻り値文字列モードを RETURN_STRING_UNICODE に設定できます。

    戻り値文字列モードは、Perl または COM 用の ClearQuest API によって 文字列が戻されるときに、文字表現を制限 (RETURN_STRING_LOCAL) するか、 すべての文字表現を許可 (RETURN_STRING_UNICODE) します。

  • 既存のフックまたはスクリプト コードでの Unicode サポート

    Unicode 文字を処理 できるフックとスクリプトを作成する習慣にすることは、優れた方法です。RETURN_STRING_LOCAL が デフォルト戻り値文字列モードとして提供されていて、 前のバージョンの ClearQuest ソフトウェア用の既存のフックとスクリプトを 変更せずに実行できます。現在は Unicode を処理する必要がない場合でも、 いずれは、RETURN_STRING_UNICODE モードで機能するように 既存のフックとスクリプトを修正するべきです。

    フックとスクリプトのコードを検証して、 任意の Unicode 文字を処理できることを確認してください。その後、Designer スクリプト エディタで フック コードを [Unicode 認識] とマークするか、外部スクリプトが SetPerlReturnStringMode メソッドまたは SetBasicReturnStringMode メソッドを呼び出すようにします。これで、フックまたはスクリプトをどのような ClearQuest 環境でも使用できるようになります。 例を次に示します。
    1. Perl の ClearQuest API スクリプトが、Windows Latin 1 (1252) ローカル文字セットのシステム上で実行されています。このシステムは、 データ コード ページが Shift-JIS (932) に設定されている ClearQuest データベースに接続します。
    2. このスクリプトは、日本語テキストが含まれているフィールド値を取り出します。デフォルトで、 その値は、この Perl スクリプトを実行しているコンピュータのローカル文字セット (この例では 1252) で 戻されます。Shift-JIS (932) 日本語文字は Latin 1 コード ページの文字として表現できないので、 例外が生成されます。この文字を処理するためには、アプリケーションは Unicode 文字を処理できなければならず、 戻り値文字列モードを RETURN_STRING_UNICODE に設定する必要があります。 そうすると、例外は生成されず、スクリプトはフィールド値のすべての文字を Unicode 文字として取り出します。

    デフォルトでは、ClearQuest API スクリプトが ローカル文字セットにない文字を含む文字列と共に戻った場合、 ステップ 2 で例外がスローされます。この例外によって、データ破損が防止されます。Unicode 文字を処理できるコードであることを確認した後、 ClearQuest API または Designer スクリプト エディタを 使用して、RETURN_STRING_UNICODE 戻り値文字列モードを 設定できます。ステップ 2 でこの変更を行うことによって、 フィールド値の文字列がローカル文字セットにないデータを含む場合、Perl 用の ClearQuest API は、 そのフィールド値文字列を UTF8 (UNICODE) として戻し、VBScript、Visual Basic、COM 用の ClearQuest API は、 制約なしの Unicode 文字を戻します。 ローカル文字セットで表現できない文字は、Unicode 文字として処理するために フックまたはスクリプトに戻されます。

    フックと スクリプトは、そのスクリプト言語 (Perl、VBScript、Visual Basic、COM) で、 ローカル文字セットで表せない文字の処理をサポートしていない操作を実行する場合には、 RETURN_STRING_LOCAL を使用する必要があります。例を次に示します。
    • ClearQuest データを、Perl UTF8 文字列に対しては機能しない Perl 呼び出し (一部のシステム呼び出しなど) で使用する。
    • ClearQuest データを、ファイル名またはディレクトリ名として使用する (ファイル名とディレクトリ名はローカル文字セットでなければなりません)。
    • ClearQuest データを、Unicode 文字をサポートするよう出力ファイルを構成せずにファイルに書き込む。
    • ClearQuest データを、ローカル文字セット データのみを受け入れる統合に送信する。

    RETURN_STRING_LOCAL モードでクエリー実行などの操作を実行でき、 クエリー結果セットには Unicode が含まれていてもかまいません。例外が生成されるのは、 その結果セットから Rational ClearQuest API メソッドによって データが抽出され、その API 呼び出しから戻された文字が ローカル文字セットに含まれていない場合のみです。例えば、 統合または外部アプリケーションは、統合に戻されるデータにローカル文字セットの文字のみが含まれている場合、 変更依頼に関する処理を実行できます。 統合コードは、ローカル文字セットでない文字が戻された場合に Rational ClearQuest API メソッドによってスローされる 例外を処理しなければなりません。統合 API が RETURN_STRING_UNICODE として構成されている場合、 例外はスローされませんが、アプリケーションは戻される Unicode 文字をすべて正しく処理する必要があります。RETURN_STRING_LOCAL モードと RETURN_STRING_UNICODE モードの どちらの場合にも、ClearQuest データ コード ページで表現できない文字を アプリケーションが書き込む場合、呼び出し側の統合またはアプリケーションに例外が戻されます。

    詳しくは、 『IBM Rational ClearQuest API リファレンス』のヘルプの 「フックとスクリプトの戻り値文字列モードの設定」を参照してください。

  • パッケージとスキーマでの Unicode サポート

    一部のパッケージまたはスキーマは、Unicode と 非ローカル文字セットのデータを処理するようには設計されていません。各パッケージ内の各スクリプトによるサポート状況は、Designer スクリプト エディタに示されます ([Unicode 認識] チェック ボックスが選択されます)。 DefectTracking スキーマと Common スキーマは、Unicode をサポートします。ただし、Unicode 文字をサポートしない パッケージが組み込まれているスキーマは、 混合文字セット デプロイメントでは使用できません。表 1 を参照してください。

    パッケージ フィールドにアクセスするフックを 編集または追加でき、これらのフックはそのパッケージの一部と見なされます。それらのフックは、 パッケージからデフォルトの Unicode サポートを継承しますが、 フックに対するこの正しい設定は、Designer では表示されません。

ある 1 つのデータベース セットまたは所属に接続される すべてのクライアントのローカル文字セットが、データ コード ページに一致する場合、 これらの問題を考慮する必要はありません。文字表現とコード ページ設定について詳しくは、『Rational ClearQuest の管理』 ヘルプを参照してください。


フィードバック