Gimmodoki

秀丸で Google 日本語入力もどき。漢直もあるよ

Version 1.01 2011/11/08

目次

スクリーンショット *1

概要

  • Google の提供するかな漢字変換サービスを秀丸から利用するためのフロントエンドマクロです。
    • 「Google 日本語入力を使ってみたいが、今使ってる IME は手放せない」
    • 「流行語やスラングを書きたいが、変な単語を IME に学習させたくない」
    そんな人はこのマクロをお試しください。
  • Google 日本語入力 (以下「mozc」と呼びます) のインストールは不要です。
  • 使用時にインターネット接続が必要です。
  • 学習しません。単語登録もできません。
  • ローマ字カスタマイズの自由度は mozc と同等以上です。
    • mozc のローマ字定義ファイルがそのまま使えます。
    • 漢直もローマ字として定義できます。サンプルとして TUT-code の定義ファイルが同梱されています。

*1
時事ネタとネットスラングを含んだ例文を示しています。例文の内容は事実と異なります。(2011 年 11 月の時事ネタ。パパンドレウの尻を叩いたのはサルコジとメルケルだよ!)

ダウンロード

セットアップ

インストール

  1. 32bit 版*1秀丸エディタ ver 8.00 以降 または 秀丸メール v5.70 以降と Internet Explorer 8 以降をお使いですね?
  2. マクロフォルダの位置を確認します。マクロフォルダは秀丸の [その他]-[動作環境]-[パス]-[環境]-[マクロファイル用のフォルダ] で指定されているフォルダです。無指定なら Hidemaru.exe と同じフォルダです。
  3. ダウンロードしたアーカイブをマクロフォルダに解凍します。マクロフォルダ直下に Gimmodoki.mac と Gimmodoki フォルダを置いてください。
  4. [マクロ]-[マクロ登録] で Gimmodoki.mac を適当な番号に登録します。
  5. [その他]-[キー割り当て] で適当なキーに割り当てます。

インストール後のファイル構成は次のようになります。

■マクロフォルダ\
│・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

アンインストール

  1. インストール時と同じ方法でキー割り当てを解除します。
  2. 同様にマクロ登録も解除します。
  3. Gimmodoki.mac と Gimmodoki フォルダを削除します。

レジストリは使っていません。


*1
このマクロは 32bit 版の macrodll.dll と 32bit 版の hmjre.dll に依存しています。64bit 版の秀丸で動かすには工夫が必要です。参考: h-tom's Warehouse - 秀丸エディタ macro DLL

使い方

  1. ローマ字をあらかじめ入力しておきます*1
    omairakokodehakimonowonuidaraakan
  2. ローマ字の直後にカーソルを置いて Gimmodoki.mac を実行します*2
    omairakokodehakimonowonuidaraakan
  3. 必要に応じて追加のローマ字を入力します。カーソルを移動するには [←] [→] を、前の文字を削除するには [Backspace] を押します*3
    おまいらここではきものをぬいだらあかんゆうたやろ
  4. [Space] を押して変換します。
    [おまいら]ここでは着物を脱いだらアカン言うたやろ
  5. [←] [→] を押して注目文節を移動します。
    おまいら[ここでは]着物を脱いだらアカン言うたやろ
  6. Shift+[←] Shift+[→] を押して文節を伸縮します。
    おまいら[ここで]はきものをぬいだらあかんゆうたやろ
  7. [↑] [↓] を押して候補を選択します*4
    おまいら[ココで]履物を脱いだらアカン言うたやろ
  8. [Enter] または文字キーを押して確定します。キャンセルするには [Esc] を押します。
    おまいらココで履物を脱いだらアカン言うたやろ

*1
手順 1 を省略して、マクロ起動後にローマ字を全部入力することもできます。そうすれば一般の IME と同じ使い心地が得られます。しかし、マクロ実行中はキーボードバッファが利かないため、タイピングが速いと取りこぼしが発生します。秀丸のウィンドウを小さくすれば再描画にかかる時間が短くなって取りこぼしも減りますが、ゼロにはなりません。できるだけ事前にローマ字を入力しておくことをお勧めします。
*2
カーソル直前にある一連の英数字と記号 -~,./ がローマ字として解釈されます。この動作は設定により変更できます。
*3
[Home] [End] [Delete] は使えません。
*4
[Space] と Shift+[Space] も使えます。

設定

設定は個人設定ファイルに書きます。はじめに、Gimmodoki フォルダ内にある標準設定ファイル default.ini をコピーして user=(Windowsユーザ名).ini という名前の個人設定ファイルを作ってください。例えば、Windows ユーザ名が hikaru だとしたら、個人設定ファイル名は user=hikaru.ini とします*1

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+[ - ]) = ー (長音記号)」という変則的なルールになっています。これは日本語キーボードの制限を回避するためです。〈→ローマ字カスタマイズ:仕様


*1
Windows ユーザ名を調べるには、[スタートメニュー]-[すべてのプログラム]-[アクセサリ]-[コマンド プロンプト] を開き、「set USERNAME」と入力して [Enter] を押します。

ローマ字カスタマイズ

Gimmodoki は mozc を意識した自由度の高いローマ字かな変換アルゴリズムを搭載しています。ローマ字入力に限らず、漢字直接入力を含め、逐次打鍵型の*1日本語入力方式はだいたい実装できると思います。〈→関連作品:ローマ字定義ファイル

仕様

ローマ字の定義はタブ区切りテキストファイルで行います。mozc のローマ字テーブルをエクスポートしたファイルがそのまま利用できます (が、あらかじめ Shift_JIS に変換することをお勧めします)。

ヒント

空白文字をローマ字の一部として利用するには、ローマ字定義ファイルの作成とローマ字構成文字オプションの設定に加え、変換機能を [Space] 以外のキーに割り当て直す必要があります。〈→キーカスタマイズ

入力の判別は文字によります (物理キーではありません)。日本語キーボードでは以下の制限があります。

ローマ字立ち直りについて

Gimmodoki のローマ字かな変換アルゴリズムは非決定的なルールセットを前提としています*5。非決定的とは、例えば「n = ん」「na = な」という 2 つのルールが同時に存在するために、「n」を入力した時点では「ん」に決定できないことを言います。決定できない入力文字は「保留文字列」として溜まっていき、ただ 1 つのルールにマッチした (決定できた) 時点でかなが出力されます。

では、ルールにマッチしなかった場合は何が出力されるべきか? これは IME によって設計思想が異なる部分で、これといった標準的な挙動はないようです。Gimmodoki は「ローマ字立ち直りレベル」という概念を持ち、この挙動をユーザーの好みに合わせて調整できるようになっています。大ざっぱに言うと、ローマ字立ち直りレベルを 0 に設定すると mozc と同じ挙動に、(ローマ字の最大文字数 - 2) 以上の値に設定すると ATOK と同じ挙動になります*6

例として、一般的なローマ字に「omicron = ο」という定義を加えたうえで「omicrou」と入力した場合の、ローマ字立ち直りレベルによる出力文字列の違いを表に示します。

出力文字列備考
レベル 0omicroう mozc 方式
レベル 1omicrおう
レベル 2omicろう
レベル 3omicろう
レベル 4omい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 = う」にマッチ ⇒ 「う」を出力

*1
同時打鍵型を除くという意味。中指シフト系も除く。通常の [Shift] キーは併用可。でも SKK は無理。って注文多いな!?
*2
厳密な用語をお望みか? ならば Windows-31J だ。
*3
たぶん。少なくとも数万個は実用範囲内のはずだけど、メモリを食い尽くしたらどうなるかは未確認。
*4
mozc では、1 個のルールは「出力」が UTF-8 で 300 バイトまで、ルールの数は 10000 個までに制限されています。(GoogleJapaneseInput-1.2.831.100)
*5
mozc も同様です。一方、ATOK や MS-IME は決定的なルールセットを前提とし、「n」を特別扱いしているようです。他の IME は (゚⊿゚) シラネ
*6
ATOK は決定的なルールセットを前提としてる点からして異なるので厳密な比較はできません。ついでに言うと MS-IME の挙動は特殊すぎて再現できません (ノ`Д´)ノ彡┻━┻

キーカスタマイズ

キー割り当てを変更するには、各マクロの冒頭部分を例に倣って直接書き換えてください。

状態担当マクロ
待機中Gimmodoki-Main.mac
入力中system\input.mac
変換中system\convert.mac
候補選択中system\candidate.mac
文節伸縮中system\segment.mac

状態遷移図

状態遷移図

関連作品

ローマ字定義ファイル

有志の方が公開されている mozc 用ローマ字定義ファイルを紹介します。(2011/11/06 現在、更新日順)

他にもあったら教えてください。〈→談話室

秀丸マクロ

マクロで IME を作るとか m9(^Д^) プギャー

お約束

セキュリティ上の注意

動作環境

ライセンス

配布場所

一次配布場所は Wisteria - 秀丸マクロ - Gimmodoki です。二次配布は次のところで行われています。

謝辞

バージョン履歴

Version 1.02 (2011/11/28)
Version 1.01 (2011/11/09)
Version 1.01 (2011/11/08)
Version 1.0 (2011/11/07)

フィードバック

バグ報告、感想、ツッコミなどは 談話室 へどうぞ。