0Pricing
Scala for Backend Engineering & Functional Programming · レッスン

ZIO エフェクト

ZIO[R,E,A] です。

「ZIO エフェクト」はCoddyKit上の無料Scala for Backend Engineering & Functional Programmingレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはScala for Backend Engineering & Functional Programming学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。

ZIOとは

ZIOは、非同期処理、並行処理、リソース安全な関数型エフェクトのためのライブラリです。中心となる型はZIO[R, E, A]で、環境Rが与えられると、Eで失敗するかAで成功するワークフローを記述します。

3つの型パラメーター

ZIO[R, E, A]は、(エフェクトを伴い非同期に動作する)関数R => Either[E, A]として読み取れます。

  • R — 必要な環境 / 依存関係
  • E — 失敗時のエラー型
  • A — 成功時の値の型

型エイリアス

ZIOは便利なエイリアスを提供します。

  • UIO[A] = ZIO[Any, Nothing, A] — 失敗しない
  • Task[A] = ZIO[Any, Throwable, A]
  • IO[E, A] = ZIO[Any, E, A]
  • RIO[R, A] = ZIO[R, Throwable, A]

成功するエフェクトの作成

ZIO.succeedは純粋な値を持ち上げます。エフェクトは失敗しないため、エラー型はNothingです。

import zio._

val meaning: UIO[Int] = ZIO.succeed(42)

失敗の作成

ZIO.failは、型付きエラーを持つ失敗したエフェクトを作成します。決して成功しないため、成功時の型はNothingです。

import zio._

val failed: IO[String, Nothing] = ZIO.fail("Something went wrong")

副作用のラップ

ZIO.attemptは、例外をスローする可能性がある副作用付きのブロックをラップします。エラー型はThrowable(つまりTask)になります。

import zio._

val parsed: Task[Int] = ZIO.attempt("123".toInt)

コンソールへの出力

ZIOのConsoleサービスは、エフェクト付きの出力を提供します。Console.printLineは、エラー型がIOExceptionであるZIOを返します。

import zio._

val hello = Console.printLine("Hello, ZIO!")

map

mapは成功値を変換し、エラーと環境のチャネルはそのまま保持します。

import zio._

val doubled: UIO[Int] = ZIO.succeed(21).map(_ * 2)

mapError

mapErrorはエラーチャネルを変換します。低レベルの失敗をドメイン固有のエラーに変換する場合に便利です。

import zio._

val e: IO[String, Int] =
  ZIO.fail(404).mapError(code => s"HTTP $code")

遅延評価と純粋性

Cats EffectのIOと同様に、ZIOの値は純粋で遅延評価される記述です。これを構築してもエフェクトは実行されず、ZIOランタイム上で実行したときに初めて実行されます。

通常のScalaによる基準実装

比較のため、即時実行される自己完結型のScalaプログラムを示します。ZIOでは実行とエラーを遅延させ、型で追跡しますが、出力は同じです。

object Main {
  def main(args: Array[String]): Unit = {
    val x = 42
    println(s"value: $x")
  }
}

クイックチェック

ZIO[R, E, A]で、Eパラメーターは何を表しますか?

まとめ

ZIOのエフェクト型について学びました。

  • ZIO[R, E, A] — 環境、エラー、成功
  • UIO、Task、IO、RIOのエイリアス
  • succeed、fail、attempt
  • mapとmapError

次は、ZIOエフェクトの合成です。

よくある質問

「ZIO エフェクト」レッスンは無料ですか?

はい。「ZIO エフェクト」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Scala for Backend Engineering & Functional Programmingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。

「ZIO エフェクト」で何を学びますか?

ZIO[R,E,A] です。 ブラウザで直接実行するハンズオンコードでScala for Backend Engineering & Functional Programmingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Scala for Backend Engineering & Functional Programmingを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのScala for Backend Engineering & Functional Programmingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ZIO エフェクト」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このScala for Backend Engineering & Functional Programmingレッスンでコードを書いて実行できますか?

はい。すべてのScala for Backend Engineering & Functional Programmingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ZIO エフェクト
  2. ZIO の合成
  3. エラーと依存性のチャネル
  4. ZIO アプリの実行
← Scala for Backend Engineering & Functional Programmingに戻る