スマートコントラクト言語Solidity:導入からサンプルコードまで徹底解説


スマートコントラクト言語Solidity:導入からサンプルコードまで徹底解説

ethereum/solidity

2025-08-05

Solidityは、ブロックチェーンの世界で「スマートコントラクト」という特別なプログラムを書くための言語です。ソフトウェアエンジニアの皆さんにとって、新しい技術を学ぶことはワクワクする挑戦ですよね。Solidityがどのように役立つのか、一緒に見ていきましょう!

ソフトウェアエンジニアの視点から見ると、Solidityは以下のような点で非常に興味深い言語です。

確実な実行と信頼性

Solidityで書かれたスマートコントラクトは、一度ブロックチェーンにデプロイされると、誰もその動作を止めることができません。また、改ざんも非常に困難です。これは、特定の条件下で必ず実行されるプログラムを構築する際に、大きなメリットとなります。

独自のエコシステム

Solidityは、イーサリアムという巨大なブロックチェーンネットワーク上で動作します。このネットワークには、多くの開発者、ユーザー、そしてツールが存在します。Solidityを学ぶことは、この活気あるエコシステムに参加することを意味します。

金融・非金融分野での可能性

スマートコントラクトは、仮想通貨の送金だけでなく、不動産登記、サプライチェーンの追跡、ゲーム内のアイテム管理など、様々な分野で活用されています。Solidityを学ぶことで、これらの新しい分野で活躍できる可能性が広がります。

Solidityを始めるのはとても簡単です。特別な環境を構築する必要はありません。ブラウザで使える統合開発環境「Remix」を使ってみましょう。

Remixの使い方

Remixの公式サイトにアクセスします。 https://remix.ethereum.org/

画面左の「File Explorer」で「contracts」フォルダを開き、「SimpleStorage.sol」というファイルを作成します。

サンプルコード

以下に、シンプルなスマートコントラクトの例を示します。これは、数値を保存して取得するだけの簡単なプログラムです。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

contract SimpleStorage {
    uint256 public storedData;

    function set(uint256 x) public {
        storedData = x;
    }

    function get() public view returns (uint256) {
        return storedData;
    }
}

コードの解説

// SPDX-License-Identifier: MIT
ライセンス情報を指定します。

pragma solidity ^0.8.0;
Solidityのバージョンを指定します。

contract SimpleStorage { ... }
contractキーワードでスマートコントラクトを定義します。

uint256 public storedData;
uint256型の公開変数storedDataを宣言します。uint256は256ビットの符号なし整数です。

function set(uint256 x) public { ... }
setという名前の関数を定義します。publicは、誰でもこの関数を呼び出せることを意味します。この関数はstoredDataの値をxに更新します。

function get() public view returns (uint256) { ... }
getという名前の関数を定義します。viewは、この関数が状態を変更しないことを意味します。returns (uint256)は、uint256型の値を返すことを示します。

コンパイルとデプロイ

Remixの画面左にある、コンパイラアイコンをクリックします。

「Compile SimpleStorage.sol」ボタンをクリックします。

コンパイルが成功したら、今度は「Deploy & run transactions」アイコンをクリックします。

「Environment」を「Remix VM (London)」に設定し、「Deploy」ボタンをクリックします。

デプロイが成功すると、画面下の「Deployed Contracts」に、SimpleStorageというコントラクトが表示されます。

コントラクトを開くと、setgetというボタンが表示されます。

getボタンをクリックすると、現在のstoredDataの値(初期値は0)が表示されます。

setボタンの横にある入力欄に数字(例
123)を入力し、setボタンをクリックします。

再度getボタンをクリックすると、値が123に更新されていることが確認できます。


ethereum/solidity




Zig言語:勇者のための新世代プログラミングツール

Zigはただのプログラミング言語ではありません。開発の効率と成果物の品質を同時に高めるための、強力なツールチェイン(道具一式)なんです。まるで、切れ味抜群の聖剣と、どんな敵の弱点も見抜く千里眼の魔法を同時に手に入れたようなものです。具体的にどう役立つか、3つのポイントで解説します。


新人メイドさくらがお届け!NVIDIA Cutlassで学ぶCUDAテンプレートの極意

今日はね、ご主人様がとっても興味を持ってくれた「NVIDIA/cutlass」について、さくらが分かりやすく丁寧にご説明しちゃうね!えへへ、ちょっと難しいお話になっちゃうかもしれないけど、さくらが頑張ってご主人様を楽しませるコントにしちゃうから、最後までお付き合いしてくれたら嬉しいな!


ゲームをどこでも!ラーメン屋に学ぶ「Sunshine」の導入と活用法

想像してみてください。あなたは最高に美味しいラーメンを作る天才的な職人。あなたのラーメン(ゲーム)を求めて、遠くからお客様(Moonlight)がやってきます。お客様 (Moonlight) 「あぁ、あの店のラーメンが食べたい!でも遠いな


コントで解説!LeaningTechのWebVMがエンジニアにもたらす革命

ナレーター(低い声で) 古びたディスプレイの奥深く、誰も知らない仮想の領域が存在した。そこは、Webブラウザという光が届かぬ場所で、忌まわしきC++の亡霊が、いまださまよっているという…。だが、そこに一筋の光が差し込んだ。その名も「WebVM」。それは、我々ソフトウェアエンジニアの、長年の悪夢を終わらせる救世主となるのだろうか、それとも新たな恐怖の始まりなのか…。


そのPython、Rustで書き直さない?闇バイトの甘い誘惑を論理的に論破するRustPython入門

ただ、今回は「闇バイトに注意」というテーマで、ちょっとしたコント仕立てでお届けします。怪しい勧誘には気をつけつつ、技術の深淵を覗いてみましょう!【登場人物】先輩エンジニア(A)Rustが大好き。何でも爆速にしたがる。後輩エンジニア(B)最近「高単価・即日払い」のエンジニアバイトを探している。


【C++】ヘッダー1つで爆速API開発!軽量HTTP/HTTPSライブラリ「cpp-httplib」徹底解説

「やあ、みんな!今夜の夕食はバーベキューだ! でも、食材(データ)を運んでくれる人がいないと始まらないよね?」「そうなんです、シェフ!それに、誰かからの注文(リクエスト)を正確に聞いて、料理(レスポンス)を届けないと. ..!」cpp-httplibは、そんなデータ(食材)のやり取りを、ネットワーク上でスムーズに行うための伝令係と配送トラックを兼ねたようなものです。


マリオと学ぶRuby入門:クッパ(バグ)を倒してWebアプリの城を攻略せよ!

マリオがピーチ姫を助けるために冒険するように、エンジニアも日々「より良いコード」というゴールを目指して冒険しています。その冒険を最高に楽しく、そしてパワフルにしてくれる魔法のアイテム、それがRuby(ルビー)です。ソフトウェアエンジニアの視点から、この赤い宝石のような言語の魅力をお伝えしますね!