「DDSKK」タグアーカイブ

AZIK on DDSKKで二重母音拡張の送り仮名をどうにかしたい (SKK Advent Calendar 四日目)

この日記はSKK Advent Calendarの四日目です。
三日目はkhikerさんでした。
DDSKK で部首変換、総画数変換 – とりあえず暇だったし何となく始めたブログ

さて最近、rubikitchさんの記事にもろ触発されてAZIKの訓練をしているところです。

もっと早くタイピングしたい人へ贈る習得容易な拡張ローマ字入力『AZIK』 – (rubikitch loves (Emacs Ruby CUI Books))

指が止まる時もまだありますが、いくつかのパターンは脊髄反射レベルで指が動くようになってきました。

特によく使うのが二重母音拡張です。
詳しくはこちらを見ていただくのが一番ですが要はよく使う「ai」「uu」「ei」「ou」がワンキーで押せるようにリマップされているわけで、二重母音拡張を使うと「かいがい」は「kqgq」と入力できます。
このようにかなり楽に入力できるようになるのですが、AZIK自体SKKだけを想定してできたものではないので、ところどころ矛盾があってイライラすることがあります。
その一つが送り仮名。 「かいがい」のように名詞は問題ないのですが、送り仮名が交じってくるとややこしいことになります。
例えば、「赤い」という形容詞を入力したい場合、ひらがななら二重母音拡張を駆使すると「akq」と入力すれば良いのですが、漢字も使いたい場合「活用がある場合は送り仮名の最初のアルファベットを大文字にする」というSKKのルールがあるので「k」か「q」のどちらかを大文字入力しないといけません。
「k」を大文字にしてしまうと「あ」以降が送り仮名と認識されるので、ここは「q」を大文字にして「AkQ」としまえば良さそうな気がするのですが残念なことに「赤い」と変換してくれません。

つまり、送り仮名の有無によって入力パターンが異なってしまう、ということになります。そんな複雑な条件分岐を処理できるほど、僕の脊髄のスペックは高くありません。「AkQ」で「赤い」と入力したい!!

調べてみると、同じような欲求をお持ちの方はいるようで、uim-skkの要望リストに全く同じものがありました。まあ、実装はされてないみたいですが。。。

RequestUim – uim-doc-ja – Project Hosting on Google Code

結局、なさそうだったので書いてみました。 まず、次のような関数を定義

(defun my-skk-double-k (arg)
(cond
 (skk-katakana (insert "カイ"))
 ((and (not skk-katakana) skk-j-mode)(insert "かい")))
(skk-set-char-before-as-okurigana))

後は、skk-rom-kana-rule-listに追加するだけです。

(setq skk-rom-kana-rule-list 
      (append skk-rom-kana-rule-list 
              '(("kQ" nil my-skk-double-k))))

これで、「AkQ」で「赤い」と変換できるようになりました。 ただ、こういう書き方すると全ての文字に関数を定義しないといけないですね。もっと良い書き方があるかもしれません。

ということで誰得なTipsでした。さて、SKK Advent Calendar 五日目はtomoyaさんです。 楽しみ!!

DDSKKのキーバインド定義

DDSKK14.1がリリースされましたね。
Daredevil SKK 14.1 released
早速僕もアップデートしてみました。便利な機能がたくさん追加されていますので、是非アップデートしてみると良いと思います。
SKKが世に生まれたのが1988年だそうですからもう20年以上たっています。にも関わらず今も開発が続けられ多くの人に愛用されているわけですから、本当に頭が下がるばかりです。
さてさて、Emacsでキーバインドを定義する時は、define-key, global-set-keyなどを使って定義するのが常です。
文字入力自体が強くコントロールされているskk-mode下では、ちょっと変わったキーバインド定義ができます。
設定例、というか実際使っている設定を書いてみます。

ふつーは文字を定義するskk-rom-kana-rule-listですが、こんな感じで関数でもOKのようでkey-chord.elのようなキーバインドが定義できます。
まあ、二個めのキー入力は待機状態になるので正確には同時押しではないですがキーバインド定義のバリエーションは増えるので、キーボード一等地を使ったキーバインドで贅沢している気分に浸れます。

今だからこそ始めるDDSKK

ubuntuでは、これまでscim-skkを使ってきました。せっかくEmacsを使ってるんだからDDSKKで良いのですが、少なからずEmacs以外にもブラウザなどを使うので、他のIMを使わないといけません。同じSKKと言えど、IMを使い分けるのも嫌だなーと思っていたのでした。それとSCIMにはscim-bridge.elという素晴らしいelispがあったので、特段不便も感じず使っていたのです。
ところが10.04にしてから、SCIMが起動しなくなったり落せなくなったり、と動作が不安定。そもそもubuntuも標準ではscimからibusに変わっていますし、scim自体もメンテナが不在?
先々のことを考えても、あまり良い選択ではない気がしたので、uim-skkに乗り換えることにしました。時代の流れからすればmozcなんでしょうが、こればかりはしょうがありません。
IMのことでいろいろ悩むのもめんどくなってきました。どうせ同じSKKなんだし、Emacsの中くらいは安定した日本語入力環境にしときたい、という欲望がふつふつと湧いてきまして、とうとうDDSKKにも手を出してみることにしました。

インストール

uimに関しては、aptにおまかせで問題ないので割愛。
DDSKKについてもリポジトリに登録されているのですが、バージョンが古いためEmacs23ではWarningが出ます。ま、出ても使う分には問題ないので気にならない人はaptでもいいんですが、毎回Warningが出るのも精神衛生上良くないので、最新のDDSKKを導入しておいた方が無難だと思います。最新版はSKK Openlabで。
それと、いろいろ辞書を使いたいので辞書サーバも。aptでskksearchを入れておきました。

設定

uim-skkについては標準からあまりいぢってません。辞書サーバの設定くらいでしょうか。
DDSKKについては、.emacsと.skkに設定を書きこんでいきます。
とりあえず晒しときます。
.emacsはこんな感じ。

.skkは、こちらのをほぼ丸パクリ。

DDSKKのドキュメントも最新バージョンに準拠しており、内容も盛り沢山です。使う前には読んでおいた方がいいと思います。
SKK Manual: SKK Manual

結局どうなのよ

同じSKKなんだし、DDSKKもSKKクローンもたいして変わるまい、とか勝手に思いこんでいたのですが、それは大きな誤解でした。本当にごめんなさい。
その独特な入力方法に目がいきがちなSKKですが、DDSKKはそれ以外にも非常に便利な機能が満載です。全くSimpleKanaKanjiメソッドぢゃないです。
そういう豊富な機能が知られるようになれば、DDSKKはもっと利用者が増えるんではないかなーとか思いました。
で、問題はその入力効率なわけですが、全く個人的な主観でこれまで使ったIMを分類すると
ATOK>>DDSKK>>>>>IME>>Anthy
くらいでしょうか。ATOKの変換効率は本当に素晴らしいと思います。これはなかなか超えられない。ただ、IMEなりAnthyと比べるとSKKの方が断然速いと思います。
日本語入力方法の選択は日々の作業効率を大きく左右するので、変えるとなるとなかなか腰が重いですが、お付き合いする時間が長いぶん自分の好みにあった機能を提供してくれるものを使わないといけないです。