Play frameworkでisucon2アプリを書く-1

このエントリはPlay frameworkひとりアドベントカレンダーの16日目です。

おさらいがてらアプリを作っていきましょう。
テーマはisucon2です。

元ネタはこちら→ https://github.com/netmarkjp/isucon2

もっときれいな、いい実装方法はあるとおもいますが、 そういうのはえらいひとが指摘してくれるでしょうきっとね。

プロジェクトを作る

$ play new isucon2-play
       _            _ 
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/ 
             
play! 2.0.4, http://www.playframework.org

The new application will be created in /Users/baba/Documents/project/PlayframeworkSOLOAdventCalendar2012/isucon2-play

What is the application name? 
> isucon2-play

Which template do you want to use for this new application? 

  1 - Create a simple Scala application
  2 - Create a simple Java application
  3 - Create an empty project

> 2

OK, application isucon2-play is created.

Have fun!

$ cd isucon2-play/
$ play eclipsify
[info] Loading project definition from /Users/baba/Documents/project/PlayframeworkSOLOAdventCalendar2012/isucon2-play/project
[info] Set current project to isucon2-play (in build file:/Users/baba/Documents/project/PlayframeworkSOLOAdventCalendar2012/isucon2-play/)
[info] About to create Eclipse project files for your project(s).
[info] Updating {file:/Users/baba/Documents/project/PlayframeworkSOLOAdventCalendar2012/isucon2-play/}isucon2-play...
[info] Done updating.                                                                  
[info] Compiling 4 Scala sources and 2 Java sources to /Users/baba/Documents/project/PlayframeworkSOLOAdventCalendar2012/isucon2-play/target/scala-2.9.1/classes...
[info] Successfully created Eclipse project files for project(s):
[info] isucon2-play

とりあえず画面を出す

とりあえず画面を表示してヤル気を高めましょう。

$ play
[info] Loading project definition from /Users/baba/Documents/project/PlayframeworkSOLOAdventCalendar2012/isucon2-play/project
[info] Set current project to isucon2-play (in build file:/Users/baba/Documents/project/PlayframeworkSOLOAdventCalendar2012/isucon2-play/)
       _            _ 
 _ __ | | __ _ _  _| |
| '_ \| |/ _' | || |_|
|  __/|_|\____|\__ (_)
|_|            |__/ 
play! 2.0.4, http://www.playframework.org

> Type "help play" or "license" for more information.
> Type "exit" or use Ctrl+D to leave this console.

[isucon2-play] $ run

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on port 9000...

(Server started, use Ctrl+D to stop and go back to the console...)

http://localhost:9000/ にアクセスして何がしか表示されればokです。

スクリーンショット 2012-12-15 9.49.03

Eclipseに取り込む

Eclipseを起動したら、メニューから

File > Import > Existing Projects into Workspace > Select root directory

でプロジェクトのディレクトリを指定しましょう。

できましたね。

忘れずに /target/classes_managed をbuild pathに追加しておいてください。

いらんものを消す

今回は出力が規定されているので、viewまわりはisucon2オリジナルアプリそのまま使います。

だから下記viewまわりのは使わないので、ざくっと消しましょう。いらんいらん。

  • /app/views/*.scala.html
  • /public/*

Controllerを書く

それではControllerから書いていきましょう。

  1. routingを /conf/routes に書く
  2. Controllerを /app/controllers/Application.java に書く

という順番です。

/conf/routes

もともとこれが書いてあるので、そのまま使いましょ。

GET     /                           controllers.Application.index()

Controller

とりあえずTODO書いておけばいいです。

というかTODO書いておいたほうがいいです。

package controllers;

import play.mvc.Controller;
import play.mvc.Result;

public class Application extends Controller {

	public static Result index() {
		return TODO;
	}

}

これでとりあえずエラーにならず画面出ます!

作成途中だからって、エラーになると萎えるもんね。

http://localhost:9000/ はこんなかんじ。

スクリーンショット 2012-12-15 10.51.09

さて。準備ができたところで、明日から中身を作っていきましょう。


See also