🚃
関数型エラーハンドリングパターン 2026年4月1日

Railway-Oriented Programming(鉄道指向プログラミング)

📁 概念 👁 -- 閲覧

Railway-Oriented Programming(鉄道指向プログラミング)

定義

エラー処理を「2本レールの鉄道」として表現するパターン。 処理は成功レールと失敗レールのどちらかを走り、一度失敗レールに入ったら以降の処理はスキップされる。

入力


[バリデーション] ──失敗──→ Error("メールが無効")
  │成功

[在庫確認]      ──失敗──→ Error("在庫なし")
  │成功

[決済処理]      ──失敗──→ Error("カード拒否")
  │成功

成功結果

実装上は Result<Success, Error> 型(または Either)で表現する。

なぜ重要か

  • 例外(try/catch)に頼らずエラーを型として明示できる
  • 各ステップが「成功 → 次へ / 失敗 → 終了」の単純な関数になる
  • エラーの握りつぶし・見落としがコンパイル時に検出される

適用場面

  • バリデーションが複数ステップある処理
  • 外部APIコール・DB処理など失敗が前提の I/O

関連概念

出典

関数型ドメインモデリング(Scott Wlaschin)第6章 / https://fsharpforfunandprofit.com/rop/