ds2
いよいよETHのなかの人になるチャレンジが始まる!!こんにちは、ノリヒロです。
先日リツイートさせていただいたセルペンティさんの記事  。Solidityのことなんですが、ちょっと前から興味あったんです。Pythonは自己流でやってたのですが、それに似ている(という噂)という事で機会があったら…と思っていたのですが、偶然記事を見つけて、何かの縁だなと思った次第です。ICO、DAICOでも、Github、コードを読めたほうが判断もしやすいでしょうしね。

ちなみに、ノリヒロはノンプログラマーです。職業もプログラミングとは無関係の職業です。期限は半年としました。2018年9月30日です。ほぼ素人が、半年でどこまで、ETHのなかの人になることができるのか…ブログにも進捗はアップしていきます。

その前に、【Solidityって何?】というところからはじめます。

Solidityとは

目次
①Solidityとは

②Solidityを学べるサイト

③今後のスケジュール

①Solidityとは

イーサリアム(ETH)のプラットフォーム上でDapps(分散型アプリケーション)を作る時、スマートコントラクトを記述する時に使われるプログラミング言語です。「Solidity」とは英語で「固い」を意味します。自由度があって柔軟なイメージがETHにはあるんですが何が固いんですかね~。しっかりしている言語という意味でしょうか。

Solidityは、C++やPython、JavaScriptによる影響を受けている言語です。Ethereumネットワーク上のEVM(EthereumVirtual Machine:Etheeum 仮想マシーン)という実行環境で動作します。ネットワーク上では、他のEVMとつながりつつも独立した環境のため、他のEVMやブロックチェーンに深い影響を与えることなく(静的)に実行できます。

だんだん難しくなってきました。

そもそも、EVM上では専用の数値の羅列で書かれたバイトコード(機械語)でプログラムが実行されるのですが、そのプログラムは人には非常に読みにくく、理解が難しいものだそうです。それで、EVMのバイトコードに変換するための言語を作りました。その代表が「Solidity」です。Solidityは「チューリング完全」であらゆるプログラムを記述できます。また、コントラクト指向かつ高水準言語です。

聞きなれない言葉が…。
チューリング完全:まだ理解しきれてないですが、要するに1つの言語ですべての計算ができること…という事でしょうか。そうすると、ほとんどの言語がチューリング完全ですね。
コントラクト指向:Javaなどのオブジェクト指向と同じ概念。Pythonでもあったなあ(遠い目)。ざっくりいうと、オブジェクトという単位でプログラミングをして、相互作用させること…ですかね。
高水準言語:抽象度の高いコーディングをする言語のこと。
参照:https://coinchoice.net/ethereum-solidity-moredetail/

最初から難しいんですけど…。ETHで分散型appを作るにはEVM(Ethereum Virtual Machine)という開発環境を使う。その際に使用する言語がSolidityということですね。

②Solidityを学べるサイト

難しい言葉がいろいろと並んでいてとっつきにくいですがネット上を探していくと、ゲーム感覚でコードの学習やスマートコントラクトの構築をできるサイトがありました。結構有名なんですね。
cr

CryptoZombies


内容はこちら。
cr2
cr3
cr4

日本語対応なのが素晴らしいですね。こんなに慈善事業を無償でして、なんていい企業なんだろう。ノリヒロはまだやっていませんが随時やってみようと思います。

③今後のスケジュール

ノリヒロの勉強スケジュールなんて興味ないという方、すみません。書かないとモチベーションが維持できないかもしれないので書かせてください。基本的には独学で、かつ書籍+ひたすらコードを書くというスタンスで行きます。もちろん②のCRYPTOZOMBIESもやってみますね。コードは開発環境をインストールするだけなんで無料なのですが、書籍がとにかく高い…。取り急ぎ、日本語のよいやつがあったら少しずつ買って読む。あとは、KIndleUnlimitedの無料版を読んでみようと思います。取り急ぎこちらはよみはじめました。Solidityの学習というよりは、ETHのスマートコントラクトの仕組みの学習からですね。無料だから読んでみます。


イーサリアムの仕組み:2018/3/5利用開始

そして、ひたすらコードをかく、かく、書く!!

当ブログを通して、少しでもSolidityのこと、プログラム言語の知識を増やしていただければ幸いです。ノリヒロもできる限りわかりやすく説明していきます。今はDappの事だけですが、ゆくゆくはブロックチェーン自体のプログラミングもできたらよいですね~。全部pythonでいければいいのに…Javascriptかなあ。

本日もよきCryptoLifeを。
ありがとうございました。