VercelでRailsアプリを動かす! 初心者向け完全ガイド:設定からデプロイまで

投稿日:
更新日:

VercelでRailsアプリを動かす! 初心者向け完全ガイド:設定からデプロイまで

Railsで開発したWebアプリケーションを、Vercelを使って簡単にデプロイしてみませんか? この記事では、Vercelの基本からRailsアプリのデプロイ手順、運用までを丁寧に解説します。Vercelを使うことで、高速なデプロイ、自動スケーリング、簡単な環境構築といったメリットを享受できます。この記事を読めば、あなたもVercelを使ってRailsアプリを公開できるようになります!

Vercelとは?Railsとの相性は?

Vercel(バーセル)は、フロントエンド開発に特化したサーバーレスプラットフォームです。サーバーレス(Serverless)とは、サーバーの管理を気にせずにアプリケーションを開発・実行できるクラウドコンピューティングの形態のことです。Vercelは、特にReact、Next.js、Vue.jsなどのJavaScriptフレームワークとの相性が良いことで知られています。

では、Ruby on Rails(以下Rails)のようなバックエンドフレームワークとはどうでしょうか? Railsは、Webアプリケーションのバックエンド処理(データベースとの連携、APIの提供など)を担当します。Vercelは、Railsアプリを直接ホストすることはできませんが、工夫次第でRailsアプリをVercel上で動かすことが可能です。

具体的には、Rails APIモードでAPIサーバーを構築し、Vercelでホストされたフロントエンド(例えばNext.js)からAPIを呼び出す構成が一般的です。この記事では、VercelでRails APIを動かす方法に焦点を当てて解説します。

VercelでRailsアプリを動かすメリット・デメリット

VercelでRailsアプリを動かすことには、以下のようなメリットとデメリットがあります。

メリット:

  • 高速なデプロイ: Vercelは、GitHubリポジトリと連携することで、コードの変更を自動的にデプロイできます。
  • 自動スケーリング: トラフィックの増加に応じて、自動的にサーバーをスケールアップしてくれます。
  • 簡単な環境構築: 複雑なサーバー設定は不要で、Vercelが自動的に環境を構築してくれます。
  • グローバルCDN: 世界中に分散されたCDN(コンテンツデリバリーネットワーク)を利用することで、高速なWebサイト表示を実現できます。

デメリット:

  • サーバーレス環境の制約: サーバーレス環境には、実行時間やメモリ使用量などの制約があります。
  • コールドスタート: 初めてのリクエストや、しばらくアクセスがない場合に、起動に時間がかかることがあります(コールドスタート)。
  • データベース接続の管理: データベース接続を適切に管理する必要があります。

他のデプロイ方法との比較

Railsアプリのデプロイ方法としては、Vercel以外にも、Heroku、AWS、GCPなどがあります。それぞれの特徴を比較してみましょう。

デプロイ方法メリット
Vercelフロントエンドに特化したサーバーレスプラットフォームで、高速なデプロイが可能。
Heroku簡単にデプロイでき、豊富なアドオンが利用可能。
AWS高い柔軟性とスケーラビリティを提供。
GCPGoogleのインフラを利用した高性能なデプロイが可能。

VercelでRailsアプリを動かすための準備

VercelでRailsアプリを動かすためには、いくつかの準備が必要です。

必要なアカウントの作成

まずは、以下のサービスのアカウントを作成しましょう。

  • Vercel: アプリケーションをデプロイするためのプラットフォームです。
  • GitHub: コードを管理するためのプラットフォームです。VercelはGitHubと連携して、コードの変更を自動的にデプロイできます。

Railsアプリの準備

既存のRailsアプリを使うか、新しいRailsアプリを作成するかを選択します。

既存のRailsアプリを使う場合:

  1. RailsアプリのコードがGitHubリポジトリにプッシュされていることを確認してください。

新しいRailsアプリを作成する場合:

  1. ターミナルを開き、以下のコマンドを実行して新しいRailsアプリを作成します。
rails new my-rails-app --api -T # APIモードでテストフレームワークなしでRailsアプリを作成
cd my-rails-app

--apiオプションは、APIサーバーとしてRailsアプリを構築するために使用します。-Tオプションは、テストフレームワークをスキップします。

  1. 作成したRailsアプリのディレクトリに移動し、GitHubリポジトリを作成して、コードをプッシュします。

Rubyのバージョン管理

Rubyのバージョン管理には、rbenvやrvmなどのツールを使用することをおすすめします。これらのツールを使うことで、プロジェクトごとに異なるRubyのバージョンを簡単に切り替えることができます。

rbenvを使う場合:

  1. rbenvをインストールします。
brew install rbenv # macOSの場合
  1. Railsアプリで使用するRubyのバージョンをインストールします。
rbenv install 3.2.2 # Ruby 3.2.2をインストールする場合
  1. Railsアプリのディレクトリで、使用するRubyのバージョンを指定します。
rbenv local 3.2.2

rvmを使う場合:

  1. rvmをインストールします。
curl -sSL https://get.rvm.io | bash -s stable
  1. Railsアプリで使用するRubyのバージョンをインストールします。
rvm install 3.2.2 # Ruby 3.2.2をインストールする場合
  1. Railsアプリのディレクトリで、使用するRubyのバージョンを指定します。
rvm use 3.2.2

Node.jsのインストール

Vercelのビルドプロセスでは、Node.jsが必要になります。Node.jsは、JavaScriptの実行環境です。以下の手順でNode.jsをインストールしてください。

  1. Node.jsの公式サイトから、Node.jsをダウンロードしてインストールします。
    (https://nodejs.org/)
  2. ターミナルを開き、Node.jsが正しくインストールされていることを確認します。
node -v
npm -v

上記のコマンドを実行して、Node.jsとnpm(Node Package Manager)のバージョンが表示されれば、インストールは成功です。

Vercelへのデプロイ設定

VercelにRailsアプリをデプロイするためには、いくつかの設定ファイルを作成する必要があります。

vercel.jsonの設定

vercel.jsonは、Vercelの設定ファイルです。このファイルで、ルーティングや環境変数などを設定します。Railsアプリのルートディレクトリにvercel.jsonを作成し、以下の内容を記述します。

{
  "version": 2,
  "builds": [
    {
      "src": "Procfile", // Procfileを指定
      "use": "@vercel/ruby" // Rubyのランタイムを使用
    }
  ],
  "routes": [
    {
      "src": "/(.*)",
      "dest": "/api/$1" // すべてのリクエストを/apiにルーティング
    }
  ],
  "env": {
    "RAILS_ENV": "production", // Railsの環境変数を設定
    "DATABASE_URL": "YOUR_DATABASE_URL" // データベースのURLを設定
  }
}
  • version: Vercelの設定ファイルのバージョンを指定します。
  • builds: ビルドの設定を指定します。srcにはProcfileを指定し、useには@vercel/rubyを指定します。@vercel/rubyは、VercelでRubyのランタイムを使用するための設定です。
  • routes: ルーティングの設定を指定します。上記の設定では、すべてのリクエストを/apiにルーティングしています。
  • env: 環境変数を設定します。RAILS_ENVにはproductionを指定し、DATABASE_URLにはデータベースのURLを設定します。

Procfileの作成

Procfile(プロファイル)は、アプリケーションの起動コマンドを記述するファイルです。RailsアプリのルートディレクトリにProcfileを作成し、以下の内容を記述します。

web: bundle exec rails server -p $PORT
  • web: Webサーバーの起動コマンドを指定します。bundle exec rails server -p $PORTは、Railsサーバーを起動し、$PORTで指定されたポートでリッスンします。$PORTは、Vercelが自動的に設定する環境変数です。

データベースの設定

VercelでRailsアプリを動かすためには、データベースの設定が必要です。PostgreSQLなどのデータベースを使用することをおすすめします。

  1. データベースを作成し、データベースのURLを取得します。
  2. vercel.jsonenvセクションに、DATABASE_URLを設定します。

Vercel CLIのインストールと設定

Vercel CLI(コマンドラインインターフェース)は、Vercelをコマンドラインから操作するためのツールです。以下の手順でVercel CLIをインストールし、設定してください。

  1. Vercel CLIをインストールします。
npm install -g vercel
  1. ターミナルを開き、vercelコマンドを実行して、Vercelにログインします。
vercel login

VercelのWebサイトが開き、ログインを求められます。ログイン後、Vercel CLIが使用できるようになります。

Vercelへのデプロイ手順

Vercelへのデプロイは、以下の手順で行います。

  1. GitHubリポジトリとVercelプロジェクトを連携させます。
  2. Vercel CLIを使ってデプロイします。

GitHubリポジトリとの連携

  1. VercelのWebサイトにログインし、新しいプロジェクトを作成します。
  2. GitHubリポジトリを選択し、Vercelプロジェクトと連携させます。

Vercel CLIを使ったデプロイ

  1. ターミナルを開き、Railsアプリのルートディレクトリに移動します。
  2. 以下のコマンドを実行して、Vercelにデプロイします。
vercel

Vercel CLIが、自動的にRailsアプリをビルドし、デプロイします。

デプロイの監視とトラブルシューティング

デプロイの状況は、VercelのWebサイトで確認できます。デプロイが失敗した場合は、ログを確認して、原因を特定し、修正してください。

VercelでのRailsアプリ運用

VercelでRailsアプリを運用する際には、以下の点に注意してください。

  • 環境変数の管理: 環境変数は、VercelのWebサイトで管理できます。
  • カスタムドメインの設定: カスタムドメインを設定することで、独自のドメインでRailsアプリを公開できます。
  • SSL証明書の設定: SSL証明書を設定することで、Webサイトのセキュリティを向上させることができます。
  • ログの確認と分析: ログを確認することで、Railsアプリの問題を特定し、解決することができます。
  • 継続的インテグレーション/継続的デリバリー (CI/CD) の設定: CI/CDを設定することで、コードの変更を自動的にデプロイすることができます。

VercelでRailsアプリを動かす際の注意点

VercelでRailsアプリを動かす際には、以下の点に注意してください。

  • サーバーレス環境の制約: サーバーレス環境には、実行時間やメモリ使用量などの制約があります。
  • コールドスタートの問題: 初めてのリクエストや、しばらくアクセスがない場合に、起動に時間がかかることがあります(コールドスタート)。
  • データベース接続の管理: データベース接続を適切に管理する必要があります。
  • アセットパイプラインの最適化: アセットパイプラインを最適化することで、Webサイトの表示速度を向上させることができます。

まとめ

この記事では、VercelでRailsアプリを動かす方法について解説しました。

  • Vercelは、フロントエンド開発に特化したサーバーレスプラットフォームです。
  • RailsアプリをVercelで動かすためには、vercel.jsonProcfileの設定が必要です。
  • Vercel CLIを使って、Railsアプリを簡単にデプロイできます。
  • VercelでRailsアプリを運用する際には、環境変数の管理、カスタムドメインの設定、SSL証明書の設定、ログの確認と分析、CI/CDの設定などに注意してください。

次のステップとして、Vercelの高度な機能を学習したり、Railsアプリのパフォーマンスを最適化したりすることをおすすめします。

関連リソース: