JFP ユーザーズガイド

パート I JFP - SunOS

第 1 章 JFP の概要

この章では Japanese Feature Package (以降、JFP とします) の位置づけなどを紹介し、JFP の提供する機能について SunOS を中心に説明します。Solaris CDE および日本語 OpenWindows の機能については、Part 2 - 「JFP - GUI」を参照してください。

JFP とは

JFP は、Solaris で日本語機能を使用するための追加パッケージであり、SunOS と Solaris CDE、OpenWindows 用の日本語サポート機能を含みます。JFP は国際化された SunOS、Solaris CDE、OpenWindows とともに Solaris を構成します。

各国語対応と日本語対応

システムのソフトウェアおよびアプリケーションを特定の言語や文化、慣習 (これらをまとめてロケール (locale) と呼びます) に適応させることを、このマニュアルでは各国語対応 (localization) と呼ぶことにします。日本語および日本の文化、慣習を対象とした各国語対応が日本語対応です。各国語対応の要求はさまざまですが、そのある部分は言語に依存しない共通の枠組みで処理でき、またある部分は特定の言語専用の機能を必要とします。

国際化

各国語対応のために利用できる共通の枠組みを提供することを国際化 (internationalization) と呼びます。システムおよびアプリケーションを国際化することにより、複数の言語に対する各国語対応が、より簡単かつ統一された方法で実現できます。

CSI (Code Set Independence)

エンコーディングに依存しない国際化機構を、CSI (Code Set Independence) 化された国際機構と呼びます。国際化機構が CSI 化されたことにより、日本語 EUC (Extended Unix Code) を扱う ja ロケールに加え、PC 漢字コードを扱う ja_JP.PCK ロケール、UTF-8 コードを扱う ja_JP.UTF-8 ロケールがサポートされます。ただし、現時点では、対応するコマンドやライブラリなどに制限があります。CSI 化されたコマンドやライブラリなどに関しては、『プログラミングの国際化』を参照してください。

JFP の位置づけ

JFP は国際化された SunOS と Solaris CDE および OpenWindows に対して日本語のための各国語化機能を提供します。

JFP がインストールされていることの確認方法

JFP は、SUNWjfpr、SUNWjfpu などのパッケージと呼ばれるインストールの単位の集合からなります。JFP のパッケージがシステム上に存在するかどうかは、pkginfo(1) コマンドを使って調べることができます。たとえば、grep(1) コマンドを併用して次のように入力してください。

sun% pkginfo | grep SUNWjfp
     :
system      SUNWjfpr       Japanese Feature Package root files
system      SUNWjfpu       Japanese Feature Package user files
     :
     :

「ご使用にあたって」の付録に JFP パッケージの一覧が掲載されていますので、特定の使いたい機能がインストールされているかどうかこの付録を参照してパッケージ名を調べてから pkginfo で確認してください。

日本語ロケール

JFP では、システム提供の日本語ロケールとして、日本語 EUC を扱う ja ロケール、PC 漢字コードを扱う ja_JP.PCK ロケールおよび UTF-8 を扱う ja_JP.UTF-8 ロケールを提供します。 また、日本語 Solaris 1.1.x システムとのネットワーク環境での共存のため 「japanese」というロケール名も ja と同等のロケールを提供します。日本語ロケールの定義内容の詳細は、第 2 章「日本語ロケール」を参照してください。

日本語化された SunOS メッセージ

JFP は、メッセージの国際化機能を利用して、日本語化されたメッセージカタログを提供しています。ただし、SunOS が提供しているすべてのコマンド、ライブラリが、メッセージの国際化を行なっているわけではありません。それらのメッセージは日本語環境においても英語で表示されます。

日本語環境用 SunOS のコマンド

SunOS 5.x で国際化されたコマンドに加えて、JFP では日本語環境をサポートするために以下の SunOS コマンドを提供します。これらのコマンドの使用法に関しては、第 6 章「日本語環境用 SunOS コマンド」および各コマンドのマニュアルページを参照してください。

表 1-1 JFP 日本語環境用コマンド
/usr/bin/
   euctoibmj	日本語 EUC から IBM 本語コードへのコード変換フィルタ
   evftobdf		evfont と BDF の間のフォントフォーマット変換コマンド
   euctojis		日本語 EUC から JIS コードへのコード変換フィルタ
   euctosj		日本語 EUC から PC 漢字 (シフト JIS) コードへのコード変換フィルタ
   evftobdf		SunViewTM で使用していた evfont を BDF フォントに変換 (SPARCTM のみ)
   ibmjtoeuc	IBM 漢字コードから日本語 EUC へのコード変換フィルタ
   jistoeuc		JIS コードから日本語 EUC へのコード変換フィルタ
   jistosj		JIS コードから PC 漢字コードへのコード変換フィルタ
   jtops			PostScriptTM プリンタに日本語テキストを出力するためのフィルタ
   jtty			日本語端末用 STREAMS モジュールの制御コマンド
   kanji			JIS X0208、JIS X0212、およびベンダー定義文字の文字コード一覧表示
   sjtoeuc		PC 漢字コードから日本語 EUC へのコード変換フィルタ
   sjtojis		PC 漢字コードから JIS コードへのコード変換フィルタ

また、JFP は、SunOS の国際化されたコマンドを拡張した、以下のコマンドを提供します。これらのコマンドの使用法に関しては、第 5 章「国際化 SunOS コマンドの利用」第 6 章「日本語環境用 SunOS コマンド」、および各コマンドのマニュアルページを参照してください。

表 1-2 国際化拡張コマンド
/usr/bin/
    setterm  コードセット変換用 STREAMS モジュールの構成用コマンド
/usr/SUNWale/bin/
    mailx		複数バイト言語用国際化のために拡張された mailx
    talk		複数バイト言語用国際化のために拡張された talk
/usr/SUNWale/sbin/
    in.comsat	複数バイト言語用国際化のために拡張された in.comsat


注 -

mailxtalk、および install_comsat は、ja ロケールでのみ動作が保証されています。


iconv コード変換機能用の日本語モジュール

JFP では、国際化 SunOS で提供されているコード変換機能 iconv の日本語コードセットのサポートとして、この機能で使用する日本語モジュールを提供します。「日本語環境用 SunOS のコマンド」で紹介している、euctosjsjtojis などのコード変換はベンダー定義文字やユーザー定義文字の変換をサポートしていないため、これらの定義文字を含めた変換を考慮する場合は、iconv を使用してください。コード変換機能 iconv(1) の使用法に関しては、第 6 章「日本語環境用 SunOS コマンド」を、iconv(3) の使用法に関しては、『JFP 開発ガイド』を参照してください。

STREAMS モジュールによる端末用コード変換

JFP は、各種日本語端末からの tty ベースの入出力に対して、コードセット変換を行う STREAMS モジュール群を提供します。

日本語端末から STREAMS モジュールを使用するときには、国際化された SunOS コマンドとして提供されている setterm(1) を使用します。STREAMS モジュールの使用法に関しては、第 6 章「日本語環境用 SunOS コマンド」および各コマンドのマニュアルページを参照してください。

日本語プリンタのサポート

JFP では、LP 印刷サービスを使用してドットマトリックス漢字プリンタ (EPSON VP-5085、 NEC PC-PR201)、日本語ページプリンタ (Canon LASERSHOT)、日本語 PostScript プリンタで日本語テキストを印刷するために、これらの変換フィルタ群を提供します。日本語プリンタの使用法に関しては、第 4 章「日本語対応 SunOS のシステム環境設定」を参照してください。

日本語入力機能

JFP では、Wnn6、ATOK8、および cs00 により実現される日本語入力機能を提供しています。詳細は、『日本語入力システムの概要とセットアップ』、『Wnn6 ユーザーズガイド』、『ATOK8 ユーザーズガイド』、および『cs00 ユーザーズガイド』を参照してください。

日本語キーボードのサポート

JFP では、次の日本語キーボードをサポートしています。

表 1-3 日本語キーボードのサポート

プロセッサの種類 

キーボードの種類 

SPARC 

日本語タイプ 4 キーボード 

日本語タイプ 5 キーボード 

x86 

106 キーボード 

J3100 キーボード 

日本語オンラインマニュアル

JFP では、日本語のオンラインマニュアルを提供しています。ただし、すべてのオンラインマニュアルが日本語化されているわけではありません。

JLE バイナリ互換性サポートパッケージ

JEP では、JLE システム上作成されたアプリケーションを動作させるために、JLE バイナリ互換性サポートパッケージを提供しています。バイナリ互換性パッケージの一般的な注意事項および使用条件に関しては、「バイナリ互換性ガイド」を参照して下さい。以下にパッケージ固有の注意事項を示します。

第 2 章 日本語ロケール

この章では、JFP で提供している日本語ロケールの定義内容に関して説明します。

日本語文字コード

日本語 EUC

日本語 EUC は、EUC (Extended UNIX Code : 拡張 UNIX コード) に、以下の日本語文字集合を割り当てた文字集合およびエンコーディングを提供するものです。ja ロケールで日本語を表現する文字コード体系として使われています。

表 2-1 日本語 EUC の文字集合

文字集合 (符号化文字集合) 

文字コード 

JIS X 0201-1976 

   機能キャラクタ集合 

   間隔文字 

   ローマ文字用図形キャラクタ集合 

   抹消文字 

0x00 - 0x19 

0x20 

0x21 - 0x7e 

0x7f 

ISO 6429 C1 制御文字 (0x8e、0x8f を除く) 

0x80 - 0x9f 

JIS X 0201-1976 片仮名用図形キャラクタ集合 

    (文字未定義領域 E/0 - F/14 は含まない) 

0x8ea1 - 0x8edf 

JIS X 0208-1990 (1 - 84 区) 

0xa1a1 - 0xf4fe 

JIS X 0212-1990 (1 - 84 区) 

0x8fa1a1 - 0x8ff4fe 

ユーザー定義文字 (1 - 20 区) 

0xf5a1 - 0xfefe 

0x8ff5a1 - 0x8ffefe 

ただし、JIS で未定義となっている以下の領域には、ベンダー定義文字を割り当てています。

JIS X 0208 13 区 

特殊記号 

JIS X 0212 83 区 - 84 区 

JIS X 0212 に含まれない IBM 拡張文字 

日本語 EUC の場合、ベンダー定義文字とは、JIS X 0208 13 区文字未定義領域に割り当てられた特殊記号、ならびに JIS X 0212 83 区 - 84 区文字未定義領域に割り当てられた JIS X 0208 と JIS X 0212 のどちらにも含まれない IBM 拡張文字を表します。

PC 漢字コード

PC 漢字コード (以降、PCK とします) は一般に「シフト JIS (あるいは MS 漢字) コード」と呼ばれ、Microsoft が Windows 3.1 で規定したマイクロソフト標準キャラクタセットと同等の文字集合およびエンコーディングを提供するものです。ja_JP.PCK ロケールで日本語を表現する文字コード体系として使われています。

表 2-2 PCK の文字集合

文字集合 (符号化文字集合) 

文字コード 

JIS X 0201-1976 

   機能キャラクタ集合 

   間隔文字 

   ローマ文字用図形キャラクタ集合 

   抹消文字 

0x00 - 0x19 

0x20 

0x21 - 0x7e 

0x7f 

JIS X 0201-1976 片仮名用図形キャラクタ集合 

    (文字未定義領域 E/0 - F/14 は含まない) 

0xa1 - 0xdf 

JIS X 0208-1990 (1 - 84 区) 

0x8140 - 0x9ffc 

0xe040 - 0xeafc 

NEC 選定 IBM 拡張文字 

0xed40 - 0xeffc 

ユーザー定義文字 (1 - 20 区) 

0xf040 - 0xf9fc 

IBM 拡張文字 

0xfa40 - 0xfcfc 

ただし、JIS で未定義となっている以下の領域には、ベンダー定義文字を割り当てています。

JIS X 0208 13 区 

特殊記号 

PCK の場合、ベンダー定義文字とは、JIS X 0208 13 区文字未定義領域に割り当てられた特殊記号、NEC 選定 IBM 拡張文字、ならびに IBM 拡張文字を表します。

UTF-8

UTF-8 は、Unicode のエンコーディングの1つであり、ASCII 部分 (0x00-0x7F) に関しては EUC または PCK と互換性をたもったまま、UCS-2 や UCS-4 の文字を使えるようにしたエンコーディングです。ja_JP.UTF-8 ロケールで文字を表現する文字コード体系として使われています。

表 2-3 UTF-8 の文字集合

文字集合 (符号化文字集合) 

文字コード 

Unicode 2.1 

0x00 - 0xefbfbf (U+0000 - U+FFFF) 

ユーザー定義文字領域は Unicode 2.1 で Private Use area に割り当てられている 0xee8080 - 0xefa3bf (U+E000 - U+F8FF) が該当します。日本語 EUC や PCK で表現できるすべての文字(ベンダー定義文字も含む)も Unicode 2.1 の中に含まれています。


注 -

U+XXXX の XXXX は Unicode 2.1 で表現しているコードを意味します。



注 -

Unicode 2.1 で定義された Surrogate Area (U+D800 - U+DFFF) はサポートされてません。



注 -

Solaris のフォントの制限で、日本語 UTF-8 で Unicode 2.1 で定義されたすべての文字が表示できるわけではありません。


日本語ロケール

JFP では、システム提供の日本語ロケールとして、日本語 EUC を扱う ja ロケール、PCK を扱う ja_JP.PCK ロケールおよび UTF-8 を扱う Ja_JP.UTF-8 ロケールを提供します。また、JLE 1.x システムとのネットワーク環境での共存のため 「japanese」というロケール名も ja と同等のロケールとして提供します。

ロケールとは、特定の言語や文化、慣習のことを意味します。日本語ロケールデータベースを作成することによって、国際化されたシステムソフトウェアやアプリケーションを、ロケールを切り替えるだけで日本語環境に適応できます。

基本的に日本語ロケール間の違いは、扱う文字コードが異なるだけで、ロケールとしての挙動は同じになるように定義されています。たとえば、ja ロケールで print という文字分類クラスに属する文字は、 ja_JP.PCK や ja_JP.UTF-8 ロケールでも同じ文字が定義されています。ただし、日本語 EUC の方が PCK より、UTF-8 の方が日本語 EUC より扱う文字が多いので、UTF-8 にしか存在しない文字に関しては、ja_JP.UTF-8 ロケールのみ、その文字の挙動が定義されています。

文字分類 (LC_CTYPE カテゴリ)

特定の似かよった文字の集合 (クラスと呼びます) を作ることによって、プログラム上、そのクラスを意識するだけで (そのクラスにどの文字が含まれているかを意識することなく)、ロケールに依存しない国際化プログラミングが可能になります。日本語ロケールでは、以下のようなクラスが定義されています。

これらの文字分類クラスは、regex(5) をサポートしたコマンドで、文字クラス表現の文字列として使用可能です。また、wctype(3C) の文字クラスとしても使用可能です。なお、文字分類は LC_CTYPE カテゴリの値に影響を受けます。開発者として文字分類クラスを利用する場合は、『JFP 開発ガイド』を参照してください。

表 2-4 X/Open で規定された文字分類クラス名と日本語ロケールでの定義範囲

文字クラス名 

意味 / 範囲 [JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。]

upper

任意の大文字を表す文字クラス 

JIS X 0201 ローマ文字用図形キャラクタ集合 

 

アルファベット大文字 (C/1 - D/10) 

JIS X 0208 

 

ローマ字大文字 (3/33 - 3/58) 

ギリシャ文字大文字 (6/1 - 24) 

ロシア文字大文字 (7/1 - 33) 

JIS X 0212 [JIS X 0212 の文字に関しては、ja および ja_JP.UTF-8 ロケールのみ該当します。]

 

ダイアクリティカルマーク付きギリシャアルファベット文字大文字 (6/65 - 69、71、73、74、76) 

キリル系アルファベット大文字 (7/34 - 46) 

ラテン系アルファベット大文字 (9/1、2、4、6、8、9、11、12、13、15、16) 

ダイアクリティカルマーク付ラテン系アルファベット大文字 

(10/01 - 24、26 - 87) 

lower

任意の小文字を表す文字クラス 

JIS X 0201 ローマ文字用図形キャラクタ集合 

 

アルファベット小文字 (E/1 - F/10) 

JIS X 0208 

 

ローマ字小文字 (3/65 - 90) 

ギリシャ文字小文字 (6/33 - 56) 

ロシア文字小文字 (7/49 - 81) 

JIS X 02122

 

ダイアクリティカルマーク付きギリシャアルファベット文字小文字 (6/81 - 92) 

キリル系アルファベット小文字 (7/82 - 94) 

ラテン系アルファベット小文字 (9/33 - 48) 

ダイアクリティカルマーク付ラテン系アルファベット小文字 

(11/1 - 27、29 - 35、37 - 87) 

digit

10 進表現に用いる 0 - 9 までの数字を判別するクラス 

JIS X 0201 ローマ文字用図形キャラクタ集合 

 

 

数字 (B/0 - 9) 

space

空白を判別するクラス 

JIS X 0201 制御キャラクタ集合 

 

空白 (A/9 - 13) 

間隔文字 

 

JIS X 0208 

 

間隔 (1/1) 

punct

記号、特殊文字などを判別するクラス 

JIS X 0201 ローマ文字用図形キャラクタ集合 

 

 

A/1 - 15、B/10 - C/0、D/11 - E/0、F/11 - 14 

cntrl

制御文字を判別するクラス 

JIS X 0201 制御キャラクタ集合 

 

すべての文字 

抹消文字 

C1 制御文字 

 

 

すべての文字 

blank

 

フィールド区切り文字を判別するクラス 

JIS X 0201 制御キャラクタ集合 

 

A/9 

間隔文字 

JIS X 0208 

 

間隔 (1/1) 

xdigit

16 進表現に用いる英数字を判別するクラス 

JIS X 0201 ローマ文字用図形キャラクタ集合 

 

数字 (B/0 - 9) 

A - F、a - f (C/1 - 6、E/1 - 6) 

alpha

アルファベットを判別するクラス 

upper クラスと lower クラスの文字

print

表示可能文字を判別するクラス 

JIS X 0201 ローマ文字用図形キャラクタ集合 

間隔文字 

JIS X 0201 片仮名用図形キャラクタ集合 

 

文字未定義領域以外のすべての文字 

JIS X 0208 

 

文字未定義領域以外のすべての文字 

JIS X 02122

 

文字未定義領域以外のすべての文字 

ベンダー定義文字領域

 

vdc クラスのうち、文字未定義領域以外のすべての文字

ユーザー定義文字領域

 

udc クラスのうち、文字未定義領域も含むすべての文字  

graph

 

図形文字を判別するためのクラス 

print クラスから space クラスに含まれる文字を除いたすべての文字


注 -

ja_JP.UTF-8 ロケールではそれぞれのクラスで、これら以外のに Unicode で定義された文字が追加されています。


表 2-5 日本語ロケール専用の文字分類クラス名とその定義範囲

文字クラス名 

意味 / 範囲 [JIS X 0201 機能キャラクタ集合、ローマ文字用図形キャラクタ集合、片仮名用図形キャラクタ集合での XX/YY は XX 列 YY 行を意味します。JIS X 0208、JIS X 0212 での XX/YY は XX 区 YY 点を意味します。]

jkanji

漢字 (漢字表記のために使用する記号、表意文字) を判別するクラス 

JIS X 0208 

 

16 区 - 84 区の文字定義領域 

JIS X 0212 [JIS X 0212 の文字に関しては、ja および ja_JP.UTF-8 ロケールのみ該当します。]

 

16 区 - 77 区の文字定義領域 

jkata

片仮名を判別するクラス 

JIS X 0208 

 

5/1 - 86、1/11、12、19、20 

jhira

平仮名を判別するクラス 

JIS X 0208 

 

4/1 - 83、1/11、12、21、22、26 

jdigit

digit に含まれる以外の数字を判別するクラス

JIS X 0208 

 

3/16 - 25 

jparen

括弧などに用いるための文字を判別するクラス 

JIS X 0208 

 

1/38 - 59 

line

罫線素片を判別するためのクラス 

JIS X 0208 

 

8/1 - 32 

jisx0201r

JIS X 0201 片仮名用図形キャラクタ集合に属する文字を判別するクラス 

JIS X 0201 片仮名用図形キャラクタ集合 

 

A/1 - D/15 までのすべての文字 

jisx0208

JIS X 0208 に属する文字を判別するクラス 

JIS X 0208 

 

文字未定義領域の文字を含むすべての文字。 ただし、1 - 84 区まで  

(13 区 ベンダー定義文字領域もここに含まれる)

jisx0212

JIS X 02122 に属する文字を判別するクラス

JIS X 0212 

 

文字未定義領域の文字を含むすべての文字。ただし、1 - 84 区まで 

(83、84 区ベンダー定義文字領域もここに含まれる) 

ja_JP.PCK ロケールではどの文字もこのクラスに属さない 

udc

ユーザー定義文字を判別するクラス

ユーザー定義文字領域の文字未定義領域も含むすべての文字 

 

ja ロケール 

 

   ユーザー定義文字 (1 - 20 区)  

0xf5a1 - 0xfefe 

0x8ff5a1 - 0x8ffefe 

 

ja_JP.PCK ロケール 

 

   ユーザー定義文字 (1 - 20 区) 

 

ja_JP.UTF-8 ロケール 

 

   ユーザー定義文字 (6400 文字)  

0xee8080 - 0xefa3bf (U+E000 - U+F8FF) 

vdc

ベンダー定義文字を判別するクラス

ベンダー定義文字領域の文字未定義領域も含むすべての文字 

 

ja ロケール 

 

   JIS X 0208 13 区  

   JIS X 02122 83 区 - 84 区

特殊記号 

JIS X 0212 に含まれない IBM 拡張文字 

 

ja_JP.PCK ロケール 

 

   JIS X 0208 13 区  

   NEC 選定 IBM 拡張文字 

   IBM 拡張文字 

特殊記号 

0xed40 - 0xeffc 

0xfa40 - 0xfcfc 

 

ja_JP.UTF-8ロケール 

 

   定義なし  

 

jalpha

漢字を表す文字を判別するクラス 

 

JIS X 0208 

 

3/33_58,、 3/65_90 

 

jspecial

特殊文字を表す文字を判別するクラス 

JIS X 0208 

 

1/2 - 94、2/1 - 14、2/26 - 33、2/42 - 48、2/60 - 74、2/82 - 89、94 

JIS X 0212 

 

2/15 - 25、 2/34 - 36、 2/75 - 81 

JIS X 0208 13 区.....特殊記号 

IBM 拡張文字 

 

NEC 選定 IBM 拡張文字で定義される特殊文字 

jgreek

ギリシャ文字を判別するクラス 

JIS X 0208 

 

6/1 - 7/33,、6/33 - 56 

jrussian

ロシア文字を判別するクラス 

JIS X 0208 

 

7/1 - 7/33,、7/49 - 81 

junit

単位記号を判別するクラス 

JIS X 0208 

 

1/75 - 83, 2/82, 83 

JIS X 0212 

 

2/80 

jsci

学術記号を判別するクラス 

JIS X 0208 

 

1/60 - 74, 2/26 - 33, 2/42 - 48 

 

2/60 - 74 

jgen

一般記号を判別するクラス 

JIS X 0208 

 

1/84 - 94, 2/1-14,2/84-89, 94 

JIS X 0212 

 

2/35, 75, 2/79-81 

JIS X 0212 

 

2/35, 75, 2/79 - 81 

jpunct

一般記号を判別するクラス 

JIS X 0208 

 

1/2 - 37 

JIS X 0212 

 

2/34, 36 

文字の照合順序 (LC_COLLATE カテゴリ)

日本語文字の照合順序は、文字コード値の順になります。ただし、ja_JP.PCK ロケールの場合、JIS X 0201 片仮名用図形キャラクタ集合は、JIS X 0201 ローマ文字用図形キャラクタ集合、抹消文字の次になるように修正されています。文字の照合順序は、LC_COLLATE カテゴリの値に影響を受けます。

単語処理

JFP の提供する単語処理用共有オブジェクトは、単語処理用文字分類情報、詰め込み処理用単語分割・結合処理情報などをアプリケーションに供給します。これらの情報を利用するための API は今のところ公開されていません。

日付と時刻の表示形式 (LC_TIME カテゴリ)

SunOS および JFP における日本語の日付と時刻の表示形式は、以下のとおりです。

表 2-6 日付と時刻の表示形式

項目 (strftime(3C) での変換指定)

SunOS /JFP での定義 

月の名前の省略形 (%b)

1月 

2月 

3月 

4月 

5月 

6月 

7月 

8月 

9月 

10月 

11月 

12月 

月の名前 (%B) 

1月 

2月 

3月 

4月 

5月 

6月 

7月 

8月 

9月 

10月 

11月 

12月 

曜日の名前の省略形 (%a)

(日) 

 

(月) 

 

(火) 

 

(水) 

 

(木) 

 

(金) 

 

(土) 

曜日の名前 (%A)  

日曜日 

 

月曜日 

 

火曜日 

 

水曜日 

 

木曜日 

 

金曜日 

土曜日 

時刻 (%X)

%H時%M分%S秒 

日付 (%x)

%Y年%m月%d日 

日付/時刻 (%c)  

%Y年%m月%d日 %a %H時%M分%S秒 

午前/午後 (%p)

午前 

午後 

午前/午後を伴う 12 時間表示形式(%r) 

%p%I時%M分%S秒 

時刻の代替表示形式 (%EX) 

%H時%M分%S秒 

日付の代替表示形式 (%Ex) 

%EY%m月%d日 

日付および時刻の代替形式 (%Ec) 

%EY%m月%d日 %a %H時%M分%S秒 

代替年表示 (%EY)

 

  1927/01/01 - 1989/01/07 

昭和%Ey年 

  1989/01/08 - 1989/12/31 

平成元年 

  1990/01/01 - 

平成%Ey年 

日付/時刻、長形式 (%C) 

%Y年%m月%d日 %a %H時%M分%S秒 %Z 

第 3 章 日本語対応 SunOS のユーザー環境設定

この章では、JFP によって日本語のサポートが可能になった SunOS に対して、必要に応じて行うさまざまな環境設定について説明します。ここでは端末エミュレータなどの CUI 環境の設定方法について説明しますので、GUI に関しては、第 7 章「GUI 環境の起動」及び第 8 章「Solaris CDE と日本語 OpenWindows 環境に共通の機能」を参照してください。

環境変数によるロケールの設定

国際化されたシステムプログラムおよびアプリケーションは、一般に、ユーザーが特定の環境変数をどのように設定しているかによって、どの言語および地域 (ロケール) を想定して動作するかを決定します。日本語環境を想定して動作を行うもっとも簡単な方法は、LANG という環境変数に ja (日本語 EUC を扱う) 、ja_JP.PCK (PCK を扱う) または ja_JP.UTF-8 (UTF-8 を扱う) ロケール名を設定することです。環境変数の設定方法は、ユーザーの使用しているシェルプログラムによって異なりますが、 csh (C シェル) の場合、以下のように実行します。

sun% setenv LANG locale1

常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .login の中でこの設定を行うとよいでしょう。設定方法の例については第 5 章「国際化 SunOS コマンドの利用」で説明します。sh (Bourne シェル) または ksh (Korn シェル) の場合には、以下のように実行します。

sun$ LANG=locale1
sun$ export LANG
  1. locale には jaja_JP.PCK または ja_JP.UTF-8 を指定します。

常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行うとよいでしょう。設定方法の例については第 5 章「国際化 SunOS コマンドの利用」で説明します。

上に述べた設定によって、ユーザーが実行する国際化プログラムは日本語環境を想定して動作するようになり、一般に、メッセージや時刻の表示が日本語で行われたり、日本語文字の処理などが正しく行われたりするようになります。ただし、国際化されたウィンドウシステムが動いていない Sun ワークステーションの画面上など、英語は表示できても日本語を表示できないような状態では、日本語の文字は判読できません。このような場合には、一時的にロケールを C に設定し、英語のメッセージを表示させたほうがよいでしょう。この場合、csh (C シェル) では以下のように実行します。

sun% setenv LANG C 

sh (Bourne シェル) または ksh (Korn シェル) では、以下のように実行します。

sun$ LANG=C
sun$ export LANG

ロケールの設定は、LC_CTYPE、LC_NUMERIC、LC_TIME、LC_COLLATE、LC_MONETARY、LC_MESSAGES、LC_ALL など、LANG よりも細かいカテゴリごとに行うこともできます。各ロケールカテゴリがプログラムの動作に与える影響については、各プログラムのリファレンスマニュアルを参照してください。

端末の設定

国際化された端末エミュレータウィンドウ (dttermshelltoolcmdtool など) や日本語端末上で正しく日本語の入出力を行うためには、 tty (端末ドライバ) が日本語の文字データを正しく透過させ、日本語の文字幅に応じた処理を正しく行わなくてはなりません。このためには、次のようにロケールの設定が完了している状態で setterm(1) コマンドを実行して初期化する必要があります。

csh の場合 :

sun% setenv LANG locale1
sun% setterm -x Codeset2

1. locale には jaja_JP.PCK またはja_JP.UTF-8 を指定します。

2. Codeset には JapanEUCPCK または UTF-8 を指定します。

sh または ksh の場合 :

sun$ LANG= locale1; export LANG
sun$ setterm -x Codeset2

1. locale には ja、ja_JP.PCK または ja_JP.UTF-8 を指定します。

2. Codeset には JapanEUC、PCK または UTF-8 を指定します。


注 -

日本語ロケール間でロケールを切り替える場合は、その都度、端末設定も行うようにしてください。使用する端末が同じでも、ロケールが異なると使用する STREAM モジュールが異なりますので、再度 setterm が実行されないと正しく表示できなくなります。


常に日本語端末環境を使用するユーザーは、ホームディレクトリの初期化ファイル(csh の場合には .login または .cshrcsh の場合には .profile) の中でこの設定を行うとよいでしょう。次に ロケールの指定と sh の対応表を示します。

表 3-1 ロケールの指定と sh の対応

ロケール 

csh

sh、ksh

ja 

% setenv LANG ja

% setterm -x JapanEUC

% LANG=ja; export LANG

% setterm -x JapanEUC

ja_JP.PCK 

% setenv LANG ja_JP.PCK

% setterm -x PCK

% LANG=ja_JP.PCK; export LANG

% setterm -x PCK

ja_JP.UTF-8 

% setenv LANG ja_JP.UTF-8

% setterm -x UTF-8

% LANG=ja_JP.UTF-8; export LANG

% setterm -x UTF-8

端末オプションの詳細は、第 6 章「日本語環境用 SunOS コマンド」および setterm(1) のマニュアルページを参照してください。

コマンド検索パスの設定

Solaris 2.6 オペレーティング環境およびその互換バージョン自体、およびそこに JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。たとえば、以下のコマンドがあります。

ls

/usr/bin/ls

国際化機能を持つ標準の ls コマンド

/usr/ucb/ls

BSD 互換性パッケージの ls コマンド

/usr/xpg4/bin/ls

XPG4 準拠の ls コマンド

mailx

/usr/bin/mailx

標準の mailx コマンド

/usr/SUNWale/bin/mailx

国際化機能の拡張された mailx コマンド

実行するコマンドのパスによっては、思い通りに国際化機能が利用できないことがあります。日本語環境で国際化機能を最大限に利用したいユーザーは、シェルのコマンド検索ディレクトリの優先順位を次のように設定するとよいでしょう。なお、対応する /usr/xpg4/bin/<コマンド名> がないときは /usr/bin/<コマンド名> が XPG4 準拠になっています。

/usr/xpg4/bin > /usr/SUNWale/bin > /usr/bin > /usr/ucb

設定方法は、ユーザーの使用しているシェルプログラムによって異なりますが、csh (C シェル) の場合、以下のように set コマンドを実行します。

sun% set path = (/usr/xpg4/bin /usr/SUNWale/bin /usr/bin /usr/ucb .)

常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .cshrc の中でこの設定を行うとよいでしょう。また、.cshrc ファイルを編集して path パラメタを変更した後、すぐにその内容を有効にしたいときには次のように source コマンドを実行します。

sun% source .cshrc

sh (Bourne シェル) または ksh (Korn シェル) の場合には、以下のようにパラメタ PATH を設定します。

sun$ PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:.
sun$ export PATH

常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行うとよいでしょう。

現在デフォルトで実行されるコマンドがどのディレクトリにあるかは、which(1) コマンドで確かめることができます。

オンラインマニュアル検索パスの設定

前の項で述べたように、Solaris 2.6 オペレーティング環境およびその互換バージョン自体、およびそこに JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。これに伴って、オンラインマニュアルページについても、同名のエントリが複数の場所に存在することがあります。たとえば、以下のマニュアルページがあります。

ls

/usr/share/man/man1/ls.1

国際化された標準の ls コマンド用

/usr/share/man/man1b/ls.1b

BSD 互換性パッケージの ls コマンド用

mailx

/usr/share/man/man1/mailx.1

標準の mailx コマンド用

/usr/SUNWale/share/man/man1/mailx.1

国際化された mailx コマンド用

参照するマニュアルページのパスによっては、思い通りに国際化機能の情報が得られないことがあります。日本語環境で国際化機能を最大限に利用するユーザーは、シェルのコマンド検索ディレクトリの優先順位とともにオンラインマニュアルページの検索パスの優先順位を次のように設定するとよいでしょう。

/usr/SUNWale/share/man > /usr/share/man

設定方法は、ユーザーの使用しているシェルプログラムによって異なります。

csh (C シェル) の場合は、次のよう環境変数 MANPATH を設定します。

sun% setenv MANPATH /usr/SUNWale/share/man:/usr/share/man

常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .cshrc でこの設定を行うとよいでしょう。

sh (Bourne シェル) または ksh (Korn シェル) の場合は、環境変数 MANPATH を次のように設定します。

sun$ MANPATH=/usr/SUNWale/share/man:/usr/share/man
sun$ export MANPATH

常に日本語環境を使用するユーザーは、ホームディレクトリの初期化ファイル .profile の中でこの設定を行うとよいでしょう。

初期化ファイル利用のヒント

ここではユーザーのホームディレクトリの .login.cshrc.profile といったシェルの初期化ファイルを利用して日本語環境用の設定を行う例を説明します。初期化ファイルの内容は個々のユーザーの必要に応じて変わるものであり、目的の達成方法も一つではありません。ここに挙げる例はあくまで参考であることに注意してください。


注 -

dtlogin からログインした場合、以降に述べる (.cshrc を除く) 初期化ファイルは読み込まれないため、Solaris CDE アプリケーションには反映されません。Solaris CDE アプリケーションの実行環境に反映させたい環境変数などの設定は、第 7 章「GUI 環境の起動」を参照してください。


.login

ユーザーのホームディレクトリの .login ファイルは、ユーザーが C シェル (csh) を使ってシステムに login したときに C シェルの初期化に使われます (詳細は、csh(1) を参照してください)。一般に環境変数の設定などは、このファイルで行います。

#       The initial user defaults for csh.

setenv LANG ja

setterm -x JapanEUC

if ( ! $?MANPATH ) then
      setenv MANPATH /usr/SUNWale/share/man:/usr/share/man
endif

最初の実行文で環境変数 LANG が、日本語ロケール名「ja」に設定されます。

"setterm -x JapanEUC" では、端末は日本語 EUC であると設定しています。

次の if 文は、オンラインマニュアルページの検索パスを条件に応じて設定します。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。

.cshrc

ユーザーのホームディレクトリの .cshrc ファイルは、ユーザーが C シェル (csh) を起動したときに C シェルの初期化に使われます。C シェルがログインシェルとして起動されたときにも .cshrc ファイルは .login に先立って実行されます (詳細は、csh(1) を参照してください)。

set path=(/usr/xpg4/bin /usr/SUNWale/bin /usr/bin /usr/ucb .) 
if ($?prompt) setterm -x JapanEUC 

この例では、はじめの行でシェル変数 path コマンド検索パスの設定だけを行なっています。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。

次の行では、ロケールの設定を変えた後に C シェルが起動し直される場合などのため、"setterm -x JapanEUC" を実行しています。行の最初の if 文は、C シェルが端末以外の装置を標準入力として起動された場合に、stty が実行されてエラーメッセージが表示されるのを防ぐためのものですが、完全な解決策ではありません。

.profile

ユーザーのホームディレクトリの .profile ファイルは、ユーザーが Bourne シェル (sh) または Korn シェル (ksh) を使ってシステムにログインしたときに、シェルのユーザー固有の初期化に使われます (詳細は、sh(1) を参照してください)。

#       The initial user defaults for sh.
LANG=ja
export LANG

PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:.
export PATH

setterm -x JapanEUC

if [ "$MANPATH" = "" ]
then
     MANPATH=/usr/SUNWale/share/man:/usr/share/man
     export MANPATH
fi
ENV=$HOME/.kshrc
export ENV

この例では、環境変数 LANG でのロケール設定、環境変数 PATH でのコマンド検索パスの設定、tty のオプション設定が順次行われます。

"setterm -x JapanEUC" では、端末は日本語 EUC であると設定しています。

if 文では、それぞれ条件に応じて環境変数 MANPATH が設定されます。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。

最後のパラメタ ENV は、Korn シェル (ksh) に対して起動時コマンド実行ファイル名を設定します。このパラメタ設定は、Bourne シェル (sh) に対しては特別な意味を持ちません。

Kornシェル起動時コマンド実行ファイル

Korn シェル (ksh) に対して起動時コマンドファイルを用意する場合、そのファイル名をパラメタ ENV に設定します。パラメタ ENV の設定例については、.profileを参照してください。Korn シェルがログインシェルとして起動されたときにも、Korn シェル起動時コマンドファイルは .profile のあとで実行されます (詳細は、ksh(1) のマニュアルページを参照してください)。

export PATH=/usr/xpg4/bin:/usr/SUNWale/bin:/usr/bin:/usr/ucb:.
if expr "$-" : "i" > /dev/null; then
setterm -x JapanEUC
fi

この例では、はじめの行でパラメタ PATH にコマンド検索パスの設定だけを行なっています。この設定内容は、インストール時のパス設定、ソフトウェア製品の追加などに応じて変更が必要な場合があります。

次の 3 行では、ロケールの設定を変えた後に Korn シェルを起動し直す場合などのため、"setterm -x JapanEUC" を実行しています。

if 文は、Korn シェルが端末以外の装置を標準入力として起動された場合に、setterm が実行されてエラーメッセージが表示されるのを防ぐためのものですが、完全な解決策ではありません。

第 4 章 日本語対応 SunOS のシステム環境設定

この章では、システムで定義済みの SunOS の日本語環境を、システム管理者が必要に応じて変更する場合の方法と注意事項を説明します。

システムロケールの設定

ユーザーが個々のロケールを設定する場合と同様に、そのシステムのロケールも設定できます。このシステムロケールは、ユーザーがロケールを明示的に設定しないときのデフォルトロケールとして使われたり、ロケール依存の動きをするデーモンのロケールとして使われたりします。

インストール時に「言語とロケールの選択 (Select Language and Locale)」画面で、選択したロケールがシステムロケールとして設定されています。システムロケールは以下のファイルで設定していますので、このファイルの LANG の値を変更することによって、システムロケールを変更できます。詳細は、init(1M) を参照してください。

sun% more /etc/default/init
    :
TZ=Japan
LANG=ja

電子メールの送受信に関する設定

in.comsat の設定

JFP では、複数バイト言語国際化のために拡張された in.comsat (/usr/SUNWale/sbin/in.comsat) を提供しています。第 5 章「国際化 SunOS コマンドの利用」「メール到着の通知」で到着した日本語メールを、Solaris CDE や OpenWindows のコンソールウィンドウなどでコード変換して見るためには、以下のように install_comsat を実行する必要があります。

sun# /usr/SUNWale/sbin/install_comsat ja

詳細は、install_comsat(1M) および inetd(1M) のマニュアルページを参照してください。

日本語プリンタに関する設定

JFP では、LP 印刷サービスを使用して、ドットマトリックス漢字プリンタ (EPSON VP-5085 、 NEC PC-PR201)、日本語ページプリンタ (Canon LASERSHOT)、日本語 PostScript プリンタで日本語テキストを印刷するために、これらの変換フィルタ群を提供します。

日本語 dumb プリンタのサポート

JFP では、LP 印刷サービスを使用して、ドットマトリックス漢字プリンタ (EPSON VP-5085、 NEC PC-PR201)、日本語ページプリンタ (Canon LASERSHOT) で日本語テキストを印刷できます。

EPSON VP-5085 用のデータベースは EPSON ESC/P の ESC/P24-J84 に準拠したコントロールコード、NEC PR201 用のデータベースは NEC 201PL に準拠したコントロールコードを使用しています。そのため JFP では、これらのコントロールコードをサポートする他のプリンタでも日本語テキストを印刷できます。

提供されるファイル

JFP では、日本語 dumb プリンタをサポートするために以下のファイルを提供します。

表 4-1 日本語 dumb プリンタのサポート用に提供されるファイル

プロセッサの種類 

キーボードの種類 

/usr/share/lib/terminfo/c/canon-ls-a408

Canon LASERSHOT A408 用の terminfo データベース (Canon LASERSHOT の LIPS に準拠)

/usr/share/lib/terminfo/e/epson-vp5085

EPSON-VP5085 用の terminfo データベース (EPSON ESC/P の ESC/P24-J84 に準拠)

/usr/share/lib/terminfo/n/nec-pr201

NEC PR201 用の terminfo データベース (NEC 201PL に準拠)

/usr/lib/lp/text/jprconv

日本語テキスト印刷フィルタ 

/usr/lib/lp/text/jprconv.conf

日本語テキスト印刷フィルタ用設定ファイル 

/etc/lp/fd/jprconv.fd

日本語テキスト印刷フィルタ記述子ファイル 

/usr/lib/lp/model/jstandard

日本語プリンタ・インタフェースプログラム 

lp のプリンタ固有オプション

日本語プリンタ・インタフェースプログラムでは、標準のインタフェースプログラムに表 4-2 に示すプリンタ固有のオプションが追加されています。その他のオプションは標準インタフェースプログラムと同じです。詳細は、lp(1) のマニュアルページを参照してください。

表 4-2 lp のプリンタ固有オプション

オプション 

内容 

x=cols

左マージンを cols カラムに設定する

landscape

用紙を横長にして印刷する (Canon LASERSHOT のみ有効) 

プリンタ固有のオプションの使用例を以下に示します。

sun% lp -o x=30 textfile.txt
sun% pr -2 -l46 -w170 -t textfile.txt | lp -o nobanner -o landscape

jprconv フィルタ固有のオプション

以下のフィルタ固有のオプションが lp を通して利用可能です。

表 4-3 jprconv フィルタ固有のオプション

オプション 

内容 

-y PCK

指定したファイルの文字コードを PCK に指定 

-y eucJP

指定したファイルの文字コードを eucJP に指定 

-y UTF-8

指定したファイルの文字コードを UTF-8 に指定 

フィルタ固有のオプションの使用例を以下に示します。

sun% lp -y PCK textfile.pck

制限事項

日本語テキスト印刷フィルタを使用する場合、次の制限事項があります。

制限事項

日本語 PostScript プリンタのサポート

JFP では、日本語 PostScript プリンタで日本語テキストを印刷できます。日本語 PostScript プリンタに日本語テキストを印刷する方法は、jtops(1) を用いてクライアント側で PostScript に変換して、プリンタサーバーに渡す方法とサーバー側で変換する方法があります。ここでは、サーバー側で変換する方法を使用する場合のプリンタの設定方法について説明します。

提供されるファイル

JFP では、日本語 PostScript プリンタをサポートするために以下のファイルを提供します。

表 4-4 日本語 PostScript プリンタのサポート用に提供されるファイル

/usr/share/lib/terminfo/c/canon-ls-a408

Canon LASERSHOT A408 用の terminfo データベース (Canon LASERSHOT の LIPS に準拠)

/usr/lib/lp/postscript/jpostprint

日本語テキストを日本語 PostScript に変換するフィルタ 

/usr/lib/lp/postscript/jpostprint.conf

上記フィルタの設定ファイル 

/etc/lp/fd/jpostprint.fd

上記フィルタの記述子ファイル 

jpostprint フィルタ固有のオプション

以下のフィルタ固有のオプションが lp を通して利用可能です。

表 4-5 jpostprint フィルタ固有のオプション

オプション 

内容 

-o length=len

1 ページの行数を len に指定

-P page-list

page-list で指定するページ範囲を印刷

-y group

1 ページあたり 2 個の論理ページで印刷 

-y group=n

1 ページあたり n 個の論理ページで印刷

-y portrait

縦長で印刷 

-y landscape

横長で印刷 

-y magnify=n

n 倍に拡大して印刷

-y PCK

指定したファイルの文字コードを PCK に指定 

-y eucJP

指定したファイルの文字コードを eucJP に指定 

-y UTF-8

指定したファイルの文字コードを UTF-8 に指定 

フィルタ固有のオプションの使用例を以下に示します。

sun% lp -P 2,3 -y PCK textfile.pck

制限事項

プリンタの追加方法

日本語テキストを印刷するには、プリンタを正しく追加する必要があります。この場合、ローカルプリンタとして追加するか、リモートプリンタとして追加するかによって追加方法が異なります。

まず、各プリンタに共通する手順を説明します。


注 -

x86 上にプリンタデバイスが存在しない場合は、『Solaris 情報ライブラリ (Intel 版)』の「デバイスの構成」を参照してあらかじめプリンタデバイスを正しく作成しておく必要があります。


  1. システムの電源を切ります。

  2. システムとプリンタをプリンタケーブルで接続します。

  3. システムの電源を入れ、Solaris を起動します。

  4. スーパーユーザーになります。


    注 -

    一般ユーザーでシステム管理ツール (Admintool) を使用する際は、sysadmin グループ (GID 14) の一員になる必要があります。


  5. まだ起動していなければ、Solaris CDE または OpenWindows を起動します。

次に、各プリンタに固有の手順について説明します。

ローカルプリンタとして追加する場合

Admintool を使用してローカルプリンタを追加する方法を説明します。


注 -

Admintool の詳細は、『Solaris のシステム管理』を参照してください。


この説明では、プリンタ名を vp5085、プリンタタイプを epson-vp5085、デバイス名を /dev/term/a と仮定しています。

以下に手順を示します。

  1. Admintool を起動します。

    sun# admintool &
    

    Graphic
  2. 「ブラウズ」上をクリックして、「プリンタ」を選択します。

  3. 「編集」上をクリックして「追加」を選択し、さらに「ローカルプリンタ...」を選択します。

    以下のウィンドウが表示されます。

    Graphic
  4. 「プリンタ名」テキストフィールドに、ローカルプリンタ名を入力します (この例では vp5085)。

  5. 「プリンタポート」上でマウスのメニューボタンを押し、該当するデバイスを選択します (この例では /dev/term/a)。

  6. 「プリンタタイプ」上でマウスのメニューボタンを押し、「その他...」を選択します。そして、表示されるポップアップウィンドウに、以下の表から該当するプリンタタイプを入力し、「了解」ボタンを押します (この例では、epson-vp5085)。

    表 4-6 プリンタタイプ

    コントロールコード

    プリンタタイプ

    Canon LASERSHOT 

    canon-ls-a408 

    EPSON ESC/P 

    epson-vp5085 

    NEC 201PL 

    nec-pr201 

    日本語 PostScript 

    PostScript 

  7. 「ファイルの形式」上でマウスのメニューボタンを押し、「None」を選択します。

  8. プリンタを、デフォルトプリンタとしてシステムに追加したい場合は、オプションの「デフォルトプリンタ」のチェックボックスをチェックします。

  9. 「了解」ボタンをクリックします。

    Graphic
  10. 次のように入力して、印刷フィルタを登録します。

    日本語 dumb プリンタの場合 :

    sun# cd /etc/lp/fd
    sun# lpfilter -f jprconv -F jprconv.fd
    

    日本語 PostScript プリンタの場合 :

    sun# cd /etc/lp/fd
    sun# lpfilter -x -f postprint
    sun# lpfilter -f jpostprint -F jpostprint.fd
    

  11. 必要に応じて、インタフェースプログラムの構成を変更します。

    常に、バナーページを印刷しないなどの場合は、インタフェースプログラムを次のように編集してください。

    sun# cd /usr/lib/lp/model
    sun# vi jstandard
    

    "Default nobanner""nobanner="no" の部分を「nobanner="yes"」に変更します。

    :
    #
    # Default nobanner
    #   nobanner="no"   : banner page will be printed as default
    #   nobanner="yes"  : banner page will not be printed as default
    #
    nobanner="yes"
    :

  12. 次のように入力してインタフェースプログラムを登録します。

    -p の後には、手順 4のプリンタ名の設定で入力したプリンタ名を入力します (この例では vp5085)。

    sun# lpadmin -p vp5085 -i /usr/lib/lp/model/jstandard
    

  13. 手順 5 の印刷ポートの設定でデバイスとして /dev/bpp0 以外を指定した場合は、次のように入力して、stty オプションを設定します。

    sun# lpadmin -p vp5085 -o "stty=-opost"
    

  14. システムをリブートします。

    sun# sync;sync;sync;reboot
    

リモートプリンタとして追加する場合

ここでは、Admintool を使用してリモートプリンタを追加する方法を説明します。


注 -

Admintool の詳細は、『Solaris のシステム管理』を参照してください。


以下に手順を示します。

  1. Admintool を起動します。

    sun# admintool &
    

    Graphic
  2. 「ブラウズ」上をクリックして、「プリンタ」を選択します。

  3. 「編集」上をクリックして「追加」を選択し、さらに「プリンタへのアクセス...」を選択します。

    以下のウィンドウが表示されます。

    Graphic
  4. 「プリンタ名」テキストフィールドに、リモートプリンタ名を入力します (この例では vp5085)。

  5. 「印刷サーバ」テキストフィールドに、リモートプリンタを接続するシステム名を入力します (この例では hiraki)。

  6. プリンタをシステムのデフォルトプリンタにしたい場合は、オプションの「デフォルトプリンタ」のチェックボックスをチェックします。

  7. 「了解」ボタンをクリックします。

  8. printers.conf ファイルを編集します。

    sun# cd /etc
    sun# vi printers.conf
    

    vi などで printers.conf ファイルの該当するサーバー部分 ":bsdaddr=hiraki,sparc140:" に、以下のように「Solaris」を追加します。

    :bsdaddr=hiraki,sparc140,Solaris:
    

以上の手順が終了すると、lp コマンドを使用して、追加したリモートプリンタに出力できます。ここで設定したプリンタの利用法に関しては、第 6 章「日本語環境用 SunOS コマンド」を参照してください。

JIS X 0212、ユーザー定義文字、ベンダー定義文字の印刷サポート

JFP では、日本語 dumb プリンタや日本語 PostScript プリンタでの、JIS X 0212、ユーザー定義文字、およびベンダー定義文字を含む日本語テキストの印刷をサポートしています。これらの文字を印刷するためには、そのフォントをプリンタサーバー上に正しくインストールする必要があります。ここでは、これらのフォントのインストール方法について説明します。

ユーザー定義文字とベンダー定義文字の定義領域に関しては、第 2 章「日本語ロケール」を参照してください。また、ユーザー定義文字の作成方法は、第 14 章「ユーザー定義文字の登録 (Solaris 外字ツール)」を参照してください。

日本語 dumb プリンタで使用する場合

ユーザー定義文字のフォントは sdtudctool(1) で出力される PCF フォント、JIS X 0212 とベンダー定義文字のフォントは SUNWjxcft に含まれる24 ドットの PCF フォントだけが使用できます。

フォントのインストール方法

プリンタサーバー上で以下を実行します。

  1. SUNWjxcft パッケージがインストールされているかどうかを確認します。

    sun# pkginfo SUNWjxcft
    

  2. SUNWjxcft パッケージがインストールされている場合は、次のようなメッセージが表示されます。

    sun# SUNWjxcft Japanese X Window System common (not required) fonts
    

  3. ここで SUNWjxcft が見つからなかった場合は、次のコマンドを実行します。

    sun# pkgadd -d <Solaris CD>/Product SUNWjxcft
    

    上記 <Solaris CD> は、Solaris CD のインストールイメージがあるディレクトリを指定します。

  1. sdtudctool でユーザー定義文字フォントを作成します。

  2. 作成したフォントをインストールします。

    sun% cd $HOME/.Xlocale/$LANG/fonts/UDC/Bitmaps
    sun% su
    sun# mkdir -p /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Bitmaps
    sun# cp UDC24.pcf /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Bitmaps
    

日本語 PostScript プリンタで使用する場合

ユーザー定義文字のフォントは sdtudctool(1) で出力される Type1 フォント、 JIS X 0212 とベンダー定義文字のフォントは SUNWjcs3f に含まれるType1 フォントだけが使用できます。

フォントのインストール方法

プリンタサーバー上で以下を実行します。

  1. SUNWjcs3f パッケージがインストールされているかどうかを確認します。

    sun# pkginfo SUNWjcs3f
    

  2. SUNWjcs3f パッケージがインストールされている場合は次のようなメッセージが表示されます。

    sun# SUNWjcs3f Japanese JIS X0212 Type1 fonts for printing
    

  3. ここで SUNWjcs3f が見つからなかった場合は、次のコマンドを実行します。

    sun# pkgadd -d <Solaris CD>/Product SUNWjcs 
    

    上記 <Solaris CD> は、Solaris CD のインストールイメージがあるディレクトリを指定します。

  1. sdtudctool でユーザー定義文字フォントを作成します。

  2. 作成したフォントをインストールします。

    sun% cd $HOME/.Xlocale/$LANG/fonts/UDC/Type1
    sun% su
    sun# mkdir -p /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Type1
    sun# cp UDC*.pfa /usr/openwin/lib/locale/$LANG/X11/fonts/UDC/Type1
    

また、jpostprint を起動し、クライアント側で PostScript ファイルに変換することによりプリンタサーバーと異なった独自の外字の印刷することも可能です。

sun% /usr/lib/lp/postscript/jpostprint <テキストファイル名>

この場合は、$HOME/.Xlocale/$LANG/fonts/UDC/Type1 にある外字フォントが使用されます。

日本語キーボードのサポート

JFP では、次の日本語キーボードをサポートしています。

プロセッサの種類 

キーボードの種類 

SPARC 

日本語タイプ 4 キーボード 

日本語タイプ 5 キーボード 

x86 

106 キーボード 

J3100 キーボード 

日本語タイプ 4、5 キーボード

日本語タイプ 5 キーボードの制限事項については、U.S. タイプ 5 キーボードと同じです。『Sun タイプ 5 キーボード プロダクト・ノート』を参照してください。

日本語キーボードは、SunOS の「各国語キーボードサポート」機能に基づき、日本語タイプ 4 キーボードの場合、自動的にレイアウトコード 0x20 のキーボードと判定され、対応するキーテーブルが読み込まれます。同様に日本語タイプ 5 キーボードの場合、自動的にレイアウトコード 0x31 のキーボードと判定され、対応するキーテーブルが読み込まれます。キーテーブルは /usr/share/lib/keytables に置かれ、ブート時に読み込まれます。キーテーブルの名称は、日本語タイプ 4 キーボードの場合は layout_20 で、japan と同じものです。同様に日本語タイプ 5 キーボードの場合は layout_31 で、japan_5 と同じものです。

第 5 章 国際化 SunOS コマンドの利用

SunOS 上の多くのコマンドは、複数バイト文字データを適切に処理できるよう国際化されています。この章では、代表的なコマンドをいくつか取り上げ、日本語環境での利用方法について説明します。

この章で説明されていない事項およびコマンドについては、それぞれのコマンドのマニュアルページなどを参照してください。複数バイト言語を対象として国際化されているコマンドのマニュアルページでは一般に、ENVIRONMENT (環境) の項に LC_* 環境変数に応じた動作の変化が記述されています。

vi エディタ

vi は SunOS 上の標準的なテキストエディタです。ウィンドウ環境への依存性がなく、広範囲のファイルタイプに対応しているため、さまざまな端末で多目的に使いこなすことができます。

この節では、vi を例に SunOS で国際化されているコマンドの日本語環境での使い方を説明します。vi の機能全般については、『OpenWindows ユーザーズガイド (上級編)』および vi(1) のマニュアルページなどを参照してください。また、実際の日本語入力方法については、『Wnn6 ユーザーズガイド』、『ATOK8 ユーザーズガイド』、または『cs00 ユーザーズガイド』を参照してください。


注 -

この項の説明で "「xxx」を入力してください" という表現は、xxx が日本語の場合は日本語を入力し、無変換の状態に戻すまでを指します。


vi の起動

多くの SunOS コマンド同様、vi は日本語のファイル名をサポートします。例として、「コロンブスのジパング」という名前のファイルを vi で編集してみましょう。

sun% vi コロンブスのジパング

「コロンブスのジパング」というファイルがすでにあれば、vi でそのファイルを開くことができます。この例ではファイルは存在しないものとします。

vi の編集画面が現われます。

_                                                                    
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
"コロンブスのジパング" [新規ファイル]                                     


注 -

以降、vi の画面での下線マーク「 _ 」は、カーソルの位置を表します。


多くの SunOS コマンドと同様に vi は、"[新規ファイル]" のようにメッセージを日本語で表示できます (メッセージ自体は JFP が提供します)。JFP をインストールしたシステムでメッセージが日本語で表示されないときには、LC_CTYPE のロケールカテゴリが環境変数 LANG または LC_CTYPE を介して ja (japanese) または ja_JP.PCK に設定されていないか、環境変数 LC_MESSAGES が別の値に設定されていることが考えられます。正しく設定し直してください (詳細は、第 3 章「日本語対応 SunOS のユーザー環境設定」「環境変数によるロケールの設定」を参照してください)。

vi に慣れるまでは、動作モードを表示する showmode という設定が役立ちます。showmode を設定するには、コマンドモードで次のように「:set showmode」と入力します。

_                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
:set showmode                                                           

これで vi は、その時々の動作モードを画面最下行 (ステータス行) 右側に表示するようになります。たとえば、ここで i キーを入力すると vi は挿入 (insert) モードに入り、ステータス行は次のように変わります。

_                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
‾                                                                       
:set showmode                                                  挿入モード     

テキストの挿入 (文字幅の処理、行末処理)

JFP の提供する日本語入力機能などを利用して日本語のテキストを入力していくと、 vi はこれを編集画面に表示します。端末環境では一般に日本語の 1 文字は、ASCII の 2 文字 (2 カラム) 分の表示幅を持ちますが、vi は 1 行が画面の幅を越えたときにも画面の最後のカラムに日本語文字が入りきれるかどうかに応じて行の折り返し処理をします。

1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝
く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン‾
ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ
きっていた。
_                                                             
‾                                                             
‾                                                               
‾                                                             
‾                                                             
‾                                                            
‾                                                             
‾                                                             
:set showmode                                                   挿入モード  

上の例では、画面 2 行目の最後のカラムに「ド」の文字がかかりますが行内に納まりません。このような場合には「ド」の文字は次の行に回され、2 行目の行末の 1 カラムはスキップされ、それを示すために「‾」の文字が表示されます。行末のカラムのスキップを示す文字は、環境変数 MC_FILLER を使って「‾」から任意の ASCII 文字に変更できます。


注 -

本文では、現在のカーソル位置を全角文字の上にある場合は全角アンダースコア (_)、半角文字の上にある場合は半角アンダースコア (_) で表示していますが、これは使用する端末によって変わります。


たとえば、次のように設定します。

sun% setenv MC_FILLER ' '

この設定をしたあと、vi を立ち上げて同じテキストを入力すると、スキップを示す文字がスペースに変わります。

1492年、クリストファー・コロンブスは、スペイン女王イザベルの援助を受け、黄金に輝
く地、ZIPANGU(日本)を求めてスペインのパロスを出発した。3箇月後、西イン
ド諸島サンサルバドルに到着した彼は、ここが東洋であり、南にはジパングがあると信じ
きっていた。
_                                                             
‾                                                             
‾                                                               
‾                                                             
‾                                                             
‾                                                            
‾                                                             
‾                                                             
:set showmode                                                   挿入モード  

1 文字の置換、削除、大文字・小文字変換

多くの SunOS コマンド同様、vi コマンドは 1 文字単位の処理を複数バイト文字にも適用できるよう国際化されています。置き換え、削除、大文字・小文字変換を例にとって見てみましょう。

まず、「3箇月後」の「3」( ASCII ) をコードセット 1 の「3」に置き換えてみます。Esc キーを入力してコマンドモードに移り、カーソルキーを使ってカーソルを「3」の位置に合わせます。次に r キーを入力すると、vi は 1 文字を置き換えるモードになります。

Graphic

ここで「3」を入力すると、「3」はコードセット 1 の「3」に置き換えられ、vi はコマンドモードに戻ります。

Graphic

次に「クリストファー」の最後の 1 文字「ー」を削除してみます。カーソルを削除したい「ー」に移動し x キーを入力すると、「ー」の 1 文字が削除され、画面は次のようになります。

さらに 2 行目の文字列、「ZIPANGU」の「IPANGU」を小文字に変換してみます。カーソルを「ZIPANGU」の「I」に移動して「6‾」と入力します。これにより、1 文字を大文字・小文字変換して次の文字に移動する操作が 6 回繰り返され、画面は次のように変わります (‾ キーを 6 回入力しても同じです)。

Graphic

単語単位の日本語処理

SunOS 上のいくつかのコマンドでは、単語間の区切りとして空白を使用しない言語用に拡張された、単語の識別処理がサポートされています。

vi では、コマンドモードで w (word) キーを入力することにより、カーソルが日本語の単語識別用文字分類に基づいて次の単語の先頭に移動します。同様に、b (back) キーは前にある単語の先頭に、e (end) キーは現在カーソルのある単語の末尾に、カーソルを移動します。

「スペイン女王」の「ス」にカーソルがある状態で w キーを 5 回入力すると、カーソルは日本語の単語識別用の文字分類に基づいて「女王」、「イザベル」、「の」、「援助」、「を」の単語の先頭に次々に移動します。

さらに b キーを 3 回入力すると、カーソルが 3 単語分戻り、「イザベル」の先頭に移動します。

Graphic

ここで、カーソル以降の 1 単語を書き換える cw コマンドを実行してみましょう。「Zipangu」の「Z」にカーソルを移動して、cw と入力すると画面は次のようになり、vi は「Zipangu」に置き換わる単語の入力を待ちます。

Graphic

「ジパング」と入力して Esc キーを入力すると、「Zipangu」が「ジパング」に置き換えられます。

同様に、このような単位の単語を削除することもできます。カーソルキーを使ってカーソルを「イザベル」の「イ」に移動し dw と入力すると、カーソル位置から現在の単語の最後の「ル」までが削除されます。

Graphic

改行マージンと連結コマンド (行の分割と連結)

入力テキストの改行は、Return キーを入力することによって任意に行えますが、viset コマンドと wm オプションを使用すると、行の長さを自動的にコントロールできます。さらに、日本語環境では原則として日本語文字 1 文字が改行の単位とみなされます。たとえば、次の例では画面の幅が ASCII の 80 カラム分なので、コマンドモードで「:set wm=58」を入力することにより、画面右側に 58 カラムのマージン (余白) が確保され、行の長さは 80-58=22 カラム以下になるようにコントロールされます。

Graphic

コマンドモードで o (open) キーを入力してオープンモードに移り、入力を次のように続けます。

「コロンブスは、その後もジパングをめざし、数回の航海でキューバ島やイスパニオラ島を発見した。しかし、最後までジパングを見つけることはできなかった。」

Return キーを入力せずに続けて入力しても、テキストは自動的に次のように改行されます。

ここで、「スパニオラ島を発見し」の行が次の行より 1 文字分短く改行されるのは、テキストを清書するときと同様に禁則処理が働いているためです。

次に行を連結してみましょう。Esc キーを入力してコマンドモードに移り、「コロンブス...」の行にカーソルを移動します。

Graphic

ここで J (Shift-j) キーを入力すると、現在の「コロンブス...」の行に次の「ジパング...」の行が連結されます。

Graphic

このように日本語文字の行の連結の場合には、英語の行の連結の場合とは違い、スペースが挿入されず、改行の場合と同様に自然な日本語処理が行えます。日本語固有のこれらの単語処理は、JFP の提供する各国語化によって実現されています。 [このような国際化された単語処理に慣じみのない既存の vi のユーザーは、これらの機能にとまどいを覚えるかも知れません。そのような場合には、環境変数 MB_CONSERVATIVE_EDIT を設定してください。テキストの清書に準じた日本語単語処理は vi に適用されなくなり、vi は日本語に対しても英語と同様の動作をするようになります。]

日本語文字を含む文字列の検索と置換

いくつかの SunOS コマンドと同様、vi でも日本語文字を含む文字列パターンの処理がサポートされます。コマンドモードで「/」キーを入力すると画面の最下行に「/」が表われ、検索する文字列を待つ状態になります。ここで、検索する文字列として「コロンブス」と入力してみましょう。

Graphic

Return キーを入力すると、カーソルは先頭行の「コロンブス」の先頭に移動します。

n (next) キーを入力すると、カーソルは画面 2 段落目の最初の行の「コロンブス」の先頭に移動します。

次に、1 行目の ASCII の英数字を含む「1492年」の文字列をコードセット 1 の「1492年」に変更してみます。正規表現を使って「1492年」を「...2年」で指定することにし、「:%s/...2年/1492年/g」を入力します。

Graphic

Return キーを入力すると文字列が置き換えられ、画面は次のようになります。

Graphic

ファイルの保存と vi の終了

ファイルの編集後、コマンドモードで (動作モード表示は消えます)、: (コロン) に続けて w (write) キーを入力します。入力した「:w」の文字列は画面最下行 (ステータス行) に表示されます。ここで Return キーを入力すると、vi はファイル名、行数、バイト数を表示してファイルを保存します。

Graphic

ファイルを変更していない状態またはファイルの保存後に vi を終了するときには、コマンドモードで : (コロン) キーのあとに q (quit) キーを入力します。ファイルの保存と同時に vi を終了するときには、wq を入力します。変更したファイルを保存せずに q キーを入力すると、次のような警告が出されます。

1. この行は反転表示されます。

このような場合、警告を無視して vi を終了するときには、q! または quit! と入力します。

オンラインマニュアルの参照

SunOS 上では、国際化された man コマンドと nroff およびその関連コマンドにより、日本語のオンラインマニュアルページを参照できます [ただし、troff の国際化は行われていないため、man コマンドの -t オプションを日本語マニュアルページの troff 出力に使うことはできません。 ] 。日本語のオンラインマニュアルページおよびそのためのマクロパッケージは、JFP によって提供されます。

マニュアルページの参照

環境変数 LC_MESSAGES が日本語ロケール (ja または japanese) に設定されているか、LC_MESSAGES が設定されておらず LANG が日本語ロケールに設定されていれば、man コマンドで指定されたマニュアルページが日本語で存在している限り、日本語のマニュアルページが表示されます。例として、dumpcs(1) のマニュアルページを参照してみましょう。次のように入力します。

sun% man dumpcs
マニュアルを清書中です。しばらくお待ちください... 

しばらくすると dumpcs(1) の日本語マニュアルページが表示されます。

マニュアルを清書中です。しばらくお待ちください... 終了

dumpcs(1)               ユーザコマンド                dumpcs(1)          

【名前】
     dumpcs - 現在のロケールのコードセット一覧表を表示

【形式】
     dumpcs [ -0123vw ]

【機能説明】
     dumpcs は、ユーザの現在のロケールに対応するコードセットの印
--継続--(9%)

一時的に英文のマニュアルページを参照したい場合には、env(1) コマンドを使い、次のように「env LANG=C man dumpcs」と入力します。

sun% env LANG=C man dumpcs
Reformatting page.  Wait... 

Reformatting page.  Wait... done

dumpcs(1)                USER COMMANDS                  dumpcs(1)     

NAME
     dumpcs  - show the codeset table for the current locale

SYNOPSIS
     dumpcs [ -0123vw ]

DESCRIPTION
     dumpcs shows a list of printable characters for  the  user's
--More--(9%)

和文と英文のマニュアルページを両方とも頻繁に参照する場合は、"env LANG=C man" の部分を C シェルの別名 (alias) として登録しておくとよいでしょう。

清書済みオンラインマニュアルと windex の作成

オンラインマニュアルは、システムの出荷時には nroff(1) または troff(1) のソース形式で提供されます。catman(1M) コマンドによって、これらのマニュアルページをあらかじめ清書しておくと、man(1) コマンドによる表示の際の清書作業にかかる時間を節約できます (ただし、これによってさらにディスクスペースが消費されることに注意してください)。

また、catman コマンドは、whatis(1) および apropos(1) コマンドによって検索されるシステム機能の要約情報のデータベースファイル windex を作成します。-n オプションを用いるとこのデータベースは作成されず、-w オプションを用いるとこのデータベースの作成のみを行います。catman コマンドは、ユーザーが現在使用しているロケール名のディレクトリがオンラインマニュアルぺージのルートディレクトリに存在すると、その下のマニュアルページだけを清書します (たとえば、/usr/share/man/ja/man* がある場合は ja/man* を清書します)。英語のマニュアルページに対して常に翻訳マニュアルが用意されているとは限りませんので、必要に応じて次の例のように、ユーザーの通常の作業環境のロケールと、それが C ロケールではない場合には C ロケールと、それぞれでスーパーユーザーになって catman を実行してください。

sun# setenv LANG C
sun# catman 1 2 3
sun# setenv LANG ja
sun# catman 1 2 3

whatis による機能要約の参照

コマンドの機能の要約文だけを見たい場合には、whatis コマンドを使います。環境変数 LC_MESSAGES が日本語ロケール ja、 ja_JP.PCK または ja_JP.UTF-8 に設定されているか、LC_MESSAGES が設定されておらず LANG が日本語ロケールに設定されており、whatis コマンドで指定されたマニュアルページが日本語で存在し、その情報を含む windex データベースが作られていれば、日本語のコマンド機能要約を次のように表示できます。

sun% whatis dumpcs
dumpcs          dumpcs (1)      - 現在のロケールのコードセット一覧表を表示
sun%

apropos によるキーワード検索

whatis とは逆に、コマンド機能要約文中のキーワードからコマンド名を探したいときには apropos コマンドを使用できます。環境変数 LC_MESSAGES が日本語ロケール ja、ja_JP.PCK または ja_JP.UTF-8 に設定されているか、LC_MESSAGES が設定されておらず LANG が日本語ロケールに設定されており、apropos コマンドで指定されたマニュアルページが日本語で存在し、その情報を含む windex データベースが作られていれば、日本語のコマンド機能要約を次のように表示できます。

sun% apropos コードセット一覧表
dumpcs          dumpcs (1)      - 現在のロケールのコードセット一覧表を表示
sun%

電子メールの送受信

JFP は、複数バイト言語国際化のために拡張された mailx (/usr/SUNWale/bin/mailx) を提供しています。以降、簡単な日本語メールの送受信を例にして、mailx の使い方とコード変換について説明します。

説明の中で、いくつかの mailx のコマンドと変数が登場しますが、それらの詳しい使い方については、国際化のために拡張された mailx(1) のマニュアルページまたは『OpenWindows ユーザーズガイド (上級編)』を参照してください。

メールの起動

まず、第 3 章「日本語対応 SunOS のユーザー環境設定」「コマンド検索パスの設定」を参考にして、/usr/SUNWale/bin/mailx を起動するように設定します。以下に述べるコード変換は、LC_CTYPE のロケールが環境変数 LANG または LC_CTYPE を介してja または japanese に設定されている場合に行われます。また、環境変数 LC_MESSAGES が ja または japanese に設定されている場合は、mailx からの警告メッセージなどは日本語となります (メッセージ自体は JFP が提供します)。

メッセージの作成

メールを送るときは、mailx の引数に送り先のユーザー名を指定します。たとえば、grape というユーザーにメールを送る場合は、次のように指定します。

lemon% mailx grape
Subject: 

mailxSubject: の入力を要求してきます。Subject: にメールの用件を入力した後、メールのメッセージ本体を入力します。JFP の提供する日本語機能などを利用して日本語のメッセージを入力できます。

lemon% mailx grape
Subject: Next Lecture
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。

メッセージをテキストエディタを使って作成することもできます。次のように ‾v を実行すると vi が起動されます。起動されるエディタは VISUAL 変数で指定します。デフォルトは vi です。mailx の変数は mailx を起動中、または起動ファイル (通常、ユーザーのホームディレクトリにある .mailrc) 内で設定できます。シェルの変数としても設定できますが、mailx を起動中の値および起動ファイルの値が優先されます。

Subject: Next Lecture
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
‾v

‾v を実行すると、ただちに vi の画面に変わります。

To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
‾
‾
‾
‾
‾
‾
‾
"/tmp/Re8570" 7 行、121 バイト

ここで、日本語を追加入力してみます。

To: grape
Subject: Next Lecture
 
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
‾
‾
‾
‾
‾
‾
‾
‾
:wq

vi を終了すると元の mailx に戻ります。しかし、ここでは vi での編集イメージが画面に残っています。作成したメッセージを始めから見たい場合は、‾p を実行するとメッセージが再表示されます。メッセージのサイズが大きい場合は画面が流れてしまい、内容をゆっくり読むことができません。それを防ぐために crt 変数と PAGER 変数をあらかじめ設定しておき、ページごとに表示させる方法があります。たとえば、mailx コマンド起動中に以下を設定します。

? set crt=20
? set PAGER=/usr/bin/more

行頭の ? は mailx からのプロンプトです。

このような設定は、ユーザーのホームディレクトリにある .mailrc の中であらかじめ記述しておくと mailx 起動時に常に実行されるので便利です。

‾p
-------
メッセージの内容:
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
(つづく)

作成したメールは、行の先頭での「 . 」(ピリオド) 入力または CTRL-D により送信されます。mailx は終了してシェルに戻ります。メールの作成は日本語 EUC で行われてきましたが、送信時は 7 ビット JIS コードに変換されてから送られます。

‾p
-------
メッセージの内容:
To: grape
Subject: Next Lecture
 
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
(つづく)
.
作成終了
lemon%

メール作成の中止

作成の途中でメール送信を中止したいときは、割り込みキー (通常、CTRL-C) を入力してください。その場合、1 回目の割り込みキー入力で本当に途中で中止してよいかどうか尋ねてきます。そこでもう一度割り込みキーを入力すると、作成は中止されシェルに戻ります。このとき、途中まで作成されていたメッセージの内容が、dead.letter と呼ばれるファイル (あらかじめ設定されていない場合はユーザーのホームディレクトリにある dead.letter) に日本語 EUC で確保されます。

lemon% mailx grape
Subject: Next Lecture
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。^C
(割り込み -- メッセージ送信をやめるにはもう一度)
^C"/home/garden/lemon/dead.letter" 4/63
lemon%

送信したメッセージの保存

送信に先立ち record 変数が設定されていると、送信するメッセージが record 変数で指定したフォルダに保存されます。record はデフォルトでは設定されていません。また、record 変数が設定されている場合に、mailx の変数 folderconv が設定されていると日本語 EUC で保存され、設定されていないと転送時の変換イメージ (7 ビット JIS コード) で保存されます。folderconv はデフォルトで設定されています。たとえば、record フォルダが ‾/.record の場合は以下のようにして、すでに送信したメッセージを参照できます。

lemon% mailx -f ‾/.record
mailx version ALE5.0 Mon Sep 12 11:09:29 JST  コマンドの概要は ? を
タイプしてください。
"+.record": 2 個のメッセージがあります。
>O   1   lemon   Tue Sep 29 21:33   13/249   Excursion
 O   2   lemon   Tue Sep 29 21:47   15/245   Next Lecture
?

行の先頭の ? は mailx からのプロンプトです。現在 2 個のメッセージがあります。先程転送したメール (Subject: Next Lecture) は 2 番目にあります。メッセージを読むコマンドはいくつかありますが、ここではメッセージ番号をそのまま入力する方法で実行します。

? 2
Message 2:
From lemon Tue Sep 29 21:47:01 1992
To: grape
Subject: Next Lecture
 
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
 
?
 
lemon%

メッセージの読み取り

今度は、先程送ったメールをユーザー grape 側から読んでみます。メールボックスに届いたメールを読むには、mailx を引数なしで起動します。メールボックスにメールが届いていると、次のように表示されます。なお、この場合も LC_CTYPE および LC_MESSAGES が環境変数 LANG、または LC_CTYPE および LC_MESSAGES を介して ja または japanese に設定されているものとします。

grape% mailx
mailx version ALE5.0 Mon Sep 12 11:09:29 JST  コマンドの概要は ? をタイプ
してください。
"/var/mail/grape": 2 個のメッセージがあります。 2 個新規。
>  N 1 Y.Suzuki(Tokyo off Tue Sep 29 21:40 17/528  President's Report
   N 2 A.Lemon            Tue Sep 29 21:47 21/513  Next Lecture
? 

メッセージは日本語 EUC ではなく、7 ビット JIS コードに変換されて到着していますが、表示されるときには自動的に日本語 EUC にコード変換されます。

? 2
Message  2:
From lemon Tue Sep 29 21:47 JST 1992
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。

檸檬

?

この場合も「メッセージの作成」の項で行なったように、変数 crt および PAGER を設定しておくと、大きなサイズのメッセージも画面上で流れることなく、ページごとに見ることができます。

到着したメッセージの保存

到着したメッセージを保存するために、いくつかの mailx のコマンドが用意されています。s (save)、c (copy)、w (write) コマンドは、変数 folderconv が設定されていると到着したメッセージを日本語 EUC にコード変換して保存します。savecopy はフォルダの形式でヘッダ情報をつけて保存します。write はメッセージ本体だけを保存します。また、save を実行するとそのメッセージはメールボックスから取り除かれますが、copy の場合は保存後もメールボックスに残ります。

? save 2 folder.1
"folder.1" [新規ファイル] 22/481

save コマンドにより、メッセージ番号 2 のメッセージは folder.1 に保存されました。このときは日本語 EUC にコード変換されています。到着したメッセージを変換しないでそのままフォルダに保存したいときは、nsave または ncopy コマンドを利用して保存します。

? nsave 2 folder.2
"folder.2" [新規ファイル] 22/523

nsave コマンドにより、メッセージ番号 2 のメッセージは folder.2 にコード変換されずに保存されました。

一度読んだメールは特に明示的に保存しないと、mailx 終了時に mbox と呼ばれるフォルダ (あらかじめ設定していない場合はユーザーのホームディレクトリにある mbox) に保存されるように設定されています (この設定は mailx の変数の値と終了コマンドの種類によって変わります)。mbox に保存される場合も、日本語 EUC にコード変換されてから保存されます。

到着したメッセージの編集

? visual 2

v (visual) コマンドにより、到着したメッセージをテキストエディタを使って編集できます。起動されるエディタは VISUAL 変数で指定されます。デフォルトは vi です。このとき、編集するメッセージは日本語 EUC にコード変換された上でエディタが起動されます。

From lemon Tue Sep 29 21:47 JST 1992
Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4)
	id AA01421; Tue, 29 Sep 92 21:47:02 JST
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM>
To: grape
Content-Type: text
Content-Length: 112
Subject: Next Lecture
X-Sun-Charset: ja_JP.euc
 
葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬

‾
‾
‾
"/tmp/Rz8575" 18 行, 412 バイト

次のように、実際にメッセージを変更すると、変更後は日本語 EUC でメールボックスに保存されます。

From lemon Tue Sep 29 21:47 JST 1992
Return-Path: <lemon> by sushi.Japan.Sun.COM (5.0/SMI-SVR4)
	id AA01421; Tue, 29 Sep 92 21:47:02 JST
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
Message-Id: <9209300939.AA01421@sushi.Japan.Sun.COM>
To: grape
Content-Type: text
Content-Length: 112
Subject: Next Lecture
X-Sun-Charset: ja_JP.euc
 
**** 予定変更のお知らせ *****

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。
 
檸檬
‾
‾
‾
‾
:wq

メッセージの返答方法

「メッセージの読み取り」に戻り、返事を出してみます。

? 2
Message  2:
From lemon Tue Sep 29 21:47 JST 1992
Date: Tue, 29 Sep 92 21:47:02 JST
From: lemon (A.Lemon)
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
        10月1日(木) 午後2:00開始
に変更されました。
会場は未定です。

檸檬
 
  
 
? r
To: lemon
Subject: Re: Next Lecture

r コマンドを実行すると、自動的に差出人宛てのメールを作成する状態になります。ここからは「メッセージの作成」の項で示したとおりに、‾p‾v などを利用してメッセージを作成できます。返事の中に、現在読んでいるメッセージまたは別のメッセージを挿入したいときは、‾m または ‾f を実行します。どちらの場合も、挿入メッセージが日本語 EUC にコード変換されて挿入されます。

? r
To: lemon
Subject: Re: Next Meeting

‾m
メッセージ挿入:  2
(つづく)

‾m の入力時に特にメッセージ番号を指定しなかったので、現在読んでいる 2 番のメッセージが挿入されました。つづいて vi を起動して (‾v コマンドの実行) 返事を書きます。

To: lemon
Subject: Re: Next Lecture
 
        From lemon Tue Sep 29 21:47 JST 1992
        Date: Tue, 29 Sep 92 21:47:02 JST
        From: lemon (A.Lemon)
        To: grape
        Subject: Next Lecture
         
        葡萄さん:
        次回の講習会は
                10月1日(木) 午後2:00開始
        に変更されました。
        会場は未定です。
 
        檸檬
 
了解しました。
 
葡萄

‾
‾
‾
:wq

挿入したメッセージは、各行の先頭にタブが挿入され段落がつけられています。この自動的に挿入される文字列は、変数 indentfix で設定されます。デフォルトはタブです。また、この文字列の段落付けは ‾f でメッセージを挿入するときには適用されません。

:wq
"/tmp/Re8580" 21 行、333 バイト
(つづく)
.
 作成終了
?

「メッセージの作成」の項で示したとおりに作成を終了すると、メッセージは 7 ビット JIS コードに変換され送信されます。mailx 自身の終了には、 quit、コマンド行の先頭での CTRL-Dexit などのコマンドが用意されています。quitCTRL-D は、既読のメッセージを mbox に保存して未読のメッセージをメールボックスに保存します。exit はメールボックスを変更せず、mbox に保存することなく mailx を終了します。mailx 終了の動作は、 hold などの変数を設定してカスタマイズできます。

メール到着の通知

ここでは、comsat を利用したメール到着の通知を紹介します。まず、到着した日本語メールが正しくコード変換して表示されるように、第 4 章「日本語対応 SunOS のシステム環境設定」「日本語対応 SunOS のシステム環境設定」のin.comsat の設定」に従って inetd(1M) の構成を修正してください。

次に、biff(1B) でメール受信の通知を行うように設定します。

grape% biff y

このように設定すると、7 ビット JIS コードに変換されている日本語メールが到着するときに、日本語 EUC にコード変換されて画面にはじめの数行が表示されます。

New mail for grape has arrived:
----
Date: Wed, 30 Sep 92 11:56:35 GMT
From: lemon (A. Lemon - Garden Company)
To: grape
Subject: Next Lecture

葡萄さん:
次回の講習会は
...以下省略...

第 6 章 日本語環境用 SunOS コマンド

この章では、JFP によって日本語環境用に提供される SunOS コマンドについて説明します。

フィルタを用いたコード変換

現在、日本語文字コードには JFP で採用している日本語 EUC 、PCK のほかに、JIS コード、UTF8 などがあります。

Sun のネットワーク機能を使って、他のマシンからファイルをコピーしたり、また他のマシンへファイルを転送したりする場合、採用している日本語文字コードが違うとそのままでは文字化けを起こして使用できません。日本語 EUC から JIS コードへ、またはその逆など相互にファイル中の漢字コードを変換するフィルタが、このコード変換フィルタです。

Solaris では、『X/Open Portability Guide Issue 4.2 (XPG4.2)』規定に準拠した iconv コマンドがサポートされています。iconv は次のような書式で使用します。

sun% iconv -f <変換元文字コード> -t <変換先文字コード> [filename...]

JFP では、この iconv に対応した、日本語文字コード用の変換モジュールを提供しています。iconv に以下のように指定して実行すると、変換が実現されます。iconv コマンドについては、iconv(1) および iconv_ja(5) のマニュアルページも参照してください。また、iconv(3) インタフェースを使用したい開発者の方は、『JFP 開発ガイド』の第 4 章「日本語文字コード変換」もあわせて参照してください。

表 6-1 iconv コマンドによる変換

変換元文字コード 

変換先文字コード 

eucJP

PCK

eucJP

ISO-2022-JP

eucJP

ISO-2022-JP.RFC1468

eucJP

JIS7

eucJP

SJIS

eucJP

UTF-8

eucJP

UTF-8-Java

eucJP

jis

eucJP

ibmj

SJIS

eucJP

SJIS

ISO-2022-JP

SJIS

UTF-8

SJIS

jis

SJIS

ibmj

PCK

eucJP

PCK

UTF-8

PCK

UTF-8-Java

PCK

ISO-2022-JP

PCK

ISO-2022-JP.RFC1468

PCK

jis

PCK

ibmj

ISO-2022-JP

eucJP

ISO-2022-JP

PCK

ISO-2022-JP

SJIS

ISO-2022-JP

UTF-8

UTF-8

eucJP

UTF-8

SJIS

UTF-8

PCK

UTF-8

ISO-2022-JP

UTF-8

ISO-2022-JP.RFC1468

UTF-8-Java

eucJP

UTF-8-Java

PCK

JIS7

eucJP

jis

eucJP

jis

PCK

jis

SJIS

ibmj

eucJP

ibmj

PCK

ibmj

SJIS

上記の文字コードの意味は以下のとおりです。

文字コード

意味 

eucJP

日本語 EUC 

PCK

PCK 

SJIS

PCK と同じ 

ISO-2022-JP

ISO 2022 情報交換用符号による G0 への指示機能を用いて "UI-OSF 日本語環境実装規約 Version 1.1" の規定に従い表現された、ISO 646 IRV または JIS X 0201、JIS X 0208、および JIS X 0212 

ISO-2022-JP.RFC1468

ISO 2022 情報交換用符号による G0 への指示機能を用いて RFC1468 (Request for Comments: 1468 Japanese Character Encoding for Internet Messages) の規定に従い表現された、ISO 646 IRV または JIS X 0201-1976 (片仮名用図形 (キャラクタ集合を除く) および JIS X 0208-1983 

JIS7

ISO-2022-JP と同じ 

jis

JLE、JFP 2.4 以前に提供されていた 7 ビット JIS コード 

ibmj

IBM 漢字コード 

UTF-8

UNICODE 

UTF-8-Java

Java で実装されている UNICODE 

JLE 1.x からの互換性を持つコード変換フィルタのコマンドとして、次のものがあります。

表 6-2 コード変換フィルタコマンド

コマンド 

機能 

jistoeuc

JIS コードを日本語 EUC に変換 

jistosj

JIS コードを PCK に変換 

euctojis

日本語 EUC を JIS コードに変換 

euctosj

日本語 EUC を PCK に変換 

sjtojis

PCK を JIS コードに変換 

sjtoeuc

PCK を日本語 EUC に変換 

ibmjtoeuc

IBM 漢字コードを日本語 EUC に変換 

euctoibmj

日本語 EUC を IBM 日本語コードに変換 

ただし、これらには以下の制限事項があるため、通常は iconv(1) コマンドでの使用をお勧めします。

漢字端末と日本語入力

TTY 環境に構成に使用するコマンドは sttysetterm、および jtty です。これらのコマンドの使用については、各マニュアルページを参照してください。ここでは日本語端末を seeterm で構築する上で使用される、日本語文字コード変換 STREAMS モジュールについて説明します。

JFP は、端末ベースの入出力に対して日本語の処理機能を提供しています。その中でいろいろな種の端末とのインタフェースを取るために setterm で端末を設定することによって扱う文字コード (ロケールにより設定される) と端末の文字コードの違いをコード変換することによって吸収したり、STREAMS 内部で日本語文字コードが正しく扱うことができるような設定をしたりします。

たとえば、ja ロケールで PCK 漢字端末が接続されている場合、入力は日本語 EUC に変換され、端末への出力は PCK に変換されます。

漢字端末を設定する setterm コマンドは、次のような書式で使用します。

sun% setterm [ -x name ] [ -t ] 

日本語文字コード変換 STREAMS モジュール

JFP では、setterm コマンドで漢字端末を設定できるように、以下のような日本語文字コード変換 STREAMS モジュールを提供しています。

表 6-3 日本語文字コード変換 STREAMS モジュール

コード変換 STREAMS モジュール 

説明 

jconvs

PCK 端末用 

jconv7

7 ビット JIS 端末用 

jconv8

8 ビット JIS 端末用 

jconvu

UTF-8 端末用 

jconvrs

ja_JP.PCK ロケール用 

jconvru

ja_JP.UTF-8 ロケール用 

  

現在のロケールと設定したい端末名に応じて、適当な STREAMS モジュールが setterm コマンドを通して設定されます。以下は、setterm-x オプションで指定可能な端末名です。


注 -

日本語ロケール間でロケールを切り替える場合は、その都度、端末設定も行うようにしてください。これらのロケール間では push される STREAMS モジュールが異なるため、再度 setterm が実行されないと正しく表示できなくなります。


表 6-4 setterm 端末名

端末名 

説明 

JapanPCK

PCK

JapanSJIS

SJIS

PCK 端末用 

JapanNewJIS8

NewJIS8

8 ビット新 JIS 端末用 

JapanNewJIS7

NewJIS7

7 ビット新 JIS 端末用 

JapanOldJIS8

OldJIS8

8 ビット旧 JIS 端末用 

JapanOldJIS7

OldJIS7

7 ビット旧 JIS 端末 

JapanEUC

GenericEUC

EUC

日本語 EUC 端末用 

UTF-8

UTF-8 端末用 

ASCII

ASCII 端末用 

Error

setterm を行なった際のエラー復旧用

sane

STREAMS のリセット用 

mailx/in.comsat でのコード変換

複数バイト言語国際化のために拡張された mailx を用いると、日本語 EUC で書かれたメールメッセージは自動的に JIS コードに変換されて送信されます。このようにして変換されたメッセージは受信後、typeprint などメッセージを画面に表示するコマンドにより EUC に変換されて表示されます。また、savecopywrite などのコマンドにより EUC に変換されて格納できます。この変換は、フォルダ内のコードを決定するために用意されたメール変数 folderconv が設定されている場合に実行されます。folderconv が設定されていない場合、メッセージはコード変換されずに格納されます。folderconv はデフォルトで設定されています。また、folderconv がどのような指定の場合でもコード変換をしないで格納するためのコマンドとして、nsavencopy が用意されています。

複数バイト言語国際化のために拡張された in.comsat は、到着メールを JIS コードから EUC に変換して表示します。

使用方法は、第 5 章「国際化 SunOS コマンドの利用」「国際化 SunOS コマンドの利用の「電子メールの送受信」を参照してください。