---
title: "Ethereumで別のスマートコントラクトを呼び出す方法"
description: "別のスマートコントラクトを呼び出す理由と例"
---

# Ethereumで別のスマートコントラクトを呼び出す方法

[Solidity](https://www.alchemy.com/overviews/solidity)では、[他のコントラクトの関数](https://www.alchemy.com/overviews/solidity-functions)を借用するスマートコントラクトを作成することができます。この借用を行うスマートコントラクトを**呼び出し元スマートコントラクト**、関数を借用される側のスマートコントラクトを**呼び出し先スマートコントラクト**と呼びます。

この記事では、開発者がいつ他のコントラクトを呼び出すべきかを説明し、サンプルコードによるチュートリアルを紹介します。

## **他のコントラクトを呼び出す理由**

Ethereumがブロックチェーンにもたらした最大の進歩の1つは、オンチェーンでコードをアップロードし実行できるようになったことです。[スマートコントラクトと呼ばれる](https://www.alchemy.com/overviews/solidity-smart-contract)これらのプログラムは、一度ブロックチェーンにアップロードされると編集できません。誰でもそれらを閲覧でき、正しくコーディングされていれば、所有者同士が互いを知らなくてもスマートコントラクトから操作することが可能です。これにより、スマートコントラクトは事実上再利用可能なライブラリとなります。ある目的のために所有者が意図してコーディングしたスマートコントラクトが、呼び出しを通じて何千もの他者に自分たちのユースケースのために再利用されることがあります。

他のスマートコントラクトを呼び出すもう1つの理由は、プログラミング中に、元のスマートコントラクトが完成前に24,577バイトというサイズ制限に達してしまうことです。これを回避するために、開発者はバイト制限を下回るよう、十分な数の関数を新しいスマートコントラクトへ移動させます。

## **他のスマートコントラクトを呼び出す例**

以下に、あるコントラクトが別のスマートコントラクトを呼び出す方法を説明するための2つのサンプルスマートコントラクトを用意しました。

### **コントラクトを呼び出し、値を更新する**

この最初のコントラクトでは、`CalledContract`に含まれる値が`CallerContract`によって更新されます。

### **呼び出しとともにETHを送る**

この2つ目のコントラクトでは、`CalledContractReceivesEther`内のx値が`CallerContractAndSendEther`によって更新されるだけでなく、その呼び出しとともにETHも送信されます。

## Solidityについてさらに学ぶには

[Solidityについてさらに学び](https://www.alchemy.com/overviews/learn-solidity)たいですか？Solidity教育プラットフォームである[ChainShot](https://www.alchemy.com/dapps/solidity)を最近買収したことにより、Alchemy Universityは、元々3,000ドルの認定ブートキャンプであった7週間の[Ethereum開発者クラッシュコース](https://university.alchemy.com/?a=bd8da13d63)を、一般向けに無料で提供しています。今すぐ席を確保しましょう！

開発全般が初めての方には、Ethereumブートキャンプを始める前の前提知識として、Alchemyの**3週間JavaScriptクラッシュコース**がおすすめです。
