まずは以下のあたりも参照
それで
- argonautがscala-native対応したやつがリリースされた
- scalapb-argonautというライブラリ作った
- scalapbがscala-native対応された Support for Scala Native · Issue #387 · scalapb/ScalaPB · GitHub
というわけで、scalapb-argonautもscala-native対応するしかないですね。というかそれを見越して、最初からscalapb-argonautはscala-native対応しやすいように、多少ビルドファイル工夫しておきました。
依存の追加の仕方などはGitHubのほうのREADME見てください。
やったことや、いくつか面倒だったこととしては
- scala-nativeにjava.timeのclassがなくてTimestampのサポートひとまず諦めた
- scalatestは、今scala-native対応中らしいが、まだリリースされてないので、別のテストライブラリに切り替えた
- scala-nativeにBase64のclassもないので、scala-jsから拝借した(protobufのバイナリは、json変換ではbase64エンコードするという仕様)
などでしょうか。あとはいつもどおりそれらの影響で、プラットフォーム毎に微妙にディレクトリわけてのクロスビルドが面倒でしたが、 逆に言うとすごく想定外な問題は発生しませんでした。
circeやplay-jsonは、scala-native対応してないので、やれません。 他にscala-native対応してるjsonライブラリあったような気もする・・・?気が向いたらscalapb-json orgに作るかもしれないし、作らないかもしれません。