この章では、本マニュアルを読み進むに当たって必要、または知っていると便利な概念について説明し、関連マニュアルを紹介します。
国際化とは、単一のソフトウェアを最小限のコストで各地域向けに適応させるように設計・実装する手法をいいます。国際化されたプログラムは、特定の国家・地域に依存しない共通の枠組みだけで実装され、次項で説明する「言語対応化」と呼ばれる作業を行うことで、容易に各地域に適合したソフトウェア製品となります。言語対応化とは、国際化されたプログラムに対し特定地域向けに固有の言語情報や文化情報を付加する作業をいいます。
『JFP ユーザーズガイド』の第 1 章では、Solaris における言語対応化の一つとして Japanese Feature Package (以降「JFP」と記述) がどのような日本語化機能を提供しているかを紹介していますので、併せて参照してください。
言語対応化したソフトウェアを使用する場合、ユーザーは環境変数を設定します。これにより、ソフトウェアはメッセージや日付、時刻といった情報を各地域・各文化に適合させて動作します。環境変数を用いることでユーザーはソフトウェアの動作形式を制御できます。どのような環境変数が存在し、どのような制御ができるかについては setlocale(3C) および environ(5) のマニュアルページを参照してください。
さまざまな標準化機関が国際化ソフトウェア開発のための仕様・ガイドラインを提供しています。本マニュアルで説明する実例は、基本的に X/Open で規定される CAE 仕様に準拠しています。なお、主として従来の Solaris リリースとの互換性を保つために、実際の動作において XPG で規定された仕様に、厳密には従わない可能性があります。 XPG での仕様に厳密に準拠した動作を行うアプリケーションを作成する場合は、standards(5) マニュアルページに記載されている手順にしたがってコンパイルおよびリンクを行なってください。また、各リリース毎に対応するXPG のバージョンに関しても standards (5) マニュアルペーを参照してください。
言語対応化を行う際に、その地域で使用される文字集合を文字コードとして表現できるようにすることは重要です。しかし、日本などアジア系の地域では使用される文字の数が多いために、すべての文字を表現するには、文字コードを格納するために複数バイト必要です。Solaris 2.5 までは、Extended UNIX Code (以降「EUC」と記述) と呼ばれるコード体系を採用してこの問題を解決しています。EUC では最大 4 種の文字集合を取り扱うことができ、そのうちの 3 種までは複数バイトの文字集合を割り当てることができます。
『JFP ユーザーズガイド』の第 2 章では、ja ロケールにおける日本語 EUC の定義および文字集合について紹介しています。
国際化のための基となる文字コード体系に EUC を採用した場合、EUC とは異なる文字コード体系を用いて言語対応化することは原則としてできません。したがって、Solaris 2.5.1 以降では、システムから EUC に依存する部分を取り除き、 X/Open での仕様を基にした特定の文字コード体系に依存しない機構 (これを Code Set Independence と呼び、以降(「CSI」と記述) を導入することで解決しました。CSI の下では、EUC も文字コード体系の 1 種として扱われます。
JFP では、CSI を利用することで Solaris 2.5.1 以降で「PCK」を、Solaris 2.7 以降では UTP-8 をサポートしています。
『JFP ユーザーズガイド』の第 2 章では、ja_JP.PCK ロケール における PCK、ja_JP.UTF-8 ロケールにおける UTP-8 の定義および文字集合について紹介しています。
Solaris では大別して 2 種類の日本語ロケール情報を提供しています。1 つは国際化されたプログラムを支援する言語対応化の一つである日本語固有の言語情報と文化情報です。これらは標準化された国際化プログラミングの枠組みを介してアクセスすることができます。この枠組みに則って処理を行う限り、アプリケーションは高い移植性を保ったまま日本語化が行えます。
一方、Solaris で提供する日本語ロケール情報には、国際化の枠組みの中で日本語化を補う付加的な情報も含まれます。これらを利用すると日本語に固有な文字分類や文字対応などの処理が簡単に行える反面、同様の情報を持たない Solaris 以外の環境においてアプリケーションが実行できなくなる可能性があります。こうした付加的な情報を利用するインタフェースについては、第 3 章「日本語ロケールと文字分類」の中の「日本語 Solaris で拡張されたインタフェース名」で紹介しています。