Play frameworkのいろいろなモジュール番外編 –Play Moduleを作成してみるその1

2011.11.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Play Moduleとは

Playはモジュラリティが高く、Play Mobuleと呼ばれる仕組みを利用して容易にモジュールを作成することができます。 これを使用すれば再利用可能なコンポーネントを作成したり、大きなアプリケーションを小さなアプリケーションに分割することが可能です。

Play Mobuleは通常のPlayアプリケーションと大差はありませんが、いくつかの違いがあります。

  • モジュールには conf/application.conf ファイルが存在しない
  • モジュールは conf/routes ファイルを持てるが、自動的にはロードされない

など、これ以外にもいくつかの違いがあります。詳細はドキュメント ※1を参照してみてください。 そして、Play Moduleは「play new-module」コマンドで作成することができます。 今回は簡単なPlay Moduleを作成し、動かしてみましょう。

セットアップ

なお、本記事での動作確認環境は下記の通りです。

  • OS : MacOS X 10.7.2
  • Java SE: 1.6.0_26
  • Play framework : 1.2.3

※Play frameworkはインストールしてパスを通しておいてください。

モジュールを作成

まずはPlay Moduleを作成してみましょう。

% play new-module myModule

myModuleという名前でモジュールを作成します。 次に、モジュールとして実行されるJavaクラスを作成します。 myModule/src/play/modules/myModuleディレクトリに、下記内容でMyModulePlugin.javaを作成してください。 モジュールはsrcディレクトリ以下にソースファイルを格納します。

package play.modules.mymodule;

import play.PlayPlugin;

public class MyModulePlugin extends PlayPlugin {
	public  void onApplicationStart() {
		System.out.println("MyModulePlugin#onApplicationStart!!");
	}
}

PlayPluginを継承すると、Playアプリケーションの特定のタイミングをフックすることができます。 今回はアプリケーション起動時にメッセージを出すだけです。これ以外にも任意のイベントをアプリケーションからポストしたり、さまざまなタイミングを検知することができます。 ファイルを保存したらビルドします。問題がなければdistディレクトリにzipファイルが作成されます。

% play build-module
・・・・・・・
Total time: 1 second
~
~ Packaging myModule-0.1 ... 
~
~ Done!
~ Package is available at /Users/myModule/dist/myModule-0.1.zip
~

Moduleを使用するPlayアプリケーションの作成

次に、先ほど作成したモジュールを使用するアプリケーションを作成します。

% play new MyModuleApp
% cd ./MyModuleApp

コントローラーなどはデフォルトのままでかまいません。モジュールをインストールするため、dependencies.ymlを下記のように編集します。

# Application dependencies

require:
    - play
    - customModule -> myModule

repositories:
    - playCustomModules:
        type:       local
        artifact:   "/Users/myModule/"
        contains:
               - customModule -> *

ローカルリポジトリを追加し、artifactにさきほど作成したmyModuleのディレクトリを指定します。 ファイルを編集したら、MyModuleAppディレクトリでdepsコマンドを実行して起動してみてください。

% play deps
・・・・
~ Resolving dependencies using /Users/MyModuleApp/conf/dependencies.yml,
~
~ 	customModule->customModule -> (from playCustomModules)
~
~ Installing resolved dependencies,
~
~ 	modules/myModule -> /Users/myModule
~
~ Done!
~

%play run

localhost:9000アクセスしてみてください。 AppicationStartイベントの処理が実行され、コンソールにメッセージが表示されます。

まとめ

今回はとてもシンプルなモジュールを作成してみました。 Playにはさまざまなモジュールが存在しており、基本はすべてこの仕組みで動作しています。 Playの根幹をなす部分なので、ぜひ使用してみてください。