30代会社員のリアルな投資成績公開中

CryptoZombies(クリプトゾンビ)を早速プレイ!【レッスン1感想&技術メモ】

CryptoZombies(クリプトゾンビ)をプレイしてみた

プログラミング初心者がイーサリアム「Solidity」を勉強する理由・勉強方法』で書いた通り、早速「CryptoZombies(クリプトゾンビ)」をプレイしてみました。

まずはレッスン1を試してみましたので、感想と学んだことをメモしておきます。

「CryptoZombies(クリプトゾンビ)」のレッスン1をプレイしてみた

CryptoZombiesのレッスン構成

CryptoZombiesのレッスン構成

「CryptoZombies(クリプトゾンビ)」は6つのレッスンで構成されており、段階的に学習することができます。

今回は初めてなので、「レッスン1:ゾンビファクトリーの作成」を受講しました。開発環境を用意する必要が無く、インターネットと端末があれば簡単に始められます。

CryptoZombiesを始める

 

CryptoZombiesをスタート

上画像のように始まります。日本語対応しているのは嬉しいです。味のある日本語で、CryptoZombiesの世界観に引き込まれました。

 

CryptoZombiesのレッスン内容

CryptoZombiesのレッスン内容

上画像の通り、「学ぶべきこと」と「テスト」が用意されていて理解が深まります。

 

レッスン1を経て、僕が作ったゾンビは上画像の通り。何とも愛らしいですね…。

レッスン1で学習した技術のメモ

CryptoZombies(クリプトゾンビ)のレッスン1で学んだことをメモしておきます。

  1. バージョンの宣言
  2. 空のコントラクトを作成
  3. 変数の扱い方
  4. 数式演算
  5. 構造体
  6. 配列
  7. 関数の宣言
  8. 構造体と配列の操作
  9. Private/Public関数
  10. 関数の戻り値と修飾子
  11. Keccak256と型キャスト
  12. イベント

 

①バージョンの宣言

Solidityのソースコードは全て”version pragma“で始まる。コードが使用するSolidityのコンパイラのバージョンを宣言するもの。

pragma solidity ^0.4.19;

 

②空のコントラクトを作成

Solidityのコードは「コントラクト」内にカプセル化されている。コントラクトは、イーサリアムアプリケーションの基本ブロックのこと。

contract HelloWorld {

}

 

③変数の扱い方

状態変数はコントラクト内に永遠に保管され続けるもの。

  • uint…符号なし整数のデータ型(負数ではない)
  • int…符号付整数
contract Example {
 // この部分がブロックチェーン上に記載される
 uint ID = 1000;
}

 

④数式演算

演算方法は一般的であり、以下のように表現できる。

  • 加算:x + y
  • 減算:x – y
  • 乗算:x * y
  • 除算:x / y
  • 剰余:x % y
  • 指数:x ** y(xのy乗)
uint x = 1 + 2;

 

⑤構造体

複雑なデータ型が必要になる場合に備え、Solidityは構造体を用意している。

struct Person {
 uint age;
 string name;
}

 

⑥配列

Solidityには2種類の配列が用意されている。(固定長配列と可変長配列)

配列をpublicで宣言することで、他のコントラクトもこの配列を読むことができる。

 

⑦関数の宣言

グローバル変数と区別できるように、関数パラメータ変数名に「アンダースコア」をつけるのが一般的。

//関数の宣言
function eatApple(string _name, uint _amount) {

}
//関数の呼び出し
eatApple("Taro", 2);

 

⑧構造体と配列の操作

配列にデータを格納する方法は2通り。以下②の方がスッキリする。

①
Person taro = Person(20, "Taro");
people.push(taro);
②
people.push(Person(20, "Taro"));

 

⑨Private/Public関数

Solidityの関数はデフォルトでpublicになっているため、誰でもコントラクトの関数を呼び出し&実行できる。

自分だけが使いたい関数はprivate、公開して良い関数はpublicに設定すればOK。

  • 関数名の後にprivateを付与。
  • 関数名の前にアンダースコアを付与するのが一般的。

 

⑩関数の戻り値と修飾子

以下は戻り値の例。Solidityでは関数の宣言に戻り値の型を含む。

string greeting = "Hello";

function sayHello() public returns (string) {
 return greeting;
}

関数の修飾子は「view」と「pure」がある。

  • view…データの読み取り専用で編集できない
  • pure…アプリ内のデータにアクセスできない

 

⑪Keccak256と型キャスト

イーサリアムにはSHA3のバージョンの1つ「keccak256」が組み込まれており、文字列をランダムな256ビットの16進数にマッピングしてくれる。

keccak256("abcde");

場合によっては、データ型を変更する必要がある。

uint8 a = 1;
uint b = 2;
uint8 c = a * uint8(b);

 

⑫イベントの宣言

eventはブロックチェーンで何かが生じた時、コントラクトがアプリのフロントエンドに伝えることが可能。

特定のイベントをlistening状態にして、何かあった時にアクションを起こせる。

//イベントの宣言
event IntegersAdded(uint x, uint y, uint result);

function add(uint _x, uint _y) public {
 uint result = _x + _y;
 //関数が呼び出されたことをアプリに伝えるためにイベントを発生
 IntegersAdded(_x, _y, result);
 return result;
}

さいごに感想:初心者にはハードル高めだが、しっかり学べる

「CryptoZombies(クリプトゾンビ)」は、初心者にはハードルが高いように感じました。説明文をじっくり読みつつ、ヒントに頼らずテストを受けると時間がかかります。

しかし無料なのにコンテンツがしっかりしているので、大変良い勉強になりました。挫けずにレッスン2に挑戦していきます!

 

▼質問しながら、効率良く学びたい人向け▼

TechAcademy公式サイトへ