misima SOAP Client Perl 版

今日は,Perl で misima 旧字・旧仮名遣い変換 SOAP Web Service クライアントを簡単に作成する方法について述べる。

misima SOAP Web Service

misima 旧字・旧仮名遣い変換支援は Web 版を数多くの方に使っていただいている。しかし,misima SOAP Web Service を利用している人はほとんどいない。misima SOAP Web Service パッケージには,Emacs / Meadow 用,Microsoft Word 用,Jedit X 用,TeXShop 用,秀丸用のクライアント,Java API クラスライブラリが添付されている。これによって,まるで自分の PC で misima が動いているかのような使い方ができるのに。作者としては残念である。

SOAP::Lite Perl モジュール

SOAP といえば Java という印象があるけれども,一方,Perl の世界でも,SOAP 通信基盤モジュール SOAP::Lite が提供されており,CPAN (Comprehensive Perl Archive Network) から入手できる。これを使うと,いとも簡単に misima SOAP クライアントが書けてしまう。misima 変換オプションと対象文字列を二つのパラメータにセットし,WSDL の URI を引数として SOAP サービスオブジェクトを生成し,パラメータを引数にして misimaConvert メソッド(これは WSDL で定義されているサービス名称である)を実行すると,misima 変換結果が返却される。

#!/usr/bin/perl
use utf8;
use SOAP::Lite;
binmode STDOUT, ":utf8";
my $p1 = "-kyitq -s a -x fki"; # 旧字旧仮名TeX変換指定
my $p2 = "鴎外は団扇であおいだ。Я люблю вас. Ça, déjeunons!"; # 変換対象 text
my $uri = "http://yasuda.homeip.net/webservices/misimaSoapConnector";
my $svc = SOAP::Lite->service("$uri?wsdl");
print $svc->misimaConvert($p1, $p2);

以上のような Perl コードを misimaconvert とでも名前を付けて格納する。コマンドラインでこれを実行すると「\CID{7646}外は團\CID{13883}であふいだ。YA lyublyu vas. \c Ca, d\'ejeunons!」(旧字・旧仮名遣い・多言語 TeX 変換)と出力される。

もちろん,これは核心部分だけのコードなので,実用的なプログラムには,パラメータの組立て,変換対象文字列の取得,結果の編集・加工など,その前段,後段が必要なのは言うまでもない。でも,misima の遠隔変換オペレーションはこれだけでできてしまうのである。SOAP はいかに簡単なのかということが分かると思う。misima SOAP サーバが Java で記述されているなんてことはまったく意識しないでよい。XML による標準化というものがいかに強力なのかが分かる,というものである。

SOAP::Liten インストール

おそらく SOAP::Lite モジュールの組込みの方がよっぽど面倒だろう。MIME-Lite, MIME-Tools, XML-Parser, Compress-Zlib など,いくつかの前提モジュールを別途インストールしておく必要があるからである。cpan -i SOAP::Lite でインストールできると思う。FreeBSD ならば ports: net/p5-SOAP-Lite が用意されているので,cd /usr/ports/net/p5-SOAP-Lite && make install clean 一発でインストールできる。私の場合,前提 Perl モジュールの版が古かったためか,.../Base64.so: Undefined symbol "Perl_Tstack_sp_ptr" などのエラーが出て make が失敗するという問題があった。エラーになっているライブラリ(例では BASE64.so)の Perl モジュールを再インストール(make deinstall reinstall)すればうまくいった。

参考文献

SOAP::Lite については,オライリーから出ている『Perl クックブック』VOLUME 2 に解説がある。上記のクライアントのみならず SOPA サーバや XML-RPC クライアント/サーバの例も掲載されている。かようにして,オライリーの言語本は必ず役に立つ。日本人の書いた駄本(多く,著者の知っていることしか書かれていないため,自分のちょっと曲がった課題に対してはまったく導きにならない)に手を出すのではなく,多少高価でも,米国のプロフェショナルが体系的にしるしたオライリー本(体系的かつ正確である)を手に入れて,参考にすべきである。

Perlクックブック〈VOLUME1〉
トム・クリスチャンセン,ネイザン・トーキントン
オライリージャパン
Perlクックブック〈VOLUME2〉
トム・クリスチャンセン,ネイザン・トーキントン
オライリージャパン

付記

ユーザでもし独自に misima アクセスクライアントを作成し運用する場合は,私に連絡いただきたい。

[ 2010.11.02 ]
misima SOAP Web Service は停止しました。上記プログラムを実行しても動作しません。

[ 2014.03.09 ]
最近の動向として Web Service 形態としては SOAP よりも REST が一般的になった。SOAP が XML データラッピングを必須とし,WSDL でインタフェースをやり取りしなければならないのに比べ,REST は HTTP トランスポートを利用する限りにおいてそのような制約がない。Perl 言語による misima RESTful クライアントについては,「misima RESTful Web Service Perl クライアント 」を参照。