ハッシュを使って 辞書を作ろう JSONも使おう

Pocket

ハッシュを使って 辞書を作ろう JSONも使おう
ハッシュを使って辞書を作ろうJSONも使おう

序文

はい。

今回は、「エクセルVBA日本語化」に、「ハッシュ」という型の変数を追加しました。

「ハッシュ」とは、主にプログラムを作る側のリクツでその名前が決まったのですが、本来の意味では「辞書」のことを指します。

辞書ですから、例えば英語辞書なら「Cookie」の欄を引くには、「C」から、「Coo」とたどっていって、最後に「Cookie」のページを開きます。

そして、「Cookie」の意味として「クッキー。玉子やバターなどを材料にしてオーブンで焼いた焼き菓子。」などの情報を得ます。

ハッシュとは

結論を言いますと、「ハッシュ」とは、この、

  • Cookie
    (ハッシュの「キー」といいます。)
  • 「クッキー。玉子やバターなどを材料にしてオーブンで焼いた焼き菓子。」などの情報。
    (ハッシュの「」と言います)

の、キーと値のペアを、集めて一つの変数の中にいれたもので、まさしく「辞書」のことです。

今回は、実際に、この「ハッシュ(辞書)」の使い方を解説していきます。

それでは、行ってみましょう!

なお、「ハッシュ」機能を使うには、「エクセルVBA日本語化」 ver0.16.0-alpha-3 以上のバージョンが必要です。

以下のURLよりダウンロードされてください。

ハッシュにキーと値を追加していき、最後に全て文字列として表示

ハッシュの取得と解放のテンプレート
ハッシュの取得と解放のテンプレート

まずは、ハッシュの取得方法と、解放(w_ハッシュをNothingにすること)のテンプレートを作ります。

以下のコードをコピペしてください。

次に、ハッシュにキーと値を追加してきましょう。

「追加」メソッドのツールチップヘルプ
「追加」メソッドのツールチップヘルプ

「w_ハッシュ」に、「.(ピリオド)」を付けるとコード補完リストが表示されますので、「追加」を選択してTABキーを押下し、コード補完を完了させます。

さらに、キーと値を入力するために、「半角スペース」を入力すると、上図のように、ツールチップヘルプ(黄色の箇所)が出てきます。

ヘルプ通りに、「キー」と「値」を追記しましょう。

なお、「キー」と「値」の間には、「,(カンマ)」を入力してください。

ハッシュに「キー」と「値」を3つ追加した。
ハッシュに「キー」と「値」を3つ追加した。

「w_ハッシュ」に「キー」と「値」のペアを3つ追加しました。

最後に、ハッシュの「値」を全てつなげて文字列化してみましょう。

ハッシュの「値」を全てつなげて文字列化するコード
ハッシュの「値」を全てつなげて文字列化するコード

「w_ハッシュ」の「文字列化」メソッドを呼び出します。

「値」と「値」の間を区切る文字は、「カンマ」の他、「タブ」や「改行」などを選択できます。

「値」と「値」を区切る文字
「値」と「値」を区切る文字

なお、「その他」を選択すると、好きな文字で「値」と「値」の間を区切ることができます。

「文字列化(カンマ)」の結果
「文字列化(カンマ)」の結果

「文字列化(カンマ)」の結果、上図のような文字列を得ています。

なお、ここまでのコードは、以下のようになります。コピペして利用されてください。

ハッシュのキーの配列を取得し、For Eachでループする

ハッシュのキーの配列を取得し、For Eachでループ
ハッシュのキーの配列を取得し、For Eachでループ

次に、ハッシュのキーを配列として取得しましょう。

ハッシュのキーは以下のコードで取得できます。

このようキーの配列を取得すると、「For Each」文で、キーをキーの配列から1つ1つ取得しながらループできます。

ループはキーの最初から自動的に始まり、キーの最後で自動的に終了しますので、あまり面倒なことにはなりません。

また、先ほどの「文字列化」では、「値」しかつなげることができませんでしたが、今回はキーも取得できます。

キーから値を引くメソッド「値(key)」を使えば、キーから対応するペアの値も取得できます。

このため、ハッシュの持っている全ての「キー」と「値」のペアを取得できます。

ハッシュの持っている全ての「キー」と「値」のペアを取得

実際に実行してみましょう。

「キー」と「値」のペアその1
「キー」と「値」のペアその1
「キー」と「値」のペアその2
「キー」と「値」のペアその2
「キー」と「値」のペアその3
「キー」と「値」のペアその3

以上のように、ハッシュの持っている全ての「キー」と「値」のペアを取得できました。

ここまでのコードは、以下のようになります。コピペして利用されてください。

JSONデータからハッシュを作る。ただし、難しいことはできない。

最後にJSONデータから、ハッシュを作ってみましょう。

ただし、「エクセルVBA日本語化」でのJSONデータの取り扱いが、簡単な仕組みになっているため、難しいことはできません。

JSONデータからハッシュを作る。ただし、難しいことはできない。

コードは以下のようになります。

FromJSON」メソッドでJSONデータをハッシュ化します。

ToJSON」でハッシュからJSONデータを作成し、文字列化します。

最後に、「g_道具.表示」メソッドで、JSONデータの文字列を表示しています。

なお「vbCrLf」の箇所は、「vbLf」でもかまいません。

ToJSON()でJSONデータを出力
ToJSON()でJSONデータを出力

ToJSON()でJSONデータを出力したものが上図のような結果となりました。

まとめ

お疲れ様でした。

ここまで読んで頂いて、誠にありがとうございました。

最後に、今日の学びを以下にまとめます。

  • ハッシュ」とは「辞書」こと。
    英語辞書で言えば、「キー」が英単語で、「」が日本語の解説。
    「ハッシュ」は基本的に「キー」から「辞書」を引いて「値」を取り出す方式。
  • ハッシュから「キーの配列」を取得できる。
    「キーの配列」を取得したら「For Each key in kyes」の文でキーごとにループできる。
    「キー」から「値」を引くには、「w_ハッシュ.値(key)」という「値」メソッドを呼べばいい。
  • 簡単なJSONデータであれば、「FromJSON」メソッドで一度にハッシュ化できる。
    また、ハッシュから「ToJSON」メソッドでJSONデータを出力することができる。

以上のようになります。

今回は、プログラミングでいうところの「アルゴリズムとデータ構造」という概念の内の「ハッシュ」という概念の解説になり、少々難しくありました。

しかし、実際に使って見ると、単なる「辞書引き」を実現するアルゴリズムであるという結果が分かりました。

なぜ、「辞書引き」に「ハッシュ」を用いるか

なぜ、「辞書引き」に「ハッシュ」を用いるかと言えば、計算回数が1回の計算で「辞書引き」でき、高速に動くという背景のリクツがあります。

便利ですので、これを機会に、ぜひ、「ハッシュ」を使って見てください。

それではー またー (^_^)/

The following two tabs change content below.
KaBA@フリーランス修行中

KaBA@フリーランス修行中

こんにちは!IT業界で勤めて17年くらい務めています。プログラミング大好きやろーです。 自分も独学でC言語を覚えIT会社に就職しました。その後紆余曲折を経て、VB6.0、VBA、Perl、C#、HTML、CSS、JavaScript、PHPなどを覚えていきました。全部C言語の独学時の経験がベースとなって、学習曲線が良いカーブを描いていました。 情報工学科を出ていなくても、独学でエンジニアは育つことができると思います! このブログで皆さんがプログラミングに興味を持たれるのを心待ちにしています! 頑張って覚えられてください!よろしくお願いします。