Candy, Vitamin or Painkiller

He's half man and half machine rides the metal monster

Scala Days 2017 Copenhagen 3日目

f:id:todokr:20170604040655p:plain

とうとう最終日です。

Keynote: Open source is just about the source, isn’t it?

最終日のキーノートはApache Mahoutのファウンダーである@mainecさんによるOSSについてのセッションです。

  • PullRequestのコードスタイルチェックなどは自動化してfeedbackを早くする
  • プロジェクト内で「してほしいこと」と「してほしくないこと」を明記する
  • コントリビュートしてくれた人には「ありがとう」と言い、Issueやリリースノートに名前を含める

などなど、ユーザーや開発者を惹きつけてコミットしてもらうためにどうするかという人間的側面についての話を中心に、
ライセンスや法律、お金の話など、"Open source is not just about the source"という切り口からOSSについてお話をされていました。

個人的になるほどと思ったのが「コードを書くだけではなく、たとえばユーザーからの質問に継続的に答え、コアコントリビューターがコードに集中できるようにすることもOSSへの貢献」という話です。トライしていこうと思います。

Event Sourcing and CQRS

f:id:todokr:20170604042221p:plain

続いては@lutzhuehnkenさんによるES + CQRSのセッションです。

「全ての状態は一連のドメインイベントの結果である」という話から始まり、
アプリケーションモデル/リレーショナルモデル間のインピーダンスミスマッチ解消やスケールアウト、ヒストリーの保存をどのようにESで行うのか、
なぜCQRSが必要になるのかを丁寧に解説する大変教育的なセッションでした。
その他にも考慮すべき点として、イベントから状態を復元する際のbackward compatibilityやRead側のdelayed consistency、例外発生時のシナリオなどが挙げられていました。

冒頭の方で「RDBMSをunlearnしよう」というフレーズがあったのですが、「unlearn」は「今までに学んだことをいったんほどいてみる」みたいなニュアンスがあるようですね。

Finagle for Beginners

次は@muuki88さんからTwitter社製RPCフレームワークであるFinagleの初心者向けセッションです。 お天気アプリケーションをFinagleやThriftScroogeZooKeeperFinchを利用し、"Server as Function"をどのように実現するかというお話をされていました。

Thriftでインターフェース記述、Scroogeでコード生成、Serviceの実装、ZooKeeperでのコーディネーション、FinchでのAPIエンドポイント作成といった一連の流れや、
Finagleのdtabによるルーティングについての解説、サービスを越えてリクエスト情報を持ち回る方法など、自身にとってまったく触れたことのない分野の話だったので聞いていて大変面白かったです。

@muuki88さんによるFinagleについてのドキュメントは↓にあるとのことです。
Gutefrage.net Finagle Documentation — The Finagle Docs 0.1-SNAPSHOT documentation

sbt: Beyond the Build Tool

@jaeoさんからはScalaのビルドツールであるsbtについてのセッションです。

別のセッションでは"sbt has no learning curve, it’s a learning cliff"とも言われていたようですが、@jaeoさんいわく、sbtは"misunderstood tool"だそうです。
そんなsbtの良さを引き出すためにはどうしたら良いのか、というテーマでお話をされていました。

まずは「受け入れ、戦わないこと」。最初は設定のコピペやdependencyの追加から始めていこうとのことです。
また、「始めるsbtをちゃんと読もう」と強調していました。確かに、

sbt には、柔軟かつ強力なビルド定義(Build Definition)を支えるための独自の概念がいくつか存在している。 その概念は決して多くはないが、sbt は他のビルドシステムとは一味違うので、ドキュメントを読まずに使おうとすると、きっと細かい点でつまづいてしまうだろう。

とあります。

次のステップは、ベストプラクティスを見てプラグインを書くことにトライしてみようとのことでした。

「sbt doesn’t just increase developer productivity, it increases developer capability.」と言っていたのも印象的です。

Closing Panel

「君たちはScala Daysをサバイブしたね!(会場拍手)」からクロージングパネルが始まりました。パネラーは↓の方々です。

会場の参加者から質問を受け付けていたのですが、やはりみなDottyにsignificant whitespaceなシンタックスを入れるのか問題が気になっているようでした。

コードスタイルの統一に関しては「nitpickingなことから離れて中身に集中できるので良い」、「だが一つのスタイルに統一するのは反対、チーム単位で決めるべき」などの意見が出ていました。