はじめに
2014/12/13,本日関西のScala界隈を活性化させたいという@aa7thさんのアツい思いから,第一回Scala関西勉強会が開催されたので,本稿ではその参加報告をしたためる.
以下,セッションのメモ.ひどい乱文なので,ざーっと見る程度でお願いしたい.
私もLT登壇を行った.よい機会を頂き,ありがとうございました.
DoorKeeper:
http://connpass.com/event/10091/
本稿により一人でも次回参加者が増えれば幸いである.
####@aa7thさん:Scala超入門
資料:http://t.co/s7MIJ2s7W6
Scalaの特徴について紹介.
-
メリットとデメリット
メリット:コードが短い
デメリット:コンパイルが遅い -
始め方
JDKもって- Scalaインストール
- Activatorインストール
-
色々リンク
bit.ly/scala_kb/ -
Scalaっぽいコード書くにはまずはコレクション操作
絞り込みたいときにはfilter,変換したいときはmapとか
この操作したいときはこれ!というコレクション操作のパターンを知っておくと便利val list = Range(1,10).toList
//奇数だけのリスト生成
//前0をつけた文字列に変換したリストを生成
list.filter(_%2!=0)
.map(n => s"00$n")
//結果
List[String] = List(001, 003, 005, 007, 009) -
パターンマッチ
if/else if じゃなくて match文を使う
型でマッチングもできる.String型のときはこの操作とかint型のときはこの操作とか -
nullはあかん
そういうときは,Option型を使う.
具体的には → Some(x)値があるとき Noneをつけて値がない時とする
get getOrElseで値を取り出す
パターンマッチで値があるときと無い時の処理を書ける
クソコードでもいいから書く←むっちゃ大事
@naoki_wadaさん:パターンマッチングについて
Slideshare: http://t.co/QfYyB9Q7SW
-
小ネタ
一ヶ月前にscala2.11で scala -Dscala.colorでREPLがシンタックスハイライトに! -
以下でパターン列挙
1.ワイルドカードパターン
""←これがワイルドカード
Javaのswitchでいうdefault
引数に(, _, _)←引数なんでもいいから3つ
2.定数パターン
Javaと違っていろいろなパターン使える
3.変数パターン
Somethingelse 動き的にはワイルドカードと同じでもマッチした値を変数に 束縛 する
- ちょっとおまけ
先頭が大文字 = 定数
小文字 = 変数(ワイルドカード)あり
-
コンストラクタパターン
case classってなんだ クラスの定義をするときにcase修飾しをつける
→newしなくても定義できる -
シーケンスパターン
List(0, _, _)→固定数
List(0, _*)→先頭だけを評価する -
タプルパターン
タプル:一個の入れ物に型の違うものを入れれる -
型付パターン
def hoge(x:any) =
x match{
case s: String => s.length
case m: Map[_, _] => m.size
case _~~~
} -
パターンガード
-
シールドクラス
sealedってつける -
変数の束縛
- その他
case class以外で使いたい場合
抽出子: unapplyってつける
コップ本 26章に詳しく書いてある.読書会もやってる
http://t.co/pja0uFiiiO
@hayasshiさん:ScalaDBライブラリ紹介
資料:https://t.co/dmjomvGxsz
コード:https://t.co/q9leRThLuZ
-
今回の環境
JDK7u72
Scala 2.11.4
sbt 0.13.5 -
紹介ライブラリの基準
DBにh2DBが入っとる
ソースを修正せずに扱うDBを切り替えられる -
Anorm
そんなものはない
play!2.4でslickに.それまではAnorm
これからってところではもう候補にあがらない -
Slick
Typesafe社が管理するORMライブラリ
MySQLやらOracle,Postgreもいける -
Slick導入
sbtに
libraryDpencies ++= Seq{
"com.typesafe.slick" =~~~
}
って書く. -
Slick利用準備(ORM定義)
nullを扱うときはOptionで括る -
Slickその他
Joda-デフォルトで対応してない
play!2.4からslickが標準
ScalikeJCBCとかもある.
// 以降ほぼメモなし.
// 話聞くのに必死でメモの余裕がありませんでした
@mumoshuさん:play2-memcached モジュールとか
資料:http://www.slideshare.net/mumoshu/20141213-1scala-play2memcachedsupportsplay24howtocreateplay24module
play2.4からmoduleで拡張する(2.3までは拡張したければpluginやった)
-
覚えておくこと
play.api.inject
play.api.cache.cacheAPIは覚えておく -
cacheAPI: play2のキャッシュが満たすべきインタフェース
2.3まで set get remove
2.4から set get remove getOrElse:値があれば取得,なければ値を指定したデフォルト値で更新して返す -
ApplicationLifecycle
memcachedのリソース解放する子 -
inject.Module
バインディングの集合体
####@plum_shigaのLT
vimでのScala開発環境について.後日,Qiitaにて投稿致します.