Play2+Scala
事始め
by Asami Abe
13年8月5日月曜日
自己紹介
Abe Asami きの子 (フリーエンジニア)
http://nocono.net/
Twitter: @aa7th
使用言語:Java、C#、Scala
     PHPはたしなむ程度
13年8月5日月曜日
私とPlayFramework
13年8月5日月曜日
私とPlayFramework
• 最初はPlay1.2+Javaから始めました
13年8月5日月曜日
私とPlayFramework
• 最初はPlay1.2+Javaから始めました
• サービス作りました(http://
geragera.jp/)
13年8月5日月曜日
私とPlayFramework
• 最初はPlay1.2+Javaから始めました
• サービス作りました(http://
geragera.jp/)
• 勉強会開催したり案件をこなしたり
13年8月5日月曜日
私とPlayFramework
• 最初はPlay1.2+Javaから始めました
• サービス作りました(http://
geragera.jp/)
• 勉強会開催したり案件をこなしたり
• Play2+Scala案件はまだないけど、
勉強中
13年8月5日月曜日
今日の内容
13年8月5日月曜日
今日の内容
• 用意したサンプルコードを見ながら、
自分がPlay2+Scalaにチャレンジした
ときにつまづいたり、マニュアルにな
い小ネタメインで
13年8月5日月曜日
Play2導入
13年8月5日月曜日
インストール
• JDK+Scalaを事前にインストールしておく
• Playパッケージをダウンロード→パスを通す
• Homebrewでインストール(brew install
play)
• 複数バージョンいれたいならpvm
(https://github.com/kaiinkinen/pvm)
※sbtにより自動インストールされるため、事
前準備の必要はないそうです。間違っていましたすみません。
※
13年8月5日月曜日
Playサーバについて
13年8月5日月曜日
Playサーバについて
• 高速なので、本番運用もビルトインサ
ーバで可能
13年8月5日月曜日
Playサーバについて
• 高速なので、本番運用もビルトインサ
ーバで可能
• 設定は全てconfファイルに書く
13年8月5日月曜日
Playサーバについて
• 高速なので、本番運用もビルトインサ
ーバで可能
• 設定は全てconfファイルに書く
• 開発・本番用と分けてconfファイルを
用意しておけば、切り替えも簡単
13年8月5日月曜日
DBアクセスライブラリ
13年8月5日月曜日
DBアクセスライブラリ
13年8月5日月曜日
DBアクセスライブラリ
• 標準はAnorm
13年8月5日月曜日
DBアクセスライブラリ
• 標準はAnorm
• ちょっと使い辛い・・・
13年8月5日月曜日
DBアクセスライブラリ
• 標準はAnorm
• ちょっと使い辛い・・・
• 好きなライブラリを使用できる
(ScalikeJDBC,Slick,ScalaActiveReco
rd,Squerylなど)
13年8月5日月曜日
Salat
13年8月5日月曜日
Salat
• MongoDB用アクセスライブラリ
13年8月5日月曜日
Salat
• MongoDB用アクセスライブラリ
• 今回はPlay-Salatを使用
(https://github.com/leon/play-
salat)
13年8月5日月曜日
Scalaの文法
13年8月5日月曜日
Option型
13年8月5日月曜日
Option型
• 値があるかどうか分からない型
13年8月5日月曜日
Option型
• 値があるかどうか分からない型
• 値がある場合・・・Some
値がない場合・・・None
13年8月5日月曜日
Option型
• 値があるかどうか分からない型
• 値がある場合・・・Some
値がない場合・・・None
• getメソッドで値を取得できる
13年8月5日月曜日
使用例
opt match {
case Some(x) => println(x)
case None => println(“値なし”)
}
NullPointerExceptionを回避できる
(余談)良く似たものに例外処理用のEitherがある
13年8月5日月曜日
cass class
13年8月5日月曜日
cass class
• 色んな便利メソッドを自動生成
13年8月5日月曜日
cass class
• 色んな便利メソッドを自動生成
• apply・・・インスタンス生成
unapply・・・情報を抽出
13年8月5日月曜日
Form
13年8月5日月曜日
Form
val entryForm = Form(
mapping (
"name" -> nonEmptyText
)
((name: String) => Entrant(name = name))
((entrant: Entrant) => Some(entrant.name))
)
フォームフィールド
構築関数
分解関数
13年8月5日月曜日
Form
val entryForm = Form(
mapping (
"name" -> nonEmptyText
)
(Entrant.apply)(Entrant.unapply)
)
13年8月5日月曜日
おすすめの本
Scala逆引きレシピ(翔泳社)
13年8月5日月曜日
おすすめの本
• Play2の情報も載っています
Scala逆引きレシピ(翔泳社)
13年8月5日月曜日

Play2+Scala事始め