ScalaMatsuri 2016 1 日目に参加してきました
私は業務で Scala を使うことは無いですが、社内システムや簡単な API サーバーのプロトタイプをするときに Scala を使うことがあります。
なので Scala を勉強するためと、社内で Scala を使う人を増やすにはどうするのが良いか考えるために ScalaMatsuri に参加しました。
参加したセッションは次のとおりです。
- なぜリアクティブは重要か
- 楽しく役立つ Scala リファクタリング
- バッチを Akka Streams で再実装したら100倍速くなった話
- アジアから Scala OSS に貢献するということ
- ScalaコードはJVMでどのように表現されているのか
メモレベルですが残しておこうと思います。
なぜリアクティブは重要か
www.slideshare.net
リアクティブと言うと、 The Reactive Manifesto や、RxJava、Akka など、私にとってなかなかつかみどころのないものでした。
このセッションでは、リアクティブの実装から見て重要な概念をピックアップしていて、自分なりのリアクティブの理解を作りことができてきました。
以下は聞いた内容のメモです。
- モジュール性
- in に依存関係を集める
- モジュールの中に状態を閉じ込めることで障害を隔離する
実行順序はどうするのか
- 有向グラフ
- いつもの計算はデータフローに置き換えることができる
- けど、どうやって実行するか
- だからこそ実行モデルを別に考えることができる
- リアクティブな実行モデルとは?
リアクティブな実行モデルに関数型は適しているのか
-
- なんで分散処理したいのか
- スケーラビリティ (システムと組織)
- 対象外性 (部分的な障害に留める)
- そもそも全く新しい考え方というわけではなく、リアクティブ・システムと言う名前をつけた
- それはつまりメッセージ駆動
- なんで分散処理したいのか
Apache Dataflow
- イミュータブルインフラストラクチャー?
- ウェブサービスのオーケストレーションにもリアクティブは活用できるのではないか。
- データフローを定義して、クラウド上のランタイムに乗せると、リアクティブなシステムになる、みたいな。
楽しく役立つ Scala リファクタリング
www.slideshare.net
話されていた内容は、Scala に限った話ばかりではありませんでした。
- 書式を決めた文字列を多用するのではなく、きちんとモデリングする
- 説明変数を用意する
- Scala の場合だと、説明ヘルパー関数とかにもなるんでしょうか
- タプルにインデックスでアクセスするとわかりづらいので、これもモデリングする
ScalaMatsuri では幾度どなく聞く事になりましたが、Scala は表現力が非常に高い反面、簡潔すぎる書き方ができます。
名前をつけることは本当に重要ですね。
バッチを Akka Streams で再実装したら100倍速くなった話
http://www.slideshare.net/kazukinegoro5/akka-streams-100-scalamatsuri
Akka Stream でやったらどうなったかと、また他の Spark や Storm などと比較するとどうなのか、とか聞いてみたかったです。
また、自分でもやってみようと思います。
アジアから Scala OSS に貢献するということ
www.slideshare.net
英語は重要だと思いました。
Skinny Framework や ScalikeJDBC は英語ドキュメントが非常に充実しています。
喋れたり、書けるようになるにはそれなりの努力が必要になりますが、それによって得られるメリットは大きいと改めて実感しました。
ScalaコードはJVMでどのように表現されているのか
www.slideshare.net
こちらも Scala に限らない話ですが、クラスファイルを読み解くということは、ちょっと込み入った開発をしようと思うと必要になるスキルだと思います。
JVM の invokeDynamic 命令が追加されたこともあったり、JJUG のナイトセミナーで JVM の話を聞いたこともあって、JVM での表現については興味がありました。
参考までに、JJUG で聞いてきたセッションのスライドはこちらです。
https://blogs.oracle.com/buck/resource/hs_sync_jp.pdf
クラスファイルを読むことは一件敷居が高いように見えますが、このセッションのおかげできっかけをつかめた人は多いのではないでしょうか。
まとめ
スタッフの方に本当に感謝です。
進行はスムーズで、お弁当も充実してました。
セッションの内容も習熟度に応じて興味のあるものを選択できました。
Scala をもっと使いこなせるようになりたいと思うような、非常に充実した一日でした。