SlideShare una empresa de Scribd logo
1 de 24
Descargar para leer sin conexión
Play! Framework 2.0の
   ちょっとした紹介
Play Framework 2.0とは?
●   Scala/JavaのWeb Application Framework
       –   フルスタック。
       –   Ruby on Railsのような高い生産性
              ●   「ソース修正・保存→ブラウザreload」で
                   コンパイルが走り処理実行。(サーバ再起
                   動不要)
       –   VIEWにおいても静的型付けで安全(Scalaに
            限る)
●   今時の技術を盛り込み済み
       –   JSON、非同期処理、WebService連携、自動
            テストサポート
●   ※Java EEのお作法に非準拠。
Scala
●
    JavaVM上で動く静的型付けの関数型/オブジェ
    クト指向言語
      –   全て(関数も)がオブジェクト
      –   型推論により、冗長な型記述を削減。
      –   パターンマッチで条件分岐がすごいことに。
      –   Option型によるnullのラッピング
      –   Javaのライブラリを呼び出すことができる。
      –   IDEのサポートが充実してきている。
      –   Twitter、Foursquare、Linkedin、英紙
            guardianでも使われている。
      –   Javaよりもコンパイルの時間がかかる。
動作環境、ラインセンス
●   Scala
       –    JRE 1.5以降
       –    Scala License(BSDライク)

●   Play! Framework 2.0
       –    JDK 6以降
       –    Apache License, Version 2.0
環境構築-1
●   JDK 6のインストール
      –   省略
●   Scalaのインストール
      –   http://www.scala-lang.org/downloads
           (※2.9以降を推奨。)
●
    Eclipseのインストール
      –   省略
●   Scala IDEのインストール
      –   http://scala-
           ide.org/download/current.html 参照
環境構築-2
●   Play! 2.0 インストール
       –   http://www.playframework.org/documen
             tation/2.0/Installing
       –   Zipファイルをダウンロード
       –   解凍
       –   PATHを通す。
       –   以上!
新しいアプリケーションを作成-1
            myappという名前で
            新しいアプリケーションを作成




    ENTER
新しいアプリケーションを作成-2




     テンプレートを選択。
     ScalaとJavaが選べる。
     ここではScalaを選択。
新しいアプリケーションを作成-3




      テンプレートに基づいて
      アプリケーションが作られる。
playコンソールを起動



    作られたアプリケーション
    フォルダへ移動。




        playコンソールを起動
サーバを起動




サーバを起動。




          localhost:9000で起動
ブラウザで確認
Eclipseのプロジェクトに変換
●
    Playコンソールで
      –   eclipsify
      –   と入力すると、
            ●
                .classpath
            ●   .project
      –   が出力されるので、Eclipseにインポート。
Play!の基本:ルーティング
●
    /conf/routesファイル
        –   HTTPメソッド、URIパターン、Action ジェネ
             レータを記述
●   例:GET /hello/:name controllers.Hello.hi(name: String)
      – HTTPメソッドがGETで、
      – /hello/:nameというURIの場合、
      – controllers.Hello.hi(name: String) を呼び出す
               ● :nameは動的に変わる値。
               ● /hello/John というURIの場合、

                   controllers.Hello.hi(John) を実行
Play!の基本:Action
●
    play.api.mvc.Action
        –   play.api.mvc.Requestをplay.api.mvc.Resultに変
              換する関数。
        –   リクエストを受け取って、処理結果をクライアント
              に返す。
        –   普通のWebの仕組みですね。
Play!の基本:Controller
●
    ControllerはActionジェネレータ
       –   Requestを受け取ってResultを返す関数を書く。
       –   Controllerの例(controllers/Hello.scala):
                              hi関数:
                              String型のnameという引数を受け取る。
                              “Hello! :”という文字列に、
                              引数を追加した値を返す。




                         Okは、HTTPステータスコード「200 OK」、
                         text/plainであるレスポンスボディを返す。
実行結果

          /hello/:name




hi関数から返された結果
Play!の基本:view(テンプレート)
●
    View(テンプレート)はコンパイルされるとScalaの
    関数になる
      –   コンパイル時点で型エラーのチェックなどが可能。
Play!の基本:view(テンプレート)の例
●
    view/greeteings.scala.html
                           テンプレートの引数




                          @以降は
                          Scalaステートメントと判断される。
Play!の基本:view(テンプレート)呼び出し



                     hi関数をtemplateを使うように
                     書き換え。




        Play!の規約で、views/greeting.scala.htmlは
        view.shtml.greeting関数にコンパイルされる。
        Controllerからすると、普通のScala関数の呼び出し。
Play!の基本:view(テンプレート)呼び出し
Play!の基本:テンプレートは関数
●
    view/greeteings.scala.html
    でおかしな記述をすると




                      存在しない値を参照
コンパイルエラーになる
Play!を更に学ぶには?
●
    Play 2.0 documentation
       –   http://www.playframework.org/documentati
            on/2.0/Home
●   サンプルアプリケーション
       –   バイナリパッケージに同梱
●   メーリングリスト
       –   https://groups.google.com/forum/?
            hl=en&fromgroups#!forum/play-framework

Más contenido relacionado

La actualidad más candente

Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03
oranie Narut
 
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairシンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
Naoya Inada
 

La actualidad más candente (20)

Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework Meeting
 
Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15Webサーバ勉強会#1_prefork_8-15
Webサーバ勉強会#1_prefork_8-15
 
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)Ansibleで始めるサーバ管理勉強会(2014年10月1日)
Ansibleで始めるサーバ管理勉強会(2014年10月1日)
 
StackStormではじめる1人Slackのすすめ
StackStormではじめる1人SlackのすすめStackStormではじめる1人Slackのすすめ
StackStormではじめる1人Slackのすすめ
 
Startup JavaScript
Startup JavaScriptStartup JavaScript
Startup JavaScript
 
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテストServerspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
 
おすすめ gem
おすすめ gemおすすめ gem
おすすめ gem
 
Ansible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれからAnsible 2.0 のサマライズとこれから
Ansible 2.0 のサマライズとこれから
 
Antのススメ
AntのススメAntのススメ
Antのススメ
 
MHA on AWS+Rails
MHA on AWS+RailsMHA on AWS+Rails
MHA on AWS+Rails
 
Webサーバ勉強会03
Webサーバ勉強会03Webサーバ勉強会03
Webサーバ勉強会03
 
CakePHP2でMySQL Replication
CakePHP2でMySQL ReplicationCakePHP2でMySQL Replication
CakePHP2でMySQL Replication
 
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
さくらインターネットにおけるServerspec導入事例(DevOps勉強会 #3 Serverspecの巻)
 
Ansible入門...?
Ansible入門...?Ansible入門...?
Ansible入門...?
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
scala-kaigi1-sbt
scala-kaigi1-sbtscala-kaigi1-sbt
scala-kaigi1-sbt
 
シンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnairシンプルなシステム構成フレームワークalnair
シンプルなシステム構成フレームワークalnair
 
Akkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka docAkkaの翻訳みんなでやろう Let's translate akka doc
Akkaの翻訳みんなでやろう Let's translate akka doc
 
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
 
ScalaCL in ScalaKaigi
ScalaCL in ScalaKaigiScalaCL in ScalaKaigi
ScalaCL in ScalaKaigi
 

Similar a Play framework 2.0のちょっとした紹介

最新技術動向(2011年上期)
最新技術動向(2011年上期)最新技術動向(2011年上期)
最新技術動向(2011年上期)
Mahito Ogura
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
guest5f4320
 

Similar a Play framework 2.0のちょっとした紹介 (20)

Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
MoteMote Compiler Plugin
MoteMote Compiler PluginMoteMote Compiler Plugin
MoteMote Compiler Plugin
 
イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情イマドキの現場で使えるJavaライブラリ事情
イマドキの現場で使えるJavaライブラリ事情
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
最新技術動向(2011年上期)
最新技術動向(2011年上期)最新技術動向(2011年上期)
最新技術動向(2011年上期)
 
Jjug springセッション
Jjug springセッションJjug springセッション
Jjug springセッション
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Scala EE 7 Essentials
Scala EE 7 EssentialsScala EE 7 Essentials
Scala EE 7 Essentials
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
 
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
 
Dev love関西 forslideshare
Dev love関西 forslideshareDev love関西 forslideshare
Dev love関西 forslideshare
 
Play勉強会 第3回
Play勉強会 第3回Play勉強会 第3回
Play勉強会 第3回
 
Scalaの現状と課題
Scalaの現状と課題Scalaの現状と課題
Scalaの現状と課題
 
いまさらJavaScript
いまさらJavaScriptいまさらJavaScript
いまさらJavaScript
 
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 WhireSDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
 
ネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chefネットワークエンジニアのための Puppet / Chef
ネットワークエンジニアのための Puppet / Chef
 
Rails3.1rc4を試してみた
Rails3.1rc4を試してみたRails3.1rc4を試してみた
Rails3.1rc4を試してみた
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 
Scala2.8への移行
Scala2.8への移行Scala2.8への移行
Scala2.8への移行
 

Más de Ryo RKTM

20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い
Ryo RKTM
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
Ryo RKTM
 
20111127 scala hackathon_in_名古屋
20111127 scala hackathon_in_名古屋20111127 scala hackathon_in_名古屋
20111127 scala hackathon_in_名古屋
Ryo RKTM
 
20111105 LL名古屋 俺と嫁のagiLe deveLopment
20111105 LL名古屋 俺と嫁のagiLe deveLopment20111105 LL名古屋 俺と嫁のagiLe deveLopment
20111105 LL名古屋 俺と嫁のagiLe deveLopment
Ryo RKTM
 
第24回名古屋アジャイル勉強会『朝会を始めよう!』α版
第24回名古屋アジャイル勉強会『朝会を始めよう!』α版第24回名古屋アジャイル勉強会『朝会を始めよう!』α版
第24回名古屋アジャイル勉強会『朝会を始めよう!』α版
Ryo RKTM
 
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
Ryo RKTM
 
名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料
名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料
名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料
Ryo RKTM
 
20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』
20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』
20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』
Ryo RKTM
 

Más de Ryo RKTM (14)

ヤマオススメ@NGK2014
ヤマオススメ@NGK2014ヤマオススメ@NGK2014
ヤマオススメ@NGK2014
 
NGK2014 ヤマオススメ
NGK2014 ヤマオススメNGK2014 ヤマオススメ
NGK2014 ヤマオススメ
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い20130202 ドメイン駆動設計読書会at名古屋のお誘い
20130202 ドメイン駆動設計読書会at名古屋のお誘い
 
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β20130202 ドメイン駆動設計読書会at名古屋のお誘い β
20130202 ドメイン駆動設計読書会at名古屋のお誘い β
 
20120806 ドメイン駆動設計読書会at名古屋のお誘いα版
20120806 ドメイン駆動設計読書会at名古屋のお誘いα版20120806 ドメイン駆動設計読書会at名古屋のお誘いα版
20120806 ドメイン駆動設計読書会at名古屋のお誘いα版
 
20111127 scala hackathon_in_名古屋
20111127 scala hackathon_in_名古屋20111127 scala hackathon_in_名古屋
20111127 scala hackathon_in_名古屋
 
20111105 LL名古屋 俺と嫁のagiLe deveLopment
20111105 LL名古屋 俺と嫁のagiLe deveLopment20111105 LL名古屋 俺と嫁のagiLe deveLopment
20111105 LL名古屋 俺と嫁のagiLe deveLopment
 
名古屋Scala勉強会のご紹介@OSC2010名古屋
名古屋Scala勉強会のご紹介@OSC2010名古屋名古屋Scala勉強会のご紹介@OSC2010名古屋
名古屋Scala勉強会のご紹介@OSC2010名古屋
 
第24回名古屋アジャイル勉強会『朝会を始めよう!』α版
第24回名古屋アジャイル勉強会『朝会を始めよう!』α版第24回名古屋アジャイル勉強会『朝会を始めよう!』α版
第24回名古屋アジャイル勉強会『朝会を始めよう!』α版
 
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
20091226 名古屋SGGAE/J勉強会発表資料『Lift on GAE/J』
 
名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料
名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料
名古屋アジャイル勉強会第17回「仕事を定時に終わらせるための『タイムボックス』の考え方」発表資料
 
20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』
20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』
20091010名古屋Ruby会議01 プログラマとプログラマでない人のための課題管理ツール『Redmine』
 
第13回名古屋アジャイル勉強会発表資料『チケット駆動開発入門』
第13回名古屋アジャイル勉強会発表資料『チケット駆動開発入門』第13回名古屋アジャイル勉強会発表資料『チケット駆動開発入門』
第13回名古屋アジャイル勉強会発表資料『チケット駆動開発入門』
 
名古屋アジャイル勉強会第9回(2009/02/27)発表資料
名古屋アジャイル勉強会第9回(2009/02/27)発表資料名古屋アジャイル勉強会第9回(2009/02/27)発表資料
名古屋アジャイル勉強会第9回(2009/02/27)発表資料
 

Último

Último (12)

Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 

Play framework 2.0のちょっとした紹介

  • 1. Play! Framework 2.0の ちょっとした紹介
  • 2. Play Framework 2.0とは? ● Scala/JavaのWeb Application Framework – フルスタック。 – Ruby on Railsのような高い生産性 ● 「ソース修正・保存→ブラウザreload」で コンパイルが走り処理実行。(サーバ再起 動不要) – VIEWにおいても静的型付けで安全(Scalaに 限る) ● 今時の技術を盛り込み済み – JSON、非同期処理、WebService連携、自動 テストサポート ● ※Java EEのお作法に非準拠。
  • 3. Scala ● JavaVM上で動く静的型付けの関数型/オブジェ クト指向言語 – 全て(関数も)がオブジェクト – 型推論により、冗長な型記述を削減。 – パターンマッチで条件分岐がすごいことに。 – Option型によるnullのラッピング – Javaのライブラリを呼び出すことができる。 – IDEのサポートが充実してきている。 – Twitter、Foursquare、Linkedin、英紙 guardianでも使われている。 – Javaよりもコンパイルの時間がかかる。
  • 4. 動作環境、ラインセンス ● Scala – JRE 1.5以降 – Scala License(BSDライク) ● Play! Framework 2.0 – JDK 6以降 – Apache License, Version 2.0
  • 5. 環境構築-1 ● JDK 6のインストール – 省略 ● Scalaのインストール – http://www.scala-lang.org/downloads (※2.9以降を推奨。) ● Eclipseのインストール – 省略 ● Scala IDEのインストール – http://scala- ide.org/download/current.html 参照
  • 6. 環境構築-2 ● Play! 2.0 インストール – http://www.playframework.org/documen tation/2.0/Installing – Zipファイルをダウンロード – 解凍 – PATHを通す。 – 以上!
  • 7. 新しいアプリケーションを作成-1 myappという名前で 新しいアプリケーションを作成 ENTER
  • 8. 新しいアプリケーションを作成-2 テンプレートを選択。 ScalaとJavaが選べる。 ここではScalaを選択。
  • 9. 新しいアプリケーションを作成-3 テンプレートに基づいて アプリケーションが作られる。
  • 10. playコンソールを起動 作られたアプリケーション フォルダへ移動。 playコンソールを起動
  • 11. サーバを起動 サーバを起動。 localhost:9000で起動
  • 13. Eclipseのプロジェクトに変換 ● Playコンソールで – eclipsify – と入力すると、 ● .classpath ● .project – が出力されるので、Eclipseにインポート。
  • 14. Play!の基本:ルーティング ● /conf/routesファイル – HTTPメソッド、URIパターン、Action ジェネ レータを記述 ● 例:GET /hello/:name controllers.Hello.hi(name: String) – HTTPメソッドがGETで、 – /hello/:nameというURIの場合、 – controllers.Hello.hi(name: String) を呼び出す ● :nameは動的に変わる値。 ● /hello/John というURIの場合、 controllers.Hello.hi(John) を実行
  • 15. Play!の基本:Action ● play.api.mvc.Action – play.api.mvc.Requestをplay.api.mvc.Resultに変 換する関数。 – リクエストを受け取って、処理結果をクライアント に返す。 – 普通のWebの仕組みですね。
  • 16. Play!の基本:Controller ● ControllerはActionジェネレータ – Requestを受け取ってResultを返す関数を書く。 – Controllerの例(controllers/Hello.scala): hi関数: String型のnameという引数を受け取る。 “Hello! :”という文字列に、 引数を追加した値を返す。 Okは、HTTPステータスコード「200 OK」、 text/plainであるレスポンスボディを返す。
  • 17. 実行結果 /hello/:name hi関数から返された結果
  • 18. Play!の基本:view(テンプレート) ● View(テンプレート)はコンパイルされるとScalaの 関数になる – コンパイル時点で型エラーのチェックなどが可能。
  • 19. Play!の基本:view(テンプレート)の例 ● view/greeteings.scala.html テンプレートの引数 @以降は Scalaステートメントと判断される。
  • 20. Play!の基本:view(テンプレート)呼び出し hi関数をtemplateを使うように 書き換え。 Play!の規約で、views/greeting.scala.htmlは view.shtml.greeting関数にコンパイルされる。 Controllerからすると、普通のScala関数の呼び出し。
  • 22. Play!の基本:テンプレートは関数 ● view/greeteings.scala.html でおかしな記述をすると 存在しない値を参照
  • 24. Play!を更に学ぶには? ● Play 2.0 documentation – http://www.playframework.org/documentati on/2.0/Home ● サンプルアプリケーション – バイナリパッケージに同梱 ● メーリングリスト – https://groups.google.com/forum/? hl=en&fromgroups#!forum/play-framework