「HerokuでWebアプリ開発を始めるなら知っておきたいこと」シリーズの第3回では、Webアプリを公開状態にする作業「デプロイ」の簡単さについて書きます。このシリーズのまとめページはこちら。
公開作業(デプロイ)が簡単
この項目は、Rubyのパパ “Matz” こと、まつもとゆきひろさんのこのツイートを見てもらうと一番伝わると思ったので、まずはそのツイートを引用させてもらいます。
PHPのデプロイの簡単さと比較して、Rubyはデプロイが難しいという指摘に対して、まつもとさんはPHP並みに簡単にデプロイできるものとして「Heroku」を挙げています。Rubyの生みの親が名前を挙げるくらいですから、Herokuのデプロイが簡単な部類に入るということは、言い切って間違いなさそうです。ただ、個人的な感想をぶっちゃけると、初心者が使うことを考えた場合、HerokuをもってしてもまだPHPほど簡単だとは言えないと思いました。しかし同時に、こういった場合の「簡単」という単語には2つの意味があるとも思いました。
- まったく知らない人が、初めてやってみたときに、成功する可能性がとても高い、という意味での「簡単」
- 普段使っている人が、一連の流れを把握している上で、同じことを効率良く達成できる、という意味での「簡単」
PHPの良いところは、1つ目の「簡単」さが他よりも群を抜いていることだと考えています。一方、Herokuは、Rubyの中で見た場合のデプロイ作業の簡単さはトップクラスのようですが、Rubyの外から見ると難しいと言わざるを得ません。少なくとも自分はHerokuと比較してもPHPの方が簡単だと感じました。
しかし、Herokuは2つ目の「簡単」さも同時に高レベルで達成している点が、PHPとの違いだと考えています。詳しくは以降のシリーズでもこの点について触れる予定ですが、Herokuで採用されているGitを利用したデプロイ方法というのは、一度ちゃんと覚えてしまった時のそれ以降からの効率の良さはものすごいと、素人ながらに思っています。これはHerokuだけでなく、Rubyという言語を使っているとよく感じることで、この「効率良く達成できるという意味での簡単さ」に、よく言われるRubyプログラミングの楽しさ、Rubyをずっと使いたいと思わせる何かが潜んでいるのではないかなと妄想しています。
デプロイにはGit
さて、ちょっと抽象的な話になってしまいましたが、前述のとおりHerokuではデプロイにはGitを使います。これはすごくむずかしいツールで、Herokuを使う上で序盤でハマるであろう穴の1つです。 自分はHerokuとほぼ同時にGitを使い始めましたが、Herokuで使用する主な6つのコマンドとなる下記以外は未だによくわかってません。
- git init (初期化)
- git add (追加)
- git commit (保存)
- git push (送信)
- git pull (受信)
- git clone (複製)
カッコ内の日本語は今思いつきで付けたので正確な説明ではありませんが、イメージ的にはこんな感じです。Git全体はむずかしいですが、Heroku利用に限って言えば、とりあえずこの6つさえ覚えればHerokuでWebアプリを作ってみることは可能です。極論を言えば、Git本来の目的である「バージョン管理」機能を一切意識しなくても大丈夫です。
ここで言いたいことは、Gitはおそらく前述の「簡単さ」の種類の2つ目の方だということです。上記の6コマンドだけに限れば1つ目の簡単さも含まれますが、Git全体を見た場合はそれは違うような気がします。今ちょっとずつ勉強していて、branch(分岐)、reset(巻き戻し)あたりはちゃんと使えるようになると効率よく使う上で便利になりそうなのは伝わってきています。長期的に見た場合、とても効率的になることが予想でき、なおかつ短期的には必要最低限のコマンドだけ覚えて使えば、なんとか使えるようにはなる、ということでHeroku(Git)でのデプロイの「簡単さ」は程良いバランスになっていると思いました。
HerokuはGit入門向き
というわけで、Herokuのデプロイに使われるGitは、Herokuを使う上では避けて通れません。しかし、このGitはGitHubの人気っぷりからもわかるように、使えるようになった人にはとても便利なシロモノのはずです。それを強制的に使うことで、まず最低限必要な部分だけ覚え、余裕ができたら便利機能を勉強していく(自分の今の段階)、という手順を踏むことができます。
また、Herokuのgitリポジトリは外部には公開されないので、公開を目的としたGitHubよりもさらに入門に向いていると個人的には思っています。外部に公開されるGitHubではさすがにできないような失敗でも、Herokuでなら誰にも見られないのでいろいろ失敗しても恥ずかしくありません。
今回は、「Herokuのデプロイ」に含まれる2種類の簡単さと、HerokuがGitの入門に向いていると思うことについて書きました。 次回は、Herokuで利用出来るWebフレームワーク「Sinatra」について書きます。