Google Cloud Functionsをunfiltered scalaで書く

Google Cloud Functionsに関しては詳しくないので、各自ググってください。

cloud.google.com

最近は、原理上、任意のJVM言語で書けるらしいです。

www.publickey1.jp

言いたいことを凝縮すると、以下の1 tweetなわけですが

続きを読む

packageとdirectoryに整合性がなかったら強制的にファイル移動するscalafixのrule作った

以前、チェックする君だけ作ったのですが、それを雑に改造して、強制移動する君に改良しました。

細かい部分が雑なので、読みにくいし、バグってる可能性もありますが、ご自由にお使いください。

既知の問題として、packageが2行にわかれて書かれていると、うまく動かないかも

https://gist.github.com/xuwei-k/512617fb44851939cb6d7eb6b8f4d8aa

続きを読む

sbt-sonatypeでsonatypeProfileNameとorganizationに異なる値を設定するパターン

というのが実質あり得ないかと思っていたのだけれど、どういうときにそうなるか?というのに気がついたのでメモ。

続きを読む

Scala 3のMatch Typesを使って型レベルsort

今までのScala 2だとAux Patternやimplicit色々使って書くようなやつが、3だとこうやって書けるよ、という話。

https://gist.github.com/xuwei-k/924c69482c972d7bac496922ed725f79

でもこれだと、型は生成出来ても、valueOfなどで実際の値が生成できないんだけど、どうすればいいのか少し悩んだけどよくわからなかったので、一旦諦めた・・・。

あと、TupleをHList的に使おうとしたけど、 (1, 2, 3)(Int, Int, Int) になってしまって、いい感じに扱えなかったので、わざわざHListを自作しました。 (Tupleのままいい感じにやる方法、なにかあるのか?)

続きを読む

Scala 3でマクロで特定のsealed trait, classを継承したobjectを全て取得する

というのを書いたので貼っておきます。

Listで返す版と、Tupleで返す版。

続きを読む

scalafixを使ってclass名とfile名が異なっているものを自動修正したり警告を出す

というのを作ったので貼っておきます。 細かいところが雑ですが・・・。

Javaだとpublicなclassだと強制的に揃えないといけないですが、良くも悪くもScalaだと自由なので、揃えたい場合には、わざわざこういうのを作らないといけなくて不便。

file名ではなく、class名の方を合わせることによって修正したい場合もありえるでしょうけど、とりあえずfile名強制変更にしてあります。

TODO: packageとdirectory構造の検知と強制移動もやりたい。

https://gist.github.com/xuwei-k/ff0953aeb7624193f02ce26e517075c3

続きを読む