【IT用語】ハッシュとは?
IT に関する勉強・開発をしていると、『ハッシュ』という用語を耳にすると思います。
初心者の方や、情報系の学部でない方は、ハッシュの意味についてご存知でないことも多いのではないでしょうか?
今回は、ハッシュという用語の意味について説明します。
ハッシュ関数について
ハッシュ関数とは、任意の入力データを固定長のハッシュ値に変換する関数のことです。
例えば、チョコレートを入れたら、1A2B3C4D
と出力し、アイスクリームと入れたら、5E6F7G8H
と出力する、と言った具合です。
全ての異なる値に対して、異なる一意のハッシュ値を生成します。
同じ値を入力したら、同じハッシュ値を出力します。
内容が少しでも異なっている場合、異なるハッシュ値を出力します。
これがハッシュ関数です。
ハッシュとは
ハッシュは、ハッシュ値と同じ意味で、先ほど説明したハッシュ関数から出力された一意の値のことを指します。
ハッシュには、『細かく刻む』という意味があります。
その名の通り、多くの情報を、一意に特定できるように、膨大な桁数の英数字に変換することを指します。
これにより、大切な情報を実質的に特定不可能な状態にします。
このように暗号化された文字列のことを、ハッシュ値と呼んでいます。
コミットハッシュについて
私たちが普段行っているコミットにも、ハッシュ値が存在します。
これはコミットハッシュと呼ばれています。
写真のように、VSCode の、Git Graph という拡張機能を使って、任意のコミット箇所をクリックすると、このコミットに対応する 40 桁のコミットハッシュを見ることができます。
コミットハッシュの一部は保護のため黒く塗りつぶしていますが、コミットハッシュの最初の 8 桁(青で囲った部分)は、オレンジの部分にも表示されています。
これは、コミットハッシュは、最初の 8 桁でも一つのプロジェクト内では十分特定可能であり、わざわざ 40 桁全てを確認する必要はないからです。
8 桁でも数字 0~9 までの 10 文字とアルファベット a~z までの 26 文字を組み合わせた計 36 文字の 8 乗通りの組み合わせがあるからです。
例えば git cherry-pick する際も、このコミットハッシュを使います。
特定のコミットに一意に割り振られたハッシュ値を使うことで、どのコミットの内容を cherry-pick するのかが一意に特定できるからです。
おわりに
最後までご覧いただきありがとうございます。
PC ロールでは、テクノロジーに関する情報をまとめて発信しています。
また、おすすめのガジェットについて幅広く紹介するガジェロールもあります。
ガジェットやソフトを使うエンジニア・クリエイターのみなさん、ぜひご覧ください。