Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】アプリDBをRenderからNeonに簡単に移行できた件について【Rails初学者】

2025年09月17日に「Qiita」が公開したITニュース「アプリDBをRenderからNeonに簡単に移行できた件について【Rails初学者】」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Rails初学者が、自身で作成したアプリのデータベースをRenderからNeonへ移行した方法を解説。Renderで運用していたDBをNeonに切り替える際の手順を、システムエンジニアを目指す初心者向けに備忘録としてまとめている。

ITニュース解説

システムエンジニアを目指す皆さんは、Webアプリケーション開発において、作成したアプリケーションをインターネット上で公開すること、そしてそのアプリケーションが使うデータをどう管理するかに興味があるだろう。今回は、そんなWebアプリを公開する「デプロイ」と、その裏側でデータを管理する「データベース」の移行について、具体的な事例をもとに解説する。

まず、Webアプリケーションは、ユーザーがブラウザを通じてアクセスできる形にするために、サーバーと呼ばれるコンピューター上で動かす必要がある。この「サーバーにアプリケーションを配置し、実際に動作させること」を「デプロイ」と呼ぶ。以前は、開発者自身がサーバーを構築するケースも多かったが、最近ではRenderやHerokuといったサービスが、デプロイ作業を簡単にする「プラットフォーム」を提供している。これらのサービスを利用すれば、コードをGitHubにプッシュするだけで、自動的にアプリケーションがインターネット上に公開されるため、開発者はアプリの機能開発に集中できるというメリットがある。

しかし、これらの便利なサービスも、ビジネス上の都合で提供内容が変更されることがある。今回の話は、Renderというデプロイサービスが、かつて提供していた無料のデータベース(PostgreSQLという種類)の提供を終了したことがきっかけとなっている。以前、Herokuという同様のサービスが無料枠を廃止した際も多くの開発者が影響を受けたが、今回もまた、Renderでアプリを運用していた開発者にとって、データベースを別の場所へ移す必要が生じたのだ。

そこで登場するのが、Neonという新しいデータベースサービスだ。Neonは「サーバーレスPostgreSQL」と呼ばれるタイプのデータベースを提供しており、使った分だけ料金を支払うという特徴がある。そして、Renderの無料データベースが使えなくなった今、多くの開発者がその代替としてNeonの利用を検討している。今回の事例も、Render上で動かしていたアプリケーションのデータベースを、RenderからNeonへと移行したという話だ。

この移行作業は、大きく分けて以下のステップで進められる。

  1. 既存のRenderデータベースからデータを安全に「バックアップ(救出)」する。
  2. 新しいNeonデータベースを準備する。
  3. アプリケーションが新しいNeonデータベースに接続するように設定を変更する。
  4. バックアップしたデータをNeonデータベースに「リストア(復元)」する。
  5. デプロイ環境のRenderアプリに、新しいデータベースの接続情報を設定し、再デプロイする。

それぞれのステップを詳しく見ていこう。

まず、「既存のRenderデータベースからデータを安全にバックアップする」ことの重要性は言うまでもない。アプリケーションの心臓部であるデータが失われてしまえば、これまでの努力が水の泡になってしまうからだ。Renderでは、管理画面から「スナップショット」と呼ばれる機能を使って、データベースの特定時点の状態をファイルとして保存できる。これは、写真のシャッターを切るように、その瞬間のデータをそのまま記録するイメージだ。このスナップショットをダウンロードすると、.sql.gzという形式の圧縮ファイルが得られる。このファイルはそのままでは使えないため、解凍して.sqlという形式のファイルに変換する必要がある。この.sqlファイルには、データベースの構造(テーブルの設計など)と、そこに保存されている実際のデータがすべて記述されている。

次に、「新しいNeonデータベースを準備する」。Neonのウェブサイトにアクセスし、アカウントを作成したら、新しいプロジェクトを立ち上げる。プロジェクトの中に、アプリケーションが使うデータベース本体を作成するのだ。この際、「ロール」と呼ばれる、データベースにアクセスするためのユーザーを作成し、パスワードを設定する。これは、データベースのセキュリティを確保するために不可欠な手順だ。そして、作成したデータベースの「接続情報(Connection Details)」をメモしておく。この情報には、データベースの場所(ホスト名)、ポート番号、ユーザー名、パスワード、データベース名などが含まれており、後ほどアプリケーションからデータベースに接続するために必要となる。

「アプリケーションが新しいNeonデータベースに接続するように設定を変更する」ステップでは、主にRuby on Railsというフレームワークで作成されたアプリケーションのコードを修正する。Railsアプリケーションは、Gemfileというファイルで、どんな外部ライブラリ(Gem)を使うかを管理している。データベースに接続するためのpgというGemのバージョンが古い場合、最新のNeonデータベースに接続できないことがあるため、適切なバージョンに更新する。 さらに重要なのが、config/database.ymlという設定ファイルだ。このファイルは、Railsアプリケーションがどのデータベースにどのように接続するかを定義する場所である。直接、Neonの接続情報を書き込むこともできるが、一般的には「環境変数」という仕組みを利用する。環境変数とは、アプリケーションのコードの外側から、さまざまな設定値を渡すための仕組みだ。これにより、データベースの接続情報のような機密性の高い情報をコードに直接書き込まずに済むため、セキュリティが高まり、開発環境と本番環境で異なる設定を簡単に切り替えられるようになる。具体的には、DATABASE_URLという環境変数に、Neonから取得した接続文字列(postgresql://ユーザー名:パスワード@ホスト名:ポート番号/データベース名のような形式)を設定するようにdatabase.ymlを修正する。

「バックアップしたデータをNeonデータベースにリストアする」段階は、いよいよ古いデータを新しいデータベースに移す核心部分だ。Renderからダウンロードし解凍した.sqlファイルには、元のデータベースの全データが格納されている。このデータをNeonデータベースに流し込むには、psqlというコマンドラインツールを使う。psqlは、PostgreSQLデータベースを操作するための標準的なツールで、コンピューターのターミナル(コマンドプロンプトやシェル)から実行する。このツールを使って、Neonの接続情報と、バックアップした.sqlファイルを指定することで、ファイル内のデータが新しいNeonデータベースに正確に再現される。コマンドはpsql -h [Neonのホスト] -p [Neonのポート] -U [Neonのユーザー] -d [Neonのデータベース名] < [SQLファイル名]のようになる。パスワードの入力が求められたら、Neonで設定したロールのパスワードを入力する。

最後のステップは、「デプロイ環境のRenderアプリに、新しいデータベースの接続情報を設定し、再デプロイする」ことだ。先にRailsアプリケーションのdatabase.ymlを修正し、DATABASE_URLという環境変数を使うように設定した。今度は、実際にRenderのデプロイ環境にその環境変数を設定する番だ。Renderの管理画面で、デプロイしているアプリケーションの設定を開き、「Environment(環境)」というセクションでDATABASE_URLという名前で、Neonの接続文字列を値として追加する。この設定が終わったら、アプリケーションのコード変更(Gemfiledatabase.ymlの変更)をGitHubにプッシュする。RenderはGitHubのリポジトリと連携しているので、プッシュを検知すると自動的に新しいバージョンのアプリケーションをデプロイし始める。デプロイが完了すれば、アプリケーションは新しいNeonデータベースに接続して、以前と同じように動作するようになる。

この一連の移行作業は、一見複雑に思えるかもしれないが、Webアプリケーションを運用する上で非常に重要なスキルだ。クラウドサービスの選定や変更は常に発生しうるため、データベースのバックアップ、移行、接続設定といった基本的な知識と手順を理解しておくことは、システムエンジニアを目指す上で必ず役立つ。今回の事例を通じて、Webサービスの裏側でデータがどのように管理され、運用されているかの一端を理解するきっかけとなれば幸いだ。

関連コンテンツ

関連IT用語