読者です 読者をやめる 読者になる 読者になる

seratch's weblog in Japanese

About Scala, Java and Ruby programming in Japaense. If you need English information, go to http://blog.seratch.net/

初心者の方にこそすすめたい ScalikeJDBC #play_kb

#play_kb

「PlayFramework関西ビギナーズ 第2回 #play_kb」という Play Framework 初心者の方向けの勉強会が行われているようです。素晴らしいですね。

http://www.zusaar.com/event/891003

東京で Scala 界隈の方にお会いすると、名前くらいは知っていただけていることも増えてきましたが、それは地域限定の話で、まだまだ知名度が低いようです。

ScalikeJDBC とは

上記の @kmizu さんの説明の通り、いかに効率的に SQL を記述するかを目指して開発している DB アクセスライブラリです。

SQL を直接書くと嫌なことっていくつかありますね。例えば、文字列で書かれた SQL はタイプセーフじゃないとか join クエリを書くのが DRY じゃなくて面倒くさすぎる・メンテできないとかそういった問題です。

ScalikeJDBC も Scala 2.9 時代には Anorm と同様にそういうウィークポイントがあったのですが Scala 2.10 から入った String Interpoaltion を使って、そういった問題をクリアしています。詳しくはこちらをご覧ください。

http://seratch.hatenablog.jp/entry/2013/02/28/220754

SQLInterpolation はいざとなれば SQL を書けるという意味で有用ですが、やはり Interpolation で書いていると SQLSyntax の部分以外はタイプセーフでなく、また、見た目もちょっとごちゃつく感じはあります。

それを解決するために 1.6.0 から QueryDSL という新しい API を提供しています。これについてもブログに書いています。こちらをご覧ください。

http://seratch.hatenablog.jp/entry/2013/05/12/001057

初心者の方に向いている 3 つの理由

必要な前提知識が少ない

「for 式ってよくわからないんだけど・・」という状態でも大丈夫です。最低限の SQL の知識がある方ならすぐにコードを書き始められるはずですし、実際そういう声をよくいただいています。それ以外には implicit parameter さえ理解していればまずは十分です。

http://www.ne.jp/asahi/hishidama/home/tech/scala/def.html#h_implicit_parameter

日本語情報が多い、日本語で質問できる ML もある

日本で開発されているので、日本語の情報が充実しています。ガラパゴス化するのは避けたいので、オフィシャルな場は全て英語でコミュニケーションすることにしていますが、日本語の情報を増やすことには今後も取り組むつもりです。

また、日本語で質問できる ML もあります。こちらもぜひ活用してください。

https://groups.google.com/forum/#!forum/scalikejdbc-users-group-ja

コードの自動生成がある

mapper-generator という sbt プラグインを使えば、既存の DB に対応する Scala コードを自動生成できます。プロダクトコードだけでなく対になるテストも生成されます(specs2、ScalaTest を選択可能)。生成したコードをサンプルにしながら、書き方を学んでいくことができます。

https://github.com/seratch/scalikejdbc/wiki/Generating-Models

早速、試してみる

最近 Typesafe 社が提供している Activator という仕組みがあります。簡単にプロジェクトのひな形とちょっとしたチュートリアルをダウンロードして、すぐに試せるようにするための仕組みです。

ScalikeJDBC もチュートリアルを提供しています。4 つのテーブルを使った model の実装と Play2 で書かれた JSON API サーバのサンプルです。早速試してみたいという方はまずはこちらを触ってみてください。

http://seratch.hatenablog.jp/entry/2013/07/02/005454

http://typesafe.com/activator/template/scalikejdbc-activator-template

Activator 経由ではなく直接ダウンロードする場合はこちらです。

https://github.com/seratch/hello-scalikejdbc

その他、参考情報

まずはこの辺を見ていただければと思います。

Wiki

https://github.com/seratch/scalikejdbc/wiki

ScalikeJDBC Users Group

https://groups.google.com/group/scalikejdbc-users-group

ScalikeJDBC Users Group Japan

https://groups.google.com/group/scalikejdbc-users-group-ja

ScalikeJDBC-Async

最近 non-blocking な API を提供する拡張をリリースしました(PostgreSQLMySQL のみ対応)。そういうニーズのあるアプリケーションを書く時も ScalikeJDBC を使うことが出来ます。

http://seratch.hatenablog.jp/entry/2013/07/30/234630

何を使うべきか

今のところ Slick と Squeryl が人気のあるライブラリです。

http://seratch.hatenablog.jp/entry/2013/06/27/001256

特に Slick が Typesafe Stack 標準ということで「これからやるなら Slick でコードを書いてみたい」という方も多いのではないかと思います。Slick を使いこなせて、かつ、特に不便も感じないという方はそのまま Slick を使うのが良いと思います。もし「これとはちょっと違った方向のもので使いやすいものないかな?」と思ったときは ScalikeJDBC を試してみてください。