単一代入とは?
たんいつだいにゅう
変数に対して一度しか値を代入しないというプログラミング上の制約または設計原則で、バグの少ない堅牢なコードを書くために用いられます。
単一代入(Single Assignment)とは、プログラム中の各変数に値を代入できるのは一度だけ、という制約を指します。一度値が定まった変数を再代入で上書きすることを禁止するこの考え方は、コンパイラ技術や関数型プログラミングの分野で重要な役割を担っています。
コンパイラ最適化では、静的単一代入(SSA形式:Static Single Assignment)という中間表現が広く使われます。SSA形式では、同じ変数名を再利用する場合も添え字で区別(例:x₁、x₂)することで、変数の定義と使用の関係を明確にします。これにより定数畳み込みや不要コードの除去などの最適化を効率的に適用できます。
プログラミングスタイルとしての単一代入は関数型言語(Haskell、Elmなど)で自然に取り入れられており、JavaScriptのconst宣言やRustの不変変数もこの思想に基づいています。単一代入を守ることで得られる利点は次のとおりです。
- 変数の値がどこで変化したか追跡する必要がなく、コードが読みやすい
- 副作用が減り、関数のテストと再利用が容易になる
- 並行プログラミングでの競合状態が起きにくい
- コンパイラが最適化を施しやすい
単一代入は「イミュータビリティ(不変性)」とも深く関連し、現代のソフトウェア設計における品質向上の基盤となる概念です。
使い方・例文
JavaScriptでletの代わりにconstを積極的に使い、変数の再代入を避けてコードを書くスタイルが、単一代入の思想を日常的に実践している例です。
この用語をシェア
最終更新: