seegongsik
プログラミング

わかりやすく キーバリュー とは

配列では、場所の番号で値を取り出しました(第8回)。でも、番号ではなく名前で探したいときがあります。友だちの電話番号を探すとき「47番目の人」ではなく「ミンス」で探すように、名札ですぐに取り出す方法を見ていきます。

01

番号のかわりに名札

第8回の配列は一列に並んだ箱で、1番、2番、3番……と場所の番号で値を取り出しました。
でも辞書で単語を引くとき、「325番目の単語」とは考えません。「りんご」を開けば意味が出てきます。
キーと値は、このように名札で探します。

名前を選んで

名前を選ぶと、場所の番号を知らなくてもその値がすぐに出ます。

番号を数える必要はありません。
名前さえわかれば、まっすぐその値にたどり着けます。
では、この名札と中身は、どうやって組になっているのでしょうか。

02

組にする:キーと値

一つのマスは、いつも二つで一組です。名札(キー)と、その中の中身(値)です。
「りんご」(キー)→ 'apple'(値)、「ミンス」(キー)→ '010-1234'(値)という具合です。
キーを呼ぶと、組になった値がついてきます。

キーを値につなぐと、二つが結ばれて「キー → 値」の一組になります。

キーはどこを探すかを決める名前で、値は実際に入っている中身です。
こうした組をたくさん集めたものが辞書です。
では、組が増えたとき、目当てのものをどうやって速く見つけるのでしょうか。

03

列に並んで探さない

値が千個あっても、キーと値は最初から一つずつなぞったりはしません。
名札を見て、まっすぐそのマスへ行きます。
配列では場所がわからなければ1番から探さなければなりませんが、キーがあれば一度でたどり着けます。これが速さの秘訣です。

一つずつ
1
2
3
4
5
6
名札で
?
?
?
?
Mina
?

左は一つずつ探し、右は名札で一度にたどり着きます。「探す」を押すと、二つのやり方の違いがわかります。

名前さえわかれば、遠回りすることはありません。
だからキーと値は、たくさんの中から一つを速く取り出す仕事にとても強いのです。
最後に、名札には必ず守るべき規則が一つあります。

04

名札は重ならない

規則は一つです。同じ名札は一度しか使えません。
新しい名札はいくらでも足してかまいませんが、すでにある名札に新しい値を入れると、前の値は消えて新しい値に置き換わります。

Mina → 010-2345
Tom → 010-7788

新しい名札を入れるとマスが増え、同じ名札をもう一度入れると古い値が新しい値に置き換わります。

名札が重ならないので、「ミンス」と呼んでも迷うことはありません。
いつも正確に一つの値が出てきます。
この単純な組一つが、じつはどこにでも隠れているのです。

05

どこにでもある組、そしてその先

辞書(単語→意味)、設定(項目→値)、連絡先(名前→番号)、ゲームのかばん(アイテム→個数)は、どれもキーと値です。
情報を整理する、いちばんよくある方法の一つです。
次のレッスンでは、こうした名札を一つのかたまりにまとめて、一つの物のように扱う方法へ進みます。

Mina → 010-2345
全部同じキー → 値

連絡先、設定、かばんのタブを順に押すと、三つとも同じ「キー → 値」だとわかります。

一列に並んだ配列(第8回)に続いて、名札で探すキーと値も手に入れました。
これで、番号でも名前でも情報を扱えます。
次は、名札をいくつも一つの箱に入れて一つのものにまとめる、オブジェクトです。

一言でいうとキーと値は「名札 → 中身」の組です。番号のかわりに名前(キー)ですぐに値を取り出し、名札は重なりません。辞書、設定、連絡先は、どれもこのしくみです。
← プログラミング
このページがお役に立ったなら支援する