メインコンテンツへスキップ
Change page

スマートコントラクト言語

イーサリアムの長所は、比較的デベロッパーフレンドリーな言語を使ってスマートコントラクトを記述できることです。 Pythonまたは波括弧言語 (opens in a new tab)の経験がある場合は、使い慣れた構文の言語を見つけることができます。

最も活発にメンテナンスされている言語は、以下の2つです。

  • Solidity
  • Vyper

Remix IDEは、SolidityとVyperの両方でコントラクトを作成およびテストするための包括的な開発環境を提供します。 ブラウザ内で動作するRemix IDE (opens in a new tab)を試して、コーディングを始めましょう。

また、経験豊富なデベロッパーであれば、イーサリアム仮想マシン用の中間言語であるYulや、Yulを拡張したYul+を使うのもよいでしょう。

開発中の新しい言語に興味があり、テストに協力したいとお考えの場合は、Feというまだ登場したばかりのスマートコントラクト言語を試してみることができます。

前提条件

プログラミング言語、特にJavaScriptやPythonの知識は、スマートコントラクト言語の違いを理解するのに役立ちます。 また、スマートコントラクトをコンセプトとして理解し、言語比較を深く掘り下げることをお勧めします。 スマートコントラクト入門

Solidity

  • スマートコントラクトを実装するためのオブジェクト指向の高級言語
  • C++に強い影響を受けた中括弧を使ってブロックを表現する言語
  • 静的型付け(変数型はコンパイル時に決定される)
  • 以下の言語機能をサポートしている
    • 継承(他のコントラクトを拡張できる)
    • ライブラリ(他のオブジェクト指向言語における静的クラスで定義された静的関数のように、さまざまなコントラクトから呼び出すことができる再利用可能なコードを作成できる)
    • 複雑なユーザー定義型

コントラクトの例

この例は、Solidityのコントラクト構文がどのようなものか理解するのに役立つでしょう。 関数と変数の詳細な説明については、ドキュメントをご覧ください (opens in a new tab)

Vyper

  • Python的なプログラミング言語
  • 強い型付け
  • コンパクトでわかりやすいコンパイラコード
  • 効率的なバイトコード生成
  • コントラクトの安全性を確保し、監査が容易になることを目的として、意図的にSolidityよりも機能を絞っている。 Vyperは以下をサポートしていない
    • modifier修飾子
    • 継承
    • インラインアセンブリ
    • 関数のオーバーロード
    • オペレータのオーバーロード
    • 再帰呼び出し
    • 無限ループ
    • 2進固定小数点

詳細については、Vyperの理論的根拠をお読みください (opens in a new tab)

この例は、Vyperのコントラクト構文がどのようなものか理解するのに役立つでしょう。 関数と変数の詳細な説明については、ドキュメントをご覧ください (opens in a new tab)

YulとYul+

イーサリアムを使い始めたばかりで、スマートコントラクト言語を使ってコードを書いたことがない場合は、SolidityやVyperを利用することをお勧めします。 YulやYul+を検討するのは、スマートコントラクトのセキュリティの最善の方法や、EVMとの連携の具体的な内容に精通してからにしてください。

Yul

  • イーサリアムのための中間言語
  • EVMおよびEwasm (opens in a new tab)というイーサリアム向けのWebAssemblyをサポートしており、両方のプラットフォームで使用可能な共通部分として設計されています。
  • EVMとeWASMの両方のプラットフォームに同程度のメリットをもたらす、高度な最適化段階を経る対象となる

Yul+

  • Yulに高効率な拡張機能を施した低レベル言語
  • 当初はオプティミスティック・ロールアップのコントラクト向けに設計されました。
  • Yulに新しい機能を追加した実験的なアップグレード案として捉えることができる

コントラクトの例

以下の簡単な例では、べき乗関数を実装しています。 solc --strict-assembly --bin input.yulを使用してコンパイルできます。 この例は、input.yulに記述されます。

スマートコントラクトに精通している場合、Yulでの完全なERC20実装はこちら (opens in a new tab)でご覧いただけます。

Fe

  • イーサリアム仮想マシン(EVM)向けの静的型付け言語
  • PythonとRustの影響を受けている
  • イーサリアムのエコシステムに不慣れなデベロッパーでも簡単に学習できる言語であることを目標としている
  • Feの開発は未だ初期段階にあり、2021年1月にアルファ版がリリースされた

コントラクトの例

Feで実装されたシンプルなコントラクトのコード例を以下に示します。

選び方

他のプログラミング言語と同様に、個人的な好みだけでなく、行いたいことに最適なツールを選択することが重要です。

まだどの言語も試していない場合に考慮すべき事項をいくつか紹介します。

Solidityの長所

  • 初心者向けに、多くのチュートリアルや学習ツールが用意されている。 詳細については、コーディングによる学習のセクションをご覧ください。
  • 優れた開発ツールが利用可能
  • Solidityには大きなデベロッパーコミュニティがあり、質問に対する答えをすぐに見つけることができる

Vyperの長所

  • Pythonデベロッパーが、スマートコントラクトの記述を始めるのに最適な方法である
  • Vyperの機能の数は絞られているため、アイデアから素早くプロトタイプを構築可能
  • Vyperは監査が容易で、最大限に人間が読めるようにすることを目指している

YulとYul+の長所

  • シンプルで機能的な低レベル言語
  • 生のEVMに近づくことができ、コントラクトのガス使用量を最適化するのに役立つ

言語の比較

基本的な構文、コントラクトのライフサイクル、インターフェース、演算子、データ構造、関数、制御フローなどの比較については、このAuditlessによるチートシート (opens in a new tab)をご覧ください。

参考リンク

ページの最終更新: 2026年2月25日

この記事は役に立ちましたか?