JFP ユーザーズガイド

パート I JFP - SunOS

第 1 章 JFP の概要

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

JFP とは

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

各国語対応と日本語対応

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

国際化

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

CSI (Code Set Independence)

エンコーディングに依存しない国際化機構を「CSI (Code Set Independence) 化された国際機構」と呼びます。国際化機構の CSI 化により、日本語 EUC (Extended Unix Code) を扱う ja または ja_JP.EUC ロケールに加え、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 パッケージの一覧は、『Solaris 8 ご使用にあたって (SPARC 版 / Intel 版)』 で確認できます。

日本語ロケール

JFP は、システム提供の日本語ロケールとして、日本語 EUC を扱う ja または ja_JP.EUC ロケール、PC 漢字コードを扱う ja_JP.PCK ロケール、UTF-8 を扱う ja_JP.UTF-8 ロケールを提供します (以降、この 3 ロケールを総称して「日本語ロケール」と記述します)。 「japanese」というロケール名は、ja と同等のロケールを提供します。これは、日本語 Solaris 1.x システムとのネットワーク環境での共存のために用意されたものです。日本語ロケールの定義内容の詳細は、第 2 章「日本語ロケール」を参照してください。

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

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

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

SunOS 5.x で国際化されたコマンドに加えて、日本語環境をサポートするための以下の 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(3C) の使用法については『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 は、ATOK12、Wnn6、ATOK8、および cs00 による日本語入力機能を提供しています。詳細は、『日本語入力システムの概要とセットアップ』、『ATOK12 ユーザーズガイド』、『Wnn6 ユーザーズガイド』、『ATOK8 ユーザーズガイド』、『cs00 ユーザーズガイド』を参照してください。

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

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

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

プロセッサの種類 

キーボードの種類 

SPARC 

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

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

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

IA 

106 キーボード 

J3100 キーボード 

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

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

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

JFP では、JLE システム (SunOS 4.x に対する日本語処理機能) 上で作成されたアプリケーションを動作させるために、JLE バイナリ互換性サポートパッケージを提供しています。バイナリ互換性パッケージの一般的な注意事項および使用条件については、『バイナリ互換性ガイド』を参照してください。以下にパッケージ固有の注意事項を示します。

第 2 章 日本語ロケール

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

日本語文字コード

日本語 EUC

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

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


注 -

「japanese」というロケール名は将来の Solaris リリースでは提供されません。「ja」という名前に変更することをお勧めします。


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

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

文字分類 (LC_CTYPE カテゴリ)

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

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

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

文字クラス名 

意味 / 範囲1

upper

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

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

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



 

    JIS X 0208

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


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


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



 

    JIS X 02122

      ダイアクリティカルマーク付きギリシャアルファベット文字大文字 (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 クラスに含まれる文字を除いたすべての文字

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

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


注 -

ja_JP.UTF-8 ロケールでは、各クラスに、Unicode で定義された上記以外の文字も追加されています。


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

文字クラス名 

意味 / 範囲1

jkanji

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

    JIS X 0208

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



    JIS X 02122

      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 または ja_JP.EUC ロケール

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



    0xf5a1 - 0xfefe


    0x8ff5a1 - 0x8ffefe


    ja_JP.PCK ロケール

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



 

    ja_JP.UTF-8 ロケール

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



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

vdc

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

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

    ja または ja_JP.EUC ロケール

      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



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

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

文字の照合順序 (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 または ja_JP.EUC (日本語 EUC を扱う) 、ja_JP.PCK (PCK を扱う) または ja_JP.UTF-8 (UTF-8 を扱う) ロケール名を設定することです。環境変数の設定方法は、使用しているシェルプログラムによって異なりますが、 csh (C シェル) の場合、以下のコマンドを実行します。


sun% setenv LANG locale1

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

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


sun$ LANG=locale2
sun$ export LANG

2. locale には jaja_JP.EUCja_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 locale3
sun% setterm -x Codeset4

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

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

sh または ksh の場合 :


sun$ LANG= locale5; export LANG
sun$ setterm -x Codeset6

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

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


注 -

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


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

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

ja 

% setenv LANG ja

% setterm -x JapanEUC

% LANG=ja; export LANG

% setterm -x JapanEUC

ja_JP.eucJP 

% setenv LANG ja_JP.eucJP

% setterm -x JapanEUC

% LANG=ja_JP.eucJP; 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 オペレーティング環境自体と、JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。たとえば、以下のコマンドがあります。

ls 
/usr/bin/ls国際化機能を持つ標準の ls コマンド
/usr/ucb/lsBSD 互換性パッケージの ls コマンド
/usr/xpg4/bin/lsXPG4 準拠の 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 オペレーティング環境自体と、JFP がインストールされたシステムでは、同名のシステムコマンドがいくつか存在することがあります。これに伴って、オンラインマニュアルページについても、同名のエントリが複数の場所に存在することがあります。たとえば、以下のマニュアルページがあります。

ls 
/usr/share/man/man1/ls.1国際化された標準の ls コマンド用
/usr/share/man/man1b/ls.1bBSD 互換性パッケージの 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 シェルの初期化に使われます。.cshrc ファイルは、C シェルがログインシェルとして起動されたときにも .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) のマニュアルページを参照してください。install_comsat(1M)のマニュアルページを参照するには、環境変数 MANPATH または man(1) のオプション -M の引数に /usr/SUNWale/man が含まれている必要があります。

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

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 では、日本語 dumb プリンタをサポートする目的で、以下のファイルを提供しています。

表 4-1 日本語 dumb プリンタのサポート用に提供されるファイル
 プロセッサの種類 キーボードの種類
/usr/share/lib/terminfo/c/canon-ls-a408Canon LASERSHOT A408 用の terminfo データベース (Canon LASERSHOT の LIPS に準拠)
/usr/share/lib/terminfo/e/epson-vp5085EPSON-VP5085 用の terminfo データベース (EPSON ESC/P の ESC/P24-J84 に準拠)
/usr/share/lib/terminfo/n/nec-pr201NEC 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 プリンタに日本語テキストを印刷する方法は 2 通りあります。1 つは、jtops(1) を使ってクライアント側で PostScript に変換し、プリンタサーバーに渡す方法であり、もう 1 つは、サーバー側で変換する方法です。ここでは、サーバー側で変換する場合のプリンタの設定方法について説明します。

提供されるファイル

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

制限事項

プリンタの追加方法

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

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


注 -

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


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

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

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

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

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

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

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

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

以下に手順を示します。

  1. dtterm などの端末エミュレータを起動し、以下を実行します。

    sun# lpadmin -p vp5085 -v /dev/term/a -T epson-vp5085 -I None ¥
    -i /usr/lib/lp/model/jstandard
    sun# lpadmin -d vp5085
    sun# accept vp5085
    sun# enable vp5085
    

    なお、terminfo (-T) と content (-I) は使用するプリンタによって異なります。以下の表を参考にしてください。

    表 4-6 プリンタタイプ
     コントロールコード terminfo (-T) content (-I)
     Canon LASERSHOT canon-ls-a408 None
     EPSON ESC/P epson-vp5085 None
     NEC 201PL nec-pr201 None
     日本語 PostScript PS postscript

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

    日本語 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
    
  3. 必要に応じて、インタフェースプログラムの構成を変更します。


    sun# cd /etc/lp/interfaces
    sun# vi vp5085
    

    たとえば、常にバナーページを印刷しない場合は、インタフェースプログラムを編集して、「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"
    :
  4. 手順 1 でデバイス名 (lpadmin コマンドのオプション -v の引数) として /dev/bpp0 以外を指定した場合は、次のように入力して、stty オプションを設定します。


    sun# lpadmin -p vp5085 -o "stty=-opost"
    
  5. システムをリブートします。


    sun# sync;sync;sync;reboot
    

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

  1. dtterm などの端末エミュレータを起動し、以下を実行します。


    sun# lpadmin -p vp5085 -s hiraki¥!vp5085
    
  2. /etc/printers.conf ファイルを確認します。

    printers.conf ファイルの該当するサーバー部分に以下のように「Solaris」が入っていることを確認します。


    vp5085:¥
    :bsdaddr=hirari,vp5085,Solaris:

    以上の手順を終了すると、lp コマンドを使用して、追加したリモートプリンタに出力できます。

ネットワークプリンタとして追加する場合

  1. ネットワークプリンタとして登録します。

    以下の例は、日本語 PostScript プリンタをネットワーク経由で接続した場合の例です。プリンタ側には、あらかじめ以下のように設定されていると仮定します。


    Host Name : nwpr2
    Printer Name : pspr
    プリンタ側の設定方法については、各プリンタのマニュアルを参照してください。


    sun# lpadmin -p pspr -I postscript -T PS -v /dev/null ¥
    -i /usr/lib/lp/model/netstandard -o dest=nwpr2:pspr ¥
    -o protocol=bsd
    sun# accept pspr
    sun# enable pspr
    
  2. 次のように入力して、テキストファイル印刷フィルタを登録します。


    sun# cd /etc/lp/fd
    sun# lpfilter -x -f postprint
    sun# lpfilter -f jpostprint -F jpostprint.fd
    
  3. 必要に応じて、インタフェースプログラムの構成を変更します。


    sun# cd /etc/lp/interfaces
    sun# vi vp5085
    

    たとえば、常にバナーページを印刷しない場合は、インタフェースプログラムを編集して「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"
    :
  4. システムをリブートします。


    sun# sync;sync;sync
    sun# reboot
    

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 パッケージがインストールされている場合は、次のようなメッセージが表示されます。


    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 パッケージがインストールされている場合は次のようなメッセージが表示されます。


    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 キーボード 

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

 IA

106 キーボード 

J3100 キーボード 

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

日本語タイプ 5 キーボードの制限事項については、U.S. タイプ 5 キーボードと同じです。

日本語キーボードについては、 SunOS の「各国語キーボードサポート」機能により、自動的に対応するキーテーブルが読み込まれます。

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

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

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

vi エディタ

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

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


注 -

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


vi の起動

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


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

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

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

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


注 -

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


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

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


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

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


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

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

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


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

上の例では、画面 2 行目の最後のカラムに「ド」の文字がかかりますが、行内には収まりません。この ような場合、2 行目の行末の 1 カラムはスキップされ、「ド」の文字が次の行に折り返されます。2 行目の行末の「‾」は、この処理を示しています。環境変数 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 キーを入力すると、ファイル名、行数、バイト数が表示され、ファイルが保存されます。

Graphic

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

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

警告を無視して vi を終了する場合は、q! または quit! と入力します。

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

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

マニュアルページの参照

環境変数 LC_MESSAGES が日本語ロケールに設定されているか、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 の作成

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

また、catman コマンドは、whatis(1) および apropos(1) コマンドによって検索されるシステム機能の要約情報のデータベースファイル windex を作成します。-n オプションを指定すると、このデータベースは作成されません。また -w オプションを使うと、このデータベースの作成のみが行われます。catman コマンドは、常に英語のマニュアルページを清書します。それに加え、ユーザーが現在使用しているロケール用のマニュアルページがある場合は、そのロケールのマニュアルページも清書します。たとえば、オンラインマニュアルページのルートディレクトリが /usr/share/man であり、 catman を実行するユーザーの現在のロケールが ja の場合には、次のマニュアルページがすべて清書されます。

/usr/share/man/ja/sman<n>/* (ja ロケール用の SGML マニュアルページ)
/usr/share/man/ja/man<n>/*  (ja ロケール用の nroff マニュアルページ)
/usr/share/man/sman<n>/*    (英語の SGML マニュアルページ)
/usr/share/man/man<n>/*     (英語の nroff/troff マニュアルページ)

whatis による機能要約の参照

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


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

apropos によるキーワード検索

whatis とは逆に、コマンド機能要約文中のキーワードからコマンド名を探したいときには apropos コマンドを使用できます。環境変数 LC_MESSAGES が日本語ロケールに設定されているか、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) を入力します。割り込みキーを連続して 2 回入力すると、メッセージの作成を中止し、シェルに戻ります。途中まで作成されていたメッセージの内容は、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%

メッセージの読み取り

今度は、先程ユーザー 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 のシステム環境設定」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(1) および iconv_ja(5) のマニュアルページを参照してください。また、iconv(3C) インタフェースを使用する開発者は、『JFP 開発ガイド』も参照してください。

表 6-1 iconv コマンドによる変換
 変換元文字コード 変換先文字コード
eucJPPCK
eucJPISO-2022-JP
eucJPISO-2022-JP.RFC1468
eucJPJIS7
eucJPSJIS
eucJPUTF-8
eucJPUTF-8-Java
eucJPjis
eucJPibmj
eucJPibm5026
eucJPibm5035
eucJPibm930
eucJPibm931
eucJPibm939
SJISeucJP
SJISISO-2022-JP
SJISUTF-8
SJISjis
SJISibmj
PCKeucJP
PCKUTF-8
PCKUTF-8-Java
PCKISO-2022-JP
PCKISO-2022-JP.RFC1468
PCKjis
PCKibmj
PCKibm5026
PCKibm5035
PCKibm930
PCKibm931
PCKibm939
ISO-2022-JPeucJP
ISO-2022-JPPCK
ISO-2022-JPSJIS
ISO-2022-JPUTF-8
UTF-8eucJP
UTF-8SJIS
UTF-8PCK
UTF-8ISO-2022-JP
UTF-8ISO-2022-JP.RFC1468
UTF-8ibm5026
UTF-8ibm5035
UTF-8ibm930
UTF-8ibm931
UTF-8ibm939
UTF-8ms932
UTF-8UTF-8-ms932
UTF-8-ms932UTF-8
UTF-8-JavaeucJP
UTF-8-JavaPCK
JIS7eucJP
jiseucJP
jisPCK
jisSJIS
ibmjeucJP
ibmjPCK
ibmjSJIS
ibm5026PCK
ibm5026UTF-8
ibm5026eucJP
ibm5035PCK
ibm5035UTF-8
ibm5035eucJP
ibm930PCK
ibm930UTF-8
ibm930eucJP
ibm931PCK
ibm931UTF-8
ibm931eucJP
ibm939PCK
ibm939UTF-8
ibm939eucJP
ms932UTF-8

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

表 6-2 iconv で使用する文字コードの意味
 文字コード 意味
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
ibm930

IBM CCSID (Coded Character Set Identifier) 930 

SBCS はカタカナと英小文字両方をサポート。SBCS の英小文字に割り当てるコードはコードページ 37 (米国/カナダ) とは異なる。MBCS 中のユーザー定義文字領域は 4370 文字分 

ibm931

IBM CCSID (Coded Character Set Identifier) 931 

SBCS はカタカナをサポートしない。MBCS は ibm930 と同じ 

ibm939

IBM CCSID (Coded Character Set Identifier) 939 

SBCS はカタカナと英小文字両方をサポート。SBCS の英小文字に割り当てるコードはコードページ 37 (米国/カナダ) と同じ。MBCS は ibm930 と同じ 

ibm5026

IBM CCSID (Coded Character Set Identifier) 5026 

MBCS 中のユーザー定義文字領域が 1880 文字分であることを除き ibm930 と同じ。iconv の動作は ibm930 と同じ 

ibm5035

IBM CCSID (Coded Character Set Identifier) 5035 

MBCS 中のユーザー定義文字領域が 1880 文字分であることを除き ibm939 と同じ。iconv の動作は ibm939 と同じ 

ms932 WindowsNT 3.51 がマイクロソフトコードページ 932 と Unicode の間で行う変換に基づいた変換を行う
UTF-8-ms932 ms932 からの変換の結果得られるコードセット (UTF-8、eucJP、PCK など)と、ms932 以外のコードセットからの変換の結果得られる UTF-8 との間で変換可能

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

表 6-3 コード変換フィルタコマンド
 コマンド 機能
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 環境の構成に使用するコマンドは、sttysettermjtty の 3 つです。これらのコマンドの使用方法については、各マニュアルページを参照してください。ここでは、setterm を使って日本語端末を構築する際の日本語文字コード変換 STREAMS モジュールについて説明します。

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

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

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


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

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

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

表 6-4 日本語文字コード変換 STREAMS モジュール
 コード変換 STREAMS モジュール 説明
jconvs PCK 端末用
jconv7 7 ビット JIS 端末用
jconv8 8 ビット JIS 端末用
jconvu UTF-8 端末用
jconvrs ja_JP.PCK ロケール用
jconvru ja_JP.UTF-8 ロケール用

setterm コマンドを実行すると、現在のロケールと設定したい端末名に応じて、適切な STREAMS モジュールが設定されます。表 6-5setterm-x オプションで指定できる端末名を示します。


注 -

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


表 6-5 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 端末用
Errorsetterm を行なった際のエラー復旧用
sane STREAMS のリセット用

ロケールと端末の文字が同じであれば、setterm(1) を使用しないで端末の設定を行うことができます。


sun %	stty deteucw

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

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

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

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