ねこじゃすり
猫を魅了する魔法の装備品!
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
レッドブル エナジードリンク 250ml×24本
翼を授けよう!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
MOFT X 【新型 ミニマム版】 iPhone対応 スマホスタンド
Amazon一番人気のスマホスタンド!カード類も収納出来てかさ張らないのでオススメです!
スポンサーリンク
目次
PlayFrameworkプロジェクトを生成しよう
とある案件で、PlayFrameworkプロジェクトを作成する必要が出てきました。
筆者的にはSpringBoot信者なので、PlayFrameworkについては知見が無かったので良い機会なので良い勉強になればと実際に行なった作業をまとめてみようと思います。
The High Velocity
Web Framework
For Java and ScalaPlay Framework – Build Modern & Scalable Web Apps with Java and Scala
作り方
Homebrewでsbtのインストール
まずはhomebrewからsbtをインストールしましょう。
sbtとはビルドツールの一つで、Gradleと同じ立場のツールと言えます。
基本的にPlayFrameworkでは、sbtを使ってビルドや実行を行う事になります。
1 2 3 4 5 6 7 8 9 10 |
==> Installing sbt ==> Downloading https://github.com/sbt/sbt/releases/download/v1.3.8/sbt-1.3.8.tgz ==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/279553/5f99d580-46ba-11ea-9a43-f963361b7978?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200221%2Fus-east-1%2Fs3%2Faws4_req ######################################################################## 100.0% ==> Caveats You can use $SBT_OPTS to pass additional JVM options to sbt. Project specific options should be placed in .sbtopts in the root of your project. Global settings should be placed in /usr/local/etc/sbtopts ==> Summary 🍺 /usr/local/Cellar/sbt/1.3.8_1: 801 files, 61MB, built in 2 minutes 51 seconds |
プロジェクトの作成
Scalaの場合
sbt new playframework/play-scala-seed.g8
Javaの場合
sbt new playframework/play-java-seed.g8
今回はJavaで作成する要望なのでこちらで作業を進めていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
[info] Fetched artifacts of [info] Set current project to withgradle (in build file:/Users/blogenist/work/play/) [info] Set current project to withgradle (in build file:/Users/blogenist/work/play/) [info] downloading https://repo1.maven.org/maven2/org/scala-sbt/sbt-giter8-resolver/sbt-giter8-resolver_2.12/0.11.0/sbt-giter8-resolver_2.12-0.11.0.jar ... [info] downloading https://repo1.maven.org/maven2/com/github/scopt/scopt_2.12/3.7.0/scopt_2.12-3.7.0.jar ... [info] downloading https://repo1.maven.org/maven2/org/foundweekends/giter8/giter8_2.12/0.11.0/giter8_2.12-0.11.0.jar ... [info] downloading https://repo1.maven.org/maven2/org/apache/commons/commons-compress/1.6/commons-compress-1.6.jar ... [info] downloading https://repo1.maven.org/maven2/org/tukaani/xz/1.4/xz-1.4.jar ... [info] [SUCCESSFUL ] com.github.scopt#scopt_2.12;3.7.0!scopt_2.12.jar (603ms) [info] [SUCCESSFUL ] org.scala-sbt.sbt-giter8-resolver#sbt-giter8-resolver_2.12;0.11.0!sbt-giter8-resolver_2.12.jar (718ms) [info] [SUCCESSFUL ] org.foundweekends.giter8#giter8_2.12;0.11.0!giter8_2.12.jar (972ms) [info] [SUCCESSFUL ] org.tukaani#xz;1.4!xz.jar (1072ms) [info] [SUCCESSFUL ] org.apache.commons#commons-compress;1.6!commons-compress.jar (1312ms) This template generates a Play Java project name [play-java-seed]: java-sample organization [com.example]: jp.blogenist Template applied in /Users/blogenist/work/play/./java-sample |
実行
これでプロジェクトのベース作成は完了です!
試しにsbt run
コマンドを実行してみてください。
1 2 3 4 5 |
-- (Running the application, auto-reloading is enabled) --- [info] p.c.s.AkkaHttpServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 (Server started, use Enter to stop and go back to the console...) |
すると、上記のログが出力されhttp://localhost:9000/ にアクセスすると画面が表示されます。
とても簡単ですね!
生成ディレクトリ構造
ディレクトリ構成はこのような形になりました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
. ├── app │ ├── controllers │ │ └── HomeController.java │ └── views │ ├── index.scala.html │ └── main.scala.html ├── build.sbt ├── conf │ ├── application.conf │ ├── logback.xml │ └── routes ├── logs │ └── application.log ├── project │ ├── build.properties │ ├── plugins.sbt │ ├── project │ │ └── target │ └── target │ ├── config-classes │ ├── scala-2.12 │ └── streams ├── public │ ├── images │ │ └── favicon.png │ ├── javascripts │ │ └── main.js │ └── stylesheets │ └── main.css ├── target │ ├── scala-2.13 │ │ ├── classes │ │ ├── routes │ │ ├── twirl │ │ └── update │ ├── streams │ │ ├── _global │ │ ├── compile │ │ ├── runtime │ │ └── web-assets │ └── web │ ├── classes │ └── public └── test └── controllers └── HomeControllerTest.java 32 directories, 14 files |
JUnitテストの実行方法
sbtコマンドでPlayFrameworkプロジェクトを作成すると、JUnitを用いたテストクラスのサンプルも自動生成されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
package controllers; import org.junit.Test; import play.Application; import play.inject.guice.GuiceApplicationBuilder; import play.mvc.Http; import play.mvc.Result; import play.test.WithApplication; import static org.junit.Assert.assertEquals; import static play.mvc.Http.Status.OK; import static play.test.Helpers.GET; import static play.test.Helpers.route; public class HomeControllerTest extends WithApplication { @Override protected Application provideApplication() { return new GuiceApplicationBuilder().build(); } @Test public void testIndex() { Http.RequestBuilder request = new Http.RequestBuilder() .method(GET) .uri("/"); Result result = route(app, request); assertEquals(OK, result.status()); } } |
sbt testで実行出来ます。
1 2 3 4 5 6 7 8 |
[info] Loading global plugins from /Users/blogenist/.sbt/1.0/plugins [info] Loading settings for project java-sample-build from plugins.sbt ... [info] Loading project definition from /Users/blogenist/sample/java-sample/project [info] Loading settings for project root from build.sbt ... [info] Set current project to java-sample (in build file:/Users/blogenist/sample/java-sample/) [info] Compiling 1 Java source to /Users/blogenist/sample/java-sample/target/scala-2.13/test-classes ... [info] Passed: Total 1, Failed 0, Errors 0, Passed 1 [success] Total time: 4 s, completed 2020/02/21 20:55:43 |
終わりに
以上のようにわずか数分でPlayFramework2.7の環境が整いました。
Springに勝るとも劣らないJavaフレームワークなので、気になる方は勉強してみてはいかがでしょうか♪