by shigemk2

当面は技術的なことしか書かない

後半 メモ #ichigayageek

ichigayageek.connpass.com

株式会社セプテーニ・オリジナル 下村 様 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
  • 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経由でやったほうがいい