icon
icon

実際に書いてみる!Solidityでmappingを使う方法【初心者向け】

初心者向けにスマートコントラクト開発に使われる言語Solidityでmappingを使う方法について詳しく解説しています。Ethereum上にアプリケーションを作成したい場合はSolidityを使用しますが、書き方を理解しておきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

今回は、Solidityでmappingを使う方法について解説します。

スマートコントラクトの実装を行う際に頻出なので、ぜひ書き方を覚えておきましょう。

 

 

田島悠介

今回は、Solidityのmappingについて勉強しよう。

大石ゆかり

田島メンター!mappingというのは何ですか~?

田島悠介

mappingはSolidityでの配列のようなものだね。まずは基本の書き方を説明するよ。

大石ゆかり

お願いします!

mappingとは

mappingとは、Solidityで使用する配列のような機能です。

Solidityとは、Ethereumでコントラクトコードを実装する際に利用するプログラミング言語の名称で、スマートコントラクトを実行するために必要なコードです。

ブロックチェーンとは、仮想通貨等の取引データを分散して管理する仕組みのことです。ブロックチェーン単体では、仮想通貨の取引や、取引履歴の確認を行うことができます。

そのスマートコントラクトの機能を実装するには、Solidityというコントラクト指向言語を使用します。

配列とは、値を入れる箱なのですが、箱の中身をいくつかの部屋に分けることで、1つの箱に複数の値を入れることができるプログラムの基本的な仕組みです。

配列で重要考え方として、値が入っている部屋を数字で表すということです。そして、一番最初の値が入っている部屋を0で表示します。つまり、0号室に1番目の値が入っているということです。

1番目の値なのに、0番目の部屋に入っているという意味になるのですが、この前提を抑えることで配列という概念を理解することができます。

 

mappingの書き方

基本構文

mapping(key => value) public ステート変数名

 

解説

mappingと記載することで、mappingを利用した配列のような処理が可能になります。

(key => value) では、配列の0号室というkeyに1番目の値というvalueが入ることを意味しています。

publicはアクセス修飾子を指定しています。

ステート変数名とは、オブジェクト指向言語で言うインスタンス変数のようなものです。

 

[PR] 無料で現役エンジニアから学べる

アクセス修飾子

アクセス修飾子とは、どの位置からアクセス可能であるかを設定するものです。

アクセス修飾子には4つの種類があります。

public

publicで指定された場合は、指定した場所(内部)からも、指定していない場所(外部)からもアクセス可能です。

 

private

privateで指定した場合は、そのcontractからのみアクセス可能です。

 

external

externalで指定した場合は、指定していない場所(外部)からのみアクセス可能です。

 

internal

internalで指定した場合は、そのcontractと、そのcontractの子からアクセス可能です。

子という概念はプログラミング独自の概念です。

そのプログラム自身を親と考え、自身を元に派生して実装された部分を子と考えます。

 

田島悠介

mappingの基本の形と、アクセス修飾子についてだよ。

大石ゆかり

上の基本構文例の”public”の部分がアクセス修飾子で、その内容によってどこからアクセスできるかを指定するんですね。

田島悠介

次に、実際の例でmappingの書き方を確認してみよう。

mappingを実際に書いてみよう

銀行口座管理用のmappingコード

pragma Solidity ^0.4.11
contract BankAccount
struct User {
  address addr;
  unit amount;
}
mapping(unit => User) public Users;

 

解説

1行目のpragma Solidity ^0.4.11では、Solidityプログラムを宣言しています。

2行目のcontract BankAccountでは、銀行口座を意味するBankAccountのcontract作成を意味しています。

3行目のstruct User {では、struct型の銀行口座の名義人Userを意味しています。

4行目のaddress addr;では、名義人のアドレスを意味しています。銀行口座で言うと口座番号のイメージです。

5行目のunit amount; では、口座残高を意味しています。

6行目の}では、3行目の処理を終了することを意味します。

7行目のmapping(unit => User) public Users;では、mappingにより、配列のようなイメージでmappingによる値の格納を宣言しています。

ここでは、keyにunit型、valueには、User型で設定した構造体の内容を格納しています。

 

今回は、Solidityでmappingを使う方法について解説しました。

実際にコードを書きながら理解していきましょう。

 

田島悠介

mappingの具体的な記述例を見てみたよ。

大石ゆかり

ここでのstructというのは何を指すんですか?

田島悠介

これは型のひとつで、構造体を扱うものなんだ。データ型についてもおさらいしておこう。

大石ゆかり

分かりました。ありがとうございます!

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する