Play Framework
| この項目の参考文献は、一次資料や記事主題の関係者による情報源に頼っています。信頼できる第三者情報源とされる出典の追加が求められています。(2010年9月) |
| 初版 | 2007年 |
|---|---|
| 最新版 | 2.5.15 / 2017年5月18日 |
| リポジトリ | github |
| プログラミング言語 | Scala |
| サポート状況 | 開発中 |
| 種別 | Webアプリケーションフレームワーク |
| ライセンス | Apache License |
| 公式サイト | www |
Play Framework(プレイ・フレームワーク)は、ScalaとJava言語で書かれたオープンソースのWebアプリケーションフレームワークである。Model View Controller (MVC) アーキテクチャを採用しており、設定より規約やホットリローディング、エラーのブラウザ上への表示といった方針により、開発者の生産性を上げることを目的としている。[1]
Scala言語のサポートはバージョン1.1より行われていたが[2]、バージョン2.0ではフレームワークのコア自体がScalaにより書き直されている。ビルドとデプロイメントにもScalaベースのビルドツールであるSBTが使用されており、テンプレートエンジンも以前のGroovyの代わりにScalaが採用されている。
歴史[編集]
Play FrameworkはZenexity社のソフトウェア開発者であるGuillaume Bortにより作成された[3]。しかしこの初期のリリースは外部には公開されておらず、インターネット上で確認できる最も古い情報は2007年5月のものである[4]。2007年になり、プレリリースバージョンが初めてZenexity社のサイトにて公開された[5]。
翌2008年5月になって、バージョン1.0の元となるコードがLaunchpadにて公開された[6] 1.0が完全にリリースされるのは、2009年10月のことである[7]。
その後LaunchpadからGitHubへの移行を経て、2010年11月にPlay 1.1がリリースされた。1.1ではコンポーネントがApache MINAからJBoss Nettyへと変更されており、またScala言語のサポートや、GlassFishコンテナへの対応、非同期Webサービスライブラリ、OAuth認証、HTTPSのサポートなどが行われた。[8]
2011年4月にリリースされたPlay 1.2では、依存性管理ツールであるApache Ivyが組み込まれるとともに、WebSocketのサポートや、DBマイグレーションの統合(ただしリバージョンは未対応[9])、H2 Databaseへの変更などが行われた[10]。
2011年後半にはPlay 2.0の開発に向けSadek Drobiが加わっている。2012年3月13日にリリースされた2.0[11]では、Scalaの開発環境であるTypesafe Stackと結びついている[12]。
2013年2月6日にリリースされたPlay 2.1では、Scalaが2.10へとアップデートされるとともに、モジュール化や新しいJSON API、フィルタ、それにRequireJSがサポートされた[13]。
2013年9月20日にリリースされたPlay 2.2では、SBTが0.13にアップデートされるとともに、バッファリングやgzip圧縮、それにいくつかのプラットフォーム用のパッケージングタスク(OS X (DMG), Linux (RPM, deb), Windows (MSI) など)がサポートされた
特徴[編集]
Play Frameworkは、Ruby on RailsとDjangoから大きな影響を受けた、これらと似た同種のフレームワークである。PlayのWebアプリケーションはJava環境で動作するが、Java標準のWebアプリケーション仕様であるJava EEの中核機能は必要としない。PlayはJava EEの仕様に準拠しないが、その代わりにJava EE準拠のプラットフォームと比較してシンプルに開発を行うことができる。[14]
Play Frameworkのアプリケーションは組み込みのNetty Webサーバーを使用して実行するよう設計されている。しかし、開発したアプリケーションをWARパッケージにまとめ、Java EEのアプリケーションサーバで動作させることも可能である。[15]
他のフレームワークとの比較[編集]
他のJavaフレームワークと比べると、以下のような特徴を持つ
- ステートレス: Play 2は完全にRESTfulである。Java EEのように接続ごとのセッションを利用しない。
- 自動テストの統合: JUnit, Seleniumのサポートを含む。
- 主に必要とされるAPIは標準で組み込まれている。
- 静的メソッド: コントローラの全ての開始点はstatic(Scalaの場合はfunction)として宣言する。ただしPlay 2.1以降はそれ以外の形式もサポートされている。
- 非同期IO: WebサーバーとしてNettyを使用することから、Playは非同期的に大きなリクエストを処理できる。この結果、HTTPスレッド数以上の処理を実行することができる。Java EEでは、Servlet 3.0までこうした非同期処理はサポートされていなかった。[16]
- モジュラー構造: RailsやDjangoのように、Playはモジュール構造を採用している。
- Scala言語のサポート: Play 2は内部的にScalaを使用しており、ScalaのAPIとJavaのAPI双方を公開している。Javaとも完全な互換性がある。
コンポーネント[編集]
Play 2.0はいくつかのJavaの一般的なライブラリを使用している。
- Netty: Webサーバー
- Anorm (Scala), Ebean (Java): データベースアクセス。ただしO/Rマッピングは必須ではない。
- Scala: テンプレートエンジン
- 組み込みのホットリローディング
- SBT: 依存性管理
Play Frameworkには以下のような機能が含まれている。
- RESTフレームワーク。
- CRUD: モデルオブジェクトをシンプルに更新するためのモジュール。
- Secure: 単純なユーザー認証を実現するモジュール。
- アノテーションを元としたバリデーションフレームワーク。
- ジョブスケジューラ。
- 簡単に使用できるSMTPメーラー。
- JSONとXMLの解析。
- JPAを元とした永続化層。
- 素早いデプロイメント/テストのための組み込みDB。
- 完全に組み込まれたテスティングフレームワーク。
- 自動的なファイルアップロード機能。
- 複数環境向けの設定。
- 機能を簡単に追加するためのモジュラー構造。
- OpenIDとWebサービスのクライアント。
導入事例[編集]
Play Frameworkのメーリングリストには9,000名を超える購読者が登録されている[17]。Playは地方政府や企業のイントラネット、モバイル向けWebサイトやOSSといった幅広いプロジェクトで使用されている。
2013年10月現在、Play FrameworkはGitHubにおける最も人気のあるScalaプロジェクトとなっている[18]。
また、いくつかの著名なWebサイトがPlay Frameworkを使用していることを明らかにしている[19]。
- LinkedIn: ビジネス特化型SNS。
- Coursera: オンライン学習[20]。
- http://www.scalacourses.com/ : オンライン学習。
- GENDI: GS1メンバー。
- Mashape
- セーヌ=エ=マルヌ県: フランスの地方自治体。
- Typesafe: Scalaの開発元Typesafe社のサイト[21]。
- http://live.gilt.com : ライブショッピング。
- http://process.st : SME市場のためのSaaS BPM製品。
- Sync Video: オンラインビデオ視聴のためのサービス。
- Prenser: ニュースメディアネットワーク。
- PeachDish: 食料品Eコマース。
2010年12月には、Play Frameworkを扱った初の電子書籍がリリースされた[22]。この書籍は後に紙媒体でも刊行されている。2011年8月には2冊目の書籍も刊行されている[23]。
2011年8月、クラウドコンピューティングプラットフォームのHerokuはPlayのアプリケーションをネイティブサポートすることを発表した[24]。これはGoogle App EngineにおけるPlay 1.0(Play 2.xではない)のモジュールベースでのサポート、Amazon Web Servicesでのドキュメントによるサポートに続くものであった[25]。
2013年7月には クラウドコンピューティングプラットフォームのJelasticも、Play 2を同環境で使用するためのチュートリアルを公開している[26]。
脚注[編集]
- ^ Playing with Play Framework for Java
- ^ Nicolas Leroux at Devoxx
- ^ guillaume bort ★ software designer
- ^ play-framework | Google Group
- ^ Play!
- ^ ~play-developers/play/1.0 : revision 1
- ^ Play framework - downloads
- ^ Play 1.1 -- Release notes
- ^ Community Contributed Extensions
- ^ Play 1.2 -- Release notes
- ^ Play 2.0 -- Philosophy
- ^ http://blog.typesafe.com/introducing-typesafe-stack-20
- ^ http://www.playframework.com/documentation/2.1.0/Highlights
- ^ Play! Framework Usability
- ^ Play Framework on JBoss AS 7
- ^ Play framework and async I/O
- ^ Play's Google Group
- ^ “GitHub: Search stars>1”. 2013年10月5日閲覧。
- ^ Testimonials
- ^ http://betacs.pro/blog/2013/08/03/deploying-play-apps/
- ^ Typesafe
- ^ Introducing the Play! Framework
- ^ Play Framework Cookbook
- ^ Play! on Heroku
- ^ Java development 2.0: Play-ing with Amazon RDS
- ^ Play 2 Framework on Jelastic
外部リンク[編集]
- Play Framework公式サイト (英語)
|
||||||||||||||||||

