
提供ソースコードと資料の案内をします
Solidity概要
Solidityを使ったコーディングからデプロイまでの流れ
テストについても触れます
RemixIDEとは何か
画面レイアウト
コンパイルについて
ENVIRONMENT
ファンクションボタンの色の意味
リスクやトラブル回避のため、このコース用に専用MetaMaskをご用意ください。
MetaMask環境として用意いただきたい事項の説明
MetaMaskについて補講が必要な方向けの案内
Alchemyサイトからテスト用仮想通貨取得2
スマートコントラクトとは何か
EVMとは何か
これらの関係性
Ethereum World State Machineとは何か
状態変更の仕組みとトランザクション発行による状態変更の流れ
RemixIDEとGitHubとの連携設定
本コース専用リポジトリからのclone
ご自身の学習用リポジトリへのpush
目標は以下2点
Solidityソースコードファイルのレイアウトの理解
ソースファイルで記載するContract内の主な要素の体験
このレクチャーから、ソースファイルのレイアウトについて学んでいきます。
SPDX によるライセンス指定
前のレクチャーに引き続き、ソースファイルのレイアウトについて学んでいきます。
Version Pragma
このレクチャーではImportの使い方とRemixIDEを使ったデプロイやファンクションCallについて学んでいきます。
前のレクチャーに引き続き、ソースファイルのレイアウトについて学んでいきます。
コメントの書き方
Solidityの変数の種類を学びます。
前のレクチャーで触れたState Variables(状態変数)について実際の型をいくつか使ってもう少し学んでいきます。
このレクチャーではConstructorについて学んでいきます。
このレクチャーではFunctionについて学んでいきます。
このレクチャーではEventについて学んでいきます。
このレクチャーではErrorとFunction Modifierについて学んでいきます。
このセクションのまとめ
目標は2つ
ファンクションについて以下を習得すること
フリーファンクションとpure/viewファンクション
Function Visibility
戻り値指定
変数スコープを理解すること
State Mutabilityである、pure/viewを学びます
フリーファンクションを学びます
stateMutabilityとフリーファンクションをデプロイして動作確認をします
Function Callについて、Function Visibilityを絡めて解説します
前のレクチャーに引き続き、Function Callについて、Function Visibilityを絡めて解説します
前のレクチャーに引き続き、Function Callについて、Function Visibilityを絡めて解説します
ファンクションの複数の戻り値の扱いについてもう少し学びを深めていきます。
前のレクチャーに引き続き、ファンクションの複数の戻り値の扱いについてもう少し学びを深めていきます。
変数スコープを学びます
このセクションのまとめ
セクション目標
バリュータイプに属する各型の理解、習得
このセクションと次のセクションで学ぶバリュータイプとリファレンスタイプの概要について学びます
Boolean型について学びます
Integers型の符号付き整数と符号なし整数を学びます
Integers型の比較演算を学びます
Integers型のビット演算を学びます
Integers型のシフト演算を学びます
Integers型の算術演算を学びます
Integers型の数値リテラルを学びます
Integers型の計算結果において小数が使えることを確認します
Integers型を使った三項演算子を学びます
Address型とメンバーメソッドの使い方を学びます
Address Payable型のメンバーメソッドtransfer/send/callについて概要レベルで違いを学びます
transfer/send/callを使ってETH送金のファンクションを実装します
ContractがETHの受け取る方法の一つとしてpayableを指定する方法を学びます
Contract型の情報の取得方法を学びます
Contractの実装内容を破壊する方法を学びます
ローカル変数を使って他のContractのファンクションを実行する方法を学びます
Contractのインスタンス化の方法を学びます。
bytes[1-32]型とbytes型は紛らわしいので注意
FixedSize Byte Arrays型の定義
FixedSize Byte Arrays型の比較/ビット演算/シフト演算
FixedSize Byte Arrays型のインデックスアクセスとメンバーメソッド
Enums型:定義と基本操作
Enums型:メンバーメソッド
Functionもバリュータイプですが、コース設計の都合上、前のセクションで解説したので割愛します。
このセクションのまとめ
セクション目標
リファレンスタイプに属する各型の理解、習得
Data locationとは何かを解説します
Data locationについてstorage<=> memoryでの変数への値の代入を学びます
Data locationについてmemory<=>memoryでの変数への値の代入を学びます
Array(配列)型のポイントを説明します
固定長配列と可変長配列、二次元配列の定義方法を学びます
配列要素へのアクセス方法を学びます
配列全体のreturnとGetterファンクションの違いを学びます
配列型のメンバープロパティとメソッドについて学びます
可変長メモリ配列を作成する方法を学びます
配列スライスを学びます
String型とBytes型の概要を学びます
String/Bytes型の定義方法を学びます
String型で日本語や絵文字を使う方法を学びます
16進数リテラルとエスケープ文字を学びます
String/Bytes型の文字列比較の方法を学びます
String/Bytes型のメンバーメソッドを学びます
String/Bytes型の文字列の一部を変更する方法について学びます
小文字を大文字に変換するファンクションを通して文字列操作の方法を学びます
String/Bytes型の配列スライスについて学びます
Structs型の定義方法を学びます
Structs型のメンバーへのアクセス方法を学びます
Structs型の動的配列型の定義方法を学びます
Struct型の動的配列への登録とアクセス方法を学びます
Structs型の動的配列型のメンバーアクセスの方法を学びます。
Mapping型とは何か要点を学びます
Mapping型の定義方法を学びます
Mapping型の基本操作を学びます
少し複雑なMapping型操作を学びます
Mapping型のデータ削除方法を学びます
このセクションのまとめ
セクション目標
以下の概要理解と習得
単位
グローバル変数
特別なファンクション
Ether単位の接尾語の使い方を学びます
Etherの単位を使った演算を学びます
時間単位の接尾語の使い方を学びます
時間単位を使った演算を学びます
トランザクションプロパティであるmsg.dataとmsg.sigについて学びます
トランザクションプロパティであるmsg.valueについて学びます
トランザクションプロパティであるmsg.senderとtx.originについて学びます
トランザクションプロパティであるmsg.senderとtx.originの違いを掘り下げて確認します
前のレクチャーに引き続き、トランザクションプロパティであるmsg.senderとtx.originの違いを掘り下げて確認します
ブロックプロパティについて学びます
ABIエンコードとデコードのファンクションの使い方を学びます。
算術ファンクションの使い方を学びます。
ハッシュファンクションの使い方を学びます。
このセクションのまとめ
セクション目標
目標は以下の概要理解と習得
制御構文
オーバーフローとアンダーフローチェック
エラーハンドリング
コントラクト内のエラーハンドリング
外部接続時のエラーハンドリング
if文について学びます
while構文の基本的な使い方を学びます
while構文のbreakとcontinueの使い方を学びます
for構文の基本的な使い方を学びます
for構文のbreakとcontinueの使い方を学びます
算術演算時のオーバーフローアンダーフローのデフォルトチェックについて学びます
算術演算時のオーバーフローアンダーフローのデフォルトのチェックを無効化する方法について学びます
コントラクト内のエラーハンドリング概要をお話しします
Assertファンクションについて学びます。
Requireファンクションについて学びます。
Revertファンクションとステートメントについて学びます。
外部接続時のエラーハンドリング:Try/Catchについて学びます。
このセクションのまとめ
セクション目標
コントラクト内の定義要素について以下2点の概要理解と習得
ここまで口頭で軽く触れてきた要素のまとめ
例) Visiblivity, Getter Functionなど
ここまで扱ってきていないコントラクト内の要素の習得
例)Eventのロギングデータの形式,Fallback Functionなど
newステートメントを使ったコントラクトの作成、インスタンス化を学びます
インスタンス化したコントラクトからファンクション実行する方法を学びます
状態変数とファンクションのvisibilityの要点まとめ
ファンクションvisibilityを学びます
ステートvisibilityを学びます
Getter Functionsの基本操作を学びます
配列型のゲッターファンクションと状態変数を返すファンクションの違いを学びます
Function Modifierの基本操作を学びます
Function Modifierの継承時の利用方法を学びます
Eventの概要、ログデータ保存先、ロギングデータについて学びます
SolidityでEventの定義と発行を行う方法を学びます
スマートコントラクトをテストネットへデプロイし、Eventを発行します。その後ロギングデータの確認を行い、ロギングされるデータの理解を深めます。
ConstantとImmutableの違いと定義方法を学びます
ConstantとImmutableの値の取得(操作)について学びます
FunctionOverloadを学びます
ReceiveEtherFunctionとFallback Functionの概要を学びます
receive()とfallback()の実装を学びます
receive()を使ったETHの受け取りを学びます
fallback()を使ったETHの受け取りを学びます
fallback()を使ったETHの受け取り2+どちらも実装してなかった場合の動きについて学びます
このセクションのまとめ
セクション目標
Solidityの「継承」における概要理解と習得
継承の基本を学びます
前のレクチャーに引き続き、継承の基本を学びます
前のレクチャーに引き続き、継承の基本を学びます
継承時のconstructor引数の扱いについて学びます
継承時のconstructor引数の扱いについて学びます
virtualとoverrideについて学びます
多重継承の方法を学びます
多重継承時のoverrideとsuperについて学びます
多重継承:継承関係にない複数のContractを継承する方法を学びます
前のレクチャーに引き続き、多重継承:継承関係にない複数のContractを継承する方法を学びます
前のレクチャーに引き続き、多重継承:継承関係にない複数のContractを継承する方法を学びます
前のレクチャーに引き続き、多重継承:継承関係にない複数のContractを継承する方法を学びます
このセクションのまとめ
セクション目標
以下それぞれにおける概要理解と習得
インタフェース(interface)
抽象型コントラクト(Abstract Contract)
ライブラリ(Library)
Using A for B 構文
Interfaces:定義と基本的な利用方法を学びます
Interfaces:定義とcontractへの継承と実装を学びます
Interfaces:定義とinterfaceへの継承と実装を学びます
Interfaces:他のコントラクトのファンクションcallへの利用を学びます
Abstract Contract:概要とinterfaceとの違いを学びます
Abstract Contract:定義を学びます
Abstract Contract:Contractへの継承と基本的な利用方法を学びます
Library:概要と定義方法を学びます
Using for によるLibraryの利用方法を学びます
このセクションのまとめ
本コースが想定する対象者について補足
このコースは、Solidityでコードを書いたことがある人が、腰を据えて基本をしっかり習得し、スキルレベルを引き上げるためのコースです。
全くSolidityでコードを書いたことがない人向けのコースではありませんのでご注意ください。
(全くSolidityでコードを書いたことがないが強い関心がある、という方には「CryptoZombies」という、無料で素晴らしい入門者向けコースがあるのでそちらをご紹介します。もしくは私のUdemy有料コース「【注目スキル:DApp(分散アプリケーション)】体系的に学ぶ『スマートコントラクト』開発〜NFT編ステージ1〜」を先に受講いただくのが良いと思います。どちらか1つを受講した後に本コースを再度ご検討ください。)
このコースはどんな方向けのコースなのか
いくつかの無料チュートリアルでなんとなくSolidityを書いてみた。
自分で作りたいものを書いてみたい、あの有名なプロジェクトのSolidityコードを読んでみたい。
でも都度都度詰まってしまってコンパイルが通らない。
Solidityコードを読んでみたけどこれまでやってきた無料チュートリアルだけでは読めないことがわかった。
しかし、
都度色々なサイトで調べていると時間がかかりすぎる(ほとんど英語だし)
マニュアルを読むのも大変(ボリュームがあるので必要な箇所を探すのが大変)
Solidityの基礎をきちんと身につけたい
基礎固めができるようなガイドが欲しい
本コースはこんな方向けのコースです。
最初にお断りしておきます。本コースでは基本的にはSolidityの文法、構文を中心に学びますが、こういった類のコースとしては非常に時間が長いコースになっています。
本コースではSolidityの文法、構文だけでなく随所に詳しく動作を確認する内容が含めています。(例えばEvent機能を使ってログ発行するだけでなく、どのような形式でログが記録されているのか、確認する内容など)
本コースはSolidityやスマートコントラクト開発に対して強い興味、関心、ある程度の忍耐力を持つ方のみを対象にしています。こういった方々に受講いただきたいと考えて製作しました。
(今の仕事や今後目指す仕事がエンジニアかどうか、開発者かどうか、は関係ありません。むしろさまざまな職種、専門性を持った方に受講いただけるとうれしいですし、これから何らかの専門性を身につけたい方も大歓迎です。)
逆に強い興味、関心、ある程度の忍耐力がないと受講完了することはできないと思います。
ですので、予め今お読みいただいているコース紹介ページや、コース紹介動画、またいくつか無料で公開しているレクチャー動画をご確認いただき、ご自身の学習スタイル、期待、要望に沿った内容であるか、また講師の教え方や伝え方などが気にいるかもしくは我慢できる範囲かをご確認いただくことを強くお勧めします。
その後ご購入するか、しないか、ご判断をお願いします。
本コースの受講により受講者がSolidityの基礎スキルを習得し、受講後にステップアップするために必要なレクチャーを盛り込んでいますので、これを目指す方には是非是非受講いただきたいです。
一方、受講には時間とお金もかかりますし、本コースや私のレクチャースタイルと合わない方に無理やりお勧めしたいとも考えておりません。受講開始したもののやはり合わないということがわかれば即返金してください。Udemyでは購入から30日以内であれば返金可能です。方法は以下のURLです。
https://support.udemy.com/hc/ja/articles/229604248-%E3%82%B3%E3%83%BC%E3%82%B9%E3%81%AE%E8%BF%94%E9%87%91%E6%96%B9%E6%B3%95
本コースで扱っていない事項のご案内
本コースではSolidityの文法、構文の基本習得を目指していきます。
一部については扱っていないかもしくは範囲や深度を絞っています。予め以下にご案内しておきます。
これらについてレクチャーの要望があればコメント付き評価などでリクエストください!検討いたしますmm
グローバル変数の一部
特にGASや習得にEthereumチェーンの仕組み理解が必要なものは扱っていません
特殊ファンクション
abiファンクションについては数個に絞って学びます
型変換
専用にレクチャーを設けるまではしていません。しかしコードの中でいくつかのパターンについて扱っています
Inline Assembly
全く扱っていません
Library
深度を限定し、触り程度で学びます
注意事項
・質問について
コースで扱っているレクチャー内容やレクチャーを進めていくにあたり進められず詰まってしまったなどあれば、UdemyのQA機能で質問をください。可能な限り回答するようにしますので活用ください。
また、講義に解説を追加して欲しい!というリクエストも随時受け付けていますので連絡ください。お待ちしています。
ただ以下2点について予めご協力、ご了承をお願いいたします。
・質問前に一度講師提供コードと見比べてから質問をお願いします。質問の際には書いているコード自体も記載ください。現象やご質問内容を理解するコミュニケーションが最も時間を要します。お互いに時間をロスすることなく解決していくためご協力お願いします。
・コースで扱っているレクチャー内容以外のご質問は原則受け付けていませんので予めご了承願います(特にコース関係ない内容、ご自身が今開発してるコードのレビューなどはご勘弁ください)。
ご質問への返信タイミングは、ベストエフォートでの回答になります。目安は質問から3、4日程度
・本コースで扱うソースコードについて
本コースで扱うソースコードは学習目的のものですが、本コースの受講者か否かに限らず提供できるようパブリックリポジトリにし、コードもMITライセンスを採用しています。
(この形でスタートして何か問題が出て来ればそのタイミングで見直します。)
利用者の権利はMITライセンスの内容通りですので必ず確認をお願いします。また、ソースコードをそのまま使ったり、切り貼りしたりしてご自身のNFTコントラクトを開発し、Ethereumなどのメインネットワークにデプロイするのは非推奨です。
・免責事項
このコースでいくつかサービスを使いながら学びますが、全て学習目的です。技術を学ぶためのコースであり、特定の銘柄や商品の投資や投機を促すものではありません。いかなる責任も賠償もできませんので予めご了承の上受講ください。