カテゴリ: ブロックチェーン・プログラム・Solidity・書籍紹介

超初心者が有料でPythonを学ぶなら?こんにちは、ノリヒロです。前回は無料でPythonを学ぶなら?ということで、AidemyとProgateをご紹介しました。AidemyではPythonの講義自体は無料(7/8時点)、ProgateはPython講義の全体の5分の1は無料(ほかは有料)となっています。そこで…せっかくなのでProgateの有料版も試してみました。

無料版の比較はこちらをどうぞ。

無料でPython学ぶなら? AidemyとProgateを比較してみる

有料版ProgateでPythonを学習してみた

目次
①無料版のProgateはどこまでできる?

②有料版を試してみた


①無料版のProgateはどこまでできる?

p1
p2
p3
p4
pp1

公式HP:https://prog-8.com/

<Pythonレッスン>
Python1基本的な使い方
Python2 リスト
Python3 関数・モジュール
Python4 クラス
Python5 クラスと継承
<特徴>
Python1&2の途中まで無料 その他有料(6/27時点で)
所要時間 合計約8時間
アカウントはツイッターなどSNSアカウントで作成可能
学習した履歴を確認できる&セーブし手続きをできる機能あり
有料は月額980円
Python、Ruby、Git、Command lineなど、プログラマーの基礎というべき言語、システムの学習が主流

aaaa2

aaa
aaa3

まず、「数値とは」にみられるような要点が見やすくまとめられたスライドをみて学習していきます。その後真ん中の画面のように、左側が解説で真ん中がコードを記入する場所、右上部がコンソール、右下が解答例の画面に移動して実際にコード入力をしていきます。Aidemyと同じで、解説⇒コード入力⇒回答⇒次レッスンという流れは変わりません。

印象としては、非常に見やすい
です。さらに、”にんじゃわんこ”や”ひつじくん”、イラストも随所に出てくるので、親しみやすく、ちょっとやってみようかな、頑張ろうかな?というやる気を出させてくれます。また、解説のスレッドだけを一覧でみることもできるので、ちょっとした復習にも役立ちます。
内容的にはAidemyに比べると少し薄く、かつレッスン2の途中からは有料となってしまう(Aidemyの内容の1/4くらいしか無料でできない)ので、「無料」という観点からすると学習は中途半端になってしまいます。

②有料版を試してみた

有料版は月額980円で使いたい放題です。
980円でPythonだけでなくCommandLineやJava、CSSやHTMLなど合計13講座が経験ができます。これだけでお得感が満載ですね。今回はPythonを取り扱います。
あまり解説をするとProgateさんに怒られそうなので…怒られない程度にお伝えしていきます。

lesson1
1-1
lesson1-2

Python1(レッスン1)は無料のレッスンです。設定時間は1時間45分ですが、もっと早くこなせます。
ここでは、まずPythonとは何か、文字列、変数、真偽値と条件分岐(if)などを学んでいきます。progateのPython Lessonでは、レッスン1~2を通して「お買い物プログラム(りんごが〇〇個、ぶどうが××個、桃が▲▲個、それぞれ単価があって合計何円です!お金が不足していますといったやり取り)」、レッスン3で「じゃんけんゲーム」、レッスン4で「料理注文システム」をPythonコードで作成していきます。実際に動くところを見ながら進めていけるのはわかりやすいです。



lesson2
2-1
2-2

Python2(レッスン2)の途中から有料のレッスンとなります。予定時間は1時間55分。もちろんそれより早くこなすことは可能です。ここでは、リスト・辞書型、for 、while、break、continueなどの勉強をします。これを応用してお買い物プログラムの「商品の準備(商品リストを作成=リスト、辞書型、for を使って)」、「商品購入および条件分岐、残金計算(while、Break、continue)」をコードで書いていきます。


lesson3
3-1
3-2

Python3 (レッスン3)では、じゃんけんゲームを作ります。所要時間は1時間45分です。関数やモジュールの仕組みをここで学びます。Pythonの中でも、モジュール(ファイル)やライブラリは、未経験者にとってはわかりにくいもの(少なくともノリヒロはそうでした)。多くの書籍では、すでにあるモジュールをimportするところから教えるものが多いですが、Progateでは、モジュールをまず作るところから始めます。そしてこのモジュールをimportして実際に使用します。このひと手間によってノリヒロは理解度が格段にあがりました。ノリヒロ的には、ここのモジュールの部分が非常にわかりやすく思いました。




lesson4
3-1
4-2

Python4(レッスン4)
では、「料理注文システム」を作るためにクラスとメソッド、インスタンスメソッドを学びます。所要時間2時間。この2時間はしっかりとってほしいです。初めての頃は、このクラス、メソッド当たりで一度諦めたくなるんじゃないでしょうか。非常にわかりにくい(selfとか、__init__メソッドとか。なんでselfが必要なんだろう…とか。疑問に答えてくれる先生がいればいいですけど…)。ノリヒロも、最初は「そうゆうもんで、規則なんだ」というぼんやりとした認識でしたが、このPython4コースを受講してある程度理解ができたように思います。そのくらいわかりやすく簡潔に説明されています。Pythonコースの中でもレッスン4が一番ノリヒロには役に立ちました。感謝。



lesson5
5-1

Python5 レッスン5です。所要時間は1時間30分。Python4の「料理注文システム」をクラスの継承とオーバーライドによってグレードアップさせるレッスンです。恥ずかしながら、このProgateにたどり着くまで super()の使用法をあまり理解していませんでした。ここでようやく理解ができたように思います。


<所感>
全体を通してですが、非常にわかりやすいと感じました。Aidemyを初学者入門というなら、Progateは超初学者入門といった感じでしょうか。途中(Python1・2の途中、無料部分)までは、Aidemyとあまり難易度の差はありませんが、有料部分(Python2後半からPython5まで)に関しては、Aidemy よりもさら簡単です。市販されている「Python入門書」よりもノリヒロ的にはわかりやすかったですね。有料で構わないという方であれば、Python初学者の方はまずProgateを始めた方が理解度が高まるとノリヒロは思います。1か月学んでも980円です。十分安いと思いますね~。Python以外も学べるわけですし。

<Progate 注意してほしいところ>
これはノリヒロがまだ機能を使いこなせてないだけかもしれません(既にそうゆう機能があったらスミマセン)が、実際に困ったことをあげておきます。
①レッスン中はPythonコードを書くわけですが、答え合わせ時、間違っている「理由が表示されるだけ」で、「どの行のどの部分が間違っているか」の指示がありません。これはちょっと初学者には厳しいなあと感じました。
②同じように誤答時、正しいコードが示されるのですが、正しいコード用に画面が切り替わってしまうため、正しいコードと自分が書いたコードを一つの画面で比較することができません…
。どこがどのように間違っているのかがぱっと見ではわからないのがまた初学者には厳しいかなあと感じました。


もしこれからPythonを触ってみたいという方で、有料でも構わないということであれば、まずはProgateから始めることをお勧めします。そして全5レッスンを3~4週した後でAidemyの無料へ腕試しする。これだけでPythonの基礎は理解が早くなるように思います。Aidemyのほうが専門性に特化している分、難易度も高い講座がそろっているという印象です(Pythonに関しては無料ですので、その分だけでもポイント高いですね)。その後、Aidemyや専用の書籍に移ってもいいかなあと思いますね。
ただ、Pythonではないがほかの言語の知識がある場合は、Progateは簡単すぎて物足りないという意見も聞きます。ですので、その場合はAidemyから初めて見るのはいかがでしょうか。
ノリヒロはまだProgateのPythonで格闘中です…。もしProgateの関係者に怒られたらこの記事は消します…スミマセン。

書籍のレビューも参考にしていただければ。

ブロックチェーン、プログラミング の書籍を2冊読んでみた


a2
aidemy
Python学習を無料で行うなら?こんにちは、ノリヒロです。初心者に毛が生えた程度のPython知識しかもたないノリヒロですが、オンラインでPython学習をしてみたい・ちょっとPython触ってみたいなあという方にお勧めのAidemy、Progateを紹介します。あくまで①全くの未経験者が②無料で③Pythonを(ほかの言語等は無視して)行うということを前提に進めていきます。

無料でPython学習 Aidemy と Progate

目次
①Aidemy

②Progate

③どうやって使う?



①Aidemy

aidemy
a1
a2
a3
a4
公式HP:https://aidemy.net/

<Python入門>
Chapter1 Python基礎   16レッスン
Chapter2 Python基本文法 21レッスン
Chapter3 Python関数           17レッスン
<特徴>
全チャプター無料(6/27時点で)
所要時間 約4時間
アカウントはツイッターなどSNSアカウントで作成可能
学習した履歴を確認できる&セーブし手続きをできる機能あり
有料はチケット制(1980円~)。チケットを購入して講座を買うイメージ
Googlechrome推奨。MicrosoftEdgeだとコードが表記されない場合、日本語変換がうまくいかない場合あり
ブロックチェーンや機械学習、異常検知入門など幅広い専門分野に対応

a5
レッスン画面です。左側が解説&問題が表示、右側で実際にPythonコードを作成していきます。右下の「コンソール」で、作成したコードがどのように動くかの検証ができます。
解説⇒コード入力⇒解答⇒次レッスンへというのを一連の流れとして進んでいきます。イラスト等はほぼなく文字での解説が続いていくので、少しわかりにくい&とっつきにくい感じがあります。ですが、Command lineのようにキーボードのみ(マウスなし)でもレッスンを進めることができるのは使いやすいです。

全レッスンで約4時間かかりますが、ボリュームは満載。(コードの基本から、関数、メソッド、クラス、継承まで、Pythonを学ぶ上で最低限の知識が一通り揃っています)。ボリューム・内容に関して前回ブログで紹介した書籍「独学プログラマー」と遜色ない内容だと思います。

興味がある方、こちらの記事も併せてどうぞ
ブロックチェーン、プログラミング の書籍を2冊読んでみた

まったくPython初めての方は3チャプターを1周するまで4時間以上かかるかもしれません。少し苦痛に感じるかもしれませんが、ここは仕方がないことと割り切って頑張ってみましょう。


②Progate

p1
p2
p3
p4
pp1

公式HP:https://prog-8.com/

<Pythonレッスン>
Python1基本的な使い方
Python2 リスト
Python3 関数・モジュール
Python4 クラス
Python5 クラスと継承
<特徴>
Python1&2の途中まで無料 その他有料(6/27時点で)
所要時間 合計約8時間
アカウントはツイッターなどSNSアカウントで作成可能
学習した履歴を確認できる&セーブし手続きをできる機能あり
有料は月額980円
Python、Ruby、Git、Command lineなど、プログラマーの基礎というべき言語、システムの学習が主流

aaaa2

aaa
aaa3

まず、「数値とは」にみられるような要点が見やすくまとめられたスライドをみて学習していきます。その後真ん中の画面のように、左側が解説で真ん中がコードを記入する場所、右上部がコンソール、右下が解答例の画面に移動して実際にコード入力をしていきます。Aidemyと同じで、解説⇒コード入力⇒回答⇒次レッスンという流れは変わりません。

印象としては、非常に見やすい
です。さらに、”にんじゃわんこ”や”ひつじくん”、イラストも随所に出てくるので、親しみやすく、ちょっとやってみようかな、頑張ろうかな?というやる気を出させてくれます。また、解説のスレッドだけを一覧でみることもできるので、ちょっとした復習にも役立ちます。
内容的にはAidemyに比べると少し薄く、かつレッスン2の途中からは有料となってしまう(Aidemyの内容の1/4くらいしか無料でできない)ので、「無料」という観点からすると学習は中途半端になってしまいます。(有料での体験がありませんので、その後のボリュームはわかりません…)。


③どうやって使う?

Pythonの知識は少しだけであったノリヒロですが、Progateの内容は比較的わかりやすく、あまり時間も取られませんした。ですので、全く初めての方はとっつきやすいProgateを試してみるのはいかがでしょうか。Progateの無料箇所を2~3周できるようになれば卒業です。
それで何となくPythonの仕組みがわかったらAidemyへ移動。Aidemyに関しては最初の1周(約4時間)はとにかく前に進みたいところです。ノリヒロは、時間がある時は、絶えずレッスンを触り、トータルで何周も回りました。3周目くらいからオブジェクト、クラス、関数などの仕組みがぼんやりと見えてきます。あわせて市販の解説書(Python関係は多数出てますね)やブログを確認しながら進んでいってみてはいかがでしょうか。

有料でやった方が早いよ…といわれると返す言葉がないのですが、無料で体験させていただけるのですからやってみない手はありません。まだ未経験の方、こんな低迷した相場だからこそブロックチェーンの内側を見てみませんか?ハッシュ関数がどのように機能するかをコードで確認するのも面白いですよ!

Progateに関しては少し有料でやってみようかなと思ってもいます。
そして知識が固まったら、Aidemyの教師あり、教師なし学習やディープラーニングもトライできたらなあ。
また情報がありましたら更新させていただきます。
本日もよきCryptLifeを。
ありがとうございました。

こんにちは、ノリヒロです。最近ブロックチェーン、プログラミング関係の本を2冊読みました。ご紹介します。

①入門 ビットコインとブロックチェーン
野口 悠紀雄著

2017/12/10発行 297ページ



***********************
【本書の項目】
第1章 ビットコインとは何か?
1.ビットコインの仕組み
2.ビットコインは安全か?
3.キャッシュレス社会とフィンテック
4.ビットコインの分裂騒動

第2章 ビットコインを実際に使うには
1.ビットコインにはどんなメリットがあるのか?
2.ビットコインを購入し、管理するには

第3章 銀行が仮想通貨を発行する
1.メガバンクが仮想通貨を発行する
2.中央銀行が仮想通貨を発行する可能性も
3.将来の通貨体制はどうなるのか?

第4章 ブロックチェーンとは何か?
1.ブロックチェーンの仕組み
2.ブロックチェーンはどれほど重要か?
3.2つのブロックチェーン:パブリックとプライベート

第5章 ブロックチェーンの応用が広がる
1.証券取引や保険、そして資金調達も変わる
2.スマートコントラクト、商品の履歴追跡
3.予測市場がデリバティブにとって代わる
4.ブロックチェーンと日本企業

第6章 シェアリング・エコノミーとブロックチェーン
1.シェアリング・エコノミーとは何か?
2.シェアリングの普及のために規制緩和が必要
3.ブロックチェーンはシェアリング・エコノミーを進化させる
4.様々なシェアリング

第7章 IoTとブロックチェーン
1.IoTとは何か?
2.IoTの展開にあたっての課題
3.ブロックチェーンが問題を解決する

第8章 分散自律型組織DAOが作る未来社会
1.DAOとは何か?
2.DAOは働き方をどう変えるか?
3.DAOは社会をどう変えるか?
4.DAOとこれまでの社会の衝突
5.量子コンピュータは、ブロックチェーンを破壊するか?
6.ブロックチェーンについてさらに学ぶには

Amazon商品紹介より
*******************

もともとは「手帳術・記憶法」で有名な野口氏著書。ビットコインの仕組みを通して、ブロックチェーンを理解します。発行が2017年末とやや古いですが、ざっくりとした仕組みを理解するには問題なく、2018年6月時点でも使える知識は多数あります。文章が理解しやすく平易で、図解がなくてもあまり気にならないです。第1~5章までが特に力が入っており、残りの3章はおまけです。
ビットコインに特化して説明していますので、Ethreumなど他通貨の事はほぼ書かれておりませんのでご注意ください。全体的に「入門のための入門書」といった感じで、仮想通貨関連ブログSNSをよく見るような方には少し物足りないかもしれません。知識確認には十分だと思いますが。これからビットコイン、ブロックチェーンを触ってみたい、理解してみたいという方にはお勧めです。AmazonではKIndle版も出ています。


<読み応えがあると思われるレベル>
ブロックチェーン、仮想通貨に興味はあるが、全く知識がなく「難しそう」と敬遠している方
UTXO(Unspent Transaction Output) やNonce(Number used once)の意味が分からない
ビットコインの合意形成(コンセサス)アルゴリズムをざっくり理解したい方

ほかの書籍もそうですが、ノリヒロ的には野口氏の文章はわかりやすいです。難しい単語もこの方の文章を通すと頭に入ってくる不思議。
こんな本も出してますね。





②独学プログラマー Pythonの基本から仕事のやり方まで
コーリーアルソフ著

2018/2/24発行 320ページ


***********************
内容紹介

本書は「Pythonだけ」を学ぶ本ではありません。Pythonを使ってプログラミングを紹介していますが、伝えたい内容はPythonに限らない「プログラミング全般」の知識です。

プログラマになるためのスキルを独学できる本です。Pythonプログラミングの基本を学べるだけでなく、プログラマとして必要なスキル(シェル、正規表現、パッケージ管理、バージョン管理、データ構造、アルゴリズム、仕事の始め方・やり方)もひと通り学べるのが特徴です。
「プログラミングを始めたい」「できればその道でプロを目指してみたい」――そんな読者にオススメです。

本書の著者、コーリー・アルソフ(Cory Althoff)は、「独学プログラマー」です。本書は、彼が独学で、ゼロからプログラミングを学んだ体験に基づいて書かれました。
プログラミングを独学で身に付けるために、著者がPythonを通して学んだエッセンスが書かれています。彼の独学プログラマーとしての学び方は、Amazon.comでの本書の評価を見るとわかるように、多くの人に支持されています。
――訳者あとがきより

目次については、27章プラス補章2つと長いので、以下の「目次を見る」からご覧ください。

出版社からのコメント

米アマゾンで絶賛されている「The Self-Taught Programmer: The Definitive Guide to Programming Professionally 」の邦訳がいよいよ登場。日本のPython界の第一人者による翻訳でお届けします。

Amazon商品紹介より
*******************

「The Self-Taught Programmer:The Definitive Guide to Programming Professionally」の邦訳です。
ざっくりとして目次はこちら。

**************
一部
第1章 イントロダクション~プログラミングとは、独学の強みとは
第2~第11章 Pyhtonの使い方説明(Pythonのインストール~関数、モジュール、文字列操作など)
二部
第12~15章 オブジェクト指向プログラミングの説明(クラスの説明)
三部
第16~17章 Bashの使い方(正規表現)
第18~20章 パッケージ管理、バージョン管理(Git、Githubの使い方)
四部
第21~22章 データ構造、アルゴリズム(スタック、アナグラムなど)
五部
第23~27章 プログラマとしての心得、仕事に対する姿勢など
六部
第28章 コードに磨きをかける・冗長コードの補正
**************

まず注意しなければならないのは
""原初のタイトル「The Self-Taught Programmer:The Definitive Guide to Programming Professionally」には"Python"という言葉がありません。つまり本書はPythonを学ぶ本ではありません。Pythonを使ってプログラミングの紹介をしていますが、伝えたい内容はPythonに限らないプログラミングの知識全般です。""
と訳者あとがきにあるように、Python言語に関しては基本中の基本のみが掲載されています。Python言語の習得を目指す方には物足りない内容ですのでご注意ください。またわかりやすさのためかコードも冗長になっている部分もあり、最終部に"冗長コードの補正"があります。

次に構成ですが、各章ごとに簡単なコードを書くテストがあり、Web上にある解答を見て確認していきます。各部ごとにそれまでの知識を応用したプログラミングを組むテストがあります。


感想としては、全くの(ノリヒロのような)初心者(コードの意味がわからない、Pythonを触ったことのない)にはかなりハードルが高いです…。この点は著者も「最低限のプログラミングの知識を有している方」を対象としていると言及しています。Pythonの初歩的な知識を学ぶ分には頑張れば少しは役立ちますが、それも第二部(140ページ程度)まで。それ以降はある程度プログラミング、その環境に触っていて知識がある方でないと苦労します。
例えば205ページ、Ubuntu(Bash(コマンドライン))使用時に、「文字列をコピーして新しいフォルダにはりつけてください」という記述がさらっとあるのですが、普通のコピー&ペーストでは対応できず、コピーの仕方がわからない…。ググるとテキストエディタを使用すればOKとのことで、何とか汎用性のある「Vi(VIM)」までたどり着いたのですが…。知っている人からしたら初歩中の初歩だと思います。質問するにも気が引けて…時間がかかりました。

こういったことが幾度となく訪れるので苦戦します。気軽に質問できる方がいれば捗るかもしれません。結果的にはググれば解決はするのですが。Bash自体は面白いのでノリヒロも何とか頑張っています。Githubの使い方・ウェブすくレイバーの作り方は面白く、参考になりました。

<読み応えがあると思われるレベル>
プログラミングをある程度知っている方が理解度を確認する内容
Pythonの基本中の基本を学習したい方(本書の1/3の内容。ただ冗長なので混乱する可能性あり)

独学でプログラマーになるにはこのくらいは最低限覚えておいてね!という本ですね。


独学もよいですが、プログラミングはやはりメンター・師匠がいたほうが理解度がはやいと改めて思うノリヒロでした。
本日もよきCryptoLifeを。
ありがとうございました。

a1
まだレッスン2が続きます。学べば学ぶほど、癖が強い言語で悪戦苦闘中です。もう少し簡単になってもいいような…。
こんにちは、ノリヒロです。本日でレッスン2が終了の予定です。挫折せずにがんばります。
Solidity ゲームで学ぶ CryptoZombies レッスン2その1
Solidity ゲームで学ぶ CryptoZombies レッスン2その2
Solidity ゲームで学ぶ CryptoZombies レッスン2その3

Solidity ゲームで学ぶ CryptoZombies レッスン2その4

目次
①チャプター10:クリプトキティを食べるゾンビ

②チャプター11:Interfaceを使用する

③チャプター12:複数の返り値の処理

④チャプター13:ボーナスKitty genes

⑤サンプルを試す

①チャプター10:クリプトキティを食べるゾンビ

a4
a5
a6
ゾンビはクリプトキティーズの猫を食べるのですね。クリプトキティーズは、イーサブロックチェーン上で猫を育成するアプリで、大流行しているゲームです。
a7
公式HP:https://www.cryptokitties.co/

同じイーサリアムブロックチェーン上であるので、クリプトキティーズのスマートコントラクトを参照できるんですね。別のコントラクトとのやりとりを可能にするためには、「interface」をつける、と。次のレッスンでは他のコントラクトとのやり取りがメインとなるようです。より難しくなるのか…、ついていけるかなあ。
それではテストです。
a8
a9
「getKitty」の関数を参照するためのinterfaceをつけて、それを「KittyInterface」として定義する…ですね。定義するだけならノリヒロでもできます。
a10

②チャプター11:Interfaceを使用する

a11
a12
関数が public や external (外部から参照できるよう定義されている)場合のみ、Interface が使用できるということですね。これは当然といえば当然ですね。
NumberInterfaceの例がわかりにくいですが…。それではテストです。
a13
これはただ定義をしてやればよいだけですね。
KittyInterface kittyContract = KittyInterface(ckAddress);
これで、ckAddressにひもづいたデータを参照できるようになりました。

③チャプター12:複数の返り値の処理

a15
いつも思うのですが…参考例、分かりにくいような…ノリヒロだけでしょうか。むしろテストのほうがわかりやすいという…。
このように返り値を出すのですね。それではテストです。
a16
1、2で関数を定義するまではすぐに出来そうです。次に_kittyIdでkittycontract.getKitty関数を呼び出して、10個の返り値からgenesを選んでKittyDnaに格納するということになります。「カンマの数」というのが???なんですが…よく考えたら、「kittycontract.getKitty関数で呼び出した値は10個、必要なのは最後の10個目(genes)なので、必要のないものは" , "(カンマ)で省略できるということなんでしょう。よってこうなります。

function feedOnKitty(uint _zombieId, uint _kittyId) public{
   uint kittyDna;
   (,,,,,,,,,KittyDna) = kittyContract.getkitty(_kittyId);

a17

④チャプター13:ボーナスKitty genes

a18
a19
ゾンビのDNA16桁には2桁ずつに区切って、ゾンビの特徴(顔、目、髪、服とか)をあらわしているということは前レッスンで学びました。全12桁でしたので残りの4桁の使い道は?と思っていたのですが、追加のオプションがあったのですね。ちなみにゾンビのDNA16桁は、イーサリアムでいうとコントラクトアドレスをさすもののようですよ。
「ifステートメントはjavascriptと同じようなものだ」とありますが、javascript知らないんですけど…。記載されているコードを見る限り、いわゆるif関数ということでいいんでしょうかね。
ちなみに記載されているコードは、eatBLTという関数ですね。もしkeccak256でsandwichを暗号化したハッシュがkeccak256で"BLT"を暗号化したハッシュと同じであれば、食べる!という関数ですかね。
それではテストです。
a20
ハッシュの比較は先ほどのkeccakの例を使えばいいですね。
a21

⑤サンプルを試す

a22
a23
a24
これまでレッスン1、レッスン2で作成したものを実行してみます!
a25
上段が作成したゾンビ、下がcryptokittyiesからデータを取得したキャットですね。まずはゾンビに猫を食わせてみます。
a26
右のキャットにアタックしてみます。
b1
新しいゾンビが作成されました!猫の部分は…しっぽと足ですかね.ちなみに左、真ん中の猫を食わせた場合はこちら。
b2
b3

なかなか面白いですね。ただあまり猫の感じはしませんが。

今回は Interface を覚えました。
現在は3種類しか試せませんが、次第に軍団を作れるようになるようです。
本日もよきCryptoLifeを。
ありがとうございました。

Solidity をCryptoZombiesで学ぶ!まだまだレッスン2です。学ぶことが多いですね!pythonも同時に学習していますが、少なくともpythonよりは難しい感じがしますが…。レッスン6まで4つも課題があります…。ゆっくり進んでいきます。前回までは
Solidity ゲームで学ぶ CryptoZombies レッスン2その1
Solidity ゲームで学ぶ CryptoZombies レッスン2その2

Solidity ゲームで学ぶ CryptoZombies レッスン2その3

目次
①チャプター7:ストレージvsメモリ

②チャプター8:ゾンビDNA

③チャプター9:別の関数とビジビリティ

①チャプター7:ストレージvsメモリ

a1
a2
a3
Solidityには変数を格納する場所が2箇所ある(【strage】【memory】)と。strageはブロックチェーンに永久に格納される変数、状態変数の場合はデフォルトでstrageになる。memoryは関数内で呼び出される変数で関数が呼び出しが終われば消えてしまう変数である。基本的にはSolidityが判別してくれるから問題ないとこと。例外だけを覚えておけばよいのですね。それではテストです。
a4
feedAndMultiplyの関数を作るということですね。その中身で、"require"メソッドでmsg.senderがこのゾンビオーナーであるかどうかを確認し、確認できたら次へ進む。そしてmy Zombieという名前のローカルZombieをstorageの変数として宣言するということですね。”require”は前回でてきました。特定の条件の時のみ先に進んでくれるメソッドでした。

function feedAndMultiply(uint _zombieId, uint _targetDna) public{
    require(msg.sender == zombieToOwner[_zombieId]);
    Zombie storage myZombie = zombies[_zombieId];

a6

②チャプター8:ゾンビDNA

a7
いよいよ新ゾンビのDNAを作成するレッスンにやってきました。今回は元のゾンビとかまれた人間の数値の平均値を出すだけです。簡単ですね。それではテストです。
a8
targetDna(人間側)とmyZombie.Dna(ゾンビ側)のDNAの平均をuint newDnaとして登録する。そして_createZombieを呼び出すと。

_targetDna =  _targetDna % dnaModulus;
uint newDna = (myZombie.dna + _targetDna) / 2;
_createZombie("NoName", newDna);


Solidity上でエラーが出ますが、問題ないようですので先に進みます。

③チャプター9:別の関数とビジビリティ

a10
a11
ビジビリティ(visivility)は、表示/非表示ということです。Solidityには【publicとprivate】のほかに、【internalとexternal】というアクセスに関する規制があるということですね。publicはそのコントラクト内でしかアクセスできない(継承先は呼び出しはできない)、linternalは継承先も呼び出しができるができるようにする関数。externalは外部からのみ呼び出し可能、publicは全OKということらしいです。そのような指定ができるということは覚えておきます。難しいので…。なお、宣言方法はprivate/publicの時と同様です。それではテストです。
a12
対象の部分をprivateからinternalに変更すれば終了です。
具体的には
//下の関数定義を編集せよ
function _createZombie(string _name, uint _dna) internal{

pribate部分をinternalに変更しました。
a13

まとめ
チャプター7:storage(ブロックチェーンに永久保存)とmemory(関数終了後消去)の違い
チャプター8:ゾンビのDNA(技術的なものは特になし)
チャプター9:internal(継承先も呼び出せる)とexternal(外部からのみ呼び出せる)


いかがでしたでしょうか。
部分的にご紹介していますので、なかなか分かりづらいとは思いますが…。関数やそうゆう機能があるよっていうところだけでも見ていただけると幸いです。
本日もよきCryptoLifeを。
ありがとうございました。

↑このページのトップヘ