Solidity学習ヒント集

# 本記事の内容について
本記事は[Loom Network JPのTelegramグループ](https://t.me/loomnetworkJP)や[Loom Network EnglishのTelegramグループ](https://t.me/loomnetwork)内で共有されたSolidity学習のためのヒントやロードマップをまとめています。

いつも指針や刺激をくださる方々に感謝します。このグループやSolidityに興味がある方はぜひLoom Network Telegramグループへ！cryptozombiesに関する質問や、Solidity学習やDAppを作る上での疑問はもちろん、「最近ゾンビが可愛く見えるようになった！」のようなゆるい会話も飛び交っています。

この記事は随時更新しています。

# おすすめのSolidity学習ロードマップ
1. [Cryptozombies.io](https://cryptozombies.io/)
2. [Truffle Tutorial ~ETHEREUM PET SHOP~](http://truffleframework.com/tutorials/pet-shop)
3. [Solidity公式ドキュメンテーションにあるオークションなどのコードを見てみる](https://github.com/brynbellomy/solidity-auction)。[オークションの解説記事 (Solidity tutorial: building a simple auction contract” by Bryn Bellomy)](https://medium.com/@bryn.bellomy/solidity-tutorial-building-a-simple-auction-contract-fcc918b0878a)も要チェック！


# Loom Network News!
- CryptoZombiesは全7〜8Lessonがリリース予定！ (2018年4月現在Lesson6までリリース済)
- [全レッスンを終わらせると4月にご褒美](https://twitter.com/loomnetworkjp/status/966807142643785736)
- [@LoomNetworkJPのアカウントがQiitaに登場！](https://qiita.com/LoomNetworkJP)
- [Loom NetworkのFAQ公開!](https://medium.com/loom-network-japanese/loom-network%E3%81%B8%E3%81%AEfaq-100c45700ff5)
- [Loom Network公式サイト](https://loomx.io/)
- 2018年4月2日CryptoZombies Lesson6 (英語) が公開! 日本語版も近日公開予定!
- 2018年3月13日 Loom Network上で動く初のDAppである[DelegateCall.com](https://delegatecall.com/)が公式リリース済み! 貢献度に応じてERC-20トークンをユーザーに配布。


# Solidityの全体像がつかめるサイトや書籍、アプリ開発に役立つもの
1. cryptozombies.io
2. How To Learn Solidity: The Ultimate Ethereum Coding Guide
3. 「はじめてのブロックチェーンアプリケーション」
4. 「ブロックチェーンアプリケーション開発の教科書」
5. Truffle (Solidityのフレームワーク)のチュートリアル
6. OpenZeppelinライブラリ
7. DAppChains (Loom networkが2018年3月にDAppChainsをローンチ予定!)
8. Solidity Docs

DAppアプリを作るのであれば、このほかにweb3.jsの知識も必要となってきます。

## cryptozombies.io
[cryptozombies.io](https://cryptozombies.io/) は、Loom Networkが提供するゾンビを作りながらSolidityが学べるサイトです。まず最初のとっかかりとしてぜひ！ 2018年4月5日現在Lesson1～6が公開されておりそれぞれ15個程度の課が準備されています。 

## How To Learn Solidity: The Ultimate Ethereum Coding Guide
https://blockgeeks.com/guides/solidity/
開発の手順を順序立ててわかりやすく解説。
ここで紹介されている動画でSolidityの書き方が学べます。[How to Write an Ethereum Election Smart Contract](https://www.youtube.com/watch?time_continue=7&v=AItPWZ63_mw)では、選挙を公平に行うためのプログラムを書いています。これを写経して、[cryptozombies](https://cryptozombies.io/)で学んだことと照らし合わせながらプログラムをどうやって書くのか自分で考えてみるのもいいでしょう。


##「はじめてのブロックチェーンアプリケーション」
アプリのコードサンプルが多い。ただ2017年出版でGethのコンパイラなどの情報が古くなっている部分もあるため、本の指示通りにやってもダメな場合はネット検索で解決する必要あり。

## 「ブロックチェーンアプリケーション開発の教科書」
環境構築やライブラリについて情報が充実

## Truffleのチュートリアル
[Truffle](http://truffleframework.com/tutorials/)では18個のチュートリアルが準備されています。
1. [DEBUGGING A SMART CONTRACT](http://truffleframework.com/tutorials/debugging-a-smart-contract)
2. [BUILDING ROBUST SMART CONTRACTS WITH OPENZEPPELIN](http://truffleframework.com/tutorials/robust-smart-contracts-with-openzeppelin)
3. [ETHEREUM PET SHOP](http://truffleframework.com/tutorials/pet-shop) ←cryptozombiesの後におすすめ
4. [ETHEREUM OVERVIEW](http://truffleframework.com/tutorials/ethereum-overview)
5. [BUILDING DAPPS FOR QUORUM: PRIVATE ENTERPRISE BLOCKCHAINS](http://truffleframework.com/tutorials/building-dapps-for-quorum-private-enterprise-blockchains)
6. [BUILDING AND TESTING A FRONTEND APP WITH TRUFFLE](http://truffleframework.com/tutorials/building-testing-frontend-app-truffle-3)
7. [TESTING FOR THROWS IN TRUFFLE SOLIDITY TESTS](http://truffleframework.com/tutorials/testing-for-throws-in-solidity-tests)
8. [CREATING AN ETHEREUM-ENABLED COMMAND LINE TOOL WITH TRUFFLE 3.0](http://truffleframework.com/tutorials/creating-a-cli-with-truffle-3)
9. [UPGRADING FROM TRUFFLE 2.0 TO TRUFFLE 3.0 - A GUIDE](http://truffleframework.com/tutorials/upgrading-from-truffle-2-to-3)
10. [ETHEREUM DEVOPS WITH TRUFFLE, TESTRPC & VISUAL STUDIO TEAM SERVICES](http://truffleframework.com/tutorials/ethereum-devops-truffle-testrpc-vsts)
11. [CONFIGURING VISUAL STUDIO CODE FOR ETHEREUM BLOCKCHAIN DEVELOPMENT](http://truffleframework.com/tutorials/configuring-visual-studio-code)
12. [HOW TO INSTALL TRUFFLE & TESTRPC ON WINDOWS FOR BLOCKCHAIN DEVELOPMENT](http://truffleframework.com/tutorials/how-to-install-truffle-and-testrpc-on-windows-for-blockchain-development)
13. [CHAIN FORKING AND DYNAMIC ANALYSIS: EXPLOITING THE DAO](http://truffleframework.com/tutorials/chain-forking-exploiting-the-dao)
14. [DEPLOYING TO THE LIVE NETWORK](http://truffleframework.com/tutorials/deploying-to-the-live-network)
15. [BUNDLING WITH WEBPACK](http://truffleframework.com/tutorials/bundling-with-webpack)
16. [USING INFURA (OR A CUSTOM PROVIDER)](http://truffleframework.com/tutorials/using-infura-custom-provider)
17. [IN BETA: PACKAGE MANAGEMENT](http://truffleframework.com/tutorials/package-management)
18. [IN BETA: SOLIDITY UNIT TESTS](http://truffleframework.com/tutorials/solidity-unit-tests)


## OpenZeppelinライブラリ
https://openzeppelin.org/api/docs/open-zeppelin.html
ベーシックなコントラクトをよく知る

## DAppChains
[Loom networkが2018年3月にDAppChainsをローンチ予定!](https://medium.com/loom-network-japanese/dapp%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3-f40b5783fb6e) 大規模なゲームやソーシャルアプリを作れるようになります。
Loom Networkが開発するDAppChainsはアプリケーション特化型のサイドチェーンです。メインチェーン（イーサリアム）と平行して動作します。
メインチェーン (イーサリアム) 上でのアプリ開発は、色々と制約が出てきてしまうのが現状です (高いガスコストや低スピードなど)。それらを解決した結果、これまでイーサリアムのブロックチェーンでは向かないとされていた膨大なデータを保管するようなアプリ構築(MMORPGやソーシャルメディアなど) が可能となり、アプリの目的によって仕様も適切に変えられるようになります！

## Solidity Docs
[Solidity Docs](https://solidity.readthedocs.io/en/develop/) には文字通りSolidityのドキュメントが集約されています。

# 身につけるべき知識は?
1. コンパイル、デプロイの手順
2. Truffleの使い方
3. ベーシックなコントラクト
4. web3.js

# Solidityで比較的初歩の段階でも作れるもの候補
1. 最初の最初の段階はOpenZeppelin を使って中身のコードを追いながらトークンをつくって testnet にデプロイ (そこで一連の流れを掴んでからアプリを作るとよい)
2. 金融系のコントラクト (クラウドセールやギャンブルゲーム)
3.  [Solidity公式ドキュメンテーションにオークション用などのサンプル](http://solidity.readthedocs.io/en/develop/solidity-by-example.html)を使って何か作る

Ethereumブロックチェーンの性質上、ただのテキストであっても、膨大なデータを保管するようなものは不向き。

# Cryptozombiesのソースコード
https://github.com/loomnetwork/cryptozombie-lessons

# Solidityのエディタ
1. Remix(browser-solidity)
2. [Loom networkのエディタEthFiddle](https://ethfiddle.com/)

@LoomNetworkJP の [EthFiddleでsolidityコードを共有しよう](https://qiita.com/LoomNetworkJP/items/73b1c21063764bcfc7f9) を要チェック！ EthFiddleはコード共有可能です。JSFiddleのような感じ。コードの共有はもちろん、ローカルテストネットでコンパイル・デプロイ・テストもOK!


# DAppアプリと法律
2018年2月現在、DAppアプリサービスがETHで完結するのであれば、特に業者の認可は必要ないはずですが、サービス内で独自トークンをETHで買う、というような仕組みだと念のため金融庁に確認すべきです。
クリプトキティのような通貨的な要素のないゲームのキャラトークンであれば業者認可は不要です。
<font color="OrangeRed">**仮想通貨関連の法律の整備はまだ途上です。あなたが開発しているものが金融庁が定義する仮想通貨に当てはまる可能性があるときは金融庁へ個別に確認してください。**</font>
[ICOと国内法規制（その１）ICOトークンの「仮想通貨」該当性について](https://medium.com/blockchain-research-institute/ico%E3%81%A8%E5%9B%BD%E5%86%85%E6%B3%95%E8%A6%8F%E5%88%B6-%E3%81%9D%E3%81%AE%EF%BC%91-16144bd22791)


# Solidityを学ぶモチベーションになるもの
[ブロックチェーン・アプリ開発をなぜ学ぶべきか？](https://medium.com/loom-network-japanese/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3-%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%82%92%E3%81%AA%E3%81%9C%E5%AD%A6%E3%81%B6%E3%81%B9%E3%81%8D%E3%81%8B-b247096c2ce)

# Solidityを学ぶならCryptoZombies がまずおすすめ&Loom network JP TelegramグループへGo!
Solidityを学ぶなら[cryptozombies.io](https://cryptozombies.io/)がおすすめです。また[Loom Network JPのTelegramグループ](https://t.me/loomnetworkJP)や[Loom Network EnglishのTelegramグループ](https://t.me/loomnetwork)には、Loom networkの中の人や、CryptoZombiesでSolidityを学んでいる人たちがいるので、Solidityの情報やDAppsの情報が飛び交っています。

# 関連トピック
勉強になります！ ありがとうございますm(_)m

- [仮想子猫経済を支える ERC721](https://m0t0k1ch1st0ry.com/blog/2017/12/19/erc721/)

- [スケーラビリティとのトレードオフ](https://medium.com/loom-network-japanese/%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%A9%E3%83%93%E3%83%AA%E3%83%86%E3%82%A3%E3%81%A8%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89%E3%82%AA%E3%83%95-9170c316b63e)
イーサリアムを超えるような、ブロックチェーン技術の柔軟なスケーラビリティの実現には、まだまだ時間が必要。