ここでは, 各種のネットワーク呼び出しプロトコルに対応させる で用意したRaSCサービスを,ProtocolBuffers経由で呼び出す 方法について説明します.呼び出し用のクライアントは,Java で作成します.
起動済みのRaSCサービスを使用しますので, 各種のネットワーク呼び出しプロトコルに対応させる を実施して,RaSCサービスを起動しておきます.
まず,RaSCクライアントサンプルパッケージをダウンロードして,解凍します.
$ wget https://alaginrc.nict.go.jp/rasc/resources/rasc-client-1.0.0.zip
$ unzip rasc-client-1.0.0.zip
RaSCクライアントサンプルパッケージを解凍すると,以下のファイルが展開されます.
rasc-client-1.0.0/
 + lib/
   + … (必須ライブラリ群)
 + ClientProtcolBuffers/
   + build.xml (クライアント用 build.xml)
     + src/ (クライアント用Javaソースフォルダ)
       + ClientProtcolBuffers.java (クライアント用ソース)
以下のファイルについて説明します.
まず,ClientProtcolBuffers/src/ClientProtcolBuffers.java の内容を説明します. ClientProtocolBuffers.javaは,Javaで実装したProtocolBuffersクライアントのサンプルコードです.
ClientProtcolBuffers/src/ClientProtcolBuffers.java
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |   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();
     }
   }
 }
 | 
(参考) jp.go.nict.wisdom.wrapper.api.TextAnalysisService Interface クラス
| 1 2 3 4 5 6 | 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
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <?xml version="1.0" encoding="utf-8"?>
<project name="rasc_client" default="client">
  <target name="init">
    <mkdir dir="build" />
  </target>
  <target name="clean" depends="init">
    <delete dir="build" />
  </target>
  <target name="client" depends="init">
    <mkdir dir="build/client" />
    <javac destdir="build/client" encoding="UTF-8"
      includeantruntime="false" debug="true">
      <src path="./src" />
      <classpath>
        <fileset dir="../lib" includes="*.jar" />
      </classpath>
    </javac>
    <jar jarfile="build/clientProtocolBuffers.jar">
      <fileset dir="build/client" includes="**/*.class" />
      <fileset dir="./src" includes="**/*.java" />
      <manifest>
        <attribute name="Main-Class" value="ClientProtcolBuffers" />
        <attribute name="Class-Path"
          value=". ../../lib/jp.go.nict.langrid.client.ws_1_2.protobuf.jar
          ../../lib/wrapper-api.jar ../../lib/jp.go.nict.langrid.client.jar
          ../../lib/protobuf-java-2.2.0.jar ../../lib/jp.go.nict.langrid.commons.jar
          ../../lib/jp.go.nict.langrid.commons.cs.jar ../../lib/jp.go.nict.langrid.commons.protobufrpc.jar
          ../../lib/jp.go.nict.langrid.commons.beanutils.jar ../../lib/jp.go.nict.langrid.language.jar" />
      </manifest>
    </jar>
  </target>
</project>
 | 
次に,ProtocolBuffersクライアントのビルド方法を説明します.
$ cd rasc-client-1.0.0/ClientProtcolBuffers/
$ ant
最後に,ProtocolBuffersクライアントを実行します.
$ cd build/
$ java -jar clientProtocolBuffers.jar "今日の天気はどうですか"
今日の天気はどうですか
--- result ---
今日    名詞,副詞可能,*,*,*,*,今日,コンニチ,コンニチ
の      助詞,連体化,*,*,*,*,の,ノ,ノ
天気    名詞,一般,*,*,*,*,天気,テンキ,テンキ
は      助詞,係助詞,*,*,*,*,は,ハ,ワ
どう    副詞,助詞類接続,*,*,*,*,どう,ドウ,ドー
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
か      助詞,副助詞/並立助詞/終助詞,*,*,*,*,か,カ,カ