PHP
vagrant
laravel
Bitcoin
Monacoin

暗号通貨のウェブウォレットっぽいものをPHPで作る その0

追記@2018/03/20

このプロジェクトは一旦休止とさせていただきます。
理由としては、

  • フロントエンドの知識を頭に詰める
  • バックエンドの知識を頭に詰める (フロントエンドとは別言語)
  • それらを使って、動作するサイトを完成させる
  • 以上を予備知識なしで遂行

という計画を実現する説明を、簡潔に書けるビジョンが見えなくなってしまったということが挙げられます。また、最後の投稿から半年ほど放置してしまい、情報が少し古くなっていることも理由の一つです。

(´・ω・`) oO(現代Webプログラミング、学習コスト高すぎ…)

とは言っても、フロントエンドとバックエンドを分けて学ぶことができれば、その後2つを組み合わせて開発するのは比較的容易だと考えています。
今後の予定としては、フロントエンドのみのプロジェクトを今月中にスタートし、それが完成した後このプロジェクトを作り直すことを計画しています。
こうすることで、この投稿を参考に学習する際の負担を減らすことができ、また投稿そのものも冗長になることなく簡潔に書くことができる…と期待しています。

ただしバックエンドに関しては、この記事をリスタートする際に大幅な変更を予定しています。その時のWeb開発の風潮にもよりますが、使用する言語から変更することも考えています。PHP&Laravelが好きな方、申し訳ございません…。

リスタートさせる際は新規の記事として投稿する予定です。そのため、この記事は今回の追記が最後の編集となります。
最後になりましたが、最新の投稿から半年間も連載を放置してしまい、申し訳ございませんでした…!次回からは、このようなことが起こらないよう、十分なプロットを立ててから投稿していきたいと思います。

追記は以上となります。以下は追記前の本文です。

はじめまして、@syoboon77と申します。この記事がQiita初投稿です。ヨロシクオネガイシマス
このページ(連載?)はWeb開発もしくは暗号通貨をまだ本格的に学んでいない方でもググれば分かる程度の解説を目指しています。Web開発に慣れている方からすれば当たり前のような環境構築なども記述する予定です、予めご了承ください。

また、誤った記述を発見したり、何か勘違いしてそう…などありましたらコメントや編集リクエストをお願いします!

Monacoinで遊んでたら高機能なFaucetみたいなのを作りたくなった

Monacoinという暗号通貨があります。日本で作られた最初の暗号通貨なので日本語で情報交換できたり、某巨大掲示板で生まれたので遊び的な要素が多かったりと、他の暗号通貨にはない特徴を色々と持っています。
日本の人であれば恐らくは(暗号通貨の中で)一番とっつきやすいのではないでしょうか。その一方で、世界で2番目にSegwitをアクティベートするなど、技術開発も盛んだったりします。

詳しい説明は省きますが、一言。Monacoin楽しいです。それが乗じて何か作ってみたくなり、Faucet(少量の暗号通貨を配布するサービス)が付いたウェブウォレットを作成することにしました。
…のですが、情報収集が難しく何をすべきか迷うことがあり、途中まで作ったにも関わらず作り直すこともあって情報を整理する必要性を感じ、最終的に「文に起こすなら公開しておけば誰かの役に立つかも」と考え、Qiitaで投稿することを決めました。

…で、何をどうすれば作れるのか

想像するだけではWebサービスは作れません。かといって何の準備もなしでは何から始めれば良いのかさえも分かりません。
前列を探せばMonacoinのウェブウォレットはいくつか存在しますが、完成品としてのものであり製作工程を公開しておらず、Bitcoinなどは英語の文献が殆ど…
苦労しながらも断片的な情報を収集し、作りやすさを最重視して組み上げた結果が以下の構想・構成です。

-サーバOSはUbuntu。Windows上の開発環境はVagrantを使用して差異を吸収
-Web周りとしてはApache、PHP、MariaDBを使用。フレームワークはLaravelで
-ウォレットにmonacoindを使用、その監視にsupervisorを使う
-Ajaxなどは極力使用せず、送金などの画面も専用のページを用意する。フロントエンドの改良は完成後でもできるので
-作業が一段落する毎にGitリポジトリへコミットする。極力シンプルにしたいので、完成するまではmasterブランチ以外使わない
-実用レベルまで完成したらVPSを契約し、ソースコードをGitリポジトリからをpullして公開。これを本番環境とする

このくらいでしょうか。作るプログラムの設計などは後ほど解説する予定です。
OSやサーバソフトウェアなどの選定も、扱いやすさを最重視した結果です。嘘です。CentOSはmonacoindのビルドが上手く行かなかったトラウマがあり、Ubuntuが有名なので使ってるだけです。Nginxに至ってはインストールしたこともありません。なんだか申し訳ない…

もくじ

その0

このページです。計画の経緯と全体像の説明。

その1(環境構築編)

WindowsにVagrantとか入れてLAMPサーバ+αを立てるまでを1から説明する - 暗号通貨のウェブウォレットを(ry その1
LAMPサーバ、monacoind、supervisorなどをインストールする、いわば環境構築編です。