前回は、Remix – Solidity IDE を使って「Hello World!」を表示させてみました。
コードについては特に触れずに、Solidity IDE についてだけ説明しました。
Hello World! をより詳しく学ぼう
今回は、実行したプログラミングについて詳細を説明してみようと思います。
//バージョンプラグマ pragma solidity ^0.4.8; //コントラクトの宣言 contract HelloWorld { //状態変数の宣言 string public greeting; //コンストラクタ function HelloWorld(string _greeting) { greeting = _greeting; } //メソッドの宣言 function setGreeting(string _greeting) { greeting = _greeting; } function say() constant returns (string) { return greeting; } }
前回書いたコードは、上記になります。このコード一つ一つについて説明してみようと思います。
バージョンプラグマ
pragma solidity ^0.4.8;
コンパイラのバージョンを指定する命令です。互換性のないバージョンのコンパイラによるコンパイルを拒否することができます。初期のSolidityでは、書く必要はなかったようです。ただ現在は必須記入項目になりました。
コントラクトの宣言
contract HelloWorld {}
Contract でコントラクトを宣言します。
コントラクトは、Ruby等のオブジェクト指向プログラミング言語における「クラス」という概念と似ています。任意の名前を付けることができ、実行するプログラミングを連想できる名前が望ましいと言われています。
状態変数の宣言
string public greeting;
コントラクト内で有効な変数を宣言することができます。Ethereumでは、これを状態変数と呼びます。今回は、ユーザーから渡された文字列を変数として宣言しました。public を変数名の前につけることで誰でも閲覧することができます。
コンストラクタ
function HelloWorld(string _greeting) { greeting = _greeting; }
Functionでメソッドを宣言します。コンストラクタは、コントラクトと同じ名前のメソッドです。これはデプロイ時のみ実行可能な特別なメソッドです。ここでは、引数として渡された_greetingを状態変数にセットしています。
メソッドの宣言
function setGreeting(string _greeting) { greeting = _greeting; } function say() constant returns (string) { return greeting; }
戻り値の返すメソッドです。戻り値として返す場合は、returns として戻り値のデータ型を宣言する必要がります。ブロックチェーンで保持しているデータの変更を行わない場合は、constantを外しましょう。
おわりに
今回は、Hello World! についてより詳細の説明をしてみました。プログラムコードについては、一つ一つ分解して理解していけばそこまで難しくないことが多いです。Solidityについては、まだ国内資料が少なく海外のチュートリアルを参考にすることが多いです。このサイトでは、Solidityについて詳しい情報を今後も発信していこうと思います。