Perlがくしゅう帳(Rubyも)

プログラミングの勉強会の参加記録や学んだことなど。 twitter ID : @tomcha_で活動しています。 最近は主にPerl関連の勉強会やコミュニティに参加しています。移転前のブログはこちら->http://ruby.doorblog.jp/

オレオレwebアプリをHerokuにデプロイしてみた

だいたい30歳過ぎると、自分の年齢とかどうでもよくなってしまいませんか? なんか+-1歳くらい、全然誤差の範囲というか、もうどうも良い感じになっちゃって、、、

で、申込書類とか役所の書類とか書くときに、◯月☓日現在の満年齢を書かなくてはならない時に「えーっと、今年何歳になるから、◯月☓日はまだ誕生日が来てないから・・・」とか考えるの面倒くさいし、自分の年ならまだしも、親とか兄弟とか他人の年齢を考えるときには、「誕生年が△年違うから、自分の場合と比較して△年引いて、あ、でも誕生日が☆月だから・・・・・アーーーーーーッ!」とか脳内メモリがオーバーフローしてしまう事、ありますよね?

で、年齢計算アプリをperlで書いてjavascriptに移植してwebブラウザで使えるようにしようと考えていたらjavascriptの学習コストが高くて時間がかかりそうだったのでRubyで書いてHerokuにデプロイしてみました。

祝、初実用アプリです。(本当は仕事の実務で結構必要だったので)

Herokuとは何?

難しい言葉でPaaSって言うんですけど、まぁ、ローカル環境で作ったウェブアプリを簡単にインターネット上に公開してくれるサービスです。自分でサーバーとか立てなくても簡単に出来てしまいます。

Herokuでデプロイするまで

1.まず、webアプリを作ります。

自分のパソコンで実行して、ブラウザから「127.0.0.1:ポート番号」でアクセス出来る状態まで作ります。 今回は、ごく簡単なアプリなので、Ruby oRailsではなく、Sinatraを使いました。大事なのは、「bundle」を使って使うGem(モジュール)を設定する事ですかね。(やり方は後述)

2.Herokuのアカウントを作ります。

http://www.heroku.comにアクセスして、Sign upを選びます。無料でアカウントは作れます。

f:id:tomcha0079:20140923211624p:plain

すると、メアドを登録せい!と言われるので、登録します。そしてそのメアドあてに「アカウント作るんかい?」とメールが来るので、リンクを踏んで作ります。よくあるパターンのアレですね。

f:id:tomcha0079:20140923211656p:plain

Herokuサイトに戻って、使用言語を選びます。今回はRuby

f:id:tomcha0079:20140923211953p:plain

チュートリアルが始まりました。Bundler使えと言われてますね。f:id:tomcha0079:20140923212123p:plain

f:id:tomcha0079:20140923212123p:plain

先に進むと、Heroku ToolBeltのダウンロードといんすとーるが指示されます。これを入れると、ターミナルからHerokuコマンドが使えるようになります。インストールした後は、画面の通りコマンドを打って、公開暗号鍵をHerokuへアップロードします。

f:id:tomcha0079:20140923212257p:plain

ここまで出来たら、英語よく分からないし、チュートリアルの続きもダルそうなのですっ飛ばして、ターミナルでコマンドを打つだけでデプロイ出来る様になっていました。

3.コマンドラインで操作する

アプリのGem管理はBundlerを使う必要があるみたいです。 アプリのトップディレクトリでbundle initしてGemfileファイル作り、Gemfileに使用するGemを登録します。今回はSinatraHaml、テスト用にRspecを利用。

source "https://rubygems.org"
gem 'rspec'
gem 'sinatra'
gem 'haml'

Gemfileを書いたら、bundle installを実行。 そして、自作アプリはGitのリポジトリを作成しておき、commitしておきます。

git init
git add .
git commit -m 'コミットメッセージ'

そこまで完了したらいよいよHerokuコマンドです。 heroku create hogehoge(hogehogeは任意のアプリネーム) を実行して、Gitのリポジトリのリモートにheokuを登録し、これによってherokuへアプリを直接Push出来るようになります。 f:id:tomcha0079:20140923214040p:plain f:id:tomcha0079:20140923214048p:plain
Gitコマンドでherokuへローカルのアプリ(=master)をpushします。 f:id:tomcha0079:20140923214105p:plain ちゃんとpushされると、下のような画面が出て完了です。 f:id:tomcha0079:20140923214114p:plain
デプロイ出来ました!

とりあえず、Heroku側のスペック選択では、自分用アプリなので最小構成を設定。無料で公開できます。

公開したアプリはこちら。http://howold.herokuapp.com/日付を入れると年齢計算がされます。 予想以上に超簡単にRubyのwebアプリを公開できました。 webアプリをローカルで作成して動かすまでは手軽に出来ますが、いざ作ったアプリをネット上に公開するとなると、サーバーを借りたり、ドメイン取得したり等、非常にハードルが高いというか、別の知識が必要になりますが、rubyであればherokuを使うとお手軽に出来るのでオススメです。