ScalaMatsuri2018 1日目 参加レポート

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、かたいなかです。

ScalaMatsuriが東京国際交流館のプラザ平成を会場に、2018年3月16日(金)(Training Day)、3月17日(土)、3月18日(日)の3日間にわたって行われています。

今回は、3月17日(土)の1日目に参加してきましたので、参加したセッションについてレポートします

「Composabilityはなぜ重要か」 中村学(がくぞ)さん @gakuzzzz

スライド

Scalaの持っている高いComposabilityの重要性についての発表でした。

問題を分割する方法は、解を合成する方法に依存する」ため、言語機構や標準ライブラリ等の"Composability"が高い(合成の「方法」が多い)ほど、問題を分割しやすくなるという説明にとても深い納得が得られました。

仕事で役立つモナド変換子 Gabriele Petronellaさん @gabro27

コード

モナド変換子についての説明が今まで見た説明の中で一番分かりやすかったです。 Future[Option[T]]のようなモナドがスタックしたものを一つのモナドとして扱うときに用いるモナド変換子について、実例を交えながら順を踏んでモナド変換子を導入していっていました。

モナド変換子をAPIに出さないことやパフォーマンスが気になる場合はベンチマークを取ることなど、実際にモナド変換子を使うための役立つTipsも紹介されていて個人的にとても参考になりました。

Recursive Schemeを用いた量子アニーリングマシン専用言語(DSL)の開発 棚橋 耕太郎さん 堀田義仁さん

スライドは執筆時点では公開されていないようでした。

量子アニーリングで問題を解くために問題をQUBOという形式に変換するためのDSLをScalaによって開発したという発表でした。

DSLを記述し、それをInterpretすることで最適化が行なえるため、問題のサイズを落とせるということに面白さをと感じました。

Scalaメタプログラミング今昔物語 伊藤健史さん github: @iTakeshi twitter: @TaKeZo

java.reflect/scalapの時代からscala.macrosに至るまで、どのようにScalaのメタプログラミングの仕組みが進歩してきたのかという発表でした。

IDE等が独自のASTを持っているため、IDEが正しくアノテーションを処理できるようにするためにはASTの可搬性が必要になるという話はとても興味深かったです。

Haskell + Scala ハイブリッド開発大作戦 チェシャ猫さん @y_taka_23

JVM上で動くHaskellであるEtaを使用してScala/JavaとEtaを組み合わせて開発を行う方法についての発表でした。

EtaからJavaのメソッドを呼び出すときはJava aというモナドにすることで純粋関数型の世界からJavaのコードを呼び出せるようにしていることや、EtaからScalaのコードを呼び出そうとするとシンタックスシュガーの関係で辛くなることなどが個人的にとても面白さを感じました。

Scalaらしいオブジェクト指向プログラミング 高橋俊幸さん @tototoshi

スライドは執筆時点では公開されていないようでした。

密結合を避け、依存性をコードによって表現することや、コンストラクタインジェクションやCake patternによるDIの手法を解説されていました。

Extensible Effects in Dotty ねこはるさん @halcat0x15a

DottyでのExtensible Effectsに関しての発表でした。

Extensible Effectsについて理解が足りておらず、リアルタイムでは理解が追いつきませんでしたが、後から見直すと、FreeからExtensible Effectsにいたるまでや、DottyでのUnionTypeを使用することでどのように改善できるかまで説明されており、とても勉強になりました。

感想

ScalaMatsuriは初参加だったのですが、内容もとても濃く素晴らしいイベントで大満足でした。

イベントを通じてScalaに対する熱量を強く感じ、個人的にもScalaへの熱もとても高まりました。