Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

ScalaのWebアプリケーションフレームワーク「Play Framework」入門
~(2)CRUD操作を行うWebアプリケーションの作成 前編

近未来の技術トレンドを先取り! 「Tech-Sketch」出張所 第13回

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2014/06/18 14:00

 本連載ではTIS株式会社が提供している技術ブログ「Tech-Sketch」から「コレは!」というテーマをピックアップし、加筆修正して皆様にお届けしております。今回は、Play2でデータベースにCRUD操作を行う簡単なWebアプリケーションを作る方法を取り上げます。

目次

 前回の『ScalaのWebアプリケーションフレームワーク「Play Framework」入門~(1)環境構築とスタートアップアプリの作成』ではPlay2の環境構築方法とスタートアップアプリについて紹介しました。この環境を元にデータベース(以下、DB)にCRUD操作を行う簡単なWebアプリケーションを作る方法を、2回にわたってステップ・バイ・ステップで紹介していきます。作成するアプリケーションは「イベントの情報」を登録・検索・更新・削除する「イベント管理アプリ」です。

 DBはすぐに使えるH2Database(以下、H2)を利用し、DBへのアクセスはSlickを利用することにします。事前準備としてライブラリのバージョンアップとDBスキーマの生成やH2とSlickを使うための設定を行った後、今回は「C:登録機能」を作成し、次回に「R:参照機能」、「U:更新機能」、「D:削除機能」を順に作成していきます。

開発前の準備

(1)ライブラリのバージョンアップ

 執筆時点ではPlay2の最新バージョンは「2.3.0」なので、前回構築した環境をバージョン「2.3.0」で再構築しておくことにします。今回利用するライブラリのバージョンは次のとおりです。

ライブラリ バージョン
Scala 2.11.1
Play2 2.3.0
Slick 2.1.0-M2
Bootstrap 3.1.1

 Play2は「2.3.0」から環境構築方法が少し変わります。前回記事で紹介したように、以前のバージョンでは「play new」などのPlayコマンドでアプリケーションの環境を構築しましたが、本バージョンからPlay2は「Typesafe Activator」とセットで提供されるようになりActivatorコマンドを利用することになります。基本的な流れは同じなので簡単に紹介します。

 ダウンロードサイトからZipファイル「typesafe-activator-1.2.2-minimal.zip」をダウンロードし、任意のディレクトリに展開します。筆者は「C:\pleiades\activator\activator-1.2.2」としました。Activatorコマンドを利用できるように展開したディレクトリを環境変数の「Path」に追加しておきます。

 アプリケーションの作成は「activator new <アプリケーション名> <テンプレート名>」で行います。Typesafe Activatorには100種類以上のテンプレートが提供されており、作成するアプリケーションによって最も適したテンプレートを選択することができます。提供されているテンプレートは「TYPESAFE ACTIVATOR/TEMPLATES」で参照でき、コントリビュートすることも可能です。また、「activator new」コマンドで対話型でアプリケーション名などを指定することや、「activator ui」コマンドを使用してWebブラウザからテンプレートの選択などを行いアプリケーションを作成することもできます。

 今回は、ScalaでPlay2を用いたシンプルなアプリケーションを構築するため、「play-scala」というテンプレートを使用し、「activator new techApp play-scala」を実行します。プロキシ環境下で利用する場合は、ユーザディレクトリの「.activator」ディレクトリ配下に、次のような「activatorconfig.txt」を作成しておきましょう。

activatorconfig.txt(C:\Users\<ユーザ名>\.activator)

-Dhttp.proxyHost=<プロキシホスト名>
-Dhttp.proxyPort=<プロキシポート番号>
-Dhttp.nonProxyHosts="<プロキシ除外ホスト名>"

 Eclipseプロジェクトへの変換は「activator eclipse」、アプリケーションの実行は「activator run」をプロジェクトディレクトリで実行します。「activator」を実行するとActivatorのコンソール画面が起動し、さらに「help」コマンドを実行することでコンソール上で実行可能なコマンドを確認することができます。

 Play2に伴いScalaのバージョンも「2.11.1」にバージョンアップしました。前回記事ではEclipseに「2.10」向けのプラグイン「ScalaIDE for Eclipse」をインストールしましたので、以下のプラグインサイトを使用し、「2.11」版にアップデートしておきましょう。

(2)Slickライブラリの設定

 Play2のビルドは「sbt」で行われますので、ライブラリを使用するにはsbtのビルドスクリプトに依存関係を定義する必要があります。Slickを利用するため、プロジェクト直下にある「build.sbt」を編集し、依存関係を定義します。DBアクセスライブラリとして、デフォルトでは「Anorm」が定義されていますのでSlick("com.typesafe.slick" %% "slick" % "<バージョン>")に変更しておきましょう。

build.sbt

name := """techApp"""

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayScala)

scalaVersion := "2.11.1"

libraryDependencies ++= Seq(
  jdbc,
  "com.typesafe.slick" %% "slick" % "2.1.0-M2",
  cache,
  ws
)

 執筆時点のSlickの最新バージョンである「2.0.2」はScalaの「2.11」に対応しておりませんので、Latest Milestoneの「2.1.0-M2」を使用します。「libraryDependencies」にSlickへの依存設定を行いました。依存設定は「グループ名」%「アーティファクト名」%「リビジョン」の形式で設定します。「グループ名」%%「アーティファクト名」%「リビジョン」のように「グループ名」の後ろに「%」を2つ重ねるとアーティファクト名にScalaのバージョンが自動的に補完されます。今回使用しているScalaのバージョンは2.11.1なので、ダウンロードするSlickのアーティファクト名は「slick_2.11」です。sbtへのライブラリの設定が完了後、「activator」コマンドでコンソールを起動し、「eclipse source-with=true」を実行し、Eclipseのクラスパスファイル「.classpath」を再生成します。

(3)Eclipseプラグインのインストール

 今回利用するH2の起動・停止を行うためにEclipseのプラグインである「DBLauncher」をインストールしておきます(直接コマンドから起動する場合や、異なるツールで行う場合は、本プラグインのインストールは必要はありません)。「ヘルプ」->「ソフトウェアのインストール」を選択し「インストール」ウィンドウを表示します。作業対象に「 http://eclipse.seasar.org/updates/3.2/」を入力し、表示された一覧から「DBLauncher」を選択します。「次へ」を押下し、流れに沿ってインストール作業を完了させてください。

 次にEclipseからH2を利用するための設定を行います。H2のDBファイルを配備する任意のディレクトリを作成します。筆者はプロジェクト直下(techApp配下)に「data」というディレクトリを作成しました。続いて、プロジェクトのプロパティ(プロジェクトを右クリック->「プロパティ」を選択)からDBLauncherの設定をします。「H2データベースを使用」をチェックし、ベース・ディレクトリに先ほど作成したデータファイル配備用ディレクトリ(/techApp/data)を指定してください。

 インストールが完了したら、プラグインが利用できることを確認しておきましょう。パッケージ・エクスプローラーでプロジェクトを右クリックすると「H2」というメニューが追加されていますので、「H2サーバの起動」を選択するとH2が起動されます(「H2サーバの停止」で停止することができます)。

(4)DBスキーマの作成

 「イベント管理アプリ」で使用するDBスキーマを作成します。「イベント管理アプリ」で必要なテーブルは「EVENT」テーブルのみです。パッケージ・エクスプローラーでプロジェクトを右クリック、「H2」->「データベース・マネージャーの表示」の順に選択すると、Webブラウザ上でH2に対してSQLを実行することができます。以下のスクリプトを実行し「TECHAPP」スキーマと「EVENT」テーブルを作成しましょう。

DDLスクリプト

CREATE SCHEMA TECHAPP;
CREATE TABLE TECHAPP.EVENT (
  ID INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT,
  EVENT_ID VARCHAR(100) NOT NULL,
  EVENT_NM VARCHAR(100) NOT NULL
);

(5)DBへの接続設定

 DBへの接続設定は「application.conf」に行います。「Database configuration」欄にDBへの設定がコメントアウトされていますので、有効にし以下のように設定してください。

application.conf(/conf)

# Database configuration
# ~~~~~
# You can declare as many datasources as you want.
# By convention, the default datasource is named `default`
#
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:tcp://localhost:9092/demo;SCHEMA=TECHAPP"
db.default.user=sa
db.default.password=""

 先ほど作成したH2の「TECHAPP」スキーマへ接続するように設定します。JDBCドライバーに「org.h2.Driver」、DB接続URLには「jdbc:h2:tcp://localhost:9092/demo;SCHEMA=TECHAPP」を指定し、ユーザは「sa」、パスワードは「なし」とします。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 前出 祐吾(TIS株式会社)(マエデ ユウゴ)

    TIS株式会社 コーポレート本部 戦略技術センター所属。 これまで社内向けWebアプリケーションフレームワークの開発やJenkinsの活用を中心に様々な手段で開発の効率化を図ってきた。現在は、さらに革命的な効率化を目指し、Scalaを活用した次世代開発基盤の研究&開発に従事している。 システム開...

バックナンバー

連載:近未来の技術トレンドを先取り! 「Tech-Sketch」出張所

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5