the industrial

ブログと言うより自分のためのメモ以外の何モノでもないです。でも読んでくださってありがとうございます。

Scala関西Summit 2019 に参加しましてきました!Day-2 #scala_ks

2019.scala-kansai.org

ハッシュタグ: #scala_ks

2日目

1時くらい?まで飲んでいたので流石にちょっと眠いw

Day-2 はアンカンファレンス形式で、朝会でやるないようを決める。

見たセッションは下記。




After Effects

リチャード 伊真岡 さん : @RichardImaokaJP

リチャードさんのスライドは毎回アニメーションを導入されていて、どうやって作っているのかを紹介してくれました。

After Effectsadobe 製品で、毎月4,000円 くらいで利用できるとのこと。

実際にリチャードさんが作成された動画

www.youtube.com

こういう動画は Explainer Video というらしい。

台本を書き起こす => 絵コンテ => Illustrator => After Effects => 録音 => 動画ファイル(.mp4)




実践MONIX導入

おえ さん : @OE_uia

speakerdeck.com

MONIX とは

https://monix.io/

cats-effect のコントリビューション1位であるアレクサンドルさん( @alexelcu )が開発者。

Rx にインスパイアされて作成された、 observable sequence による非同期プログラミングライブラリ。

会場内では実際に利用している方が居なかったので、使い方を中心に発表してくださった。

最近( 2019/09 ) v3.0.0 が出た。

構成

  • monix-execution: 並行処理で副作用を上手く扱うための Low Level API。 Schedulerなど。
  • monix-eval: 並行処理で副作用をうまく扱うための、純粋関数型データ構造。Task, Coeval など。
  • monix-reactive: Rx の Scala 実装。
  • monix-tail: Pull型ストリームの純粋関数型データ構造。
  • monix-catnap: cats-effectの型クラスを元にした純粋関数型並行処理ユーティリティー

など。

sbt で monix-eval を入れる。monix にすると構成に挙げたものが全部入る。

Monix Task のときは runAsync 等をするときに必要

Task.apply ( Task.eval の alias ) は、Cats-Effectsと併せるためと、作者の意思決定で v3.0.0 から同期に。

非同期境界?

Reactive Manifest Glossary より

サンプルコードでは Task.evalAsync を呼び出すところで非同期境界となっているらしい。

スレッドをできるだけまとめることによって、コンテキストスイッチのオーバーヘッドが軽減されるため、Future の100倍くらい早いらしい。

Task.deferFutureActionA => Future[A]): Task[A]

Scheduler ( ExecutionContext ) を受け取り、 Futureを返す関数を引数にとり、Future から遅延評価される Task を作る処理。

Task.deferFutureAction[A](f: (Scheduler) => Future[A]): Task[A]

エラーハンドリング

Exponential Backoff: リトライ時間を倍にしながらリトライする

onErrorRestartLoop を利用すると、Future で実装しようとするとめんどくさい Exponential Backoff が簡単に(1メソッドで)実装できる。

並列計算API

Task.sequence / Task.gather / Task.gatherN など、並列処理を柔軟に実行できるAPIが存在する

MONIX Task の嬉しいところまとめ

  • 柔軟に非同期境界を設定可能
  • Scala Future と interop が優秀
  • 正常パス以外のハンドリングが柔軟
  • 並列計算APIが豊富
  • 関数型由来の型クラスの知識が無くても十分使える




さいご

居心地が良すぎて帰るのが億劫になってしまうまえの16時くらいに、先に離脱させていただきました。

開催にあたってはいろいろ大変なこともあったかと思いますが、参加した僕としては登壇者さんの発表のおかげで、特にモナドを中心に理解が進んだように思います!

会場提供などでご協力いただいた会社さま、登壇者さん、そしてスタッフさん、本当にお疲れさまでした!

とても楽しかったです!

来年もまた行きたいな。