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

ハッシュ関数

pointこの用語のポイント

point関数だよ

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

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

スポンサーリンク

簡単に書くよ

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

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

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


image piyo

詳しく書くよ

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

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

ハッシュ関数

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

ハッシュ関数2

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

ハッシュ関数3

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

ハッシュ関数4

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

ハッシュ関数5

以上を踏まえて

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

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

ハッシュ関数6

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

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

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


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

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

ハッシュ関数7

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

ハッシュ関数8

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

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

ハッシュ関数9

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

ハッシュ関数10

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

ハッシュ関数11

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

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


image piyo2

一言でまとめるよ

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

一番上に戻るよ
スポンサーリンク
書籍画像065
書籍画像004

おまけ

■訳してみるよ

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

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

となります。





書籍画像
わわわ説明術コラム
宣伝だよ
7日間でハッキングをはじめる本 TryHackMeを使って身体で覚える攻撃手法と脆弱性
「分かった!」と思わせる説明の技術 知識ゼロの相手にも伝わるようになる本【Audible】
エンジニアのための生成AI入門 はじめての生成AIアプリ開発からエージェント開発まで