@techreport{oai:ipsj.ixsq.nii.ac.jp:00219045, author = {橋本, 周 and 肥後, 芳樹 and 楠本, 真二}, issue = {19}, month = {Jul}, note = {Java には複数のオブジェクトを格納するためのさまざまなデータ型が用意されている.その中に,HashMap や HashSet のように格納するオブジェクトのハッシュ値を利用するデータ型がある.このようなハッシュ値を利用するデータ型は,オブジェクトを格納する際にそのオブジェクトのハッシュ値をデータ型の内部に記録する.そのため,格納されたオブジェクトに変更が加わりハッシュ値が変化してしまった場合に,変更後のハッシュ値とデータ型に記録されたハッシュ値との間で不整合が生じてしまう.そこで,このようなハッシュ値を用いるデータ型に格納するオブジェクトのクラスにはその内部状態が生成後に変化しないイミュータブルクラスが推奨されている.しかし,イミュータブルクラスの利用により,ハッシュ値との不整合がどの程度防げているのかについてはこれまで明らかにされてこなかった.そこで本研究では,Java の実プロジェクトにおいてハッシュ値を利用する HashMap と HashSet を対象とした調査を行い,データ型に格納するオブジェクトはイミュータブルクラスにすべきかを明らかにする.HashMap および HashSet に格納された対象プロジェクト内で定義されたクラスを利用していたオブジェクトを対象に,そのクラスがイミュータブルであるか否かの調査を行った.調査の結果,イミュータブルクラスは HashMap では 14.8%,HashSet では 9.7% 利用されていると明らかになった.また,過去バージョンではミュータブルクラスであったが,不整合のバグが発生したためにイミュータブルに変更された事例はまったく見つからなかった.}, title = {イミュータブルクラスを利用する必要性に関する調査~ハッシュ値を利用するデータ型を対象として~}, year = {2022} }