play2+scala事始め
DESCRIPTION
2013/08/03(土) PlayFramework関西ビギナーズ 第2回にて発表。(若干修正を加えています。) PlayFramework関西ビギナーズwiki https://github.com/SAMMY7th/play_kb/wikiTRANSCRIPT
![Page 1: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/1.jpg)
Play2+Scala事始めby Asami Abe
13年8月5日月曜日
![Page 2: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/2.jpg)
自己紹介Abe Asami “きの子” (フリーエンジニア)http://nocono.net/Twitter: @aa7th
使用言語:Java、C#、Scala PHPはたしなむ程度
13年8月5日月曜日
![Page 3: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/3.jpg)
私とPlayFramework
13年8月5日月曜日
![Page 4: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/4.jpg)
私とPlayFramework
• 初はPlay1.2+Javaから始めました
13年8月5日月曜日
![Page 5: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/5.jpg)
私とPlayFramework
• 初はPlay1.2+Javaから始めました
•サービス作りました(http://geragera.jp/)
13年8月5日月曜日
![Page 6: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/6.jpg)
私とPlayFramework
• 初はPlay1.2+Javaから始めました
•サービス作りました(http://geragera.jp/)
•勉強会開催したり案件をこなしたり
13年8月5日月曜日
![Page 7: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/7.jpg)
私とPlayFramework
• 初はPlay1.2+Javaから始めました
•サービス作りました(http://geragera.jp/)
•勉強会開催したり案件をこなしたり
• Play2+Scala案件はまだないけど、
勉強中
13年8月5日月曜日
![Page 8: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/8.jpg)
今日の内容
13年8月5日月曜日
![Page 9: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/9.jpg)
今日の内容
•用意したサンプルコードを見ながら、自分がPlay2+Scalaにチャレンジしたときにつまづいたり、マニュアルにない小ネタメインで
13年8月5日月曜日
![Page 10: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/10.jpg)
Play2導入
13年8月5日月曜日
![Page 11: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/11.jpg)
インストール
• JDK+Scalaを事前にインストールしておく
• Playパッケージをダウンロード→パスを通す
• Homebrewでインストール(brew install play)
• 複数バージョンいれたいならpvm
(https://github.com/kaiinkinen/pvm)
※sbtにより自動インストールされるため、事前準備の必要はないそうです。間違っていましたすみません。
※
13年8月5日月曜日
![Page 12: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/12.jpg)
Playサーバについて
13年8月5日月曜日
![Page 13: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/13.jpg)
Playサーバについて
•高速なので、本番運用もビルトインサーバで可能
13年8月5日月曜日
![Page 14: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/14.jpg)
Playサーバについて
•高速なので、本番運用もビルトインサーバで可能
•設定は全てconfファイルに書く
13年8月5日月曜日
![Page 15: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/15.jpg)
Playサーバについて
•高速なので、本番運用もビルトインサーバで可能
•設定は全てconfファイルに書く
•開発・本番用と分けてconfファイルを用意しておけば、切り替えも簡単
13年8月5日月曜日
![Page 16: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/16.jpg)
DBアクセスライブラリ
13年8月5日月曜日
![Page 17: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/17.jpg)
DBアクセスライブラリ
13年8月5日月曜日
![Page 18: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/18.jpg)
DBアクセスライブラリ
•標準はAnorm
13年8月5日月曜日
![Page 19: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/19.jpg)
DBアクセスライブラリ
•標準はAnorm
•ちょっと使い辛い・・・
13年8月5日月曜日
![Page 20: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/20.jpg)
DBアクセスライブラリ
•標準はAnorm
•ちょっと使い辛い・・・
•好きなライブラリを使用できる
(ScalikeJDBC,Slick,ScalaActiveRecord,Squerylなど)
13年8月5日月曜日
![Page 21: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/21.jpg)
Salat
13年8月5日月曜日
![Page 22: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/22.jpg)
Salat
• MongoDB用アクセスライブラリ
13年8月5日月曜日
![Page 23: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/23.jpg)
Salat
• MongoDB用アクセスライブラリ
•今回はPlay-Salatを使用
(https://github.com/leon/play-salat)
13年8月5日月曜日
![Page 24: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/24.jpg)
Scalaの文法
13年8月5日月曜日
![Page 25: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/25.jpg)
Option型
13年8月5日月曜日
![Page 26: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/26.jpg)
Option型
•値があるかどうか分からない型
13年8月5日月曜日
![Page 27: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/27.jpg)
Option型
•値があるかどうか分からない型
•値がある場合・・・Some
値がない場合・・・None
13年8月5日月曜日
![Page 28: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/28.jpg)
Option型
•値があるかどうか分からない型
•値がある場合・・・Some
値がない場合・・・None
• getメソッドで値を取得できる
13年8月5日月曜日
![Page 29: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/29.jpg)
使用例 opt match { case Some(x) => println(x) case None => println(“値なし”) }
NullPointerExceptionを回避できる
(余談)良く似たものに例外処理用のEitherがある
13年8月5日月曜日
![Page 30: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/30.jpg)
cass class
13年8月5日月曜日
![Page 31: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/31.jpg)
cass class
•色んな便利メソッドを自動生成
13年8月5日月曜日
![Page 32: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/32.jpg)
cass class
•色んな便利メソッドを自動生成
• apply・・・インスタンス生成
unapply・・・情報を抽出
13年8月5日月曜日
![Page 33: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/33.jpg)
Form
13年8月5日月曜日
![Page 34: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/34.jpg)
Form val entryForm = Form( mapping ( "name" -> nonEmptyText ) ((name: String) => Entrant(name = name)) ((entrant: Entrant) => Some(entrant.name)) )
フォームフィールド
構築関数
分解関数
13年8月5日月曜日
![Page 35: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/35.jpg)
Form val entryForm = Form( mapping ( "name" -> nonEmptyText ) (Entrant.apply)(Entrant.unapply) )
13年8月5日月曜日
![Page 36: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/36.jpg)
おすすめの本Scala逆引きレシピ(翔泳社)
13年8月5日月曜日
![Page 37: Play2+Scala事始め](https://reader034.vdocuments.net/reader034/viewer/2022051514/54c2df744a7959b7558b47ef/html5/thumbnails/37.jpg)
おすすめの本
• Play2の情報も載っています
Scala逆引きレシピ(翔泳社)
13年8月5日月曜日