LoginSignup
4

More than 5 years have passed since last update.

posted at

updated at

第1回 Scala関西勉強会

はじめに

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

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
What you can do with signing up
4