[Solidityのはじめ方] Part4: Hello World スマートコントラクトを作成・デプロイ

Solidity

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でコードを書いていきましょう。

  1. 新規ファイルの作成: Remix IDEの左側ファイルエクスプローラーで、「contracts」フォルダを右クリック(またはフォルダ横のファイル作成アイコンをクリック)し、「新規ファイル」を選択します。ファイル名を HelloWorld.sol としましょう。(.sol はSolidityファイルの拡張子です)
  2. コードの入力: 作成した 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) が理解できる形式(バイトコード)に変換する作業がコンパイルです。

  1. コンパイラパネルを開く: Remix IDEの左側メニューから、Solidityのロゴ(Sのようなアイコン)をクリックして、「Solidity compiler」パネルを開きます。
  2. コンパイラバージョンの選択: 「Compiler」ドロップダウンリストから、コードの pragma で指定したバージョンと互換性のあるもの(例: 0.8.20+commit...)を選択します。pragma solidity ^0.8.20; と指定したので、0.8.20以上のバージョンなら大丈夫です。
  3. コンパイル実行: 「Compile HelloWorld.sol」ボタンをクリックします。
  4. 成功確認: エラーが表示されず、ボタンの下に緑色のチェックマーク ✅ とコントラクト名 (HelloWorld) が表示されればコンパイル成功です!もしエラーが出た場合は、コードを見直して修正しましょう。

4. コントラクトをデプロイする 🚀

コンパイルが成功したら、いよいよコントラクトをブロックチェーンにデプロイします。今回は、Remix IDEが提供するテスト用の仮想的なブロックチェーン環境(Remix VM)にデプロイします。これにより、実際のETH(イーサリアムの通貨)を使わずにテストできます。

  1. デプロイパネルを開く: Remix IDEの左側メニューから、Ethereumのロゴのようなアイコンをクリックして、「Deploy & run transactions」パネルを開きます。
  2. 環境の選択: 「ENVIRONMENT」ドロップダウンリストで、「Remix VM (London)」や「Remix VM (Shanghai)」などを選択します。(リストにある最新のものを選ぶのが良いでしょう)。これにより、Remix内部の仮想ブロックチェーンが起動します。仮想のアカウントとETHも用意されます。
  3. コントラクトの選択: 「CONTRACT」ドロップダウンリストで、先ほどコンパイルした HelloWorld が選択されていることを確認します。
  4. デプロイ実行: 「Deploy」ボタンをクリックします。
  5. 成功確認: しばらくすると、パネル下部の「Deployed Contracts」セクションに、デプロイされた HelloWorld コントラクトが表示されます。これでデプロイは成功です!🎉

注意: 実際のEthereumメインネットやテストネットにデプロイする場合は、MetaMaskなどのウォレット接続や、ガス代(手数料)として実際のETHが必要になりますが、Remix VMでは不要です。

5. コントラクトと対話する 💬

デプロイしたスマートコントラクトは、ただ存在するだけではありません。定義した関数を呼び出して、状態を読み取ったり変更したりできます。

  1. デプロイされたコントラクトを確認: 「Deployed Contracts」セクションに表示されている HelloWorld をクリックして展開します。
  2. 状態変数を読み取る: message という青いボタン(読み取り専用の関数は青色で表示されることが多いです)があるはずです。これをクリックすると、現在の message の値(”Hello World! 👋”)が表示されます。これは、string public message;public によって自動生成された読み取り関数です。
  3. 関数を実行して状態を更新する:
    • updateMessage というオレンジ色(状態を変更する関数はオレンジ色が多いです)のボタンの隣にある入力欄に、新しいメッセージ(例: “Solidity is fun! 😄”)を入力します。文字列はダブルクォーテーション " で囲むのを忘れずに。
    • 入力欄の隣にある「transact」ボタンをクリックします。これにより、updateMessage 関数が実行され、ブロックチェーンの状態が更新されます(Remix VM上ですが)。
    • Remixのコンソール(下部)にトランザクション成功のログが表示されます。
  4. 更新結果を確認: 再度、青い message ボタンをクリックします。今度は、先ほど入力した新しいメッセージ “Solidity is fun! 😄” が表示されるはずです!

おめでとうございます!これで、Solidityでスマートコントラクトを作成し、デプロイし、操作するという一連の流れを体験できました!🥳

まとめと次のステップ

このステップでは、Solidity開発の第一歩として、Remix IDEを使って「Hello World」スマートコントラクトを作成し、コンパイル、デプロイ、そして対話する方法を学びました。

  • ✅ Remix IDEの基本的な使い方を理解した。
  • ✅ 簡単なSolidityコードの構造(pragma, contract, 状態変数, constructor, function)を知った。
  • ✅ コンパイルとデプロイのプロセスを体験した。
  • ✅ デプロイしたコントラクトの関数を呼び出す方法を学んだ。

これで、Solidity開発の基礎が少し見えてきたのではないでしょうか?

次のステップ (Step 2) では、Solidityのより詳細な文法、特に様々なデータ型について学んでいきます。スマートコントラクトで扱える情報の種類を理解することは、より複雑で実用的なコントラクトを作成するために不可欠です。 💪

参考情報

コメント

タイトルとURLをコピーしました