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

【Ruby3.x】ObjectSpace::WeakMap::keys()メソッドの使い方

keysメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

keysメソッドはObjectSpace::WeakMapクラスのインスタンスに格納されているすべてのキーを取得するメソッドです。

ObjectSpace::WeakMapは、通常のハッシュとは異なる特殊なマップであり、キーへの参照が弱参照であるという特徴を持っています。これは、キーとなるオブジェクトがプログラムの他のどこからも参照されなくなった場合、Rubyのガベージコレクションによって自動的にそのキーとそれに対応する値のペアがマップから削除されることを意味します。この仕組みにより、必要なくなったオブジェクトがマップ内に残り続けることを防ぎ、メモリの効率的な利用を促進します。

keysメソッドを呼び出すと、その時点のWeakMapインスタンスにまだ存在しているすべてのキーを配列として返します。この配列には、ガベージコレクションによってまだ回収されていないキーオブジェクトが含まれます。

しかし、このメソッドを使用する上で重要な注意点があります。WeakMapの弱参照の特性上、keysメソッドがキーの配列を返した直後にガベージコレクションが実行され、返された配列に含まれるキーがすぐに回収されてしまう可能性があります。そのため、keysメソッドが返した配列の要素が、そのメソッドの呼び出し後も「生きている」ことを保証するものではありません。

このメソッドは、WeakMapの現在の内容を一時的に確認したり、デバッグ目的でキーの一覧を検査したりする際に有用ですが、ガベージコレクションによるキーの自動削除というWeakMapの特性を十分に理解した上で使用することが求められます。

構文(syntax)

1require 'objspace'
2
3weak_map = ObjectSpace::WeakMap.new
4weak_map.keys

引数(parameters)

引数なし

引数はありません

戻り値(return)

Array

ObjectSpace::WeakMap#keys は、WeakMap に格納されているすべてのキーを配列として返します。

関連コンテンツ