Scala

Scalatra 3.0.0をリリースしました

サーブレットベースのScala用WebフレームワークでScalatra 3.0.0をリリースしました。 github.com 機能面では2.x系と基本的に変更はなく(非推奨になっていたモジュールを削除したりはしています)Scala 3とJakartaへの対応がメインとなっています。Jakarta…

ScalatraのJakarta版をリリースしました

地道にメンテしているScala用のWebフレームワークScalatraですが、Scalatraベースで開発しているGitBucketで使用しているJGitのJGitServletはいまだにServlet 4.0という超個人的な事情でScalatraの対応Servletバージョンも上げられなかったのですが、さすが…

AirSpecのテストケースをIntelliJ上で実行するプラグインを作った

仕事でAirSpecというScala用のテスティングフレームワークを使っているのですが、特定のテストケースをIntelliJ上で実行できないのが不便だなーと前々から思っていたのでプラグインを作ってみました。IntelliJのScalaプラグインやZIOプラグインのテストサポ…

ScalaでIntelliJプラグインを作ってみる

IntelliJでプラグインを作りたいなと思うものがあったのですが、Scala開発用のものだし、JetBrainsからScalaでプラグインを開発するためのsbt-idea-pluginというsbtプラグインも提供されているようなので折角なのでScalaでIntelliJプラグインを作る方法を調…

xsbt-web-pluginでServlet 5対応アプリを実行する

ScalatraのサンプルアプリケーションやGitBucketでは開発にxsb-web-pluginというJava Servletアプリケーション開発を支援するsbtプラグインを使っています。 github.com ですが、標準でサポートされているのはJetty 9.4(Servlet 3.1)およびTomcat 9.0(Ser…

ScalatraがScala3で使えるようになりました

地道にメンテナンスを継続しているScalatraですが、最近ついにScala 3で動作するマイルストーンビルド(3.0.0-M1)を公開しました。 github.com Scala 3対応の作業はほとんどよしださんにやっていただき自分はリリースしただけですが…。 サンプルとしてScala…

IntelliJのScalaプラグインでTwirlエディタがdefiningを認識しない問題

GitBucketではHTMLのレンダリングにTwirlを使っており、IntelliJのScalaプラグインに付属しているTwirlエディタを便利に使用しているのですが、どういうわけかこのTwirlエディタがdefiningを認識せず、definingで定義した変数の補完が効かなかったりエディタ…

Scalaでオレオレdocker-registryを実装してみた

だいぶ前からちょこちょこと作っていたんですが、ようやくイメージのpush、pullができるようになりました。 github.com モノ自体はScalatraで作ったシンプルなWebアプリケーションで、以下のドキュメントに記載されているDockerのRegistry API V2を実装して…

scala-cliでScalaによるスクリプティングとパッケージングを試してみる

最近VirtusLab社が突如として公開したScala用の汎用CLIツールscala-cliを試してみました。 scala-cli.virtuslab.org 基本的にはScalaでスクリプティングするためのツールのようで、便利ツールや教育用途での使用が想定されているようですが、スクリプトを実…

Scalaプロジェクトでのバージョンバッジ

ライブラリ等をGitHubで開発する場合、最新バージョンを表示するためのバッジを表示することが一般的なプラクティスになっています。 バッジを表示するためのサービスは色々ありますが、JVM系のプロジェクトの場合、たとえば以下のような感じでMavenセントラ…

Scalatra 2.8をリリースしました

ScalaベースのWebフレームワークScalatraの新バージョン2.8をリリースしました。 github.com Scalatra 2.8.0はだいぶ前にMaven Centralにpublishしてあったのですが、ライブラリの依存関係に一部問題があり、事実上標準のテンプレートエンジンであるTwirlと…

WDL(Workflow Description Language)について

Scalaベースのワークフローエンジンcromwellを試してみるの続きです。 cromwellではワークフローをWDL(Workflow Description Language)という言語で記述するようで*1、cromwellはWDLの参照実装という位置付けでもあるようです。WDLの仕様策定もcromwellを…

Scalaベースのワークフローエンジンcromwellを試してみる

ひょんなことからcromwellというScalaベースのワークフローエンジンの存在を知ったので軽く試してみました。依存関係を見るとAkka、Akka HTTP、Cats、Slickなどが使われているようです。 github.com まずはGitHubのリリースページからcromwell-<version>.jarをダウン</version>…

NetflixがOSS化したScala/Spark用ノートブックPolynoteを試してみる

もう1年以上前の話になりますが、NetflixがSpark対応のScala用ノートブックPolynoteをOSS化したという話がありました。 netflixtechblog.com 既存のノートブックではScalaを使っていてもコード補完などがあまり効かないものが多く、まとまったコードを書くと…

-WconfオプションでScalaコンパイラの警告を抑制する

Scala 2.13.2で-Wconfというオプションが追加されており、コンパイラが出力する警告を細かくカスタマイズすることができるようになっています。このオプションはScala 2.12系にもバックポートされており、Scala 2.12.13で利用可能です。 www.scala-lang.org …

Apache SparkをLivy経由でZeppelinから使ってみる

SparkにREST API経由でアクセスできるようにするApache Livyは以前から知っていたのですが、アドホックなジョブを投げるにはやっぱり画面がないと辛いなぁと思っていたところ、ZeppelinにもLivy用のインタプリタがあるっぽいのでこれを使えばZeppelinのノー…

Scala Love in the CityでGitBucketの発表をさせていただきました

主催者のOliさんからのDMで急遽 Scala Love in the City で話させていただくことになり、あまり時間もなかったので準備なしでも話せるGitBucketの紹介をさせていただきました。スライドは以下になります。 GitBucket: Open source self-hosting Git server b…

sbt 1.4.xで作ったjar/war内のファイルのタイムスタンプがおかしくなる問題を修正した

最近GitBucketでTomcatにデプロイするとエラーになるというレポートがあり、調べていたのですが、 github.com どうやらwar内のファイルのタイムスタンプが負の値になっており、warの展開時にその値をファイルの更新日時として設定しようとしてエラーになって…

mockito-scalaについて調べてみた

ScalaTestでは以前からMockitoSugarというトレイトが提供されており、ScalaからMockitoをちょっとだけ便利に使用することができるようになっていたのですが、元々それほど大した機能もなかった上に現在は別ライブラリに切り出されてしまったこともあり、使う…

sbt-native-imageプラグインによるScalaアプリケーションのネイティブイメージの生成

これまでScalaでGraalVMのネイティブイメージ生成機能を使う場合はsbt-native-packagerプラグインを使用していたのですが、最近新たにsbt-native-imageというプラグインがリリースされたとのことで実際に試してみました。 Released the first version of sbt…

GraalVMでネイティブイメージを生成可能なScalaベースのCLIアプリケーションのためのgiter8テンプレートを作ってみた

以前PicocliとGraalVMを使ってScalaでネイティブCLIアプリケーションを作成する方法を試してみたのですが、その後細々とスタンドアロンのネイティブイメージを作成するのに適したScalaライブラリの組み合わせを試したりしていたので、これらをまとめてgiter8…

MetalsプロジェクトでBloopのCLIを活用する

以前Metalsユーザ向けのBloopの紹介記事を見かけたのですが、確かにVS CodeなどでMetalsを使っている場合、BloopやMetalsサーバが常にVS Codeの背後で起動しているのでターミナルでのコンパイルやテストの実行にもBloopのCLIを活用するには理に適っているか…

ScalaのLanguage Server「Metals」にコントリビュートしてみた

Metalsも最近は随分出来が良くなってきて割とVSCodeでも割と不自由せずにScalaの開発ができるようになってきました。Emacsやvimユーザの方もMetalsを導入することで実用的なScala開発環境を構築できるのではないかと思います。 ひとつ気になっていたのが、業…

Scala Love Conferenceをライブストリーミングで視聴していました

今年はコロナウィルスの影響でScala Daysが延期されてしまったのですが、Scala Loveポッドキャストを配信しているOliさんの主催で先週末にScala Love Conferenceというオンラインカンファレンスが開催されました。 初開催にも関わらず、2トラック構成で休憩…

Modern Systems Programming with Scala Native: Write Lean, High-Performance Code without the JVM

いまだScala 2.11までのサポートしか提供されていないなど開発が停滞気味のScala Nativeですが、最近書籍が出たということで読んでみました。 Modern Systems Programming with Scala Native: Write Lean, High-Performance Code without the JVM作者:Whalin…

Scala、Picocli、GraalVMによるネイティブCLIツールの作成

以前、Scalaを使ってCLIツールを作るという記事を書いたのですが、やはりJVMベースのアプリケーションには起動時間のオーバーヘッドが付き物なのでちょっとしたCLIツールをScalaで書こうという感じにはなかなかなりません。そこで今回はPicocliというJava向…

Scalatra 2.7.0をリリースしました

Scala用のSinatraライクなWebフレームワークScalatraの最新バージョン2.7.0をリリースしました。 github.com 今回は2年以上ぶりのメジャーバージョンアップですが、今回はScala 2.13への対応、メンテナンス性向上のためにあまり使われていないモジュールやSc…

airframe-launcherとsbt-packでScalaでCLIツールを作る

私は普段主にScalaを使っているので、ちょっと手の込んだ処理が必要だったりJava/Scalaライブラリを使ったツールが必要な場合にScalaで書けると便利だなと思うことがあります。 AirframeはScala用のDIコンテナを中心とした様々な機能を提供するライブラリ群…

Skills Matter社の破産とロンドンで登壇予定だったScalaミートアップのキャンセルについて

ロンドンで技術系イベントを多数開催していたSkills Matter社が10月末に破産してしまったそうです。 www.cbronline.com Skills Matter社はScalaDaysを除けばヨーロッパで最大のScalaカンファレンスであるScala Exchangeを毎年開催していたりと、Scalaコミュ…

Airframe Meetup #3でLTをしました

去る10月23日(水)にトレジャーデータの東京オフィスでAirframe Meetup #3が開催されました。 airframe.connpass.com 誠に僭越ながら私もLTをさせていただきました。Java時代からのDIの変遷を振り返るという老害的なテーマだったのですが、だいぶグダグダな…