主催者のOliさんからのDMで急遽 Scala Love in the City で話させていただくことになり、あまり時間もなかったので準備なしでも話せるGitBucketの紹介をさせていただきました。スライドは以下になります。
www.slideshare.net
他のトークはScalaでの関数型プログラミングやScala3の話題が多かったと思いますが、具体的なアプリケーションレイヤから見たScalaという観点での話ができればと思い、前半はGitBucketの紹介、後半は8年間開発を続けてきて難しかったこととしてScala 2.12へのアップグレードについて話させていただきました。
なぜScala 2.12へのアップグレードが辛かったのかというと、
振り返ってみてScala 2.11→2.12のアップグレードがなんで一番大変だったかというと、Scalaが結構大きく普及していたタイミングだったこともあり、FPやReactiveの台頭でそれまでJavaの延長で来ていたレガシーScalaとある種の断絶というかジャンプが生じたのが原因ではないかと思っている。
— Naoki Takezoe (@takezoen) February 11, 2021
結局こういうことで、Scalatraはレガシーフレームワークとして開発者とユーザーが離れ開発が停滞したことでScala 2.12への対応が遅れ、Slickは逆にDBIOによる破壊的変更が導入されたことで移行コストが非常に大きかった、ということが一度に起きたのがScala 2.12のタイミングだったということです。GitBucketは本体だけでなくプラグインもあるのでフレームワークを変更するコストが非常に大きく(Slickに関しては当時変更も検討しましたが)、趣味プロジェクトで開発リソースが限られていたこともあり、どうにかして最小限のコストでこの問題を解決する必要があったのでした。
しかしなんというか、半分Scalaディスみたいな感じになってしまった感もあるのですが、個人的にはScalaはむしろソースコードレベルではよく後方互換性に配慮されており、型安全や関数型プログラミングのメリットを活かしつつスクリプト言語のような記述性で既存のJava資産を活かすことができる、アプリケーションを書くのに適した言語だと思っているので、もう少しそういったポジティブな面も強調すればよかったかなと反省しています。
ともあれ、これまで海外のカンファレンスで何度かショートセッションをさせていただく機会はあったのですが、小田好先生やScala界隈の錚々たるスピーカーの揃ったメジャーな国際Scalaカンファレンスで通常のセッション枠で話させていただくというのは大変貴重な経験になりました。次の機会があれば、今度は昔話ではなく未来の話ができるようネタを仕込んでおきたいと思います。ちなみに発表後のQAセッションでは「会社を作ることを考えたことはないのか?」という質問があったのですが、どうでしょうねw