株式会社セプテーニ・オリジナル 下村 様 Scalaの線形化と抽象型メンバの統一の限界
- 自分型アノテーション
- value size is not a member of ListA.this.B
scalacは線形化のプロセスで抽象型メンバーのプロセスにおいて最後のものが採用される
コンパイルが通った
自分型アノテーションで線形化の順番を明示する
- Dottyではなおった
株式会社リクルートマーケティングパートナーズ 松川 様 DDD on Slick3
- クリーンアーキテクチャ
- Slickだと、DBIO型を使う必要がある
- テスト用のTestRunner
- UseCase層でトランザクションしたい
- DBIO型をScalaz.Monadへ
Fringe81株式会社 豊島 様 Scala on GAE
- GAEを採用していること
- なんでGAEなのか
- 既存の事業やりながら新規もやるのでリソース厳しいから、Paas使ってインフラ部分を楽したい
- Javaのライブラリとかよい
- 「Scalaでお仕事使われているんですか」
- GAEで大丈夫なのか
- GAEで動いているのか
- GAE Scala
- スタンダード環境
− Java7
- jetty
- スタンダード環境
− Java7
- Java8じゃない
- flexible environmentをつかうことでJava8/Dockerを使っている(制約多いけど早い。G社としてはスタンダードを使って欲しい)
- GAEのフレキシブルは仕様が不安定なのでG社としてはあんまりおすすめしていない
長らくベータ版だったのが、最近GA化した
ケーススタディ akka-httpで作ったプロジェクトをデプロイする
- 東京リージョンなのでレイテンシも良い
- app.yaml
- Dockerfile(ファットなjarじゃないといけない)
- gcloud app deploy
Read系はGAE standard(golang シンプルなサーブレット)
- Write系はGAE flexible(scala きっちり作るぶぶん)
というCQRSを採用する
- NEWS: Java8がGAEスタンダードでアルファリリース
株式会社オプト 田中 implicit parameterの解決規則
− implicit 便利だけど把握するのが難しい - どこで定義したらimplicit value見つけてきてくれるのか分からない - implicit インスタンスがどこから来たのか
メソッドに引数に合う型の値をコンパイラが探してきて代入してくれる
ローカル
- importされたパッケージ
- トレイト/クラス
コンパニオンオブジェクト
implicit parameter
- 型引数のコンパニオンオブジェクトも検索対象
- scalaz.Orderをユーザー定義型でも使えるようにしたい
デフォルトの解決先を指定することが出来る
Fuge[Hoge]のインスタンスがどこから来たのか
- コンパニオンオブジェクトを見る
- 探索規則を把握している
- IDEAでCtrl + Shift + Pするといい
- バグの温床になるのでimplicit conversionは多用しないこと
株式会社マーベリック todesking 様 DatasetでもzipWithIndexしたい
- Spark
- 大規模データを分散したマシンで扱うためのフレームワーク
- 仮想的な配列
- HDFS上のファイル
- RDB/Redis
- データモデル RDD[A]
- 基本的データ型
- DataFrame
- RDDと同様だけども別実装
- 型安全性が犠牲に
- SQLによるデータ操作
- カラムナストレージによりメモリ効率が上がった
- 型安全性を向上させたDatasetというのもある
- monotonically_increasing_id()
- RDD経由
- Partition Sparkにおけるデータの分割単位 処理はParitionごとに並列に実行される
- 複数のpartition上で連番を振る
- DataFrame/DatasetはRDDの上位互換じゃないが、InternalAPIを使えば出来なくもない
- RDD経由でやったほうがいい