Weekly "Keyboard World"
週刊「鍵盤世界」
12. The whole aspect of JIS X 6002-1980
Chapter 1. 7-bit and 8-bit coded character sets for information interchange
日本語 106 キーボードなどは、俗に「JIS 配列キーボード」と呼ばれています。 しかし、JIS に定義されているキーボードの配列というものは、一体どのようなものなのでしょうか。 今回から数回に渡って、この「JIS 配列キーボード」の真実について調べていきたいと思います ― 1997.11.9 掲載
日本で使われているキーボードは、大抵「US 配列」か「JIS 配列」 と呼ばれているもののどちらかであることは、読者の皆様もよくご存知のはずです。 最近の AT 互換機を購入した場合、デフォルトで JIS 配列の 「日本語 106 キーボード」がバンドルされていますし、Apple も「Apple Keyboard II JIS」を一部の Macintosh にバンドルしています。
世間一般では誰もが普通に「JIS 配列キーボード」と言いますから、 「JIS(Japanese Industrial Standard、日本工業規格) にはキーボードの規格があって、これらはそれに従っているんだな」と考えるのは当然ですよね。 しかし JIS で定義されているキーボードの規格というのは、皆様が考えているようなものとは少し違っているのです。
実は「JIS 配列」と言われているキーボードの殆どは、「JIS 規格」には準拠していません。 「JIS 配列」のキーボードは、ただ単に「カナと特殊記号の配列だけがJISの規格に準拠している」 というだけなんですね。
今回からの連作「The whole aspect of JIS X 6002-1980」では、一般に言われている「JIS 配列」と、JIS で定義されている「けん盤配列」の違いを白日の元に晒していきます。
JIS には様々なキーボードの規格がありますが、情報処理用…つまり計算機で使うキーボードの規格としては、 「JIS X 6002-1980」と「JIS X 6004-1986」の二つが挙げられます。 この二つは俗に「旧 JIS」「新 JIS」と言われていますが、「JIS 配列キーボード」の元になっているのは「旧 JIS 配列」のほうです。
この「旧 JIS 配列」こと「JIS X 6002-1980」、規格名称は「情報処理系けん盤配列」、 英名は「Keyboard Layout for Information Processing Using the JIS 7 Bit Coded Character Set」といいます。何ともご大層な名前がついてますけど、規格なんてどこでもこんなものですね。
「JIS X 6002-1980」規格本文の冒頭には、この規格は JIS X 0201
(情報交換用符合)の英字・片仮名系 7 単位符号を用いる両手操作系情報処理系けん盤配列について規定する
という、少しばかり小難しいことが書かれています
また、規格英名の「JIS 7 Bit Coded Character Set」という部分にも注目して下さい。
つまり、「JIS X 6002-1980」で規定されているキーボードは、「JIS 規格において
7 ビットで規定された文字集合を扱う」ためのものであるということです。
さて、そうは言っても「『7 ビットで規定された文字集合』や、『JIS X 0201』とは何ですか?」という方も多いのではないでしょうか。というわけで、「JIS X 6002-1980」について語る前に、この「7 ビットで規定された文字集合」を規定している「JIS X 0201」っていうものを説明していきましょう。
さて、「JIS X 0201-1997」という規格は、ごく大雑把に言ってしまいますと、
アルファベットと特殊記号しかなかった ASCII(ISO/IEC 646)にカタカナの文字を加えて、ついでに「バックスラッシュ」を「円マーク」に、「チルダ」を「オーバライン」に変えたもの
或いは、
要するに、所謂「半角」英数字と「半角カナ」を定義したもの
だと言えるでしょう(身も蓋もありませんね)。「JIS X 0201-1997」では 7 ビットの文字集合と 8 ビットの文字集合が規定されていますが、 8 ビットの文字集合はとりあえず抜きにして、7 ビットの文字集合についてだけ考えることにしましょう。
多少なりとも計算機のことをかじった人でしたら、「計算機は文字をビットの集合として扱っている」なんてことをご存知かと思います。 「JIS X 0201-1997」の規定する 7 ビット文字集合では、 b7、b6、b5、b4、 b3、b2、b1 と呼ばれる 7 ビットで一つの文字を表します。
7 ビットで表現できる状態数は 128(27) 個ですから、 7 ビットの文字集合では 128 文字が表現できることになります。 とは言え、ASCII ではアルファベットと特殊記号、制御記号だけで 128 文字を使い切ってしまっています。 7 ビットで ASCII の全ての文字に加えて、カタカナまで扱うコトは可能なのでしょうか?
というわけで、多少大きいのですが、次の表を見て下さい。
| b7 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | ||||
| b6 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | ||||
| b5 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | ||||
| b4 | b3 | b2 | b1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | |
| 0 | 0 | 0 | 0 | 0 | CL 領域 |
GL領域 (2/0、7/15を 除く) |
||||||
| 0 | 0 | 0 | 1 | 1 | ||||||||
| 0 | 0 | 1 | 0 | 2 | ||||||||
| 0 | 0 | 1 | 1 | 3 | ||||||||
| 0 | 1 | 0 | 0 | 4 | ||||||||
| 0 | 1 | 0 | 1 | 5 | ||||||||
| 0 | 1 | 1 | 0 | 6 | ||||||||
| 0 | 1 | 1 | 1 | 7 | ||||||||
| 1 | 0 | 0 | 0 | 8 | ||||||||
| 1 | 0 | 0 | 1 | 9 | ||||||||
| 1 | 0 | 1 | 0 | 10 | ||||||||
| 1 | 0 | 1 | 1 | 11 | ||||||||
| 1 | 1 | 0 | 0 | 12 | ||||||||
| 1 | 1 | 0 | 1 | 13 | ||||||||
| 1 | 1 | 1 | 0 | 14 | ||||||||
| 1 | 1 | 1 | 1 | 15 | ||||||||
これは、「符号表」と呼ばれるものです(ASCII でも、このような表が使われてますよね)。 b7、b6、b5、b4、b3、b2、 b1の 7 ビットそれぞれの値が 1 か 0 かによって、この表のどのマスが使用されるかが決まります。
列番号は 7 ビットの前 3 ビットで表現されますから、0 から 7 までの値を取ります。 行番号は 7 ビットの後ろ 4 ビットで表現されますので、0 から 15 までの値ですね。 というわけで、符号表で任意のマスを指示するには、 「列番号(0-7) / 行番号(0-15)」という表記を利用します。 この説明は多少正確さを欠いていますが、ここでは文字コードの説明をするのが本筋ではないので、ご了承下さい。
例えば、b6だけが 1、それ以外のビットが全部 0 の場合、 0 行の 2 列目が選択される、ということになります。 この場合の表記は、もちろん「2/0」となります。 また、全部のビットが 1 の場合、15 行目の 7 列目が選択されます(表記は「7/15」)。
ところで…通常、符号表にはマス目と文字が並んでいるのですが、 この表では大きな「CL 領域」と「GL 領域」しか載っていません。 ここで挙げた符号表は、符号表の構造を示すためのものだからです。
さて、7 ビット文字集合の符号表…つまり、上で挙げた大きな表の構造を説明しましょう。
- 「CL 領域」と呼ばれる列 0 及び列 1 の領域には、 32 個の制御文字が格納されます。「CL」の「C」は「Control」の「C」です。
- 2/0 には、文字 SPACE、つまり、空白文字が入ります。
- 「GL 領域」と呼ばれる列 2 から列 15 の領域のうち、 2/1 から 7/14 までには、94 個の図形文字が格納されます。「GL」の「G」は「Graphic」の「G」です。
- 7/15には、文字 DEL が入ります。
本当は、きちんと「2/0」、「2/1 から 7/14」、「7/15」を分割し、表全体で 4 つの領域を書きたかったんですが…HTML の table 要素では、これが限界みたいです。
ところで、「『CL』『GL』の『C』と『G』の意味はわかったけど、『L』の意味は?」 と言われる方がおられるかもしれませんね。この「L」は「Left」の「L」です。8 ビットの符号表ではこの表が 2 倍の大きさになるのですが、そのときはそれぞれ「Right」を意味する「CR」領域と「GR」領域が登場します。
上記の表は領域を示しただけのものですから、実際に「符号表」として使うためには、 「4 つのそれぞれの領域に対して、どんな文字集合を割り当てるのか」ということを決めなければなりません。 JIS X 0201-1997 は、「7 ビットの符号化文字集合」として次の 3 つを定義しています。
- ラテン文字用 7 ビット符号
- 片仮名用 7 ビット符号
- ラテン文字・片仮名用 7 ビット符号
それぞれについてざっと説明しましょう。 まず、「ラテン文字用 7 ビット符号」では、符号表の各領域に次のような文字集合を割り当てます。 なお、この規格で言うところの「ラテン文字」とは、一般的に「英数字」と言われているものと同じだと考えていただいて結構です。
-
「CL 領域」には次のような制御文字の文字集合が入ります。この文字集合は、JIS X 0211
という規格で「C0集合」という名称で定義されています。
C0 集合(JIS X 0211) C0 集合 b7 0 0 b6 0 0 b5 0 1 b4 b3 b2 b1 0 1 0 0 0 0 0 NUL DLE 0 0 0 1 1 SOH DC1 0 0 1 0 2 STX DC2 0 0 1 1 3 ETX DC3 0 1 0 0 4 EOT DC4 0 1 0 1 5 ENQ NAK 0 1 1 0 6 ACK SYN 0 1 1 1 7 BEL ETB 1 0 0 0 8 BS CAN 1 0 0 1 9 HT EM 1 0 1 0 10 LF SUB 1 0 1 1 11 VT ESC 1 1 0 0 12 FF IS4 1 1 0 1 13 CR IS3 1 1 1 0 14 SO IS2 1 1 1 1 15 SI IS1 - 2/0 には、常に文字 SPACE が入ります。
- 「GL 領域」には、次に挙げる「ラテン文字用図形文字集合」が入ります。
ラテン文字用図形文字集合 ラテン文字用
図形文字集合b7 0 0 1 1 1 1 b6 1 1 0 0 1 1 b5 0 1 0 1 0 1 b4 b3 b2 b1 2 3 4 5 6 7 0 0 0 0 0 0 @ P ` p 0 0 0 1 1 ! 1 A Q a q 0 0 1 0 2 " 2 B R b r 0 0 1 1 3 # 3 C S c s 0 1 0 0 4 $ 4 D T d t 0 1 0 1 5 % 5 E U e u 0 1 1 0 6 & 6 F V f v 0 1 1 1 7 ' 7 G W g w 1 0 0 0 8 ( 8 H X h x 1 0 0 1 9 ) 9 I Y i y 1 0 1 0 10 * : J Z j z 1 0 1 1 11 + ; K [ k { 1 1 0 0 12 , < L \ l | 1 1 0 1 13 - = M ] m } 1 1 1 0 14 . > N ^ n ~ 1 1 1 1 15 / ? O _ o - 7/15 には、文字 DEL が入ります。
「片仮名用 7 ビット符号」では、符号表の各領域に次のような文字集合を割り当てます。
- 「CL 領域」には、JISX 0211 の C0 集合を割り当てます。
- 2/0 には、常に文字 SPACE が入ります。
-
「GL 領域」には、次に挙げる「片仮名用図形文字集合」が入ります。
なお、6/0 から 7/14 までは、将来の標準化(…いつなんでしょう?)のために保留されています。
仮名文字用図形文字集合 片仮名用
図形文字集合b7 0 0 1 1 1 1 b6 1 1 0 0 1 1 b5 0 1 0 1 0 1 b4 b3 b2 b1 2 3 4 5 6 7 0 0 0 0 0 ー タ ミ 未
定
義0 0 0 1 1 。 ア チ ム 0 0 1 0 2 「 イ ツ メ 0 0 1 1 3 」 ウ テ モ 0 1 0 0 4 、 エ ト ヤ 0 1 0 1 5 ・ オ ナ ユ 0 1 1 0 6 ヲ カ ニ ヨ 0 1 1 1 7 ァ キ ヌ ラ 1 0 0 0 8 ィ ク ネ リ 1 0 0 1 9 ゥ ケ ノ ル 1 0 1 0 10 ェ コ ハ レ 1 0 1 1 11 ォ サ ヒ ロ 1 1 0 0 12 ャ シ フ ワ 1 1 0 1 13 ュ ス ヘ ン 1 1 1 0 14 ョ セ ホ ゛ 1 1 1 1 15 ッ ソ マ ゜ - 7/15 には、文字 DEL が入ります。
「ラテン文字・片仮名用7ビット符号」では、制御文字 SHIHT-IN(シフトイン)と SHIHT-OUT(シフトアウト)の交互利用によって、ラテン文字用図形文字集合と片仮名用図形文字集合を切替えて使うことが出来ます。 SHIHT-IN は JIS X 0211 の C0 集合の中で「SI」として(0/15)、SHIHT-OUT は「SO」として(0/14)、それぞれ定義されています。
さて、「ラテン文字・片仮名用7ビット符号」では、符号表の各領域に次のような文字集合を割り当てます。
- 「CL 領域」には、JIS X 0211 の C0 集合を割り当てます。
- 2/0 には、常に文字 SPACE が入ります。
-
「GL 領域」には、次の図形文字集合を割り当てます。
- SI が先に出現しており、次に SO が出現するまでは、ラテン文字用図形集合を割り当てる。
- SO が先に出現しており、次に SI が出現するまでは、片仮名用図形集合を割り当てる。
- 7/15 には、文字 DEL が入ります。
ラテン文字・片仮名用 7 ビット符号では、初期状態…つまり、まだ SI も SO も出現していない状態での GL 領域への割り当ては、ラテン文字用図形集合で開始するのが望ましい、とされています。
というわけで、ラテン文字・片仮名用 7 ビット符号を使った場合の情報表現は、このようになります。
- 最初はラテン文字で始まります。
I am Japanese.- SO が出現しました。
<SO>- 次からはカタカナが出現します。
ニホンノ ミナサン コンニチハ。- SI が出現すると…
<SI>- 次からはラテン文字が出現します。
Nan'no Koccha!
というわけで、SI や SO が入るために多少面倒ではありますが、何とかラテン文字とカタカナが使えるようになりました。
「JIS X 6002-1980」規格本文の先頭に書いてある「英字・片仮名 7 単位符号」 というのは、実はこの「ラテン文字・片仮名用 7 ビット符号」のことです。 つまり「JIS X 6002-1980」とは、この符号方式を扱うキーボードの配列の規格であるというわけです。
「鍵盤世界」と言いながら全くキーボードの話をしなかったのですが、今回はこれでお終いです。 とは言え、今回説明したこの「JIS X 0201」、実は「JIS X 6002」に深い関わりを持っています。 その真相については、次回詳しくお話しましょう。