> For the complete documentation index, see [llms.txt](https://24karamawariken.gitbook.io/ethereum-solidity/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://24karamawariken.gitbook.io/ethereum-solidity/solidity-programming/solidityonrainedeta.md).

# Solidityオンラインエディタ

### Solidity エディタ Remix.ethereum

Solidityは、ローカルでも開発できますがRemixという便利なオンラインIDEがあります。

[こちら](https://remix.ethereum.org/#optimize=true)でRemixに飛びます。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPpfMjRvZdsI_eTdTiW%2F-LPplZoR3Sj50rDAYIyo%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-27%2022.45.34.png?alt=media\&token=8be32af3-0699-42f1-bd54-841e23a840f7)

### 簡単なプログラムを書いてみる

すでにサンプルが書かれていますが、`pragma solidity ^0.4.0;`以外は消してしまって大丈夫です。早速簡単なプログラムを書いていきましょう。下記のcontract 部分を書いていきましょう。

```
pragma solidity ^0.4.0;
contract Inbox {
    string public message;
    function Inbox(string initialMessage) public{
        message = initialMessage;
    }
    
    function setMessage(string newMessage) public{
        message = newMessage;
    }
    
    function getMessage() public view returns(string){
        return message;
    }
}
```

上記のプログラムがかけたら、コンパイルしましょう。右上の「Complie」タブで「Start to complie」をクリックするとコンパイルが始まります。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPpyVbV38kh3szdARKv%2F-LPpzXZutLtpQ9MdZTkf%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-27%2023.46.07.png?alt=media\&token=219d4a25-c78d-4948-a9ee-8875eb46c5f6)

コンパイルができたら、コントラクト部分表示されます。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPpyVbV38kh3szdARKv%2F-LPq-ePMWShr5XNTB7p3%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-27%2023.49.28.png?alt=media\&token=fd6e6298-014a-4259-a191-19c20c711c63)

コンパイルが成功できたのを確認したら、右のタブの中で「Run」があるのでクリックします。その後、「Enviroment」のJavaScript VMを選択しましょう。これは、5つのアドレスと100etherが最初から付与されている仮想環境となります。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPpmzyuDcf8ovnIHm5d%2F-LPpyNCXLa-aX2iVKSJW%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-27%2023.41.31.png?alt=media\&token=7b5f29dd-8afe-48ac-87cd-a73e1a03213b)

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPpyVbV38kh3szdARKv%2F-LPq2FpAIrmNGqRaNlPY%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-28%200.02.58.png?alt=media\&token=999a432c-e6e8-4c1a-acab-b2a54fe09394)

### コントラクトを確認する

「Run」の下に今回作成したInboxというコントラクトが表示されています。プログラムの内容とともに順次説明していきます。

まずは、初期設定としてmessageという文字列型の変数をInbox生成時に必要属性として設定します。

```
string public message;
function Inbox(string initialMessage) public{
        message = initialMessage;
    }
```

右にDeployと部分があるので、messageを作成してInboxを生成します。ダブルコーテーションで括って文字列にしてDeployボタンを押します。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPq31X1W4zf1ng_2Ef0%2F-LPq6azz2DZQMFoEBkQO%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-28%200.22.07.png?alt=media\&token=d4256faa-820d-49c9-9fe9-9e68934d6e1f)

すると、Deployed Contractsで生成された内容が確認できます。この際、アドレス内の100etherが若干減っていて、Contract生成に利用されていることがわかります。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPq31X1W4zf1ng_2Ef0%2F-LPq7DuoLTsN6uDeJGZz%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-28%200.23.26.png?alt=media\&token=193a22f0-7cdc-4314-8c84-68c016dbab36)

また、下部ではログが表示されていますのでそこでも確認できます。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPq31X1W4zf1ng_2Ef0%2F-LPq7FXG98dvPNlk_7i5%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-28%200.24.05.png?alt=media\&token=7bdfa88a-3d9e-4fd2-9fce-b84fe6db5f35)

setMessage(セッター)とgetMessage(ゲッター)をそれぞれ作成しています。setMessageでは、message変数を設定できます。getMessageでは、message変数を取得することができます。

```
function setMessage(string newMessage) public{
        message = newMessage;
    }
    
    function getMessage() public view returns(string){
        return message;
        
    }
```

Deployed Contractsでは、作成したInboxコントラクトのfunctionを試したり、内部の変数も表示されます。

![](https://2065311989-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPaXBcOlSdtMssa9shX%2F-LPq31X1W4zf1ng_2Ef0%2F-LPq7ypEJKr4MRPwtEP2%2F%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202018-10-28%200.27.30.png?alt=media\&token=df002f4d-b59f-450a-a5fe-862a617b4f4e)
