昨日は misima 旧字・旧仮名遣い変換 RESTful Web Service サーバの実装について記した。今日はクライアントを書いてみよう。サーバアプリを書くのに使用した Apache-
REST::Client モジュール
端末で以下のように REST::Client モジュールをインストールしておく。
$ sudo cpan -i REST::Client
RESTful Perl クライアント・コード
端末から操作するコマンド misimaRestClient.
#!/usr/bin/perl -w # -*- coding: utf-8; mode: cperl; -*- # misima RESTful Web Service Client # 2014(c) isao yasuda, All Rights Reserved. use strict; use REST::Client; # RESTful Web Service Client use Getopt::Std; # コマンドライン引数処理 use File::Basename; # ファイル名の取得 # コマンドライン・オプション・チェック (see usage) my %opts = ('s'=>'0', 'y'=>0, 'k'=>0, 't'=>0, 'i'=>0, 'n'=>0, 'l'=>0); # オプション Getopt::Std::getopts('s:yktnil', \%opts) || usage(); # 旧字オプション usage() unless ($opts{'s'} =~ m/[cjhua]/); # 処理対象データ my $copt = ""; # misimaオプション foreach my $key (keys(%opts)) { if ($opts{$key}) { if ($key eq 's') { $copt .= '-s ' . $opts{$key} . ' '; } else { $copt .= '-' . $key . ' '; } } } ($copt) || die "No options specified.\n"; my $ucde = "noxinsomniae201402"; # ユーザコード my $itxt; # 変換対象テキスト $itxt .= $_ while (<STDIN>); # 標準入力を蓄積 ($itxt) || die "No texts\n"; # 送信XML組立 my $pxml = '<?xml version="1.0" encoding="UTF-8"?>' . '<misimaRESTful><misimaParam>' . $copt . ' -q</misimaParam>' . '<misimaTarget>' . $itxt . '</misimaTarget>' . '<misimaUsercode>' . $ucde . '</misimaUsercode></misimaRESTful>'; # RESTful post my $host = 'http://yasuda.homeip.net:8080'; my $url = '/misimaRest/misima/convert'; my $client = REST::Client->new({host=>$host}); $client->request('POST', $url, $pxml, {'Content-Type'=>'text/xml'}); if ($client->responseCode() eq '200') { print $client->responseContent(); } else { print STDERR "Error occured: ", $client->responseCode(), "\n"; } # Usage sub usage { my $prog = basename($0); die <<"EOM"; Usage: $prog [-k|-y|-i|-t|-n|-l|-s {c|h|u|a}] -k: 旧仮名遣い変換 -y: 用語用字変換 -i: 繰返符号変換 -t: 単純変換 -n: かな反転 -l: 簡体字to繁体字 -s: 旧字変換 (-s x として x に以下いずれか指定する) c UTF-8 文字; h HTML数値参照; u TeX \\UTF; a TeX \\CID; EOM }
上記の 39-48 行目が REST::Client 関連処理である。
試験
変換実行の操作イメージは以下のとおりである。
$ cat test.txt 森鴎外はこう言い,内田百間を団扇であおいだ。 僕は黙っています。 $ misimaRestClient.pl -kyit -s c < test.txt 森鷗外はかう言ひ,內田百閒を團扇であふいだ。 僕は默つてゐます。
GNU Emacs からの利用
misimaRestClient.
;;; misimaws.el (defvar misimaws-path "/usr/local/bin/misimaRestClient.pl" "Path for misimaws. Default: /usr/local/bin/misimaRestClient.pl") (set-default-coding-systems 'utf-8) (defun misimaws-region (start end) "Replace UTF-8 characters of specified region to old orthography.(UCS)" (interactive "r") (call-process-region start end misimaws-path t (list t nil) nil "-ykit" "-s" "c") ) (provide 'misimaws)
そして,.emacs 初期設定ファイルに以下を記述して,Emacs に評価させる(再起動してもよい)。
;; misima RESTful Web Service Client (require 'misimaws) (setq misimaws-path "~/bin/misimaRestClient.pl")
GNU Emacs の編集バッファで,変換したいテキスト・リージョンを選択し,
GNU Emacs 変換前
GNU Emacs 変換後
misimaRESTful Web Service はそのうち限定公開とするので,悪しからずご了承ください。
参考文献
[ 2015/02/02 付記 ]
misima RESTful Web Service は 2014/12 より友人のためだけの限定公開といたしました。上記ユーザ認証コードでは動作しません。
Emacs から misima RESTful Web Service を使うのなら,本記事の Perl クライアントを使うよりも Emacs-lisp だけで実装したものをお勧めする。本ブログ記事『misima RESTful Web Service for GNU Emacs, LaTeX』を参照いただきたい。