Scala

IntelliJ IDEA を無料で使う方法

IntelliJ IDEA は Community Edition であれば無料で使えますが、 Ultimate Edition になると大体初期2万+維持費1万/年くらいの課金をする必要があります。 機能比較 これをどう見るかは人によると思いますが、自分は Scala はほとんど Emacs で書いてし…

build.sbt の変更を検知する sbt プラグインを作りました

git でブランチを切り替えたらうまくビルドできなくなって困ったけど、build.sbt が変わっているのに sbt の reload をするのを忘れていただけだった、ということがたまに起こります。これを防ぐために、.sbt や project/.scala が変更されていたら警告を表…

Flyway は複数人での開発に向かないという誤解について

“データベースマイグレーションについて考えないといけないことや諦めないといけないことが結構あるでよ” http://t.co/BYna6w5luj 期待して記事見たが、複数人開発時におけるバージョン番号の衝突について説明がなかったのが残念。紙面が限られてるししゃあ…

play-json で snake_case な json を camelCase な case class にマッピングする

play-json を使えば json を case class にマッピングすることは簡単にできますが、json のキーがそのまま case class のフィールドに対応するため、snake_case な json API を case class にマッピングするためには、case class のフィールドも snake_case …

Play 2.4 の Module の作り方と Plugin からの移行について

Play 2.4 では今までの Plugin の仕組みが deprecated となり、 新たに Module という仕組みが導入されています。 Module はこれまた新たに導入された Runtime Dependency Injection の上に乗っかっています。 Play では Guice をデフォルトの DI 実装として…

sbt でファイル変更をフックしてコンソールをクリアしつつコンパイルする

Scala Advent Calendar 2014 の 12 日目です。 sbt で ~compile でファイル変更をフックしてコンパイルは皆さんよくやってると思いますが、 ~ ;eval "\u001B[2J\u001B[0\u003B0H" ;compile とにするとコンソールをクリアしつつコンパイル続行するのでちょっ…

Heroku で JDK のバージョンを指定する

Heroku でサポートされている JDK は 1.6, 1.7, 1.8 です。 今ではデフォルトは 1.8 ですが、古いアプリではどうやらそのまま 1.6 が使われているようです。 JDK のバージョンを指定したいときには system.properties というファイルを使います。 java.runti…

scala-csv 1.1.0 をリリースしました

https://github.com/tototoshi/scala-csv scala-csv 1.0.0 ではパーサーをパーサーコンビネータで実装していましたが、巨大なファイルをパースしたときにパフォーマンスで問題があったので、パーサーコンビネータをやめて var をふんだんに使った実装に書き…

Play で Scalate を使う

play-scalate っていう名前のプラグインはいろんな人が書き散らかしてて github 検索するとボロボロ出てくるんですが、ついうっかり仲間に加わってしまいました。 https://github.com/tototoshi/play-scalate build.sbt に設定すれば libraryDependencies ++…

テンプレートエンジン Night で Scala のテンプレートエンジンの紹介をしました

テンプレートエンジンNight on Zusaar テンプレートエンジン Night という不穏なイベントで Twirl を中心に Scala のテンプレートエンジンの紹介をしました。 Scala を知らない or そんなにやってない人向けの発表です。 スライドにはあまり内容詰め込んでな…

Scala 2.11.3 が生まれる前に死んでしまった話

↓に関して、https://gitter.im/scalajp/public で盛り上がってた内容をまとめました。 Scala2.11.3がでたけど絶対使っちゃダメです - scalaとか・・・ なぜこんなことになってしまうのだろう(未調査) https://github.com/skinny-framework/skinny-framewor…

Slick でテーブル定義のコードを自動生成する

Slick 2系では experimental 扱いではありますが、コード生成の機能が含まれていて、 めんどうなテーブル定義のコードを自動生成することができます。ちょっとやってみましょう。 テスト用のテーブル、こんな感じです。 slickcodegenexample=# CREATE TABLE …

ScalaJP の Gitter がオープンしました

ScalaJP のメーリングリストでも流れていますが、 Gitter という Github と連携して使えるチャットサービスを利用して、Scala の日本語チャットルームができました。(kawachi さんが作ったのかな?)すでに 60 人くらい参加しているようです。 https://gitter.…

Scala.js が sbt プロジェクト以外でも使えるようになっていた

Scala.js 0.5.0 では standalone 版が配布されるようになりました。 http://www.scala-js.org/news/2014/06/13/announcing-scalajs-0.5.0/ これで sbt プロジェクトでなくても Scala.js が使えるようになりました。 以下の URL で配布されています。 http://…

Play 2.4 と Dependency Injection

Play 2.3 が出たばっかで 2.4 の話をします。 前置き: Scala での DI Scala では DI についてのベストプラクティスと言える方法はなく、まだ意見が分かれている状態です。大きく割ると DI コンテナなどを使った動的な DI と、cake pattern, implicit paramet…

Play で Scala.js を使う

Play meetup では Play や Scala のフレームワークの歴史みたいな話をしていましたが、本当はこのネタで LT をするつもりでした。諸事情によりってやつです。 さて Play で Scala.js をサポートしようぜって話は少し前からありますが、今のところまだ進展は…

なんでこがいに並外れた Typesafe ができたんか言うたら...

「よくシリコンバレーのスタートアップが作ってるようなうさんくさいビデオ」を Typesafe も作っていました。 Typesafe activator ダウンロードするか、めんどくさい...とサイトに行ったらいきなりビデオ見せられました。なかなかのユーザー体験をしました。…

Scala 版 factory_girl みたいなのを作りました。

https://github.com/tototoshi/seedbedScala で factory_girl っぽいものを作りました。*1かなりお手軽な感じになっています。 依存ライブラリは特にありませんのでどのデータベースライブラリを使っていても大丈夫です。 動作は postgresql と h2 でのみ確…

sbt-native-packager でお手軽に Scala アプリケーションの deb, rpm, zip を作成する

Scala Advent Calendar 13 日目の記事です。 sbt-native-packager の紹介をします。 https://github.com/sbt/sbt-native-packager http://www.scala-sbt.org/sbt-native-packager/ sbt-native-packager とは rpm, deb, universal(zip) パッケージが簡単に作…

アルパカの話をしました @ 怖いScala

怖いScala(http://connpass.com/event/4112/) で自作のブラウザ操作用簡易言語 alpaca の紹介をしてみました。 ブラウザを使った自動テストをしたいけどいろいろしんどいので挫折して、もう手動テストを高速に行うで妥協しよう、となったときの産物です。 ht…

sbt-musical の話をしました @ kwkni_scala

怖くないScala勉強会 http://connpass.com/event/3420/ で sbt-musical の話をしました。ので、スライド上げておきます。http://tototoshi.github.io/slides/kwkni-scala-best-compiling-ever/

play-flyway の話をしました @ 歌舞伎.tech #1

#kbkz_tech で play-flyway の宣伝をしました。 大したものではないですが資料上げときました。http://tototoshi.github.io/slides/kabukiza-tech-goodbye-play-evolutions/

ScalaでWebAppの開発に必要なN個のこと

PerlでWebAppの開発に必要なN個のこと - Islands in the byte stream の Scala 版です。 あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要…

play-flyway 0.2.0 をリリースしました

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…

Scala のモデルクラスでプライマリキーとかをどう扱うかという話

お悩み相談です。Java とか Ruby、少なくとも ActiveRecord とか Hibernate とかではあまり気にならない話です。Scala で例えば Slick や Anorm, scalikejdbc などのクエリのサポートのみでモデルクラスの設計はユーザーに任されているものだと、プライマリ…

play-ascii-art-plugin 0.2.0 をリリースしました

https://github.com/tototoshi/play-ascii-art-pluginPlay の起動・終了時にアスキーアートを表示させるジョークプラグイン play-ascii-art-plugin の 0.2.0 ををリリースしました。play dist でのデプロイに対応しました。詳しくは前回のエントリを参照して…

Play で conf/ 以下のファイルを扱う場合の注意点

Play では conf/ 以下に設定ファイルや、マイグレーション用の sql を置きます。 場合によってはちょっとした画像をファイルを置くこともあるかもしれません。例えば、アプリ起動時にアスキーアートを表示するためにその素材を置くとか。あると思います。 こ…

Play 2.2, 2.3 Roadmap

https://docs.google.com/document/d/11sVi1-REAIDFVHvwBrfRt1uXkBzROHQYgmcZNGJtDnA/pubScala の重要と思うとこだけピックアップ。 2.2 Typesafe Activator Typesafe Activator っていうブラウザからプロジェクトのテンプレートを作ったり、開発できたりし…

sbt のプロンプトに git のブランチ名を表示させる

sbt は簡単にプロンプトが変えられることはご存知でしょうか。 build.sbt で shellPrompt を定義するだけです。 shellPrompt の型は SettingKey[State => String] なので := の右側には State => String という型の関数を定義します。 state ってなにって感…

コンパイル中に音楽を流せる sbt プラグインを作りました。

Scala のコンパイルが遅い件は「Scala コンパイル 遅い」とかで適当にググればいいと思います。 https://twitter.com/search?q=Scala%20%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%20%E9%81%85%E3%81%84 コンパイルが遅いと開発速度が当然鈍りますから…