SlideShare a Scribd company logo
1 of 37
Download to read offline
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日月曜日

More Related Content

What's hot

元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。
takako onoue
 

What's hot (20)

【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介【ScalaMatsuri2016】関西のScalaコミュニティ紹介
【ScalaMatsuri2016】関西のScalaコミュニティ紹介
 
Eightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組みEightにおけるエンジニア主導の取り組み
Eightにおけるエンジニア主導の取り組み
 
HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例HerokuでRails3.2 we love herokuの事例
HerokuでRails3.2 we love herokuの事例
 
【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js【LT】 怖くない恐怖のScala.js
【LT】 怖くない恐怖のScala.js
 
Atami
AtamiAtami
Atami
 
テスト自動化のパタンランゲージ@Agilet Tour Osaka
テスト自動化のパタンランゲージ@Agilet Tour Osakaテスト自動化のパタンランゲージ@Agilet Tour Osaka
テスト自動化のパタンランゲージ@Agilet Tour Osaka
 
第二回tento.tech定例会
第二回tento.tech定例会第二回tento.tech定例会
第二回tento.tech定例会
 
関西Java女子部とScala関西勉強会のご紹介
関西Java女子部とScala関西勉強会のご紹介関西Java女子部とScala関西勉強会のご紹介
関西Java女子部とScala関西勉強会のご紹介
 
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
Scala初心者がPlay/ScalaでロックなWebアプリを作ったお話
 
元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。元インフラエンジニアが
Scalaを触ってつまづいたところ。
元インフラエンジニアが
Scalaを触ってつまづいたところ。
 
Contributing to Scala OSS from East Asia #ScalaMatsuri
 Contributing to Scala OSS from East Asia #ScalaMatsuri Contributing to Scala OSS from East Asia #ScalaMatsuri
Contributing to Scala OSS from East Asia #ScalaMatsuri
 
最初のRailsアプリケーション「茶番(tyaban)」
最初のRailsアプリケーション「茶番(tyaban)」最初のRailsアプリケーション「茶番(tyaban)」
最初のRailsアプリケーション「茶番(tyaban)」
 
iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門iOSエンジニアのためのScala入門
iOSエンジニアのためのScala入門
 
進撃のSbt
進撃のSbt進撃のSbt
進撃のSbt
 
Bitbucket pipelines を使ってみた話
Bitbucket pipelines を使ってみた話Bitbucket pipelines を使ってみた話
Bitbucket pipelines を使ってみた話
 
Go 言語で CLI ツールを作ってみた
Go 言語で CLI ツールを作ってみたGo 言語で CLI ツールを作ってみた
Go 言語で CLI ツールを作ってみた
 
railsはじめの一歩
railsはじめの一歩railsはじめの一歩
railsはじめの一歩
 
派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで派遣社員が現場にRubyを取り入れるまで
派遣社員が現場にRubyを取り入れるまで
 
Laravel5.1&homesteadで楽々ローカル環境構築
Laravel5.1&homesteadで楽々ローカル環境構築Laravel5.1&homesteadで楽々ローカル環境構築
Laravel5.1&homesteadで楽々ローカル環境構築
 
LT資料 Azureで始めるWordPress
LT資料 Azureで始めるWordPressLT資料 Azureで始めるWordPress
LT資料 Azureで始めるWordPress
 

Viewers also liked

Employee Recognition Program
Employee Recognition ProgramEmployee Recognition Program
Employee Recognition Program
Rashmi2306
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
Masaru Kobashigawa
 
Objectives Of Hr Planning
Objectives Of Hr PlanningObjectives Of Hr Planning
Objectives Of Hr Planning
Rashmi2306
 
Week 1 introduction & orientation
Week 1 introduction & orientationWeek 1 introduction & orientation
Week 1 introduction & orientation
anna_buckner
 

Viewers also liked (20)

Employee Recognition Program
Employee Recognition ProgramEmployee Recognition Program
Employee Recognition Program
 
Atiati
AtiatiAtiati
Atiati
 
Grant proposal presentation
Grant proposal presentationGrant proposal presentation
Grant proposal presentation
 
NEDITER
NEDITERNEDITER
NEDITER
 
Doc1
Doc1Doc1
Doc1
 
Thais 5 años
Thais 5 añosThais 5 años
Thais 5 años
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
 
151202 教育評価論(三田)第9講
151202 教育評価論(三田)第9講151202 教育評価論(三田)第9講
151202 教育評価論(三田)第9講
 
White Paper Options For Handling Your HR Function
White Paper  Options For Handling Your HR FunctionWhite Paper  Options For Handling Your HR Function
White Paper Options For Handling Your HR Function
 
Objectives Of Hr Planning
Objectives Of Hr PlanningObjectives Of Hr Planning
Objectives Of Hr Planning
 
For chiropractic to progress it no longer needs Philosophy?
For chiropractic to progress it no longer needs Philosophy?For chiropractic to progress it no longer needs Philosophy?
For chiropractic to progress it no longer needs Philosophy?
 
Introduction of Scala Kansai Beginners (ScalaMatsuri2014LT)
Introduction of Scala Kansai Beginners (ScalaMatsuri2014LT)Introduction of Scala Kansai Beginners (ScalaMatsuri2014LT)
Introduction of Scala Kansai Beginners (ScalaMatsuri2014LT)
 
150525 教育評価論 第6講
150525 教育評価論 第6講150525 教育評価論 第6講
150525 教育評価論 第6講
 
Mike baker eclipse
Mike baker eclipseMike baker eclipse
Mike baker eclipse
 
Web de la genèse à demain mars 2016
Web de la genèse à demain mars 2016Web de la genèse à demain mars 2016
Web de la genèse à demain mars 2016
 
150715 教育学特殊XIV(学級規模)第13講 [完]
150715 教育学特殊XIV(学級規模)第13講 [完]150715 教育学特殊XIV(学級規模)第13講 [完]
150715 教育学特殊XIV(学級規模)第13講 [完]
 
Dreamworks
Dreamworks Dreamworks
Dreamworks
 
MDIfinal
MDIfinalMDIfinal
MDIfinal
 
Bol.inf.agosto set. 2012
Bol.inf.agosto set. 2012Bol.inf.agosto set. 2012
Bol.inf.agosto set. 2012
 
Week 1 introduction & orientation
Week 1 introduction & orientationWeek 1 introduction & orientation
Week 1 introduction & orientation
 

Similar to Play2+Scala事始め

師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
 

Similar to Play2+Scala事始め (11)

【俺聞け5】私とflashとhtml5&java script
【俺聞け5】私とflashとhtml5&java script【俺聞け5】私とflashとhtml5&java script
【俺聞け5】私とflashとhtml5&java script
 
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
 
Scala-driven Engineering Life
Scala-driven Engineering LifeScala-driven Engineering Life
Scala-driven Engineering Life
 
Scala conf2013
Scala conf2013Scala conf2013
Scala conf2013
 
Scala conf2013
Scala conf2013 Scala conf2013
Scala conf2013
 
appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1appengine活用事例資料@TDDBC札幌2.1
appengine活用事例資料@TDDBC札幌2.1
 
Girl, Geek and Company - Tokyo Girl Geek Dinners #5 2013/7/5
Girl, Geek and Company - Tokyo Girl Geek Dinners #5 2013/7/5Girl, Geek and Company - Tokyo Girl Geek Dinners #5 2013/7/5
Girl, Geek and Company - Tokyo Girl Geek Dinners #5 2013/7/5
 
Rails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決めるRails プロジェクトでスタートダッシュを決める
Rails プロジェクトでスタートダッシュを決める
 
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
 
#31 愛しのst2
#31 愛しのst2#31 愛しのst2
#31 愛しのst2
 
Juzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷javaJuzu Frameworkを使ってみた @第四回 渋谷java
Juzu Frameworkを使ってみた @第四回 渋谷java
 

More from Asami Abe (6)

makeのススメ
makeのススメmakeのススメ
makeのススメ
 
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
 
フリーランスエンジニアになって1年が経ちました - 俺聞け4
フリーランスエンジニアになって1年が経ちました - 俺聞け4フリーランスエンジニアになって1年が経ちました - 俺聞け4
フリーランスエンジニアになって1年が経ちました - 俺聞け4
 
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
Scala再入門 @2014/02/08 Scala関西ビギナーズ第3回
 
20121222 scalaビギナーズ
20121222 scalaビギナーズ20121222 scalaビギナーズ
20121222 scalaビギナーズ
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 

Play2+Scala事始め