呼称の違う連想配列系の単語でググってみた

# はじめに

**「Pythonの連想配列って何だっけ？」**

という（なんとなく、気持ちの悪い）ワードが、頭をよぎったときに、

**[ググって解決しづらかったこと Advent Calendar 2021](https://qiita.com/advent-calendar/2021/gseach)**

を思い出したため、 **勢いでエントリー** しました。

　

当初は、各言語での連想配列系の呼び方の違いを記事にしようかと考えましたが、

既に、そのような、まとめの良記事は存在しています。

https://techracho.bpsinc.jp/hachi8833/2020_07_31/95098

https://qiita.com/dico_leque/items/86fc0e48f827c3c08f4e

　

では、ネタ記事として、

**本当にあった怖い検索結果 ～pythonの連想配列～**

とかを書こうとも思いましたが、明らかな怪文書が検索結果に表示されるわけではない[^1]ため、

釣り記事になってしまう ~~🪓怖い~~ と、断念。

[^1]: 本記事後半で、検索結果は紹介します。

　

ただ、連想配列系の呼び方の違いは、いつの時代も気になりますよね？

https://twitter.com/yukihiro_matz/status/1402251506808627205?s=20

Matzの感覚とまではいかないものの、

設計時などで、連想配列系のデータ構造を表現する時に、
相手の扱っているプログラム言語を意識して、単語を変える位には意識してしまいます。

　

**@Yametaro** さんが、 **ググり** というお題を出してくれたので、

**言語毎の連想配列系の検索結果を調べてみよう！**

という **[ググって解決しづらかったこと Advent Calendar 2021](https://qiita.com/advent-calendar/2021/gseach)** 21日目の記事です。

　

軽い読み物としてどうぞ。

# google 検索結果件数まとめ

まずは、google検索結果の件数を見てみる。多すぎるので、単位は、M(1,000,000)。

![スクリーンショット 2021-12-17 015314.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/352865/e6ca1a83-9fe9-d76d-d515-0529452602a9.png)

|| 連想配列<br>________ | dict<br>________ | Hash<br>________ | Map<br>________ | HashMap<br>________ | ハッシュテーブル<br>________ |
|:---|:--:|:--:|:--:|:--:|:--:|:--:|
|python|[0.124M](https://www.google.com/search?q=python+%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97)<br>(0.005%)|✅[18.8M](https://www.google.com/search?q=python+dict)<br>(0.9%)|[42.1M](https://www.google.com/search?q=python+Hash)<br>(2.0%)|[2,050M](https://www.google.com/search?q=python+Map)<br>(96.7%)|[8.72M](https://www.google.com/search?q=python+HashMap)<br>(0.4%)|[0.173M](https://www.google.com/search?q=python+%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB)<br>(0.008%)|
|javascript|[0.172M](https://www.google.com/search?q=javascript+%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97)<br>(0.004%)|[16.4M](https://www.google.com/search?q=javascript+dict)<br>(0.4%)|[85.2M](https://www.google.com/search?q=javascript+Hash)<br>(2.2%)|[3,710M](https://www.google.com/search?q=javascript+Map)<br>(94.4%)|[6.96M](https://www.google.com/search?q=javascript+HashMap)<br>(0.18%)|[112M](https://www.google.com/search?q=javascript+%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB)<br>(2.8%)|
|ruby|[0.069M](https://www.google.com/search?q=ruby+%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97)<br>(0.007%)|[12.9M](https://www.google.com/search?q=ruby+dict)<br>(1.2%)|✅[11.3M](https://www.google.com/search?q=ruby+Hash)<br>(1.1%)|[989M](https://www.google.com/search?q=ruby+Map)<br>(94.7%)|[8.02M](https://www.google.com/search?q=ruby+HashMap)<br>(0.77%)|[23M](https://www.google.com/search?q=ruby+%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB)<br>(2.2%)|
|java|[0.116M](https://www.google.com/search?q=java+%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97)<br>(0.006%)|[38.6M](https://www.google.com/search?q=java+dict)<br>(2.0%)|[30.7M](https://www.google.com/search?q=java+Hash)<br>(1.6%)|[1,800M](https://www.google.com/search?q=java+Map)<br>(94.9%)|✅[12M](https://www.google.com/search?q=java+HashMap)<br>(0.63%)|[16M](https://www.google.com/search?q=java+%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB)<br>(0.84%)|
|Rust|[0.051M](https://www.google.com/search?q=rust+%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97)<br>(0.04%)|[10.5M](https://www.google.com/search?q=rust+dict)<br>(7.3%)|[8.61M](https://www.google.com/search?q=rust+Hash)<br>(6.0%)|[121M](https://www.google.com/search?q=rust+Map)<br>(83.9%)|✅[3.35M](https://www.google.com/search?q=rust+HashMap)<br>(2.32%)|[0.77M](https://www.google.com/search?q=rust+%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB)<br>(0.53%)|
|golang|[0.08M](https://www.google.com/search?q=golang+%E9%80%A3%E6%83%B3%E9%85%8D%E5%88%97)<br>(0.26%)|[6.15M](https://www.google.com/search?q=golang+dict)<br>(20.0%)|[6.61M](https://www.google.com/search?q=golang+Hash)<br>(21.5%)|✅[12.1M](https://www.google.com/search?q=golang+Map)<br>(39.4%)|[5M](https://www.google.com/search?q=golang+HashMap)<br>(16.3%)|[0.791M](https://www.google.com/search?q=golang+%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB)<br>(2.6%)|

※ 2021年12月時点調べ
※ ✅ が連想配列系として、国内で使われていると筆者が認識している組み合わせ
※ ( ) 内は、言語の合計内の割合

突っ込みどころ満載の、無価値な表ができあがりました。

 - Hash や Map など、連想配列以外の用途の検索が引っかかってしまう。
 - そもそもgoogle検索結果件数のブレが大きい。
 - 英語の検索結果の影響が大きい。
 - etc...

ただ、少なくとも、google検索結果の件数においては、
プログラミング言語と連想配列系の単語の組み合わせが、
正しい方が、多く表示されると言う事はなさそうです。

　

# google 上位検索結果

では、件数ではなく、上位の検索結果ではどうでしょうか。

なんとなく、筆者が気持ち悪いと感じる「pythonの連想配列」や
「javascriptのdict」の検索結果を確認するため、
Python と javascript で 連想配列 と dict の検索結果の上位をまとめてみました。

 

## Python

|順位<br>____|連想配列<br>________|dict<br>________|
|:--:|:--|:--|
|1位|Pythonの連想配列に要素を追加する方法を現役エンジニアが ...<br>https://techacademy.jp/magazine/43247|Pythonで辞書を作成するdict()と波括弧、辞書内包表記<br>https://note.nkmk.me/python-dict-create/|
|2位|Python 辞書（連想配列） - ajisaba.net<br>http://www.ajisaba.net/python/dict.html|組み込み型 — Python 3.10.0b2 ドキュメント - Python Docs<br>https://docs.python.org/ja/3/library/stdtypes.html?highlight=dict|
|3位|配列・連想配列 ｜ Python-izm<br>https://www.python-izm.com/basic/array/|【Python入門】dictionary（辞書）の使い方。基本と応用<br>https://www.sejuku.net/blog/24122|
|4位|【python入門者必見！】配列・連想配列を徹底解説 - DMM ...<br>https://web-camp.io/magazine/archives/14815|Python ｜ 辞書に含まれるすべてのキーと値を取得する - Let's ...<br>https://www.javadrive.jp/python/dictionary/index8.html|
|5位|Pythonで辞書を作成するdict()と波括弧、辞書内包表記<br>https://note.nkmk.me/python-dict-create/|3-1. 辞書 (dictionary) - Pythonプログラミング入門<br>https://utokyo-ipp.github.io/3/3-1.html|
|6位|Python ｜ 辞書に含まれるすべてのキーと値を取得する - Let's ...<br>https://www.javadrive.jp/python/dictionary/index8.html|Pythonの辞書をマスターしよう！基本的な使い方から応用まで ...<br>https://www.tech-teacher.jp/blog/python-dictionary/|
|7位|Python3系の基礎文法（辞書） - Qiita<br>https://qiita.com/Amtkxa/items/ae2196a007c58182f2d1|［Python入門］辞書：Python入門（1/4 ページ） - ＠IT<br>https://atmarkit.itmedia.co.jp/ait/articles/1906/19/news017.html|
|8位|組み込み型 — Python 3.10.0b2 ドキュメント - Python Docs<br>https://docs.python.org/ja/3/library/stdtypes.html?highlight=dict|Pythonにおけるdict()の利用方法を現役エンジニアが解説 ...<br>https://techacademy.jp/magazine/24701|
|9位|【Python】辞書型（連想配列）の使い方 ｜ 西住工房<br>https://algorithm.joho.info/programming/python/dict-tsukaikata/|Python 辞書で最初のキーを取得する - Delft Stack<br>https://www.delftstack.com/ja/howto/python/get-first-key-in-dictionary-python/|
|10位|[Python] dict（連想配列）の使い方<br>http://24w.jp/lang/python/dict/|【Python】 辞書(dict)の使い方の基本 ｜ Hbk project<br>https://hibiki-press.tech/python/dict/1136|

## javascript

|順位<br>____|連想配列<br>________|dict<br>________|
|:--:|:--|:--|
|1位|JavaScriptの基本である連想配列をマスターする - Tech Play<br>https://techplay.jp/column/528|【JavaScript入門】連想配列(Dictionary)の取得/追加/ソート ...<br>https://www.sejuku.net/blog/27965|
|2位|JavaScriptの連想配列 - 追加削除やソート存在チェックも解説<br>https://www.pasonatech.co.jp/workstyle/column/detail.html?p=2639|JavaScriptの基本である連想配列をマスターする - Tech Play<br>https://techplay.jp/column/528|
|3位|javascriptの連想配列と配列の違い - Qiita<br>https://qiita.com/katsukii/items/168bee174073ae7ec7e4|javascriptの連想配列と配列の違い - Qiita<br>https://qiita.com/katsukii/items/168bee174073ae7ec7e4|
|4位|JavaScriptでの連想配列の使い方！多次元配列と連想配列の違い<br>https://www.fenet.jp/dotnet/column/language/4519/|JavaScriptの連想配列 - 追加削除やソート存在チェックも解説<br>https://www.pasonatech.co.jp/workstyle/column/detail.html?p=2639|
|5位|【JavaScript入門】連想配列(Dictionary)の取得/追加/ソート ...<br>https://www.sejuku.net/blog/27965|Object.keys() - JavaScript - MDN Web Docs<br>https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys|
|6位|Object.keys() - JavaScript - MDN Web Docs<br>https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/keys|Object.values() - JavaScript - MDN Web Docs<br>https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Object/values|
|7位|JavaScriptの連想配列とは？オブジェクトとの違いや値の取得 ...<br>https://www.brain-gate.net/content/column/system-program-associative-array/|JavaScriptで連想配列のキーの存在チェックの方法を現役 ...<br>https://techacademy.jp/magazine/22423|
|8位|【初心者向け】JavaScriptの配列と連想配列の違いとは？<br>https://blog.codecamp.jp/javascript-array|JavaScript オブジェクト(連想配列)の使い方 ｜ ITSakura<br>https://itsakura.com/js-object-literal|
|9位|javascript mapを使って連想配列から必要なキーのみを取得する<br>https://mebee.info/2020/09/30/post-19601/|JavaScriptの連想配列に要素を追加・削除する方法 ｜ UX MILK<br>https://uxmilk.jp/12852|
|10位|【JavaScript】 配列と連想配列の要素順序とMapオブジェクト<br>https://note.affi-sapo-sv.com/javascript-array-order.php|JavaScriptでの連想配列の使い方！多次元配列と連想配列の違い<br>https://www.fenet.jp/dotnet/column/language/4519/|

　

こちらについても、個々の記事への言及は避けますが、、

**私が予想していたよりも、検索結果に差がない** ことが、分かりました。

~~もちろん、私の感覚がずれていた可能性も有りますが、~~
「python 連想配列」の検索結果の5位の  [Pythonで辞書を作成するdict()と波括弧、辞書内包表記](https://note.nkmk.me/python-dict-create/) など、
**検索結果内に、検索した単語が出てこない記事もちらほら、引っかかります。**

**google賢過ぎない！？**

　

# まとめ

google検索の前では、プログラム言語毎の呼称の差異は、私が感じているより少ないものだと分かりました。

ただ、今回の執筆を通して、google検索結果を改めて考えてみると、
同一ドメイン記事の結果が、上位に並ばないようになっていたのもあり、
（昔はQiitaの記事が、TOP10のほとんどを埋め尽くしていたことも、あった気がした）
良記事が上位に出てくるとは限らないため、特に基礎的な部分において、
初学者がgoogle頼みだと、（昔よりも特に）遠回りではないかな？
という気持ちが強くなりました。

というわけで、以下の引用を掲載して、この記事を終わりにさせていただきます。

> Rubyに限らず、公式ドキュメントや公式リファレンスを参照することは遠回りなように見えて実は一番の近道だったりします。
まさに急がば回れ、っていうやつですね。
> [検索結果を要チェック！Rubyの公式リファレンスは docs.ruby-lang.org です 〜公式な情報源を調べるクセを付けよう〜](https://qiita.com/jnchito/items/2dc760ee0716ea12bbf0#%E5%85%AC%E5%BC%8F%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E5%8F%82%E7%85%A7%E3%81%97%E3%81%9F%E6%96%B9%E3%81%8C%E3%82%88%E3%81%84%E7%90%86%E7%94%B1)

~~勢いのエントリーを完了出来て良かった。~~