GoogleとYahooのかな漢字変換Web APIをEmacsから使ってみた

私はEmacsで日本語を書くときはDDSKK-NICOLAという入力方式を使っています。親指シフト入力というかな入力方法、プラス、送り仮名を指定することで効率よく漢字できるとされるSKKが組み合わされたものです。

私はさらに配布されたレイアウトをいじって濁音と半濁音は二打鍵(「た」と打ったあとで「゛」を打つ)で入力するようにしています。本来親指シフト入力といのは一文字一打鍵ですべての仮名をキーボードの数字キーを使わず下の三段で入力できるように考案されたものなので、残念な感じはしますが、キーボードを選ばないし(親指シフト入力では左右の親指それぞれで押しやすいキーが独立してないといけない)、かえって入力しやすくなる文字などもあるのです。

とはいえ、濁音・半濁音だけでなく、DDSKK-NICOLAのかな漢字変換を使っているので、その分を含めると打鍵数が多くなってしまいます。DDSKK-NICOLAでは、変換対象を指定するための打鍵が必要なのです。

そこで打鍵数を減らすためにYahootやGoogleのかな漢字変換Web APIを使ってみることにしました。

目指すのは平仮名を入力した選択範囲をAPIに送って、戻ってきた変換後の値を選択したリージョンと置き換えるというものです。

APIでは、変換候補を返してくれるので、Emacs Lispでマクロが作れれば、普通のIMEのように変換候補を選びながら入力していくことが実現することが出来るでしょう。誰か作ってくれると良いのですが。

Web APIかな漢字変換以外の候補

親指シフト入力と日本語変換の組合せの導入方法は普通にみつかるのですが、私はEmacsの機能でそれを実現したいと思っています。私のメインで使っているLinuxでは、OmeletやDDSKK-NICOLAしかなかったという状況も影響しています。それとEmacs以外ではせいぜいブラウザに検索キーワードを入れたり、Webフォームに入力するくらいなので、わざわざOSやOSのバージョン毎に異なる親指シフトの設定をするのが面倒だという理由もあります。

Omeletというのは普通の(SKK方式でない)変換方法とともに使われていたものです。最近では賢いmozcなどの変換サーバー(?)とともに使えるようになってるのではなかろうかと期待したのですが、しかし、いちばん新しそうな記事でも10年以上も前のものでした。

egg-anthyとomeletで親指シフト — KtJ Dragon

残念ながら記事の中のomeletの配布先URLは無くなっていました。

まあ最近のかな漢字変換なら変換候補を選ばなくてもある程度は賢く変換してもらえるでしょうから、Web APIを使ったかな漢字変換で一括変換してみることにしました。

かな漢字変換APIにPHPでデータを送る

ネットにあったPHPのサンプルを参考にさせてもらいました。YahooのAPIを使う設定はアプリ版を選びましたが、WEBアプリでも違いはないでしょう。

PHPのプログラムが出来たら、実行権を与えて、パスの通ったディレクトリに配置します。

Linuxではphp-xmlパッケージをインストールする必要がありました。Mac(High Sierra)では特に何も追加せずに動作しました。Windowsではごめんなさい確認していません。バッチファイルかPowershellを通じてPHPを呼ぶか、APIへの接続を他の言語で実装してしまうかで何とかなるのではないかと思います。

echo ‘へんかんたいしょうのてきすとでーたです’ | yahooocnv.php

などとして望む結果が出力されれば成功です。

Emacsからデータを送って受けとる処理

Emacsにはshell-comand-on-regionという、選択された範囲(リージョン)のテキストを外部のコマンドに渡すことの出来る関数が用意されています。ここではPHPを使いましたが、他に使いたいプログラム言語があればそれで作ったプラグラムに処理させることも出来ます。

あとは戻ってきた値をもとのテキストと置き変えます。

以下をEmacsのinit.elに書きます。shell-command-on-regionでGoogle検索するとこういったサンプルはたくさん見つかると思います。

(defun henkan-kanji ()
(interactive)
(when (region-active-p) ;; 選択範囲があるとき
(shell-command-on-region (region-beginning) (region-end) “googleconv.php” nil t))
(move-end-of-line nil)
(mark))

(global-set-key “\C-t” ‘henkan-kanji)

使い方

変換対象テキストの先頭位置でマークして、変換対象を入力し終ったらC-x C-x とするとマークした位置までが選択された状態になりますので、変換を実行します。私はC-tに割り当てています(デフォルトで文字を入れ替えるコマンドですが、使います?)

戻ってきた変換結果に間違いがあれば、その個所に移動してDDSKKを使って変換します。migemoがあれば移動は簡単でしょう。

Yahoo側で80文字までという制限があるようです。しかし、何箇所か文節を空白で区切って送るともっと長くてもよさそうな気がします。Googleで文節を指定するのは「,」になりますが、空白でも良いようにPHPで置換しています、Googleは文節を区切っても長さ制限は変わらないようです。

感想

変換結果の修正にはやはりDDSKKは使うのですが、ある程度の長さをひらがなだけ入力するというのは楽で良いです。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です