イミュータブル 【immutable】

概要

イミュータブル(immutable)とは、不変の、変更不能な、という意味の英単語。「ミュータブル」(mutable)に「不~」などの意味を持つ接頭辞 “im-”を加えた対義語。IT分野では、コンピュータプログラム中に登場するオブジェクトなどが作成後に状態を変更できないことなどをこのように呼ぶ。

プログラムにおけるイミュータブル

プログラミングの分野でイミュータブルとは、プログラム中に登場する変数コレクション配列など)、オブジェクトなどが、作成後に状態を変更できないことを言う。逆に、後から変更可能なものはミュータブルであるという。

これは、定数変数の違いのように、変数を後から変更、再代入できないという意味ではなく、プログラム実行時に確保したメモリ領域の内容が書き換え可能か、不可能かを表している。言語仕様上、変数などがどのように実装されているかの問題で、ソースコードにおける振る舞いだけではどちらなのか判別できない。

例えば、JavaではString型変数はイミュータブルだが、「String s = "Hello World!";」のように宣言した後、「s = "Goobye World!";」のように代入することができ、代入後のは "Goobye World!" となっている。

このとき、最初の宣言時にはメモリ上のヒープ領域に "Hello World!" というインスタンスが作成され、変数sはその位置を指し示しているが、代入時には新たに "Goobye World!" というインスタンスが作成され、sはそちらを指すように参照先が変更される。どこからも参照されなくなった "Hello World!" は次のガーベジコレクションによって破棄されてメモリ領域は解放される。

イミュータブルインフラストラクチャ

サーバ環境などのITインフラの構成法の一つで、一度構築した環境には変更を加えず、変更が必要な場合は変更済みの新しい環境構築し直して入れ替える方式を「イミュータブルインフラストラクチャ」(immutable infrastructure)という。

すでに稼働しているシステムソフトウェアセキュリティ更新などをう場合、従来は一台ずつサーバを停止ないしは切り離して更新作業をい、システム復帰させるといった方法で、現用系自体を更新していく方式が一般的だった。

イミュータブルインフラの考え方では、更新を適用したサーバ環境を新たに構築し直してテストなどをい、現用系と同じように動作することを検証した上で、現用系から一気に切り替えをう。アプリケーションデータなどは環境そのものからは切り離して保存し、すぐに更新系で利用できるようにしておく。

こうした全体の再構築や切り替えは従来のIT環境では高コストで実現しにくかったが、クラウドサービスの普及で物理的なサーバを多数用意しなくても新旧の切り替え、入れ替えが低コストで実現できるようになり、環境構築や更新もIaCInfrastructure as Codeツールなどで自動化、省力化が可能となった。

(2023.9.21更新)

他の辞典による解説 (外部サイト)

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。
ホーム画面への追加方法
1.ブラウザの 共有ボタンのアイコン 共有ボタンをタップ
2.メニューの「ホーム画面に追加」をタップ
閉じる