Play frameworkのいろいろなモジュール番外編 –Play Moduleを作成してみるその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の根幹をなす部分なので、ぜひ使用してみてください。