Gimmodoki
秀丸で Google 日本語入力もどき。漢直もあるよ
Version 1.01 2011/11/08
目次
|
- Google の提供するかな漢字変換サービスを秀丸から利用するためのフロントエンドマクロです。
- 「Google 日本語入力を使ってみたいが、今使ってる IME は手放せない」
- 「流行語やスラングを書きたいが、変な単語を IME に学習させたくない」
そんな人はこのマクロをお試しください。
- Google 日本語入力 (以下「mozc」と呼びます) のインストールは不要です。
- 使用時にインターネット接続が必要です。
- 学習しません。単語登録もできません。
- ローマ字カスタマイズの自由度は mozc と同等以上です。
- mozc のローマ字定義ファイルがそのまま使えます。
- 漢直もローマ字として定義できます。サンプルとして TUT-code の定義ファイルが同梱されています。
|
- 32bit 版の 秀丸エディタ ver 8.00 以降 または 秀丸メール v5.70 以降と Internet Explorer 8 以降をお使いですね?
- マクロフォルダの位置を確認します。マクロフォルダは秀丸の [その他]-[動作環境]-[パス]-[環境]-[マクロファイル用のフォルダ] で指定されているフォルダです。無指定なら Hidemaru.exe と同じフォルダです。
- ダウンロードしたアーカイブをマクロフォルダに解凍します。マクロフォルダ直下に Gimmodoki.mac と Gimmodoki フォルダを置いてください。
- [マクロ]-[マクロ登録] で Gimmodoki.mac を適当な番号に登録します。
- [その他]-[キー割り当て] で適当なキーに割り当てます。
インストール後のファイル構成は次のようになります。
■マクロフォルダ\
│・Gimmodoki.mac … 起動マクロ
└■Gimmodoki\
│・Gimmodoki-Main.mac … 本体マクロ
│・default.ini … 標準設定ファイル
│・readme.html … このドキュメント
├■romaji\
│ ・atok-kana-106.tsv … ローマ字定義ファイル (ATOK 風かな入力、日本語キーボード用)
│ ・mozc-roman-sjis.tsv … ローマ字定義ファイル (mozc 風ローマ字入力)
│ ・tut-code.tsv … ローマ字定義ファイル (TUT-Code)
└■system\
・input.mac
・convert.mac
・candidate.mac
・segment.mac
・macrodll.dll
- インストール時と同じ方法でキー割り当てを解除します。
- 同様にマクロ登録も解除します。
- Gimmodoki.mac と Gimmodoki フォルダを削除します。
レジストリは使っていません。
- ローマ字をあらかじめ入力しておきます。
- ローマ字の直後にカーソルを置いて Gimmodoki.mac を実行します。
- 必要に応じて追加のローマ字を入力します。カーソルを移動するには [←] [→] を、前の文字を削除するには [Backspace] を押します。
- [Space] を押して変換します。
- [←] [→] を押して注目文節を移動します。
- Shift+[←] Shift+[→] を押して文節を伸縮します。
- [↑] [↓] を押して候補を選択します。
- [Enter] または文字キーを押して確定します。キャンセルするには [Esc] を押します。
設定は個人設定ファイルに書きます。はじめに、Gimmodoki フォルダ内にある標準設定ファイル default.ini をコピーして user=(Windowsユーザ名).ini という名前の個人設定ファイルを作ってください。例えば、Windows ユーザ名が hikaru だとしたら、個人設定ファイル名は user=hikaru.ini とします。
以下の設定は個人設定ファイルの [オプション] セクションに書きます。
- 空白文字
- 待機中にスペースキーを押して入力する空白文字を定義します。2 文字からなる文字列を半角ダブルクォートで囲みます。1 文字目は [Space] を押したとき、2 文字目は Shift+[Space] を押したときに入力されます。デフォルトは " " (1 文字目が全角空白、2 文字目が半角空白) です。
設定例
空白文字=" "
- ローマ字構成文字
- ローマ字として扱う文字を列挙します。列挙した文字列を半角ダブルクォートで囲みます。この設定は (1)マクロ起動時にカーソル直前のローマ字を取得する動作と (2)入力中および変換時のローマ字立ち直りの動作に影響します。デフォルトは半角英数字と
-~,./
です。
設定例
ローマ字構成文字="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-~,./"
- 直前のローマ字列を入力
- マクロ起動時にカーソル直前のローマ字を取得するか否かを yes/no で指定します。デフォルトは yes です。
設定例
直前のローマ字列を入力=no
- ローマ字立ち直りレベル
- ルールにマッチしなかったときにバックトラックする最大文字数を指定します。デフォルトは 0 です。〈→ローマ字立ち直りについて〉
設定例
ローマ字立ち直りレベル=4
- 入力中のカーソルを表示
- 入力中にカーソルを表示するか否かを yes/no で指定します。デフォルトは yes です。
設定例
入力中のカーソルを表示=no
- キャンセル後のカーソル位置を保持
- [Esc] でキャンセルした後のカーソル位置を指定します。yes だとキャンセル前の注目文節の末尾にカーソルが置かれます。no だと入力文字列全体の末尾にカーソルが置かれます。デフォルトは no です。
設定例
キャンセル後のカーソル位置を保持=yes
- 完了後に次の入力を待つ
- [Enter] で確定した後および [Esc] でキャンセルした後の動作を指定します。yes だとマクロは終了せずに待機し、続けてローマ字を入力できる状態になります。no だとマクロは直ちに終了します。デフォルトは no です。
設定例
完了後に次の入力を待つ=yes
以下の設定は個人設定ファイルの [カスタマイズ] セクションに書きます。
- ローマ字
- ローマ字定義ファイルを絶対パスまたは個人設定ファイルからの相対パスで指定します。デフォルトは romaji\mozc-roman-sjis.tsv です。〈→関連作品:ローマ字定義ファイル〉
設定例
ローマ字=romaji\tut-code.tsv
かな入力に関する注意: 同梱の atok-kana-106.tsv は「O (Shift+[ o ]) = を」「= (Shift+[ - ]) = ー (長音記号)」という変則的なルールになっています。これは日本語キーボードの制限を回避するためです。〈→ローマ字カスタマイズ:仕様〉
Gimmodoki は mozc を意識した自由度の高いローマ字かな変換アルゴリズムを搭載しています。ローマ字入力に限らず、漢字直接入力を含め、逐次打鍵型の日本語入力方式はだいたい実装できると思います。〈→関連作品:ローマ字定義ファイル〉
ローマ字の定義はタブ区切りテキストファイルで行います。mozc のローマ字テーブルをエクスポートしたファイルがそのまま利用できます (が、あらかじめ Shift_JIS に変換することをお勧めします)。
- エンコーディングは Shift_JIS がいいです。Shift_JIS 以外のエンコーディングも自動判別で読み込めますが、Shift_JIS で表せない文字は「?」に化けます。
- 改行コードは CR+LF でも LF でも大丈夫です。
- 1 行が 1 個のローマ字かな変換ルールを表します。
- 1 行は 3 個のタブ区切りフィールドからなり、それぞれ「入力」「出力」「次の入力」を表します。「次の入力」は省略可能です。
定義例
a あ
ka か
kk っ k
- タブ文字がない行は無視されます。
- 1 行の長さは 4,000 バイト程度まで。行数はメモリの許すかぎり無制限です 。
空白文字をローマ字の一部として利用するには、ローマ字定義ファイルの作成とローマ字構成文字オプションの設定に加え、変換機能を [Space] 以外のキーに割り当て直す必要があります。〈→キーカスタマイズ〉
入力の判別は文字によります (物理キーではありません)。日本語キーボードでは以下の制限があります。
- Shift+[ 0 ] は文字が入力されないので使えません。
- [ ¥ ] と [ \ ] は区別できません。
Gimmodoki のローマ字かな変換アルゴリズムは非決定的なルールセットを前提としています。非決定的とは、例えば「n = ん」「na = な」という 2 つのルールが同時に存在するために、「n」を入力した時点では「ん」に決定できないことを言います。決定できない入力文字は「保留文字列」として溜まっていき、ただ 1 つのルールにマッチした (決定できた) 時点でかなが出力されます。
では、ルールにマッチしなかった場合は何が出力されるべきか? これは IME によって設計思想が異なる部分で、これといった標準的な挙動はないようです。Gimmodoki は「ローマ字立ち直りレベル」という概念を持ち、この挙動をユーザーの好みに合わせて調整できるようになっています。大ざっぱに言うと、ローマ字立ち直りレベルを 0 に設定すると mozc と同じ挙動に、(ローマ字の最大文字数 - 2) 以上の値に設定すると ATOK と同じ挙動になります。
例として、一般的なローマ字に「omicron = ο」という定義を加えたうえで「omicrou」と入力した場合の、ローマ字立ち直りレベルによる出力文字列の違いを表に示します。
| 出力文字列 | 備考 |
レベル 0 | omicroう | mozc 方式 |
レベル 1 | omicrおう | |
レベル 2 | omicろう | |
レベル 3 | omicろう | |
レベル 4 | omいcろう | |
レベル 5 | おみcろう | ATOK 方式 |
厳密に言うと、「保留文字列 + 入力文字」がルールにマッチしなかったとき、何文字まで戻って再マッチングを試みるか = バックトラックする最大文字数を指定するのがローマ字立ち直りレベルです。上記の例では「omicro」までが保留文字列となり、次に「u」を入力した時点でルールにマッチしないことが判明してバックトラックが始まります。バックトラックは「[omicr]o」→「[omic]ro」→「[omi]cro」→「[om]icro」→「[o]micro」のように保留文字列を 1 文字ずつ縮めながらマッチングを繰り返し、マッチするルールが見つかったらかなを出力します。縮めた文字数がローマ字立ち直りレベルの設定値に達したら、その時点でバックトラックは打ち切られます。バックトラックが終わったあと、残りの部分についてローマ字かな変換処理が再帰的に行われます。
o
om
omi
omic
omicr
omicro
omicrou マッチするルールなし ⇒ バックトラック開始
omicro 0
omicr 1
omic 2
omi 3
om 4
o 5 「o = お」にマッチ ⇒ バックトラック終了、「お」を出力
m
mi 「mi = み」にマッチ ⇒ 「み」を出力
c
cr
cro
crou マッチするルールなし ⇒ バックトラック開始
cro 0
cr 1
c 2 マッチするルールなし ⇒ バックトラック終了、「c」を出力
r
ro 「ro = ろ」にマッチ ⇒ 「ろ」を出力
u 「u = う」にマッチ ⇒ 「う」を出力
キー割り当てを変更するには、各マクロの冒頭部分を例に倣って直接書き換えてください。
状態 | 担当マクロ |
待機中 | Gimmodoki-Main.mac |
入力中 | system\input.mac |
変換中 | system\convert.mac |
候補選択中 | system\candidate.mac |
文節伸縮中 | system\segment.mac |
有志の方が公開されている mozc 用ローマ字定義ファイルを紹介します。(2011/11/06 現在、更新日順)
- AOUR Hisasi Sinzono さん? 2011/11/06
- G-Code m(as)m さん 2011/09/12
- 花配列 amoxapine さん 2011/01/09
- gACT10 木村清 さん 2010/12/31
- ぶりっこ入力 木村清 さん 2010/11/25
- AZIK MIKOME Yoshiyuki さん 2010/11/25
- JLOD arctica0316 さん? 2010/12/25
- T-Code meech さん 2010/12/22
- DvorakJP cobodo さん 2010/07/01
- ACT tomoemon さん 2010/02/19
他にもあったら教えてください。〈→談話室〉
マクロで IME を作るとか m9(^Д^) プギャー
セキュリティ上の注意
- 入力内容と変換結果は平文のままインターネットを通じて送受信されます。第三者に盗聴されたらまずい場合はこのマクロを使用しないでください。
動作環境
- 秀丸エディタ v8.00 以降 + Internet Explorer 8 以降で動作するはずです。
- 秀丸エディタ v8.11 + Internet Explorer 9 で動作確認しました。
ライセンス
- このマクロはフリーウェアです。自由に利用、改変、再配布することができます。
- 改変したものを公に再配布するときは次のことを明記してください。
- 改変したものである旨 (できれば改変内容も)
- 改変元の名称、バージョン、一次配布場所
- このマクロの使用または使用不能によって生じた事象に対しては、その使用者が一切の責任を負うものとします。
配布場所
一次配布場所は Wisteria - 秀丸マクロ - Gimmodoki です。二次配布は次のところで行われています。
謝辞
- macrodll.dll の作者 阿部紀行 さん。毎度お世話になっております。今回も macrodll.dll のリストボックスの速度を最大限活用させていただきました。
- サイトー企画 の社長 秀まるお さん。 Google 翻訳マクロ からエンコード/デコード関連のサブルーチンを流用させていただきました。ありがとうございました。
- mozc の作者 小松弘幸 さん。mozc のローマ字かな変換に関するとても重箱の隅な議論に Twitter でお付き合いいただきました。ありがとうございました。
- TUT-code の作者 大岩元 さん、高嶋孝明 さん。代表的な漢直の実装例として TUT-code のコードリストを同梱させていただきました。ありがとうございました。
- Version 1.02 (2011/11/28)
- 起動時間短縮 (ローマ字定義をキャッシュする)
- 候補選択中の画面のちらつきを低減
- Version 1.01 (2011/11/09)
- Version 1.01 (2011/11/08)
- 全部の候補を出す (v1.0 では 5 個でした)
- 10 個 → 100 個 → 1000 個の順でインクリメンタルに候補を取得する
- リストボックスまわりの改善
- 9 行表示
- 画面外へはみ出さない
- ちらつき・描画落ちを低減
- ドキュメント修正
- 64bit 版について加筆
- 日本語キーボードの制限と atok-kana-106.tsv の内容について加筆
- Version 1.0 (2011/11/07)
バグ報告、感想、ツッコミなどは 談話室 へどうぞ。