配信を聞いてScalaMatsuri 2017に行った気になってみた

ScalaMatsuri 2017|日本最大級の Scala カンファレンス

先週末、日本最大級のScalaカンファレンスであるScalaMatsuri 2017が開催されていました。
仕事の都合で参加は考えませんでしたが、普通に休みが取れたので配信だけでも…と思い見ていました。

2日間、開始から終了までちゃんと見ていたので備忘録としてまとめてみます。

はじめに

私のScala歴は実時間に直すと1ヶ月にも満たないと思います。
代わりにJavaは3年、Pythonは4年、JavaScriptは2年、TypeScriptは半年くらい経験があります。

Scalaのように堅牢で関数型の書き方が非常に好きなので、各言語では以下のモジュールを使っています。

owlmixin はPythonで直感的なIFを使いたいため個人的に作成しているモジュールです (宣伝 笑)

配信を見たセクション

何度も言いますが、配信を見ていただけで参加はしていないです。

Readable Scala (中村学(がくぞ))

http://gakuzzzz.github.io/slides/readable_scala/#1

学んだこと

  • 記号をググれなくて辛い。。って人はAPI Documentを読もう
  • 中置演算子を使うことで他の識別子が目立つ
  • HowとWhatを分離するためにImplicit parameterを使う
  • implicit classという省略記法
  • Enrich my library patterでネスト関数呼び出しをフラットにできる

implicitパラメータに関することはとても勉強になりました。

Scala WarriorにおけるScala.jsとタイプセーフなWeb開発 (竹添 直樹)

私がScalaを始めるキッカケになった竹添さんのお話。
ScalaパズルとScala逆引きレシピは両方持っており、活用させていただきました。

学んだこと

  • Scala.js is awesome!! (w)
  • HTMLビルダーであるScalaTagsは辛そう
  • CSSビルダーであるScalaCSSは許せそう
  • Front-endとServersideのつなぎ目にScala.jsを使うというアプローチが一番現実的

個人的には、辛みを分かち合うのはTypeScriptだけでいいかなと思いました。

必殺(本当に死ぬ)!ブロッキング&ハイパーコンテキストスイッチングパターン (島本多可子)

竹添さんと同じくScalaパズルとScala逆引きレシピを書かれている島本さんの発表。
私自身が Play2.4 + Scala2.11 + Slick3 でAPIを作っていたこともあり、一番理解できました。

学んだこと

  • Implicit ExecutionContext ≆ スレッドプール
  • 複数の処理はDBIO.seqDBIO.sequenceでまとめて実行しよう
  • Await.resultはガチブロック!!
  • JDBCドライバは同期
  • Slickは独自スレッドプールを持つ

DBIO.seqは意識して使っていたので問題ないはず。
ただ、Await.resultはController層で呼んでいたかもしれません。。

次世代Scalaコンパイラー Dottyの今 (Guillaume Martres E++)

話題のコンパイラ Dottyの話 第一弾です。
資料見つかりませんでした。

学んだこと

  • マクロは消えて scala.meta になる
  • 必ずUnitを付ける
  • String?でNull許容型
  • String | Intでunion type
  • 関数の引数22個制限が無くなる
  • クラスパラメータに相当するトレイトパラメータが使える

22個制限はScala 2.11あたりで解消されたみたいな記事も出てきますが、関数は未だにあるみたいですね。

case class 22 argument limit · Issue #1462 · slick/slick · GitHub

英語+配信環境だったこともあり、後半理解が追いつきませんでした。。

プログラムを Free にする: 関数型プログラミングの本質への開眼 (Paul Szulc)

資料は見つかりませんでした。

学んだこと

Free[S, A]
|    |   `---> Runで帰ってくる値
|    `---> Language
`----> Program

すいません。全く付いていけなかったです。。

メタメタにしてやんよ。(メタプログラミングもしくは Shapeless のすすめ) (Chris Birchall)

タイトルに一本釣りされたのはナイショです。

学んだこと

  • programを入力とし、副作用とprogramを出力するのがメタプログラミング
  • scala.metaで楽しくマクロを書こう

こちらも途中で付いていけなくなりました。。

Serverless ArchitectureをScalaで構築するぞ (藤井善隆)

AWS LambdaのJVMでScalaで作ったAPIとか動かしてみたいなあと思って選びました。

学んだこと

  • ScalaでAPI GatewayやLambdaを使ってAPI作るのは面倒そう
  • sbt-aws-serverless plugin を作った!!
    • だけどblue green deploymentしないならserverlessでいいかも

後半DDDの話をされていましたが、個人的にはsbt-aws-serverless pluginが気になりすぎます。
Scalaを再開する際に簡単なAPIを作るときは試してみたいですね。

Scalaで始めるGraphQL (片田雄樹)

資料は見つかりませんでした。

学んだこと

  • GraphQLはGraph DBとは違う (知らなかった…)
  • 1つのEndpointでDBに複数回アクセス可能
  • ScalaでGraphQLならFacebook製のSangria
  • GraphiQLというIDEがオススメ
  • ドメインの境界が曖昧になる
  • クライアントの技術力が無いと使用してもらえない
  • GraphQL => RESTにリプレイスすることに (。・ω・。)

GrapQLでクライアント向けにAPI作ったけど、RESTにリプレイスするハメになったというありがたいお話でした。
社内のエンジニア用に使うとかなら、アリなのかもしれませんね。

Dotty と新しい Scala 開発エクスペリエンス (Felix Mulder)

MatsuriのトリはやはりDottyの話です。
dottyのContributors 第3位の方によるお話。

※ 本当は途中のセッションもちょこちょこ見ていたのですが、英語+知識不足により脱落してしまっています

学んだこと

  • Dottyのエラーメッセージは優しさ溢れている
  • Dottyなら長いコンパイル時間は短くなる
  • dottydocがJekyllベースのドキュメンテーションで神
  • Language Serverのサポートで開発環境に選択肢が出るかも

焦点の絞られた発表でしたが、英語なのに非常に分かりやすくテンションが上がりました。

総括

Scalaの言語的な話ばかりだと思っていましたが、アーキテクチャなどもっと大きな視点で語られるコンテンツが多く非常に興味が沸きました。
個人的な偏見だと、Scalaを学ぶ人はある程度経験を積まれている気がいます。
コミュニティ全体のレベルが高めのため、そういう風になるのかなと思いました。

以下のワードは頻出していたので、これから先ウォッチしてみます。

  • Mono repository
  • Akka
  • Dotty
  • DDD

そして、自分の英語力の無さと同時通訳の羨ましさを痛感しました。。
喋っていることが分かれば面白そうな発表がいくつかあっただけ余計に。

来年は普通に参加して同時通訳を聞きつつ、ヒアリング力も上達させたいですね。
まずはコップ本3 読破を目指します。

コメントを残す