Javaフレームワーク「Play Framework」でWeb APIを作成する(1)

普段のお仕事に役立つ普遍的なプログラミングTIPSや、業界で注目度が高い最新情報をお届けする「編集部ピックアップ」。
今回はJavaのWebアプリケーションフレームワーク「Play Framework」の開発環境を構築し、Web APIを作成する方法についてお届けします。

Play Frameworkは「Java」と「Scala」を使って作られたWebフレームワークです。「Ruby on Rails」や「Django」と同じくMVC(Model-View-Controller)と呼ばれる設計モデルに基づいて、Webアプリ開発を素早く行うことができるという特徴があります。

今回の記事では、「Play Framework 2.8」での開発環境の構築、Play FrameworkでのWeb APIの作成方法をご紹介します。

Javaと環境変数の設定

Play Framework使った開発環境の構築の前に、前準備としてJavaのインストールと環境変数の設定を行います。

JDKのインストール

「JDK(Java Development Kit)」はオラクル社が提供するJavaアプリケーション用のソフトウェア開発キットです。以下のページからJDKのダウンロードを行ってください。JDKの最新版はJava SE 16.0.1ですが、Play Framework 2.8との互換性がないため、一つ前のバージョンJava SE 11.0.11をダウンロードしてください。
※ JDKのダウンロードにあたっては、Oracleアカウントの登録(無料)が必要です。

環境変数の設定

JDKのインストールが完了したら、コマンドラインベースの円滑な作業や、今後異なるJDKに簡単に切り替えが行えるように環境変数にJAVA_HOMEの設定を行った上でPATHを設定します。

PATHの設定やJAVA_HOMEの設定は環境変数の設定画面で行います。

Windows 10の環境で環境変数の設定を行うには、コントロールパネルの「システム」画面で[システムの詳細設定]を選択し、表示された「システムのプロパティ」画面にある[環境変数]のボタンをクリックします。他のアプリケーションがJavaを利用する際にJAVA_HOMEという環境変数に設定されている値を参照してJDKがインストールされているディレクトリを探す場合があります。そのため、JAVA_HOMEにJDKをインストールしたディレクトリを設定しておきます。

環境変数の設定1

次に、システム環境変数にあるPathを選択して、[編集]ボタンをクリックすると「環境変数名の編集」画面が表示されますので、[新規]ボタンをクリックして「%JAVA_HOME%\bin」を入力して下さい。

環境変数の設定2

Windowsのスタートメニューからコマンドプロンプトを起動し、以下のコマンドを入力します。

javac -version

コンソール上に「javac 11.0.11」と表示されればPATHの追加は無事完了しています。

SBTとEclipseによる開発環境の構築

ここからはPlay Framework使った開発環境の構築を行っていきます。以下の手順に沿って、開発で使用するSBTとEclipseによる開発環境を準備します。

SBTのインストール

「SBT(Simple Build Tool)」は、Java、Scala等をサポートしているビルドツールです。Play Frameworkにも対応しており、動作に必要となるため、以下のページからSBTのダウンロードをしてインストールします。

中央の一覧から[sbt-1.3.13.msi]をクリックしてダウンロードします。SBTの最新版はSBT1.5.4となりますが、Play Framework 2.8と互換性のあるJava SE 11.0.11をサポートしているSBT1.3.13を使用します。

Playプロジェクトの作成

SBTのインストールが完了したらPlay Frameworkを使ったプロジェクトを作成します。

Playプロジェクトを格納する場所を作成し、コマンドプロンプトを起動して作成した場所に移動してください。今回は「C:\Play\Project」に新規プロジェクトを作成します。
Play FrameworkはJavaとScalaを使用できますが、今回はJavaを使ったWebアプリケーション開発を行いますので、以下のコマンドを実行します。

sbt new playframework/play-java-seed.g8

実行後、しばらくして「This template generates a Play Java project」というメッセージが表示されます。プロジェクトファイル名とオーガニゼーション名(組織名)を入力してください。今回はプロジェクト名を「PlayProj」、オーガニゼーション名を「PlayProjOZ」として設定します。

name [play-java-seed]:PlayProj
organization [com.example]:PlayProjOZ

完了すると指定した場所にPlayプロジェクトが作成されます。

新規プロジェクトの作成
作成されたプロジェクト

Playプロジェクトの実行

作成したプロジェクトが動作させてみます。動作確認の前に「C:\Play\Project\playproj\project\build.properties」を開き、SBTのバージョンを確認してください。sbt.versionに1.5.2が設定されている場合は、インストールしたSBTバージョンと合わせるために1.3.13に変更します。

sbt.version=1.3.13

コマンドプロンプトから先ほど作成したPlayプロジェクトにcdコマンドで移動し、以下のコマンドで実行してください。

sbt run

「Server started, use Enter to stop and go back to the console…」が表示されたらサーバが起動状態となっています。この状態のまま、ブラウザから「http://localhost:9000」にアクセスすると、Webページに「Welcome to Play!」が出力されます。

Playプロジェクトの起動

Eclipseによる開発環境の構築

ここまでの準備でPlay Frameworkを使用した実行環境の構築は行えましたが、デバッグ実行などよりアプリケーション開発をやりやすくするために、Eclipseにて開発を行う方法を紹介します。PlayプロジェクトをEclipse対応のプロジェクトにするにはsbteclipseというプラグインを使う必要があります。「project/plugins.sbt」に追加するプラグインを追記してください。

addSbtPlugin("org.foundweekends.giter8" % "sbt-giter8-scaffold" % "0.11.0")
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.2.4")
addSbtPlugin("com.typesafe.sbt" % "sbt-play-ebean" % "5.0.2")

Scalaをインストールせず、プロジェクトにJavaソースのみを含める場合は、「build.sbt」に以下を追記します。

EclipseKeys.preTasks := Seq(compile in Compile)
EclipseKeys.projectFlavor := EclipseProjectFlavor.Java
EclipseKeys.createSrc := EclipseCreateSrc.ValueSet(EclipseCreateSrc.ManagedClasses, EclipseCreateSrc.ManagedResources)

設定が完了したら、コマンドプロンプトより以下のコマンドを実行してEclipseから読み込みが行えるようにします。

sbt eclipse

上記コマンドを実行することで「plugins.sbt」に記述したプラグインを追加できます。今後プラグインの追加を行う場合も使用するコマンドとなります。

次にEclipseのダウンロードを行います。以下のページから最新版Eclipse 2021(Windows 64bit Standard Edition)をダウンロードしてください。

ダウンロードが完了したら「..\pleiades\eclipse\eclipse.exe」を実行し、ワークスペースの指定を行います。今回は「C:\Play\Workspace」を指定して作成します。Eclipseが起動したら以下の手順でPlayプロジェクトをインポートします。

  1. Eclipseの[ファイル]メニューで[インポート]を選択します
  2. [一般]>[既存プロジェクトをワークスペースへ]を選択します
  3. 「ルート・ディレクトリーの選択」で作成したPlayプロジェクトを選択します。今回は「C:\Play\Project\playproj」を指定し[完了]ボタンでプロジェクトをインポートします
Playプロジェクトのインポート

Playプロジェクトをインポートすると、Eclipse上でコンパイルエラーが表示される場合があります。

コンパイルエラー

このままでもプロジェクトを実行できますが、Javaクラスファイルが格納される「target/scala-2.13/classes」フォルダへのパスを通すとエラー表示を解消できます。エラーが消えない場合は、targetフォルダやその配下のフォルダを右クリックして[リフレッシュ]を行ってください。

  1. 「PlayProj」を右クリックし[ビルド・パス]>[ビルド・パスの構成]を選択します。
  2. [ライブラリー]タブの[クラスパス]を選択して[クラス・フォルダーの追加]ボタンをクリックします。
  3. [target/scala-2.13/classes]を選択して[OK]ボタンをクリックし、[適用して閉じる]ボタンで適用します。

デバッグ実行の設定

次にEclipse上でデバック実行ができるように以下の設定を行います。

  1. 「PlayProj」を右クリックし[デバッグ]>[デバッグの構成]を選択します。
  2. [リモートJavaアプリケーション]を右クリックし[新規]を選択します。
  3. ポートに「9999」を設定し、[適用]をクリックします。

設定が完了したらコマンドプロンプトで以下のコマンドを実行します。

sbt -jvm-debug 9999 run

サーバ起動後、Eclipse側で[デバッグの構成]から[リモートJavaアプリケーション]に作成した[PlayProj]を選択し、[デバッグ]を実行することでデバッグ実行状態となります。

デバッグの実行

正常にデバッグが実行できるか確認してみます。
「app/views/index.scala.html」にある「<h1>Welcome to Play!</h1>」を「<h1>Welcome to Play!(Edit)</h1>」に変更し、「app/controllers/HomeController.java」の「return ok(views.html.index.render());」にブレークポイントを設定します。

この状態のまま、ブラウザに「http://localhost:9000」とURLを入力すると、デバック実行モードに移行し、先ほど設定したブレークポイントでプログラム実行が一時停止し、バグの調査や処理のトレースが可能になります。

ブレークポイントの設定

続けて実行を行うことで先ほど変更した「<h1>Welcome to Play!(Edit)</h1>」が反映されていることも確認できます。

編集したViewの表示

このように通常であればプログラム変更後、サーバを再起動しないと反映されない処理も、Play Frameworkではサーバを起動した状態でソースコードの変更、反映を行うことができますので開発を素早く行うことが可能です。

おわりに

以上がPlay Framework 2.8での開発環境の構築方法でした。後半の記事ではこちらの環境を用いて、Play FrameworkでWeb APIを作成する方法をご紹介します。