趣味のブロックチェーンアプリ開発


#趣味のブロックチェーンアプリ開発


ブロックチェーンは素晴らしい技術です。
人生を賭ける価値があると思いますし、世界を変える可能性があると思います。
まだ見ぬ未来に向かって全力で取り組まれている方々がうらやましいです。

…自分ぐらいの平凡な能力だと、ブロックチェーン技術で生き残るのは難しい…。
ブロックチェーンの開発は頭のいい人に任せて横で応援していくしかないのでしょうか…。


……など考え、趣味でブロックチェーン開発をすることにしました。

これなら別に天才でなくても地道にブロックチェーンの未来にコミットしていけます。
ご飯が食べられなくなる心配もありません。

ということで
ここから先は約2年間、普通に働きながらコードを書いたりバグを解析した私がお伝えする
『趣味のブロックチェーンアプリ開発』のお話です。

##やってみた結果

####良かったこと
・プログラミングなどの技術力が向上して昼の仕事に役立つ
・未来を作っているような気がする
★ファウンダーを名乗れる

####悪かったこと
・仕事の繁忙期が重なると体力的にきつい！
・締め切りのあるイベントに申し込んでしまうと精神的にもきつい！
・バグが技術的にきつい！

話としては色々とあるのですが、
ここで、良かったことのひとつ『★ファウンダーを名乗れる』をピックアップしてみましょう。

##ファウンダーを名乗れる
趣味レベルでも、アプリを作って公開するとファウンダーを名乗れます。
すると、技術者の集まりに参加するときにアプリが名刺代わりとして使えたりします。
たとえば、この前のEthereum Devconというイベントに行ったとき海外の方がいたので
「あいめーど、だっぷす」と言って作ったアプリを見せたら、英語で
「何か開発してるんだね、酒とか飲みながら話そう」といってお酒をもらえました。

ということで、ブロックチェーンアプリを作って公開すると良いことがあります。
バグは技術的にきついですが、完成したときに達成感もあります
お時間のある方は、ブロックチェーンアプリを開発しましょう！

さて、メリットを紹介していきましたが、開発時に気を付けなければならないこともあります。
趣味であればどんな失敗をしてもいい、と最初は思っていたのですが、そうでもないみたいです。
最悪の場合逮捕されます…。

##趣味のブロックチェーンアプリ開発で気を付けること

####法律違反をしない
日本において、改正資金決済法に違反すると『三年以下の懲役』となる可能性があります。
具体的には金融庁からの『仮想通貨交換業免許』がない状態で仮想通貨を販売すると法律違反になります。
逮捕されてしまうと趣味どころか、昼の仕事をクビになったりするなど影響があります。
なので、自分が作ったアプリは仮想通貨を販売ではなく、無料配布にしています。


####ブロックチェーン自体を作ろうとしない
ブロックチェーン自体の開発と、ブロックチェーンアプリケーションの開発は別物です。
ブロックチェーン自体の開発は大変難しく、いわゆる天才の仕事です。
これに対して、ブロックチェーンアプリの開発は通販サイトを作ることと似て、各種ライブラリを組み合わせると実現できます。


####専門外の分野もあきらめない
ブロックチェーンは総合科目です。
法規制、経済理論、英語、ソフトウェア開発、ITインフラ管理……さまざまな分野が出てきます。
趣味で開発するということは個人開発になりますので、
どこかの分野で必ず「わからん…」と壁にぶち当たります。
そんなときに諦めてしまうとアプリが完成しません。
その分野の本を読む、google検索するなどを駆使して、最低限のレベルで分かるようにします。
(私の場合、本業は通信系の工事屋なので、ソフトウェア開発が鬼門でした⇒「Promise?何それおいしいの?」)



さて、注意点をご紹介したところで、このあたりで具体例として、
私がEthereumのブロックチェーンでアプリ(DApps)を作ったときの事例をご紹介してみます。

##趣味のブロックチェーンアプリ開発の手順(EthereumのDAppsの場合)

####企画を考える
まず、企画を考えます。ブロックチェーン関連の本や記事を読みながら色々な妄想をするといいでしょう。
今回は2019年に令和になったので、令和最初のスマートコントラクトという触れ込みでアプリを開発することにしました。
[『令和トークン』](http://www.reiwatoken.jp)です。

####スマートコントラクトを書く
ブロックチェーン上にプログラムを作成することを、スマートコントラクトのデプロイといいます。
Ethereumでスマートコントラクトを書く場合、Webブラウザで利用可能な専用エディタである『remix』を使うと便利です。
また、セキュリティを強化するための方法なども調べながら進めていきます。
上手くスマートコントラクトが書けたらブロックチェーン上にデプロイします。

####フロントエンドを作成する
Webサイトの作成です。
サイトのデザインを決め、ボタンの配置などを決めていきます。
私はBootstrap StudioなどのソフトでHTMLファイルを生成しています。
サイトのデザインが出来たら、ボタンを押したときにスマートコントラクトを呼び出すための機能を実装していきます。

####スマートコントラクトを呼び出す
ライブラリを使って、作成したスマートコントラクトを呼び出せるようにします。
なお、Webブラウザ上でユーザが秘密鍵を管理する方式では、Webブラウザ上で動くJavaScriptライブラリ以外の選択肢はありません。
私はこれに気付いたのでライブラリを使うために必死にJavaScriptを勉強しています。
結局のところ、ブロックチェーンアプリの開発もWebアプリケーション開発ですので言語の知識が必要です。

####バグを直す！
基本的にEthereumのブロックチェーンは公式ドキュメント通りにコードを書いても動きません！
ライブラリ側の度重なる仕様変更やクライアントソフトの相性問題などにより、うまく動かないのです。
対応としては、スマートコントラクト呼び出しの部分で出力されたエラーメッセージをもとに、
stackoverflowやgithubなどを調べて、同じトラブルに遭遇している人を探しています。
調べた情報をもとに粘り強く試行錯誤していると、いずれ上手く動くタイミングが来ますので、なぜ動いたかを考えていきます。時間もかかりますし、つらい作業です。


おそらくソフトウェア開発の人はバグが出ても比較的簡単に乗り越えられるのだと思います。
あと、最近発売された[名著：マスタリング・イーサリアム](https://www.amazon.co.jp/%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%BB%E3%82%A4%E3%83%BC%E3%82%B5%E3%83%AA%E3%82%A2%E3%83%A0-%E2%80%95%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%B3%E3%83%B3%E3%83%88%E3%83%A9%E3%82%AF%E3%83%88%E3%81%A8DApp%E3%81%AE%E6%A7%8B%E7%AF%89-Andreas-M-Antonopoulos/dp/4873118964)はバグ解析にとても役立ちそうです。


##趣味のブロックチェーンアプリ開発のすすめ

ということで、趣味のブロックチェーン開発のご紹介をいたしました。
きっと、やってみると良いことが沢山あるはずです。

…ということで、Qiitaをお読みの皆様、ブロックチェーンアプリの開発をはじめましょう！
これを読んでいる人の半数は、私より才能があるはずです！