Scala関西Summit 2016へ参加してきました #scala_ks

はじめに

http://summit.scala-kansai.org/

http://skug.connpass.com/event/38349/

去年のScala関西 Summit 2015に参加してまた参加したいと思っていたのと、 ScalaMatsuriの運営の参考になればと思い、参加しました。

セッション

今回は、どのセッションも面白そうだったのと、社内に持ち帰って共有したい内容が多かったので、悩みました。

その中で以下のセッションを選びました。

  • はてなにおけるマイクロサービスとScala
  • akka-stream を始めるときに覚えておきたいこと
  • Implicit 再入門
  • Play2+SlickだけじゃないScalaのWeb/DBフレームワーク事情
  • Akka Clusterのネットワーク分断耐性設計
  • 今からはじめる Lens/Prism
  • scala.collection 再入門

Scalaを使いつつDDDを導入しているのでDDDと相性が良いことは実感していましたが、 一部とは言え、はてなのような大きなサービスのドメインを写し取りつつDDDを実践するという話は、とても参考になりました。 Scalaの定石を探る会は、とても興味深かったので今後のカンファレンス等で話される機会があるのを願ってます。

akka-streamは、Reactive Streamsについてずっと勉強していたので、実際にプロダクトに導入するにはどうすればいいのかを学びたかったので、 特に気になっていました。 小さな部品を組み合わせて大きな部品を作っていくところや、どのように既存のAkkaのActorと連携していくのかを知ることが出来てとても勉強になりました。

Implicit 再入門については、様々な入門書や日本語のドキュメントで知ってはいたものの、若干の不安がありましたが、がくぞー先生の説明で改めてScalaのImplicitの機能を知ることが出来ました。

Scalaのフレームワーク事情で紹介されていたScalikeJDBCは、現在のプロジェクトでも利用しており、 フレームワークの標準機能としてDAOやActiveRecordのような使い方が出来て、 さらにSQLの行数が多めの集計用クエリなどでもフレームワークを変えること無く利用出来るので、かなりおすすめです。 特に、ログ周りの設定は、クエリチューニングの際にとても助かっています。

Akka Clusterを導入するかは今後の状況次第ではありますが、分散処理という文脈の中でClusterでどういう故障が起きるのか、 故障が起きた際にどう対応すればいいのかを学ぶことが出来て、分散処理基盤を動かしていくことの難しさを知れました。

Monocle、Lens、Prismは名前だけ知っていて、コワイものだという印象でいましたが、 広く一般的なgetter/setterは関数の世界ではどういったものかを知れました。 case classのインスタンスのcopy hellは、ドメインオブジェクトの変換時にどうしても出てきてしまう問題の一つだと思うので、 適切な局面で扱えるようになりたいと思いました。

社内のScala勉強会でScalaのcollectionをどう使って行けばいいのか説明する時に参考に出来ると思いました。 特に計算量については、件数が多いデータを扱うことが多いプロジェクトなので、頭に入れながらやらないとパフォーマンスが出ないと思うので、ありがたい内容でした。

おわりに

丸一日ずっとScala漬けだったので途中疲れてしまいましたが、懇親会でTLで気になっていた人と実際にお会いする機会があったり、 お世話になっている人にお礼を伝えることが出来たりと、とても充実した一日でした。

また来年開催されることになったら、是非参加したいと思います。

参加者、スタッフ、スポンサーの皆様、ありがとうございました。