Herokuで作るFacebookアプリ

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

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

はじめに

前回HerokuでFacebookアプリを動かすことのメリットについて解説しました。第2回は,Herokuを利用するための前提となる環境と設定方法を紹介し,Heroku上でRailsのサンプルのアプリを動かすチュートリアルを行います。

今回Ruby on Railsを利用したアプリを動かしますが,Railsアプリの作り方やコマンドについて深くは触れません。Rails3を触ったことがない人は,今回Railsの各コマンドでわからないことがあると思います。その場合はもうすでにたくさんのRailsのチュートリアルなどがありますので,そちらを参考にしていただければと思います。

それでは,Facebookアプリで世界を目指すために,まずはHerokuの基本を学んで行きましょう。

Herokuの基本機能について

Herokuは基本機能を無料版として提供しています。この無料版は,単純なアプリであれば普通に動作させることができる十分なスペックを持っています。今回は,この基本機能を利用したシンプルなアプリを動作させることを目標とします。

無料で提供されている機能は以下の3つです。

  • Webアプリケーションサーバ の1プロセス(dyno)を利用できる
  • 5MBのPostgreSQLを利用できる
  • Gitでソースコードを管理できる

Herokuは,Webアプリケーションを動作させるCPUプロセス数に課金するというモデルをとっています。この1プロセスの単位をHerokuではdynoと呼んでいて1つをアプリごとに1dynoを無料で提供しています。同時にたくさんのアクセスが来た場合に,1dynoでは処理しきれなくなることもありますが,最初は1dynoで十分動作可能です。

次に,Webアプリケーションに必須のデータベースの機能ももちろん備えています。PostgreSQLを標準で5MBまで無料で提供しています。今後紹介するアドオンの機能などを利用すれば,MySQLや注目されているNoSQL(MongoDB, CouchDBなど)をデータベースに利用することも可能です。とくに,DBに制約がない場合はサポートを受けやすい標準のPostgreSQLを利用するのがよいのではないかと思います。

最後にHerokuでは,リリースするソースコードの管理にGitという分散バージョン管理システムを利用しています。本来は,ソースコードのバージョン管理をするためのソフトウェアですが,それを上手く利用しています。Gitは分散したレポジトリ間でのソースコードのやりとりをするためにありますが,Herokuではユーザ側とHeroku側のソースコードをやりとりをGitで行うのです。Gitを知らない人にとっては習得コストがあるかもしれませんが,本番環境やステージング環境だけでソースコードを変更して後で変更点がわからなくなるといった障害の原因をなくすことができたりもします。Ruby界隈では人気のバージョン管理システムなので学んで損はないはずです。

今回はこの3つの基本機能を利用するサンプルアプリを作ります。

当然ですが,基本機能は拡張することができます。1dynoで処理しきれなくなった場合は,1時間あたり$0.05/1dynoで追加できます。それもコマンド1つでできます。これがHerokuのメリットの1つで,負荷が高まった時だけお金を払うことで簡単に負荷をさばくことができるのです。Herokuを利用していない場合,初期導入時で低コストにするため負荷分散の仕組みが無いときに,一気に大量のリクエストが来た場合処理できない事が起こってしまう可能性があります。Herokuであればサービスを停止することなしに,すべてのアクセスを処理可能になります。

データベース(PostgreSQL)の拡張は,容量や専用・共有サーバによってプランが用意されています。価格テーブルは,こちらにあります。DBのプラン名が日本語を利用していて斬新な名前になっています。少し前まではZilla(ゴジラ?)が最大のプランだったのですが,Mecha(ガンダム?)というさらに大きなプランが追加されました。

図1 価格テーブル

図1 価格テーブル

環境を準備する

それでは,HerokuでRailsアプリを実際に動かしてみましょう。以下の環境をローカルの開発環境に準備してください。

  • Ruby/Rails3が動作すること
  • SQLite3が利用できること
  • Gitが利用できること
  • SSHのキーが設定されていること

RailsやGitの構築は環境ごとに違いもあると思いますので,ここでは割愛し本題のHerokuの解説に集中させていただきます。今回のサンプルでは,ローカルのデータベースはSQLiteを利用します。設定が楽だからです。しかし,本番のアプリを構築する場合は,データベースごとの違いでエラーが発生することがあるのでローカル環境と本番環境で同じデータベースを利用するの良いでしょう。

まずは,Herokuのサイトでユーザ登録を完了してください。Sign up画面からメールアドレスを登録すると,確認メールが送信され,メールの中のURLをクリックしてパスワードを入力すれば登録完了です。もちろん,無料で登録可能です。Herokuを利用するためにはHerokuのgemをインストールする必要があります。以下のコマンドでインストールして下さい。

$ gem install heroku

Herokuは基本的にほとんどの操作をこのgemでインストールされるコマンドで行います。正しくインストールできたか確認のために以下のコマンドを発行してください。このコマンドは,あなたの登録しているアプリ一覧を表示するものです。

$ heroku list
Enter your Heroku credentials.
Email: your_email@example.com
Password: xxxx
Resource not found

アカウントの認証が行われますので,登録したメールアドレスとパスワードを入力してください。始めて登録した方は,1つもアプリがないので “Resource not found” と表示されるはずです。今はそれでOKです。これでherokuのコマンドが利用できるようになりました。

さて,続いてRailsのアプリを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

コメント

  • まったくだめです。

    記載通りでは、全く動きませんね。
    諦めます。

    Commented : #2  roku (2012/04/08, 13:09)

  • 上手くいきませんでした。

    herokuでアプリを作成したいと思い、1週間ほどgoogleで見つかった色々な参考例を試していますが、ことごとく失敗しています。

    今回の記事はとても参考になり、途中までは非常に良い動きをしていたので期待していましたが、
    ・データベースを利用する
    > rails s
    ここでRouting Errorになり、ここから先が、上手くいかなくなってしまいました。

    Commented : #1  kenzy (2012/03/28, 20:45)

コメントの記入