========================= ProtocolBuffersで呼び出す ========================= ここでは, :doc:`rasc_basic` で用意したRaSCサービスを,ProtocolBuffers経由で呼び出す 方法について説明します.呼び出し用のクライアントは,Java で作成します. 起動済みのRaSCサービスを使用しますので, :doc:`rasc_basic` を実施して,RaSCサービスを起動しておきます. まず,RaSCクライアントサンプルパッケージをダウンロードして,解凍します. .. code-block:: bash $ wget https://alaginrc.nict.go.jp/rasc/resources/rasc-client-1.0.0.zip $ unzip rasc-client-1.0.0.zip RaSCクライアントサンプルパッケージを解凍すると,以下のファイルが展開されます. .. code-block:: text rasc-client-1.0.0/ + lib/ + … (必須ライブラリ群) + ClientProtcolBuffers/ + build.xml (クライアント用 build.xml) + src/ (クライアント用Javaソースフォルダ) + ClientProtcolBuffers.java (クライアント用ソース) 以下のファイルについて説明します. - ClientProtcolBuffers/build.xml - ClientProtcolBuffers/src/ClientProtcolBuffers.java まず,ClientProtcolBuffers/src/ClientProtcolBuffers.java の内容を説明します. ClientProtocolBuffers.javaは,Javaで実装したProtocolBuffersクライアントのサンプルコードです. *ClientProtcolBuffers/src/ClientProtcolBuffers.java* .. code-block:: java :linenos: :emphasize-lines: 19-20,23 import java.net.MalformedURLException; import java.net.URL; import jp.go.nict.langrid.client.impl.protobuf.PbClientFactory; import jp.go.nict.wisdom.wrapper.api.TextAnalysisService; public class ClientProtcolBuffers { /** * ProtocolBuffers クライアントサンプル. * * @param args args[0] ユーザプログラムに渡す文字列 */ public static void main(String[] args) { try { if(args.length <= 0){ System.out.println("引数にユーザプログラムに渡す文字列を指定してください."); return; } TextAnalysisService s = new PbClientFactory().create(TextAnalysisService.class, new URL("http://localhost:8080/___WAR_NAME___/pbServices/___SERVICE_NAME___")); System.out.println(args[0]); System.out.println("--- result ---"); System.out.println(s.analyze(args[0])); } catch (MalformedURLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } - PbClientFactory#create()を使用して,TextAnalysisServiceを作成します. - 今回用いるRaSCサービスは, *TextAnalysisService Interface* クラスを実装しています. - クライアントからは,RaSCサービスのTextAnalysisService#analyze()を呼び出します. - PbClientFactory#create()の引数である,サービスclassには,*TextAnalysisService.class* を指定します. - *Endpoint* (サービスを呼び出すアドレス) は, ``http://localhost:8080/___WAR_NAME___/pbServices/___SERVICE_NAME___`` を指定します.これは, :doc:`rasc_basic` の手順で設定した ``___WAR_NAME___``, ``___SERVICE_NAME___`` に基づいて設定してください. - サービスのanalyze()を呼び出して,結果を標準出力へ出力します. - クライアント起動時の引数, ``args[0]`` にユーザプログラムに渡す文字列が格納されている前提とします. (参考) *jp.go.nict.wisdom.wrapper.api.TextAnalysisService Interface* クラス .. code-block:: java :linenos: :emphasize-lines: 4 package jp.go.nict.wisdom.wrapper.api; public interface TextAnalysisService { String analyze(String text) throws Exception; String[] analyzeArray(String[] text) throws Exception; } 次に,ProtocolBuffersクライアント用build.xmlの内容を説明します. *ClientProtcolBuffers/build.xml* .. code-block:: xml :linenos: - ``build`` フォルダを作成します. - javaファイルをコンパイルし,``build/clientProtocolBuffers.jar`` を作成します. - *clientProtocolBuffers.jar* は,実行可能Jarファイルとして作成します. - 実行に必要なライブラリは, ``../../lib`` を参照するようにマニフェストを設定します. 次に,ProtocolBuffersクライアントのビルド方法を説明します. .. code-block:: bash $ cd rasc-client-1.0.0/ClientProtcolBuffers/ $ ant - ``rasc-client-1.0.0/ClientProtcolBuffers/`` に移動します. - ant を実行してビルドします. 最後に,ProtocolBuffersクライアントを実行します. .. code-block:: bash $ cd build/ $ java -jar clientProtocolBuffers.jar "今日の天気はどうですか" 今日の天気はどうですか --- result --- 今日 名詞,副詞可能,*,*,*,*,今日,コンニチ,コンニチ の 助詞,連体化,*,*,*,*,の,ノ,ノ 天気 名詞,一般,*,*,*,*,天気,テンキ,テンキ は 助詞,係助詞,*,*,*,*,は,ハ,ワ どう 副詞,助詞類接続,*,*,*,*,どう,ドウ,ドー です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス か 助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ - ``build/`` に移動します. - javaコマンドでProtocolBuffersクライアントを起動します. - ProtocolBuffersクライアントの引数にユーザプログラムに渡す文字列を指定します.