Scala Matsuri 2018 Day 2

お疲れ様です!まっちゃんです!
引き続き Scala Matsuri 2018 Day 2 について書かせて頂きます!

Training Day はこちら

blog.engineer.adways.net

Day 1 はこちら

blog.engineer.adways.net

朝食とたこ焼き引換券

朝、会場に到着後、朝食とたこ焼き引換券を受け取りました。

f:id:AdwaysEngineerBlog:20180318223100j:plain

f:id:AdwaysEngineerBlog:20180318223122j:plain

朝食のサンドイッチは2種類(ロースカツ系もしくはローストビーフ系)から選ぶ事ができました。

f:id:AdwaysEngineerBlog:20180318223222j:plain

朝会

f:id:AdwaysEngineerBlog:20180318223306j:plain

Day 2 はアンカンファレンス形式になるため、当日にセッション内容を決めます。
朝会では午前中の内容と、午後の始めのセッションが決まれば良いとのことでした。
残りは昼会なり、随時決めていく、もしくは参加者が埋めるという形でした。

f:id:AdwaysEngineerBlog:20180318223320j:plain

スケジュール

最終的なスケジュールは下記のようになりました。

f:id:AdwaysEngineerBlog:20180318223817j:plain

会場A 会場B 会場C 会場D 会場E 会場F
10:00 - 11:00 朝会 (アンカンファレンスのネタ出し)
11:00 - 11:40 Scala Native ScalaJS for Backend(node.js) 結局圏論が理解出来なかった俺達の復習 Mob Programing Scalaで開発する時に入れると便利なツールやIDEの便利機能を教え合う会
12:00 - 12:40 依存型プログラミング入門 実例で解説する関数型プログラミングを用いたコードの改善 1人で作る大規模スマホゲームサーバー VS Code and Scala (Scala使いのための) Elmのススメ
13:10 - 13:50 Generic programming without Refrection(Cats, Haskell) Scalaの言語機構を悪用して最強のDSLを作る方法 実践ScalaでDDD(改訂版) JDKのリリースサイクルの変更がScalaにどう影響するか聞きたい Indexed Monad エンジニア組織づくり秘密会議
14:00 - 14:40 Typesafe, Akka-HTTP, Client/Server codegeneration from Swagger Specifications Patterns for ScalaJS 実践ScalaでDDD(改訂版) AmmoniteによるScala Script入門 酒のんでGoogle Code Jamの過去問をやる会 人材ブラックホール化計画
15:00 - 15:40 Building a REST API using HTTP4S abstracting over the effect types Scala Design Patterns Akka実践バイブルワークショップ JVM Webアプリケーション メトリクス、モニタリング ユースケースを継続モナドで作ってコードに表現する
16:00 - 16:40 あと3日でJava 10がリリースですが、興味ある人いますか? CQRS discussion Akka実践バイブルワークショップ 業務システム in Scalaについての知見共有会 Scala で gRPC 女子会
17:00 - 17:40 今から始めるLens/Prism JVMでPython処理系を作ってるよ finagleどう使っているか聞きたい Scala初級の人でも分かる話 Dottyの新機能 Scalaで転職すると年収が上がるって本当ですかに答える会

薄く塗りつぶした箇所が当日セッションが決まった箇所です!

前日同様、簡単ではありますが参加したセッションの概要をお伝えしたいと思います。
(チームメンバーも参加しているため、同じ時間帯で重ならなかったセッションもあります)

Scala Native

scala-native

Scala Nativeの紹介からPR、commitしたものについての紹介がありました。
Scala Native にはNullPointerExceptionがなく、一瞬で落ちるので、原因がわからなくつらいとの事でした。(未定義領域のアクセスで落ちるとの事)
デモもありましたが、バイナリ実行がとても早かったです。Scalaで簡単なバイナリを作りたい時はいいかも。。

Scalaで開発する時に入れると便利なツールやIDEの便利機能を教え合う会

sbtやIDE周りのプラグイン、ツールに関する情報共有を行いました。
sbt周りだとkind-projectorやcoursierがあり、Scalaのフォーマット系列の話題が出されました。
IDE関係になるとScratchと呼ばれる簡易的なテスト実行ツールやGit機能だったりと便利なツールを共有しました。
IntelliJのGit機能の話題が沸騰し、聞いていて面白かったです。

たこ焼き

朝一のセッション終了後、たこ焼きの屋台についてのアナウンスがありました。
これはさっそくと屋台の方へ向かいました。

f:id:AdwaysEngineerBlog:20180318223439j:plain

f:id:AdwaysEngineerBlog:20180318223506j:plain

行列ができていましたが、数分後には出来立てのたこ焼きを受け取る事ができました!

f:id:AdwaysEngineerBlog:20180318223608j:plain

出来立てホヤホヤを美味しく頂きました!

依存型プログラミング入門

f:id:AdwaysEngineerBlog:20180320145752p:plain

Idrisを用いた依存型プログラミングとは何かの説明を受けました。
依存型とは、型に依存する型や値に依存する型を作れる型のようなものという説明をIdrisで配列のコードと共に展開されていきました。
依存型が型に依存している事を認識することができました。

VS Code and Scala

VS Code でどうやってScalaを使うのか、どうやって実装したのか、LSPについての内容です。
LSPは内部的にはJSONのデータやり取りでJSON-RPCというプロトコルがベースとなっています。 VS Code で扱う際に、もっと機能が欲しい場合は issue を立ててもらえるとやりやすいとの事でした。

昼会

午後のセッションがいくつか決まりました。
空いている箇所も随時決まったという感じです。

ランチとしてベーグル&サンドイッチも配布されていました。

f:id:AdwaysEngineerBlog:20180318223659j:plain

実践ScalaでDDD(改訂版)

DDDの概念を実際のScalaの記述と共に説明がありました。
現状のDDDにあるコンポーネントの概要とアーキテクチャの遷移について、Scalaとの親和性を交えつつ解説があり、
実際のScalaのコード例を提示しつつ、各コンポーネントの具体的な実装例という内容でした。
DDDに関するScalaの記述方法(例)が記載されていたので、すぐにでも業務に生かせそうです。

JDKのリリースサイクルの変更がScalaにどう影響するか聞きたい

www.slideshare.net

xuwei-k.hatenablog.com

はじめは今後のJDKのリリースサイクルについて、後半はJDKとsbtのバージョン関係の内容でした。
今後、Oracle JDK はサポートされないバージョン、パッチはダウンロードできなくなります。 リリースサイクル的にLTSが導入されるので、Java 9、 Java10 は Java 11 につなげる為のベータ版。 Productionは Java 11 を乗せる方向にしようとのことでした。
(随時コンパイルはしていかないとダメです)

Scala Design Patterns

f:id:AdwaysEngineerBlog:20180320145821p:plain

Design Patterns in Scala (ScalaMatsuri 2018 Unconfoerence) · GitHub

type-safe builderやad-hock pattern、アラカルトパターンに関する解説がおこなわれました。
デザインパターンに意識が行っていなかったことを実感しました。

JVM Webアプリケーション メトリクス、モニタリング

f:id:AdwaysEngineerBlog:20180320145859p:plain

メトリクスの収集方法から、形成、JVMのWebApplicationのメトリクスについて学べる内容でした。
私が所属しているチームのScalaプロダクトでは Mackerel を使っていますが、Prometheus などのJVMの監視が強いツールが他にもある事を知る良い機会でした。
メトリクスの形式は key value 形式よりも key + lavels value 形式が良いとのことでした。

JVMでPython処理系を作ってるよ

f:id:AdwaysEngineerBlog:20180320145923p:plain

www.slideshare.net

※ 上記資料は JJUG CCC 2017 Fall の発表資料ですが、本日の資料と同一な内容でした

JVM で動く Python 処理 cafebabepy についての内容です。
Jythonが2015年から更新が止まっており、Python3にも対応していないということで、発表者の方が作りはじめました。 言語処理系の開発についての実装方法や苦悩、コミュニティとのやり取りについてまとめられてました。

Scala初級の人でも分かる話

Option型に関する導入と注意点の解説をしていただきました。
map.get/flatなどの各メソッドの使用例も含めて、実例を交えながら説明がありました。
初学者がちゃんと理解できたセッションでした。

クロージング

全日程が終了し、クロージングが行われました。
今年も新しい取り組みを行えた、多くの方に楽しんでもらえた、OSSハッカソンを定期的に開催したい、Scala Matsuri に捉われず、コミュニティを盛り上げる事をやっていきたい、という内容がありました。
コミュニティとして、大阪サテライトを実施、Scala 関西サミット2018(初2日間開催)を実施という告知もありました。

とても勉強になり刺激的で満足した3日間となりました。
運営スタッフの皆様、スピーカーの皆様、スポンサーの皆様ありがとうございました。

また来年以降も参加したいと思いました!