ここでは日本語の boiled 入力環境構築までを紹介します. その次のステップは♥ 善き魔術師への道(青年編) へお進みください. (その他♥ 大人編もあります)
Windows でも UNIX 風に Emacs をと, Meadow + Cygwin から始まり, Emacs + Cygwin を経て, 今は Emacs + MSYS2 に至っています. この記事もEmacs + Cygwin ベースで書いたものに, MSYS2 用の変更を加筆修正してきましたが, 積み重ねた変更量が多く, 読みにくくなってしまったので, 改めて Emacs + MSYS2 で書き直します. 目標は前記事と同じ Windows 上での Emacs + Mozc + boiled-mozc 環境の実現です. 説明の流れも基本的に Emacs + Cygwin の記事と同じです. Let's boil!
以下, 順に従って実行して行けば環境構築までの一番の近道となるように 説明して行きます. OS は Windows 11 になりました. (細かく言えば Windows 11 Pro です.)
余裕があれば ♣OUT, ♥IN の記事も是非お読みください. (特に OUT の方 :-) さらに良い環境構築のためのヒントが見つかると思います. そして, 良い方法が見つかったら是非公開してください.
まずは Windows 上で UNIX 風の環境を実現する MSYS2 のインストールです. Emacs 自体は MSYS2 をインストールしなくても動かせます. 手っ取り早く Emacs だけを動かしたいという方は本章をスキップし 次章にお進みください.
Emacs 自体 UNIX 環境と深い関係にあり, Emacs だけでなく UNIX 環境も合わせて 導入する事をお勧めします. 以前は Windows 上での UNIX 環境として Cygwin を利用していましたが, 今は MSYS2 に切り替えています. ダウンロード及びインストールは ♣ OUT00: MSYS2 の TOP ページの Installation に従って作業するのみ. 説明は英文ですが, 難しい表現は出てこないので簡単に読めると思います. ダウンロードリンクも文章中に示されています. パッケージも取り敢えず書かれている例の通り GCC を入れて完了です. この時点で UNIX 系のテキスト処理プログラム awk/grep/sed や, C プログラムのコンパイラ gcc などが使えます. その他に必要なパケージがあれば, 好きな時に加えることが出来ます. ちなみにパッケージマネージャーの名前は pacman. ジジイにとってはニヤリとさせられる響きです. :-)
$ pacman -S mingw-w64-ucrt-x86_64-gcc
ここで重要な注意点を. MSYS2 のパッケージの中に Emacs が存在します. しかしこの Emacs は IME のサポートなどがこれから導入する Emacs と 異なっているようです. これから入れる Emacs と混じるとややこしいので パッケージ中の Emacs はインストールしないでください.
環境変数の設定は環境変数設定画面で行います. 画面は以下の 2 つの呼び出し方があります.
どちらかの方法で環境変数設定画面を開き, ユーザー環境変数(U) の方に新規(N) 登録して行きます. (該当変数名が既に登録されている場合は, 編集(E) になります.)
私が設定している環境変数のうち Emacs 設定に関係するかも知れないものは 以下の 2 つのみです. これらは設定しておいて損は無いと思うので, 是非事前に 設定ください.
変数 | 値(例) | コメント |
---|---|---|
HOME | C:\Users\uranov | Windows での(本人の)ユーザディレクトリにしておくと何かと便利 |
TZ | JST-9 | タイムゾーンです. JST は日本標準時, -9 はグリニッジ標準時より 9 時間早いの意 |
環境変数 HOME が有効になると, 次回から MSYS2 のターミナル(MSYS2 UCRT64)を 立ち上げたときのホームディレクトリの位置が変わります. (例えば私の場合 C:/msys64/home/uranov から C:/Users/uranov になります.) 今後, shell の環境設定をアレンジしたい時のために, 元のディレクトリから 新たなディレクトリに .bashrc, .profile 等のファイルをコピーしておきましょう.
(ユーザー uranov の場合) $ cd ~ $ pwd /c/Users/uranov $ cp -p /home/uranov/.* . (もしくは任意のディレクトリで以下を実行) $ cp -p /home/uranov/.* ~/.
Emacs は Lisp と言うプログラム言語を読み込んで動作します. 立ち上げ時ににはやはり Lisp で書かれた初期設定ファイルを読み込みます. 初期化ファイルは優先順位が決まっていて,
となっています. 順番にチェックし, 該当ファイルが存在しなければ次へ. 見つかったらそのファイルを読み込んで初期化します. (見つかれば それ以降のファイルは読まれません. 詳しくは ayatakesi さん提供の ♣ OUT01: (GNU Emacs Manual) init ファイル 参照.)
さしあたりホームディレクトリ下に .emacs.d ディレクトリを作成し, その中に空の init.el を用意しておけば十分です.
$ cd ~ $ mkdir .emacs.d $ cd .emacs.d $ touch init.el
こちらも作業としては簡単です. ダウンロードしたファイルを展開し適当な場所に 配置するだけです. 具体的な作業を書いておきます.
配置場所は MSYS2 をインストールしている場合は既に作られている C:\msys64\mingw64 以下が推奨です. MSYS2 をインストールしない場合も同様の構成にするために, 自分で C: 以下に \msys64\mingw64 ディレクトリを作成し, そこに置いてください. 作業が完了すれば以下のようなフォルダ構成となるはずです.
C:/msys64/mingw64 ---+--- bin +--- include +--- lib +--- libexec +--- share
bin フォルダの下の runemacs.exe を実行すれば(= ダブルクリックすれば), 下図のように Emacs が立ち上がります.
この時点では init.el に何も設定していないので(= 何も書いていないので) デフォルト設定のまま立ち上がります. これでも Emacs を使った経験があれば, テキストエディタとして十分使えます. 日本語も Windows で利用中の IME (私の場合は Microsoft IME)を使って 普通に入力できます. 但し目標の「茹で上がった環境」にするには更に作業が必要です. Let's boil!.
あ, これから何度も Emacs を起動することになるので, まずは (デスクトップに) runemacs.exe のショートカットを作っておきましょう. その時に作業フォルダー(S)を %HOME% に変更しておくと幸せになれます.
今回の Emacs と通信する かな漢字変換サーバ「Google 日本語入力」を インストールします. かな漢字変換サーバ って言い方は古いですね. Windows 流に言えば IME です. オープンソースとなっている Mozc をコンパイルして使うと言う Linux と同等の手段もありますが「もっと簡単に」の旗印のもと, Google 版をそのままインストールします.
インストール手順は色々なページで紹介されています. 'PC 設定のカルマ' さんの ♣ OUT03: Windows10 - Google 日本語入力 (IME) のインストール , 'SEECK.JP サポート' さんの ♣ OUT04: Google 日本語入力をインストールする方法 など皆さん画面例付きで詳しく紹介されています.
具体的な作業を書いておくと,
インストールが完了すると IME アイコンが Google 日本語入力のものに変わリます. 一連の作業が終わるまでは Google 日本語入力とお付き合いください. その方が混乱なく作業を進めることができます. 一通り作業を終えてしまえば, 標準の IME を Microsoft IME に戻しても構いません. (どちらを選ぼうと Emacs からの Mozc 呼び出しには影響ありません. ちゃんと Google 日本語入力が呼び出されます.)
Emacs と Mozc の連携あたりは NTEmacs @ ウィキさんの ♣ OUT05: emacs-mozc を動かすための設定 あたりを大いに参考にしました.
こちらの作業は簡単です.
これだけで作業完了です. (実際には Path の通った場所ならどこにおいても OK です. この記事では説明の都合上 'C:\msys64\mingw64\bin の下' の一択です.)
さあ, ここから本格的に Emacs 上での作業が始まります. まずは Mozc パッケージのインストールです. 自分で Download して install をしても良いのですが 最近の Emacs には Package と言うソフト管理システムが用意されています. 「もっと簡単に」を合言葉に Package システムを使ってみましょう. この Package に関しては Qiita の @Maizu さんの記事 ♣ OUT06: Emacs で快適な研究環境を整えよう 2 ~パッケージ導入 & 日本語入力編 ~ を参考にしました.
具体的な作業を書いておくと,
[~/.emacs.d/init.el] (簡略化のため, コメントや日本語を抜いてあります) (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/")) (add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/")) (package-initialize)Emacs での作成が終わったら, 一旦 Emacs を終了して下さい
(mozc パッケージは 2 種見つかりますが, 新しい方を選びます) : mozc 2.30.5544.102 available melpa-s... minor mode to input Jap I mozc 20240729.1542 available melpa minor mode to input Jap mozc-cand-posframe 20200208.750 available melpa Posframe frontend for m mozc-im 20160412.22 available melpa Mozc with input-method- mozc-popup 20150224.34 available melpa Mozc with popup mozc-temp 1.0.0 available melpa-s... Use mozc temporarily mozc-temp 20160228.840 available melpa Use mozc temporarily :
インストールが完了すると ~/.emacs.d/elpa フォルダの下に mozc-20240729.1542 フォルダが作成され, その中に mozc パッケージが入っています.
~/.emacs.d ---+--- elpa ---+--- mozc-20240729.1542 ---+--- mozc.el | | +--- mozc.elc | | +--- mozc-autoload.el | | +--- mozc-pkg.el : :
ここまでで一旦 Mozc との通信を確認するのが確実なやり方なのですが, ここでは一気に boiled-mozc も入れてしまいます.
作業は簡単で, (「4. mozc_emacs_helper のインストール」と似た作業です.)
これだけです.
最後の作業です. Emacs と Mozc(Google 日本語入力)との通信のための mozc, boiled-mozc を利用するための設定を行います.
再び ~/.emacs.d/init.el を開き, Mosc の設定(以下の行)を追加し保存します. (ちょっと長いのでコピペが楽かな :-)
(set-language-environment "Japanese") (prefer-coding-system 'utf-8) (set-file-name-coding-system 'cp932) (set-keyboard-coding-system 'cp932) (set-terminal-coding-system 'cp932) (require 'mozc) (setq default-input-method "japanese-mozc") ; mozc_emacs_helper.exe のパス指定. (自分の環境に合わせて修正ください) (setq mozc-helper-program-name "C:/msys64/mingw64/bin/mozc_emacs_helper.exe") (advice-add 'mozc-session-execute-command :after (lambda (&rest args) (when (eq (nth 0 args) 'CreateSession) (mozc-session-sendkey '(Hankaku/Zenkaku))))) (autoload 'boiled-mozc-rK-conv "boiled-mozc" "Romaji to Kana-Kanji conversion" t) (autoload 'boiled-mozc-rhkR-conv "boiled-mozc" "Romaji to Hiragana conversion" t) (global-set-key "\C-j" 'boiled-mozc-rK-conv) (global-set-key "\M-j" 'boiled-mozc-rhkR-conv) (define-key lisp-interaction-mode-map "\C-j" nil)
作業が終わったら Emacs を終了します.
さあここまでの設定がうまく行ったいたら日本語入力もバッチリなはず. やってみましょう. ここからは Emacs を使い慣れた人は自分で好きに進めて下さい. 一応ビギナーに向けて 簡単な確認方法の例を書いておきます. (緑の行が 実行する内容です.)
Mozc 変換と boiled-mozc 変換, 要は日本語/英語のモードを先に設定してからタイプするか, 先にタイプしてから後で日本語に変換するかだけの違いです. 小さな違いなのですが これが日本語/英語混在の文章を書く機会が多い人間には大違いです. 特に私の場合, 句読点に '、。' を使わずに ',.' を使うのですごく違います. さあ, 声を揃えて Let's boil!.
これで作業目標「Windows 上での Emacs + Mozc + boiled-mozc 環境の実現」は完了です. 後は簡単に私のカスタマイズ例を紹介しておきましょう.
Emacs にはバイトコンパイルと呼ぶ, Lisp ファイルをより実行しやすい形式 (byte-code)に変換する(コンパイルする)機能があります. *.el ファイルを コンパイルすると *.elc ファイルが作られ, 実行時間が少し早くなります. boiled-mozc.el もバイトコンパイルしてみましょう.
'M-x byte-compile-file' と入力すると対象ファイルを聞かれるので '~/.emacs.d/elpa/mozc-20200822.1229/boiled-mozc.el' と入力すると 直ちにバイトコンパイルされ, 同じフォルダに boiled-mozc.elc が作られます.
フォルダを確認下さい. (mozc.elc 等, 最初からバイトコンパイルされたファイル も提供されている場合も多くあります.)
後述の init.el をバイトコンパイルする人もいます. Emacs の立上りが若干 早くなります. 但し, init.el を頻繁に書き換える人は, その都度バイトコンパイルする必要が生じ面倒です. ある程度内容が固まって来てからの実行が良いでしょう.
meadow の乗り換えをためらった理由の一つにフォント設定があります. 何度もカット & トライし, 気に入ったフォント設定にたどり着いたので 簡単には捨てられません.
私の気に入っていた設定は日本語 'メイリオ', 英語 'consolas' の組合せです. これに近いモノが見つかりました. MeiryoKe です. メイリオフォントに パッチを当て, 等幅で見やすいフォントを実現しています.
まず自分の Windows のメイリオフォントのバージョンをチェックします. [コントロールパネル] → [フォント] でフォントウィンドウを開きます. 表示を絞るため右上の検索ボックスで「メイリオ」を検索します.
次に「メイリオ」で右クリックし「プレビュー(V)」を選択します. 複数の画面が表示されますが, 左上のバージョン情報をチェックください. 手元の PC は 6.30 でした.
♠ DL05: MeiryoKeから自分のフォントに合ったバージョンを手にいれ, meiryoKe_*.ttc, meiryoKeB_*.ttc を生成します. 私は meiryoKe_gen_6.30rev5.zip をダウンロードしました. 生成方法はパッケージ中の README.html をお読み下さい. meiryoKe_630r5.ttc, meiryoKeB_630r5.ttc が生成されました.
生成したフォントをフォントウィンドウにDrag & Drop するだけ. これでフォントのインストールは完了です. MeiryoKe_PGothic, MeiryoKe_UIGothic, MeiryoKe_Gothic, MeiryoKe_Console が追加されました. フォントウィンドウ内で 'meiryoke' で検索すると確認しやすいです.
後は init.el でフォント設定するだけ. 以下の記述を追加ください. (ついでに少し画面設定も加えてます :-)
(setq default-frame-alist (append (list '(foreground-color . "black") '(background-color . "LemonChiffon") '(background-color . "gray") '(border-color . "black") '(mouse-color . "white") '(cursor-color . "black") '(font . "MeiryoKe_Console-10"); MeiryoKe(console) - 10pt '(line-spacing . 2) '(width . 80) '(height . 80) ; MeiryoKe_Console-10 で縦 1080 ほぼ一杯 '(top . 0) '(left . 100)) default-frame-alist))
従来利用していた Meadow と設定後の Emacs との比較です. (個人的には Meadow の 方が英字の高さが低めで読みやすいですが, 許容範囲です :-) 時間があったら 9pt の設定で横間隔を広げる方法を検討します.
プログラミング用途を考えると Emacs のフォントは等幅フォントが良いです. ここで紹介した MeiryoKe の他 Ricty Diminished など, プログラミング用 等幅フォントは色々存在します. あれこれ試して気に入ったものをお使い下さい.
HackGen(白源), Firge(ファージ)等を試したい.
最後に現在の私の init.el を公開します. ここまでに紹介した式もコメント入りで 書いてあります. 各式の詳しい内容はネットで調べて下さい. (ネットから仕入れた情報は出典を書き留めてあります. そうすると 更新情報や追加情報を調べるときに重宝します. 是非皆さんも実行下さい.)
またもや余談ですが, 今はインターネットで簡単に情報が入手できる様になって 本当に便利です. 昔は周囲の詳しい人に教えてもらうか, マニュアル(Man 等)/ 書籍/雑誌を読むしかありませんでした. 詳しい人がいない状況で新しい情報を 知るのはとても大変でした. Emacs 関係で私のお世話になった本を紹介して おきます. 共立の方は初版 1988 年(私のものは 1992 年の 22 刷) 原本は 1986 年で Emacs のバージョンは 18 となっています, ソフトバンクの方は初版 1993 年でこちらも同バージョンが対象です. 懐かしく思い出される方もいるのでは...
;; -*- mode: lisp-interaction; syntax: elisp; coding: utf-8 -*- ;; last modified: Tue Sep 29 23:27:37 JST 2020 ;; ;; .emacs (http://dreamserver2.dsmynas.com/uranov/) ;; ;;============ ;; 日本語環境 ;;============ (set-language-environment "Japanese") (prefer-coding-system 'utf-8) (set-file-name-coding-system 'cp932) (set-keyboard-coding-system 'cp932) (set-terminal-coding-system 'cp932) ;;------ ;; Mozc ;;------ ;; >> http://ubiqlog.com/archives/8538 ;; >> https://blog.rustle.info/archives/1881 (require 'mozc) (setq default-input-method "japanese-mozc") ;(global-set-key (kbd "C-o") 'toggle-input-method) (setq mozc-helper-program-name "C:/msys64/mingw64/bin/mozc_emacs_helper.exe") ;; Windows の mozc は接続直後 direct モード になるので hiragana モード にする. (advice-add 'mozc-session-execute-command :after (lambda (&rest args) (when (eq (nth 0 args) 'CreateSession) ;; (mozc-session-sendkey '(hiragana))))) (mozc-session-sendkey '(Hankaku/Zenkaku))))) ;;------------- ;; boiled-mozc ;;------------- (autoload 'boiled-mozc-rK-conv "boiled-mozc" "Romaji to Kana-Kanji conversion" t) (autoload 'boiled-mozc-rhkR-conv "boiled-mozc" "Romaji to Hiragana conversion" t) ;;(global-set-key "\C-o" 'boiled-mozc-rK-conv) ;;(global-set-key "\M-o" 'boiled-mozc-rhkR-conv) ;; 次行は (define-key global-map "\C-j" 'boiled-mozc-rK-conv) と等価. (global-set-key "\C-j" 'boiled-mozc-rK-conv) (global-set-key "\M-j" 'boiled-mozc-rhkR-conv) ;; 変換中に C-o, C-i, C-p が使えるようにしたい. ;; ;; Lisp Interaction mode では \C-j が式の評価に割り当てられている. ;; boild-mozc を使うために \C-: に割当変更. (define-key lisp-interaction-mode-map "\C-j" nil) (define-key lisp-interaction-mode-map (kbd "C-:") 'eval-print-last-sexp) ;;============== ;; フレーム設定 ;;============== ;;------------------ ;; 初期フレーム設定 ;;------------------ ;; フォントセット, サイズ, 行間は気に入ったものを探すしかない. ;; 最後にフレームの高さを調整. (setq default-frame-alist (append (list '(foreground-color . "black") '(background-color . "LemonChiffon") '(background-color . "gray") '(border-color . "black") '(mouse-color . "white") '(cursor-color . "black") ; '(font . "MeiryoKe_Gothic-10") ; MeiryoKe - 10pt ; '(line-spacing . 1) '(font . "MeiryoKe_Console-10"); MeiryoKe(console) - 10pt '(line-spacing . 2) ;; '(font . "MeiryoKe_Console-9") ; MeiryoKe(console) - 9pt ;; '(line-spacing . 2) ; '(font . "Ricty Diminished-10"); Ricty Diminished - 10pt ; '(line-spacing . 1) '(width . 80) '(height . 40) '(top . 0) '(left . 100)) default-frame-alist)) ;;------------------------------ ;; メニューバー, スクロールバー ;;------------------------------ (tool-bar-mode -1) (menu-bar-mode -1) ;(scroll-bar-mode -1) ;;-------- ;; その他 ;;-------- ;; スタート画面を表示しない (setq inhibit-startup-message t) ;;(setq initial-scratch-message "") ;; 行番号表示 ;(global-linum-mode t) ; Emacs 26.0.50 まで ;(global-display-line-numbers-mode) ; それ以降 ;; モードラインにカラム番号を追加(デフォルトはライン番号のみ) ;(column-number-mode t) ;; 折り返し表示(デフォルト有効) ;(setq-default truncate-lines t) ;; 表示行/論理行移動 (setq line-move-visual nil) ;;========== ;; 詳細設定 ;;========== ;;------------------ ;; バックアップ不要 ;;------------------ (setq make-backup-files nil) ;;------ ;; ベル ;;------ ;; (setq visible-bell t) (setq ring-bell-function 'ignore) ;;---------------- ;; パッケージ管理 ;;---------------- ;; >> https://qiita.com/Maizu/items/fee34328f559c7dc59d8 (require 'package) (add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/")) (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/")) (add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/")) ;(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/")) (package-initialize) ;; EOF
以上のカスタマイズでそこそこ使えるようになりましたが, まだ Meadow を使っていた時と比べると, 機能的に十分ではありません. 設定を加えれば, 更に使い勝手は向上するはずです. 私の使い勝手は向上の取り組みについては ♥ 善き魔術師への道(青年編) をお楽しみに.
前回は(メドウ)の達人をモジって 'めどうし' としていましたが, 今回は Emacsian(イイマクシアン)を無理矢理 'いいマジシャン' としています. 魔導士から魔術師へ!