Linuxにおける日本語環境 1999.5.26


Linuxにおける日本語環境


1. UNIXの日本語化、国際化

英語圏で発展したUNIXは1バイト(8ビット)の情報量で文字コードを規定することを行ってきた。日本語をはじめとする東アジア各国は漢字などにより必要な文字数がアルファベットを基本とする言語にくらべて非常に多い。そこで、各国の言語に合わせた仕様を作る必要が出てきたが、それぞれの言語ごとに文字を適応させる「地域化」が行われた。そのときに策定された文字コードはUNIXで使用されていたASCIIコードを拡張したEUC (Extended Unix Code) であり、現在もUNIX環境の標準文字コードとして利用されている。

しかし、地域化では各国の言語ごとに異なる仕様が必要となり不便であるので、「国際化」が行われた。これは、国際化された環境において一言語として日本語を使うと言う形式である。この特有の言語ごとの環境の形式をlocaleといい、以下のように環境変数で定義される。

言語環境名=language_territory.codeset
(locale名)(言語名_地域名.コードセット名)

例:以下のように入力したあとにdateコマンドを行って結果を比較せよ。

export LANG=ja_JP.eusJP
export LANG=ja_JP.SJIS
export LANG=ja_JP.JIS7
export LANG=C


2. X Window System の国際化

クライアントサーバシステムによりGUI環境をUNIX上で構築するウィンドウシステムにおいても国際化が行われており、日本語環境を利用できる。しかし、その場合には、

・locale による言語切り替え
・言語に依存しない入出力API (Application Programming Interface)
・リソースデータベースの国際化
・Toolkit の国際化

等の項目に注意する必要がある。Xの使用においては、KTerm上でのコマンド利用やEmacs (Mule, XEmacs) 等において日本語が使用できる。


3. 文字コード

UNIX上で日本語を扱う際に使用される文字コードは以下の3種類が中心である。

・日本語EUC
・JIS
・シフトJIS

EUCは上述のようにASCIIコードを拡張して作られた。JISコードは8ビット目を通さない可能性のある通信(インターネット)上で使用するために考案された。シフトJISコードは別名MS漢字コードとも呼ばれ、パソコン上で日本語を扱うために使われていた。

4. 文字集合

文字とコードの対応を文字集合(キャラクタセット)という。文字集合は ISO (International Standardization Organization, 国際標準化機構 ) で定められており、日本語の文字集合はJIS規格に規定されている。情報処理部門(コンピュータ関連)では以下のような文字集合が定義されている。

JIS X 0201-1997
7ビットおよび8ビットの情報交換用符号化文字集合
JIS X 0201のローマ字とJIS X 0201 の1バイトカナ(半角カナ)が定義されている。ASCII文字とほぼ同じコード体系で8ビットのうち最上位のビットを使用しない128種類の制御文字と図形文字がある。ASCIIとの違いは\と\、 ̄と~である。

日本語の漢字は数千文字あるため図形文字に割り当てられるコードを2つ以上並べて表現する多バイトコードが必要になる。

JIS X 0208-1997
7ビットおよび8ビットの2バイト情報交換用符号化文字集合
JIS第1水準、第2水準の漢字を含む6,879文字が収められている。第1水準は読み(音読みが基本)の順、第2水準は部首順に配列されている。

JIS X 0212-1990
情報交換用漢字符合-補助漢字
JIS X 0208にはない非漢字、補助漢字の合計6,067文字がある。


5. 実際の文字コード利用

ある文字コードの列が1バイト文字の列なのか、2バイト文字なのか、両方を含むものなのか区別する必要がある。その拡張法の国際規格がISO 2022 (日本語訳が JIS X0202) である。

JISコード
文字集合として JIS X 0201のローマ字、JIS C 6226, JIS X 0208-1983, ASCII文字を扱う。文字集合を切り替えるためにエスケープシーケンス(特殊なコード列)を用いる。すべてのバイトを7ビット以内におさめることが可能であり、8ビット目が削除される可能性のある通信経路でデータを送る際に利用することが目的として考案された。電子メールやネットニュースで使われる文字コードである。ISO-2022-JPと言う名称でRFC1468に規定されている。

日本語EUC
EUC は必要になれば 3 バイト、4 バイトのコードも扱うことができる拡張性を持つ。日本語 EUC は、JIS X 0201のローマ字、JIS X 0208、JIS X 0201の1バイトカナ、JIS X 0212 の補助漢字の文字集合である。JIS X 0208 の文字集合は漢字1文字を表現する2バイトのそれぞれの最上位ビットを1に変えて表す。(8ビット目も使用することになる。)

シフトJISコード
Microsoft によって作られたコードであり、PC98、PC/AT 互換機、Mac などパソコン一般に用いられている。変換式を使用すると JIS コードへの変換も行なえるが、国際規格の ISO 2022 には違反している。エスケープシーケンスなしに1バイト文字と2バイト文字を混在させるため、2バイト文字の1バイト目は1バイト文字として使用されていないものになっている。半角カタカナの領域もあらかじめとってあるが、通信で使うことはできないので注意を要する。

注)機種依存文字
丸数字,簔碓無号◆△泙拭▲僖愁灰鷯紊瞭本語入力プログラムにおいて用意されている図形文字気覆匹蓮∋藩僂垢詈源コード環境によってコードが統一されていない。よって、通信で用いた場合に相手先では別の文字として表示される可能性がある。電子メール等では利用しないこと。とくに、ワープロ等で作成した文章をそのままコピーする時等注意すること。


6. 日本語の表示

端末上で日本語を表示するためには以下の方法がある。

・日本語表示が可能なマシンを端末とする。
・コンソール上で日本語を使えるようにする。
・X上でターミナルエミュレータを使う。

この内、下の二つについて以下に説明する。

KON
コンソール上で日本語を表示できるようにする疑似端末を作るソフトであり、Linux上で広く利用されている。JISコードとEUCはデフォルトで正しく表示される。Emacs (Mule) 等で作業する場合には文字コードは気にしなくてもよい。

X上のターミナルエミュレータ
XのGUI環境においてコンソールを利用するために仮想端末が用いられるが、標準で使われるのがxtermである。しかし、xtermは日本語を表示できない。そこで、xtermを多言語用に拡張したktermが用いられる。文字コードはマウスカーソルをkterm上においてCtrl+中クリックで表示されるVT Optionのメニューで切り替えることができる。

なお、kterm上であってもlsでのファイル名表示は日本語を表示できないのでファイル名には日本語を使用しない方が良い。


7. フォント

X上で文字を表示することは他の図形を表示するのと同じ仕組みであり、あらかじめ用意されているビットマップ化された字体(フォント)を描画する。よって、日本語のフォントをあらかじめ用意しておかないと日本語の表示ができない。


8. 日本語の入力 (Canna の利用)

サーバ/クライアントモデル

UNIXにおいてはサーバ/クライアントモデルのアプリケーションを利用することが多い。日本語入力においても、入力している端末とかな文字列を漢字かな混じり文に変換するプログラムは同一ホスト上になくても良い。この漢字変換を行っている部分が変換サーバである。ここでは、Cannaを用いた例を紹介する。

Cannaにおいては、変換サーバはcannaserverであり、日本語入力のフロントエンドプロセッサとしてcanuum (キャニュウム) がある。また、X対応の入力メソッド(X Input Method, XIM)には kinput2 がある。cannaserver と canuum を合わせて Canna と呼ぶ。X上のktemにおいてコマンドラインなどで日本語を入力する際にはkinput2が用いられる。


エディタ上からの日本語入力

Emacs (Mule)

Emacsはエディタと言うよりも統合環境と言った方が近い存在で、電子メールやネットニュースの読み書き、プログラミングやデバッグなどもこの上で行うことができる、非常に高機能なエディタである。UNIXにおいては他にviという人気の高いエディタもあるが、今回はEmacsのみに絞って話を進める。

現在のシステムでは起動時にcannaserverも自動的に起動されているので、Emacs起動後は日本語が使用できる状態になっている。実際には、

emacs ./text

等してEmacsを起動したあと、

Alt+x canna

と入力し、

Ctrl+\

でローマ字ひらがな入力が行なえる。以下にEmacsとCannaの基本的なキー操作を列挙する。日本語入力モードへの切り替えはそれぞれの環境下で.emacsというファイルに設定されているので別の環境(ホスト)で作業する時には注意すること。


Emacs

←↑↓→ カーソル移動
Ctrl+a 行の最初に移動
Ctrl+e 行の最後に移動
Esc < ファイルの最初に移動
Esc > ファイルの最後に移動
Ctrl+d カーソル位置の文字削除
BS カーソル位置の前の文字削除
Ctrl+k カーソル位置から文末まで削除
Ctrl+g 入力キャンセル
Ctrl+x U アンドゥ
Ctrl+@ マーク
Ctrl+w マーク位置からカーソルの前の文字までカット
Ctrl+y ペースト
Ctrl+x Ctrl+s ファイル保存
Ctrl+x Ctrl+w ファイル名を付けて保存
Ctrl+x Ctrl+f ファイルを開く
Ctrl+s 文字列検索
Ctrl+h t チュートリアル
Ctrl+x Ctrl+c 終了


Canna

スペースキーを押す前
space 変換
Ctrl+b カーソル左移動
Ctrl+f カーソル右移動
Ctrl+n カーソル下移動
Ctrl+p カーソル上移動
BS 一文字消去
Enter 確定
F1 記号入力
F2 16進コード
F3 部首入力

変換中(スペースキーを押して確定する前)
space 次候補表示
Ctrl+o 文節伸ばし
Ctrl+i 文節縮め
Ctrl+b カーソル左移動
Ctrl+f カーソル右移動
Ctrl+n 次の変換候補表示
Ctrl+p 前の変換候補表示
Ctrl+w 変換候補一覧
Enter 確定
BS 変換取り止め



補足
Xの環境では、マウスの左ボタンをおしたままドラッグして範囲を選択した後、別の場所で中ボタンをおすことによりコピー&ペーストが可能である。


ホームページ作成講座トップページに戻る

indexページへ戻る

- # -