概要
ZIO Schemaは、スキーマ定義ライブラリです。
この記事では、ZIO SchemaのdefaultValue
という機能について、サンプルコードを交えて解説します。
defaultValue とは?
defaultValue: Either[String, A]
は、Schema[A]
に対してデフォルト値を計算して返すメソッドです。
戻り値は Either 型で、
-
Right(a): デフォルト値
a
(型A
) が正常に計算された場合 - Left(error): デフォルト値の計算に失敗した場合、エラーメッセージが返されます
標準的な型のデフォルト値
ZIO Schema は、標準的な型(String
、Int
、Boolean
、LocalDateTime
、UUID
など)に対して、デフォルト値を自動的に計算します。
-
String
: 空文字列 (""
) -
Int
: 0 -
Boolean
: false -
Option[A]
: None - その他の型: その型のゼロ値 (例えば、
List
なら空リスト)
サンプルコード
DeriveSchema.gen
でスキーマを自動導出し、
schema.defaultValue
でデフォルト値を生成しています。
import zio.{Console, ZIO, ZIOAppArgs, ZIOAppDefault}
import java.util.UUID
object Main extends ZIOAppDefault {
import zio.schema._
case class Person(id: UUID, name: String, age: Int, isStudent: Boolean = false)
implicit val schema: Schema[Person] = DeriveSchema.gen[Person]
val defaultPerson = schema.defaultValue.toOption
override def run: ZIO[ZIOAppArgs, Any, Any] =
Console.printLine(schema.defaultValue) // Right(Person(df02ab42-f649-4802-a2e6-1e7309568b1c,,0,false))
}
まとめ
ZIO Schema の defaultValue
は、データの初期化や欠損値の補完など、様々な場面で役立つ便利な機能です。デフォルト値を適切に活用することで、より安全で信頼性の高いアプリケーションを開発できます。