LoginSignup
3
3

More than 5 years have passed since last update.

第1回 Scala関西勉強会

Last updated at Posted at 2014-12-13

はじめに

2014/12/13,本日関西のScala界隈を活性化させたいという@aa7thさんのアツい思いから,第一回Scala関西勉強会が開催されたので,本稿ではその参加報告をしたためる.
以下,セッションのメモ.ひどい乱文なので,ざーっと見る程度でお願いしたい.
私もLT登壇を行った.よい機会を頂き,ありがとうございました.

DoorKeeper:
http://connpass.com/event/10091/

本稿により一人でも次回参加者が増えれば幸いである.

@aa7thさん:Scala超入門

資料:http://t.co/s7MIJ2s7W6
Scalaの特徴について紹介.

  • メリットとデメリット
    メリット:コードが短い
    デメリット:コンパイルが遅い

  • 始め方
    JDKもって

    1. Scalaインストール
    2. 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 動き的にはワイルドカードと同じでもマッチした値を変数に 束縛 する
* ちょっとおまけ
先頭が大文字 = 定数
    小文字 = 変数(ワイルドカード)あり

  1. コンストラクタパターン
    case classってなんだ クラスの定義をするときにcase修飾しをつける
    →newしなくても定義できる

  2. シーケンスパターン
    List(0, _, _)→固定数
    List(0, _*)→先頭だけを評価する

  3. タプルパターン
    タプル:一個の入れ物に型の違うものを入れれる

  4. 型付パターン
    def hoge(x:any) =
    x match{
    case s: String => s.length
    case m: Map[_, _] => m.size
    case _~~~
    }

  5. パターンガード

  6. シールドクラス
    sealedってつける

  7. 変数の束縛

  • その他

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にて投稿致します.

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3