Solidityでの開発の第一歩を踏み出しましょう!
はじめに:最初のスマートコントラクト
プログラミング学習の定番、「Hello World」。Solidityの世界でも、まずは簡単なスマートコントラクトを作成し、それをブロックチェーン(のシミュレーション環境)にデプロイ(配置)してみましょう。
このステップでは、最も手軽なオンラインIDEである Remix IDE を使って、シンプルなメッセージを保存・変更できるスマートコントラクトを作成し、デプロイする手順を学びます。 🎉
このステップのゴール:
- Remix IDEでSolidityのコードを書く。
- 簡単なスマートコントラクト(Hello World)を作成する。
- コントラクトをコンパイルする。
- Remixの仮想環境にコントラクトをデプロイする。
- デプロイしたコントラクトと対話する(メッセージを確認・変更する)。
1. 開発環境:Remix IDE を使ってみよう
Solidityの開発環境にはいくつか選択肢がありますが、初学者にとって最も簡単で、すぐに始められるのが Remix IDE です。Webブラウザだけで利用でき、複雑なインストール作業は不要です。
🌐 Remix IDE にアクセスしてみましょう。
Remix IDEを開くと、左側のファイルエクスプローラー、中央のエディタ、右側のコンパイル・デプロイ・実行パネルが表示されます。
(他の開発環境として、より本格的な開発に使われる Hardhat や Truffle もありますが、これらは Step 6 以降で触れていきます。)
2. スマートコントラクトを作成する ✍️
それでは、実際にSolidityでコードを書いていきましょう。
- 新規ファイルの作成: Remix IDEの左側ファイルエクスプローラーで、「contracts」フォルダを右クリック(またはフォルダ横のファイル作成アイコンをクリック)し、「新規ファイル」を選択します。ファイル名を
HelloWorld.sol
としましょう。(.sol
はSolidityファイルの拡張子です) - コードの入力: 作成した
HelloWorld.sol
ファイルを開き、以下のコードをコピー&ペースト、または入力してください。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;
/**
* @title HelloWorld
* @dev 初めてのスマートコントラクト。メッセージを保存・更新できます。
*/
contract HelloWorld {
// 状態変数: ブロックチェーン上に保存されるデータ
string public message;
/**
* @dev コンストラクタ: コントラクトがデプロイされる時に一度だけ実行される
*/
constructor() {
message = "Hello World! 👋"; // 初期メッセージを設定
}
/**
* @dev メッセージを更新する関数
* @param newMessage 新しいメッセージ文字列
*/
function updateMessage(string memory newMessage) public {
message = newMessage;
}
}
コードの簡単な解説:
// SPDX-License-Identifier: MIT
: ライセンスを指定するコメントです。多くのオープンソースプロジェクトで推奨されています。pragma solidity ^0.8.20;
: 使用するSolidityコンパイラのバージョンを指定します。^0.8.20
は「バージョン0.8.20以上、0.9.0未満」を意味します。contract HelloWorld { ... }
: スマートコントラクト本体を定義します。HelloWorld
がコントラクト名です。string public message;
:message
という名前の状態変数を定義しています。型はstring
(文字列)で、public
をつけると、外部からこの変数を読み取るための関数が自動的に生成されます。constructor() { ... }
: コンストラクタと呼ばれる特殊な関数です。コントラクトがデプロイされる時に一度だけ実行され、初期設定を行います。ここではmessage
に “Hello World! 👋” を代入しています。function updateMessage(string memory newMessage) public { ... }
:message
を更新するための関数です。string memory newMessage
で新しいメッセージを引数として受け取り、message = newMessage;
で状態変数を更新します。public
なので誰でも呼び出すことができます。memory
については Step 4 で詳しく学びます。
3. コントラクトをコンパイルする ⚙️
書いたコードを、Ethereum Virtual Machine (EVM) が理解できる形式(バイトコード)に変換する作業がコンパイルです。
- コンパイラパネルを開く: Remix IDEの左側メニューから、Solidityのロゴ(Sのようなアイコン)をクリックして、「Solidity compiler」パネルを開きます。
- コンパイラバージョンの選択: 「Compiler」ドロップダウンリストから、コードの
pragma
で指定したバージョンと互換性のあるもの(例:0.8.20+commit...
)を選択します。pragma solidity ^0.8.20;
と指定したので、0.8.20以上のバージョンなら大丈夫です。 - コンパイル実行: 「Compile HelloWorld.sol」ボタンをクリックします。
- 成功確認: エラーが表示されず、ボタンの下に緑色のチェックマーク ✅ とコントラクト名 (HelloWorld) が表示されればコンパイル成功です!もしエラーが出た場合は、コードを見直して修正しましょう。
4. コントラクトをデプロイする 🚀
コンパイルが成功したら、いよいよコントラクトをブロックチェーンにデプロイします。今回は、Remix IDEが提供するテスト用の仮想的なブロックチェーン環境(Remix VM)にデプロイします。これにより、実際のETH(イーサリアムの通貨)を使わずにテストできます。
- デプロイパネルを開く: Remix IDEの左側メニューから、Ethereumのロゴのようなアイコンをクリックして、「Deploy & run transactions」パネルを開きます。
- 環境の選択: 「ENVIRONMENT」ドロップダウンリストで、「Remix VM (London)」や「Remix VM (Shanghai)」などを選択します。(リストにある最新のものを選ぶのが良いでしょう)。これにより、Remix内部の仮想ブロックチェーンが起動します。仮想のアカウントとETHも用意されます。
- コントラクトの選択: 「CONTRACT」ドロップダウンリストで、先ほどコンパイルした
HelloWorld
が選択されていることを確認します。 - デプロイ実行: 「Deploy」ボタンをクリックします。
- 成功確認: しばらくすると、パネル下部の「Deployed Contracts」セクションに、デプロイされた
HelloWorld
コントラクトが表示されます。これでデプロイは成功です!🎉
注意: 実際のEthereumメインネットやテストネットにデプロイする場合は、MetaMaskなどのウォレット接続や、ガス代(手数料)として実際のETHが必要になりますが、Remix VMでは不要です。
5. コントラクトと対話する 💬
デプロイしたスマートコントラクトは、ただ存在するだけではありません。定義した関数を呼び出して、状態を読み取ったり変更したりできます。
- デプロイされたコントラクトを確認: 「Deployed Contracts」セクションに表示されている
HelloWorld
をクリックして展開します。 - 状態変数を読み取る:
message
という青いボタン(読み取り専用の関数は青色で表示されることが多いです)があるはずです。これをクリックすると、現在のmessage
の値(”Hello World! 👋”)が表示されます。これは、string public message;
のpublic
によって自動生成された読み取り関数です。 - 関数を実行して状態を更新する:
updateMessage
というオレンジ色(状態を変更する関数はオレンジ色が多いです)のボタンの隣にある入力欄に、新しいメッセージ(例: “Solidity is fun! 😄”)を入力します。文字列はダブルクォーテーション"
で囲むのを忘れずに。- 入力欄の隣にある「transact」ボタンをクリックします。これにより、
updateMessage
関数が実行され、ブロックチェーンの状態が更新されます(Remix VM上ですが)。 - Remixのコンソール(下部)にトランザクション成功のログが表示されます。
- 更新結果を確認: 再度、青い
message
ボタンをクリックします。今度は、先ほど入力した新しいメッセージ “Solidity is fun! 😄” が表示されるはずです!
おめでとうございます!これで、Solidityでスマートコントラクトを作成し、デプロイし、操作するという一連の流れを体験できました!🥳
まとめと次のステップ
このステップでは、Solidity開発の第一歩として、Remix IDEを使って「Hello World」スマートコントラクトを作成し、コンパイル、デプロイ、そして対話する方法を学びました。
- ✅ Remix IDEの基本的な使い方を理解した。
- ✅ 簡単なSolidityコードの構造(pragma, contract, 状態変数, constructor, function)を知った。
- ✅ コンパイルとデプロイのプロセスを体験した。
- ✅ デプロイしたコントラクトの関数を呼び出す方法を学んだ。
これで、Solidity開発の基礎が少し見えてきたのではないでしょうか?
次のステップ (Step 2) では、Solidityのより詳細な文法、特に様々なデータ型について学んでいきます。スマートコントラクトで扱える情報の種類を理解することは、より複雑で実用的なコントラクトを作成するために不可欠です。 💪
参考情報
- Remix IDE 公式ドキュメント: Remixのさらに詳しい使い方や機能について知りたい場合に参照してください。
URL: https://remix-ide.readthedocs.io/en/latest/ - Solidity 公式ドキュメント (日本語訳): Solidityの言語仕様について、より深く学びたい場合に役立ちます。
URL: https://solidity-jp.readthedocs.io/ja/latest/
コメント