PlayFramework1.x
基礎編      by Abe Asami

2012/11/17
自己紹介

           Abe Asami “きの子” (フリーエンジニア)

           http://nocono.net/

           Twitter: @aa7th


  Java歴 

       2004年頃から1年半ぐらい



     半年前にPlayFrameworkを知る
Play!で作ったもの
    Twitter大喜利サイト「ゲラゲラ!」
       http://geragera.jp/




                             Play! ver1.2.4
Playframeworkとは



✤   Java版Ruby on Railas

✤   Java+ScalaのWebアプリケーション用
    MVCフレームワーク
従来のJava(JEE)開発

       いい点             わるい点

 オブジェクト指向   事前コンパイル   コードが冗長

 型安全        JVM・GC    設定ファイルが多い
                      Javaサーバが必要
                      コンパイルしないと動かない
  堅牢性       保守性
  拡張性       高速          生産性
   大規模開発              小・中規模開発
そこでPlay!では・・・

      JavaEE使うのやめました!



   ホットリロード可能!
   Javaサーバ不要!
   設定ファイルが減った!
   ステートレス!
さらに・・・

      開発の余計な手間を省こう!




  フルスタック!
  よく使う機能は標準で提供!
  既存のライブラリも利用可能!
Play!を使うと・・・

      いい点             わるい点

オブジェクト指向   事前コンパイル   コードが冗長

型安全        JVM・GC    設定ファイルが多い
                     Javaサーバが必要
                              大幅アップ!
                     コンパイルしないと動かない
 堅牢性       保守性
 拡張性       高速          生産性
  大規模開発              小・中規模開発
今日はなぜ1.xの話?

 Play2.0は全てScalaで書き直された
   Javaも使えるが、Scalaメイン
 Scalaの学習コストが高い
 2.x事例はまだ少ない
 1.xもまだサポートされる
   1.3がリリースされるとの

   1.xの方が現時点では実用的 (※個人的な意見)
Play!の問題点


  まだまだ情報が少ない! ><
            知名度もまだ低い・・・
Play!の問題点


  まだまだ情報が少ない! ><
            知名度もまだ低い・・・



        まず周りからPlay!ファンを
         増やしていこう!!!
というわけで

    今日の勉強会を開くに至りました。
1人でもPlay!のユーザが増えてくれたら嬉しいです。
           m(_ _)m




      ここからは実践編!
環境構築
必須:JDK1.5以上

1.Play!本体をダウンロード
 http://playdocja.appspot.com/download


2.展開・配置



3.Playコマンドパスを通す
以上!
※GitHub、HomeBrewから入手する方法もあります。
プロジェクト作成


~$ play new [アプリケーション名]
フォルダ構成

ディレクトリ名      内容           主な格納ファイル

 app/     アプリケーション中心部         *.Java, *.html
                        application.conf ,routes,
 conf/      設定ファイル
                        messages

 lib/       ライブラリ                    *.jar

public/     静的ファイル           *.js, *.css, 画像

 test/    アプリケーションテスト         *.Java, *.html
実行


~$ play run [アプリケーション名]


     http://localhost:9000/ にて確認
サーバーは?

 スタンドアロンで動作する
  1秒間に数千のHTTPリクエストを捌くことが可能

 Javaサーバ不要!
  warファイルとしてJavaサーバにデプロイも可能

 AWS,Heroku,GAEなどのクラウド環境でも動作
ソース編集

IDEを利用
 Eclipse, NetBeans,IntelliJ IDEA


テキストエディタ
 Textmate, Vim,Sublime Text ...etc
IDE設定
 ~$ play eclipsify[ec] myapp
 ~$ play netbeansify[nb] myapp
 ~$ play idealize[idea] myapp




      ※Eclipseには専用プラグインあり。
Eclipseの場合
      プロジェクトをインポート
Eclipseから実行


              右クリック→実行
処理フロー
Eclipse注意点!
 テンプレートの文字コードがうまく判別されない・・・

 解決方法

その1:*.htmlをPHPに関連付ける
その2:eclipse.ini に 「-Duser.language=en」追加
その3:テンプレートの一番上に下記のコード追加
   *{ <meta content="text/html; charset=utf-8"/> }*


その4:Eclipse以外のエディタに乗り換える
SessionとFlash

複数のHTTPリクエストにまたがってデータを保持

   Session・・・ユーザセッションが有効な間
   Flash・・・次のリクエストのみ



       どちらもcookieに保持される
        保存できるのは文字列のみ
          (1個4KB 20個まで)
キャッシュ

サーバサイド(JVM上)に保持される
JEEでいうところのセッションのように利用可能
Memcached使えるよ!
herokuデプロイ

Procfileファイルをルートに作成



    web: play run --http.port=$PORT $PLAY_OPTS

PlayFramework1.x基礎編