4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

scala-stewardを導入して気づいたこと

Last updated at Posted at 2020-11-06

はじめに

Webアプリケーションの開発をする時に、各種ライブラリを使うことは今では必須のことです。一方で、各ライブラリはそれぞれ頻度は異なるもののバグ修正やセキュリティ対応のようなメンテナンスが日々行われており、それぞれの対応ごとに新しいバージョンが公開されます。そして、この更新情報をキャッチアップし続けていくことはそれなりの工数を必要とします。そのため、これらの更新を人間に代わって行ってくれるソリューションはいくつかあります。例えば、Dependabotがそれですが、DependabotはScalaに対応されていないため、Scalaで開発をする場合には、その他のソリューションが必要となります。

scala-stewardとは

https://github.com/scala-steward-org/scala-steward
scala-stewardは、Scalaのsbtプロジェクトが依存するライブラリの更新があれば、アップデートするPRを自動作成してくれます。github-actionを利用することで、privateなレポジトリに対して定期実行をしてくれるbotとして動作させることができます。この記事では、scala-stewardを導入してみて、気づいたことをいくつか紹介したいと思います。

scalafmtの更新はするけど、フォーマットはしてくれない

https://github.com/scalameta/scalafmt
Scalaの有名なフォーマッタライブラリですが、このバージョンが上がった時も、scala-stewardは教えてくれます。しかし、scalafmtのデフォルトのルールが変わって、フォーマットを適用し直す必要があっても、scala-stewardはそこまではしてくれません。あくまで、バージョンを更新するPRを作るのみです。これは、フォーマットがかかっていないコミットに、CIでエラーとする設定をしている場合には、とても不親切に感じます。これについてはコミュニティの中でも、以下のIssueの中で議論がされている通り、そもそもフォーマットまでをすべきかどうか意見が分かれている状況でした。
https://github.com/scala-steward-org/scala-steward/issues/1056
最近、以下のPRでこのIssueが対応され、現在ではconfigで選択可能となりました。
https://github.com/scala-steward-org/scala-steward/pull/1673

バイナリ互換を考慮してくれない

例えば、akkaや、akka-httpは、それらに依存するライブラリ間で同じバージョンに依存している必要があります。しかし、scala-stewardは、そういった互換性を考慮してくれません。従って、こういった互換性の検知の仕組みがない場合には、うっかりPRをマージしてしまう危険性があります。これについては、以下に、Issueが上がっているため、将来対応される可能性がありますが、現時点で使用する場合には注意が必要です。
https://github.com/scala-steward-org/scala-steward/issues/815
なお、こういった互換性を気にする必要のあるライブラリはscala-stewardが無視するような設定が可能です。詳細はドキュメントを参考にしてください。

コメントに反応してしまう

以下のようなコメントを残しておいたりしていると、それに反応してしまいます。

- "com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion, // remove this line when akka-management will support akka-http 10.1.12
+ "com.typesafe.akka" %% "akka-http-spray-json" % akkaHttpVersion, // remove this line when akka-management will support akka-http 10.2.0

こちらもIssueには上がっているので、将来対応される可能性がありますが、コメントにバージョンを記載する場合は注意が必要です。
https://github.com/scala-steward-org/scala-steward/issues/1651

まとめ

実際に使ってみて、こうした考慮する点はあるもののライブラリの更新情報を自前で追いかける必要がなくなり、とても快適になりました。是非、導入してみることをお勧めします。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?