ぜったいってなに

Software Engineerのブログです。

Play Scala周りで出てくるよくわからん単語を整理していく

Scalaを触ってると聞いたことない単語がバンバン出てくる。
参考となるドキュメントを漁ってみても、Java上がりの人向けに書いてる記事が多く、
業務でJavaを使ったことがない人間からしたら結構ツラい。


それでもPlay ScalaでDBアクセスをしようとがんばって調べつつ設定をしていたが、
だんだんわけがわからない状態になってきたので、一旦言葉の意味と関係性を整理したい。


DBアクセス用ライブラリ

調べてみたらこちらの記事が欲しい情報をほぼ全て網羅していた。

takezoe.hatenablog.com

一応メモしたことを書いておく。

JDBC

JavaRDBとの接続用API
conn = DriverManager.getConnection()して
conn.createStatement()したStatementオブジェクトにSQL文を渡して
executeQuery()ってしたら漸くDBにCRUDができる。
Webアプリケーション開発で初めて触ったのがRailsActiveRecordだったので
かなり面倒に感じる。

Hibernate

JavaのORMライブラリ。
JDBCを使ってRDBMSと接続しているっぽい。
実装用のインタフェースが直接JDBCを扱うより充実しているんでしょう。
使ったことはないのでわかりませんが。

ScalikeJDBC

Scala用のORMライブラリ。
これもJDBC上で動くっぽい。


RDB

H2

組み込み用RDB。DBサーバとしても使える。
Android上に載っているSQliteと同じカテゴリ。
JDBC, Hibernateなどを使ってアクセスできる。

MySQL

PostgreSQL

ry

MongoDB

r


カテゴライズできないもの

Akka

Scalaのライブラリ。並行処理やアクターモデルに対応している。
ここが詳しい。

www.slideshare.net

Maven

ソフトウェアプロジェクト管理ツール。
ここが詳しい。

1. Maven とは | TECHSCORE(テックスコア)


Play Scalaにどう関連するかというと、
Maven RepogitoryにあるlibraryDependencies
build.sbtに追記すると、ビルド時に記入したソフトウェアをインストールしてきてくれる。


例えばDB周りでslickpostgresqlを使いたい場合は以下のように書く。


build.sbt

1 name := """play_test"""
2
3 version := "1.0-SNAPSHOT"
4
5 lazy val root = (project in file(".")).enablePlugins(PlayScala)
6
7 scalaVersion := "2.11.7"
8
9 libraryDependencies ++= Seq(
10   cache,
11   ws,
12   "org.postgresql" % "postgresql" % "42.1.4",
13   "com.typesafe.play" %% "play-slick" % "2.0.0",
14 )

ここまででわかったこと

言葉の関係性を整理した結果、 DB周りに関してはこんな感じの組み合わせができる、ように見える。

  1. Play Scala * slick * PostgreSQL
  2. Play Scala * scalikeJDBC * MySQL
  3. Play Scala * anorm * H2

など。


今回のWebアプリケーションでは1の組み合わせを採用したい。
PostgreSQLを含めたNoSQLをまともに触ったことがないので、この機会に触ってみたい。