昨日のこれ xuwei-k.hatenablog.com の続きのような、関連するような話です。| xuwei-k's blog
タイトルがややこしくて何言ってるかわかりづらいと思うので、ひとまず具体的な例で説明します。 例えば以下のようなbuild.sbtだったときに| xuwei-k's blog
これ https://openjdk.org/jeps/502| xuwei-k's blog
以下のライブラリの話をします。 github.com このライブラリの基本的な紹介はしません。ググるとか、流行のAIに聞く、などして調べてください。| xuwei-k's blog
それ scala.util.boundary 使えば良くない???という話である気もするのですが、とりあえずググっても簡単には見つからなかったので書いておきます。| xuwei-k's blog
以前こういうことをtweetしたのですが caes object 何か extends sealedの親を大量に作るScala 2形式より、Scala 3のenumの方が、それぞれ別の型にならない(classファイル作らない)ので、生成されるjar sizeが大抵(?)小さくなるというメリットがあるぞぃ— Kenji Yoshida (@xuwei_k) November 23, 2024 よく考えたら、これってcompile速度にも影響するのでは???と思って調べてみた結果を書いてい...| xuwei-k's blog
というパターンがScala標準で不可能な気がするので、build.sbtで頑張るサンプルを作ってみたのですが、Scala標準で不可能ですよね??? どういうパターンか?をもう少し詳細に説明すると| xuwei-k's blog
「対消滅」って、何言ってるかよくわからないと思いますが、実際にある意味でその言葉がピッタリというか・・・。 以下のコードの実行結果は、Scala 2.13.16においてどうなるでしょうか?| xuwei-k's blog
これ https://github.com/nrinaudo/kantan.csv を以下にforkして、0.9.0をpublishしました https://github.com/kantan-scala/kantan-csv https://repo1.maven.org/maven2/io/github/kantan-scala/| xuwei-k's blog
3年以上前に書いたこれ https://t.co/ozAxha1yfSresources/META-INF/services/scalafix.v1.Ruleの生成が面倒だからsbt側で自動生成するやつ作った— Kenji Yoshida (@xuwei_k) February 5, 2022| xuwei-k's blog
OSSではまだまだScala 2と3でcross buildしているものも多いですが、 2025年4月からフリーランスになってひたすらScalaやっていて、他の社でもScala 3移行進んで、場合によってはimplicit消す作業なども多少やり始めています。 とにかくimplicit消すだけならば、数十万行あっても1週間程度で撲滅出来るくらいには慣れてきました。 以前書いたものだと以下のようなものがあります...| xuwei-k's blog
以下の続き https://xuwei-k.hatenablog.com/entry/2022/02/11/160802 https://xuwei-k.hatenablog.com/entry/2022/09/03/110341 https://xuwei-k.hatenablog.com/entry/2024/03/17/112342 https://xuwei-k.hatenablog.com/entry/2025/04/29/094201| xuwei-k's blog
正確にはそれをするだけのつもりで作りはじめたら、微妙に思い出して追加のtask入れたのでそれだけではないのですが、とりあえず scalafixAll --check するだけの scalafixCheckAll taskの話をします。| xuwei-k's blog
というのを https://github.com/xuwei-k/scalafix-rules に入れたいが、現実問題としては、特定のライブラリなどがそれを全く考慮してない場合などがあり、個別にカスタマイズした方がいい場合が多いので、一旦ここに貼り付けつつ、説明を書くことにします。| xuwei-k's blog
やってみた記録であって、公式の記述と比較して、あまり新しい話はありません。しっかりした情報を知りたい人は、以下の公式情報などを読みましょう https://github.com/sbt/sbt/releases/tag/v1.11.0 https://central.sonatype.org/news/20250326_ossrh_sunset/| xuwei-k's blog
以下を試してみたという話 github.com| xuwei-k's blog
mockitoとは以下のJavaのライブラリです。 github.com Javaのライブラリなので、当然Scalaでも使えます。*1しかし、 *1:scala-jsやscala-native除く| xuwei-k's blog
以下の続き https://xuwei-k.hatenablog.com/entry/2022/02/11/160802 https://xuwei-k.hatenablog.com/entry/2022/09/03/110341 https://xuwei-k.hatenablog.com/entry/2024/03/17/112342| xuwei-k's blog
ここでいう「コンフリクト」とは、 「GitHubでpull req自分が出した変更箇所に対して、他の人のpull reqが先にmergeされてコンフリクトしてそのままmerge出来なくなったぁ〜」 というようなものですね。*1 GitHubでもgitでなくてもなんでもよいというか、現代の開発において大体同じだと思いますが。 *1:他人ではなく自分のpull reqでも有り得る| xuwei-k's blog
以前書いた通り xuwei-k.hatenablog.com 予定通り2025年3月末で某社を退職して、2025年4月からフリーランスをしてます。 ソフトウェアエンジニアでフリーランスやってる人なんて世の中に大量にいると思いますし、 ある程度当たり前の感想などしか書かないかもしれませんが、とりあえず個人の感想などを書いておきます。| xuwei-k's blog
scalafixでは、特定のアノテーションやコメントをコード内部に書くことで、個々のruleに応じて、違反していたとしてもその部分だけ抑制することが可能です。 それはそれで便利なのですが、さらに、それらについて、親切なのか、余計なおせっかいなのか?が微妙なのですが 「この抑制のコメントやアノテーションは、何も抑制になってないから消せるぞ!」| xuwei-k's blog
以下のこれ https://github.com/slick/slick/blob/v3.6.0/slick/src/main/scala-3/slick/lifted/TableQuery.scala#L37-L55| xuwei-k's blog
4年近く前に以下のような記事を書きましたが、それを微妙に改変してライブラリにしてpublishした、という話 xuwei-k.hatenablog.com| xuwei-k's blog
build.sbtに以下のように書くのはやめましょう、という話です libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.19" % "test"| xuwei-k's blog
この人またcompile速度の話してる・・・| xuwei-k's blog
前回sbtでaggregateの話を書きましたが、それと関連するようなしないような話 xuwei-k.hatenablog.com| xuwei-k's blog
本当に100%アンチパターンなのか?は、場合による気もしつつ、サンプル数はそれほど多くないですが、個人的に今までScalaやってるなかで、結局sbtをよくわからずにこれをやっていて自分が遭遇した時に直す、というのを何度か繰り返している気がしてきたので、あえて書いてみます。 aggregateとdependsOn自体の説明はしないので、各自調べてください。 「同じprojectでdepen...| xuwei-k's blog
これ ↓ 作りました。 https://github.com/xuwei-k/shapeless-annotation 以下の記事の続きでもあります| xuwei-k's blog
https://github.com/xuwei-k/shapeless-generic-counter shapeless.Generic というのは、case classなどをHListなどと相互変換し、それによってgeneric programmingを実現するためのするためのものです。 結構昔に作られて以来、色々なライブラリの裏側で使われていますし、直接使ってgeneric programmingする例や解説もあります。さて、| xuwei-k's blog
前回に引き続いて、なぜかcompile速度関連の話題を詳細に解説する回。| xuwei-k's blog