最近Scalaの会社であるTypesafeのアナウンス によると、Play framework が Typesafe Stack 2.0に含まれ、2012年の2月にリリースされる予定である。Typesefe StackはScalaソフトウェアプラットフォームである。Typesefe Stackは、Scala言語、Akka ミドルウェア、開発ツール( Scala IDE for Eclipse、sbt、など)を100%オープンソースであるが、商用的にサポートされる1つのパッケージに入れたものだ。同時にPlayチームは Play framework 2.0のベータリリースをアナウンスした。 Play frameworkは、 Rails/Grailsのようなフレームワークで、元々ScalaでなくJavaにフォーカスしたものである。遂に Play framework 2.0はScalaとJavaを一級市民としてサポートする。
Typesafe Stackへのこの追加に関するプレスリリースで、Guillaume Bort と Martin Oderskyは、それぞれの成果物について彼らの思いを共有した。 Play frameworkの作成者であるGuillaume Bort 氏は、 「我々は、 Typesafeチームと開発することを楽しみにしています。最新のwebアプリケーションを作るのに、開発者に強力な新しい選択肢を提供することができます。」と、言った。 Typesafeの会長で、チーフアーキテクトであり、Scalaの作成者である Martin Odersky氏は、「Play frameworkは、JavaとScalaへの一級のサポートにより、生産性、パフォーマンス、スケーラビリティ、アプローチ性の素晴らしい組合せを提供します。」と、言った。TypesefeのCTOである Jonas Boner氏もTypesefe StackにPlayを追加したことについて話している。
InfoQは、Typesefeの社長かつCEOで、以前Red HatでVPだったDonald Fischer氏に、Play フレームワークを彼らが選んだことと、Play フレームワークがScalaを採用した決定についても話してもらった。
InfoQ: Typesafe Stackとは、何ですか?
Typesafe Stackは最新のソフトウェアプラットフォームで、開発者がスケーラブルなソフトウェアアプリケーションを作るのが、より簡単になります。Scalaプログラミング言語とAkkaミドルウェアから出来ていますが、次のリリースからPlay webフレームワークを含み、既存のJavaインフラとシームレスに統合する単純なパッケージに、堅牢な開発者向けツールが一緒になっています。
InfoQ:なぜ Typesafe StackにPlayフレームワークを追加するのですか?
Typesafe Stackでの目標は、開発者にあらゆる規模のソフトウェアアプリケーションを作成するのに、より良いツールを提供することです。実際のところ、今日のあらゆる重要な大規模なアプリケーションは、何らかのweb対応要素を持っていますし、しばしば体験のまさに中心になっています。なので、Scala言語やAkkaミドルウェアのような我々のスタックと上手く統合できるwebフレームワークを提供することが重要だ、と考えました。これは、プラットフォームにもっと仕事をさせて、開発者は楽をする、「単純にして、一生懸命働く」という我々の哲学と合致します。
InfoQ:以前、Play (バージョン 1.x) は、設計上非常にJava中心で、テンプレート化にはGroovyを使ってました。それには、JSPが一般的に使われ、Javaはコントローラとして使われてました。Scalaは、Play framework 1.x にはアドオンあるいは、後付け以上でした。Scalaが Play framework 2.0の重要な部分になったのは、いつで、なぜですか?Play framework 2.0 はいつリリースされるのですか?
Play frameworkの開発者とコミュニティは、バージョン1.1でScalaを実験し始めました。当初、それはJavaベースのフレームワークの外部モジュールとして作られましたが、徐々にScalaがPlayコアに基本的で、より良い機能を提供することが明らかになってきました。設計領域で余り妥協せずに複雑な問題を扱うのにScalaが役立つからです。なので、 Guillaume Bort氏とコミュニティは、Scalaのサポートを別モジュールから Play 2.0のコアに移すことに決めました。2.0は最初からプログラミング言語として、Scalaをネイティブサポートするように設計されます。
InfoQ:Play framework 2.0のリリースは、いつですか?
2012年の2月を目標にしています。興味のある人は、我々の進捗を http://www.playframework.org/2.0 で追えます。
InfoQ:なぜ Typesafe Stackの一部としてLift を入れなかったのですか?Liftは非常にScala中心で、かなり知られてますよね。
Playフレームワークは、Typesefe Stackに自然に合うようないくつもの特性を持っています。まず第一にユニークにアクセスできる開発者体験を持ち、 Ruby on Railsを連想させる「感じ」がありますが、スケーラブルなJVMプラットフォーム上で動きます。Railsのように、良く知られたMVC (model-view-controller) webアプリケーションモデルに従っていますので、他のMVCフレームワークで開発したことのある開発者には馴染みやすいです。最後に、 Play 2.0で始めれば、フレームワークはAkkaミドルウェアやsbt( simple build tool)を含むTypesefe Stackの他の部分と深く統合されています。すなわち、Liftや多くの他の人気のあるScala webフレームワーク、例えば Scalatra や Unfilteredは、アプリケーションや開発者の好みによっては、皆良い選択肢です。
InfoQ: なぜ、Play framework 2.0を含むTypesefe Stackは、 Grails + SpringSource STSや Spring MVC + SpringSource STSよりも良い選択となるのでしょうか?
Typesafe Stack を使えば、組織が大規模なwebトラフィック負荷、分散コンピューティング、データ処理のような複雑な問題を扱うのが非常に容易になり、しかもアーキテクチャをシームレスにスケールできます。Playフレームワークを使えば、開発者は多くの最新のフィーチャを利用できます。例えば、ラピッドアプリケーション開発、Coffeescript や LESSを使った組込みのJavaScript「コンパイル」、フォームヘルパー、非同期プロセシング、 actorメッセージング、データストリーミング、ORMサポートなどを使えます。これら全てをScalaとJavaの開発者の両方が使えます。これらの他に、我々はまた、Eclipse用のScalaプラグインを提供し、Scala言語をサポートします。
言うまでもなく SpringSourceはこの世界では非常に有名な名前であり、彼らの製品も素晴らしいですが、違ったトレードオフもあります。 SpringSource とTypesafe Stackは、一緒に使うことも出来ます。例えば、 Akka Spring Integration モジュールを使ってですね。
InfoQ: Play frameworkへの開発者の反応はどうですか?
2,3週間前に Play 2.0の最初のベータをリリースしましたが、これまでの反応は素晴らしく良いです。
InfoQ: Play Framework 2.0はScalaで書かれていますか?もしそうなら、なぜそしてどのような経緯でですか?
そうです、 Play 2.0は主にScalaで書かれています。しかし既に申し上げたように、Playは素晴らしいJava APIも提供しています。その部分はJavaで実装されています。純粋のJava開発者の見地からすれば、それは本当に実装の詳細にすぎません。
Scalaが選ばれた主な理由は、Scalaを使うと多くの概念を論理的に考えるのがずっと容易になるからです。例えば、Playはリアクティブ プログラミングと呼ばれるアイデアを実装しています。このフィーチャのお蔭で、コントロールが必要な時に持つことができますので、例えばInputStreamが終わるのを待つ必要がありません。データをまとめて処理できます。このフィーチャによって、非同期処理、Cometプッシュ、ストリーミングをサポートするwebアプリケーションを書くことができます。他の例としては、Akka actorを使ってPlayはcontrollerの結果を送ることができます。PlayのようにAkkaは素晴らしいJava APIを持ってますが、Scalaから使うほうがずっと簡単で表現豊かです。最後にScalaを使えば、trait, 型クラス, パターンマッチング、 部分関数 を使って、綺麗で簡単にコンポーネントを組み上げることができるので、グローバル状態をほぼ無くすことができます。