Scala DB ライブラリ事情(2014/06 版)
最初に調べてから一年経ったので、また GitHub スター数の推移を見てみました*1。というか、こういうの自動化するサービスがあるといい気がしてきたけど。。
DB ライブラリ
順位 | 名前 | 2013/06 | 2013/07 | 2013/08 | 2013/09 | 2013/10 | 2014/06 | 総増減 |
---|---|---|---|---|---|---|---|---|
1 | Slick | 613 | 638 | 658 | 692 | 717 | 922 | +309 |
2 | postgresql-async | 159 | 187 | 213 | 227 | 240 | 421 | +262 |
3 | Squeryl | 322 | 329 | 334 | 338 | 340 | 365 | +43 |
4 | ScalikeJDBC | 112 | 135 | 141 | 150 | 180 | 274 | +162 |
5 | Querulous | 154 | 157 | 158 | 162 | 164 | 170 | +16 |
6 | scala-activerecord | 92 | 101 | 104 | 113 | 130 | 168 | +76 |
7 | Activate | 85 | 94 | 99 | 103 | 112 | 163 | +78 |
8 | sqltyped | 109 | 108 | 110 | 119 | 121 | 162 | +53 |
9 | SORM | 91 | 95 | 97 | 100 | 102 | 127 | +36 |
10 | ScalikeJDBC-Async | - | 14 | 20 | 27 | 28 | 59 | +59 |
11 | Prequel | 35 | 37 | 39 | 41 | 44 | 58 | +23 |
12 | Relate | - | - | - | - | - | 42 | +42 |
13 | DataExpress | 24 | 24 | 27 | 27 | 29 | 37 | +13 |
14 | Scala SQL DSL | 28 | 27 | 27 | 27 | 28 | 28 | 0 |
15 | jdub | - | - | - | - | - | 24 | +24 |
16 | MyBatis Scala | 1 | 3 | 4 | 4 | 7 | 14 | +13 |
17 | ScalaSQL | 12 | 13 | 13 | 13 | 13 | 13 | +1 |
18 | Scweery | 12 | 12 | 12 | 12 | 12 | 11 | -1 |
19 | mirage-scala | 4 | 4 | 4 | 5 | 5 | 7 | +3 |
20 | shirahae-sql | - | - | 2 | 2 | 2 | 2 | +2 |
フレームワークの一部
順位 | 名前 | 2013/06 | 2013/07 | 2013/08 | 2013/09 | 2013/10 | 2014/06 |
---|---|---|---|---|---|---|---|
1 | Anorm | - | - | - | 3697 | 3797 | 4906 |
2 | Lift Mapper | - | - | - | 717 | 722 | 796 |
3 | Spring JDBC Scala | 154 | 168 | 182 | 194 | 212 | 262 |
4 | Skinny ORM | - | - | - | - | 99 | 251 |
5 | Circumflex ORM | 136 | 136 | 137 | 140 | 143 | 155 |
感想など
Slick と postgresql-async のスターがかなり増えていますね。また、手前味噌ですが ScalikeJDBC、Skinny ORM も順調に成長できたといってよいのではないかと思います。
注目すべき点としては Relate というライブラリが出てきてなかなか面白い存在です。Anorm と比較して「パフォーマンス的に生 JDBC と同等」とうたっています。
https://www.lucidchart.com/techblog/2014/06/17/performant-database-access-relate/
提供している Lucid Software というのはデータ分析をビジネスとする会社のようです。元々 Anorm を使っていたものの、かなり大量のデータを扱う必要があって ResultSet からの取り出し部分でのオーバーヘッドが無視できなかったため、独自で開発したとのこと。ここでいうオーバーヘッドは ResultSet からの取り出し部分に限った話なので、通常はそれほど重視する必要はないかなと思いますが、速いのはよいことですね。
また Simple Finance Technology という会社が出している jdub というライブラリを見落としていたようで、こちらを加えました。ただ、この会社が Scala 2.9.2 を使い続けているのか、他のバージョンへのリリースがされておらず、新しい Scala のメジャーバージョンが出る度に issue が登録されている状況のようです。ていうか、なんかビルドが Maven だけど...。
この会社、テストライブラリも自作していたりして、なかなか興味深いです。
https://github.com/SimpleFinance/simplespec
simplespec も Maven でやっているようですが、こちらは 2.11 にもビルドしているようなので jdub は一部の Scala 2.9.2 なレガシープロジェクトだけで使っているということなのかもしれません。
一般的にライブラリの提供元が会社であるということは、半強制的にメンテナンスがチーム体制となるので、継続性という面はプラス要因といえます。それだけでなく、少なくとも何らかの本番環境で使われているということの証明でもあります。最近の OSS では会社をつくるケースが増えている印象もありますが、やはり仕事の一環としてメンテナンスされているというのはよい状況だと思います。
私がやっているようなボランティアベースの開発においても、そのライブラリを使っている会社の開発者を積極的に関係者に巻き込んでいくことで、会社をまたいだ業界内のギルトのようなチーム*2でメンテされる状況をつくることができればいいと思っています。ということで、既に関わってくださっている方々にはとても感謝しております。いつもありがとうございます。