プラガブル Play20 Scala
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

プラガブル Play20 Scala

on

  • 10,174 views

Play プラグインやその他モジュールの概要、 ScalikeJDBC の紹介と #akskscala の参加者募集について。

Play プラグインやその他モジュールの概要、 ScalikeJDBC の紹介と #akskscala の参加者募集について。

Statistics

Views

Total Views
10,174
Views on SlideShare
2,599
Embed Views
7,575

Actions

Likes
10
Downloads
14
Comments
1

11 Embeds 7,575

http://d.hatena.ne.jp 3806
http://www.scoop.it 2231
http://mtl.recruit.co.jp 1199
http://seratch.hatenablog.jp 297
http://webcache.googleusercontent.com 20
https://twimg0-a.akamaihd.net 9
https://si0.twimg.com 6
https://twitter.com 4
http://cache.yahoofs.jp 1
https://www.google.co.jp 1
http://translate.googleusercontent.com 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

プラガブル Play20 Scala Presentation Transcript

  • 1. プラガブルPlay20 Scala Kazuhiro Sera (@seratch)
  • 2. アジェンダ軽く自己紹介Play の拡張全般についてScalikeJDBC のご紹介#akskscala へのお誘い
  • 3. 誰?Scala、Java がメインのプログラマいろいろやっています#akskscala @赤坂(溜池山王)Play は 1.0 出たときから
  • 4. 質問
  • 5. 質問Play20 プラグイン作ったことがある方はどれくらいいらっしゃいますか?
  • 6. 質問Play20 プラグイン作ったことがある方はどれくらいいらっしゃいますか?と質問したものの、そもそもプラグインの定義って明確なんだっけ・・?
  • 7. どうやらプラグインとは明確な定義はされていないものの、どうやらPlay20 プラグインは 2 種類あるplay.plugins に追加して使う Play アプリのランタイム機能拡張play コンソールを拡張するための sbtプラグイン
  • 8. イメージ図モジュールプラグイン プラグイン play.pluginsに追加 ではない形で (Play アプリ拡張) Play を 拡張するもの sbt プラグイン(play コンソール拡張)
  • 9. typesafehub/play-pluginsdust sbt プラグインguice play.pluginsinject play.pluginsmailer play.pluginsredis play.pluginssbtgoodies sbt プラグインsbtlogger sbt プラグインutil (プラグインではない)
  • 10. Play アプリ拡張(play.plugins)
  • 11. conf/play.plugins公式 Wiki の説明参照play.api.Plugin という trait拡張ポイントはコンストラクタとonStart/onStop/enabled のみ(2.0.2 時点)
  • 12. 何ができるのかコンストラクタや onStart でアプリ内共通で使うものを準備しておく典型例:コネクションプールの初期化実際プラグインにすべき要件は多くない
  • 13. 早速つくってみよう app 直下に MyPlugin.scalaimport play.api._class MyPlugin(app: Application) extends Plugin { def onStart(): Unit = { println(“This is my first Play20 plugin!”) }}
  • 14. テストも書こうimport org.specs2.mutable.Specificationobject MyPluginSpec extends Specification { "MyPlugin" should { "be available" in { running(FakeApplication( additionalPlugins = Seq("MyPlugin"), additionalConfiguration = Map("key", "value"))) { // do something ...
  • 15. 実際に使う conf/play.plugins に追加 読み込み順序の数値は昇順 Play 本体のプラグインの最後は GlobalPlugin (10000)10001: MyPlugin
  • 16. 拙作の例ScalikeJDBC Play PluginScalikeJDBC は SQL テンプレートベースの DB アクセスライブラリconf/application.conf の DB 設定を読み取ってコネクションプールを初期化
  • 17. Tips
  • 18. TipsPlugin のコンストラクタや onStart、onStop は一度しか呼ばれない?
  • 19. TipsPlugin のコンストラクタや onStart、onStop は一度しか呼ばれない?Production 環境ならそうだけど・・
  • 20. TipsPlugin のコンストラクタや onStart、onStop は一度しか呼ばれない?Production 環境ならそうだけど・・テストだと FakeApplication は大量に生成されて、その度に呼ばれまくる(重たい処理はキャッシュするなど)
  • 21. Play コンソール拡張(sbt プラグイン)
  • 22. sbt プラグインplay コンソールは sbt のラッパーなのですべての sbt プラグインが利用可能play コンソールに機能を追加するにはsbt プラグインを書く必要があるScala に慣れてないとハードル高め
  • 23. 拙作の例ScalikeJDBC Mapper Generator特に Play20 専用ではないので Play プラグインとは表記していないplay コンソールで「scalikejdbc-genuser」とやると user テーブルを元にapp/models/User.scala 自動生成
  • 24. 生成されたコード利用例// app/models/User.scalaval user: Option[User] = User.find(123)val count: Long = User.countAll()DB localTx { implicit session => User.findBy(“group_id = {groupId}”, ‘groupId -> 234) foreach { user => user.copy(groupId = 345).save() }}
  • 25. プラグインではない Play 拡張
  • 26. プラグインではない拡張Play の機能を拡張するのにプラグインにとらわれる必要はない@gakuzzzz さんによる play20-authは Controller に mixin して使うPlay20 を拡張、便利にするためにつくられたものは何でもモジュール?
  • 27. playmodules.net有志の方が作ったサイト(非公式)何かつくったらとりあえず登録してみるのもいいかもただ、将来的には公式サイトにうまく集約できる方がよさそう
  • 28. ScalikeJDBC のご紹介
  • 29. ScalikeJDBCSQL を知っていればすぐ使えるコードをどこでもそのまま再利用可能柔軟なトランザクション制御複数のデータソースに同時アクセス開発、サポートがとてもアクティブ
  • 30. あえて短所も・・他に比べてまだまだマイナーO/R マッパーではない記述はあまり DRY ではないのでコードの自動生成によってカバーしているPlay20 については Typesafe Stackに SLICK(ScalaQuery)が入る予定
  • 31. 試してみてくださいmapper-generator とセットでどうぞレガシー DB 連携の業務実績ありもしバグがあったら光の速さで直します日本語の情報も増やす予定ですまずはこちらをご一読ください
  • 32. #akskscala へのお誘い
  • 33. Scala はじめませんか?akskscala.github.com隔週で木曜 20:00∼赤坂(溜池山王)Play20 をやるなら Scala は必修です次回は 7/26 zentasks をいじります