前回、Solidity IDEを使って「Hello World」を表示させてみました。
なるべくエンジニアじゃない人でもわかるように書いたのですが、さらにエンジニアじゃない人向けにイーサリアムにおけるスマートコントラクトの作成方法を説明してみたいと思います。まずは、Solidity IDEを開いてみましょう。
Contents
非エンジニアでも理解できるSolidity IDE
Solidity IDEについては、Mistというイーサリアムのウォレットから開くこともできます。
ただインストールなど手間に感じる人もいると思うので、そういう方向けにWEB上からSolidity IDEを開くこともできるのです。今回は、WEB上からSolidity IDEを操作してみます。
Solidity IDEを開くと、まず上記画面が表示されます。今回は、このUIを利用して「Hello World!」をより簡単に表示させてみましょう。
ファイルを「HelloWorld.sol」に書換える
ブラウザを開くと「ballot.sol」というファイルが、デフォルトで作成されています。今回は、このファイル名を変更してみましょう。ダブルクリックで選択できるので、「HelloWorld.sol」という名前に書き換えてみます。そして、デフォルトで記述されているコードを全て消しましょう。
では次に「HelloWorld!」を表示させるコードを書いてみましょう。
コードを記述しよう
これから作成するコードは、必要最低限のものになります。これだけで、プログラミングが実行されるのかというイメージができれば最高です。
pragma solidity ^0.4.8; contract HelloWorldContract{ string word = "Hello World!"; function getWord() constant returns(string){ return word; } }
この短いコードで、「Hello World!」を表示させることができます。
プログラミングを実行しよう
では早速プログラミングを実行してみましょう。右カラムにある「Run」タブをクリックして下さい。
そして「Create」ボタンをクリックしてみましょう。
「Create」ボタンを押すと、その下欄に「getWord」というコマンドが表示され「Hello World!」という文字が表示されていることが確認できると思います。簡単ですが、イーサリアムにおけるスマートコントラクトの仕組みを利用して「Hello World!」を表示させることができました。
コードの中身を見ていこう
では実際に、記述したコードの中身について見ていきましょう。
//①バージョンプラグマ pragma solidity ^0.4.8; //②コントラクトの宣言 contract HelloWorldContract{ string word = "Hello World!"; //③メソッドの宣言 function getWord() constant returns(string){ return word; } }
記述したコードにおいて、3つポイントがあります。
- バージョンプラグマ
- コントラクトの宣言
- メソッドの宣言
上記3点がプログラミングを実行する上で基本形になります。
バージョンプラグマ
//①バージョンプラグマ pragma solidity ^0.4.8;
コンパイラのバージョンを指定する命令です。互換性のないバージョンのコンパイラによるコンパイルを拒否することができます。初期のSolidityでは、書く必要はなかったようです。ただ現在は必須記入項目になりました。
コントラクトの宣言
//②コントラクトの宣言 contract HelloWorldContract{ string word = "Hello World!"; }
コントラクトは、Ruby等のオブジェクト指向プログラミング言語における「クラス」という概念と似ています。任意の名前を付けることができ、実行するプログラミングを連想できる名前が望ましいと言われています。
メソッドの宣言
//③メソッドの宣言 function getWord() constant returns(string){ return word; }
戻り値の返すメソッドです。戻り値として返す場合は、returns として戻り値のデータ型を宣言する必要がります。ブロックチェーンで保持しているデータの変更を行わない場合は、constantを外しましょう。
おわりに
繰り返しになりますが、イーサリアムにおけるスマートコントラクトを作成するための基本形は、
- バージョンプラグマ
- コントラクトの宣言
- メソッドの宣言
この3つをまず覚えることです。ここからコードを発展させていき、より複雑なスマートコントラクトや独自通貨の発行などを行うことができます。このサイトにおいても、より複雑なスマートコントラクトを今後は取り上げていきたいと思います。