Helix バージョニングエンジン P4D および Helix クライアント・アプリケーション 国際語モードに関する注意(2020.1) はじめに -------- Helix クライアントとサーバは、すべてのメタデータと一部のファイルの内容を、 サーバ上では UTF-8 形式の文字コードセットを使用して保存し、クライアント上 では他の形式の文字コードセットに変換する、という国際語モードをサポートし ます。国際語モードは、Windows 版インストーラを使用してインストールした場 合はデフォルトで設定されますが、UNIX に p4d および p4 を格納した場合には 設定されません。 国際語モードを適用すると、ファイルの内容以外のすべてのデータ(識別子、コ メント等)およびすべての“unicode”型のファイルタイプのファイルの内容につ いて、クライアント側での環境変数 P4CHARSET で指定された文字コードセットと サーバ側での UTF-8 文字コードセットとの間で変換が行われます。 -------------------------------------------------------------------------- サーバの構成 ------------ 国際語モードの環境(複数バイト文字の入出力を行う)で Perforce 運用するた めには、使用するサーバをあらかじめ国際語モードに設定する必要があります。 サーバを国際語モードで使用する方法は、以下のとおりです。 1. “p4d -xi”を実行します このコマンドでは、サーバ下の既存のすべてのメタデータが正しい UTF-8 である ことを検証し、プロテクトされたカウンタ“unicode”を設定のうえ、それ以降 実行される p4d が国際語モードで動作するようにします。 (“p4d -xi”で実行された“p4d”プロセスは Perforce サーバを起動しません。 それ以降に実行される p4d が国際語モードで動作するように設定します。一旦“p4d -xi”を実行した後に p4d を必要に応じてオプションを付けて起動してください。) サーバが国際語モードで起動されている場合、すべてのユーザは環境変数 P4CHARSET を設定しなくてはなりません。 一度、国際語対応モードで運用開始すると、このモードを無効にすることはでき ません (すなわち、非国際語対応モードに戻すことができません)。 -------------------------------------------------------------------------- クライアントの構成 ------------------ 2014.2 現在、P4CHARSET 環境変数が必要とされることはありません。 unicode モードのサーバを検知する必要のあるクライアントを回避するため P4CHARSET が設定されることがあります。これが設定されていない場合、クライ アントは 'P4__CHARSET' の書式で環境変数を設定することによって、 unicode モードを検出および記憶します。詳細については、2014.2 のサーバリリー スノートやドキュメントを参照してください。 P4CHARSET の値が 'auto' の場合、クライアントは OS 固有のチェックを行い使 用すべき文字セットを判断します。 次の表はサポートされている文字セットとプラットフォームおよび、それに対す る P4CHARSET の推奨値を示しています。 言語 プラット Windows Unix P4CHARSET フォーム コードページ LOCALE 設定 -------------------------------------------------------------------------- 日本語 Windows 932 n/a shiftjis 日本語 UNIX n/a OS 依存(EUC) eucjp 日本語 UNIX n/a OS 依存(SJIS) shiftjis Chinese すべて 936 OS 依存 cp936 Chinese すべて 950 OS 依存 cp950 Korean すべて 949 OS 依存 cp949 High-ASCII Windows 1252 n/a winansi High-ASCII Windows 1250 n/a cp1250 High-ASCII Windows 850 n/a cp850 High-ASCII Windows 852 n/a cp852 High-ASCII Windows 858 n/a cp858 High-ASCII Windows 437 n/a winoem High-ASCII UNIX n/a OS 依存 iso8859-1 High-ASCII UNIX n/a OS 依存 iso8859-2 High-ASCII UNIX n/a OS 依存 iso8859-15 High-ASCII MacOS n/a OS 依存 macosroman 変換しない すべて n/a n/a utf8* Cyrillic すべて n/a OS 依存 iso8859-5 Cyrillic すべて n/a OS 依存 koi-r Cyrillic すべて 1251 n/a cp1251 Greek Windows 1253 n/a cp1253 Greek UNIX n/a n/a iso8859-7 すべて すべて 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) -------------------------- 1. Windows にログインし MS-DOS コマンドプロンプトを起動します。 2. chcp ("CHangeCodePage") コマンドを引数なしで実行し、現在のコードペー ジの設定を確認します。 3. 次のようなメッセージが表示されます。 現在のコード ページ: 932 4. 現在設定されているコードページにしたがって、次のように文字セットを設定 します。 コードページ P4CHARSET の設定 --------------------------------- 1252 winansi 932 shiftjis 949 cp949 1250 cp1250 1251 cp1251 850 cp850 852 cp852 858 cp858 437 winoem 1253 cp1253 P4CHARSET をこのホスト上のすべてのユーザに対して設定するには、次のコ マンドを実行します。このコマンドを実行するには管理者権限が必要です。 p4 set -s P4CHARSET=[character_set] 管理者権限がない場合は、次のコマンドを実行してください。 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”タイプとなりま す)。 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 を "ja" に設定すると、メッセージは日本語になり ます。 -------------------------------------------------------------------------- 日本語使用上の注意点 -------------------- 以下、日本語をご使用いただく際の注意点をご紹介します。 1. 英語のまま表示されるメッセージ 以下の項目につきましては、英語のままで表示されます。ご了承ください。 a. p4d コマンド、p4 コマンドの実行結果およびエラーメッセージ b. P4V 上で表示される一部のエラーメッセージ 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サーバが持つメッセージの日本語化の手順 ----------------------------------------------- Windowsの場合: Perforce をご購入いただいたお客様は、インストーラとは別に、東陽テクニカか ら日本語メッセージ・ファイル(msg_ja.txt)を入手できます。この msg_ja.txt を用いて、次のように実行します。 p4d -r <サーバルートのパス> -jr msg_ja.txt サーバルートは、デフォルトでは "C:\Program Files\Perforce\Server" となり ます。サーバルート・ディレクトリがどこであるかは、'p4 info' コマンドでご 確認いただけます。このコマンドを実行したときに "Server root:" の後に続け て表示されるパスです。 ユーザは、日本語メッセージを出力させるために、適切な言語コードを設定しな ければなりません。日本語 Windows の場合は、環境変数 P4LANGUAGE を "ja" に 設定します。 UNIX 系 OS の場合: Perforce をご購入いただいたお客様は、tar.gz 等のファイルとは別に、東陽テ クニカから日本語メッセージ・ファイル(msg_ja.txt)を入手できます。この msg_ja.txt を用いて、次のように実行します。なお、このメッセージファイルは、 ロケールが EUC であっても UTF-8 であっても対応できます。 p4d -r <サーバルートのパス> -jr msg_ja.txt サーバルートは、デフォルトでは Perforce のインストール・ディレクトリとな ります。サーバルート・ディレクトリがどこであるかは、'p4 info' コマンドで ご確認いただけます。このコマンドを実行したときに "Server root:" の後に続 けて表示されるパスです。 ユーザは、日本語メッセージを出力させるために、適切な言語コードを設定しな ければなりません。ロケールが EUC であっても UTF-8 であっても、日本語 UNIX 系 OS の場合、環境変数 P4LANGUAGE を "ja" に設定します。 -------------------------------------------------------------------------- 【2017.2 で新たに実装された機能はありません】