Herokuで作るFacebookアプリ

第2回 HerokuでRailsアプリを動かそう

この記事を読むのに必要な時間:およそ 3 分

サンプルアプリを作る

サンプルとしてcatalogという名前のアプリを作ってみます。まずは,Railsのコマンドでアプリを生成します。

$ rails new catalog
$ cd catalog
$ rails s

これで,最も単純な状態のアプリがローカルで動いています。ブラウザでhttp://localhost:3000/にアクセスして動作を確認してください。 Railsを使ったことがある人は見慣れた画面が表示されると思います。

図2

図2

まずは,この状態のアプリをHerokuで動かしたいと思います。そのためにまずはGitでソースコード管理を行ってHerokuに送信する必要があります。以下のコマンドの流れでGitでの管理の初期設定を行います。これらのGitコマンドの詳細について,わからない場合はマニュアルなどをご覧ください。

$ git init
$ git add .
$ git commit -m "Init"

Herokuで動かす

では,実際にHeroku上で動作させてみます。以下の手順で行います。ここは少し詳しく順に解説します。

$ heroku create 

このコマンドで,herokuにアプリケーションを追加します。引数に名前を入力すると指定した名前でアプリケーションを登録します。今回はサンプルなので指定していません。その場合,ランダムで名前が付けられます。

$ git push heroku master

次のコマンドで,Gitを使って,先ほど作ったアプリのHeroku側のレポジトリにアプリケーションのソースコードを送信します。herokuコマンドで作成すると自動的にherokuという名前でリモートのレポジトリが登録されています。このコマンドを発行するとソースコードの送信が始まり,アプリの起動まで自動的に進んでいきます。

$ heroku open

最後に,このコマンドで作成したアプリをブラウザで開くことができます。普通に登録されていればコマンドラインからブラウザが起動するという動きになります。URLは,http://[ランダムで生成されるherokuでのアプリ名].heroku.com/というものになります。

データベースを利用する

次に,データベースを利用してみましょう。ScaffoldでCRUDを作成して動作させてみましょう。まずは,ローカルで動かします。以下のようにコマンドを発行するとProductsテーブルを作成しCRUDのアクションが自動生成されます。

$ rails g scaffold Product name:string price:float url:string
$ rake db:migrate
$ rm public/index.html

ルーティングも最初の画面にならないように変更しておきます。config/routes.rbに以下の行を追加してください。

root :to => "products#index"

ここで一旦ローカルで動作確認してみましょう。

$ rails s

ブラウザでhttp://localhost:3000/にアクセスして,データを作成するなどしてみてください。レコードの追加,編集,削除が動作すると思います。正しく動作しているので,Herokuにデプロイしてみましょう。まずは,Gitにコミットします。

$ git add .
$ git rm public/index.html
$ git commit -m "Scaffold products"

コミットできたら,Herokuに送信しましょう。

$ git push heroku master

続いてローカル同様マイグレーションも必要です。これは,herokuコマンドを通じて行います。このように,herokuコマンドの後にrakeコマンドを続ける形で実行できます。

$ heroku rake db:migrate

さて,これが完了すればHeroku上でもデータベースを扱った操作ができるはずです。ブラウザで開いて確認してみましょう

$ heroku open

ローカル同様に,データの作成,更新,削除が動くようになっていると思います。このような簡単な手順でデータベースまでHeroku上で動作させることができました。ここまでに利用したコマンドの種類はそんなに多くはないはずです。Herokuではこんなにも簡単にアプリケーションをデプロイやバージョンアップを行うことが可能なのです。

まとめ

今回,Herokuの基本的な使い方を学びました。Herokuを利用することでアプリケーションの登録,デプロイ,バージョンアップが非常に簡単な手順で行えることがわかったと思います。Ruby on Railsの生産性の高さだけに加え,Herokuのシンプルなデプロイシステムを利用することで,より高速なアプリケーション開発が行えるということが実感できたのではないでしょうか。

次回はFacebookアプリについて詳しく紹介し,Heroku上で簡単なサンプルを動かしたいと思います。

著者プロフィール

松村章弘(まつむらあきひろ,ハンドルネーム:mat_aki)

SonicGarden プログラマー。

1984年生まれ。社会人1年目からRuby on Railsのみで開発を続け現在4年目。Webサービスの企画・運営・プログラミングまですべてをこなす。世界で利用されるWebサービスを創ることを目標にしている。現在は youRoom の開発を行っている。

mat_akiの日記:http://d.hatena.ne.jp/mat_aki/

Twitter:http://twitter.com/mat_aki