ScalaMatsuri 2018に参加してきた
参加してきましたのでメモ書き程度に. Training Day, Day1, Day2行ってきました.
Training Day
ScalaMatsuriのノベルティ、ステッカーとかだけでなく靴下から箸まである pic.twitter.com/L6YucpS7UD
— amaya (@amaya382) 2018年3月16日
これはTraining Dayにもらったノベルティで, Day1/Day2ではメガネ拭きやパスケース等々更に増えていました (箸/靴下は重複して2膳/足に).
OSS hackathon: Aeron by Martin Thompson (@mjpt777)
Aeronプロジェクトに参加しました. UDPを利用した高速なメッセージ通信用ライブラリです. 例えばAkkaでも内部的に重用されています. Javaです. 重要なので繰り返します, Javaです.
なぜかScalaのイベントでJavaでしたが, 最適化・高速化のプロジェクトとのことで, 面白そうと思い第一希望で応募していました.
取り組んだissueは以下のやつ. 「Aeronを使って巨大なファイルを送信するサンプルプロジェクトの作成」です.
メンター含め4人だったので2人でSender, 2人でReceiverに分かれて取り組みました (私は@RemkoPopmaさんとSender担当).
最初はAeronの目的や概要を紹介してもらい, 実際の開発に移りました. 巨大なファイルはchunkに分割して扱う必要があったため, まずはサンプル用のプロトコル (chunkを扱うためのヘッダ構成等) を策定し, そのデータをAeronで扱いました. Aeronは初見でしたが, Aeronに限らず内部的に利用されている姉妹ライブラリのAgronaが強力で, アドバイスを貰いながらペアプロで進めることができました. 徹底的に最適化されていることが要所要所で垣間見れました (特に無駄なメモリコピーを許さないという強い意志を感じた).
結果として自分でPRを作るところまでは行きませんでしたが, Martinさんにコードを引き継いでもらい, 翌日には反映されていました. めでたい.
楽しかったし, Javaでも, Unsafeを使わない範囲でもここまでできるのかという学びが多くありました.
Day1
なぜ Composability は重要か by @gakuzzzz
Composabilityに関して, 問題の分割と合成について. 「問題を分割する方法は、解を合成する方法に依存する」というのが印象的だった.
関数型プログラミングによるパフォーマンス by @mjpt777
Training DayのhackathonでメンターだったMartinさんの発表. メモリの話から入って関数型どこいったと思っていたけど, 最終的に関数型でもメモリとか大事だよねというところに着地していて, 常時うんうんってなっていました. こういうことを常に意識しながらコードを書けるようになりたい.
sbt 1 by @eed3si9n_ja
初っ端lamport先生が出てきたりconcurrencyの話になって部屋を間違えたかと思ったけど, 気づいたらApplicativeやsbtのDSLの話になっていた. 面白かった.
scalaメタプログラミング今昔物語 by @TaKeZo_I
scalap? Reflection? Macro? ScalaMeta? どれがなんなの? となっていたので良い整理になった. それにしてもScalaのメタプロ事情の変化は激しい… scala.macros
で落ち着くと良いな.
Akka を用いた分散システムの構築 by @anildigital
Akkaについて, Actor等の基本的なところから解説があったので良い復習になった.
Scalaらしいオブジェクト指向プログラミング by @tototoshi
この時間帯はどのセッションに行くか特に悩んだけどScalaはOOP派なのでこれにした. Mix-inによるCakePatternが個人的にきれいかなーと思っていたけど, コンストラクタインジェクションでいいなと揺らいだ. DIコンテナを使わないレベルが一番幸せなのかなと思いつつも, 大規模プロジェクトだとないとつらいんだろうなぁ. ケースクラスを変な他クラスに依存させないっていう方針が地味だけど重要に見えた.
Extensible Effects in Dotty by @halcat0x15a
出直してきます.
その他
台湾から来た@pishenさんからScalaTaiwanステッカーを貰いました, ロゴカッコイイ
Day2
Scala Native by @xuwei_k
ちょっとScala Nativeを使って作ろうかと考えているものがあったので. まとまった情報がなかなか見つからなかったので良かった. Multi-threadingはよ.
VS Code and Scala by @eed3si9n_ja
Scalaを取り巻くLSPについていろいろ. issueを建てるとlightbendの仕事として取り組みやすいとのこと.
Scalaの言語機構を悪用して最強のDSLを作る方法 by @phenan
リガチャ. implicitに無理させたらコンパイル時間が O(n^4)
くらいになったらしい.
AmmoniteによるScala Script入門 by @blac_k_ey
スクリプト内から依存解決してjarの取得, 外部スクリプトファイルの利用等々便利そう.
JVM Webアプリケーション メトリクス、モニタリング by @krrrr38
key-value形式ではなく, key+labels-value形式が良いとのこと. JVM向けだとMicrometer (やKamon) あたりがおすすめ, Dropwizardは古い.
あと3日でJava 10がリリースですが、興味ある人いますか? by @kis
Javaの var
ってキーワードではなかったんですね. 個人的には, JVMが適切にDockerのリソースを扱ってくれるようになるというのが嬉しかった.
Dotty (自分)
結局しゃべりました. よしださんが目の前で終始びくびくしてました. なんとなく, 今までScalaのもどかしかったところが改善されるということが伝わっていれば幸いです. (現金な人なのできちんとパーカー貰いました)
まとめ?
楽しかった. もうちょっとエイゴしゃべれるようになりたい (hackathon中のやりとり, 英語セッション聴講, 懇親会で海外の方と話したり, ScalaMatsuriの半分以上が英語だったのを, 全てギリギリで乗り切った感がすごい).
スタッフの皆さん, スピーカー・メンターの皆さん, スポンサーの皆さん, 話に付き合って頂いた皆さんありがとうございました. 来年も楽しみにしています :)
ScalaMatsuri requires the English skill (than Scala)
— amaya (@amaya382) 2018年3月17日