Emacs から「misima 旧仮名遣い・旧字変換」を使う
since Aug. 1 2005
表記法は音にではなく,語に隨ふべし.
— 福田恆存
   
-   機能概要
-   パッケージ内容
-   環境前提
-   インストール
-   コマンドライン
-   misima オプション
-   Emacs コマンド
-   制限事項
-   利用条件
 

お断り
2015.8.17

 

Web Service のプラットフォームとして,最近は SOAP よりも RESTful が主流となっている.この事情のため,misima SOAP Web Service は現在運用を停止している.よって,本ページは記録として残すのみである.

これに替え,2015.08 現在,misima RESTful Web Service が稼働中である(ただし,友人のための限定公開である).GNU Emacs 用の misima RESTful Web Service Emacs-lisp については筆者のブログ記事「misima RESTful Web Service for GNU Emacs, LaTeX」及び「misima RESTful Web Service Perl クライアント」(call-process-region を用いて misima RESTful Web Service コンソールプログラムをドライブする例)を参照いただきたい.

機能概要

 

Emacs は UNIX ワールドにおいて vi と双璧をなすテキストエディタである.多言語編集機能においては筆者は寡聞にして Emacs を凌駕するエディタを知らない. Emacs は Windows においても Meadow という名で移植されている.

misima​Soap​Service-​2.5 を導入することにより, Emacs (Meadow) から直截 misima 旧仮名遣い・旧字変換支援を利用することが可能となる.すなわち Emacs 上で文書作成作業を行うなかで,旧仮名遣い・旧字に変換したいテキストを選択し, misima​Soap​Service-​2.5 提供 Emacs Lisp を実行すると, SOAP Web Service インタフェースで筆者の misima SOAP サーバ http://​yasuda.homeip.net/​axis/​services/​misimaSoapConnector で変換を行い,その結果で Emacs エディタ上の選択テキスト (テキストリージョン) を置換する.西欧語,スラヴ語,ギリシア語,タイ語,日中韓 Unicode 文字の TeX 多言語変換も可能である.

SOAP とは Web のサービスを送受信するためのメッセージ規約である.本パッケージはこれに準拠することにより,ブラウザ以外からでも misima 変換機能を呼び出せるようにしたものである.本稿は Emacs (Meadow) 利用のための misima​Soap​Service-​2.5 の導入手順及び使い方を示す.

従来 misima は Web フォーム (CGI) としてブラウザから利用する形態であった.しかし,通常文書作成時にいちいちエディタとブラウザとを切替えつつ,コピー・ペーストを行うのは不便である.本パッケージを導入すれば Emacs の編集中バッファ,指定テキスト範囲の旧仮名・旧字変換, TeX 変換を直接実行し,文書作成と変換作業をシームレスに行うことが可能となる.

TeX 文書を UTF-8 で編集しながら,変換したいテキスト領域 (リージョン) を設定し, Emacs コマンドで misima SOAP サービスを呼び出す.その様子を以下に示す.


図1 リージョンを指定して変換コマンドを実行

図2 リージョンが変換結果で置換される

Emacs Lisp は別添のコマンドラインツールをコールすることにより SOAP アクセスを実現している.コマンドラインツールは, Emacs 環境でなくても, UNIX 仮想端末 (ターミナル) もしくは Windows コマンドプロンプト画面から実行可能である.標準入力から UTF-8 コードのテキストを読み,処理結果を同様に UTF-8 で標準出力に書く,いわゆるフィルタプログラムである.他のユーティリティと組み合わせて実行するなど,いろんな使い方ができると思う.ファイルを読み込み,ファイルに出力したい場合は,リダイレクトさせればよい.

Microsoft Word から misima SOAP サーバで変換を呼び出す機能については,「Microsoft Word から『misima 旧仮名遣い・旧字変換』を使う」を参照.

misimaSoapService-2.5 パッケージはこのほか, Windows 秀丸エディタ, Mac OS X Jedit X, TeXShop から misima SOAP Web Service を利用するためのマクロ, AppleScript を同梱している.

詳細は『利用の手引き』を参照.

パッケージ内容

 

パッケージはダウンロード・サービスから最新版が取得できる.
[パッケージ内容表示/非表示]

misima 変換機能については Web 公開しているサービスとほぼ同等である.ただし,ユーザ辞書には未対応である.

方式的にはユーザ PC から発行されたサービス要求を Web SOAP misima コネクタサーバで受け付け,このコネクタが従来と同じ misima サーバプログラムをドライブし,変換結果をユーザに戻す処理を行う.

本パッケージは筆者のサイトの Web Service サーバ http://​yasuda.homeip.net/​axis/​services/​misimaSoapConnector に接続するためのものである.

詳細は『利用の手引き』を参照.

環境前提

 

OS は Windows 2000/XP, Mac OS X, UNIX 系 OS (主に Linux, FreeBSD) で動作する (はず). Windows 95/98 や Max OS Classic は未確認であるが,おそらく動作しない.筆者は Windows 2000/XP, Mac OS X 10.4.10 Tiger, FreeBSD 6.2-RELEASE で開発/動作確認を行っている. Emacs バージョンは X11-Emacs 22.0.50 (Mac OS X), Meadow 20050617-1 版 (22.0.50) で確認している. Mac の Carbon-Emacs は未確認である. misima TeX 多言語文字変換の元テキスト編集で Unicode フォントを利用するとすれば, X11-Emacs を推奨する.開発は FreeBSD, Mac OS X, Java 2 Standard Edition SDK 5.0, Tomcat 5.5.17, Axis 1.4.1 で行っている.

misima-2.5.jar には以下のオープンソースのクラスライブラリを同梱している.添付の Java ソースからクラスを再コンパイルする場合は,これらのクラスライブラリをクラスパスに登録しておく. Ant がインストールされていれば build/ ディレクトリで ant compile とすればクラスファイルが生成できる.

  • axis.jar (Axis-1.x 添付)
  • jaxrpc.jar (Axis-1.x 添付)
  • saaj.jar (Axis-1.x 添付)
  • log4j-1.2.8.jar (Axis-1.x 添付)
  • wsdl4j-1.5.1.jar (Axis-1.x 添付)
  • commons-logging-1.0.4.jar (Axis-1.x 添付)
  • commons-discovery-0.2.jar (Axis-1.x 添付)
  • java-getopt-1.0.13.jar (GNU getopt Java port)

本パッケージではコマンドラインからアクセスするツール (Java クラスライブラリ,ラッパーシェルスクリプト,ラッパーバッチファイル) と,これを利用して Emacs から misima 機能を使う Emacs Lisp を添付している.当然ながら Emacs での利用は Emacs (Windows の場合は Meadow) が必要である.さらに 旧字変換機能, TeX 多言語文字変換機能を利用するのなら,予め Emacs で Unicode フォントが利用できるようにしておく.

SOAP アクセス基幹部分は Java クラスライブラリ (misima-2.5.jar) である. JVM [Java Virtual Machine] が動作する Java 実行環境が必要である. Windows, Linux, FreeBSD については, JavaWorld などの雑誌の付録 CD-ROM を手に入れるなり,サン・マイクロシステムズのサイトからダウンロードするなりして, Java 2 Platform, Standard Edition [J2SE] 5.0 以上の Java Runtime Environment [JRE] もしくは Software Development Kit [SDK] をインストールしておく. Mac OS X の場合は Apple 提供メディアから Mac OS X Developer Tools をインストールする.いずれの場合も,クラスパスを適切に設定して java コマンド (クラスランチャ) が正常に動作するようになっていなければならない. Java 実行環境の設置については, JRE, SDK のドキュメントやインターネット・リソースを参照していただきたい.

Mac OS X については, UNIX系の説明を参照のこと.

インストール

 

Windows

Windows へのインストールはコマンドプロンプトの画面からコマンドを入力して行う.「コマンドプロンプト」は Windows 2000 標準では,「スタート」→「プログラム」→「アクセサリ」→「コマンドプロンプト」で起動する.

(1)インストール・ディレクトリ (フォルダ) の作成
misima SOAP クライアントをインストールするフォルダ (以下インストール・ディレクトリ) を作成する.本説明では C:\misima と仮定する.

- Windows のコマンドプロンプトを起動する.
- 以下を入力してディレクトリを作成する.

C:\WINDOWS>mkdir c:\misima
	

(2)解凍
適当なフォルダにパッケージをコピー (ダウンロード) し, Windows のアーカイバで解凍する. ZIP形式なのでたいていのアーカイバが対応していると思う.その後 misimaSoap​Service-​2.5 フォルダの下にある shells/​misima.bat, misima-2.5.jar をインストール・ディレクトリ直下にコピーする.このときパッケージ添付のファイル名称 misima-2.5.jar を misima.jar に変更しておく.名称を変えない場合は, misima.bat 内の変数定義を同期させる必要がある.

(3)バッチファイル misima.bat の修正
misima.bat の MISIMAJARDIR 変数を,パッケージを展開したインストール・ディレクトリ名に修正する. C:\misima 直下に解凍した場合は不要である.

set MISIMAJARDIR=c:\misima
	

(4)CLASSPATH の登録
C:\misima\misima.jar を Java クラスパスに登録する (Windows 環境変数).

(5)実行パスの設定
インストール・ディレクトリを Windows 実行パスに登録する (Windows 環境変数).

(6).emacs の設定
Meadow 初期設定ファイル .emacs に以下の 2 行を追加する. misimasoap-path は 上記バッチファイルの絶対パス名を指定する.

(require 'misimasoap)
(setq misimasoap-path "c:/misima/misima.bat")
	

(7)Elisp のインストール
添付 misimasoap.elc または misimasoap.el を Emacs Lisp のロードパスの通ったディレクトリにコピーする. misimasoap.elc は misimasoap.el をバイトコンパイルしたもので,ロードの速度に有利であるとされている.

UNIX系

(1)インストール・ディレクトリの作成
misima SOAP クライアントをインストールするディレクトリを作成する.ここでは, /home/​user/​misima と仮定して説明する.

% pwd
/home/user (と仮定して説明する.自分のホームに読替えてほしい)
% mkdir misima
	

(2)解凍
適当なアーカイバにより, (1) で作成したディレクトリ直下にパッケージを解凍する.ここでは unzip コマンドを利用している.

% pwd
/home/user/misima
% ls
misimaSoapService-2.5.zip
% unzip misimaSoapService-2.5.zip
	

(3)misima-2.5.jar のコピー
misima-2.5.jar をインストール・ディレクトリにコピーする.このとき misima.jar に名称を変えておく.

% cd ~/misima
% cp misimaSoapService-2.5/misima-2.5.jar misima.jar
	

(4)シェル misima.sh の修正/コピー
shells/​misima.sh の MISIMAJARDIR 変数を上記パッケージ解凍ディレクトリ名に修正する.その後, misima.sh をインストール・ディレクトリにコピーする.

MISIMAJARDIR=/home/user/misima
	

(5)実行パスの設定
インストール・ディレクトリを実行パスに登録する (環境変数).

(6)CLASSPATH の登録
$HOME/misima/misima.jar を Java クラスパスに登録する (環境変数).

(7).emacs の設定
Emacs 初期設定ファイル .emacs に以下の 2 行を追加する. misimasoap-path は上記シェルスクリプトの絶対パス名を指定する.

(require 'misimasoap)
(setq misimasoap-path "/home/user/misima/misima.sh")
	

(8)Elisp のインストール
添付 misimasoap.elc または misimasoap.el を Emacs Lisp のロードパスの通ったディレクトリにコピーする.

利用方法

 

変換対象テキストは Unicode UTF-8 エンコーディングとする.Emacs, Meadow でバッファ・エンコーディングを UTF-8 に設定するには, C-x RET f utf-8 RET とすればよい.

コマンドライン

(1)Windows

Windows [スタート]-[プログラム]-[アクセサリ](Windows 2000 の場合) から「コマンドプロンプト」を起動して misima.bat を実行する.

C:\WINDOWS>cd c:\misima
C:\MISIMA>misima.bat -kyit -s c < inputfile > outputfile
	
  - "-kyit -s c" は misima 実行オプションである (別項参照)
  - inputfile は変換元のテキストファイルである.
    "< inputfile" を省略するとキーボードから入力する.
    misima は UTF-8 入力を前提としているためファイル入力として使うのが
    普通ではないかと思う.
  - outputfile は変換結果テキストファイルである.
    "> outputfile" を省略すると画面に出力する.
	

(2)UNIX 系

仮想端末 (ターミナル) から misima.sh を実行する.

% cd ~/misima
% ./misima.sh -kyit -s c < inputfile > outputfile

  - シェルスクリプトである以外は Windows と同じ.
	

misima オプション

各機能そのものの詳細については,「misima 旧仮名遣い・旧字変換支援プログラム」仕様説明ページを参照いただきたい.

書式1: java [ java オプション ] misima.misimaSoapClient 
        [-k|-y|-i|-t|-n|-h|-q|-s {cjhua}|
         -x <kuihrtTaf>|-c {CTK}|-m {ht}|-d| 
         -u URI]

書式2: misima.sh (misima.bat) 
        [-k|-y|-i|-t|-n|-h|-q|-s {cjhua}|
         -x <kuihrtTaf>|-c {CTK}|-m {ht}|-d] 

 書式1 は Java クラスを呼び出す方法である.
 書式2 は ラッパースクリプトを呼び出す方法である.
 [ ] は | 区切りのオプションが選択可能であることを示す (複数可).
 { } は引数指定時にいずれかひとつを指定すべきことを示す.
 < > は引数指定時に複数を指定できることを示す.
 -kyit のように指定してもよい.

 -k   旧仮名変換を行う.
 -y   用語・用字変換を行う.
 -i   繰返符号変換を行う.
 -t   単純補正変換を行う.
 -n   仮名反転変換を行う.
 -h   変換結果を UCS 十六進数形式で返却する.
 -s   指定に従って旧字変換を行う.
    c   UTF-8 文字
    j   JIS 第一・第二水準内文字
    h   HTML 数値参照
    u   TeX OTF パッケージ UTF-8 数値参照 (16進数)
    a   TeX OTF パッケージ CID 数値参照
 -x   指定に従って TeX 変換を行う.
    k   漢文訓読文訓点変換
    u   TeX 文字変換 (Cyrillic, Latin, polytonic-Greek, 
                     UTF8-CJK 漢字)
    i   くの字点変換
    r   キリルT2A変換
    t   タイ語変換
    T   タイ語変換 UTF-8 出力
    h   ^^十六進数変換
    a   上記 k, u 及び i の同時指定
    f   TeX 文字変換 (<misima_noop>指定時の強制変換)
 -c   指定に従って中韓漢字 TeX 変換を行う.
    C   中国語簡体字
    T   中国語繁体字
    K   韓国語
 -m   指定に従ってマーキングを行う.
    h   HTML タグ:
        辞書変換時 <font color="Red"></font>  で囲む
        本則変換時 <font color="Blue"></font> で囲む
    t   TeX コントロール・シーケンス:
        辞書変換時 \red{ }  で囲む
        本則変換時 \blue{ } で囲む
 -u   接続先 URI を指定する.書式2 では不要.
      省略すると筆者のサイト URI が仮定される.
      http://yasuda.homeip.net/axis/services/misimaSoapConnector


 例:java misima.misimaSoapClient -kyt -s c \
     -u http://yasuda.homeip.net/axis/services/\
     misimaSoapConnector < in > out

   - 旧仮名変換,用語・用字変換,単純変換,旧字変換を行う.
   - 旧字変換は UTF-8 文字で出力する.
   - in: 入力ファイル; out: 出力ファイル
   - http://yasuda.homeip.net/axis/services/misimaSoapConnector 
     に接続する.
	

Emacs コマンド

提供 Emacs Lisp では以下の変換コマンド (関数) をサポートしている.リージョンもしくはバッファに対し, M-x コマンド名 で変換を指示する.導入直後の利用は壊れてもよいテキストで試験する.

指定バッファに出力するもの以外,変換後は元データは上書きされてしまうので注意.もしエラーが発生して変換元データが消えてしまったら, C-/ でアンドゥー (取消) してほしい.変換前に編集中の文書をセーブしておくことをお勧めする.

(1) misimasoap-region
リージョンに対し旧仮名,旧字,単純,用語・用字,繰返変換を行う.

(2) misimasoap-tex-region
リージョンに対し 旧仮名,旧字,単純,用語・用字,繰返,TeX 多言語文字,漢文,くノ字変換を行う.

(3) misimasoap-kyuji-region
リージョンに対し旧字変換,単純変換を行う.

(4) misimasoap-kyuji-tex-region
リージョンに対し旧字, TeX 多言語文字変換を行う.

(5) misimasoap-kyukana-kyuji-region
リージョンに対し旧仮名,旧字,単純変換を行う.

(6) misimasoap-kyukana-kyuji-tex-region
リージョンに対し旧仮名,旧字,単純, TeX 多言語文字変換を行う.

(7) misimasoap-kanbun-region
リージョンに対し旧字,漢文訓読文訓点変換を行う.

(8) misimasoap-invertkana-region
リージョンに対し仮名反転を行う.

(9) misimasoap-buffer
バッファに対し旧仮名,旧字,単純,用語・用字,繰返変換を行う.

(10)misimasoap-tex-buffer
バッファに対し旧仮名,旧字,単純,用語・用字,繰返, TeX 多言語文字,漢文,くノ字変換を行う.

(11)misimasoap-kyuji-buffer
バッファに対し旧字変換,単純変換を行う.

(12)misimasoap-kyuji-tex-buffer
バッファに対し旧字変換,単純変換, TeX 多言語文字変換を行う.

(13)misimasoap-create-buffer
バッファに対し旧仮名,旧字,単純,用語・用字,繰返変換を行い,指定バッファに出力してバッファを切替える.

(14)misimasoap-tex-create-buffer
バッファに対し旧仮名,旧字,単純,用語・用字,繰返, TeX 多言語文字,漢文,くノ字変換を行い,指定バッファに出力してバッファを切替える.

制限事項

 

一回当たりの変換実行指示は,実行速度,サーバの負荷等の事情を考慮し 8,000 文字に制限している.思考,推敲しながら文書作成を行うにあたっては十分であると考える.

本サービスはヤワなサーバで運用している上,旧仮名遣い変換において辞書を多量に読み,なおかつ茶筌で形態素解析を行うため性能がよいとはいえない.混雑すると (は思えないが) 処理が遅延する場合がある.長文をまとめて処理するよりも,数行程度のテキスト断片を推敲しつつ間欠的に変換指示していただけるとありがたい.

通常だと, 2,000 文字サイズのテキストで 15 秒程度, 100 文字で 6, 7 秒はかかるものと考えていただきたい.

Web フォーム版と比較すると,ユーザ辞書の指定ができない.トラフィックを抑制することが専らの目的であるが, Web でのオプション利用状況を見ると,ユーザ辞書を独自に設定した例はほとんどない.

Emacs Lisp は「とりあえず版」に近い.コマンド引数仕様, SOAP インタフェースに基づいて,独自にもう少し気のきいたものを作成していただきたい.

利用条件

 

ソフトウェアの利用条件はパッケージ添付の LICENSE を参照のこと.

本プログラム,サービスはその運用結果についていかなる場合においても無保証である.

本サービスはまだα版レベルである.思いついて突貫で作ったのでつまらないバグもあろうかと思うが,ご意見・ご指摘をいただきながら改善したいと思う.

サーバは個人で設置した古いノート PC (ThinkPad X20 Pentium III 600MHz, 主記憶 340MB) である.個人の PC でもってなにが起こるか分からないし,またメンテナンス等の事情により停止していてもご了承いただきたい.とくに ADSL のルータがよくハングする...

もし独自にアクセスプログラムを作成する場合は筆者に必ずご連絡をいただきたい.

お断りなくクライアント,サーバの仕様を変更することがある.そのうちキーを配布してアクセス利用制限を行う予定である.できればご利用になる場合はメールでご連絡いただけるとよい.なるたけメール,筆者の Web サイトで通知するつもりである.

とくに暗号化等のセキュリティ対策は施してはいない.テキストは平文でネットワークを流れることを認識いただきたい.また本アプリケーションは Web のポートを経由して misima 変換サーバにアクセスする.不安な方はソースコードを添付しているので,ヘンなことはやっていないことを (コーディングはヘボかもしれないが) ご確認いただけるはずである. SOAP サーバも含めて Javadoc で生成したプログラム・ドキュメントを掲載しておく.

ご意見や不具合の連絡はメールでいただけるとありがたい.ご質問にも可能な限り対応したい.

更新履歴

 

Aug. 1, 2005 0.1 リリース
Jan. 3, 2006 Windows インストール説明を加筆
Oct. 1, 2007 2.3g リリース
Oct. 8, 2007 2.3i リリース
Oct. 28, 2007 2.4 リリース
Jan. 1, 2008 2.5 リリース
Feb. 6, 2008 記述訂正
Dec. 21, 2008 Unicode 前提明記