- 2017/2/25-26
- https://2017.scalamatsuri.org/
readable scala
- readable codeを基準に
- 他の人が最短時間で理解できるコード
記号が多いから読みづらい?
- APIドキュメントを読めばすぐ分かる
- 記号の意味が認知されているなら記号のメソッドの方読みやすい
- そうでない場合は分かりづらくなってしまう
- 記号がいいかは読み手の知識に依存する
implicit
- howとwhatを分離できる機能
- whatを書くことに集中できる
- impicitの値は直感的で自明な定義である必要がある
- abstractで抽象化すると定義を自明にできる
implicit conversion
- ...
竹添さん
scala warrior
- ruby warrior に影響されscala warriorを作った
- scalaはアカデミックなものだと思われている、と思っている
- 気軽に覚えてもらうためにゲームを作った
- フロントもサーバも全部scala
全部scalaで作るには
- scala tags
- htmlをタイプセーフに
- ほんとにこれを使うのかって感じ
- scala css
- scalajs-react
- scalajs
- サーバ用とjs翔の両方でコードを共有できる
- 既存のjsライブラリも使える
- けど型定義ファイルが必要
- tsの型定義から作成することもできる
- 型を使わないければjsライブラリをそのまま使うこともできる
- 問題点
大きな課題だったこと
- 既存ライブラリを使うことが退園
- でも最近はできるように
- commonjs形式で
まとめ
- all or nothingではない
- 適切な役割分担でscalaのメリットを活かす
前出さん
- cirkit breaker
- bulkhead
- 隣の家の火事の被害を受けないように壁を作る
- dispathcerを分ける
- cluster
- akka cluster
- node間で死活監視
- データは永続化しておく
- そのデータでリトライすれば復元できる
- backoffspervisor
- 永続化したデータを闇雲にリトライしない
- split brain resolver
- ネットワークが切れたらどうするか
- ネットワークが切れたら死んだように見えて分断されてしまう
- 分断されて両方動いても困るからどれを残すか決める
- 一定数以上のノードが残っている方を残す
- 50%以上残ってる方を残す
- 最古のノードが残ってる方を残す
- 指定したノードが残っている方を残す
- この機能はOSSに含まれていない
- idempotence
- 冪等性が担保される設計にする