SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Javaプログラマーのための実践「Vert.x」

モダンアプリケーションのための軽量・高性能プラットフォーム「Vert.x」の概要と導入手順

Javaプログラマーのための実践「Vert.x」 第1回

Gradleの簡単な紹介

 本筋ではありませんが「Gradle」を紹介しておくと、AntやMavenのようにXMLでビルド方法を定義するのではなく、Groovyで設定を記述するビルドツールです。Vert.xを利用した開発で最低限必要なのは依存関係の編集になりますが、Maven、Ivyと互換性を持ちながらもXMLよりも非常に簡易な記述が可能です。

 テンプレートプロジェクトのルートディレクトリには、build.gradleという名前のファイルがあります。これがデフォルトのビルド定義ファイルです。このファイルを開き、dependenciesの記述を見てみます。

dependencies {
  /*
  Add your module jar dependencies here
  E.g.
  compile "com.foo:foo-lib:1.0.1" - for compile time deps - this will end up in your module too!
  testCompile "com.foo:foo-lib:1.0.1" - for test time deps
  provided "com.foo:foo-lib:1.0.1" - if you DON'T want it to be packaged in the module zip
  */

  // If you're creating Groovy compiled verticles you may need the following dependencies
  provided "org.codehaus.groovy:groovy-all:$groovyVersion"
  provided "io.vertx:lang-groovy:$groovyLangModVersion@jar"

}

 この記述は、テンプレートのsrcに入っているGroovyのサンプルプログラム用のものです。Javaのみで開発を行う際には、providedの2行は削除してしまって構いません。

 このdependenciesに囲われた中にモジュールの開発に必要なライブラリを記述していくことになります。具体的に、まずは簡単にコンパイル用にSLF4J、実行時用にLog4j 2を追加してみます。ついでにテストコンパイル用のライブラリとしてJUnitを追加すると、下記のようになります。

dependencies {
	compile 'org.slf4j:slf4j-api:1.7.7'
	runtime 'org.apache.logging.log4j:log4j-core:2.1'
	runtime 'org.apache.logging.log4j:log4j-slf4j-impl:2.1'
	testCompile 'junit:junit:4.11'
}

テンプレートを動かしてみる

 テンプレートの中には、いくつかサンプルソースが入っていますので、まずはそのままビルドして動かしてみます。build.gradleの中身は何も変更せず、gradlewコマンドでビルドします。vertx-gradle-templateをクローンしたディレクトリに移動し、コマンドを打つだけです。

gradlew build

 ちょっと時間がかかると思いますが、最後にBUILD SUCCESSFULが表示されれば完了です。ビルド成果物はbuildディレクトリの配下にできていますので確認してみてください。そのまま動かすことができるモジュールは、build/mods配下にできています。

 com.mycompany~my-module~1.0.0-finalがJavaとGroovyのビルド結果です。

 そのほかのio.vertx~系のものはJavaScript、Ruby、Pythonのスクリプトを動かすために自動的にダウンロードされた言語モジュールになります。

 次にこのまま起動といきたいところですが、テンプレートを起動してもそのまま待機状態になってしまい、動きが分かりません。そこで、1つスクリプトを作成します。

ping.js
var vertx = require('vertx');
var eventBus = require('vertx/event_bus');
var container = require('vertx/container');
var console = require('vertx/console');

console.log('start');

container.deployModule('com.mycompany~my-module~1.0.0-final');

vertx.setTimer(5000, function(time) {
    eventBus.send('ping-address', 'ping', function(reply) {
        console.log(reply);
        container.exit();
    });
});

 実行の前に、ビルドしたモジュールの格納先を指定するために環境変数を設定してください。

set VERTX_MODS=build\mods

 それでは実行します。

vertx run ping.js

 下記のように表示され、プロセスが終了すれば成功です。

start
Succeeded in deploying verticle
PingVerticle started
Sent back pong
pong!

 JavaScriptとJavaのプログラムでコラボレーションできることを確認できました。ここでは動作する環境の確認のみで詳しい説明はまた後の回とします。

まとめ

 今回は、Vert.xのテンプレートを利用し、とりあえず動く環境を作成し、実行までを確認してみました。次回は、このテンプレートを含め、Vert.xがどういう仕組みで動いているのかをもう少し深く説明してみたいと思います。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
Javaプログラマーのための実践「Vert.x」連載記事一覧

もっと読む

この記事の著者

リョウジ(株式会社DMM.comラボ)(リョウジ)

DMM.comのプラットフォームにおける主要アーキテクチャに関しての技術研究開発を担当。 非同期のメッセージ&キューの導入、Vert.xフレームワークを採用し社内の基盤を整備等、 高負荷対策・可用性の高いアーキテクチャの開発・設計など幅広く活躍。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8353 2015/01/16 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー