SlideShare ist ein Scribd-Unternehmen logo
1 von 14
Downloaden Sie, um offline zu lesen
1
Play2実践Tips集
Naoki Takezoe
BizReach, Inc.
Topic
• プロジェクト構成
• 開発モードの高速化
• マッピング、フォーマット
• コネクションプール
• 日本語ルーティング
• セッション管理
• 認証処理
• 非同期処理、ジョブスケジューリング
• 運用時のあれこれ
2
プロジェクト構成
• IntelliJで1プロジェクトで開発するためにsbtのマル
チプロジェクト構成にしています
3
ユーザ側Webアプリ
(Playプロジェクト)
管理側Webアプリ
(Playプロジェクト)
Web共通
(Playプロジェクトだがライブラリとして使用)
バッチアプリ
(sbtプロジェクト)
全体共通
(sbtプロジェクト)
開発モードの高速化
• play2-fastassetsを使用して静的リソースをブラウ
ザにキャッシュすることでリクエストを抑制
– https://github.com/takezoe/play2-fastassets
4
<link rel="stylesheet" media="screen"
href="@FastAssets.at("stylesheets/main.css")">
<link rel="stylesheet" media="screen"
href="assets/stylesheets/main.css?142014022630">
バージョンタグ付きのパスを生成するのでファイルを変更した場合はリクエストが飛ぶ
運用時のバージョニングにも使用(運用時のバージョニングはPlay 2.3で入る模様)
https://github.com/playframework/playframework/issues/1897
フォームのTuple22問題
• 項目数の多いフォームを定義できない
– 項目を適当な粒度でグルーピングしてネストさせる
– Scala 2.11では解消されるはず…
5
val userForm = Form(
mapping(
"firstName" -> text,
"lastName" -> text,
"mailAddress" -> email,
"password" -> text,
"companyInfo" -> mapping(
"company" -> text,
"department" -> text
)(CompanyInfo.apply)(CompanyInfo.unapply)
)(UserInfo.apply)(UserInfo.unapply)
)
テンプレート
• Play標準のヘルパー(@inputText等)は基本的に
使用していない
– 余計なマークアップが出力されてしまう
– エラーメッセージが微妙
– デザイナとの連携の問題
6
コネクションプール
• BoneCPには複数の問題があるため、Play標準の
dbpluginを無効にしてHikariCP play pluginを使用
– http://edulify.github.io/play-hikaricp.edulify.com/
7
dbpluginを無効にするとevolutionが使えなくなるので注意!
Playのdbpluginに依存しないevolutionの代替としてplay-flywayがあります。
https://github.com/tototoshi/play-flyway
日本語ルーティング
• ルーティングに日本語パスを定義したい
8
# 標準ではURLエンコードしたパスをroutesに記述する必要がある
GET /%E3%83%8F%E3%83%AD%E3%83%BC controllers.Application.hello
# パスを日本語で記述できるように拡張
GET /ハロー controllers.Application.hello
日本語ルーティング
• Globalでパスを変換
9
import play.api._
import play.api.mvc._
import java.net.URLDecoder.decode
object Global extends GlobalSettings {
override def onRouteRequest(req: RequestHeader): Option[Handler] = {
super.onRouteRequest(
if(req.path.startsWith("/%")) req.copy(path = decode(req.path,
"UTF-8")) else req)
}
}
Globalにもこの他にも様々なフックメソッドが用意されており、オーバーライドすることで
Playの全体的な動作のカスタマイズが可能です。
セッション管理
• PlayはRails同様のクッキーセッション機能
• サーバサイドにデータを保存する仕組みは自分で
用意する必要がある
• PlayのCache APIを使用してセッションIDと紐付け
て保存する機能を自作
• ローカルではEhcache、プロダクションでは
Memcachedを使用(設定で切り替え可能)
– https://github.com/mumoshu/play2-memcached
10
認証処理
• Secure Social
– http://securesocial.ws/
– デフォルトで様々なソーシャルメディアに対応
– ユーザ登録、メール通知等の機能も組み込まれており、
設定は複雑だが高機能
– そこまで高機能なものが不要であればpac4jもいいかも
• play2-auth
– https://github.com/t2v/play2-auth
– 権限によるアクションの認証機構を提供
– システム独自のユーザ管理を行う業務アプリケーション
等に向いている
11
非同期処理
• メール送信や外部APIの呼び出しなど時間のかかる
処理はPlayのコントローラからアクターを起動して非
同期実行
12
object SendMailController extends Controller {
val actor = Akka.system.actorOf(Props[SendMailActor],
name = "sendMailActor")
def send = DBAction { implicit request =>
// メール送信対象のユーザを取得
val accounts = Accounts.filter(_.acceptMail is true.bind).list
// 送信対象のユーザを指定してアクターを起動
actor ! users
// レスポンスを返す
Ok(views.html.test("test page."))
}
}
非同期処理
• 定期的に行う処理はakka-quartzを使用してアクタ
ーをスケジュール実行
– https://github.com/theatrus/akka-quartz
13
Typesafeで開発しているakka-quartz-schedulerというものもありますが、
application.confにスケジュールを記述する必要があるので動的にスケジュールを
設定したいという用途には向いていません。
https://github.com/typesafehub/akka-quartz-scheduler
// スケジューラを取得
val quartzActor = Akka.system.actorOf(Props[QuartzActor])
// スケジュールを登録
quartzActor ! AddCronSchedule(
Akka.system.actorOf(Props[HelloWorldActor]), // アクター
"0/5 * * * * ?", // スケジュール
"HelloWorld" // メッセージ
)
デプロイ、運用にかんするあれこれ
• distで生成したzipファイルをサーバに転送、展開し
てシェルスクリプトを実行して起動
– Commons Daemon(jsvc)を使ってデーモン化
http://d.hatena.ne.jp/takezoe/20140516#p1
• Playの起動時にオプションで設定ファイルを指定
– -Dconfig.resource=クラスパス内の設定ファイル
– -Dconfig.file=ファイルシステム上の設定ファイル
• ログにはslf4j+LogBackを使用
– LogBackの設定は全開にしておき、Play側の設定でログ
レベルを調節している
14

Weitere ähnliche Inhalte

Andere mochten auch

Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況takezoe
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.jstakezoe
 
SIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたことSIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたことtakezoe
 
ドワンゴでのScala活用事例「ニコニコandroid」
ドワンゴでのScala活用事例「ニコニコandroid」ドワンゴでのScala活用事例「ニコニコandroid」
ドワンゴでのScala活用事例「ニコニコandroid」Satoshi Goto
 
色んなScalaを調べてみた
色んなScalaを調べてみた色んなScalaを調べてみた
色んなScalaを調べてみたJiro Hiraiwa
 
Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Jiro Hiraiwa
 
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
JDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation streamJDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation stream
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation streamRuslan Shevchenko
 
アドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るltアドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るltJiro Hiraiwa
 
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)BIGLOBE Tech Talk
 
アクターモデルについて
アクターモデルについてアクターモデルについて
アクターモデルについてTakamasa Mitsuji
 
Scala@SmartNews_20150221
Scala@SmartNews_20150221Scala@SmartNews_20150221
Scala@SmartNews_20150221Shigekazu Takei
 
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalatakezoe
 
Reactive microservices with play and akka
Reactive microservices with play and akkaReactive microservices with play and akka
Reactive microservices with play and akkascalaconfjp
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)x1 ichi
 
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuriバッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuriKazuki Negoro
 
Without Resilience, Nothing Else Matters
Without Resilience, Nothing Else MattersWithout Resilience, Nothing Else Matters
Without Resilience, Nothing Else MattersJonas Bonér
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriYuta Okamoto
 
【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術Yoshinori Fujiwara
 

Andere mochten auch (20)

Scala界隈の近況
Scala界隈の近況Scala界隈の近況
Scala界隈の近況
 
ネタじゃないScala.js
ネタじゃないScala.jsネタじゃないScala.js
ネタじゃないScala.js
 
SIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたことSIerでScalaを使うために私がしたこと
SIerでScalaを使うために私がしたこと
 
Slick入門
Slick入門Slick入門
Slick入門
 
ドワンゴでのScala活用事例「ニコニコandroid」
ドワンゴでのScala活用事例「ニコニコandroid」ドワンゴでのScala活用事例「ニコニコandroid」
ドワンゴでのScala活用事例「ニコニコandroid」
 
色んなScalaを調べてみた
色んなScalaを調べてみた色んなScalaを調べてみた
色んなScalaを調べてみた
 
Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5Scala採用の背景とその後 @ hitomedia night #5
Scala採用の背景とその後 @ hitomedia night #5
 
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
JDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation streamJDays Lviv 2014:  Java8 vs Scala:  Difference points & innovation stream
JDays Lviv 2014: Java8 vs Scala: Difference points & innovation stream
 
アドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るltアドテク企業のScala導入について振り返るlt
アドテク企業のScala導入について振り返るlt
 
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)
リーンでアジャイルにAndroidアプリ開発をしてみた!(NECビッグローブ ABC向け資料)
 
アクターモデルについて
アクターモデルについてアクターモデルについて
アクターモデルについて
 
Scala@SmartNews_20150221
Scala@SmartNews_20150221Scala@SmartNews_20150221
Scala@SmartNews_20150221
 
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscalaビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
ビズリーチの新サービスをScalaで作ってみた 〜マイクロサービスの裏側 #jissenscala
 
Reactive microservices with play and akka
Reactive microservices with play and akkaReactive microservices with play and akka
Reactive microservices with play and akka
 
あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)あなたのScalaを爆速にする7つの方法(日本語版)
あなたのScalaを爆速にする7つの方法(日本語版)
 
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuriバッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
バッチを Akka Streams で再実装したら100倍速くなった話 #ScalaMatsuri
 
Without Resilience, Nothing Else Matters
Without Resilience, Nothing Else MattersWithout Resilience, Nothing Else Matters
Without Resilience, Nothing Else Matters
 
Why Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuriWhy Reactive Matters #ScalaMatsuri
Why Reactive Matters #ScalaMatsuri
 
【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術【初公開】チャットワーク検索機能を支える技術
【初公開】チャットワーク検索機能を支える技術
 
Zen of Akka
Zen of AkkaZen of Akka
Zen of Akka
 

Ähnlich wie Play2実践tips集

誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニングKiyokazu Kaba
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングterurou
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころKazuhiro Hara
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイKazuhiro Hara
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介Ryo Iinuma
 
TypeScript x Bot Framework
TypeScript x Bot FrameworkTypeScript x Bot Framework
TypeScript x Bot FrameworkKazumi IWANAGA
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発日本マイクロソフト株式会社
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Tadahiro Ishisaka
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
XPagesジャンプスタート
XPagesジャンプスタートXPagesジャンプスタート
XPagesジャンプスタートMitsuru Katoh
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていくRyo Mitoma
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminarManabu Shimobe
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール WeinerをつかってみたMasakazu Muraoka
 
ゲームの裏側を支える人たちの裏側
ゲームの裏側を支える人たちの裏側ゲームの裏側を支える人たちの裏側
ゲームの裏側を支える人たちの裏側Riou Tomita
 
Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方Yoshitaka Seo
 
concrete5で社内システムのお話し
concrete5で社内システムのお話しconcrete5で社内システムのお話し
concrete5で社内システムのお話しTao Sasaki
 
コンシューマゲーム開発におけるHansoftの活用事例
コンシューマゲーム開発におけるHansoftの活用事例コンシューマゲーム開発におけるHansoftの活用事例
コンシューマゲーム開発におけるHansoftの活用事例Hiroyuki Tanaka
 
コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略fisuda
 

Ähnlich wie Play2実践tips集 (20)

誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング誰にでもできるパフォーマンスチューニング
誰にでもできるパフォーマンスチューニング
 
DLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミングDLR言語によるSilverlightプログラミング
DLR言語によるSilverlightプログラミング
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介最近のフロントエンドツールの紹介
最近のフロントエンドツールの紹介
 
TypeScript x Bot Framework
TypeScript x Bot FrameworkTypeScript x Bot Framework
TypeScript x Bot Framework
 
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
 
Ossで作成するチーム開発環境
Ossで作成するチーム開発環境Ossで作成するチーム開発環境
Ossで作成するチーム開発環境
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
XPagesジャンプスタート
XPagesジャンプスタートXPagesジャンプスタート
XPagesジャンプスタート
 
作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく作る人から作りながら運用する人になっていく
作る人から作りながら運用する人になっていく
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
リモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみたリモートデバッグツール Weinerをつかってみた
リモートデバッグツール Weinerをつかってみた
 
ゲームの裏側を支える人たちの裏側
ゲームの裏側を支える人たちの裏側ゲームの裏側を支える人たちの裏側
ゲームの裏側を支える人たちの裏側
 
Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方Azure Machine Leaning Workbench の使い方
Azure Machine Leaning Workbench の使い方
 
concrete5で社内システムのお話し
concrete5で社内システムのお話しconcrete5で社内システムのお話し
concrete5で社内システムのお話し
 
コンシューマゲーム開発におけるHansoftの活用事例
コンシューマゲーム開発におけるHansoftの活用事例コンシューマゲーム開発におけるHansoftの活用事例
コンシューマゲーム開発におけるHansoftの活用事例
 
コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略コンテキストデータの永続化のための戦略
コンテキストデータの永続化のための戦略
 

Mehr von takezoe

Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The CloudJourney of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloudtakezoe
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scalatakezoe
 
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a ServiceTesting Distributed Query Engine as a Service
Testing Distributed Query Engine as a Servicetakezoe
 
Revisit Dependency Injection in scala
Revisit Dependency Injection in scalaRevisit Dependency Injection in scala
Revisit Dependency Injection in scalatakezoe
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationstakezoe
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScalatakezoe
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scalatakezoe
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scalatakezoe
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめtakezoe
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」takezoe
 
The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtendtakezoe
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jstakezoe
 
Tracing Microservices with Zipkin
Tracing Microservices with ZipkinTracing Microservices with Zipkin
Tracing Microservices with Zipkintakezoe
 
Type-safe front-end development with Scala
Type-safe front-end development with ScalaType-safe front-end development with Scala
Type-safe front-end development with Scalatakezoe
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016takezoe
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scalatakezoe
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsawtakezoe
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3takezoe
 
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMmarkedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMtakezoe
 
Excel方眼紙を支えるJava技術 2015
Excel方眼紙を支えるJava技術 2015Excel方眼紙を支えるJava技術 2015
Excel方眼紙を支えるJava技術 2015takezoe
 

Mehr von takezoe (20)

Journey of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The CloudJourney of Migrating Millions of Queries on The Cloud
Journey of Migrating Millions of Queries on The Cloud
 
GitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by ScalaGitBucket: Open source self-hosting Git server built by Scala
GitBucket: Open source self-hosting Git server built by Scala
 
Testing Distributed Query Engine as a Service
Testing Distributed Query Engine as a ServiceTesting Distributed Query Engine as a Service
Testing Distributed Query Engine as a Service
 
Revisit Dependency Injection in scala
Revisit Dependency Injection in scalaRevisit Dependency Injection in scala
Revisit Dependency Injection in scala
 
How to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applicationsHow to keep maintainability of long life Scala applications
How to keep maintainability of long life Scala applications
 
頑張りすぎないScala
頑張りすぎないScala頑張りすぎないScala
頑張りすぎないScala
 
GitBucket: Git Centric Software Development Platform by Scala
GitBucket:  Git Centric Software Development Platform by ScalaGitBucket:  Git Centric Software Development Platform by Scala
GitBucket: Git Centric Software Development Platform by Scala
 
Non-Functional Programming in Scala
Non-Functional Programming in ScalaNon-Functional Programming in Scala
Non-Functional Programming in Scala
 
Scala警察のすすめ
Scala警察のすすめScala警察のすすめ
Scala警察のすすめ
 
Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」Scala製機械学習サーバ「Apache PredictionIO」
Scala製機械学習サーバ「Apache PredictionIO」
 
The best of AltJava is Xtend
The best of AltJava is XtendThe best of AltJava is Xtend
The best of AltJava is Xtend
 
Scala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.jsScala Warrior and type-safe front-end development with Scala.js
Scala Warrior and type-safe front-end development with Scala.js
 
Tracing Microservices with Zipkin
Tracing Microservices with ZipkinTracing Microservices with Zipkin
Tracing Microservices with Zipkin
 
Type-safe front-end development with Scala
Type-safe front-end development with ScalaType-safe front-end development with Scala
Type-safe front-end development with Scala
 
Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016Scala Frameworks for Web Application 2016
Scala Frameworks for Web Application 2016
 
Macro in Scala
Macro in ScalaMacro in Scala
Macro in Scala
 
Java9 and Project Jigsaw
Java9 and Project JigsawJava9 and Project Jigsaw
Java9 and Project Jigsaw
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3
 
markedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVMmarkedj: The best of markdown processor on JVM
markedj: The best of markdown processor on JVM
 
Excel方眼紙を支えるJava技術 2015
Excel方眼紙を支えるJava技術 2015Excel方眼紙を支えるJava技術 2015
Excel方眼紙を支えるJava技術 2015
 

Play2実践tips集