Java Sample Code

Java サンプルコード検索エンジン

Java サンプルコード検索エンジンは、開発者がサンプルとして利用可能なコードスニペットを提案するシステムで、Wisdom Engine として提供しています。これには次のような特徴があります。

Java Sample Code Suggestion Architecture

  • クライアント側で現在書いているプログラムを動態検知技術によって感知し、静的解析技術によって特徴を自動抽出
  • サーバ側に登録されたソースコードの一覧から、クライアントで抽出した特徴と似たものを検出して提案
  • サーバ側にはユーザが利用したいサンプルコードの元となるJavaソースプログラムを容易に追加可能

このドキュメントは、下記の方を対象としています。

  • Eclipse で Java の開発を行ったことのある方

このドキュメントの手順通りに進めることで、Java サンプルコード検索エンジンを Wisdom Server 上に配備し、自由にサンプルコードを登録することができるようになります。Yukara Wisdom の基本的な使い方や Wisdom Server の構築などは、Getting StartページWisdom Server をそれぞれ参照してください。

事前準備

Java サンプルコード検索エンジンの構築には次のソフトウェアが必要です。

Java サンプルコード検索エンジン (サーバ) の設定

Java サンプルコード検索エンジンは Wisdom Engine の一つとして提供しているため、Wisdom Server 上に正しく配備する必要があります。なお、Getting Startページ で利用した Wisdom Server (All-in-One) パッケージではすでにこの操作は完了していますので、サンプルコードの登録まで読み飛ばして構いません (この場合、Java サンプルコード検索エンジンは http://localhost:8080/java-search-server に配備されます)。

エンジンのダウンロードと配備

まず、Java Application Server である Apache Tomcat 上に、Java サンプルコード検索エンジンを配備します。Yukara Downloadページから Java Sample Code x.x.x をダウンロードします。

ダウンロードしたWARファイルを解凍し、Apache Tomcat 上に次のように配備します。

  • ${CATALINA_HOME}/
    • webapps/
      • java-search-server/ (展開したフォルダ)

エンジンの設定

次に、Java サンプルコード検索エンジンの設定を行います。

まず、Java サンプルコード検索エンジンはサンプルコードをローカルのファイルシステム上に保持しますので、そのためのフォルダを作成します。フォルダはサンプルコードを格納するフォルダと、テンポラリ情報を保持するフォルダの2つが必要です。

次に、java-search-serverを配備したフォルダ下の WEB-INF/classes/config.properties を次のように設定します。

設定名 設定内容 備考
selfAddress (このエンジンが配備されたURL) http://localhost:8080/java-search-server など
engineId javaSampleCodeSuggegst Engine ID
yarFileBaseDir (サンプルコードを格納するフォルダへのパス)
yarFileTempDir (テンポラリ情報を保持するフォルダへのパス)
suggestionLimitCount 10 提案するサンプルコードの最大数

データベースの設定

次に、Java サンプルコード検索エンジンが利用するデータベースの起動と初期化を行います。現在のバージョンの Java サンプルコード検索エンジンはデータベースに H2 Database を利用していますので、同ソフトウェアをサーバモードで起動してください。

H2 Databaseはオプションを指定せずに起動すると TCP の 9092 版ポートで待ち受けを行います。別のポートで起動させる場合には、配備したjava-search-serverフォルダ下の WEB-INF/classes/jdbc.properties に含まれる、JDBC の接続設定を適切な値に変更してください。

H2 Databaseの起動が完了したら、Java サンプルコード検索エンジンが利用するテーブルの構築を行います。これは、配備したjava-search-serverフォルダ下の WEB-INF/classes/init-db.bat または WEB-INF/classes/init-db.sh を実行することで完了します。

Wisdom Server の設定

最後に、Java サンプルコード検索エンジンを Wisdom Server に登録します。Wisdom Poolの登録 - Server Settings を参考に、下記を登録してください。

Engine ID javaSampleCodeSuggest
Engine URL <配備したURL>/engine/javaSampleCodeSuggest

サンプルコードの登録

Java サンプルコード検索エンジンは、初期状態で何もサンプルコードが登録されていない状態で配布しています。以降ではサンプルコードを同エンジンに追加する方法について紹介します。

サンプルコードの登録は、主に次の流れで行います。

  • サンプルコードをコンパイルし、クラスライブラリ(クラスファイルの一覧)を生成する
  • サンプルコードと対応するクラスライブラリから索引ファイルを作成する
  • Java サンプルコード検索エンジンに索引ファイルを登録する

索引の作成

Java サンプルコード検索エンジンは索引を元にして高速にコードスニペットを検索することができます。この索引は Java のコードスニペット検索に特化した独自の形式をとっており、作成にはソースコードの一覧とそれに対応するクラスライブラリが必要です。これは Maven リポジトリ上にたくさん存在するため、今回はソースコードとコンパイル済みのクラスライブラリを利用することにします。

以下の2つのファイルをダウンロードします。

これらのファイルは、S2Container のソースプログラムとそのクラスライブラリで、今回はこれに対する索引を作成します。

索引の作成には、Yukara Downloadページにある Java Sample Code Index Generator x.x.x を利用します。このファイルをダウンロードし、ダブルクリックして起動します (ダブルクリックで起動しない場合は、コマンドラインから java -jar <ダウンロードしたファイル> で起動してください)。起動に成功すると、次のようなウィンドウが表示されます。

Java Index Generator

次に、"Artifact information" グループの各項目、および "Source files" グループの "Encoding" を次のように変更します。

項目 設定値 備考
Name s2-framework プロダクトの名称
Version 2.4.29 プロダクトのバージョン
Encoding UTF-8 プロダクトのソースファイルエンコーディング

次に、"Source files" グループ、および "Class files" グループにある "Add new archive/directory" ボタンを押して、先ほどダウンロードしたソースファイルアーカイブとクラスライブラリをそれぞれ指定します。このとき、アーカイブファイルのほかに通常のフォルダを指定することができ、さらに複数のアーカイブやフォルダを指定することもできます。

Configure Artifacts - Java Index Generator

最後に、"License information" グループに、ライセンスのURLを入力します。今回は The Seasar Project 上のソースコードを利用しているため、"http://www.seasar.org/license/" と入力する必要があります。なお、ライセンスはURLのほかにローカルファイルシステム上のリソースを指定することもできます。

すべての入力が終了したら "Generate" ボタンを押します。"Generate" ボタンが利用不可能になっている場合、いずれかのフィールドに不正な値が入力されています。そのようなフィールドは背景色が赤くなっているはずですので、そこにマウスを合わせて待っているとエラーの情報が表示されます。

"Generate" ボタンを押すと、生成する索引ファイルの出力先を聞かれます。好きな場所を指定して "OK" ボタンを押してください。

Select index file output - Java Index Generator

下記のダイアログがでれば索引の生成は完了です。このアプリケーションは終了して構いません。

Success - Java Index Generator

索引ファイルを登録

ローカルで作成した索引をJava サンプルコード検索エンジンに登録します。この索引は複数登録することができ、登録のたびにエンジンはこれまでに登録されたすべての索引に対する全体の索引を作成し直します。

まず、ブラウザを開いて http://localhost:8080/java-search-server/populator (<Java サンプルコード検索エンジンを配備したURL>/populator) を開きます。すると、下記のようなページが表示されます。

Java Index Populator

"Artifact Index File" に先ほど作成した索引ファイルを指定し、"Add" ボタンを押します。すると指定した索引ファイルがエンジンに送信され、エンジン側で全体の索引に組み込む処理が行われます (この処理には時間がかかります)。

しばらく待つと、下記の画面が表示され、作成した索引ファイルが正しく登録されていることがわかります。

Completed - Java Index Populator

Java サンプルコード検索エンジン (クライアント) の利用

Java サンプルコード検索エンジンのクライアントは、Wisdom Client に標準で添付されています。そのため、Eclipseプラグインのアップデートサイト から Yukara Wisdom をインストールするだけで自動的に導入できます。

Wisdom Client の導入方法や、簡単な使い方については Getting Startページを参考にしてください。