ScalaMatsuri 2016 2 日目に参加してきました
引き続き ScalaMatsuri 2016 2 日目に参加してきました。
午前中は所用があったため、午後からの参加となりました。
もったいない...
ScalaMatsuri 初参加で、アンカンファレンスって一体どうなるんだろうと少し不安もありましたが、実際終えてみてとても楽しい一日になりました。
みんなの興味あることとか、実際に話してみたい人とか、せっかく来てくれている Typesafe の方に話を聞きたいとかいろいろあって、そういうのをうまく吸収できていると思いました。
参加したの以下のセッションです。
- SBT 人間
- Typesafe の人にリアクティブについて聞いてみよう
- Scala 社内教育
SBT 人間
人間ってなんだろうと思ったんですが、SBT をメンテしている方の話を聞きたいってことなんでしょうか..
SBT はビルドツールですが、ちょっとカスタマイズしようと思うと途端にどうすればいいか分からなくなっていました。
以下は聞いた内容のメモです。
- sbt プロジェクトの構成
- build
- sub-project
- source
- libraryDependencies
- build
- ビルドツールには系譜がある
- make, ant, rake, maven
- なぜ lazy val にする必要がるか
- 依存関係を作るときに、順番通りに上から評価するといろいろ面倒なんです
- Scala Puzzlers に書いてあります、みんな買いましょう
- インクリメンタルコンパイラ
- sbt が他のビルドツールと違う重要な特徴は、ビルドツールなのにインクリメンタルコンパイルにも手をだしているところです
- 密結合なアーキテクチャになっているからこそできます
- 詳しくは sbtの密結合な内部アーキテクチャ - scalaとか・・・ を読みましょう
- Task や Setting について
- sbt はインタラクティブであることが大きな特徴です
- 対話形式のコンソールがありますしね
sbt Reference Manual — 始める sbt というドキュメントがあるんですが、これでだいぶ理解が進みそうです。
Typesafe の人にリアクティブについて聞いてみよう
初日に、「なぜリアクティブは重要か」というセッションを聞いていましたが、ちょっとついていけてないところもありました。
Typesafe の 4 名の方に Akka Stream の話を中心に質問を指定ました。
以下はメモです。
- 金融系などレジリエンスが本当に求められるようなところにリアクティブは使えるのか
- 具体的な話はできないが、有効ではある
- リアクティブシステムは、実装方法たたくさんあるからリアクティブマニフェストでは原則論にとどめている
- アクター同士の組み合わせは非常に難しいのではないか
- アクターに対する批判に対しての、リアクティブストリームなのか
- ストリームがなんのかに混乱があるのでは
- Akka Stream は統合手段
- Gearpump というランタイムの実装を開発中
- ログデータを ElasticSearch に流すことを Akka でやっている。
- やらないといけないのは、ElasticSearch のバックプレッシャーのシグナルを認識できるようにしないといけなかった
- バックプレッシャーに対してのコンフィグレーションが必要
だいぶ混乱してしまったところがあるので、メモの内容が間違ってることろがあると思います
訂正できるようにあとで勉強しておこうと思います。
Scala 社内教育
非常に興味のあったテーマです。
社内でどう広めていくかの参考にしようと思っていました。
- ドワンゴもはてなも教科書を作っている。
- ドワンゴの研修で使っている Scala のテキストを公開しました
- はてなではプログラミングや関数型の素養がある人を中心に Scala の教育を行っていた
- 知見が溜まってきたので、情報系の教育を受けた人なら大丈夫かなと思う
- オープンソースにしたのはなぜなのか
- 公開するとフィードバックが得られやすくなるし、社外の人にも活用してもらえる
- 公開するデメリットは?
- 怖い人からツッコミをもらうかもしれない..
- イスラエルの会社の方
- チャットワークでは、新卒ではなく実力者が来るので、別のコストがかかる
- Scala と関数型は別物として捉えることが大事では
- 一方向の進化として捉えるべきなのか
- 関数型として使うことは一つの意思決定なのではないか
- 解決する課題は関数型でも関数型じゃなくても対応できる
- Scala のパワーを活かすには関数型の理解が必要だという目的意識を持っていた
- 目的は目の前の業務なのか
- 使いこなしたいというエンジニアとしての欲求もあった
- 次のスッテップにすすめるんじゃないかというタイミングも見計らっていた
- どう Scala に入るのがスムーズなのか
- 大学教育に対しては、影響を持とうとはしていない
- 思考が大事
- Java で純粋関数はどう記述するかに感銘を受けた
- Java の世界を隠蔽しきれていないところがあって、スタックトレースを調査するときに Scala の世界を出ないといけないときがある
なんだか書いてることがよくわからないところもあると思いますがご容赦ください。
結局 Scala の教育は難しいかなと思いました。
ある程度素養があれば、遅延型学習が効率的だなと思います。
けど現状そのステップに行くまでがハードルが高いなと思います。
英語であれば充実したドキュメントはたくさんありますが、読めたとしても習得に時間がかかります。
書籍であれば、コップ本や FPinScala があると思いますが、コップ本は内容はさほどハイレベルではありませんが、読了に時間がかかります。
また 2.8 の頃の記載なので、最新の Scala コードを読もうとするとわからないところ多々出てきたりします。
FPinScala はそもそも何回で時間がかかります。
そんなわけで引き続き社内で広めるために試行錯誤していくしかないかなというところです。
まとめ
スタッフの方、本当にありがとうございました。
会場は快適で、お弁当はおいしくて、セッションも面白くて最高でした。
レシーバーの回収は大変そうでしたが、同時通訳は本当にありがたいです。
セッションの登壇者の英語は、意識的に気をつけてゆっくり喋ってくれる方もいましたが、パネルディスカッションや発表者に対する質問などはやはりしゃべるスピードは全然早くて、英語だとついていけませんでした。
ScalaMatsuri で Scala のモチベーションが上がりまくったので、今年は Scala をガンガン使っていきたいと思います。