倉頡入力法の紹介


関連 Web サイトへのリンク

朱邦復氏のオフィシャルページは, 朱邦復工作室

マレーシアの 倉頡之友 は, オンライン字典やチュートリアルを含んでいて, 利用価値が高い。

輸入法博覧 はさまざまな入力方式へのリンク集としてすぐれている。

中文輸入法世界 は情報的価値が高い。

日本語で書かれたものとしては, 「台湾漢字のページ にある「台湾の主な漢字入力方法について」が, キーボードの写真つきで紹介している。


概要

倉頡入力法は, 朱邦復氏の発明による, 通常の英語キーボードで漢字を入力する方法である。 ローマ字では cangjie, tsangjie, tsangchi, changjie, chanjei などさまざまに綴られる。

1970年代の末からある, 非常に古い入力方式であり, 現在の各種 OS/アプリケーションで使われている倉頡入力は, 基本的に IBM-PC の DOS 用に作られたバージョン3 に基づいている。

現在から見て時代遅れの点も多いが, 台湾や香港では入力方式の標準としての地位を確立している。

たとえば, 1999年に公布された 香港増補字符集(HKSCS) 規格票でも, 追加文字の倉頡碼が記されている。

字母について

倉頡入力法は, 字音を利用せず, 完全に漢字の形のみによって入力する方法である。 ひとつの字を字母とよぶ部品に分割し(他の入力法では「字元」とか「字根」と呼ぶことがある), 字母に対応するキーを打鍵することによって, 1打ないし5打でひとつの漢字を入力する。 (漢字以外の文字を入力する方法については省略する)

基本的な字母には以下の 24 種類があり, それぞれアルファベットのうち X と Z を除く 24 文字に割り当てられている。 この字母を刻んだキーボードも市販されている(007 の映画で出てきたことがあった)。

分類哲理筆画人身字形
キー A B C D E F G H I J K L M N O P Q R S T U V W Y
字母廿

「分類」欄にはあまり意味はない。 後述の嘸蝦米では, 「口」を形の似た「O」のキーに割り当てるなどの工夫をしているが, 倉頡式ではそのようなこじつけをしていない。 字母の数が少ないから丸暗記できる, という発想だろう。

入力したい字が字母そのものであれば, そのまま 1打で入力できる (厳密にいえば, 確定するためにスペースバーを押すので 2打)。 また, たとえば「明」ならば「日+月」と分割できるので“AB”と打鍵してやればいい。

五筆字型と異なり, 文字を構成する部分が左右に並んでいるか, 上下に並んでいるかは考慮しない。 上下に並んでいれば上から下へ, 左右に並んでいれば左から右へ, 「かまえ」の場合は外から内へと単純に打鍵する。 「昌 = 日日(AA), 晶 = 日日日(AAA), 二 = 一一(mm), 三 = 一一一(mmm)」 といった具合である。

しかしこれだけでは明らかに不十分である。 たとえば「川」のような縦棒から構成された字は上の字母のどれにもあてはまらない。 こういう場合どうするかというと, 輔助字形を使うのである。 輔助字形は文字の部品で, それ自身は文字でない。 輔助字形は全部で 76種類あり, その多くは字母から連想できるが, 連想の働かないものもある。

キー A B C D E F G H I J K L M N O P Q R S T U V W Y
字母廿
輔助字形
YOKOHI22



ZEN35
TUME33


HANEJUU


MIZU43B
REKKA

KO43

TSUCHI
丿
KIN32

广

YAMAI42

INU35

KOROMO
FUDE
丿


ISI13
HANEICHI




NOITI31

MIZUMIGI
KOKORO51
KOKORO51B


YOKU
TEHEN32




NAGAUE


MAE42
TOMO15
YANASITA


ELBOW


NAGA33

HAHA

SINNYO45
TENTEN

「竹(h)」から「弓(n)」までには, 基本的な筆画である 「丿(斜)丶(点)十(交)乂(叉)|(縦)一(横)亅(鈎)」 を含んでいる。 この 7文字が筆画類と呼ばれるゆえんである。

輔助字形は字母と異なり, それ自身は文字ではない。 一見ふつうの字と同じ形をした字母もあるが, たとえば「士」という字を入力するには「土(k)」の輔助字形である「士」を入力するのでなく, 「十一(jm)」と入力する必要がある。 「八・又・小・工・乙・七」なども同様。

輔助字形の中には, 見ただけでは何に使うのかよくわからないものがある。
たとえば, 「カ」だが, これは「五」の中央部, 「韋」の上部, 「皮」の上部, 「也」の右上部などに使う。
「儿」は「四・匹」などに使うもので, 「兄」などのいわゆる「ひとあし」は「丿ELBOW」に分ける。
NAGAUE」は, 「長 = NAGAUENAGA33 (smv), 作 = イ丿NAGAUE (ohs), 耳 = NAGAUE十(sj)」などに使用する。

輔助字形は互いに形の似ているものも多い。 たとえば「丿」が「竹(h)」と「中(l)」の両方にあるが, 後者は「|」と置き換えられるような場合(たとえば「川」の 1画め)にのみ用いる。 ふつうの左はらいは「竹(h)」を使う。
ふつうの縦棒は「|(l)」であり, 左にはねると「亅(n)」, 右にはねると「レ(v)」になる。 同様に, ふつうの十字は「十(j)」だが, 左にはねると 「HANEJUU(d)」 になり, 左に払うと「ナ(k)」になる。 これによって 「干 = 一十(mj)」 と 「于 = 一HANEJUU(md)」 が区別されるのだから重要である。
カギ型は通常「弓(n)」だが, カギの最後がはねていると「マ(s)」や「レ(v)」になることがある。
「口(r)」と, くにがまえ「囗(w)」もまぎらわしい。

文字の分解ルール

文字を字母・輔助字形の要素に還元する作業を「拆字」とか「取碼」と呼ぶが, あまり日本語らしく響かないので, このページでは「文字の分解」と呼ぶことにする。

多くの漢字は, 左右・上下・内外のいずれかに二分することができる(分体字)。 その場合, 「左・上・外」にある字を「字首」, 残りの部分を「字身」と呼ぶ。
(例外として, 「SINNYO45・廴」は字首とする。廴は乙乂(nk)と入力する)

字首は 1打ないし 2打で入力する。 字首が 3個以上の要素からなる場合は, 最初と最後の要素だけを取る。 たとえば糸偏ならば「糸 = く厶小(vif)」なので, 「く小(vf)」と入力する。 いっぽう字身は 3打以内で入力する。 4個以上の要素からなる場合は, 同様に 3個めから最後から2個めまでを省略する。

字首・字身は単純に位置関係によって決まるので, 漢字の部首とは異なる。 たとえば「智」という字は「知」が字首, 「曰」が字身なので, 「NOITI31口曰(ora)」と打鍵する (「NOITI31大口曰(okra)」ではない)。 また, 「常」は字典では「尚巾」だが, 倉頡式では「KO43冖(fb)」が字首, それ以外の「吊 = 口|冂(rlb)」が字身になる。 (「堂 = KO43冖口土 (fbra), 嘗 = KO43冖口匕日 (fbrpa)」 も同様。)

字首・字身に分けられない字(連体字)は, 4打以内で入力する。 すなわち, 5個以上の要素からなる字は, 4個め〜最後から2個めを省略する。 例: 「業」は「廿ソ廿十木」だが, 「廿ソ廿木(tctd)」と入力する。

さて, 字首・字身に分けたあと, さらに字身を 2つ以上の部分に分けることができる場合がある。 この場合, 分けた「左・上・外」にある字を「次字首」, 残りの部分を「次字身」と呼ぶ。 上記「字身は 3打以内で入力する」から考えて, 次字首からは 1ないし 2個の要素を取ることになるが, 次字首が 3個以上の要素からなる場合, (最初と 2番目でなく)最初と最後の要素を取る。 具体的には「衛」という字は字首が「彳 = 丿イ(ho)」, 字身がそれ以外だが, 次字首 = 「カ一口ヰ」の最初と最後「カヰ(dq)」と次字身の最後「亅(n)」を取って “hodqn”と打鍵する(hodmn としてはならない)。

ちょっと変なルールとして, 最後の要素が「囗匚凵冂几ク」のいずれかに囲まれていて, それを囲んでいる要素が省略されるべき要素の場合, 囲んでいる要素の方を最終要素として採用する(つまり, あたかも囲まれている要素がないかのようにふるまう), というのがある。
たとえば, 「雨」は「一|冂TENTEN(mlby)」だが, 「雷」は「一TENTEN田(myw)」でなく「一冂田(mbw)」になる。

なのも同じ原因のようだ。

以下の字は「複合字」と称して, どこに使われていても必ず最初と最後の 2画のみ取るそうだ。
門(日亅)・鬥(|亅)・鬼(丿厶)・隹(イ土) ・β(おおざと・こざと, フ|)・虍(卜七)・气(NOITI31乙)

このほかに目(月凵)・贏の字首(亠口)・幾の字首(く戈)も必ず 2画のみ取る, と本には書いてあるが, これらはもともと 2画しか取らないので, 特例扱いする必要はないのではないかと思う。

以下の文字は分解が困難なので, 困難であることを示す「x」を使う。 (x を使うことができる字は決まっているので, 分解方法がよくわからない字に何でも x を使っていいわけではない)

フX (nx)
亠X (yx)
丿X (hx)
FUDEX (lx)
シ丿X| (elxl)
女|X丿 (vlxh)
丿X丿 (hxh)
MAE42X八 (txc)
クXELBOW (nxu)
口XELBOW (rxu)
鹿 广X匕 (ixp)
广X又 (ixe)
サ广XREKKA (tixf)

このうち, 臼に従う字は特に多い。 「與」は「丿X亠八(hxyc)」, 「輿」は「丿X十八(hxjc)」, 「擧」は「丿八キ(hcq)」, 「學」は「丿冖フHANEJUU(hbnd)」となる。

複数の分割方法がある場合には,

  1. なるべく要素数が少なくなるように分割する。
  2. 要素数が同じ場合, 先にくる要素がなるべく字の多くの部分をカバーするように分割する (例: 「生」は「丿十土」でなく「丿キ一」とする, 一種のよくばりアルゴリズム。
    (「夜」が「亠イク乂」なのはよいが, 「各」は「丿又口」(「ク乂口」でない)のは整合性がないように思われる。)

具体的な入力例

ここでは, 具体的な字をいくつかとりあげてみる。

打鍵の順序は, 上から下, 左から右, 外から内である。 しばしば手で書く順序と異なっていることがあるので注意。

上下ふたつの要素を第三の要素がつないでいる場合は, やはり上から順に 「上要素 -- つなぎ要素 -- 下要素」 の順に並べる。
例: 「丙 = 一人冂(mob), 兩 = 一|冂人(mlbo), 西 = 一儿囗(mcw)」, 「方 = 亠丿マ(yhs)」
(但し「万」はISI13マ (ms))

つき出る縦棒は, しばしば複数の部分に分割しなければならない。 倉頡式でよく例に挙げられている「車 = 十田十」(jwj)がそうだ。 ほかにも「甲 = 田|(wl), 由 = |田(lw), 申 = |田|(lwl)」などがある。 数字の「七 = 十ELBOW(ju), 九 = ナ乙(kn)」も倉頡式の特徴をよく表している。

ELBOW」の縦棒を 2つに分ける字も多い。 「乙」は「フELBOW(nu)」になる。 「己」と「已」はともに「コELBOW(su)」で, 選択しなければならない(重碼)が, 「巳」は「口ELBOW(ru)」なので区別がつく。 「巴」は「YOKOHI22ELBOW(au)」, 「色」は「クYOKOHI22ELBOW(nau)」, 「氾」は「シマELBOW(esu)」, 「危」は「ク厂マELBOW(nmsu)」となる。

「七」(および類似の字) を要素として持つ字もわかりづらいものが多い。 「宅」が「宀丿七 (jhp)」なのはわかりやすいが, 「氏」は「丿レYOKU (hvp)」, 「民」は「口レYOKU (rvp)」 となる。 「低」は「イ丿YOKU一 (ohpm)」 になるのにも注意。 「イ丿レ一」にならないのは, 「氏」の部分が次字母だから。 「龍」は「ELBOW」で終わりそうに見えるが, そうではなく「亠月卜コ匕(ybysp)」となる。

「大・木・火」の中央に他の要素がはさまっている字は, 例外的にまず「大・木」を打鍵してから, それ以外の部分を打鍵する。 「大・木」の上に何かがのっている場合は, 通常どおりのっているものを先に打鍵する。
「大」の例: 「夫 = キ人(qo), 夷 = 大弓(kn), 夾 = 大人人(koo)」
「木」の例: 「米 = ソ木(cd), 耒 = キ木(qd), 未 = 十木(jd), 末 = 木十(dj), 來 = 木人人(doo), 束 = 木中(dl), 東 = 木田(dw), 柬 = 木囗小(dwf), 本 = 木一(dm)」
「火」の例: 「脊 = 火八月(fcb)」
特に「束」が「木口」や「木日」でないことに注意。「木口」では「杏」になってしまう。 「夫」が「十大(jk)」でないことにも注意。 「jk」では「丈 = 十乂」になってしまう。

なお, 「人(o)」と「入(oh)」は単体の文字としてはことなる打鍵によって入力するが, ほかの字の一部となるときは区別されない。 したがって, 「陜」と「陝」はどちらも同じ(nlkoo)になる。

「戈」を部分として持つ字は, ちょっと分割しにくいものが多い。
まず, 「戊」に従う字は「戈丿(ih)」を使用する。 例: 「戌 = 戈丿一(ihm), 戍 = 戈丿丶(ihi), 成 = 戈丿マ(ihs), 咸 = 戈丿一口(ihmr), 歳 = 卜一戈丿丿(ymihh)」
形の似た「戉」は「戈レ(iv)」である。 したがって, 「越 = 土人戈レ(goiv)」になる。
「哉」の字首は「土戈(gh)」である。したがって, 「哉 = 土戈口(ghr), 裁 = 土戈亠丿」
「幾・畿」の上部は「幺(=く厶)幺戈」と考えるから, それぞれ 「く戈丿丶(vihi)」「く戈田(viw)」と入力すればいい。 (「幾」の下半分は「戍」と同じであることに注意)
「職・織・識」のつくりは「立戈日(yia)」である。

「目」は「月凵(bu)」に分解される (「月一(bm)」 にしなかったのは, そうするとしょっちゅう「且」とコードが同じになってしまうからではないかと思われる)。 したがって, 「見」なら「月凵丿レ(buhu)」, 「貝」は「月凵八(buc)」となる。 ただし「具」は「月一一八(bmmc)」, 「真」は「十月一八(jbmc)」であることに注意。

一方, 「目」を横向きにした字が字首になるときは「囗|(wl)」になる(冂MAE42でない)。 したがって, 「羅」は「囗|く小土(wlvfg)」となる。

「卯」に似た字は注意が必要。 「迎」は「SINNYO45丿レ| (yhvl)」だが, 「卯」は「丿丿マ|(hhsl)」, 「卵」は「丿丿マ|丶(hhsli)」となる。

「了」が字母にないので, 「了」に従う字は分解が少し難しい。 「了」自身は「フ亅(nn)」でよいが, 「子」は「フ木(nd)」, 「丞」は「フ水一(nem)」となる。 難しいのは「承」で, 「フフ手MIZUMIGI (nnqo)」 と打鍵しなければならない。

艮・良・食・即・既・郎・郷・卿の類は, 異体字が多いので, なかなか難しい。 まず「艮」は「日NAGA33(av)」, 「良」は「丶日NAGA33(iav)」, 「食」は「人丶日NAGA33(oiav)」である。 ただし偏(字首)になるときは, 下が「厶」になるので, それぞれ「艮偏 = 日厶(ai), 良偏 = 丶厶(ii), 食偏 = 人厶(oi)」になる。 したがって, 「即 = 日厶マ| (aisl), 既 = 日厶一レELBOW(aimvu)」 となる。 また, 前記のようにおおざとは「nl」だから, 「郎」は「iinl」である。 さて「郷」だが, 日本とちがって字身の部分は「郎」と同じと考える。字首は「く丿」なので, 「vhiil」で入力できる。 最後に「卿」だが, 字首は「卯」の左側と同じ(hh)で, 右側は「即」と同じと考えるので, 結局「丿丿日厶|(hhail)」となる。

にすい「冫」は「丶HANEICHI」(im)と考える(y でない)ことに注意。 「羽」も同様に「マHANEICHIマ丶HANEICHI」(smsim)に分解される。 いっぽう, 「冬」は「丿又TENTEN(hey)」だし, 「寒」は「宀TOMO15TENTEN(jtcy)」である。

「丿」から始まっている字は, それだけを字母として別にするか, 後ろの筆画とつなげるか, 判断に迷うものがある。 例: 「久 = ク\」(no), 「各 = 丿又口」(her)

縦棒がつらぬくかどうかで, 分解のしかたがまったく異なってくるものがある。 例:

難しそうに見えて簡単なものもある。 「亞」は「一||一(mllm)」, 途中については考えなくてよい。 「」

その他のちょっと思いつきにくい分割法

本来まちがいと思われる分割法

まちがいではないのかもしれないが, きわめて不自然なもの

「衛」のように, 字典と異なる分け方をする字があるのは理解できるが, ときにそれが極端に走ることがある。

注意点

しばしば日本と台湾で標準的な字の形が異なっている場合があり, 台湾でどういう字形であるかに気をつけないと失敗する。 台湾の字形は, 必ず康煕字典体というわけもでない。

たとえば「汚」という字だが, Big5 では日本と同じ形の字はなく, さんずいに「于」を書く字と, 旁の縦棒がつきとおっていない字がある。 前者なら「シ一HANEJUU(emd)」, 後者なら「シ一一マ(emms)」と入力しなければならない。 「啓」は中国では「攵」が右側に来るので, 「丿口NOITI31乂(hrok)」となる (戸の 1画めが丿であることにも注目)。 「今」が「人丶フ(oin)」であって, 「人一フ(omn)」にならないことにも注意。 「没」は右上が「ク」のような形なので, 「シク又(ene)」になる (ただしバージョン5 では「シ丿乙又(ehne)」でもいい)。 「黄」は「廿一田八 (tmwc)」になる。3番目の要素が「由」のようにつきでないことに注意。 一方「漢」は「シ廿中人(etlo)」のように, 3番目の要素の縦棒がつきでる。

その一方, 「冊」は日本と同じ形と考え, 「冂サ(bt)」で入力できる。 「為」も日本と同じ形の「丶ナフREKKA (iknf)」である。

「者」には点がない(十ナ日)が, 「臭」には点がある(丿凵丶大)というのもひっかかりやすい。

倉頡入力方式の長所と短所

長所:

  1. 字母の数が少ない。 基本の字母が 24種類, 輔助字形まで加えても 100種類程度であり, 同種のほかの入力方法に比べるときわめて容易に覚えられる。 一般に字形による入力方法は練習時間が長くかかることが欠点だが, その点, 倉頡式はしきいが低い。
  2. 複数の字が同じコードをもつこと(重碼)がきわめて少ない。 “tt”が「井・并・卌」は 3つの候補を持つが, こういった例はきわめてまれ。
  3. 事実上の標準である。たいていの中国語入力システムが倉頡碼をサポートしている。 参考資料も多い。
  4. 朱邦復氏が倉頡式の著作権を放棄しているため, 処理系が簡単に(しばしば無償で)入手できる。

短所

  1. 字母の数が少なすぎ, かつ各字母の画数が少ないため, 簡単な文字でも打鍵数が増えてしまう。
    たとえば「正 = 一卜|一(mylm), 行 = 丿イ一一亅(hommn)」 など。
  2. 字母の数が少なすぎるため, 文字が分解しづらい場合が生じる。
    たとえば「馬」を「匚キマ火」に分解するなどというのは, 覚えていなければとうてい不可能だ。
    文字の分解方法を覚える手間がかかるため, 長所のところであげた「字母の数が少ない」というのが長所になっていない。
  3. かなり多くの字が 5打を必要とする。 ほかの方式では多くても 4打ですむのがふつう。 24 の 3乗は 13,824 だから, 理論的には 3打で充分のはずだ。
  4. 日本で言うところの単漢字変換であり, 前後の文脈をまったく利用していない。
  5. ひとつの文字の分解方法が一通りしかないため, なかなか必要な字にたどりつけないことがある。 たとえば, 「殺」は「乂木丿乙又(kdhne)」ではなく「乂八丿乙又(kchne)」に, 「刹」は「乂木|亅」(kdln) でなく「乂八|亅」(kcln) になる。 これらの字の左下が「木」ではなくて「ホ」のような形だ, と考えているのだろうが, Big5 のフォントの中にも左下を「木」につくるものはある。 倉頡バージョン5 では複数のコードを割り当てている(容錯碼)が, あまり普及していない。
  6. Big5 以外の漢字集合に対応していない。
  7. 文字の分解方式が書道の伝統を無視している。

補助入力方式

倉頡碼はすぐれているが, 上にあげたように, しばしば文字の分解に失敗することがある。 このために速成(quick)碼が補助入力手段として用意されている。 速成碼では, 字母は倉頡碼と同じだが, 最初と最後の 2つだけを入力する。 とうぜん変換候補の数が増えてしまうという欠点がある。

香港の快意速成輸入法 というのは, この速成碼に広東語の声母をつけて入力するもののようだ。

倉頡碼に代わる入力方式

倉頡碼を改良したものと, まったく新しい方式とがある。

前者の例としては, 快速倉頡輸入法 がある。 字母の取り方を変えて, 5打かかっていた倉頡碼を, 3打に縮めたもの。 簡体字にも対応し, 容錯碼もある。

一方, まったく新しい字形入力方式として人気があるものには, 以下のような方式がある。

  1. 大易(dayi)輸入法
    王賛傑氏が考案。 A から Z までのキーに加え, 0 から 9 までの数字と「,./;」を加えた 40 キーを使用し, 字根の数を増やしている。 4打以内で入力できる。 また, 字根が多いので, 字の分解は倉頡式よりも簡単である。 倉頡式と異なり, 「車」を「十田十」に分けるようなアクロバティックな分解をせず, 伝統的な漢字の筆法にしたがって分解する点もわかりやすい。 しかし 40 ものキーを使うのは効率が悪く, 熟練者の入力速度は倉頡式と大差ない, という結果が出ている。
  2. 嘸蝦米(boshiamy)輸入法
    劉重次氏が考案。 A から Z までの 26 キーを使用するが, ひとつのキーに大量の字根を割り当てている (F だけでも 30個ほどの字根に割り当てられている)。 大易と同様, 4打以内で入力できる。 簡体字や日本の漢字にも対応し, 1つの字が複数の分解方法に対応している(容錯碼)のが特徴。

ほかに, 行列入力 や三角入力(テンキー 6打で 1文字を入力する。現在は斜陽化), あるいは大陸式の五筆字型や鄭碼を使っている人もあるようだ。

倉頡入力の実装

Internet Explorer の Global IME や Windows 2000 に標準でそなわっている倉頡式は, 「倉頡輸入法 5.0 版」と「微軟新倉頡98a」 があるが, いずれも基本的にバージョン3 の倉頡式そのもので, それに「相関字詞」という熟語入力支援機能などが追加されているにすぎない。

Emacs/Mule の倉頡入力(quail)は, 中国語 Unix 用のターミナルエミュレーターである cxterm の辞書を使っているが, 決定するのに Ctrl-Space を押さなければならないので使いづらい。


文字コードの話に戻る