Play
そろそろPlay Framework 2.9.0が出そうですね。ということで自分の送ったPull Requestをまとめてみました。 大きいところだとTwirlのScala 3対応ですね。いい感じにエラーメッセージ出すのにdottyとかsbtまで調べることになって沼でしたがたぶんなんとかなり…
Play FrameworkがLightbendの手から離れる という発表が昨年の10月にあったんですが、それをきっかけにやりとりして Play FrameworkのGitHub Team に入れてもらいました。 しばらく待ちの状態だったんですが、先週くらいから動き初めたところです。とりあえ…
github.com Modules should be fast and side-effect free Modules should be fast and side-effect free(モジュールは速くて副作用なしであるべき)と Guice の Wiki にはあります。 これは Guice モジュールの中で DB に接続したりスレッド開始したりする…
Play frameworkはキャッシュのためのAPIを play.api.cahe というパッケージで提供しています。play.api.cache はそのバックエンドとして、CaffineやEhcacheが選択でき、またサードバーティのライブラリを使えばMemcached, Redisなどをバックエンドにすること…
ScalaとJavaのコレクションを相互に変換するには scala.collection.JavaConverters が便利です。例えばJavaのコレクションに .asScala をつければ、JavaのコレクションをラップしたScalaのコレクションが作られます。ただし、いつも .asScala で済むとは限り…
taroleoさんが開発しているAirframeが最近Twitterのタイムラインで話題になっていることが多いので、そろそろ触ってみようかと思い、とりあえずPlay frameworkのDIコンテナをGuiceからAirframeに置き換えるというのをやって見ました。結果は失敗に終わったん…
play-jsonはReads/Writes/Formatを定義するのが面倒とよく言われるので、shapelessの練習も兼ねて作ってみました。 https://github.com/tototoshi/play-json-generic scala> import play.api.libs.json._ import play.api.libs.json._ scala> case class Per…
Playを触っていると謎のClassNotFoundExceptionが発生することがあります。 もしかしてそれはDEVモードだけで起きてはいないでしょうか? 先日、開発中のPlayアプリケーションで、ある依存ライブラリからClassNotFoundExceptionが発生するという現象にあたり…
Playのドキュメントを見るときに、公式サイトに行かなくても手元で http://localhost:9000/@documentation というURLにアクセスすればドキュメントサイトが見えるということはご存知でしょうか? これにはWebCommandsという仕組みで動いていて、ドキュメント…
フレームワークの便利さとコードの柔軟性とのバランスの話。 PlayにはいわゆるMVC的な機能の他にいろいろと便利っぽいモジュールが付いていますが、 実際そいつらを使っていると依存関係や柔軟性の面でちょくちょく困ることがあります。 最近何度か困ったの…
私の理解が正しければ、Play2.4のプラグインシステムにはプラグインの起動順が制御できないという大きな欠陥があります。Play2.3以前はplay.pluginsファイルに優先度を記述するというイケてない感が漂うやり方ではありましたが、問題なく制御することができ…
先週大阪行ってきました。 内容としては、flyway-play、というかFlywayの紹介っぽくなってScala成分薄めになりました。
Slick コードを生成のイブラリがあり、公式のほうにいくつか使い方のサンプルがありますが、毎回コピペするのもなあと思って sbt プラグインにしました。今のところ Slick 2.1.0 に依存しています。Slick 3.0.0 が出たらそれ用のバージョンも出そうと思いま…
flyway/flyway-play Play 2.1-2.3 向けにサードパーティプラグインとして play-flyway を開発してきましたが、少し前に Flyway の GitHub Organization に加えてもらい、めでたく公式モジュールとなりました。groupId も com.github.tototoshi から org.flyw…
play-json を使えば json を case class にマッピングすることは簡単にできますが、json のキーがそのまま case class のフィールドに対応するため、snake_case な json API を case class にマッピングするためには、case class のフィールドも snake_case …
Play 2.4 では今までの Plugin の仕組みが deprecated となり、 新たに Module という仕組みが導入されています。 Module はこれまた新たに導入された Runtime Dependency Injection の上に乗っかっています。 Play では Guice をデフォルトの DI 実装として…
play-scalate っていう名前のプラグインはいろんな人が書き散らかしてて github 検索するとボロボロ出てくるんですが、ついうっかり仲間に加わってしまいました。 https://github.com/tototoshi/play-scalate build.sbt に設定すれば libraryDependencies ++…
Play 2.3 が出たばっかで 2.4 の話をします。 前置き: Scala での DI Scala では DI についてのベストプラクティスと言える方法はなく、まだ意見が分かれている状態です。大きく割ると DI コンテナなどを使った動的な DI と、cake pattern, implicit paramet…
Play meetup では Play や Scala のフレームワークの歴史みたいな話をしていましたが、本当はこのネタで LT をするつもりでした。諸事情によりってやつです。 さて Play で Scala.js をサポートしようぜって話は少し前からありますが、今のところまだ進展は…
#kbkz_tech で play-flyway の宣伝をしました。 大したものではないですが資料上げときました。http://tototoshi.github.io/slides/kabukiza-tech-goodbye-play-evolutions/
Flyway の Play プラグイン、play-flyway の 0.2.0 をリリースしました。https://github.com/tototoshi/play-flyway インストール Build.scala or build.sbt libraryDependencies += "com.github.tototoshi" %% "play-flyway" % "0.2.0"play.plugins 1000:co…
https://github.com/tototoshi/play-ascii-art-pluginPlay の起動・終了時にアスキーアートを表示させるジョークプラグイン play-ascii-art-plugin の 0.2.0 ををリリースしました。play dist でのデプロイに対応しました。詳しくは前回のエントリを参照して…
Play では conf/ 以下に設定ファイルや、マイグレーション用の sql を置きます。 場合によってはちょっとした画像をファイルを置くこともあるかもしれません。例えば、アプリ起動時にアスキーアートを表示するためにその素材を置くとか。あると思います。 こ…
https://docs.google.com/document/d/11sVi1-REAIDFVHvwBrfRt1uXkBzROHQYgmcZNGJtDnA/pubScala の重要と思うとこだけピックアップ。 2.2 Typesafe Activator Typesafe Activator っていうブラウザからプロジェクトのテンプレートを作ったり、開発できたりし…
Play を使おうとしたら、全然パフォーマンスがでない、なんで? → Akka のチューニングが必要だった。 という話は Play 2.0 の頃から結構有名な話でした。http://qiita.com/items/0c4bb34a420665536db4 http://tech.furyu.jp/blog/?p=2069 http://gendosu.jp…
(また Play プラグイン作ったのかよと言われそうですが、、、) おしごと的な Play アプリでは Fixture 機能を自前実装して、それでテストをしていました。 ただ、scalikejdbc に依存していたため、そこだけ切り出して Play プラグインにするとかはしてません…
先日 Play 2.x の QueryStringBindable, PathBindable について - tototoshiの日記 で joda-time 用に QueryStringBindable[T] を定義して遊びましたが、それをライブラリ化しました。ご自由にお使い下さい。tototoshi/play-joda-routes-binder · GitHub 設…
よしださんのこんなツイートを見たので、 https://twitter.com/xuwei_k/status/302445064976732160 Play 2.x ではリクエストの処理をどのコントローラーのどのアクションに任せるか、 conf/routes というファイルで定義します。そのとき、パスやクエリストリ…
Play2.0 の FakeRequest って withFormUrlEncodedBody はあるけど withMultipartFormDataBody はありません。 ですが、FakeRequest[MultipartFormData[TemporaryFile] ] を地道に作ってあげれば大丈夫。*1 こんな感じになります。 package controllers impor…
スライド Togetter ustPlay2.0 いいと思います