Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Ruby3.x】WeakMap定数の使い方

WeakMap定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

WeakMap定数は、Ruby 3.0で導入された、キーと値を関連付けて保持する特殊なマップデータ構造を表す定数です。これは一般的なハッシュ(Hash)と同様にキーと値のペアを格納しますが、メモリ管理において重要な違いがあります。

WeakMapの最も大きな特徴は、キーに対する「弱い参照(weak reference)」を持つ点です。これは、WeakMapにキーとして登録されたオブジェクトが、他のどの場所からも参照されなくなった場合、ガベージコレクションによってメモリから解放されると同時に、WeakMap内の対応するキーと値のペアも自動的に削除されることを意味します。これに対し、通常のHashはキーオブジェクトへの「強い参照」を持つため、キーがHashに存在する限りメモリに保持され続けます。

この「弱い参照」の特性により、WeakMapはメモリリークを防ぎ、アプリケーションのメモリ使用量をより効率的に管理するのに役立ちます。例えば、特定のオブジェクトに対して補助的なデータやメタデータを紐付けたいものの、そのオブジェクト自体が不要になった際には、紐付けられたデータも自動的に破棄されてほしい、といった場合に非常に有効です。

WeakMapのキーにはオブジェクトのみを使用でき、シンボルや数値などのイミュータブルな値はキーとして使用できません。値はどのような型のオブジェクトでも保持できます。WeakMapは、多数の一時的なオブジェクトに情報を付加するような状況で、メモリ効率を保ちながらデータ管理を行うための強力な機能として活用されます。

構文(syntax)

1weak_map = Ref::WeakMap.new
2key_object = Object.new
3value_data = "データ"
4weak_map[key_object] = value_data
5retrieved_data = weak_map[key_object]

引数(parameters)

引数なし

引数はありません

戻り値(return)

Class

WeakMapは、キーがガベージコレクションの対象となりうる、キーと値のペアを格納する新しいクラスを返します。

関連コンテンツ