支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡


Play Frameworkの概要

アプリケーションを開発する際において、フレークワークに関する知識はエンジニアにとって非常に 重要であることは間違いありません。 ソフトウェア開発の現場において、フレームワークは必要なシステム要件を満たすことができる機能を搭載している ことが前提となるため、幅広いフレームワークの知識や知見を保有していることで、 エンジニアとして活躍する機会が広がるでしょう。 また、フレームワークに関する基礎的な考え方や歴史を学ぶことでエンジニアとしての知見も広がり、 テクノロジーの変化に柔軟に対応することが可能になります。 ここでは、Javaのフレームワークとして有名なPlay Frameworkについて説明させていただきます。

Play Frameworkは2007年にZenexity社の内部プロジェクトとして開発の歴史がスタートしました。 Play Frameworkは開発者の生産性向上を重要な課題ととらえ、設計が行われたフレークワークとなります。 そもそもの考え方としては、JavaのWwbアプリケーション開発における際の手順の複雑さや手間を課題に感じ、気軽に高速に開発を実行するという点が根本に存在します。 もう少し具体的に説明させていただくと、当時のJavaのフレームワークはSpringやSeasar2が主流であり、 DIコンテナ・ORマッパー・MVCといったテクノロジーが標準的でした。 これらは非常に優れた技術であり、現在のデファクトスタンダードとも言えるテクノロジーですが、 その一方で開発のために手間がかかることや学習コストがかかるなどの面も指摘されておりました。 このような開発者にとっての課題を解決するために生まれたのがPlay Frameworkであり、 Play Frameworkの開発に大きな影響を与えたのは、Ruby on Railsであることはよく知られております。 Ruby on RailsはオープンソースのWebアプリケーションフレームワークであり、 他のフレームワークと比較した際に、少ないコードで簡単に開発を行うことができるように設計されている 点が大きな特徴と言えます。 Railsの基本理念である「同じことを繰り返さない」(DRY:Don't Repeat Yourself)と「設定より規約」(CoC:Convention over Configuration) は有名でありPlay Frameworkの設計において大きな影響を与えました。 Play Frameworkはコンパイルの手間が非常に少なく高速にかつ簡単に開発ができるという点が最大の特徴となります。 また、Scala言語もサポートしていることや豊富なライブラリを搭載していることもメリットと言えるでしょう。 Play Frameworkは上記のような特徴をもつため、小規模~中規模の開発に特に相性がよく、これからJavaを学習するエンジニアにとっても 理解しておきたいフレームワークの一つです。 ここからPlay Frameworkについて詳しく解説させていただきますので、参考にしていただけましたら幸いです。

Play Frameworkの歴史について

Play Frameworkの歴史は2007年にZenexity社によりスタートします。 2008年になって、バージョン1.0の元となるコードがLaunchpadにて公開され2009年にリリースされます。 2021年の現在の最新バージョンは2.8となります。 メジャーリリースであるPlay 2.3のバージョンアップでは playコマンドがTypesafe Activatorに切り替わったことやフレークワーク機能の追加があげられます。 また、Scala 2.11(Scala 2.10も含む)のサポートとJava8開発のためのAPI改善なども実施しました。 Play 2.4のバージョンアップでは依存性注入(DI)やJava8への移行などを実施しました。

Play2.8について

Play2.8のバージョンアップについて説明させていただきます。 Play2.8のバージョンアップにおいては、Java11のサポートを開始しました。 Play、そのスタンドアロンモジュール、サンプル、およびシードはすべて、AdoptOpenJDK8および11に対してテストされていると発表がありました。 また、Akkaとの関係性におけるサポートの機能も追加されました。 Akkaとは、Actorによる並列処理を行う為のライブラリのことを指し、 Lightbend社のCTO Jonas Bonér氏によってErlangからインスピレーションを受け開発された経緯を持ちます。2010年にAkka 1.0、2012年にAkka 2.0とバージョンアップを 行っております。 AkkaにはScalaとJavaのAPIがあり、並列処理、分散処理を容易に記述する事が可能です。 AkkaはPayPalのような大規模な決済システムを必要とする企業ややCapital Oneのような伝統的な歴史を持つ銀行にも導入されており、 リアクティブシステムの構築にAkkaを利用することで大規模システムのモダナイゼーション(最新化)を実現しており 多くの実績を誇ります。 Akkaについての技術的な説明はここでは割愛させていただきます。 また、その他の大きな機能追加について何点か紹介させていただきます。 「範囲結果の事前検索ソースをサポートする」「ビルドの追加」「Langcookieの最大年齢設定」「gzipフィルターのしきい値」 などの機能追加と改善を実行しました。

Play Frameworkのメリット

Play Frameworkのメリットについてポイントを3つに絞り紹介させていただきますので、参考にしてみてください。

高速開発

Play Frameworkのメリットの一点目が高速開発となります。 すでに本文で説明させていただいたように、 Play Frameworkは従来のSpringやSeasar2といったフレークワークと比較して 軽量で高速な開発が実行できるように設計されたという経緯があります。 特にコンパイルの手間が不要であることは、開発速度に大きな影響を与えます。 開発者の生産性を高めることで、開発速度が求められるプロジェクトや頻繁に 変更が求められるプロジェクトにおいて柔軟性を発揮することが可能です。

Scala

Play Frameworkのメリットの二点目が Scala言語のサポートとなります。 従来フレークワークは一つの言語をサポートする形が一般的となりますが、 Play FrameworkにおいてはJavaだけでなくScalaもサポートします。 また、Play 1.xにおいてはPlay用モジュールを用いればScalaでの開発が可能でしたが、 完全な統合という形では実現しなかったようです。 Play 2.0以降はコアに移行してScalaをネイティブサポートするようにAPIも再設計され、 ネイティブサポートを可能にしております。

テンプレートエンジン

Play Frameworkのメリットの三点目がテンプレートエンジニアとなります。 Play 1.xでは、テンプレートエンジン「Groovy」 Play 2.0ではViewでScalaベースのテンプレートエンジン を導入しておりコンパイルの遅さや手間という課題に取り組んでおります。

Play Frameworkの特徴

すでに本文で説明させていただいたように、 Play Frameworkは生産性向上と開発の手間を省くことをベースに設計が行われました。 Play Frameworkの特徴について機能面や技術面からポイントを3つに絞り紹介させていただきますので、 参考にしてみてください。

コンパイル

Play Frameworkの特徴の一点目がコンパイルとなります。 Play Frameworkを利用して開発を行う場合アクセス時にコンパイルが実行され、修正した箇所が 反映される形となり、コンパイルの手間が省けます。 コンパイルは人間が記述したソースコードをコンピュータが理解できるようにバイナリコードに変換する作業 ですが、ここでは説明は割愛させていただきます。 Play Frameworkにおける自動的なコンパイルは大きな特徴と言えるでしょう。

テスト

Play Frameworkの特徴の二点目がテストとなります。 Play Frameworkにおいてはブラウザからテストを実行でき、 Seleniumを利用することができる点も特徴としてあげられます。

ビュー

Play Frameworkの特徴の三点目がビューとなります。 JSPは使用せず、htmlとGroovyを組み合わせて使用します。 Groovyの言語仕様はJavaベースであるため、 Javaエンジニアであれば問題なく利用可能あると 同時に、スクリプト言語として大幅に簡易化されたソースコードの記述が可能です。 Goovyはオブジェクト指向スクリプト言語Rubyから大きく影響を受けている 言語であることはよく知られております。

まとめ

いかがでしたでしょうか? Play Frameworkについて解説させていただきましたので、参考にしていただけましたら幸いです。