[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典イメージぴよ画像「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

ハッシュ関数

pointこの用語のポイント

point関数だよ

point入力に対応する適当な値(ハッシュ値)が返ってくるよ

point入力する内容が同じであれば、同じ値が返ってくるよ

スポンサーリンク

簡単に書くよ

ハッシュ関数(読:ハッシュカンスウ 英:hash function)とは

入力されたデータに対して、適当な値を返してくれる関数(処理のまとまり)
もう少し正確に書くと

入力されたデータをもとにして、適当に見える値(特定のルールに沿って、ぐちゃぐちゃにした値)を返してくれる関数
です。


image piyo

詳しく書くよ

順番に見ていきましょう。
まずは予備知識として「関数」について簡単に説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。

関数は「何かを入れると何かをやって何かを返してくれる、処理のまとまり」です。
一般的には、入力を受けて処理を行い、その結果として出力があります。

ハッシュ関数

ついでなので書いておくと、関数に入れる値は「引数(ヒキスウ)」と言います。

ハッシュ関数2

関数から出てくる値は「戻り値」です。

ハッシュ関数3

ちょっと汚い話で恐縮ですが、人間は、ご飯を食べて、ウンチを出します。

ハッシュ関数4

人間が関数だと考えてください。
ご飯に相当するものが引数です。
ウンチに相当するものが戻り値になります。

ハッシュ関数5

以上を踏まえて

適当な値を中に放り込むと、それに対応する適当な値を返してくれる関数

が「ハッシュ関数」です。
例えば「愛媛みかん」を入れると「3」が返ってきます。
「青森りんご」を入れると「4」が返ってきます。
「栃木苺」を入れると「とちおとめ」が返ってきたりします。

ハッシュ関数6

何を入れると何が返ってくるか、入れたものからは分かりません。
返ってくるのは適当な値です。

ただし、同じ物を入れれば、必ず同じ値が返ってきます。
「愛媛みかん」を入れると、必ず「3」が返ってきます。
何回入れても「3」が返ってきます。

1.適当な値が返ってくる
2.同じ入力に対しては同じ値が返ってくる


というのがハッシュ関数の特徴です。
※話を単純化するために「適当な値」という表現を使っていますが、実際には適当ではありません。入力されたデータを「特定のルールに沿って」ぐちゃぐちゃにした値が返ってきます。

ハッシュ関数さんの一番有名な活躍どころはハッシュテーブルでしょうか。
ハッシュテーブルでは名札(キー)をもとにして適当な数字を生成し、その数字が付いている箱(配列の要素)に値を突っ込みます。
このときの「名札(キー)をもとにして適当な数字を生成」するのがハッシュ関数さんのお仕事です。

ハッシュ関数7

ハッシュテーブルの詳細については用語「ハッシュテーブル」の説明をご覧ください。

ハッシュ関数さんは、データが途中でおかしくなっていないかのチェックでも使われます。
ハッシュ関数さんは同じ入力に対しては必ず同じ値を返してくれる関数です。
例えば「愛媛みかん」をハッシュ関数に放り込んだら「3」が返ってくるとしましょう。
いつ、どんなときに放り込んでも返ってくる数字は「3」です。
4とか5になることは、ありえません。

そこでデータを送る人は「愛媛みかん、3になるから」のような形で送ります。

ハッシュ関数8

受け取った人は「愛媛みかん」をハッシュ関数に放り込んで、本当に「3」が返ってくるかを確認します。

ハッシュ関数9

「3」が返ってくれば「取りあえず大丈夫そうだな」と判断できます。
「3」以外が返ってくれば「あれ?なんかおかしくね?」と判断できます。
そんな理屈です。

ハッシュ関数10

他にも、いろいろな使い道があるでしょうけどね。
私がパッと思いつく用途は、そんな感じです。

あっ、そうそう。
ハッシュ関数から戻ってくる値は「ハッシュ値」と呼ばれます。
余裕があれば、ついでに覚えてあげてください。


image piyo2

一言でまとめるよ

まぁ「ハッシュ関数」って単語が出てきたら「入力に対応する適当な値(適当に見える値)を返してくれる関数(処理のまとまり)なんだな~」と、お考えください。

一番上に戻るよ
スポンサーリンク

おまけ

■訳してみるよ

「hash(ハッシュ)」は「ハッシュドポテト」の「ハッシュ」です。
意味は「切り刻む」とか「細切れにする」とか「薄切りにする」とか「寄せ集め」とか「ごちゃまぜ」とかです。
「関数」は日本語ですね。
何となくくっつけると

(値を)細切れにする関数

となります。