RailsアプリをHerokuにデプロイする手順をわかりやすく解説
はじめに
Railsアプリを完成させても、実際に動かす環境が手元のパソコンだけだと、他の人に使ってもらうことができません。
そこで便利なのがHerokuというクラウドサービスです。
Herokuを使うと、面倒なサーバー構築を行わなくてもWeb上にアプリを公開できます。
初めての方は「サーバー設定って難しそう」と思うかもしれませんが、Herokuはとても簡単に導入できる仕組みを提供しています。
このページでは、RailsアプリをHerokuへデプロイ(ネット上に公開する)するために必要な手順を分かりやすく解説します。
ローカル環境でRailsアプリを作ったあと、Heroku CLIを使ってアプリをインターネット上にアップロードする流れを学んでみましょう。
初心者の方にも理解しやすいよう、具体的な手順と現場で役立つポイントを丁寧にまとめています。
この記事を読むとわかること
- RailsアプリをHerokuで公開するまでの流れ
- Heroku CLIを使ったアプリのアップロード手順
- 実際の現場で注意したいデータベース設定や環境変数管理
- デプロイ時によくあるトラブルの解決策
- デプロイ後に継続的にアプリを管理するためのポイント
RailsアプリをHerokuにデプロイする基本的な流れ
HerokuでRailsアプリを動かすには、まず開発が完了したRailsアプリをGitで管理し、Heroku CLIからアプリをアップロードします。
やること自体は比較的シンプルな構成ですが、データベースの接続設定や環境変数の扱いなど、いくつか押さえておきたい要点があります。
ここでは大まかな手順の流れを示しますので、後ほど詳しいステップを確認してみてください。
- Herokuに登録してアカウントを用意する
- Heroku CLIをインストールする
- ローカルでGitリポジトリを作成(あるいは既存のGitリポジトリを利用)
- Heroku上に新しいアプリを作成
- 必要に応じてRailsアプリ側の設定を変更
- GitコマンドでHerokuへプッシュしてリリース
- データベースや環境変数の設定を整える
これらの流れを理解しておくと、デプロイ時に「どこで失敗しているのか」を見極めやすくなります。
たとえば「Heroku上でDBがうまく動作しない」と感じたら、データベースアドオンの設定やRails側のDB設定ファイルを見直す必要があるかもしれません。
次のセクションでは、Herokuとは何か、そしてRailsアプリを実際にどうやって公開していくのかを詳しく見ていきましょう。
Herokuとは?
Herokuはアプリケーションを簡単に公開し、運用できるクラウドサービスの一つです。
インフラやサーバーの管理をなるべく手軽にし、開発者がアプリの機能に集中できるよう配慮されています。
コマンドラインツールのHeroku CLIを使ってコマンドを入力すれば、Railsアプリをサーバーにアップする作業がスムーズに進みます。
たとえば、Webサーバーの設定を細かく調整する作業や、大規模なサーバーインフラを自前で用意する必要はありません。
Heroku側で自動的に必要なリソースを確保し、Railsアプリを実行してくれます。
そのため、規模の小さい個人プロジェクトからスタートアップ企業のサービスまで、幅広く活用できます。
ただし、運用コストやプランの制限などもあるので、実践で使う場合は自分に合ったプランを確認してみてください。
Herokuの大きな特徴は、管理画面が直感的でわかりやすい点です。
また、複数のアプリを作ったとしても、同一アカウントで簡単に切り替えられます。
こうした使いやすさにより、RailsだけでなくNode.jsやPythonなど、さまざまな言語で書かれたアプリケーションを素早くデプロイできるのが魅力です。
ここからはRailsアプリをHerokuに持っていくための事前準備を見ていきましょう。
デプロイ前に必要な準備
Herokuへアプリをアップするために、まずはローカル環境やアカウント周りの準備を整えましょう。
このステップをしっかり行っておくと、後のデプロイ作業が格段にスムーズになります。
Herokuアカウントの作成
Heroku公式サイトにアクセスし、必要事項を入力してアカウントを作成します。
作成が終わったら、ダッシュボードという管理画面にログインできるようになります。
ログイン後は、ブラウザ上からアプリの新規作成や削除などを行えます。
一方で、後述するHeroku CLIを使えばターミナルから直接操作できますので、併用して使うと効率的です。
Heroku CLIのインストール
Heroku CLIをインストールすると、ターミナル上でheroku
コマンドが使えるようになります。
インストールはOSごとに異なりますが、一般的には公式のインストール手順を参照しながら進めます。
すべての手順を終えたら、ターミナルで
heroku --version
というコマンドを実行して、正しくインストールされているかを確認してみてください。
ローカルでRailsプロジェクトを作成(あるいは既存プロジェクトの準備)
HerokuにアップしたいRailsアプリが手元にある場合は、そのアプリのディレクトリに移動し、Gitリポジトリを管理できるようにします。
もしまだRailsアプリを作っていないなら、あらかじめ新規にRailsプロジェクトを作成し、最低限の動作を確認しておくと安心です。
この段階で「ローカル環境でRailsが動いている」状態になっていれば問題ありません。
Gitのセットアップ
HerokuへのデプロイはGitプッシュをベースに行います。
ですから、ローカルのRailsプロジェクトがGit管理されていない場合は、以下のようなコマンドを使ってリポジトリを初期化してください。
git init
git add .
git commit -m "Initial commit"
すでにGitリポジトリが存在する場合は、このステップは不要です。
Heroku CLIにログインし、今後のHeroku関連コマンドを使えるようにしておきましょう。
ターミナル上で
heroku login
と入力すると、ブラウザが立ち上がり、アカウント情報の入力を促されます。
認証に成功するとターミナル上でHeroku関連のコマンドを実行できるようになります。
Herokuアプリの作成と基本的な設定
アカウントとHeroku CLIの準備ができたら、Heroku上にアプリを作成します。
Herokuのダッシュボードでも可能ですが、ここではターミナルから行う方法を見ていきましょう。
Heroku上でアプリを新規作成
ターミナルでRailsプロジェクトのディレクトリに入り、下記のコマンドを実行します。
heroku create
このコマンドを入力すると、Heroku上に新しいアプリが作成され、リモートリポジトリが設定されます。
コマンド実行後に表示されるURLが、そのまま公開されるアプリのアドレスになります。
アプリの名前を自分で決めたい場合は、heroku create your-app-name
のように指定できます。
Railsアプリの設定確認
Herokuにデプロイする際には、下記のような点をチェックしておきましょう。
Rubyのバージョン指定
RailsアプリのGemfile
にruby
という記述があれば、そのバージョンでHerokuがビルドしてくれます。
ただし、実際には特定のバージョン番号が書かれていないケースでも問題なく動くことがあります。
ここの記述が省略されていると、Heroku側のデフォルトでビルドされますが、Railsの依存ライブラリとの互換性には注意してください。
Gemfile
の整合性
Windows環境だけで使われるようなgemが含まれている場合は、Herokuでエラーになることがあります。
不要なgemがあればコメントアウトするか削除し、本番環境用のgemだけがインストールされるように意識してみましょう。
Procfile
の設定 (必要に応じて)
多くの場合、RailsアプリをHerokuにあげるだけならProcfile
は必須ではありません。
ですが、Webサーバーの挙動を細かく指定したいときは、Procfile
内でコマンドを定義できます。
例として、下記のようにWebサーバーの起動方法を書いておくと、Herokuがスムーズにアプリを起動してくれます。
web: bundle exec puma -C config/puma.rb
この設定がない場合、Herokuがデフォルトでサーバーを立ち上げてくれますが、アプリの構成に応じて変更することも可能です。
実際のデプロイ手順
ここからは、Herokuへのアップロード(デプロイ)の具体的なステップについて解説します。
流れとしては、まずローカルのGitリポジトリに変更があればコミットし、Herokuのリモートへプッシュするだけです。
しかし、Railsアプリ特有の事前準備や確認事項もあるので、一つずつ確認していきます。
アセットのプリコンパイル(必要に応じて)
RailsアプリでCSSやJavaScriptを管理している場合、Heroku上でプリコンパイルを行う設定が必要になることがあります。
Railsの設定によっては、自動的にプリコンパイルを実行してくれますが、もしローカル環境でプリコンパイルを行う場合は、以下のようなコマンドを実行します。
rails assets:precompile
ここで問題が発生した場合、アセットのパスやファイル構成に不備があるかもしれません。
また、Heroku上でも同じ工程が行われるので、エラーなく完了することを事前に確認しておくと安心です。
GitリポジトリをHerokuへプッシュ
ローカルの変更をコミットしたら、Herokuへのプッシュを行います。
git push heroku main
あるいはmaster
ブランチを使っている場合は、
git push heroku master
という形になります。
プッシュが完了すると、Heroku側でビルドが始まり、Railsや関連するgemがインストールされます。
このとき、ログがターミナル上に表示されますので、エラーがないかをチェックしましょう。
ビルドが完了すると、Herokuは自動的にアプリを立ち上げます。
その後、表示されたURLにアクセスすると、Railsアプリが公開されているはずです。
マイグレーションとデータベース設定
Railsアプリでデータベースを利用する場合、HerokuのPostgreSQLアドオンを使うことが多いです。
Herokuアプリを作成した直後に、自動でデータベースが割り当てられる場合があります。
もし割り当てられていないなら、ダッシュボードから追加したり、ターミナルでコマンドを実行して設定しましょう。
データベースの設定が完了したら、以下のコマンドでマイグレーションを実行します。
heroku run rails db:migrate
これにより、Heroku上のデータベーステーブルがローカルでの状態と一致します。
Railsがきちんとデータベースを参照できるようになったら、実際にアプリを開いて動作を確認してみてください。
デプロイ後に気をつけること
Herokuにデプロイが完了したからといって、そこで終わりではありません。
アプリを安定して動かすためには、環境変数(Config Vars)の管理やログの監視など、運用に関わる要素を習慣的にチェックする必要があります。
環境変数(Config Vars)の管理
RailsアプリでAPIキーや機密情報を扱う場合、Heroku上ではConfig Varsを使って環境変数に格納します。
ターミナルから下記のようなコマンドで設定できます。
heroku config:set SECRET_KEY=your_secret_value
Rails側ではENV["SECRET_KEY"]
のように呼び出すことで、本番環境だけに特化した機密情報を管理できます。
Config Varsの管理を誤るとセキュリティリスクにつながるため、Gitリポジトリに書かないようにしましょう。
定期的なログの監視
Herokuでも、Railsのログをターミナル上で確認できます。
heroku logs --tail
このコマンドを使うと、アプリケーションがリアルタイムで出力しているログを監視できます。
エラーや警告が出ていないかをチェックし、問題が起きている場合は早めに対応しておくと安定稼働を実現できます。
マイグレーションの実行忘れ
少しずつ機能を追加していくと、データベースのスキーマが変わることがあります。
そのたびにローカルでマイグレーションを実行するだけで安心しがちですが、Heroku上でも忘れずに同じマイグレーションを実行してください。
反映を忘れると、アプリが正常に動作しなくなる可能性があります。
トラブルシューティング
RailsアプリをHerokuにデプロイする過程では、さまざまなトラブルが発生することがあります。
原因を特定し、適切に対応するにはログをしっかり読むことが大切です。
ここでは代表的なエラー例と対処法をいくつか挙げます。
デプロイエラー
ビルドが失敗する場合、Gemfile
がHeroku環境と合わないか、欠損ファイルがある可能性があります。
特にWindows固有のgemが含まれていたり、Herokuでサポートされていない拡張があったりするとエラーが出ます。
また、RubyやRailsのバージョン指定が曖昧で、Herokuの標準バージョンと合わずにエラーになる例もあるため、Gemfile
の見直しをしてみてください。
Runtimeエラー
デプロイは成功しても、実行時にアプリがエラーを出す場合があります。
このときはheroku logs --tail
を確認し、Railsのエラーログを丁寧に読み解きます。
「環境変数が設定されていない」「DBのテーブルが存在しない」「APIキーが間違っている」など、ログメッセージから原因を探り、該当箇所を修正してから再度デプロイしてみましょう。
アプリが突然動かなくなった場合も、まずはHerokuのログをチェックしてください。
タイミングによってはHeroku側のメンテナンスやプランの変更が影響しているケースもありますが、多くはRailsアプリ側の設定不備が原因になっていることが多いです。
現場で役立つベストプラクティス
RailsアプリをHerokuで運用する場合、単にデプロイするだけでなく、継続的に改善できる体制を作ると本番運用が楽になります。
テストの自動化
小さな変更でも確実にデグレード(以前正常だった機能が壊れること)を防ぐには、自動テストの仕組みがあると安心です。
Gitへのプッシュ時にテストを実行し、通過した場合だけHerokuにデプロイするといった運用を心がけると、アプリの品質を保ちやすくなります。
Heroku Pipelineなどを使うと、ステージング環境→本番環境と段階的にリリースができます。
Gitの運用ルール
開発メンバーが複数人いる場合、ブランチ運用が混乱してしまうとデプロイにミスが起こりやすくなります。
作業ごとにブランチを切って開発し、テスト後にmain(またはmaster)へマージするルールを設けておくと、Herokuへのプッシュが一貫して管理しやすくなります。
また、メンバー全員が同じHerokuリポジトリを扱う場合は、heroku git:remote -a your-app-name
のようにアプリを指定してリモートを追加し、誰でも同じコマンドでプッシュできるようにしておきましょう。
データベースのバックアップ
本番運用中のデータはアプリの価値を左右する重要な要素です。
万が一のトラブルに備えて、Herokuが提供する自動バックアップや、定期的に手動でバックアップを取得する方法を検討すると良いでしょう。
PostgreSQLの場合、Herokuのアドオン機能でバックアップをスケジュール設定することが可能です。
バックアップ取得を怠ると、データ破損時に大きな損失を受ける場合があります。
よくある疑問や不安
初心者がRailsアプリをHerokuにデプロイするとき、どのような疑問や不安があるか、いくつか例を挙げてみます。
ここを理解しておくと、スムーズに本番運用に進めるはずです。
そもそもHerokuでアプリは無料で使えるのか?
サービスの変更により、Herokuでは無料枠がなくなったり、制限がかかったりする場合があります。
プラン内容が変わる可能性もあるため、最新の料金体系を公式サイトで確認するようにしましょう。
無料ではなくなっても、数ドル程度で始められるプランがある場合があります。
Heroku以外のクラウドサービスでも同じようにできる?
Railsアプリをデプロイできるクラウドサービスは多数あります。
しかし、Herokuは操作手順がわかりやすく、ドキュメントやコミュニティが充実しているため、初心者の学習用に向いています。
将来的に大規模なトラフィックをさばく必要が出てきた場合は、Heroku以外の選択肢を検討することもあるでしょう。
デプロイするたびに手動でコマンド打つのは面倒?
チーム開発で継続的デリバリーを目指すなら、CI/CDツールと連携させる方法があります。
ただし、最初のうちはHeroku CLIでのコマンド操作に慣れるだけでも十分です。
運用が安定してきたら、自動デプロイの仕組みを検討するのがおすすめです。
アプリを安定運用するためのポイント
アプリを公開した直後は「とりあえず動いて良かった」と安心してしまいがちですが、運用フェーズに入るとさまざまな課題が出てきます。
ここでは安定運用のために大事なポイントをいくつか挙げます。
アプリのパフォーマンスを定期的にチェック
Herokuの管理画面では、メモリ使用量やレスポンスタイムをモニタリングできます。
アクセスが増えるとレスポンスが遅くなる場合があるので、必要に応じてHerokuのプランを上げたり、コードを最適化したりすることが大切です。
遅延の原因を特定するためにはRailsのログやアプリ内部の計測ツールを活用しましょう。
アドオンを活用した監視と拡張
Herokuにはアプリを拡張するためのアドオンが用意されています。
データベース、キャッシュ、ログ解析、モニタリングなど、多彩なアドオンを導入してアプリの機能強化や監視を行えます。
ただしアドオンの一部は有料で、料金はプランによって異なります。
使いすぎると予想外のコストがかかるので、適切に選定することが大切です。
エラー通知とアラート設定
ユーザーがアプリを使っている最中に重大なエラーが発生すると、大きな機会損失につながる場合があります。
Herokuと連携できるエラー通知サービスを導入すると、エラーが起きた瞬間にチームへ通知を送れます。
Railsにアラートを組み込んでおくことで、障害の発生を早期に発見し、復旧を迅速に行うことが期待できます。
Herokuでの本格的な運用を続ける際は、アプリの負荷やセキュリティにも目を向ける必要があります。
こまめにログを確認してエラーや警告が出ていないかチェックし、問題があれば早めに対処することで、安定してアプリを提供できるようになります。
開発から公開までの全体イメージを再確認しよう
初心者の方にとっては「Railsアプリを作ってHerokuにデプロイする」という流れが最初はやや複雑に感じられるかもしれません。
ただし、プロセスを分解すると、以下のようなステップで整理できます。
- ローカルでRailsアプリを作成し、動作を確認
- Gitリポジトリを初期化してHeroku CLIにログイン
heroku create
でHeroku上にアプリを作成git push heroku main
(またはmaster)でソースコードをプッシュ- Heroku上でビルドされ、Railsが実行される
- 必要に応じてマイグレーションや環境変数の設定を行う
- 本番環境でエラーやパフォーマンスをチェックして必要に応じて修正
この流れに慣れてしまえば、修正して再度デプロイするのも難しくありません。
一度成功させると「次は自動テストを入れよう」「データベースを定期的にバックアップしよう」など、よりアプリを充実させる方向へと意識が向きます。
まとめ
ここまで、RailsアプリをHerokuへデプロイする手順を中心に、初心者の方がつまずきやすいポイントや運用時の注意点を解説してきました。
Herokuはアプリケーションを気軽に公開・運用できるプラットフォームであり、特にRailsとの親和性が高いです。
クラウドサーバーの細かい設定を意識することなくアプリを公開できるため、学習やプロトタイプ開発にも役立ちます。
初めて触れるときは緊張するかもしれませんが、実際に何度かデプロイを試してみると手順のシンプルさを感じられるはずです。
ただし、本番環境での運用においては、環境変数の管理やログ監視、バックアップの設定などを疎かにすると不具合が起きやすくなります。
今回の記事で紹介したベストプラクティスを参考にしながら、地道にアプリの品質と運用体制を整えていきましょう。
RailsアプリをHerokuで公開する経験は、Web開発の全体像を理解するうえでも大いに役立ちます。
まずはシンプルなアプリを一つ成功させ、徐々に機能拡張やCI/CDの導入などを検討してみてください。
皆さんがRailsを使ってHeroku上で魅力的なアプリを作り上げられることを応援しています。