コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

情報処理におけるhashについてざっくりまとめる

なんとなく使っているが語源についてざっくりまとめる。

そもそもの英単語として意味

英単語としては「細切れの肉料理」などで訳される。日本での身近な例はハッシュドビーフなど。

なお、語源としては以下のような説明がインターネット上ではある。

1650年代、「刻んで小さく切る」という意味で、14世紀のフランス語の hacher「刻む」から派生し、古フランス語の hache「斧」(hatchetを参照)に由来します。 - Hash | etymonline による Hash の語源、起源、意味

ハッシュ関数(hash function)

ハッシュ関数は簡潔に表現すると『入力として「任意の値」を使い「一定の長さのデータ」に変換して出力「関数」』である。もともとの英単語の hash が使われたのは、ベースとなる任意の値を組み替えて最終的に出力するので、その組み替える過程が切り刻むことが塑像されるため、ということ。

ハッシュ関数は一定の長さのデータに変わるという性質を利用して暗号化にも使われる

PerlRubyなどのHash

RubyではHashというクラスがあり、これは他の言語でいうところの連想配列にあたる。なぜRubyでは連想配列がHashとなっているか明確な理由は不明だが、内部的にハッシュを利用することに起因するという話がインターネット上には散見される。

なお、Javaでは連想配列をハッシュテーブルを利用したもの(HashMap)と二分木を利用したもの(TreeMap)の2つがあるため明確に名前が別れている

関連リンク