ZIO アプリの実行
ZIOAppDefault です。
「ZIO アプリの実行」はCoddyKit上の無料Scala for Backend Engineering & Functional Programmingレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはScala for Backend Engineering & Functional Programming学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。
記述から実行へ
ZIOの値は設計図にすぎません。実行するにはZIOのランタイムに渡します。通常はランタイムを手動で呼び出すのではなく、ZIOAppDefaultを継承します。
ZIOAppDefault
ZIOAppDefaultを継承し、runを実装します。フレームワークがデフォルトサービス(Console、Clock、Random、System)を提供し、起動と終了を管理します。
import zio._
object Hello extends ZIOAppDefault {
def run = Console.printLine("Hello, ZIO!")
}runの値
runは、デフォルトサービスによって環境が満たされるZIOです。エラー型と成功型には柔軟性があり、ランタイムが失敗を報告して終了コードを設定します。
複数ステップのアプリ
for内包表記でアプリのロジックを組み立てます。各行はエフェクトであり、ランタイムによって順番に実行されます。
import zio._
object Greeter extends ZIOAppDefault {
def run = for {
_ <- Console.printLine("What is your name?")
name <- Console.readLine
_ <- Console.printLine(s"Hello, $name!")
} yield ()
}runでLayerを提供する
アプリがカスタムサービスに依存する場合は、runエフェクトにprovideを適用してLayerを渡し、実行前に環境の要件をすべて満たします。
import zio._
object App extends ZIOAppDefault {
// def run = program.provide(MyService.layer)
def run = ZIO.unit
}終了コード
デフォルトでは、成功したrunはコード0で終了し、失敗した場合は0以外のコードで終了します。exitCodeを使って明示的なExitCodeを返すこともできます。
import zio._
object App extends ZIOAppDefault {
def run = Console.printLine("done").exitCode
}コマンドライン引数
ZIOApp.argsまたはgetArgsを介してZIOAppArgsでプログラムの引数にアクセスできます。戻り値はChunk[String]です。
import zio._
object App extends ZIOAppDefault {
def run = for {
args <- getArgs
_ <- Console.printLine(s"args: ${args.mkString(", ")}")
} yield ()
}境界での失敗処理
ランタイムが簡潔なメッセージを表示できるよう、最上位でエラーを処理またはログ出力するのがよい習慣です。runでcatchAllまたはtapErrorを使用します。
import zio._
object App extends ZIOAppDefault {
val logic = ZIO.fail("oops")
def run = logic.catchAll(e => Console.printLine(s"Failed: $e"))
}ファイバーのフォーク
runの内部では、エフェクトをforkしてファイバー上で並行実行し、後からjoinできます。ランタイムはすべてのファイバーを監視し、終了時に割り込みます。
import zio._
val prog = for {
fiber <- ZIO.succeed(40).fork
result <- fiber.join
_ <- Console.printLine(s"got $result")
} yield ()手動によるUnsafe実行
ZIOAppDefaultの外部では、Unsafe.unsafeとRuntimeを使ってエフェクトを実行できます。ただし、これは通常のアプリケーションコードではなく、統合境界に限って使用します。
import zio._
// Unsafe.unsafe { implicit u =>
// Runtime.default.unsafe.run(myEffect).getOrThrow()
// }通常のScalaのmain
比較のため、自己完結型のScalaエントリーポイントを示します。ZIOAppDefaultはmainの役割を果たしながら、サービス、エラー報告、ファイバー監視を組み込みます。
object Main {
def main(args: Array[String]): Unit = {
println("Hello, ZIO!")
}
}クイックチェック
ZIOアプリケーションを実行する推奨方法は何ですか?
まとめ
ZIOアプリの実行方法を学びました。
runエフェクトを持つZIOAppDefault- デフォルトサービスとLayerの
provide - 終了コード、引数、最上位でのエラー処理
- ファイバーのフォークとUnsafe境界
ZIO Fundamentalsコースを修了しました。
AI チューターと学ぶ Scala — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 39
- レッスン
- 143
よくある質問
「ZIO アプリの実行」レッスンは無料ですか?
はい。「ZIO アプリの実行」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Scala for Backend Engineering & Functional Programmingコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Scala for Backend Engineering & Functional Programmingコースには全4レッスンが含まれています。
「ZIO アプリの実行」で何を学びますか?
ZIOAppDefault です。 ブラウザで直接実行するハンズオンコードでScala for Backend Engineering & Functional Programmingを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Scala for Backend Engineering & Functional Programmingを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのScala for Backend Engineering & Functional Programmingは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「ZIO アプリの実行」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このScala for Backend Engineering & Functional Programmingレッスンでコードを書いて実行できますか?
はい。すべてのScala for Backend Engineering & Functional Programmingレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- ZIO エフェクト
- ZIO の合成
- エラーと依存性のチャネル
- ZIO アプリの実行