読者です 読者をやめる 読者になる 読者になる

イメージに染まるまで……

Mac,iOSなどAppleの製品についての記事や、セキュリティだったりGTDの記事を書いています。

Emacsで使える日本語入力システム、ddskkをインストールする

Emacs

はじめに

以前、日本語の検索環境を整える記事を書いたので、SKKのインストールに関する記事も加えて、Emacsの日本語環境をしっかりと整えてしまおうと思います。これを終らせれば、Emacsで日本語を扱う環境は殆ど揃ったと言えると思います。

nya-0.hatenablog.com

nya-0.hatenablog.com

以前のこの記事と合わせれば、Emacsで日本語を扱う環境は整うことでしょう。

前提として、OSXのアプリケーションとしてのEmacsを想定してこの記事を書きます。私の環境は以下の通りです。

OSX 10.0.3
Emacs.app 24.5.1 自分の環境でmake install
ddskk 15.2

では、はじめましょう。

f:id:nya-0:20150420105313p:plain

目次

はじめに
ddskkのインストール
    下準備
    SKK_CFGファイルの設定
    Makefileの設定
    インストール
私のSKKの設定
    init.elの設定
    ~/.skk(~/.emacs.d/ddskk/init)の設定
おわりに
参考サイト

ddskkのインストール

下準備

まずは、言うまでもなくSKK Openlabからddskkをダウンロードします。圧縮されているので解凍しておきます。

ここで~/Applications/Ulititys/Terminal.appを開き、ddskkをダウンロードしたディレクトリに移動します(cd ~/[ダウンロードしたディレクトリ]/ddskk[ver]/)。

また、サーバーを利用せずにSKKの辞書をローカルに入れて使う場合は、ここでddskkの最新版と同じく、SKK Openlabから辞書のページに飛んで、ダウンロードしておいた各辞書ファイルを/ddskk[ver]/dic以下のディレクトリに入れておくと、以下のインストールの設定をした時に、自動的に全ての辞書ファイルを入れておいてくれます。

さて、ここで試しにmake what-whereのコマンドを打ち込んでみましょう。各ファイルがどこにインストールされるかが表示されるはずです。通常では、/Applications/Emacs.app/Contents/MacOS/Emacsではなく、/bin/emacsが表示されるでしょう。

これをEmacs.app以下にインストールするために少々弄る必要があります。これは、Emacsのインストールなど、自分でmake installする際に共通のことがありますが、Configファイルを弄ることになります。この場合、SKK-CFGというファイルを開いて設定します。

SKK_CFGファイルの設定

SKK-CFGファイル以下には、Apple OSX におけるself-contained な Carbon/Cocoa Emacsの設定例という部分があり、このサンプルのコメントアウト*1をするだけでインストールできるようになっています。

ただ、私の場合、この設定で経験上上手く行かなかったことが多かったので、以下の設定に書き換えてしまっています。

(setq SKK_DATADIR "~/.emacs.d/etc/skk")
(setq SKK_INFODIR "~/.emacs.d/info")
(setq SKK_LISPDIR "~/.emacs.d/elisp/skk")
(setq SKK_JISYO t)

最後の(setq SKK_JISYO t)の設定は、先程書いた、辞書ファイルを自動的に配置してくれるために必要な設定になります。

Makefileの設定 (飛ばしてもOK)

これはmake inistallのコマンドからも操作できるので、必要ないと言えばそうなりますが、一応。

MakefileのなかのEMACS = emacsとなっているのをEmacs = /Applications/Emacs.app/Contents/MacOS/Emacsに変更してしまえば、今回の目的であるSelf-ConteinedなアプリケーションのEmacsSKKをインストールするという目的が果たせます。

インストール

では、sudo make installでインストールしましょう。Makefileを弄った場合、make what-whaereでインストールされるEmacsの対象がEmacs.appになっているはずです。

また、この操作をしなかった場合でも、sudo make install EMACS=/Applications/Emacs.app/Contents/MacOS/Emacsでインストールが可能です。*2

sudoがないと、一部のファイルが正常に書き込まれず、失敗することがあります。sudoは管理者権限でコマンドを実行することを意味します。

これで、インストールが完了です。ここまで、お疲れ様でした。

おっと、最後にすぐにSKKを使えるようにしておきましょう。最低限の設定です。~/.emacs.d/init.elに以下の設定を書きこんでおきます。

(require 'skk-autoloads)
;; SKKモードに移行するキーバインドの設定
(global-set-key "\C-xj" 'skk-mode)
;; SKKのチュートリアル
(global-set-key "\C-xt"'skk-tutorial)

eval-bufferで式を評価して、間違いがないことを確認。そして、Emacsを再起動してください。これで、C-x jSKKを呼び出すことができます。

SKKが呼び出されたかどうかは下のスクリーンショットの位置で確認します。まずは起動していない状態。

f:id:nya-0:20150420105157p:plain

SKKを起動した場合、下のようになります。

f:id:nya-0:20150420105243p:plain

矢印で指している場所は、SKKが日本語以外の半角英数やカナ入力の際に表示が変わります。


SKKの基本的な操作の方法を学ぶのは、インストールする際に入っているチュートリアルを読むのが一番です。もちろん、Emacsの言語設定さえ日本語になっていれば、チュートリアルも日本語です。先程の設定で、C-x tチュートリアルが呼び出せるようになっているはず。是非、一度チュートリアルを通してみることをお勧めします。

ただ、なにかしらの原因でチュートリアルのファイルが読み込めずに困った場合は、この順番にインストールした場合、~/.emacs.d/share/skk/SKK.tutが実体のファイルとしてあるはずですので、まずはそれがあるかをFinderのcommand + shift + Gで開いてみましょう。

f:id:nya-0:20150420102330p:plain

所在が確認できたら、以下の設定をinit.elに書き込めば大丈夫です。

(setq skk-tut-file "~/.emacs.d/share/skk/SKK.tut)

SKKの操作方法を学習するには、下手に断片的な情報を見るよりも、このよくできたチュートリアルと、SKK OpenlabからダウンロードできるDDSKKマニュアルを読んでおいたほうが良いでしょう。まとまった情報をしっかりと読むことができます。また、これはカスタマイズの際にも大きな参考になりますので、ダウンロードしておくと便利ですよ。

また、カスタマイズの第一歩として、同じくSKK Openlabからダウンロードできる~/.emacs設定例集や、~/.skk設定例集をダウンロードしておくのも有用でしょう。

私のSKKの設定

さて、ここでは参考として私の設定を書いておきます。

~/.emacs.d/init.elと、~/.emacs.d/ddskk/initSKKの設定を分けています。ただ、特別後者のファイルに分ける必要性は高くありません。全てinit.elに書いしてまっても問題はありませんので、あとでまた分けても良いのです。

ただ、一部の重要な設定だけは、init.elに入れておかなければなりません。そうしないと、SKKが使えなくなります。当然、SKKの設定ファイルのディレクトリ指定や、SKKを呼び出すキーバンドがinit.elにないといけません。

init.elの設定

;;SKKの設定
;;SKKの設定ファイルのディレクトリ指定
(setq skk-user-directory "~/.emacs.d/ddskk/")
(setq skk-tut-file "~/.emacs.d/share/skk/SKK.tut") ;;チュートリアルファイルの場所
(require 'skk-autoloads)
;; SKKモードへの移行するキーバインドの設定
(global-set-key "\C-xj"'skk-mode)
(global-set-key "\C-xt"'skk-tutorial)
;; 10 分放置すると個人辞書が自動的に保存される設定
;;sauce:<http://aikotobaha.blogspot.jp/2010/10/emacsskk.html>他のページでも時々見るのだが、本当のところ、元の元のソースがどこか分からない。初めに発見したのがここ
(defvar skk-auto-save-jisyo-interval 600)
(defun skk-auto-save-jisyo () (skk-save-jisyo))
(run-with-idle-timer skk-auto-save-jisyo-interval
             skk-auto-save-jisyo-interval
             'skk-auto-save-jisyo)
;; migemo を使うから skk-isearch にはおとなしくしていて欲しい
(setq skk-isearch-start-mode 'latin)
;; ~/.skk にいっぱい設定を書いているのでバイトコンパイルしたい
(setq skk-byte-compile-init-file t)
;; 注) 異なる種類の Emacsen を使っている場合は nil にします

簡単に説明してみます。

SKKの関連ファイルが指定したファイル以下集める設定ですが、これは、SKKの設定ファイルのディレクトリ指定をしておくと、SKKに関するファイルが一箇所に集まって、バックアップが楽になるからです*3

10分放置すると個人辞書が自動的に保存される設定は、コメントにも書いてしまっていますが、本当のソースがよく分かっていません。

それ以外は、SKK Openlabからダウンロードできるinit.elの設定例から頂きました。

~/.skkの設定

ここでは~/.emacs.d/ddskk/initになっていますが……

;; 辞書の設定
(setq skk-large-jisyo "~/.emacs.d/share/skk/SKK-JISYO.L")
(setq skk-extra-jisyo-file-list
      (list '("~/.emacs.d/share/skk/SKK-JISYO.geo"
              "~/.emacs.d/share/skk/SKK-JISYO.jinmei"
              "~/.emacs.d/share/skk/SKK-JISYO.propernoun"
              "~/.emacs.d/share/skk/SKK-JISYO.station"))
)


;;送り仮名が厳密に正しい候補を優先して表示
(setq skk-henkan-strict-okuri-precedence t)
;;漢字登録畤、送り仮名が厳密に正しいかをチェック
(setq skk-check-okurigana-on-touroku t)
;; 各種メッセージを日本語で通知する
(setq skk-japanese-message-and-error t)
;; 変換の学習
(require 'skk-study)
;;変換時に注釈(annotation)を表示する
(setq skk-show-annotation t)
;; 注釈を表示するまでの遅延を秒で指定する
(setq skk-annotation-delay 0.5)     ;デフォルトは1.0秒
;; 注釈 (annotation) の表示の仕方
;;   Non-nil => エコーエリアに表示する (デフォルト)
;;   nil => 別な window に表示する
;;(setq skk-annotation-show-as-message nil) ;skk-show-tooltipが優先される
;; 対応する閉括弧を自動的に挿入する
(setq skk-auto-insert-paren t)
;; 動的補完
(setq skk-dcomp-activate t)

さて、ここでは辞書ファイルの設定をしています。

large-jisyoにはS,M,Lのいずれかのサイズの基本的な辞書を入れておきます。

それ以外の人名辞書などは、extra-jisyo-file-list以下にしっかりとパスを書き込んでおきましょう。

これ以外に多くの方が設定するものとして、送り仮名が厳密に正しい候補を優先して表示する設定と、漢字を個人辞書に登録するさいに送り仮名をチェックする機能、また、各種SKKが表示するメッセージが日本語になる設定でしょう。

変換の学習は、他のIMでも見られるような、使用頻度などから候補の優先度を変えてくれる設定です。

それと、注釈を入れる設定は、どの漢字を使ったらいいか迷うときなどに便利です。

対応する閉括弧の挿入は、自動でを打ち込んだときにを後ろに入力し、カーソルはその間に置いておいてくれる機能です。

動的補完は、漢字を入力しようとした時に、候補を出してくれる機能です。Tabキーで補完するものを決定して、入力ができるようになります。通常でも、変換している最中に、Tabキーを押すと、候補を出してくれますので、慣れてからの方が良いかもしれません。

これらの設定も、SKKのマニュアルにあります。

おわりに

おそらく、以前の日本語環境を整える記事と、このSKKの記事で、Emacsの日本語環境は出来上がるのではないでしょうか。

Emacs初心者なら、ここから更に便利なemacs lispを入れてみたりして、自分の環境の構築をする、最初の段階として使ってみてください。

一応もう一度、私の以前の記事を。

nya-0.hatenablog.com

nya-0.hatenablog.com

参考サイト

SKK Openlab

ここでもう一度確認して頂きたいのですが、私の設定はほとんど全てこのSKK Openlabさんのマニュアルや設定例から出してしまっています。それだけのドキュメントの量がありますので、一通り眺めるだけでもSKKに関することを学べると思います。感謝です!


OSSはアルミニウムの翼で飛ぶ: Emacs仕事術(8)SKK日本語入力

こちらの記事からEmacsの個人辞書を10分ごとに保存する設定をいただきました。

*1:コメントは、コードの部分を;でコメントとしている部分です。つまり、コメントアウトをするということは、この;を削除するということです。

*2:というよりも、こちらのほうが楽かもしれません。ただ、make what-whereで出てくるEmacsの対象が/Applications以下になっていることで安心できるかと思って書いておきました。

*3:この設定をすると、一部のSKK関連ファイルの設定が書き換えられます。通常では、SKKの設定ファイルは~/.skkですが、~/.emacs.d/ddskk/initがデフォルトに変更されます。その他の自動学習機能をオンにした場合の設定ファイルや、ユーザー辞書のファイルも~/.emacs.d/ddskk/以下に入ります。デフォルトがどう変更されたかについての細かいことは、SKKのマニュアルを読むと情報があります。