<<2009/01/21 更新>> PERFORCEサーバ P4D および PERFORCE クライアント・アプリケーション 国際語モードに関する注意 (2008.1) はじめに --------------------------------------- PERFORCE クライアントとサーバは、すべてのメタデータと一部のファイルの 内容を、サーバ上では UTF-8 形式の文字コードセットを使用して保存し、ク ライアント上では他の形式の文字コードセットに変換する、という国際語モー ドをサポートします。 国際語モードは、Windows版インストーラを使用してインストールした場合はデ フォルトで設定されますが、UNIX に p4d および p4 を格納した場合には設定 されません。 国際語モードを適用すると、ファイルの内容以外のすべてのデータ(識別子、 コメント等)およびすべての“unicode”型のファイルタイプのファイルの内容 について、クライアント側での環境変数 P4CHARSET で指定された文字コードセ ットとサーバ側での UTF-8 文字コードセットとの間で変換が行われます。 PERFORCE の運用において複数バイト文字の入出力を行う場合は、PERFORCE サー バが国際語モードで起動している必要があります。 サーバの構成 ----------------------------------------- PERFORCE を国際語対応環境の下(複数バイト文字の入出力を行う)で運用する ためには、使用するサーバに対して、あらかじめ国際語モードで使用すること を設定する必要があります。 なお、Windows版インストーラを使用してインストールした場合、本設定は自動 的に行われます。 また、Windows 環境か UNIX 環境かにかかわらず、すでに以前のリリースで国 際語モードを使用している場合には、あらためて本設定を行う必要はありませ ん。 サーバに国際語モードで使用することを設定するには: 1.“p4d -xi”を実行します サーバ下の既存のすべてのメタデータが正しい UTF-8 であることを確認し、 プロテクトされたカウンタ“unicode”を設定して、それ以降実行される p4d が国際語モードで動作するようにします。 (“p4d -xi”で実行された“p4d”プロセスは PERFORCE サーバを起動しませ ん。それ以降に実行される p4d が国際語モードで動作するように設定します。 一旦“p4d -xi”を実行した後に p4d を必要に応じてオプションを付けて起動 してください。) サーバが国際語モードで起動されている場合、すべてのユーザは環境変数 P4CHARSET を設定しなくてはなりません。 ※注意1 Windows のインストーラを使用して日本語 Windows 上に PERFORCE のサーバ をインストールした場合は、サーバに対する国際語モードの設定およびクライ アントに対する P4CHARSET の設定が自動的に行われます。 ※注意2 一度運用を開始しましたら、国際語対応モードから国際語非対応モードへの変 更、または、国際語非対応モードから国際語対応モードへの変更はできない場 合があります。十分にご注意ください。 ※注意3 すでにリビジョンを持っているファイルのファイルタイプを、text から unicode(またはその逆)に変更すると、PERFORCE 内部で保持する文字コード が変わってしまうため、Diff やマージが正しく機能しなくなる場合があります。 ファイルタイプを変更する際は、十分にご注意ください。 クライアントの構成 ----------------------------------------- PERFORCE を国際語対応環境で使用する場合、必ずクライアントとして使用す るマシン上に P4CHARSET 環境変数を設定する必要があります。 国際語対応モードで起動されている 2001.2 のサーバに対し P4CHARSET が設 定されていないクライアントからアクセスした場合、クライアント・ワークス ペースに同期されたファイルが判読不能となる可能性があります。たとえば、 P4CHARSET を設定せずに unicode ファイルタイプのファイルを取得しようと した場合、サーバからは UTF-8 のままのデータしか取得できません。 次の表はサポートされている文字セットとプラットフォームおよび、それに対 する P4CHARSET の推奨値を示しています。 言語 プラット Windows Unix P4CHARSET フォーム コードページ LOCALE 設定 ---------------------------------------------------------------------- 日本語 Windows 932 n/a shiftjis 日本語 UNIX n/a OS 依存(EUC) eucjp 日本語 UNIX n/a OS 依存(SJIS) shiftjis High-ASCII Windows 1252 n/a winansi High-ASCII UNIX n/a OS 依存 iso8859-1 High-ASCII UNIX n/a OS 依存 iso8859-15 High-ASCII MacOS n/a OS 依存 macosroman 変換しない すべて n/a n/a utf8* すべて すべて n/a    n/a utf16* Unicode クライアント Byte-Order-Mark P4CHARSET Unicode をファイルに記述 設定   フォーマット ------------------------------------------------------------------ utf8 UTF-8 No utf8-bom UTF-8 Yes utf8unchecked UTF-8 (検証していない) No utf8unchecked-bom UTF-8 (検証していない) Yes utf16 UTF-16 クライアントバイト順 Yes utf16le UTF-16 リトルエンディアン順 Yes (Windows 様式) utf16be UTF-16 ビッグエンディアン順 Yes utf16-nobom UTF-16 クライアントバイト順 No utf16le-nobom UTF-16 リトルエンディアン順 No utf16be-nobom UTF-16 ビッグエンディアン順 No utf32 UTF-32 クライアントバイト順 Yes utf32le UTF-32 リトルエンディアン順 Yes utf32be UTF-32 ビッグエンディアン順 Yes utf32-nobom UTF-32 クライアントバイト順 No utf32le-nobom UTF-32 リトルエンディアン順 No utf32be-nobom UTF-32 ビッグエンディアン順 No (注:eucjpは、Windows では P4CHARSET の値として サポートされていません) * utf16 および utf32 が p4 コマンドラインにおいて機能するためには、 P4COMMANDCHARSET が異なる (utf16 および utf32 以外の)文字セットに設定 されている必要があることに注意してください。また、p4 の API ベースの アプリケーションの多くは特別な作業を行わない限り utf16 または utf32文 字セットに対応できません。 * また、utf16 は BOM(バイト順マーク)が必要であるか、および特定のバイ ト順が必要であるかによって utf16、utf16-nobom、utf16le、utf16le-bom、 utf16be、utf16be-bom のうちいずれかに設定されることに注意してください。 Windowsプラットホームではおそらく Windows での Unicode ファイルの概念 に最も近い、utf16le を使用することが望ましいでしょう。 P4CHARSET に関する以下の注意事項は P4COMMANDCHARSET にも適応します。 P4CHARSET でファイル内容の文字セットを設定して、P4COMMANDCHARSET でコ マンドの入力と出力とに異なる文字セットを使用することが可能です。 * utf8 は翻訳されていませんが、2006.1 以降の p4 api でビルドされている クライアントでは有効であり、ファイルの内容が実際に utf8 であるかが検 証されます。従来のクライアントは utf ファイルの内容を検証しませんでし た。 【P4CHARSET の設定(Windows)】 日本語 Windows 上で、PERFORCE の Windows版インストーラを用いてイン ストールした場合、P4CHARSET の値はデフォルトで shiftjis に設定され ます。この設定で問題なければ、このセクションで説明している操作は不要 です。 1. Windows にログインし MS-DOS コマンドプロンプトを起動します。 2. chcp ("CHangeCodePage") コマンドを引数なしで実行し、現在のコードペ ージの設定を確認します。 3. 次のようなメッセージが表示されます。 現在のコード ページ: 932 4. 現在設定されているコードページにしたがって、次のように文字セットを 設定します。 コードページ P4CHARSET の設定 --------------------------------- 1252 winansi 932 shiftjis ※ Windows 上で、P4CHARSET を上記以外に(たとえば eucjp など)に設 定した場合の動作はサポートされておりません。 P4CHARSET をこのホスト上のすべてのユーザに対して設定するには、次の コマンドを実行します。このコマンドを実行するには Administrator の 権限が必要です。 p4 set -s P4CHARSET=[character_set] Administrator の権限がない場合は、次のコマンドを使用します。 p4 set P4CHARSET=[character_set] これによって、P4CHARSET は現在ログインしているユーザに対してのみ設 定されます。別のユーザが同じホスト上にログインする場合は別途 P4CHARSET を設定する必要があります。 【P4CHARSET の設定(UNIX)】 1. P4CHARSET をシェルまたは .kshrc、.cshrc、.profile スタートアップ・ スクリプトで適切な値に設定します。 P4CHARSET の適切な値は、LANG ま たは LOCALE 環境変数の値に基づいて、判断することができます。 $LANGの例 P4CHARSET の設定 ------------------------------------------ en_US.ISO_8859-1 iso8859-1 ja_JP.EUC eucjp ja_JP.PCK shiftjis 一般に、日本語環境では P4CHARSET を eucjp または shiftjis に設定し、 ヨーロッパの環境では P4CHARSET を iso8859-1 に設定します。 【UNICODEファイルタイプ】 “unicode”ファイルタイプのファイルは、ディポに UTF-8 で保存されます。 PERFORCE クライアントでは、P4CHARSET 環境変数を使用することで、 “unicode”ファイルの UTF-8 のデータをローカルの文字セットに変換する方 法が決定されます。“unicode”タイプのファイルのみが変換されます。それ 以外のファイルタイプのファイルを保存/取得する際には P4CHARSET の設定 は無視されます。 ファイルをディポに初めてサブミットするときに、PERFORCE はファイル内容 の一部(現時点では先頭の 8192 バイト)に基づいてファイルタイプを判断し ます。 P4CHARSET が設定されていない場合: デフォルトでは、ファイルの先頭部分に最上位ビットが1に設定されてい る文字があるかどうかに応じて、ファイルに“text”または“binary”タ イプが割り当てられます。これが、国際語モードでないPERFORCEのデフォ ルトの動作です。 P4CHARSET が設定されている場合: 非印字文字が検出された場合、ファイルには“binary”タイプが割り当て られます。非印字文字がなく、high-ASCII 文字が存在し、かつ、 P4CHARSET で指定されている文字セットによる変換が可能な場合は、ファ イルは“unicode”タイプとみなされます。その他の場合、ファイルは “text”タイプとして管理されます。(つまり、high-ASCII キャラクタ が存在しないテキストファイルおよび P4CHARSET で指定されている文字 セットでは定義されていない high-ASCII キャラクタが存在するファイル の双方が“text”タイプとなります。) ※注意 上記の機能により、同じ拡張子(例えば .c ファイル)でも、ファイル内 の日本語コメントの有無に応じて、異なるファイルタイプで登録されます。 日本語コメントの有無にかかわらずファイルタイプを統一する場合には、 次の「PERFORCE のファイルタイプ検出機能を使用しないようにするには:」 で説明されている p4 typemap をご利用ください。 PERFORCE のファイルタイプ検出機能を使用しないようにするには: コマンドラインで、“p4 add -t unicode file.txt”というようにファイ ルタイプを指定します。   または、 p4 typemap コマンドを使用することで、ファイルの拡張子に基づいて PERFORCE のファイルタイプを割り当てることができます。たとえば、 次 の表ではテキストファイルと cpp ファイルに“unicode”ファイルタイプ を、 PDF ファイルに“binary”ファイルタイプを割り当てます。 Typemap: unicode //....txt unicode //....cpp binary //....pdf typemap 機能の詳細につきましては、「PERFORCEシステム管理者ガイド」 または「コマンド・リファレンス」の“p4 typemap”のページをご参照く ださい。 【UTF16 ファイルタイプ】 "utf16" タイプのファイルは、UTF-8 でディポに格納されます。これらのファ イルはクライアント・ワークスペース内でのみ utf16 になります。 p4 diff、p4 annotate などファイルの内容を出力するコマンドでは、Unicode モードでは UTF-16 の内容と非 UTF-16 の内容とを混在させるのではなく、 UTF-16 ファイルから P4CHARSET への変換を試みます。 "p4 print" に "-o" を付けるとファイルは UTF-16 で書き込まれ、"-o" を付けない場合はその出力 を P4CHARSET に変換しようとします。 ファイルを追加する際、P4CHARSET が utf16 エンコーディングに設定されて いる場合でも、UTF-16 ファイルは "unicode" ファイルタイプで保存するより "utf16" ファイルタイプで保存する方が好適です。これにより、UTF16 ファ イルを他の文字セットと共に存在させることができます。タイプの自動検出を 行うには、BOM がファイルの始めに存在している必要があります。BOM のない ファイルはクライアント・バイト順であると想定されます。utf16 ファイルが 'p4 sync' コマンドなどでクライアントに書き込まれる場合、BOM を付けて クライアント・バイト順で書き込まれます。 【ファイルの差分】 2つのファイルを比較する p4 diff2 コマンドは、text またはunicode タイ プのファイルについて、同一のファイルタイプをもつファイル間の比較のみ実 行できます。text ファイルと unicode ファイルとを比較することはできませ ん。 【“CANNOT TRANSLATE”エラーメッセージ】 このメッセージは、PERFORCE サーバから送られた情報がクライアントのホス トに設定されている文字セットには対応していない場合に表示されます。この クライアント・ホストでは、対応されない文字は表示されません。 たとえば、クライアントのホストがシフト JIS を使用するように設定されて いるとします。ディポに保存されているファイルの名前にシフト JIS へのマ ッピングが存在しない EUC の文字が使用されている場合、このファイルに対 する p4 files コマンドや p4 changes コマンドの実行時に “Cannot translate...”エラーが表示されます。 変換時のエラーを防ぐために、次の PERFORCE のデータにはマッピングのない 文字(シフト JIS へのマッピングがない EUC の文字)の使用を避けてくださ い。 - ユーザ名、ユーザ仕様 - クライアント名、クライアント仕様 - ジョブ - ファイル名 ファイル転送中に変換が失敗した場合、変換が失敗した場所付近の行番号が 報告されます。 【Unicode識別子の長さの制限】 PERFORCE サーバでは、ジョブ説明の索引付け、ファイル名の指定、ビュー・ マッピングの制御、クライアント名/ラベル名およびその他のオブジェクトの 識別に使用する文字列の長さが内部的に制限されています。 最も一般的な制限は1024 バイトです。Unicode文字の中には複数バイトに拡 張可能なものもあるため、特定の Unicode エントリがPERFORCE内部の制限 を超える場合があります。 3バイトを超えて拡張する基本 Unicode 文字は存在しないため、PERFORCE 内 部制限を3で割ればUnicodeシーケンスが制限を超えないようにすることがで きます。 Unicode シーケンスがPERFORCEの制限を超えないようにするため、341 Unicode 文字を超えるクライアント名またはビュー・パターンを作成しない でください。 通常の使用環境では、これが大きな制約となることはありません。 【エラーおよび情報メッセージのローカライズ】 PERFORCE が持つエラーおよび情報メッセージは、国際語化されました。これに よって、翻訳が行われていれば、メッセージを自国語で読むことができるよう になります。 P4LANGUAGE が設定されていない場合: これがデフォルトです。すべてのメッセージ(情報およびエラー)は、 英語で出力されます。 P4LANGUAGE が設定されている場合: ローカライズが行われており、あなたのサイトのシステム管理者が、 PERFORCE のデータベースに言語指定のメッセージをロードしていると、 P4LANGUAGE を設定することによって自国語のメッセージが有効になり ます。 例えば、P4LANGUAGE を "sjis" に設定すると、メッセージは日本語 (Shift-JIS)になります。 注:GUI クライアント P4V の振る舞いを正しい状態にするため、2007.2 以降 では、日本語メッセージファイルの提供を中止しております。 【日本語使用上の注意点】 以下、日本語をご使用いただく際の注意点をご紹介します。 1. 英語のまま表示されるメッセージ 以下の項目につきましては、英語のままで表示されます。ご了承ください。 a. p4d コマンド、p4 コマンドの実行結果およびエラーメッセージ b. P4Win 上で表示される一部のエラーメッセージ c. フォーム上のフィールド名 ただし、P4LANGUAGE が設定されている場合、a. および b. のメッセージに関 して、そのほとんどは日本語で表示することが可能となります。 (一部のメッセージにつきましては、技術的な理由により英語メッセージのま まとなります。ご了承ください。) 2. 日本語を使用できる箇所 以下の箇所に日本語を使用することができます。 - 各オブジェクト名(ラベル、ブランチ仕様、クライアント仕様、ユーザ、ジ ョブ、ビューパターン) - 各オブジェクトのフォーム内のコメント - 登録ファイルパス名 - 登録ファイルの内容(中身) 3. 日本語使用の際の制限事項 各種マニュアルに記載されている制限事項とは別に、日本語をご使用になられ る際に以下の制限があります。 - オブジェクト名は341文字以下で指定してください。 - 各オブジェクトのフォームの Description に入力する際には、 1行が長く なりすぎないよう、適宜改行を入れてください。 - 登録するファイルの名前に使用できる文字数は、OS に依存します。 4. ジョブの検索 ジョブに対し、日本語をキーワードとして検索することは可能です。特定のキ ーワードを含むジョブを検索する場合には、キーワードの前後に「*」を付加 してください。 例1: Owner が「東陽」で Description に「表示」を含むジョブの検索 p4 jobs -e 'Owner=東陽 Description=*表示*' 例2: フィールドを問わず「東陽」を含むジョブの検索 p4 jobs -e '*東陽*' 5. 文字コードに関する問題点 国際語対応モードでご使用になる場合、リポジトリ内の情報は UTF-8 で管理 されます。シフトJIS、EUC、UTF-8 との間のマッピングに依存する問題として 次の項目がありますので、ご注意ください。 - EUC に定義されている文字で、シフトJISに定義されていない文字を 入力し た場合、Windows 上での操作時にエラーが発生する可能性があります。 - UTF-8 の1コードが 2つの EUC 文字コードに対応する文字について、 登録 時と同期実行時で表示が異なる場合があります。 6. コマンド実行時に表示される文字数 "p4 changes" "p4 jobs" 等のコマンドでは、"-l" オプションを指定しない場 合 Description の先頭の 30 文字のみが表示されます。この文字数は、文字 のバイト数に関わらず、1つの文字が1文字と数えられます。 7. text ファイルタイプと unicode ファイルタイプの混在について text ファイルタイプのファイルと unicode ファイルタイプのファイルとの間 の integrate (反映、マージ)操作はサポートされておりません。このよう な操作を行わないようにご注意ください。 なお、ファイルを text タイプから unicode タイプに変換する、または unicode タイプから text タイプに変換するような操作もできるだけ避けてく ださい。特に、ファイル登録時に日本語が含まれていないファイルには、自動 的に text ファイルタイプが割り当てられます。このようなファイルに後に日 本語の文字を入力しても、ファイルタイプは text のままとなりますので注意 が必要です。 8. ホスト名 ホスト名が日本語であるマシンを、PERFORCE サーバとして使用することはで きませんのでご注意ください。PERFORCE のクライアントとして使用するホス トが日本語の名前を持つ場合は、P4HOST 環境変数に ASCII のホスト名を設定 してください。 管理者への注意 -------------------------------------------------- PERFORCE サーバは国際語対応モードと国際語非対応モードのどちらでも動作 します。2001.2 では、前述のように“p4d -xi”を実行することで、国際語対 応モードになります。 2001.2 以降の PERFORCE クライアント・プログラムのみが、国際語対応サー バと通信できます。その際、クライアントでは P4CHARSET が設定されている 必要があります。 一度運用を開始しましたら、国際語対応モードから国際語非対応モードへの変 更、または、国際語非対応モードから国際語対応モードへの変更はできません のでご注意ください。 コマンドライン・クライアント("p4")は、P4CHARSET をオーバライドする新 しいグローバル・オプションを持ちます。例えば、: p4 -C winansi files //... を実行すると、ディポ内のすべてのファイルが出力されますが、その出力は winansi に翻訳されます。 【PERFORCEサーバが持つメッセージの日本語化の手順】 注:GUI クライアント P4V の振る舞いを正しい状態にするため、2007.2 以降 では、日本語メッセージファイルの提供を中止しております。 Windowsの場合: PERFORCE をご購入いただいたお客様には、東陽テクニカからインストーラとは 別に日本語メッセージ・ファイル(msg_jp.txt)が提供されます。 この msg_jp.txt を用いて、次のように実行します。 p4d -r <サーバルートのパス> -jr msg_jp.txt サーバルートは、デフォルトでは PERFORCE のインストール・ディレクトリと なります。サーバルート・ディレクトリがどこであるかは、'p4 info' コマン ドでご確認いただけます。このコマンドを実行したときに "Server root:" の 後に続けて表示されるパスです。 ユーザは、日本語メッセージを出力させるために、適切な言語コードを設定し なければなりません。Windows の場合は、環境変数 P4LANGUAGE を "sjis" に 設定します。 UNIXの場合: PERFORCE をご購入いただいたお客様には、東陽テクニカから tar.gz ファイル とは別に日本語メッセージ・ファイル(msg_jp.txt)が提供されます。 この msg_jp.txt を用いて、次のように実行します。 なお、このメッセージファイルは、ロケールが EUC であっても Shift-JIS で あっても対応できます。 p4d -r <サーバルートのパス> -jr msg_jp.txt サーバルートは、デフォルトでは PERFORCE のインストール・ディレクトリと なります。サーバルート・ディレクトリがどこであるかは、'p4 info' コマン ドでご確認いただけます。このコマンドを実行したときに "Server root:" の 後に続けて表示されるパスです。 ユーザは、日本語メッセージを出力させるために、適切な言語コードを設定し なければなりません。UNIX(EUC)の場合は環境変数 P4LANGUAGE を "euc" に 設定し、UNIX(Shift-JIS)の場合は環境変数 P4LANGUAGE を "sjis" に設定し ます。 【2006.2/112639 (初回リリース)以降のバグ修正】 #114374 * p4dをUnicodeモードで起動していて、p4コマンドラインでP4CHARSETがワイド 文字セット (すなわちutf16)に設定されており、P4COMMANDCHARSET がutf8 以外の文字セットに設定されている場合、仕様を編集するp4コマンドはそれ らの仕様を P4COMMANDCHARSET ではなく utf8 として解釈していました。 これは修正されました。 (Bug #23004) 【2005.2/91006 (初回リリース)以降の変更箇所】  #91576 * 以下の文字コード・マッピングは、新しい規定にさらに適合させ、可能な箇所 では一貫して'fullwidth'文字コードを使用するよう変更されました。 (Bug #19817) shiftjis eucjp 新 旧 新 旧 コード コード unicode unicode 説明 説明 8160 A1C1 U+FF5E U+301C FULLWIDTH TILDE WAVE DASH 8161 A1C2 U+2225 U+2016 PARALLEL TO DOUBLE VERTICAL LINE 817C A1DD U+FF0D U+2212 FULLWIDTH HYPHEN-MINUS MINUS SIGN 8191 A1F1 U+FFE0 U+00A2 FULLWIDTH CENT SIGN CENT SIGN 8192 A1F2 U+FFE1 U+00A3 FULLWIDTH POUND SIGN POUND SIGN $Id: //depot/r08.1/p4-doc/user/i18nnotes.txt#2 $