SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

マンガで分かるプログラミング用語辞典

「ミュータブルとイミュータブル」
~マンガでプログラミング用語解説

マンガで分かるプログラミング用語辞典(274)

解説

 プログラムで出てくる値や配列、オブジェクトなどのうち、メモリーの内容が変更可能なものを「ミュータブル」、変更不能なものを「イミュータブル」と言います。

 文脈によってはミュータブルオブジェクト、イミュータブルオブジェクトを指すこともあります。この場合は、オブジェクト自身の状態(プロパティ)が変更可能か、変更不能かを意味します。

サンプル

 「ミュータブルとイミュータブル」のサンプルです。

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta charset="UTF-8">
    <title>「ミュータブルとイミュータブル」のサンプル</title>
    <style> #output { font-size: 24px; line-height: 1.5; } </style>
  </head>
  <body>
    <pre id="output"></pre>
    <script type="module">
// 出力用の関数
const print = function() {
    const el = document.querySelector('#output');
    el.textContent += [...arguments].map(x =>
        typeof(x) === 'string' ? x :
        JSON.stringify(x)).join(' ') + '\n';
};

// 文字列(イミュータブル)
try {
    let text = 'abcdefg';
    print('text 1 :', text);

    text[1] = 'B';
    print('text 2 :', text);
} catch(e) {
    print(e.message);
}
print('--');

// オブジェクト(ミュータブル)
let obj = {a: 1, b: 2};
print('object 1 :', obj);

obj.a = 111;
print('object 2 :', obj);

// オブジェクト(イミュータブル)
try {
    Object.freeze(obj);
    obj.a = 999;
    print('object 3 freeze :', obj);
} catch(e) {
    print(e.message);
}
    </script>
  </body>
</html>
出力結果

text 1 : abcdefg
Cannot assign to read only property '1' of string 'abcdefg'
--
object 1 : {"a":1,"b":2}
object 2 : {"a":111,"b":2}
Cannot assign to read only property 'a' of object '#<Object>'

フィードバックお待ちしております!

 ご感想、解説してほしい用語、解説内容のアドバイスなどございましたら、FacebookX(旧Twitter)などでお気軽に編集部までお寄せください。よろしくお願いいたします。

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
マンガで分かるプログラミング用語辞典連載記事一覧

もっと読む

この記事の著者

柳井 政和(ヤナイ マサカズ)

クロノス・クラウン合同会社 代表社員http://crocro.com/オンラインソフトを多数公開。プログラムを書いたり、ゲームを作ったり、記事を執筆したり、マンガを描いたり、小説を書いたりしています。「めもりーくりーなー」でオンラインソフト大賞に入賞。最近は、小説家デビューして小説も書いています(『裏切りのプログラム』他)。面白いことなら何でもOKのさすらいの企画屋です。 

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/24266 2026/07/21 08:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー