Rails 8アプリをRender.comにデプロイする完全ガイド【初心者向け】
はじめに - デプロイってそもそも何?
「デプロイっていったいなんですか?」って、よーく聞かれます。
生徒さんの多くは、「HTMLファイルをサーバーにアップロードするのと同じでしょ?」って思っているんですね。でも実際は全然違うんです。今日はそこから丁寧に説明していきますよ。
デプロイとは?ローカルと同じ環境をリモートに作ること
あなたは今、自分のPC(ローカル環境)でbin/rails server
を実行して、localhost:3000
でRailsアプリが動いているはずです。デプロイとは、このローカル環境と全く同じ状態を、インターネット上のサーバー(リモート環境)に作り上げることです。
ローカル環境(あなたのPC)の構成
まず、あなたのPCでRailsアプリが動いている環境を整理してみましょう。
あなたのPC(ローカル環境)
┌─────────────────────────────────────┐
│ ┌─────────────┐ │
│ │ Ruby │ ← プログラミング言語 │
│ │ 3.3.8 │ │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ SQLite │ ← データベース │
│ │ development │ │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Puma │ ← アプリサーバー │
│ │ (Rails内蔵) │ │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Rails アプリ │ ← あなたのコード │
│ │ portfolio │ │
│ └─────────────┘ │
│ │
│ bin/rails server 実行中 │
│ http://localhost:3000 │
└─────────────────────────────────────┘
つまり、あなたのPCには以下が揃っています: - Ruby言語: Railsを動かすためのプログラミング言語 - データベース: ユーザー情報や投稿データを保存する場所 - アプリケーションサーバー: RailsコードをWebサーバーとして動かすソフト - あなたのRailsコード: controllers、models、viewsなど
リモート環境(クラウドサーバー)に必要なもの
デプロイとは、この構成を全く同じようにクラウド上に再現することです。
クラウドサーバー(リモート環境)
┌─────────────────────────────────────┐
│ ┌─────────────┐ │
│ │ Ruby │ ← 同じバージョン │
│ │ 3.3.8 │ が必要 │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ PostgreSQL │ ← 本番用DB │
│ │ production │ SQLiteは使えない │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Puma │ ← 同じアプリサーバー │
│ │ (本番設定) │ │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Nginx │ ← Webサーバー │
│ │ (リバース │ (高速化のため) │
│ │ プロキシ) │ │
│ └─────────────┘ │
│ ┌─────────────┐ │
│ │ Rails アプリ │ ← あなたのコードを │
│ │ portfolio │ コピー │
│ └─────────────┘ │
│ │
│ 24時間365日稼働 │
│ https://your-app.onrender.com │
└─────────────────────────────────────┘
HTMLアップロードとの決定的な違い
多くの人が最初に混乱するのは、「HTMLファイルのアップロードと何が違うの?」という点です。
HTMLファイルのアップロード
あなたのPC レンタルサーバー
┌─────────────┐ ┌─────────────┐
│ index.html │ FTP │ index.html │
│ style.css │ ─────────→ │ style.css │
│ script.js │ │ script.js │
└─────────────┘ └─────────────┘
↓
┌─────────────────────┐
│ Apache/Nginx が │
│ ファイルをそのまま │
│ ブラウザに送信 │
└─────────────────────┘
この場合、サーバーに必要なのはWebサーバー(Apache/Nginx)だけです。ファイルを置けば、すぐに公開できます。
Railsアプリのデプロイ
あなたのPC クラウドサーバー
┌─────────────┐ ┌─────────────────────────┐
│ Rails │ Git │ 1. Ruby環境構築 │
│ ソースコード │ ─────────→ │ 2. データベースセットアップ│
│ │ │ 3. ライブラリインストール │
│ │ │ 4. アプリケーション配置 │
│ │ │ 5. Webサーバー設定 │
│ │ │ 6. 全体の起動と連携 │
└─────────────┘ └─────────────────────────┘
↓
┌─────────────────────────┐
│ ユーザーリクエスト │
│ ↓ │
│ Nginx → Puma → Rails │
│ ↓ │
│ データベースアクセス │
│ ↓ │
│ 動的ページ生成・返却 │
└─────────────────────────┘
Railsアプリの場合、複数のソフトウェアが連携して動作する必要があります。そのため、単純なファイルコピーではなく、環境全体の構築が必要になるのです。
現代のデプロイサービスが解決してくれること
「こんな複雑な環境構築、初心者には無理でしょ?」と思うかもしれません。
でも大丈夫です。Render.comのような現代のクラウドサービスが、これらの複雑な作業を全て自動化してくれます。
私たちがやること Render.comが自動でやってくれること
┌─────────────────┐ ┌─────────────────────────────┐
│ 1. 設定ファイル準備│ │ 1. Ruby環境の構築 │
│ 2. GitHubアップロード│ ──→ │ 2. PostgreSQLの作成・設定 │
│ 3. Render.com設定 │ │ 3. Nginx + Pumaの設定 │
│ 4. デプロイボタン │ │ 4. SSL証明書の設定 │
└─────────────────┘ │ 5. ドメインの設定 │
│ 6. 監視・自動復旧の設定 │
└─────────────────────────────┘
この記事では、その「設定ファイルの準備」を中心に、初心者でも確実にデプロイできる方法を説明していきます!
1. なぜRender.comを選んだのか?デプロイサービスの現状
1.1 Herokuの有料化で選択肢を探すことに
以前はRailsのデプロイといえば「Heroku」が定番でした。初心者でも無料で簡単にデプロイできるということで、多くのプログラミングスクールや教材でも使われていたんです。ところが2022年11月に、Herokuの無料プランが終了してしまいました。
Herokuの変化
2022年10月まで 2022年11月以降
┌─────────────┐ ┌─────────────┐
│ ✅ 無料プラン │ → │ ❌ 有料のみ │
│ ✅ 簡単設定 │ │ ✅ 簡単設定 │
│ ✅ 初心者向け │ │ 💰 月$7〜 │
└─────────────┘ └─────────────┘
そこで「じゃあ、他にどんな選択肢があるの?」ということになったわけです。調べてみると、いくつかの有力な候補が見つかりました。Railway.appはシンプルで使いやすいのですが、無料枠が少し制限的です。Fly.ioは高性能で評判も良いのですが、設定がやや複雑で初心者には少しハードルが高い感じがしました。
1.2 Render.comの評判を調べてみた
実際にRender.comの評判を調べてみると、かなり良好でした。日本語ブログでも「Herokuの代替として最適」という記事が多数見つかりましたし、「設定が簡単」「無料プランでも実用的」という声が目立ちました。
評価ポイント比較
┌─────────────────┬─────────┬─────────┬─────────┐
│ 項目 │Render.com│Railway │ Fly.io │
├─────────────────┼─────────┼─────────┼─────────┤
│ 設定の簡単さ │ ⭐⭐⭐ │ ⭐⭐⭐ │ ⭐⭐ │
│ 無料枠の充実度 │ ⭐⭐⭐ │ ⭐⭐ │ ⭐⭐ │
│ Rails対応 │ ⭐⭐⭐ │ ⭐⭐ │ ⭐⭐ │
│ 日本語情報 │ ⭐⭐ │ ⭐ │ ⭐ │
│ 初心者向け │ ⭐⭐⭐ │ ⭐⭐ │ ⭐ │
└─────────────────┴─────────┴─────────┴─────────┘
最終的にRender.comを選んだ理由は、初心者にとって一番ハードルが低いと判断したからです。別に営業されたわけでも、アフィリエイト収入があるわけでもありません。純粋に「初心者が一番つまずきにくそう」という観点で選択しました。
2. 【重要】GitHubとの連動について理解しよう
2.1 Render.comの最大の特徴:自動デプロイ
実は、Render.comの一番便利な機能は「GitHubと連動した自動デプロイ」なんです。これを最初に理解しておくと、後の作業がスムーズになります。
従来のデプロイ方法だと、コードを変更するたびに手動でサーバーにアップロードする必要がありました。でもRender.comなら、GitHubにpushするだけで自動的にデプロイされます。
従来の手動デプロイ vs Render.comの自動デプロイ
┌─────────────────────┐ ┌─────────────────────┐
│ 従来の方法 │ │ Render.comの方法 │
│ │ │ │
│ 1. コード修正 │ │ 1. コード修正 │
│ 2. ファイル圧縮 │ │ 2. git add . │
│ 3. FTPアップロード │ │ 3. git commit │
│ 4. サーバー設定変更 │ │ 4. git push │
│ 5. サービス再起動 │ │ ↓ │
│ │ │ 5. 🤖 自動デプロイ │
│ 😰 毎回手作業で面倒 │ │ 😊 pushするだけ! │
└─────────────────────┘ └─────────────────────┘
2.2 具体的な連動の仕組み
GitHubとRender.comを連携すると、以下のような流れで自動デプロイが実行されます:
自動デプロイの仕組み
┌─────────────────────────────────────────────────┐
│ 👨💻 あなた(開発者) │
│ ┌─────────────────────────────────────────────┐ │
│ │ 1. ローカルでコード修正 │ │
│ │ 2. git add . && git commit │ │
│ │ 3. git push origin main │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ 🐙 GitHub │
│ ┌─────────────────────────────────────────────┐ │
│ │ main ブランチが更新された! │ │
│ │ Render.comに「更新されたよ」と通知 │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ 🚀 Render.com │
│ ┌─────────────────────────────────────────────┐ │
│ │ 「お、更新されたな。デプロイ開始!」 │ │
│ │ 1. 最新コードをGitHubから取得 │ │
│ │ 2. bin/render-build.sh 実行 │ │
│ │ 3. アプリケーション再起動 │ │
│ │ 4. デプロイ完了! │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ 🌐 本番環境 │
│ ┌─────────────────────────────────────────────┐ │
│ │ https://your-app.onrender.com │ │
│ │ 新しいバージョンが公開される │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
2.3 これは「継続的デプロイメント(CD)」という仕組み
この仕組みは、プロの開発現場でも使われている「継続的デプロイメント(Continuous Deployment, CD)」という手法です。コードの変更が自動的に本番環境に反映されるので、開発スピードが格段に向上します。
継続的デプロイメントの利点
┌─────────────────────────────────────────────────┐
│ ✅ 手動作業の削減 │
│ git push するだけでデプロイ完了 │
│ │
│ ✅ ヒューマンエラーの防止 │
│ 毎回同じ手順で自動実行されるため安全 │
│ │
│ ✅ 迅速なフィードバック │
│ 数分でユーザーに新機能を届けられる │
│ │
│ ✅ 開発に集中できる │
│ デプロイ作業にかかる時間を開発に充てられる │
└─────────────────────────────────────────────────┘
2.4 「デプロイボタン」はいつ使うの?
Render.comには手動でデプロイを実行する「Manual Deploy」ボタンもありますが、これは以下の場面でのみ使用します:
- 初回のデプロイ時(GitHubとの連携設定完了後)
- 環境変数を変更した後に強制的に再起動したい時
- 何らかの理由で自動デプロイが失敗した時の手動リトライ
基本的には、普段の開発では git push するだけで自動デプロイされるので、手動ボタンを押す必要はありません。
3. 【事前準備】Render.comアカウントを作成しよう
2.1 Render.comにサインアップ
まず https://render.com にアクセスしてください。サインアップ方法は2つあります。
サインアップ方法の選択
┌─────────────────────┐ ┌─────────────────────┐
│ GitHubサインアップ │ │ メールサインアップ │
│ ┌─────────────────┐ │ │ ┌─────────────────┐ │
│ │ ✅ 設定が早い │ │ │ │ ✅ 既存アカウント不要│ │
│ │ ✅ パスワード不要 │ │ │ │ ❌ メール認証必要 │ │
│ │ ✅ 連携が楽 │ │ │ │ ❌ パスワード管理 │ │
│ └─────────────────┘ │ │ └─────────────────┘ │
│ おすすめ! │ │ │
└─────────────────────┘ └─────────────────────┘
私はGitHubアカウントでのサインアップをお勧めしています。理由は、後でリポジトリ連携が楽になることと、パスワードを新たに覚える必要がないことです。
2.2 アカウント作成の流れ
GitHubサインアップの流れ
┌─────────────────────────────────────────────────┐
│ 1. "Sign up with GitHub" クリック │
│ ↓ │
│ 2. GitHubにログイン │
│ ↓ │
│ 3. Render.comへのアクセス許可 │
│ ↓ │
│ 4. ダッシュボード表示 → 完了! │
└─────────────────────────────────────────────────┘
認証が完了すると、Render.comのダッシュボードが表示されます。「Welcome to Render」のような画面が表示されれば、アカウント作成は成功です。
3. 【準備編】Railsアプリをデプロイ用に設定しよう
3.1 プロジェクト構造の確認
まず、あなたのRailsプロジェクトがどんな構成になっているか確認しましょう。
ls -la
実行すると、プロジェクトの構成が2つのパターンのいずれかになっているはずです。
パターン1: シンプル構成 パターン2: 入れ子構成
portfolio/ portfolio/
├── Gemfile ← ここにある ├── portfolio_rails/ ← この中にRailsアプリ
├── app/ │ ├── Gemfile ← ここにある
├── config/ │ ├── app/
└── ... │ └── config/
├── images/
└── js/
3.2 デプロイ用スクリプトを作成しよう
なぜスクリプトが必要なのか?
Render.comは「様々な言語のアプリを動かせる汎用的なクラウドサービス」です。そのため、Render.comは「あなたのRailsアプリをどうやって動かすか」を知りません。
Render.comの立場
┌─────────────────────────────────────────────────┐
│ Render.com: 「コードは受け取ったけど...」 │
│ │
│ 🤔 「これはRailsアプリらしいけど」 │
│ 🤔 「どうやって動かせばいいの?」 │
│ 🤔 「どんな準備が必要なの?」 │
│ │
│ そこで必要になるのが「作業手順書」 │
│ ↓ │
│ 📝 bin/render-build.sh │
│ 「こんな手順でアプリを動かしてください」 │
└─────────────────────────────────────────────────┘
いつ・どこで実行されるのか?
このスクリプトは、Render.comのサーバー上で、デプロイ時に自動実行されます。
デプロイ時の実行タイミング
┌─────────────────────────────────────────────────┐
│ あなたがデプロイボタンを押す │
│ ↓ │
│ Render.comサーバー内で以下が順番に実行: │
│ │
│ 1. GitHubからコードをダウンロード │
│ 2. 📝 bin/render-build.sh を実行 ← ここ! │
│ └── bundle install │
│ └── assets:precompile │
│ └── assets:clean │
│ └── db:migrate │
│ 3. bin/rails server で起動 │
│ ↓ │
│ デプロイ完了!アプリが公開される │
└─────────────────────────────────────────────────┘
Build Commandとの関係
後ほどRender.comの設定で「Build Command」に bin/render-build.sh
を指定します。これにより、Render.comは「アプリを動かす前に、このスクリプトを実行すればいいんだな」と理解できるようになります。
設定の流れ
┌─────────────────────────────────────────────────┐
│ 1. 今: スクリプトファイルを作成 │
│ bin/render-build.sh │
│ ↓ │
│ 2. 後: Render.comの設定画面で指定 │
│ Build Command: bin/render-build.sh │
│ ↓ │
│ 3. デプロイ時: Render.comが自動実行 │
│ 「このスクリプトを実行してからアプリ起動」 │
└─────────────────────────────────────────────────┘
では、実際にファイルを作成しましょう:
touch bin/render-build.sh
次に、以下の内容をファイルに書き込みます:
#!/usr/bin/env bash
set -o errexit
bundle install
bin/rails assets:precompile
bin/rails assets:clean
bin/rails db:migrate
各コマンドの役割を図解で説明しますね:
デプロイスクリプトの実行フロー
┌─────────────────────────────────────────────────┐
│ bundle install │
│ ┌─────────────────────────────────────────────┐ │
│ │ Gemfile → 必要なライブラリをダウンロード │ │
│ │ 料理の材料を買い揃える │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ bin/rails assets:precompile │
│ ┌─────────────────────────────────────────────┐ │
│ │ CSS・JS → 最適化・圧縮 │ │
│ │ 料理を美しく盛り付ける │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ bin/rails assets:clean │
│ ┌─────────────────────────────────────────────┐ │
│ │ 古いファイル → 削除 │ │
│ │ 使わなくなったものを捨てる │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ bin/rails db:migrate │
│ ┌─────────────────────────────────────────────┐ │
│ │ データベース → 最新構造に更新 │ │
│ │ 倉庫の棚を整理整頓 │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
ファイルを保存したら、実行権限を付与します:
chmod +x bin/render-build.sh
3.3 SQLiteからPostgreSQLに対応させよう
なぜPostgreSQLが必要かというと、クラウドサービス(Render.com)では、SQLiteが使えないからです。
データベースの違い
┌─────────────────────┐ ┌─────────────────────┐
│ SQLite │ │ PostgreSQL │
│ ┌───────────────┐ │ │ ┌─────────────────┐ │
│ │ 📁 ファイル型 │ │ │ │ 🏢 サーバー型 │ │
│ │ 1人用の本棚 │ │ │ │ 図書館システム │ │
│ │ 開発向け │ │ │ │ 本番運用向け │ │
│ │ 軽量・簡単 │ │ │ │ 高性能・多機能 │ │
│ └───────────────┘ │ │ └─────────────────┘ │
│ ローカル環境で使用 │ │ 本番環境で使用 │
└─────────────────────┘ └─────────────────────┘
現在のGemfileを修正して、環境に応じて使い分けるようにします:
group :development, :test do
gem 'sqlite3' # 家庭用(あなたのPC)では小さな冷蔵庫
end
group :production do
gem 'pg' # レストラン(本番環境)では大きな冷蔵庫
end
bundle install
database.ymlを設定しよう
database.yml
は「どのデータベースを使うか」を決める設定ファイルです。
cat config/database.yml
現在のproduction設定を以下に置き換えてください:
production:
primary:
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
url: <%= ENV['DATABASE_URL'] %>
cache:
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
url: <%= ENV['DATABASE_URL'] %>
migrations_paths: db/cache_migrate
queue:
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
url: <%= ENV['DATABASE_URL'] %>
migrations_paths: db/queue_migrate
cable:
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
url: <%= ENV['DATABASE_URL'] %>
migrations_paths: db/cable_migrate
Rails 8では、1つのアプリで複数の機能を使うため、それぞれ専用のデータベース接続が必要なんです:
Rails 8のマルチデータベース構成
┌─────────────────────────────────────────────────┐
│ Railsアプリ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │primary │ │ cache │ │ queue │ │ cable │ │
│ │メインDB │ │キャッシュ│ │ジョブ管理│ │WebSocket│ │
│ │ユーザー │ │一時保存 │ │非同期処理│ │リアルタイム│ │
│ │投稿データ│ │高速化 │ │時間のかかる│ │通信 │ │
│ └─────────┘ └─────────┘ │処理 │ └─────────┘ │
│ └─────────┘ │
└─────────────────────────────────────────────────┘
3.4 Rails認証キーの準備
Railsは重要なデータを暗号化するために、秘密の鍵を使用します。現在のmaster.keyを確認してみましょう:
cat config/master.key
正常な場合は32文字程度が表示されます。異常に長い場合は再生成が必要です:
master.keyの状態チェック
┌─────────────────────┐ ┌─────────────────────┐
│ 正常(32文字) │ │ 異常(128文字〜) │
│ a1b2c3d4e5f6g7h8... │ │ bb4b4a1fb69cafe5... │
│ ↓ │ │ ↓ │
│ そのまま使用 │ │ 再生成必要 │
└─────────────────────┘ └─────────────────────┘
再生成が必要な場合:
# 古いファイルを削除
rm config/master.key config/credentials.yml.enc
# 新しい認証情報を生成
EDITOR="code --wait" bin/rails credentials:edit
3.5 変更をGitHubにアップロードしよう
これまでの変更をGitHubに保存しましょう。Gitの操作フローを図解で説明します:
Git操作の流れ
┌─────────────────────────────────────────────────┐
│ 1. git status → 変更ファイルを確認 │
│ │
│ 2. git add . → ステージングエリアに追加 │
│ ┌─────────────────┐ add ┌──────────────┐ │
│ │ ワーキング │ ────→ │ステージング │ │
│ │ ディレクトリ │ │エリア │ │
│ └─────────────────┘ └──────────────┘ │
│ │
│ 3. git commit → ローカルリポジトリに記録 │
│ ┌──────────────┐ commit ┌──────────────┐ │
│ │ステージング │ ────────→ │ローカル │ │
│ │エリア │ │リポジトリ │ │
│ └──────────────┘ └──────────────┘ │
│ │
│ 4. git push → GitHubに送信 │
│ ┌──────────────┐ push ┌──────────────┐ │
│ │ローカル │ ────────→ │GitHub │ │
│ │リポジトリ │ │リポジトリ │ │
│ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────┘
実際のコマンド実行:
git status
git add .
git commit -m "Configure for Render.com deployment"
git push origin main
4. 【Render.com設定編】データベースとアプリを作成しよう
4.1 PostgreSQLデータベースを作成しよう
Render.comでは、まずデータベースを作ってから、Webアプリを作成します。
作成順序が重要な理由
┌─────────────────────────────────────────────────┐
│ 1. データベース作成(倉庫を借りる) │
│ ┌─────────────────────────────────────────┐ │
│ │ 🏪 PostgreSQL Database │ │
│ │ データを保存する倉庫 │ │
│ └─────────────────────────────────────────┘ │
│ ↓ │
│ 2. Webアプリ作成(レストランを開店) │
│ ┌─────────────────────────────────────────┐ │
│ │ 🍽️ Rails Web App │ │
│ │ 倉庫にアクセスするレストラン │ │
│ └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
まず https://dashboard.render.com にログインして、「New」→「PostgreSQL」を選択します。
設定項目:
- Name: portfolio-database
- Region: Singapore
(日本に最も近い)
- Instance Type: Free
Regionの選択理由
┌─────────────────────────────────────────────────┐
│ 世界地図 │
│ │
│ 🇺🇸 Oregon 🇸🇬 Singapore 🇪🇺 Frankfurt │
│ (遠い) (近い!) (遠い) │
│ │
│ 🇯🇵 日本からの距離と速度: │
│ Oregon : 約9,000km → 遅い │
│ Singapore : 約5,000km → 速い ⭐ │
│ Frankfurt : 約9,000km → 遅い │
└─────────────────────────────────────────────────┘
4.2 データベース接続情報を取得しよう
データベースが作成できたら、「住所」を取得します。
データベース接続情報の取得
┌─────────────────────────────────────────────────┐
│ 1. 作成したデータベースをクリック │
│ ↓ │
│ 2. 「Connections」タブをクリック │
│ ↓ │
│ 3. 「Internal Database URL」をコピー 📋 │
│ postgres://user:pass@host:port/db │
│ ↓ │
│ 4. 後でWebアプリの環境変数に設定 │
└─────────────────────────────────────────────────┘
5. 【いよいよ本番】Webサービスを作成してデプロイしよう!
5.1 GitHubリポジトリと連携しよう
GitHubとRender.comの連携
┌─────────────────────────────────────────────────┐
│ GitHub Repository │
│ ┌─────────────────────────────────────────────┐ │
│ │ 📁 portfolio │ │
│ │ ├── app/ │ │
│ │ ├── config/ │ │
│ │ ├── Gemfile │ │
│ │ └── bin/render-build.sh │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ 連携 │
│ Render.com │
│ ┌─────────────────────────────────────────────┐ │
│ │ 🚀 Web Service │ │
│ │ コードを自動取得してデプロイ │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
Dashboard画面で「New」→「Web Service」→「Git Provider」を選択し、portfolioリポジトリを見つけてクリックします。
5.2 重要設定項目
Root Directoryの設定は、プロジェクト構造によって変わります:
Root Directory設定
┌─────────────────────┐ ┌─────────────────────┐
│ シンプル構成 │ │ 入れ子構成 │
│ │ │ │
│ portfolio/ │ │ portfolio/ │
│ ├── Gemfile ⭐ │ │ ├── portfolio_rails/│
│ ├── app/ │ │ │ ├── Gemfile ⭐ │
│ └── config/ │ │ │ └── app/ │
│ │ │ └── images/ │
│ Root Directory: │ │ Root Directory: │
│ 空欄のまま │ │ portfolio_rails │
└─────────────────────┘ └─────────────────────┘
5.3 環境変数を設定しよう
環境変数は「秘密の設定情報」を保存する場所です。
環境変数の役割
┌─────────────────────────────────────────────────┐
│ │
│ DATABASE_URL = 倉庫の住所 🏪 │
│ RAILS_MASTER_KEY = 金庫の鍵 🔐 │
│ WEB_CONCURRENCY = スタッフ数 👥 (2人) │
│ │
│ ┌─────────────────────────────────────────────┐ │
│ │ 安全な金庫 │ │
│ │ 🔒 誰にも見えない場所に保管 │ │
│ │ アプリが起動時に自動で取得 │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
設定する3つの環境変数:
- DATABASE_URL: 先ほどコピーしたInternal Database URL
- RAILS_MASTER_KEY: config/master.keyの内容(32文字)
- WEB_CONCURRENCY:
2
5.4 いよいよデプロイ!
すべての設定ができたら、「Deploy Web Service」ボタンをクリックしてください。
6. 【ドキドキの瞬間】デプロイログを見守ろう
6.1 デプロイの流れを理解しよう
デプロイが開始されると、リアルタイムでログが表示されます。これは、レストランの開店準備を実況中継で見ているようなものです。
デプロイの7段階プロセス
┌─────────────────────────────────────────────────┐
│ 1. 📥 ソースコードクローン │
│ GitHubからレシピ本をコピー │
│ ↓ │
│ 2. 🛠️ Ruby環境セットアップ │
│ 調理器具(コンロ・オーブン)を準備 │
│ ↓ │
│ 3. 📦 bundle install │
│ レシピの材料を全部買い揃える │
│ ↓ │
│ 4. 📝 ビルドスクリプト実行 │
│ 作業手順書に従って下準備開始 │
│ ↓ │
│ 5. 🎨 アセットプリコンパイル │
│ 料理を美しく盛り付ける │
│ ↓ │
│ 6. 🗃️ データベースマイグレーション │
│ 倉庫の棚を整理整頓 │
│ ↓ │
│ 7. 🚀 サーバー起動 │
│ レストラン開店!看板点灯 │
└─────────────────────────────────────────────────┘
6.2 成功の確認
デプロイが成功すると:
成功時の表示
┌─────────────────────────────────────────────────┐
│ ✅ ステータス: Live │
│ 🟢 緑色のチェックマーク │
│ 🌐 https://portfolio-app.onrender.com │
│ │
│ これがあなた専用のURLです! │
└─────────────────────────────────────────────────┘
6.3 初回アクセス時の注意
無料プランでは、アプリがスリープする仕組みがあります:
スリープ機能の仕組み
┌─────────────────────────────────────────────────┐
│ 15分間アクセスなし │
│ ↓ │
│ 😴 アプリがスリープ │
│ (節電のため自動停止) │
│ ↓ │
│ 👤 誰かがアクセス │
│ ↓ │
│ ⏰ 30秒〜1分で起動 │
│ ↓ │
│ ✅ 通常通り動作 │
└─────────────────────────────────────────────────┘
7. 【トラブルシューティング】「うまくいかない!」時の対処法
7.1 よくあるエラーと対処法
初心者の方がよく遭遇するエラーパターンを図解で説明します:
トラブルシューティングの3段階アプローチ
┌─────────────────────────────────────────────────┐
│ レベル1: 基本確認 🔍 │
│ ┌─────────────────────────────────────────────┐ │
│ │ ✓ GitHubリポジトリ最新? │ │
│ │ ✓ Root Directory正しい? │ │
│ │ ✓ 環境変数3つ設定済み? │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ レベル2: 詳細確認 🔧 │
│ ┌─────────────────────────────────────────────┐ │
│ │ ✓ RAILS_MASTER_KEY は32文字? │ │
│ │ ✓ DATABASE_URL にスペース入ってない? │ │
│ │ ✓ DBとWebサービス同じRegion? │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ レベル3: ログ確認 📋 │
│ ┌─────────────────────────────────────────────┐ │
│ │ ✓ 手動再デプロイを試す │ │
│ │ ✓ エラーメッセージを特定 │ │
│ │ ✓ Google検索で解決策を探す │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
7.2 具体的なエラー対処法
「bin/render-build.sh: No such file or directory」
問題: 作業手順書が見つからない
┌─────────────────────────────────────────────────┐
│ Render.com: 「手順書を見せて」 │
│ ↓ │
│ あなたのリポジトリ: 「手順書がない...」 │
│ │
│ 解決策: │
│ 1. ファイル作成: touch bin/render-build.sh │
│ 2. 内容記述: (前述のスクリプト) │
│ 3. 権限付与: chmod +x bin/render-build.sh │
│ 4. Git push: GitHubにアップロード │
└─────────────────────────────────────────────────┘
「pg is not part of the bundle」
問題: PostgreSQL用の道具がない
┌─────────────────────────────────────────────────┐
│ Rails: 「PostgreSQLという道具を使いたい」 │
│ ↓ │
│ Gemfile: 「その道具は登録されてません」 │
│ │
│ 解決策: │
│ 1. Gemfile修正: production group に gem 'pg' │
│ 2. bundle install │
│ 3. Git push │
└─────────────────────────────────────────────────┘
8. 【祝!完成】アプリが公開されました!
8.1 あなたのアプリが世界デビュー!
おめでとうございます!あなたのRailsアプリが、ついにインターネット上で公開されました!
世界中からアクセス可能!
┌─────────────────────────────────────────────────┐
│ 🌍 世界地図 │
│ │
│ 🇯🇵 日本 🇺🇸 アメリカ 🇪🇺 ヨーロッパ │
│ 👤 👤👤 👤👤👤 │
│ │ │ │ │ │ │ │
│ └──────────┼─┼──────────┼─┼─┼────────────────┐ │
│ │ │ │ │ │ │ │
│ ↓ ↓ ↓ ↓ ↓ │ │
│ ┌─────────────────────────────────────────────┐ │ │
│ │ 🚀 https://portfolio-app.onrender.com │ │ │
│ │ あなたのRailsアプリ │ │ │
│ └─────────────────────────────────────────────┘ │ │
│ │ │
│ 24時間365日アクセス可能! │ │
└──────────────────────────────────────────────────┘
8.2 今後のアップデート方法
新機能を追加したい時の流れ:
継続的デプロイメントの流れ
┌─────────────────────────────────────────────────┐
│ 1. 💻 ローカルで開発 │
│ 新機能を追加・テスト │
│ ↓ │
│ 2. 📝 Git コミット │
│ git add . && git commit -m "新機能追加" │
│ ↓ │
│ 3. 📤 GitHub プッシュ │
│ git push origin main │
│ ↓ │
│ 4. 🔄 自動再デプロイ │
│ Render.comが変更を検知して自動更新 │
│ ↓ │
│ 5. ✅ 本番環境更新完了 │
│ 新機能が世界中で利用可能! │
└─────────────────────────────────────────────────┘
8.3 無料プランの特徴
知っておきたい無料プランの制限:
無料プラン vs 有料プラン
┌─────────────────────┐ ┌─────────────────────┐
│ 無料プラン │ │ 有料プラン │
│ ┌─────────────────┐ │ │ ┌─────────────────┐ │
│ │ 💤 スリープ機能 │ │ │ │ ⚡ 常時起動 │ │
│ │ 15分で休眠 │ │ │ │ 24時間稼働 │ │
│ │ 起動に30秒〜1分 │ │ │ │ 即座にレスポンス │ │
│ │ 月750時間制限 │ │ │ │ 無制限 │ │
│ │ 基本SSL対応 │ │ │ │ カスタムドメイン │ │
│ └─────────────────┘ │ │ └─────────────────┘ │
│ 月 $0 │ │ 月 $7〜 │
└─────────────────────┘ └─────────────────────┘
まとめ - あなたもデプロイマスターです!
お疲れさまでした!この記事を最後まで読んで、実際にデプロイを成功させたあなたは、もう立派な「デプロイできる開発者」です。
今日学んだことの振り返り
習得したスキル一覧
┌─────────────────────────────────────────────────┐
│ ✅ デプロイとは何かの基本概念 │
│ HTMLアップロードとの違いを理解 │
│ │
│ ✅ SQLite→PostgreSQL対応 │
│ 本番環境用データベース設定 │
│ │
│ ✅ Linuxコマンドの基本 │
│ touch, chmod, cat, git など │
│ │
│ ✅ Render.comでのサービス作成 │
│ データベース&Webアプリケーション │
│ │
│ ✅ 環境変数の重要性 │
│ 秘密情報の安全な管理 │
│ │
│ ✅ エラー解決力 │
│ ログを読んで問題を特定・解決 │
└─────────────────────────────────────────────────┘
次のステップ
更なるスキルアップの道
┌─────────────────────────────────────────────────┐
│ 📈 Level 1: 基本デプロイ(今ここ!) │
│ ├── Render.comデプロイ成功 │
│ └── 基本的なトラブル解決 │
│ ↓ │
│ 🚀 Level 2: 応用デプロイ │
│ ├── カスタムドメイン設定 │
│ ├── CI/CDパイプライン構築 │
│ └── パフォーマンス最適化 │
│ ↓ │
│ 🌟 Level 3: 本格運用 │
│ ├── 監視・ログ管理 │
│ ├── スケーリング対応 │
│ └── セキュリティ強化 │
└─────────────────────────────────────────────────┘
「最初は難しそうって思ったけど、意外とできた!」と感じられたのではないでしょうか。そうなんです。デプロイって、手順を知ってしまえば意外と簡単なんです。コマンドも、何をしているかが分かれば怖くありません。
あなたのRails開発ライフがより楽しくなることを願っています!
参考リンク
もっと詳しく学びたい方は、以下のリンクも参考にしてください。
- Render.com公式ドキュメント - より詳細な設定オプションや高度な機能
- Rails 8 ガイド - Rails 8の新機能や変更点
- PostgreSQL初心者ガイド - データベースの深い理解
次に読みたい記事
- 「Rails アプリにカスタムドメインを設定しよう」- 独自ドメインでより本格的に
- 「CI/CDパイプラインでより効率的なデプロイを」- 自動テスト&デプロイの仕組み
- 「Rails アプリのパフォーマンス改善テクニック」- 高速化と安定性向上
Happy coding! あなたのRailsアプリがたくさんの人に使われることを祈っています! 🎉