情報処理学会, 文書処理とヒューマンインタフェース研究会, 13 - 2, 1987


Emacs と親和性の高い日本語入力法 Kanzen

竹内郁雄, 杉村利明, 天海良治
NTT 電気通信研究所

TAO/ELISで稼働中のEmacsライクな画面エディタZenに日本語入力法Kanzenを実装した. Kanzenの特徴は,

  1. Emacs本来のエディタコマンド体系と整合性を保った.
  2. 漢字入力と編集機能を融合し, いつでも編集コマンドの実行が可能である.
  3. 編集, 変換状況が常に画面に反映されるWysiWygの原則を貫いた.
  4. 日本語入力のために必要なモードはカーソルの形で表し, 注視点を安定させた.
  5. 最小のキーボードで入力できる仕様となっている.
  6. 高速で正確なかな漢字変換アルゴリズムを用いた.

現在, TAO/ELISシステムで実用に供されている.

Kanzen: A Japanese Text Input Method Highly Compatible with Emacs

Ikuo TAKEUCHI, Toshiaki SUGIMURA, Yoshiji AMAGAI
NTT Electrical Communications Laboratories
9-11 Midori-Cho 3-Chome Musashino-Shi, Tokyo Japan

Kanzen is a Japanese editor embedded in an Emacs compatible editor Zen implemented on the TAO/ELIS list processing system. The characteristics of kanzen are:

  1. Only a few commands of Emacs are added/modified for Japanese.
  2. Kana-Kanji conversion is transparent to editing commands so that editing commands can work at any time at any place. (That is no true for almost all Japanese word processors on the market.)
  3. WysiWyg realtime display.
  4. Inevitable modes are shown by the shape of the cursor so that user's eye point can be stable on the screen.
  5. Only minimal keyboard is used so that touch typing is possible.
  6. Fast and accurate kana-kanji conversion algorithm.

1. Kanzen の設計思想
2. Kanzen の仕様
3. Zen エディタへの Kanzen の組込み
4. Kanzen のかな漢字変換部
5. 評価
文献
付録

1. Kanzen の設計思想

Kanzen は TAO/ELIS 上の Emacs コンパティブルエディタ Zen (Zeroth Editor for NUE) の上で動く日本語入力・編集システムの一つである. Kanzen の設計思想は [1, 2] に述べたが, ここで簡単にまとめておく.

  1. キーボードに習熟したユーザを対象とする. ワープロを日常の道具とするなら当然のことである.
  2. Emacs のコマンド体系との整合性をとる.
  3. 一次入力と編集を重視する. 清書・印刷用の高度な機能は日本語 TeX のような高度なものを別に考える. キーと文字との一対一対応 (Unique mapping) の原則を徹底する. 現在の JIS コード体系には中途半端にフォント情報が混入しているが, これは文章を考えながら打つときには無用の情報である. Zen は Lisp マシン上の基本エディタでもあるので, エディタバッファ内の英数記号は半角 (ASCII) をデフォールトとする.
  4. モードレスを可能なかぎり追求する. エディタに変換中とか入力中とかいうモードを作らない. Emacs コマンドがいつでもどこでも効くようにする.
  5. 入力, 挿入, 削除などが直ちに主画面上に反映されるようにする. これは Emacs の思想からいって当然である. 避けられないモードはカーソルの形で表示するようにして注視点を可能なかぎり安定させる.
  6. タッチタイプでの入力, 編集を可能にするため最小のキーボード (印字文字 + return + blank + tab + esc + delete + control + shift) で使えるようにする. 最近のキーボードの巨大化は目に余るものがある.
  7. 無変換をデフォールトとし, 変換は先に指定する方式とする. 変換は変換範囲の最初の 1 文節だけについて行なう. これによって, 漢字に変換しすぎる弊害をなくし, 文節内の接頭語や接尾語の解析をきめ細かく行なうほうに処理の重点をおく.

2. Kanzen の仕様

Kanzen はローマ字入力か, 新 JIS キーボードでのかな入力で使用することが可能である. 以下の説明はローマ字入力を基本に行なう. かな入力については異なる点を 2.4 で述べる.

以下の説明では Emacs の知識を仮定する. (Emacs は, GNU Emacs または TOPS-20 上の Emacs を標準とする. オーバーフローした行を折り返して表示できないタイプのEmacsではKanzenが目指しているような WysiWyg の実現は難しい.) 以下, "M-" は Meta コマンド, "^" はコントロールコマンドを表わす.

2.1 Kanzen に関するモード

Kanzen に関する Zen のモードは次のような入れ子構造になっている.

(このほか, 原綴り入力, 全角文字入力というやや特殊なモードがある)

ここで上向きのモード変化は飛び越しが可能である (たとえば, 日本語・カタカナ入力のモードで ^C を打つと Kanzen の ASCII モードへ直接移行する). Kanzen の中で, ASCII, 日本語・ひらがな, 日本語・カタカナなどのモードの区別はカーソルの形 (または色) で表示される (注視点でのモード表示).

2.2 かな漢字変換の起動

Kanzen モードでは, テキストバッファ内に「下線部」と「反転部」がおのおの 0 個ないし 1 個存在する. 下線部はかな漢字変換の開始位置を表わし, 反転部は変換中の文字列を表わす. これらが画面上に見えている場合 (そうであることが大半であろうが), 下線部ではその文字に下線がつき, 反転部では変換中の文字列が実際に白黒反転して表示される.

下線部で始まる文字列を構文解析して別の文字列 (通常の場合漢字で始まる) に変換することを「変換起動」と呼ぶ. 構文解析の対象となる文字列は, 下線部から始まり, 現在のカーソル位置, またはひらがな ・ 数字 ・ アルファベット以外の文字の直前で下線部に近いほうまでである. 変換起動の際, 別の場所にすでに反転部があればその文字列は「確定」し, 普通の表示に戻る.

反転部はいつでも変換のやり直しが可能である. 次候補を選択するときは, ^H (backspace), 前候補を選択するときは ^G (bell) を押す. 反転部は ^J (linefeed) または次の変換起動で確定する. 反転部にカーソルが入ったとき (delete で後ろから消しに入ったときも同様), 反転部は直ちに確定する.

変換は次のコマンドによって起動される (ただし, 日本語モードのときのみ).

Kanzen モードでは, native モードと, ^J (linefeed), ^H (backspace), ^G (bell) および ^C の意味が異なるだけであとのコマンドの意味はまったく同一である. これは, Kanzen が Emacs コマンド体系と非常によい整合性をもっていることを示している. なお, ^J はプログラム編集モードにおいては「改行 + インデント」で return + tab によって容易に代用可能であること, ^H は通常 Emacs では文字削除の意味に使わないこと, ^G は一般のキャンセルコマンドで Kanzen モードでもかな漢字変換の一種のキャンセル (前候補選択) に拡張されただけであること, ^C はもともと Emacs のコマンドでないことに注意されたい. なお, Zen では文字を ^D や delete で消しすぎた場合, ^delete で元に戻すことが可能である (これは漢字を消しすぎたときに便利).

Kanzen には変換中とか入力中というモードがない. 変換中というのは反転部に固有の性質であって, エディタ全体のモードとは関係がない. だから, すべての Emacs コマンドはいつでもどこでも有効である.

2.3 特殊変換指定コマンド

日本語モードでは次のコマンドが追加されている. これらは変換を起動し, 自己挿入し, 自分自身が下線部になり, 変換の様相を示すマーカとして機能する.

外来語の入力は, 上記の # だけでなく, 原語の綴りを大文字で打ち始めてもよい. たとえば, 「Program」はローマ字かな変換で, 「Pろgらm」とされたあと, 構文解析により「プログラム」へ変換される.

2.4 新 JIS キーボード

新 JIS キーボードを使った入力では, 大文字入力が不可能なので, 下線部は事前に別のキーを叩く必要がある. このキーをどれにするかはカスタム化可能である. 原語の綴りによる外来語の入力は # を使う方法のみ可能である. なお, Unique mapping の原則により, JIS キーボードを使った場合でも, 全角英数字などの入力は上記の @ コマンドを使わなければならない.

2.5 インクリメンタル・サーチ

Emacs に特有のインクリメンタル・サーチは, Kanzen ではサーチ用のエコーバッファで確定したものから順にインクリメンタルに捜すという形で実現する. だから, ひらがな確定で打ち進めれば, 1 字ずつインクリメンタル・サーチが行なわれる. もちろんサーチ用のエコーバッファは主バッファとは異なるバッファであるから, 独自の下線部と反転部をもつ. しかし, インクリメンタル・サーチに入った瞬間のモード (ASCII または日本語) は主バッファと同じである.

2.6 辞書登録

陽に単語を辞書登録するには, 登録する単語を region で囲み, M-X jregister-word コマンドのあと, 読みを入れればよい. (コマンドコンプリーションの機能があるので, コマンドは単に M-X jr< blank> と打てばよい.) 動詞の登録は, 活用分類をユーザが意識しなくてもよいようにするため 「修羅場らない」のように動詞の否定形を入れて行なう. このほか, バッチ的に辞書登録を行なうことも可能である.

3. Zen エディタへの Kanzen の組込み

Zen は, TAO/ELIS の主エディタでその機能はほぼ Emacs に沿っている. Zen は TAO のオブジェクト指向の機構を利用して書かれている. Kanzen の組込みにあたっては, 漢字を扱う部分をクラスにまとめ, Zen における漢字利用の統一化を図った. また Zen はその入出力機構, 画面表示機構などを他のプログラムから部品として利用することも目指している. 部品としての Zen でも Kanzen は利用でき, TAO/ELIS システム全体にわたった標準的な漢字利用法を提供することができる.

3.1 Kanzen の組込み条件

Kanzen を組込むにあたって次のことを考慮した.

  1. Zen のテキスト編集機能との親和性 :
    Kanzen を利用するときに Zen の編集機能をすべて使用することができること. 英字, 漢字の入り混じったテキストを編集するときにもシステムの一貫性を保つこと.
  2. 利用者カスタム化 :
    ローマ字の書き方, 記号の扱いなどに利用者の好みが生かせること.
  3. オブジェクト指向のクラス構造を生かした自然な実現をすること :
    これは, 部品利用, 親和性の向上のために重要である.

3.2 Kanzen の実現

Zen のテキスト編集コマンドと漢字利用を融合するには, 次のようなことを考慮しなければならない.

  1. 入力中のカーソル移動 :
    ローマ字かな変換中, 漢字変換指定をしたあとの入力中などでもカーソルの移動が可能でなければならない. カーソル移動した先で編集を行ない, 再び入力を続けることもあり得る. つまり入力モードがカーソル移動によって変わってはならない.
  2. 挿入, 消去コマンドの実行 :
    下線部や反転部などの特別の意味をもつ領域が, 挿入や消去コマンドによって一部が消されたり位置が動くことがあり得る.

このようにテキスト編集と漢字入力の動作は独立である. これらの問題に対処するには, 変換のための特別な領域を使わず, 常に実際に入力され, バッファに挿入されている文字列から情報を得なければならない. すなわち情報を文字自体にもたせなければならない. さらに, 反転部, 下線部が移動したときは, これらをバッファ中から探す必要がある. また漢字変換の範囲も下線部を起点として変換起動時に決定する.

Kanzen では TAO のフォントつき文字列 (fatstr) を使用してバッファ内の文字に 3 bit の情報をつけている. fatstr には文字ごとに 7 bit のフォント情報を付加することができる. 反転, 下線は Kanzen の表示とも対応している.

フォントの使い方

bit 0 反転
変換の結果を表示している. 次候補選択可能領域を示す.
bit 2 下線
かな部分, かな漢字変換開始位置を示す.
bit 3 強調
日本語入力されたローマ字部分示す. (画面では強調を抑制している)

これらのフォント情報により native モード, ASCII モードで入力されたプログラムコードとして入力された部分が変換されるといったことがなくなる. 反転部, 下線部は別に位置も記憶しており, 位置が移動したときのみバッファを探索するが, ELIS は文字列の処理をすべてマイクロプログラムで記述してあるので高速に捜し出すことができる.

漢字コードは ATT Unix 方式のコードを使っている. これは JIS 漢字コードの各バイトの MSB を 1 にするもので, 文字列中にエスケープ文字列などの見えない文字はない. これも文字自体に情報をもたせていると言えるし, WysiWyg の原則に沿っている. ただし半角のカタカナは使用できない.

利用者によるカスタム化のために, バッファごとにローマ字かな変換テーブル, コマンドディスパッチテーブルなどをもっている. コマンドテーブルは入力文字ごとに起動するコマンドを設定することができる. また入力文字の属性として文字ごとに 5 bit の情報を付与し共通の処理を制御している. これらのテーブルは Zen の起動時に利用者の設定ファイルに従って作成されるが, 利用者はローマ字かな変換のリストを変更したいものだけ設定すればよい. 文字属性を次に示す.

文字属性

bit 0
"ん" のチェック, "n" の次に続き得る "a", "y" などの文字を除くすべての文字, 97 種.
bit 1
大文字を表わす, 27 種.
bit 2
かな漢字変換を起動する文字, 大文字, 記号, blank, return, tab など 58 種.
bit 3
フォント bit 3 をつける文字. ローマ字かな変換テーブルに現われた文字など 70 種.
bit 4
漢字を確定する文字, 60種. インクリメンタル・サーチに利用している.

3.3 処理の流れ

Kanzen の動作中, キーを一つ入力した場合の処理の概略を示す. 以下の処理を順に行なう.

  1. カタカナのチェック カタカナモード
  2. "ん"のチェック bit 0 の文字属性のついた文字が入力されたとき
  3. 反転部の確定 bit 2 の文字属性のついた文字が入力されたとき
  4. 下線部のかな漢字変換 bit 2 の文字属性のついた文字が入力されたとき
  5. 下線をつける bit 1 の文字属性のついた文字が入力されたとき
  6. コマンドの処理 Zen 編集コマンドの実行, または
    1. 文字に bit 3 フォントをつけて挿入する
      bit 3 の文字属性のついた自己挿入文字が入力されたとき
    2. 文字挿入に伴ってローマ字かな変換を実行する
      変換テーブルによって設定された "a", "i" ... などローマ字の最後になる 19 種の文字が入力されたとき

テキスト編集コマンド (Control キー, Meta キーによるコマンド) の実行では漢字変換に関わる処理は行なわれない. 日本語入力の処理はすべて日本語処理の起動文字が入力されて初めて動作し, 通常の編集を行なっている時にその準備をしてはいない.

漢字変換は, 変換起動ルーティンでかなを切り出して変換処理に渡し, その結果をバッファに挿入する. エディタと変換ルーティンとの切り口は辞書の頻度更新などを含めて 5 ヵ所である.

3.4 Zen への組込み

Kanzen を組込むにあたっての Zen 本体の主な変更個所を示す.

  1. コマンドテーブルの追加
  2. 利用者カスタム化のためのローマ字テーブル処理
  3. 反転部へカーソルが入った時の処理
  4. インクリメンタル・サーチの日本語対応

このうち本質的なものは反転部へカーソルが入った時の処理である. これは通常のテキスト編集に関わる. その他の変更はすべて付加的処理である. Zen ではカーソルの再表示を行なう処理のなかで反転部に入ったことを調べ, 確定処理を行なっている.

3.5 他のエディタに Kanzen を組込むにあたっての注意

Kanzen の仕様は比較的単純であるが, Zen との親和性を重視し, テキスト編集機能と日本語入力機能の独立と両立を図っている. このため文字自体に種々の情報をもたせ, 日本語のための処理は実際に見えているバッファに基づいて動作する. TAO/ELIS では基本データである fatstr が利用できたが, 文字に情報をつけることができないシステムでは, バッファの構造から構築する必要がある. 先決めで漢字変換開始を指定し, 下線, 反転でそれを表示して日本語を入力していく部分は比較的簡単に実現できると思われる. しかし, Zen のテキスト編集機能がいつでも利用できることが Kanzen の使いやすさを高めている. 他のエディタに実装する場合, この親和性にもっとも注意を要するだろう.

4. Kanzen のかな漢字変換部

4.1 考え方

  1. 構文解析を変換開始位置から第 1 文節だけについて行ない, 後ろの解析はできる限りしないで済ませ, 解析の手間を極力押える. これにより, 変換のスピードを上げる.
  2. 文節内の解析については, 接頭語, 接尾語, 数詞等の解析をきめ細かく行い, 変換の品質を上げる. (Kanzen の仕様が変換対象を開始位置からの第 1 文節に限っているので, 連文節変換の場合に比べて区切位置のあいまいさが低下し, 自然に変換の品質が向上できる. 構文解析の側から見るとこの点が大きい. )
  3. Kanzen に直接は関係しないが, Zen には, 日本語入力方式として Kanzen の他に, 連文節変換を行なう Beta, Neo という方式が同時に存在するので, 構文解析部はこれらの方式で使える部分をできるだけ共有化する.
  4. マルチユーザでの使用, 辞書のメモリ占有量の低減, 辞書検索の効率化, を行なうことのできる辞書構成とする.
  5. 変換の品質を向上するため, 複合語の自動学習や, 頻度管理をユーザ毎に積極的に行なう.

4.2 辞書構成

単語辞書は, ユーザ共通のディスク単語辞書と基本単語辞書, そして, ユーザ毎のユーザ辞書の 3 階層で構成される.

  1. 基本単語辞書 :
    よく使われる基本的な単語として約 7 万語を収容している. ELIS のメモリ上に常駐するので, 小型化を最優先にした. しかし, 見出しの字種を制限することまでして小型化をすることはしない (ASCII 文字もカタカナも見出しとして使えるようにする). 具体的には, 単語情報を, TAO 特有のデータタイプのメモリブロック (バイト単位のメモリアクセスが可能) の中にバイトデータとして埋め込み, 検索関数はマイクロプログラムで作成した.
  2. ディスク単語辞書 :
    基本単語辞書に入らない単語を収容する. 常用漢字以外を用いて書かれた単語などのように, 一般にはよく使われない単語が入る.
  3. ユーザ辞書 :
    ユーザ毎の学習結果を格納する. ユーザが使った単語は, ユーザ辞書にコピーされ頻度更新が行われる. また, 一度確定した複合語も自動的に登録される. たとえば, 同音異義語が問題になる次のような接尾語は, 一度確定すると複合語として学習されるので, その後は正しく変換されるようになる.
        一般化  競争下  情熱家  数学科  総務課
    さらに, 単漢字変換で入力された未登録単語も自動的に学習されるので, その後は単語の読みを入力すればよく, 入力の手間が軽減できる. ただし, これらの学習された単語は, 一定の期間使われないと自動的に忘れさられる.
  4. 辞書階層と検索範囲 :
    通常の構文解析の手間を軽減するため, 辞書検索は 2 段階で行なう.
    1回目:
    ユーザ辞書と基本単語辞書を検索し構文解析を行なう.
    2回目:
    1 回目の解析結果について, 次候補選択をして正解が見つからない場合は, さらにディスク単語辞書も検索し構文解析を行なう.

この他に,かな漢字変換のために, 接辞や助詞, 助動詞の入った付属語辞書と, 単漢字変換のための漢字辞書がある.

4.3 変換アルゴリズム

4.3.1 Kanzen での変換の問題点

Kanzen では, 変換対象文字列の先頭の 1 文節が変換対象になるが, その後に漢字に変換されない文節が存在する場合があるために, 単なる単文節の変換にはない問題が生じる.

  1. 変換対象文字列の全体が, 1 つの文節として解析できた時でも, この変換対象文字列が 2 つ以上の文節を含んでいることを考慮しなければならない場合がある.
    [例] (正解) (誤り)
    彼ははだし ⇒ 枯葉派だし
    (1 つの文節として解析できるが, この段階で解析を終了すると正しい結果は得られない)

    対処: この多くの場合は, 自立語に接辞がついて 1 つの文節を構成することが多いので, 変換対象文字列が 2 文節以上を含んでいる時の解析を続けて行なう.

  2. 第 1 文節を解析するだけで後ろの解析はしないで済ませ, 解析の手間を押えることを方針としたが, 変換対象文字列が 2 文節以上を含んでいる時は, 単に最長一致法で第 1 文節を解析するだけでは誤りになる場合がある.
    [例] (正解) (誤り)
    人はよく ⇒ 一葉よ
    すぎる ⇒ 流すぎる
    (正解より長い文節が存在するが, 誤りである)

    対処: 変換対象文字列が 2 文節以上を含んでいる場合は, 第 1 文節の成立条件として, その後に第 2 文節が成立するかの簡単なチェックを行なう.

  3. カタカナや英数字の単語につく接尾語は, 接尾語で始まる文節として解析する必要がある.
    [例] コンパクト 化する
    ABC 法の
    (「かする」,「ほうの」という文字列が構文解析部に渡されるが, 接尾語で始まるものとして解析する必要がある)

    対処: 変換対象文字列以外に, その前後の文字も付加情報として構文解析部に渡し, この付加情報を用いて, 接尾語で始まる可能性があるものとして解析をする.

4.3.2 アルゴリズムの概要

変換は, 4.3.1 を考慮した上で, 次の 2 段階で行なう.

  1. 解析グラフの作成
    まず, 文節を構成し得る単語の接続関係を表した解析グラフを求める. 解析グラフの特徴は, 各ノードが, 自分から先頭のノードに至る経路を求めた時に, その経路のコストが最小コストから m 番目までに入る枝を持ち, 各枝がその枝を経路に選んだ場合の最小コストの情報を持っている点である. この特徴により, 最小コストから m 番目までの範囲の経路探索が効率よく行える. 解析グラフ作成手順の概略は次の通りである.
    1. 変換対象文字列の全体について付属語辞書を検索し付属語を求める. (以下, 付属語も単語と呼ぶ)
    2. 変換対象文字列の先頭から始まる単語を, 単語辞書を検索して求める. ただし, 先頭に接頭語が存在する場合は, これに続く単語も検索する.
    3. 求めた単語から, 2 単語間の接続関係を検定することにより, 文節を構成し得る単語を解析グラフとして求める [ 5 ]. 「くるまではしらなかった」から作成した解析グラフの例を図 1 に示す.
    4. 3 で求めた解析グラフの末尾に文節末となるノードが存在しない場合は (図 1), グラフの末尾と文節末となり得るノードを結ぶための仮想ノードを補完する. つまり, 解析グラフの末尾より順次手前に文節末になり得るノードを探し, その単語の後ろに文節が来ることができる場合にこの仮想ノードを補完する. なお, この時, このノードより手前の文節末になり得るノードについても同様の補完を行なう. 図 2 に仮想ノードを補完した例を示す.
  2. 解析グラフからの文節の抽出
    次に, この解析グラフについて経路探索を行い見つかった経路を文節として抽出する. この時, 経路探索のやり方は, 最小コストから m 番目の範囲の経路について単語の頻度, 自立語の読みの長さ, 単語と単語の接続コスト等による評価値を用いて最も評価値の大きいものを優先する探索を行なう[ 6 ].


図1. 「くるまではしらなかった」の解析グラフの例


図2. 仮想ノード {しらなかった}, {はしらなかった} を補間した例

以上の方法は, 基本的には連文節の解析法と共通している. 違いは, Kanzen の場合は, 文法規則について文節と文節の間の接続条件を不可にしている点と, 単語辞書の検索を先頭単語のみについて行なう点, 解析グラフで仮想ノードの補完をする点, の 3 点である.

5. 評価

Kanzen は設計以来約半年間, 実用に供しながら評価・改良を行なってきた. 現在ほぼ完成の域に達しており, あとは使っていて発見される細かい改良を残すのみになっている. Kanzen の評価として強調したいのは, Kanzen の設計方針がその通り実現されているということのほかに, かな漢字変換が高速なことである. 実際, 1 回の変換・再表示に要する時間は大体 100 ミリ秒のオーダで, ELIS の 1 プロセス当たりの連続走行割当時間とほぼ一致している. 人間の反射神経にとって遅れを感じさせない時間の限界は約 50 ミリ秒と言われているが, ほぼこの限界に近づいていると言ってよいと思われる.

使いやすさについては慣れと趣味が絡むので主観的な評価しかできないが, 筆者らはもうほかの日本語ワープロにまったく興味が湧かないところまで来ている. 特に編集のしやすさと快適さは他のワープロに対して群を抜いている感がある. しかし, より一般的な評価はユーザに委ねるほかはないだろう.

[謝辞] 本論文を印刷するのに使った JTeX を提供していただいた斉藤康己, 磯崎秀樹の両氏に感謝する.

[文献]

[付録] Kanzenの動作例: 左側が入力したキー, 右側が画面の表示である. 赤文字部分は画面上では白黒反転して表示される. M-J の入力をここでは [M-J] と書く. カーソル位置は で示す.

Ky Ky
o ょ [ローマ字かな変換が起こる]
uW 今日 [変換起動]W
atasiha 今日たしは
Is 今日渡しはs [誤変換に気がつく]
^H 今日私はs [次候補選択]
hani 今日私はしゃに
Iku. 今日私は医者に行く.

KyouWatashihaIshaniIku. 今日私は医者に行く. [文節区切りは入力時に解決済み]
KyouWatashiHaishaniIku. 今日私歯医者に行く.

Yomerukadoukahadoudemoiinoja.
読めるかどうかはどうでもいいのじゃ.
[決して, 読める華道科は銅でも飯野蛇. にはならない]

KumitoriwoOnegaisimasu. 汲み取りをお願いします.

sudeni すでに
* すでに* [カタカナモード]
k すでにk*
a すでにカ*
takana すでにカタカナ*
Mode すでにカタカナで [外来語]
ninatteiru すでにカタカナでになっている
Baai, すでにカタカナモードになっている場合,

JuuzokuHensuu^Qxto^Qywo, 従属変数xとyを, [^Qはエスケープ文字]

1887 1887
Nenninha

1887ねんには
[構文解析の便のため, 下線が左へシフト]
Rekisit 1887年にはきしt

#250 #250
Ma'e'noYosan 二百五十万円のさn

@OokiiKoumyou^J 光明 [人名, 「おおみや」と読む.


大文字にするのをすれたことに気がつく.
[M-J] 大文字にするのを忘れたことにがつく.


んぶこもじでうちました.
[M-C] ^F ^F ^F んぶもじでうちました.
[M-C] ^F ^F ^F ^F 全部もじでちました.
[M-J] 全部もじで打ちました.
^J 全部小文字で打ちました.

Convert to HTML by NUE amagai