SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

ScalaのWebアプリケーションフレームワーク「Play Framework」入門
~(1)環境構築とスタートアップアプリの作成

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

IntelliJ IDEAの場合

 IntelliJ IDEAを使用する場合も、Eclipseと同様にPlayコマンドでIDEAプロジェクトに変換することができますので、変換後にIDEAにインポートします。

(1)IDEAプロジェクトへの変換

 作成したアプリケーションをIDEAプロジェクトに変換します。

 「play idea」コマンドでIDEAプロジェクトへの変換することができますが、ソースコードを合わせて取得するためPlayコンソールから「idea with-source=true」を実行します。

 「play」コマンドでPlayコンソールを起動します。

 Playコンソールから「idea with-source=true」を実行します。

 IDEAプロジェクトに必要な以下のディレクトリが作成されました。

  • .idea
  • .idea_modules

 これで、IDEAからインポートしてアプリケーションの開発を行うことができます。

Play2スタートアップアプリ解説

 開発環境が整いましたので、Playのスタートアップアプリがどのように動いているか確認しておきましょう。

(1)アプリケーションの流れ

 Play2はMVCモデルに則り、「Model」「View」「Controller」に加え「routes」と呼ばれる設定ファイルにより構成されます。

 以下の図のように「routes」がリクエストURLを「Controller」にマッピングし、呼び出された「Controller」が「View」のテンプレートを表示します。スタートアップアプリでは「Model」は使用しません。

(2)ソースコードの解説

 順にソースコードを見ていきましょう。アプリケーションがアクセス可能なURLは、すべて「routes」に定義しています。

routes (/conf)
GET     /     controllers.Application.index

 「/」のGETリクエストを受けると「controllers.Application.index」が呼び出されます。controllersパッケージ内にあるApplicationオブジェクトのindexメソッドです。

[Controller] Application.scala (/app/controllers)
object Application extends Controller {

  def index = Action {
    Ok(views.html.index("Your new application is ready."))
  }

}

 indexメソッドは「Ok()」でHTTPステータスコード「200 OK」を返します。応答するHTMLは「views.html」パッケージの「index」オブジェクトによって、テンプレート「index.scala.html」から生成されます(※1)。

※1

 テンプレートを「xxx.html.index」の形式で作成しておくと、コンパイル時に「view.html」パッケージ配下に「xxx」オブジェクトが生成されます。

[View] index.scala.html (/app/views)
@(message: String)

@main("Welcome to Play") {

    @play20.welcome(message)

}

 「@(message: String)」でindexメソッドから「"Your new application is ready."」というString型のメッセージを変数「message」に受け取ります。「@main(main.scala.html)」と「@play20.welcome(play20/welcome.scala.html(※2)」を呼び出しています。

※2

 「play20/welcome.scala.html」は、Playのライブラリ(play_2.10.jar)に含まれます。

[View] main.scala.html (/app/views)
@(title: String)(content: Html)

<!DOCTYPE html>

<html>
    <head>
        <title>@title</title>
        <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")">
        <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")">
        <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"></script>
    </head>
    <body>
        @content
    </body>
</html>

 「@(title: String)(content: Html)」で「index.scala.html」から「"Welcome to Play"」というString型のタイトルを変数「title」に、「@play20.welcome(message)」というHTMLコンテントを変数「content」に受け取り、上記のようなHTMLを構成しています。

 <head>タグ内で参照しているファイルは「public」フォルダに配置されています。

  • CSS
    • /public/stylesheets/main.css
  • 画像
    • /public/images/favicon.png
  • JavaScript
    • /public/javascript/jquery-1.9.0.min.js

 titleとbody部は「index.scala.html」から受け取った「"Welcome to Play"」と「@play20.welcome(message)」をそれぞれ出力しています。

次のページ
まとめ

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
近未来の技術トレンドを先取り! 「Tech-Sketch」出張所連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7580 2014/02/04 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング