マネーフォワード社内PRに見られるRubyの書き方について – (2) ハッシュの生成

エンジニアの澤田です。

この連載では、社内のRuby (on Rails)コードで気になった箇所の問題点やそこから発展して関連事項を議論しています。
1回目の 社内PRに見られるRubyの書き方について (1) では配列の生成を扱いましたが、今回はハッシュ(Hash)の生成を考察します。

題材とするコードは、社内のGitHubプルリクエストで実際に見かけたコードから問題点に関係する部分を抽出し、抽象化したもので、見かけたものそのままではありません。
また、本稿で述べるオブジェクトの分類や用法は筆者独自の見解であることをご了承下さい。


ハッシュは配列に似ている面があります。配列では「要素」、ハッシュでは「値」と呼ばれる、(実用上)任意の個数のオブジェクトの集合を蓄えるという点です。一方で、ハッシュは配列よりも複雑な情報を持ち、多様な使い方があるため、その生成を考えるに当たっては、配列ではあまり意識しなかった用法の違いを考慮することが有効です。以下で、オブジェクトの情報の複雑さという観点からオブジェクトを分類し、配列やハッシュの主な用法を考えます。

オブジェクトに蓄えられるオブジェクトの系列

配列は要素の集合、ハッシュは値の集合を持っていますが、ハッシュは他に「キー」と呼ばれるオブジェクトの集合も持っています。1つのハッシュのキーの全体は一般には不均質な集まりであり、キーは個別に特徴付けられるため、キーの情報はハッシュが1つずつ保持しておかなければならない情報です。本稿では、ある配列の要素の全体やあるハッシュの値の全体に相当する情報を「主系列」、あるハッシュのキーの全体に相当する情報を「副系列」と呼ぶことにします。

続きを読む