Play アプリケーションは、いくつかのアプリケーションモジュールから組み立てることができます。これにより、複数のアプリケーションをまたいでアプリケーションコンポーネントを再利用したり、大きなアプリケーションをいくつかの、より小さなアプリケーションに分割することが可能です。
モジュールは、ただの play アプリケーションです; しかし、アプリケーションモジュールのリソースがロードされる方法にいくつかの違いがあります:
conf/application.conf
ファイルがありません。conf/routes
ファイルを持つことができますが、これらのルートは自動的にはロードされません。play new-module
コマンドでモジュールを作成することができます。
モジュールは、アプリケーションの /modules
ディレクトリから自動的にロードされます。依存性管理システム を使って自動的にアプリケーションのモジュールを管理することができます。
モジュールはデフォルト ルート
ファイルを提供することができます。特別なルート宣言を使用することで、メインアプリケーションの routes
ファイルにこれをロードすることができます:
# Import the default CRUD routes
GET /admin module:crud
すべての利用可能なモジュールからルートをロードすることもできます:
GET / module:*
モジュールに documentation/manual/home.textile
ファイルを追加するだけで、モジュールにドキュメントを追加することができます。 ${play.path}/documentation/manual/
にある Play 自身のドキュメントと同じ Textile 文法を使ってください。
ドキュメントを持つひとつまたはそれ以上のモジュールを使って Play アプリケーションを実行している場合、 http://localhost:9000/@documentation にあるローカルの Play ドキュメントは、サイドバーの Installed Modules の下にそれらドキュメントへのリンクを含みます。
モジュールリポジトリ は、コミュニティによって寄付されたすべてのモジュールを識別します。モジュールはいくつかのバージョンを持つことができます。使用するフレームワークのバージョンに必要なのはどのバージョンのモジュールなのか、モジュールのドキュメントをチェックする必要があります。
play list-modules
コマンドを使ってモジュールリポジトリを閲覧することもできます。
gbo-mac:‾ guillaume$ play list-modules
‾ _ _
‾ _ __ | | __ _ _ _| |
‾ | '_ ¥| |/ _' | || |_|
‾ | __/|_|¥____|¥__ (_)
‾ |_| |__/
‾
‾ play! 1.2, https://www.playframework.com
‾
‾ You can also browse this list online at https://www.playframework.com/modules
‾
‾ [bespin]
‾ Bespin online editor
‾ https://www.playframework.com/modules/bespin
‾ Versions: 1.0, 1.0.1
‾
‾ [cobertura]
‾ Cobertura
‾ https://www.playframework.com/modules/cobertura
‾ Versions: 1.0
...
play install {module}-{version}
コマンドを使ってローカルにモジュールをインストールすることができます。ローカルにモジュールをインストールすると、いくつかのアプリケーションがそれぞれ個別のコピーをインストールすることなく、このモジュールを使えるようになります。これは、アプリケーションの拡張というよりも、フレームワークを拡張するような大きなモジュールについて有効です。
例えば、フレームワークに Scala サポートをインストールする場合、以下を使います:
play install scala-head
規約では、 head
バージョンのモジュールは不安定です。バージョン情報を省略することで、デフォルトバージョンのモジュールをインストールすることもできます。例えば、以下のようにします:
play install scala
この方法の場合、モジュールはフレームワークをインストールした場所の /modules
ディレクトリにインストールされます。
--path
オプションを使ってこのインストールパスを変更することができます:
play install gwt --path=my-project
新しいモジュールを登録するには、次のものが必要です。
[a-zA-Z]+
にマッチするモジュール名。Google アカウントを OpenID として使用するためには、以下のようにしてその完全な URL を見つける必要があります。
https://www.google.com/accounts/o8/id
を入力し、 Login ボタンをクリックします。https://www.google.com/accounts/o8/id?id=BItOawk7q69CFhRarQIo
のように、 Developer login の下の完全な Google OpenID URL をメモします。play-framework Google Group にモジュール登録リクエストを投稿します。例えば:
Subject: Module registration request: {module name}
Module name:
jqueryui
Display name:
jQuery UI
Description:
Working examples of jQuery UI widgets, integrated with a Play application.
Project home page:
https://github.com/hilton/jqueryui-module
OpenID:
https://www.google.com/accounts/o8/id?id=BItOawk7q69CFhRarQIo
モジュールが登録されたら、リリースを公開することができます。
モジュールをリリースするためには:
self: play -> jqueryui 1.0
のように、 conf/dependency.yml
の最初の行にモジュールのバージョン番号を設定しますplay build-module
コマンドでモジュールをビルドしますdist/
ディレクトリから生成した ZIP ファイルをアップロードしますもちろん、ヘルプを提供したり情報を共有するために公式の Google Group を使用することができます。
考察を続けます
依存性管理 を使ってモジュールを効率的に管理する方法を学びましょう。