Play Framework について
Play Frameworkは、
Scalaと
Javaで記述されたオープンソースの
Webアプリケーションフレームワークです。Model-View-Controller(MVC)アーキテクチャを採用しており、設定よりも規約を重視するアプローチや、ホットリローディング、ブラウザ上でのエラー表示といった機能によって、開発者の生産性を高めることを目的としています。
歴史
Play Frameworkは、Zenexity社の
ソフトウェア開発者であるGuillaume Bort氏によって作成されました。初期のリリースは公開されていませんでしたが、
2007年5月には最初の情報が確認できます。
2007年にはプレリリースバージョンがZenexity社のサイトで公開され、
2008年5月にはバージョン1.0の元となるコードがLaunchpadで公開されました。
2009年10月にはバージョン1.0が正式にリリースされました。
その後、Launchpadから
GitHubへの移行を経て、
2010年11月にPlay 1.1がリリースされました。このバージョンでは、コンポーネントがApache MINAからJBoss Nettyに変更され、
Scala言語のサポート、
GlassFishコンテナへの対応、非同期
Webサービスライブラリ、
OAuth認証、
HTTPSのサポートなどが導入されました。
2011年4月にリリースされたPlay 1.2では、依存性管理ツールとしてApache Ivyが組み込まれ、
WebSocketのサポート、DBマイグレーションの統合(ただしリバージョンは未対応)、H2 Databaseへの変更などが行われました。2011年後半にはSadek Drobi氏がPlay 2.0の開発に加わり、
2012年3月13日にリリースされた2.0では、
Scalaの開発環境であるTypesafe Stackとの連携が強化されました。
2013年2月6日にリリースされたPlay 2.1では、
Scalaが2.10にアップデートされ、
モジュール化、新しい API、フィルタ、RequireJSがサポートされました。
2013年9月20日にリリースされたPlay 2.2では、sbtが0.13にアップデートされ、
バッファリング、gzip圧縮、OS X (DMG),
Linux (RPM, deb), Windows (MSI) など、いくつかのプラットフォーム向けのパッケージングタスクがサポートされました。
2021年10月20日、これまで中心的に開発していたLightbend社がPlay Frameworkの開発から撤退することを発表しました。2023年10月25日には、Play Framework 3.0.0がリリースされました。このバージョンでは、2.xまで使用されていたAkkaが、オープンソースでなくなったため、AkkaからフォークしたApache Pekkoに切り替えられました。
特徴
Play Frameworkは、
Ruby on Railsや
Djangoから大きな影響を受けており、これらのフレームワークと類似した特徴を持っています。PlayのWebアプリケーションは
Java環境で動作しますが、
Jakarta EEの中核機能は必要としません。Playは
Jakarta EEに準拠せず、代わりに
Jakarta EE準拠のプラットフォームよりもシンプルに開発を行うことができます。
Play Frameworkのアプリケーションは、組み込みのNetty Webサーバーを使用して実行するように設計されています。しかし、WARパッケージにまとめて
Jakarta EEの
アプリケーションサーバーで動作させることも可能です。
他のフレームワークとの比較
他の
Javaフレームワークと比較すると、Play Frameworkは以下のような特徴を持ちます。
ステートレス: Play 2は完全にRESTfulであり、接続ごとの
セッションを利用しません。
自動テストの統合:
JUnitやSeleniumのサポートが含まれています。
標準APIの組み込み: 必要なAPIは標準で組み込まれています。
静的メソッド: コントローラの開始点はstaticとして宣言します(Play 2.1以降は他の形式もサポート)。
非同期IO: Nettyを使用しているため、非同期的に大きなリクエストを処理できます。
モジュラー構造: Railsや
Djangoと同様の
モジュール構造を採用しています。
Scala言語のサポート: Play 2は内部的に
Scalaを使用し、
Scalaと
JavaのAPIを公開しています。
コンポーネント
Play 2.0は、以下の
Javaライブラリを使用しています。
Netty: Webサーバー
Anorm (
Scala), Ebean (
Java):
データベースアクセス(O/Rマッピングは必須ではありません)
Scala:
テンプレートエンジン
sbt: 依存性管理
Play Frameworkには、以下のような機能が含まれています。
RESTフレームワーク
CRUD: モデルオブジェクトを更新するための
モジュール
Secure: ユーザー認証
モジュール
アノテーションベースのバリデーションフレームワーク
ジョブスケジューラ
SMTPメーラー
とXMLの解析
JPAをベースとした永続化層
組み込みDB
テスティングフレームワーク
自動ファイルアップロード機能
複数環境向けの設定
モジュラー構造
OpenIDと
Webサービスのクライアント
導入事例
Play Frameworkのメーリングリストには9,000名を超える登録者がおり、地方政府、企業
イントラネット、モバイルWebサイト、OSSなど、幅広いプロジェクトで利用されています。
2013年10月現在、
GitHubで最も人気のある
Scalaプロジェクトとなっています。
Play Frameworkを利用している著名なWebサイトとして、以下のようなものがあります。
LinkedIn: ビジネス特化型SNS
Coursera: オンライン学習プラットフォーム
http://www.scalacourses.com/: オンライン学習サイト
GENDI:
GS1メンバー
Mashape
セーヌ=エ=マルヌ県:
フランスの地方自治体
Typesafe:
Scalaの開発元
http://live.gilt.com: ライブショッピングサイト
http://process.st: SaaS BPM製品
Sync Video: オンラインビデオ視聴サービス
Prenser: ニュースメディアネットワーク
PeachDish: 食料品Eコマース
2010年12月には、Play Frameworkに関する初の
電子書籍がリリースされ、後に紙媒体でも刊行されました。2011年8月には2冊目の書籍も刊行されました。
2011年8月には、
HerokuがPlayアプリケーションのネイティブサポートを発表しました。Google App EngineでのPlay 1.0の
モジュールベースサポート、
Amazon Web Servicesでのドキュメントサポートに続くものでした。
2013年7月には、JelasticもPlay 2を同環境で使用するためのチュートリアルを公開しました。
外部リンク
Play Framework公式サイト (英語)