Play Framework

Play Framework について



Play Frameworkは、ScalaJavaで記述されたオープンソースの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を使用し、ScalaJavaのAPIを公開しています。

コンポーネント



Play 2.0は、以下のJavaライブラリを使用しています。

Netty: Webサーバー
Anorm (Scala), Ebean (Java): データベースアクセス(O/Rマッピングは必須ではありません)
Scala: テンプレートエンジン
sbt: 依存性管理

Play Frameworkには、以下のような機能が含まれています。

RESTフレームワーク
CRUD: モデルオブジェクトを更新するためのモジュール
Secure: ユーザー認証モジュール
アノテーションベースのバリデーションフレームワーク
ジョブスケジューラ
SMTPメーラー
とXMLの解析
JPAをベースとした永続化層
組み込みDB
テスティングフレームワーク
自動ファイルアップロード機能
複数環境向けの設定
モジュラー構造
OpenIDWebサービスのクライアント

導入事例



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公式サイト (英語)

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。