ScalaMatsuri 2016

概要

ScalaMatsuri 2016に参加した感想です。

scalamatsuri.org

DAY 1

Refactoring in Scala

  • Tagged Type便利そう。
  • IsoやPrismの概念、関数型っぽい。
  • 確かにLong型よりもUserId型(Value Type)を定義すると分かりやすかったりbugの埋め込みを減らせる気もするけれども、それが原因でDBとの境界に気を使ってコード量を増やしたりパフォーマンスに気を使ったする箇所を増やしたりするのトレードオフだなって感じだった。

なぜリアクティブは重要か

  • okapiesさんのスライドわかりやすい。
  • Reactiveなシステムって文脈をProgramming model, Runtime Engine, Architectureに分けて説明したの良かった。
  • Reactiveなシステムの設計の概要とそこにおけるApache Dataflowのポジションがクリアーになったのが良かった。これから標準化がどう進むのか見ものだ。
  • 分散処理系はまだまだ発展の余地があってとても話を聞いていて楽しい。
  • WebサービスオーケストレーションにもReactiveなシステムの適応余地があるのでは?って話の詳細聞こうと思っていたけど忘れてた。
  • この発表聞いていたおかげでTypesafeメンバーのパネルディスカッションの話も分かりやすくなったと思う。

猫という考え方

  • トークの最初にHardとSoftの話半分くらいしますと言っていたように、環境を含めたCatsの概要を理解するのに良かった。
  • 「softwareは真空状態にあるものではない」
  • Scalaで関数型で行うための障壁を取り除くのがCatsの目標。それは技術的な複雑さ、職場で未知への恐怖、社会的な障壁。 長期的で協力的なコミュニティを促進していく。
  • スライド中に猫が箱に頭突っ込んでいる画像が頻出するのウケた。
  • 最初に聞いたとき、型を指定しないことで実装が制限させるところがよくわからなかった。
  • Constraints Liberate, Liberties Constrainが印象的。制限と自由の話、Typesafeの人が好んで使っていた。

バッチを Akka Streams で再実装したら100倍速くなった話

  • TISとTypesafeの関係知らなかった。
  • レガシーなバッチ処理をAkka Streamsで置き換えたら295倍になったとのこと。
  • これ別にAkka Streamsじゃなくても100倍とかにはなっていたんじゃないかという気はするけれどまあご愛嬌。

ScalaコードはJVMでどのように表現されているのか

  • javapの話。
  • バイトコード読んだ経験特になかったのでまあ勉強になった。
  • こんな使い方するとのこと。他にどんなとき読みたくなるんだろうか。パフォーマンスとか気にするとき?

レジリエンスが無ければ、他は無いも同じ

  • TypesafeのCTOのトークが今回一番印象深かった。システム論っぽい感じ。思想的。
  • ドメイン知識がシステムそのものなんだろうなって感じ。
  • レジリエンスは設計方針。
  • Actorとベンディングマシーンの例わかりやすかった。(よく使われる例なのだろうか?)
  • 造船時の防水隔壁パターンの話。タイタニックは障害のカスケーディングの典型例。事故の原因は故障した部品ではなく、部品どうしの関係性にある。
  • システムのレジリエンスをどうやって実現するかって話。actorごとにboundaryを設けて、障害の伝搬を防ぐ。threadでもmachineでも良い。
  • トークの最初と最後にロッキーのテーマを流してたけど好きなのかな。

The Zen of Akka

  • Zen。味があるトークだった。
  • Akkaのロゴを山水画の山に透過させて描いていたのウケたんだけど、ロゴの由来だったりするの???
  • Actorは1つの責務に特化させるべし。他と強調して動くべし。
  • Errorビジネスロジックの問題。Failureはインフラの問題。
  • Akka Clusterの話も一般的な問題の話っぽくて面白かった。
  • AkkaはFrameworkではなくToolkit。適切に使え。
  • Constraints Liberate, Liberties Constrain(制限は私達を自由にする。自由は私達を制限する)
    • 元ネタ
  • Happy HAkking, Community!

DAY 2

Kafka Tuning

  • ドワンゴの社内マイクロサービス基盤?ではAt Least Once。Exactory Onceや順序保証はなし。
  • RabbitMQやめた理由。そこまでスケールを意識していない設計になっている?
  • 既存のクライアント(Reactive-kafkaとか)は要件を満たさず使っていない。
  • 通信は独自のバイナリプロトコル。httpアダプタを自作。既存のhttpアダプタは無いの?コンフルエントが出しているけれど、機能少ないという判断で使うの辞めた。
  • kafka 0.8当時consumerのjarが作りかけなのにmaven centralにpublishされていた…?(ガクブル)
  • コードの辛みと運用の設定値チューニングの辛み。ブログとかMLとか読み込んだとのこと。
  • 最後の質問でクラウドサービスは検討しなかったの?って聞いたら、オンプレあるししなかったって言われた。ですよね。

Scalaz入門

リアクティブシステム入門

  • 昨日のJonas氏のトークを日本語で要約した感じ。Reactive Platformのコンポーネントのその中での役割をちょっと具体的に説明している。
  • デモ。ソーラーファームを運営しているお客様。一万枚のパネルの発電状況をモニタ。故障検知。1msも無駄にしたくない。リアルタイムで。MQTT, Akka, Play, WebSocket。
  • TISはSIでもTypesafe Reactive Platformを適用出来ないか頑張っているとのこと。すばらし。

Typesafeの人にリアクティブについて聞こう/Reactive adoption with Typesafe members

  • Typesafeの四人が登壇して、質問に答える形式。
  • 質問:金融とかクリティカルなとこではどうなの?
  • 質問:GoogleもDataflowとか標準化しようとしているけれどどう戦ってくの?
  • okapiesさんのReactive Streamに関する質問とスライド使ったファシリテーション素晴らしかった。
  • これ期待
  • 録画見てちゃんと理解したい。

Scala.js コンパイルパイプライン

  • どうやってScalaのコードをJSに理解させるコードに置き換えているかの講義だった。
  • 後半はよくわからなかった。
  • 同じ感想。いきいきと話す人だった。

パネルディスカッション:Scala社内教育

  • Scalaは色んなレベルの人が色々な書き方が出来るので、その人の背景とかレベルに応じた教育方針がそれぞれあって面白かった。
  • 一日目にドワンゴの新人研修資料が公開された。
  • hatenaの新人研修資料は最初の年に海外の秋採用の新人を使ってdebugしたとのこと。 github.com

大学教育とScala

Scala 転職・年収

  • 各社の年収状況

全体の感想とまとめ

Typesafe

  • Typesafeの方々のトークを直に聞けたのがとても良かった。
  • またeed3si9nさんにTypesafeの概要とかの話を聞けたのも良かった。

運営

  • 一日目の最初に技術カンファレンスの行動規範についてののビデオが流れたけれどもとても良く出来ていた。
  • スライドの日英対訳、同時通訳とても素晴らしかった。
  • 国際化対応や行動規範、投票制のトーク選定、アンカンファレンスなどから垣間見れる運営のScalaコミュニティを尊重している態度とても良いなあって思った。
  • とても有意義な二日間になりました。関係者の方々、本当にお疲れ様でした。ありがとうございました。