------------------------------------------------------------------------ 日本語フロント・プロセッサ ”JFP” Ver. 1.07 for PC-E500 series (c)1992,93 Narihito Kon ------------------------------------------------------------------------  JFPは PC-E500 シリーズのポケコンで日本語入力を可能とする為の入 力ツールであり、正確には "STDI:","KYBD:" デバイスの機能を拡張する 「入力デバイス・ドライバ」です。  JFPは本体のみで”アルファベット入力”、”カタカナ入力”、”記号 入力”をサポートしており、また辞書を併用することにより”辞書変換入 力”、そして記号入力の拡張として”単漢字変換入力”が可能となります。  辞書を用いた変換の仕組は、「単語」を単位とした極めて単純なパターン・ マッチング処理であり、一般のFEPに見られるような”連文節変換”とも” 単文節変換”とも異なるものですが、規則が単純なだけに、思った単語を出 力させるための手間は一般に非常に短くて済み、また、変換後に出現する単 語の予想も比較的容易なので見通しよく変換を行なうことができます。  期待される単語に変換できない場合でも”JFP”本体だけで単語登録を 行うことが可能なので、使いながら辞書を改良していくことができます。ま た、不要な単語はその場で削除することができます。 §内容物 アーカイブの中に次のものが含まれていることを確認してください。    JFPINST … JFPのインストーラー    JFP.DOC … いまご覧になっているもの    JFPINST.S … JFPINST のソース・プログラム(XASM でアセンブ            ル可能) またそれぞれの検査用数値は    ファイル名 | CRC32 | バイト数    -----------+--------+-------    JFPINST |433207c2| 7085    JFPINST.S |70a65c0b| 71617 です。 §インストール方法  &BD000〜がマシン語領域となるように環境を整えます。その後で "JFPINST" をロードして    CALL &BD000"n とします。"n" はJFPのインストール先メモリ・スロットを指定するもの であり、"1"〜"3" の値がそれぞれ "S1:"〜"S3:" に対応します。"n" が指 定されなかった場合には、デフォルトで "S1:" が指定されます。いずれの 場合にせよ、指定されたメモリ・スロットに十分な空き容量がなかった場合 にはインストールは行われません。  正常にインストールが行われた場合には、指定されたメモリ・スロットに    JFP .SYS P というメモリ・ブロックが作成されます。メモリ・ブロックが作成されてい ればインストール作業は終了です。インストール終了後はマシン語領域は必 要ありません。  加えて辞書を用いた変換を行いたい場合には、"S1:"〜"S3:" の任意のメ モリ・スロットに "JFP5K.DIC" か "JFP10K.DIC" か "JFP1K.DIC" のいずれ かを "JFP.DIC" にリネームしてコピーしておきます。これらの辞書は "JFP100.LZH" に含まれています。今回のアーカイブには収録されていませ ん。  "JFP5K.DIC" は、JUNET の Wnn プロジェクトによって作成された CopyFree な辞書である "Wnn4.108/Pubdic/kihon.u" に収められている単語 の中から頻度指数が2以上のものをセレクトし、JFP用に編集したもので あり、約 5000 語の単語が収められています。"JFP10K.DIC" は同じく頻度 指数が1以上のものをセレクトしてあり、約 10000 語の単語が収められて います。"JFP1K.DIC" は頻度指数が25以上のものをセレクトしてあり、約 1000 語の単語が収められています。登録されている単語は名詞以外の自立 語および普通名詞であり、語尾の活用するものについてはその語幹のみ登録 してあります。固有名詞やカタカナは一切登録されていません。  更に、後述の”記号入力”の拡張機能である”単漢字変換”も行ないたい 場合は、"S1:"〜"S3:" の任意のメモリ・スロットに "JFP_TAN.DIC" をコピ ーしておきます。"JFP_TAN.DIC" は "JFP104.LZH" に含まれており、今回の アーカイブには収録されていません。  "JFP_TAN.DIC" は、JIS第一水準漢字の音読みエントリ+αを収録した もので、約 600 エントリが収録されています。 §使い方  JFPがインストールされている状態で、[カナ]キーを押すと”カナ” シンボルではなく”小文字”シンボルが点灯します。この状態でローマ字か な変換が可能となります。トリガとなる文字が入力されると最下行に変換窓 が開いて”ローマ字かな変換入力”状態になります。 ローマ字かな変換入力  JFPは入力に関してモード・レスなので始めは何も考えずにポイポ イと文章を入力していきます。入力された記号は”かな文字”に変換で きるものから順に”かな文字”に変換されてゆき、”かな文字”に変換 できなかった入力はそのまま全角大文字で表示されます。入力は一度に 19ストロークまで可能です。19ストロークを超えて入力しようとし た場合にはカーソルが点滅してそのことを教えてくれます。入力を間違 えた場合には [RCL],[BS] または [←] で1ストローク前の状態に戻り ます。[C.CE] を押すと変換窓が閉じて入力のなかった状態と同じにな ります。  適当なところまで入力したら、変換を行ないます。変換を行なわない 場合には [ENTER] を押します。文字にならないようなキーを押した場 合も変換を行なわずに、現在表示されている文字を吐き出します。変換 の種類には”記号変換”、”アルファベット変換”、”カタカナ変換”、 そして”辞書を用いた変換”があり、[PF1]-[PF5] のファンクション・ キーに割り付けられています。次にこれらについての説明をします。 記号変換 … [PF1]  [PF1] を押すと次の規則に従って記号一覧が現れます。  [PF1] を押した時点で4ケタの16進数が入力されていた場合、その 4ケタの16進数を SHIFT-JIS コードとみなし、その近辺の記号が変 換窓に現れます。0xe040 - 0xeefc を選択する場合は [0][E][0][0][0] というように、先頭に [0] を付けてください。普段カーソルを移動さ せるのに使っているキーを押すと表示されている記号が変化したり、カ ーソルの位置が変ったりするので希望する記号の上にカーソルを合わせ て [ENTER] を押してください。その記号が選択されます。期待されて いる以外のキーが押されても選択と同じことになります。また [1]-[ 8] のキーのいずれかを押した場合は、その番号に対応する記号が選択され ます。変換窓の左端に表示される16進数は、点滅カーソルの示してい る記号の SHIFT-JIS コードを表します。 ※単漢字変換 単漢字辞書 "JFP_TAN.DIC" が "S1:"〜"S3:" のいずれかのメモリ・ スロットに存在しており、かつ、入力が4ケタの16進数ではなか った場合には、その読みで始まる漢字の検索を行ないます。その読 みで登録されたエントリが存在する場合はその漢字を表示します。 漢字の選択方法は上記と同じです。  上記のうちのどれでもなかった場合には、[PF1] を押す直前に表示さ れていた文字列の最初の文字そのものが記号として表示されます。  この状態において [RCL],[BS],[C.CE] のいずれかのキーが押された 場合には、ローマ字かな変換入力に戻ります。以後この3つのキーを” 取消キー”と呼ぶことにします。 アルファベット変換 … [PF3]  [PF3] を押すと、いままで入力された文字はアルファベットに変換さ れます。最初に [PF3] を押したときには”全角大文字”に変換されま す。この状態から [PF2]-[PF5] を押すことによってそれぞれ    [PF2]…半角小文字    [PF3]…半角大文字    [PF4]…全角小文字    [PF5]…全角大文字 に変換されます。[ENTER] の押し下げ、または任意の文字入力で確定で す。また、[PF1] を押すと強制的に先頭の文字だけが大文字となり残り は小文字になります。  アルファベット変換を行なっている最中はカーソルがインサート・マ ークに変化します。また”取消キー”は常に有効です。 カタカナ変換 … [PF4]  [PF4] を押すと入力された文字はカタカナに変換されます。変換され るのは全角ひらがな(”ぁ”〜”ん”)だけであり、その他の文字はそ のままになります。この状態から更に [PF4] を押すと、半角カタカナ に変換されます。このとき同時に、半角で存在する文字・記号も半角に 変換されます。そして次に [PF4] を押すとローマ字かな変換入力に戻 ります。[ENTER] の押し下げ、または任意の文字入力で確定です。  カタカナ変換を行なっている最中はカーソルがインサート・マークに 変化します。また”取消キー”は常に有効です。 辞書変換 … [PF5]  メモリ・スロットに辞書 (JFP.DIC) が存在しているときに [PF5] を 押すと、入力された文字は辞書内のエントリと比較され、一致するもの があればそれが表示されます。辞書は "S1:","S2:","S3:" の順に検索 されます。候補が2つ以上ある場合には続けて [PF5] を押すことによ って残りの候補を順番に表示させていくことができます。確定は [ENTER] の押し下げ、または任意の文字入力です。候補がそれ以上なか った場合には、入力されたひらがなそのものを表示します。この状態か ら更に [PF5] を押すと最初の候補に戻ります。辞書変換を行なってい るときに [PF4] を押すと、逆順に候補を表示していきます。この場合 も候補がそれ以上なくなった場合には入力されたひらがなそのものが表 示され、更に [PF4] を押すと一番最後の候補に戻ります。簡単に言え ば、”ひらがな表示”を介して最初の候補と最後の候補はつながってお り、「候補+ひらがな」は環状になっています。そして [PF5] は環を 先に進め、[PF4] は環を戻します。  確定した場合、その候補は学習機能の働きによって、次回参照された ときに一番最初に現れるようになります。最近使われた候補ほど早く現 れるようなアルゴリズムになっています。ただし、候補終了時に表示さ れるひらがなは選択しても学習はされません。  辞書変換を行なっている最中はカーソルがインサート・マークに変化 します。また”取消キー”は常に有効です。 §辞書登録・削除について  ポケコンは小さなマシンなので、無闇に辞書を大きくすることは必ずしも 得策とは言えません。そのためJFPで標準に用意している辞書はそのサイ ズが比較的小さくなっています。辞書が小さいということは、登録されてい る単語の数が少ないということに他なりませんが、そのために辞書変換を行 なっても候補が見つからないということもよく起ります。その点を考慮して、 JFPでは本体のみでユーザーがその場で必要に応じて単語を登録すること ができるようになっています。また、誤って登録してしまった場合や不要な 単語を発見したときは、その場で該当単語を消去することができます。 登録方法  JFPは 39 バイトのヒストリ・バッファを持っています。このバッ ファにはJFPを通して出力された文字がFIFO式に蓄えられていき ます。まずそのことを頭に入れておいてください。  読みを入力して [PF2] を押すと、ヒストリ・バッファの編集モード になります。ここで、登録したいと思う文字列を編集して作成します。 使用できるキーは [→],[DEL],[←] です。[→] はカーソルを一文字分 だけ右に移動させ、[DEL] はカーソル上の一文字を消去し、[←] はカ ーソルを文字列の先頭に移動させます。編集を行なった結果、ヒストリ・ バッファ内の文字がなくなった場合は自動的にローマ字かな変換入力に 戻ります。また、”取消キー”を押してもローマ字かな変換入力に戻り ます。どちらの場合も一度変更されたヒストリ・バッファの内容は元に は戻りません。  入力した読みに対して適切な単語に編集することができたら、 [CTRL]+[ENTER] を押します。これで辞書登録は終了です。作業終了後 はローマ字かな変換入力に戻っているはずなので、[PF5] を押してみて 希望する単語に変換されるかどうかを確認してみると良いでしょう。正 常に登録できた場合には、ヒストリ・バッファの内容は消去されていま す。 登録に関しての注意  読みが”ぁ”〜”ん”の範囲に入っていなかったり、辞書を拡張する のに十分なだけのスロット残り容量が確保できなかった場合には登録は 行なわれません。また、一つの読みに対して登録できる単語の数(正確 には単語ブロックの長さ)には制限があり、その長さを超えて辞書登録 を行なうことはできません。そのために、十分なスロット空き容量があ るにも関らず、辞書登録ができないこともあります。さらに言えば、そ の読みの1文字目で始まる単語が始めから登録されていない場合は辞書 登録ができません。例えば、標準辞書には”を”で始まる読みの単語は 登録されていないので、”をかし”という読みの単語を登録しようとし てもできない、ということです。 辞書からの削除  間違えて登録してしまった単語や、辞書変換中に発見した不要な単語 は、その場で削除することができます。方法は簡単で、辞書変換を行な ってその単語を表示させておいてから [CTRL]+[DEL] を押すだけです。 §その他 ●INIT"KYBD:R" とすると、一時的にJFPの機能を抑止し、それまで有効 であった "STDI:", "KYBD:" デバイスの機能が復活します。JFPを再開 するには INIT"KYBD:" とします。 ●よく発生する誤選択を防止するために、無効なファンクション・キーは誤 って押してしまっても何も起こらないようになっています。その他のキー が押された場合は通常、バッファをフラッシュした後にそのコードも出力 されます。 ●間違えて入力したにも関わらず [ENTER] を押してしまった場合でも、 [RCL] を押せば入力文字が復活します。このような場合はあらかじめ誤っ た文字列を消去してから [RCL] を押せば良いでしょう。 ●単漢字辞書の内容をJFP本体から変更する方法はありません。 ●他にも、たとえばローマ字かな変換入力においてキーの割り当てが一部変 更されていて良く使う記号が変換を行なわなくても入力できるというよう なこともありますが、細かいことが多いので省略します。 §プログラムについて ・仕様… ・デバイス番号 … 01 ・デバイス名 … "STDI:","KYBD:" ・デバイス属性 … 0xA1 ・フックしているコマンド… ・0x3f(イニシャライズ) ・0x40(初期化) ・0x43(キー読み出し) ・0x45(キークリア) ・JFPで新設したコマンド… ・0x7e(JFPの状態取得) ・0x7f(JFPの状態設定)  ”カナ”シンボルではなく”小文字”シンボルを点灯させているのは、” カナ”シンボルを点灯させると上位の処理で勝手に半角カタカナ変換をおこ なってしまうのでこれを防止するためです。また、放っておくと”CAPS” シンボルの状態に従って強制的に大文字/小文字変換が行なわれてしまうの で、ある番地を勝手に操作しています。これはプログラムを見ればすぐにわ かるので興味のある人はソースプログラムを見てください。  ローマ字かな変換のアルゴリズムは、テーブル参照とオートマトンによる 状態遷移を半々に組み合わせたものであり、ある程度高い表現能力を持って います。例えば "C" で始まる読みに対する柔軟性はそれを示すものの1つ です。しかし、そのためにある程度メモリも冗長に消費しています。  辞書は、かなの1文字目についてのインデックスを持っており、変換時は その情報によってポインタを1回たぐります。2文字目よりあとは単純な線 形検索アルゴリズムで検索を行ないます。線形検索なので遅いように思われ るかもしれませんが、登録単語数がさほど多くないということと、直接メモ リをアクセスしているということもあり、実用に十分なほどの速度で行なう ことができます。  JFP Ver. 1.06 より、コマンド番号 0x7e と 0x7f をサポートするように なりました。それぞれ ●0x7e … JFP の状態取得 ----------------------------------------- ・entry : なし ・return : A レジスタ = 0 … ”小文字”シンボルが消灯(JFP は off)        A レジスタ = 1 … ”小文字”シンボルが点灯(JFP は on) ●0x7f … JFP の状態設定 ----------------------------------------- ・entry : A レジスタ = 0 … ”小文字”シンボルを消灯(JFP を off)        A レジスタ = 1 … ”小文字”シンボルを点灯(JFP を on) ・return : なし という働きをします。どちらのコマンドも INIT"KYBD:R" などの操作によっ て JFP の働きが抑止されているときには、古いデバイスにそのままコマン ドが渡されて処理されることになります。これらのコマンドは、エディタな どのプログラムでファイル名入力時に一時的に日本語入力機能を抑止したい 場合などに使用すると良いでしょう。 §履歴 Ver. 1.00 (92/11/16) … ・初版公開 Ver. 1.01 (92/11/17) … ・インストーラーのバグを取り除いた(2ヶ所) ・半角カタカナ変換をサポートした ・[L] の変換が”ら行”ではなく”ぁ行”にな るようにした Ver. 1.02 (92/11/20) … ・TEXT.BAS などのように活性化されているファ イルが存在するメモリ・スロットに辞書が存 在する場合でも、辞書登録ができるようにし た ・INIT"KYBD:R" でJFPの一時抑止ができるよ うにした ・オート・パワー・オフの処理はシステムドラ イバのコマンドを呼ぶようにした ・JFPの処理にとって無効なキー入力があっ た場合は常にバッファをフラッシュするよう にした([CTRL]+[OFF] がいつでも効くように するため) ・[L][W] のストロークで”ゎ行”が出るように した Ver. 1.03 (92/11/21) … ・辞書変換において [CTRL]+[DEL] で削除がで きるようにした Ver. 1.04 (92/11/29) … ・ソースプログラム作成においてアドレス補正 処理を自動化した ・JFPの中で時限パワーオフ動作していたの を廃止した ([CTRL]+[OFF] をアプリケーショ ンに渡すことにした) ・辞書登録ルーチン内でエンバグした部分を治 した ・[C.CE] のバグを治した ・kterm などと組み合わせた場合の不具合を治 した ・記号入力を数字でも指定できるように改良し た。また、SHIFT-JIS コード以外のコードが 出ないようにした。更に、単漢字変換を拡張 機能として取り入れた ・関係のないファンクション・キーを押しても、 何も起こらないようにした ・アルファベット変換の [PF1] の機能が、先頭 にスペースがいくつ入っていても正常に動作 するようにした ・[RCL] を押すと、キーバッファが復活するよ うにした Ver. 1.05 (92/12/05) … ・辞書変換で、最初の候補と最後の候補が”ひ らがな”を介して環を作るようにした Ver. 1.06 (92/12/29) … ・コマンド番号 0x7e,0x7f を新設 Ver. 1.07 (93/01/08) … ・記号入力において合致する記号が存在しなか った場合には前回選択された記号ではなく、 表示された記号そのものが選択されるように した ・辞書変換、単漢字変換において読みが1文字 のときに、該当する候補が存在しないにも関 わらず、適当な候補を返してしまうというバ グを直した §参考にしたもの ・Nemacs 用日本語入力ツール "SKK" ・Wnn プロジェクト, "Wnn4.108/Pubdic/*.u" ・あさそら,Eolla system "SA.DIC" ・加古英児,"KNJSCRN" §著作権等について  このプログラムの著作権は近 成人が所有します。辞書に関してはあらゆ る権利・義務を放棄します。また、アーカイブ内容を改変しない限りアーカ イブの再配布は自由です。譲渡もこれに準じます。 §おわりに  良い感想、悪い感想、改良点、なんでも結構ですのでご意見をお寄せくだ さい。電子メールは以下のものが利用可能です。    ・ポケット通信 … ID = 1481 (N.Kon) [TEL. 03-3299-8661]    ・JUNET     … kon@cs.titech.ac.jp    ・Amateur Radio … JK1OSG @ JI1ABQ  JUNET については私が 1993 年 4 月以降に現在の組織とは違うところに 所属する予定なので、それ以降に連絡がつくかどうかはわかりません。 Jan. 8th, 1993 近 成人