本文へスキップ

タグ付き共用体とは?

たぐつききょうようたい

タグ付き共用体とは、複数の異なる型のうちどれか一つの値を保持でき、現在どの型を持っているかを識別するタグを合わせ持つデータ構造です。

タグ付き共用体(Tagged Union)は、代数的データ型(Algebraic Data Type)の一種で、複数の異なる型や値のパターンのうち、ある時点では必ず一つだけを保持するデータ構造です。「直和型」「バリアント型」「判別共用体」(Discriminated Union)とも呼ばれます。

C言語の共用体(union)は複数の型を同一メモリ領域に置けますが、現在どの型として使われているかの情報を持ちません。タグ付き共用体はこれに「タグ」(識別子)を加えることで、型の安全な識別を可能にしたものです。

タグ付き共用体の典型例として、関数結果を表す型があります。

  • 成功(Ok)の場合は値を持ち、失敗(Err)の場合はエラー情報を持つ
  • RustのResult型やOption型はこの代表例
  • TypeScriptの判別共用体(type Shape = Circle | Square など)も同様の概念

パターンマッチングと組み合わせることで、コンパイラがすべてのケースの処理漏れを検出できます。これにより、nullポインタ参照や型の取り違えによるバグをコンパイル時に防げるため、型安全性が大幅に向上します。Haskell・Rust・Swift・F#・Kotlin・Elmなどで中心的なデータ表現手段として使われています。

使い方・例文

Rustで enum Result<T, E> { Ok(T), Err(E) } を定義し、match式で成功・失敗の両ケースを網羅的に処理する場面がタグ付き共用体の典型的な使い方です。

この用語をシェア

𝕏 でポスト LINE

最終更新:

関連用語