[ 通常表示 ]  [ 簡易表示 ]  [ シンプル表示 ]

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

ハッシュ関数 (hash function)

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

一言でまとめるよ

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

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