異能力バトルSKK日本語入力FEP学園 〜激闘合体!お色気忍者修行編〜
SKKFEP - Simple kana to kanji conversion front end processor
概要
SKKFEPの設定や利用方法について解説します。
ほとんど書き途中だし気の向いた時にしか更新しないけど実験用ってことで勘弁な。
修行内容のご紹介
- 甘口〜標準設定と応用
- 他のIMEと同時に使う方法
- 設定の変更方法
- 雪花で和英混在
- 予測変換は最強
- 物理アンドゥとは
- 中辛〜設定を自分で作り直してみよう!
- 激辛〜ただの設定に興味はありません(ry
- 必殺技コマンド(辞書変換入力)について
- 応用例X: DDSKK矢印入力のさらなる拡張
- 応用例Y: サーバサイド漢直
- SKKGateとの連携について
- 応用例Q: 閉じ括弧の自動入力 ★New!
- 応用例W: 「地図」を探せ――
- 応用例Z: 他のスクリプト言語への移植について
難易度: 甘口 〜 標準設定と応用
他のIMEと同時に使う方法
SKKFEPは他のIMEとは一切競合しません。同時にインストール可能です。OSの標準機能を使うように作られており、言語バーでいつでも切り替えが可能です。
言語バーのショートカット設定を行ってアプリ実行中にキー操作だけで動的に切り替える方法
設定方法 あとで書く
設定の変更方法
あとで書く
雪花で和英混在
SKKを改良し進化させた入力方式の一つにSekka(石火)があります。石火では日本語のローマ字入力とアルファベットによる単語入力を区別せずに自然に入力するスタイルを取っています。すごい!何だか滅茶苦茶便利そう!うらやましい!妬ましい!くやしい!でもビクンビクン(ry
そこで我らがSKKでもSekkaの機能のほんの一部を体験できるようにしちゃいました。SKKFEPでは「雪花」と呼ぶ和英混在の入力機能を備えています。
(あとで操作例を書く)以下に操作例を示します
- Alphabet.
- Python.
- Ruby.
- Skk.
Basicのように他の日本語読みの候補が高優先度の位置に存在する場合は、
Basi/cのように入力途中のどこかにスラッシュを入力します(スラッシュは単語の入力途中ならどこで押してもよい)
予測変換は最強
SKKFEPは数々の独自拡張機能を搭載しています。
中でも予測変換機能は入力効率を根本的に変える可能性を秘めています。
まずはその使い方を覚えましょう。
既に入力済みの文章を推敲する時や、長い専門用語を大量に含んだ文章を編集する際、際絶大な威力を発揮します。
(あとで操作例を書く)
- 動的補完でどんどんん予測変換結果が出てくるので、入力内容が確定した段階で
- 適当に.(ピリオド)とかCTRL+Nとか↓のどれかを押す
- 子音入力中であっても即確定可能
だいたいどういうパターンだと何文字押せば確実に予測できるかは、慣れると勝手に指が覚え出します(断言)。かつて人類はPC-1251もPC-E500もそうやって乗りこなしてきたのです。
当然ながら、予測変換の対象は前述の雪花にって和英混在で判定されます。
(あとで操作例を書く)
- Dict. とか Zarat.とか適当にやってみて
また、入力頻度の高い文字列を辞書に登録しておくことで、最速で入力することが可能です。
「http:// → http://」とか「hd → &hd=1」「ry → (ry」のような子音の連続で開始する文字列を学習させておくと、例えば
SHIFT+
Ht.の操作だけで「http://」と即座に変換まで完了することができます。
ブラウザなどのURL欄の入力や高速反応が生死を分けるネトゲや実況のチャット等に威力を発揮します。
以下は役立ちそうな辞書エントリの例です。
読み | 候補 |
http:// | http:// |
hd | &hd=1 |
ry | (ry |
物理アンドゥとは
SandS
いいからテーピングだ!
いいからドーピングだ!
難易度: 中辛 〜 設定を自分で作り直してみよう!
(あとで書く)
テキトーに定義を書くべし。根性でおk
難易度: 激辛 〜 ただの設定に興味はありません(ry
必殺技コマンド(辞書変換入力)について
応用例X: DDSKK矢印入力のさらなる拡張
DDSKKではSKKの主要な機能を継承しつつ、さまざまな拡張が意欲的に試みられています。
ローマ字の標準ルールも拡張されており、その1つとして「zL」の拡張があります。
これは、論理包含の矢印(⇒)を入力するもので、標準の矢印入力ルールを拡張するものです。
ここでは、以下のように段階を追って拡張を行なっていきます。
- 1. DDSKK互換にするための記述
- 2. 辞書変換入力による置き換え
- 3. 動的な矢印変更の操作
まずこの入力方式をSKKFEPでそのまま同じように使う方法を書きます。
- 一番簡単な方法
- あー、これは内容が古いです。この設定は既に標準設定に取り込み済みです。
- 初期バージョンはSKK10互換だったので包含の矢印は含んでなかったのじゃよ。(遠い目)
単純に必要なルールを設定ファイルの末尾(テキトーな位置でよい)に書くだけで実現できます。
ルールは1行に1つ記述します。まずキー入力シーケンスを書き、空白で区切ってローマ字変換の出力内容を書きます。
zL ⇒ # 論理包含の矢印
- 複数の入力パターンに対応させつつテーブルサイズを節約する
SKKFEPは組み込み用途を強烈に意識して作られています。そのため、ローマ字変換処理などのSKKFEPの根本的な動作を決定するためのデータは1.5KBほどの極小サイズに収まるよう設計されています。SKKFEPで今回のDDSKK互換の設定を正式採用するとしたら、このサイズになるべく悪影響を及ぼさないように細心の注意を払わねばなりません。一体どんな設定にすればよいのでしょうか?
一番最適だと思われるのは、矢印入力ルールに文字を追加するやりかたです。元のルールを見てみましょう。
音素v hjkl
z!v ←↓↑→
f!v .
この設定により、
zまたは
fを押した後に音素vのキー(
hjkl)を押すと、viカーソル操作の方向の矢印が入力されます。Eggが目指した理想の一部をSKKが引き継いでいるというわけです。
で、今回はここに1文字づつ追加します。
音素v hjklL
z!v ←↓↑→⇒
f!v .
テーブルの個数自体が増減するわけではないので、サイズ増加へのインパクトは最小で済みます。今回は8ビット文字と16ビット文字がそれぞれ1文字づつ増えたため、合計3バイトの増加となります。これで2つのキーシーケンスを同時に追加できました。
- ここまで古い内容(既に取り込み済)
- ここからが改良版の本題です。
さて、ここまではDDSKKを真似するための設定でした。ここからは誰もやったことのない領域へ、これを超える新たな入力方式を模索してみましょう。今回はサイズ制限などに囚われないアバンギャルドな生き方を目指します。
まず前準備として、必殺技コマンド(辞書変換入力)を使ってここまでの設定を置き換えてみます。
1. 以下の設定をルールの末尾など適当な位置に追加します。
zL ?@やじるし
この設定を適用すると、zLと入力した時、辞書内で最初に見つけた指定単語(上記の記述の場合は「@やじるし」)を変換した結果の候補を文字として入力することができるようになります。この時、
変換・確定などといったまどろっこしい操作は不要というのがこの必殺技最大のポイントです。キーを押した瞬間に入力されます。(これをさらに応用したのが「@ ?today()」なのですが、こちらはSKKGateも含まれていてさらに複雑なので後回しにします。)
以前の設定では、zLと押した時は固定の矢印が入力される、いわゆるローマ字かな変換の延長の動作しかできませんでしたが、今回この必殺技コマンド(辞書変換入力)を記述したことにより、ローマ字かな変換テーブルの枠を越えて辞書プロセス側(ユーザ辞書)が入力内容を決定できるようになったのです。
2. あとは対応する辞書エントリを用意するだけです。おもむろに辞書フォルダを開き、以下の内容を記述するか、同等の内容を手動でユーザ辞書に登録します。(
Q@やじるし
SPACEで1文字づつ登録します)
追加辞書.txt
@やじるし /⇒/➡/➔/➜/➠/➤/
@てん /、/,/
@まる /。/./
矢印の入力には、コピペや文字コード表、SKKGateの文字コード入力を活用してください。
文字 | 番号 |
➡ | U+27A1 |
➔ | U+2794 |
➜ | U+279C |
➠ | U+27A0 |
➤ | U+27A4 |
では設定を適用して、zLと押してみましょう。最後に学習させた文字が出てくれば設定成功です。
文字の切り替え方法は、「@やじるし」と変換して文字を選択し、確定することで簡単に行えます。
今回のテクニックを応用することで、句読点の選択や記号入力のマッピング編集などが可能になります。単純でシンプルな実装ですが、さまざまな応用が可能かもしれません。
応用例Y: サーバサイド漢直
コンピュータ使いならば誰もが夢憧れる、流れるような無連想入力!もはや今や大漢直時代!
そんな理想の入力を追求するべく、多人数でサーバ側に入力ルールを少しづつ構築しながら、動的に内容を編集しつつ習得していく、努力・友情・勝利のストーリー展開
目指すはアウヤンテプイ――
そんな、ほんのちょっとだけ
ルナティック浪漫に溢れる魅惑の設定について記述してみたいと思います。
- 漢直養成ギプス オレオレルール動的カスタマイズ編
- 漢直ルールにお困りですか?――辞書にお任せ!
入力時:
- ユーザのキーストローク→ローマ字かな変換ルールとして吸い上げ→辞書プロセスにキーストロークを送る→漢直の辞書を使って変換
- ルールの動的学習の実現方法
編集時:
- /@に続けてキーストロークを入れて文字を登録
オレオレ漢直ルール.txt
@2q /哀/
@2w /逢/
@2e /宛/
@2r /囲/
@2t /庵/
@2y /徴/
- 辞書プロセス側には何が必要か?えっ……通信?
- SKKNetとは何か?謎の新機軸SKKGateとは?待て次号!
SKKGateとの連携について
応用例Q: 閉じ括弧の自動入力
SKKGateはSKKの変換操作時に任意のプログラムを連動させることができます。
これを利用して、SKK10に実装されていた
skk-auto-insert-paren♺と同等の機能をSKKGateで実装する実験をしてみましょう。
- 1. SKKGate側の設定
まず始めに、skkgate.iniの末尾に以下の内容を書き込み、SKKGateに関数kakko()を定義しておきます。
この関数は、"「」"を変換結果として渡しつつ、キーボードの
←を1回押す、という動作を行います。
- skkgate.ini:
function kakko() { return G.Sync(-2), S.SendKeys("{LEFT}"), "「」" }
- 設定の手順
- セットアップを起動し、「ユーザ辞書」ボタンを押してユーザ辞書・設定保存フォルダを表示します。
- フォルダ内のskkgate.iniをダブルクリックするとテキストエディタでskkgate.iniが編集状態になるので、ファイル末尾に移動して上記を入力し、ファイルを保存します。
- (その後、SKKFEPのセットアップの「リフレッシュ」を押すか、セットアップの「メンテ」ボタンの二度押し、もしくはSKKGateのセットアップで「インストール(再起動)」を実行するとSKKGateが再起動して設定内容が反映されます。が、次の手順でOS再起動をかけるのであれば、どうせその延長でSKKGateの再起動も行われることになるため、ここでは何もしなくても大丈夫です)
- 2. SKKFEP側の設定
そして最後に、skkrule.txtの末尾に以下を追加します。
この設定により、
[キーを押すと
必殺技コマンドが発動し、SKKGate側の関数kakko()が実行されるようになります。
- skkrule.txt:
\[ ?kakko()
- 設定の手順
- セットアップを起動し、設定ボタンを押して設定GUIを出します。
- 設定GUIの「詳細」ボタンを押すとテキストエディタでskkrule.txtが編集状態になるので、ファイル末尾に移動して上記を入力し、ファイルを保存します。
- その後、設定GUIのOKボタンを押すと設定内容がレジストリに書き込まれます。
- なお、レジストリの設定内容を反映するためには、個々のアプリケーションの再起動かログオフ、もしくはOS再起動が必要です。
ここまでできたら、OS再起動後、メモ帳を起動して日本語入力モードにしてから
[キーを連打してみましょう「「「「「ヒャッハー」」」」」
- 3. 制限事項
本設定による文字入力は万能ではありません。以下の制限がありますので注意してください。
A. 管理者権限で動作しているアプリケーションで動かすためには、
SKKGate側も管理者権限を持つ必要があります。
一応回避策としては、SKKGateのセットアップを管理者権限で起動し、表示される警告を無視して強引にインストールを実施することで、一時的に管理者権限でSKKGateを動かすという裏技が使えますが、(検閲削除)なんで正直あまりお勧めできません。
(ちなみに、この裏技で管理者権限で動かした場合でも、ログオフやOS再起動で一般権限に戻ります)
B.
一部のアプリケーションで動作しない場合があります。
21世紀の現在に至っても、アプリのカーソル位置はアプリ側のみが管理しているものが殆どであり、IME側からは正確に制御できないもの(特にゲーム類)が大多数を占めています。あと、そもそも
←キーでカーソル移動しないようなフリーダムなアプリにはこの技は効きません。
他にも、ブラウザのプラグインや、オンラインゲームなどのハックシールド(などと自称するジョークソフト)の配下では正常にキー入力制御が動作しないため動きません。諦メロン
- 4. 後片付け
通常版のセットアップを再度実行し、設定ボタンを押してOK空押し(その後OS再起動等)で元に戻せます。skkgate.iniは放置で問題なし。
- 5. 竹輪
個人的には、この手の入力支援機能には以下の問題があるため、IME上に実装すべき機能ではない、という信念があります。あくまで個々のアプリケーション(エディタ)側の補完機能として文字入力・削除と合わせた総合的な実装を行うべき機能分類です。
- ・半角英数モード時と文字入力の挙動が一致しないため、思考が阻害される
- ・括弧内の入力が完了した後や、括弧そのものを削除したい時にカーソル位置を再確認しなければならず、思考が阻害される
ですが、「できないからやらない」ではなく「できるけどあえてやらない」にしておくこと、「理論上の限界点」と「実用上の妥協点」を知っておくことは大事です。ってなことで、試作研究時の設定手順をここに残しておきます。
応用例W: 「地図」を探せ――
応用例Z: 他のスクリプト言語への移植について
終劇
co (Twitter♺)