【Railway】Expressをデプロイする方法

Railway を使って Expressアプリをデプロイする手順を解説します。データベース接続、環境変数、Dockerfile の利用まで、4つのデプロイ方法を網羅します。

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

Expressアプリをデプロイする方法

Express は、Node.js のための高速で柔軟なウェブアプリケーションフレームワークです。シンプルかつ最小限のアプローチでウェブサーバーや API を構築できることで知られています。

この記事では、以下の4つの方法で Express アプリを Railway にデプロイする手順を説明します。

  1. テンプレートからワンクリックでデプロイ
  2. GitHub リポジトリからデプロイ
  3. Railway CLI を使ってデプロイ
  4. Dockerfile を使ってデプロイ

Express アプリの準備

既に Express アプリがある場合は、このセクションをスキップしてください。

1. アプリの作成とローカルでの実行

# アプリケーションの雛形を作成
npx express-generator --view=pug helloworld
cd helloworld
 
# 依存関係をインストール
npm install
 
# アプリケーションを起動
npm start

ブラウザで http://localhost:3000 にアクセスし、動作を確認します。

2. データベースの接続設定

ここでは PostgreSQL を使用します。

# pg-promise をインストール
npm i pg-promise

routes/index.js を開き、データベースに接続して現在時刻を取得するように変更します。

const express = require('express');
const pgp = require('pg-promise')();
// 環境変数からデータベースURLを取得
const db = pgp(process.env.DATABASE_URL); 
const router = express.Router();
 
/* GET home page. */
router.get('/', function(req, res, next) {
  db.one("SELECT NOW()")
    .then(function (data) {
      res.render('index', { title: 'Hello World, Railway!', timeFromDB: data.now });
    })
    .catch(function (error) {
      console.error("ERROR:", error);
      res.status(500).send("Error querying the database");
    });
});
 
module.exports = router;

views/index.pug も修正して、取得した時刻を表示できるようにします。

extends layout
 
block content
  h1= title
  p Welcome to #{title}
  p This is the time retrieved from the database:
  p #{timeFromDB}

Railway へのデプロイ

方法1: GitHub リポジトリからデプロイ

  1. プロジェクトの作成: Railway で新しいプロジェクトを作成し、「Deploy from GitHub repo」を選択します。
  2. リポジトリの選択: 自分の Express プロジェクトのリポジトリを選びます。
  3. データベースの追加: キャンバスで右クリックし、「Database」→「Add PostgreSQL」を選択してデータベースサービスを追加します。
  4. 環境変数の設定: アプリケーションのサービス設定で、DATABASE_URL という名前の変数を追加し、値を ${{Postgres.DATABASE_URL}} に設定します。これにより、データベースサービスの接続情報が参照されます。
  5. デプロイ: 「Deploy」ボタンをクリックします。
  6. ドメインの生成: デプロイ完了後、サービスの「Settings」→「Networking」で「Generate Domain」をクリックして公開 URL を取得します。

方法2: Dockerfile を使う

プロジェクトのルートに以下の内容で Dockerfile を作成します。

# Node の公式イメージを使用
FROM node:lts
 
# アプリケーションディレクトリを作成
WORKDIR /app
 
# ローカルのコードをコンテナにコピー
COPY . ./
 
# 依存関係をインストール
RUN npm ci
 
# アプリケーションを起動
CMD ["npm", "run", "start"]

この Dockerfile を含むリポジトリを GitHub からデプロイすると、Railway は自動的に Dockerfile を使ってビルドとデプロイを行います。


この記事では、Express アプリを Railway にデプロイする主要な方法を説明しました。自分のセットアップに合った方法を選び、シームレスなデプロイを実現してください。

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

Read more

リアルタイム投票アプリ5選【ライブ配信やイベントで】

リアルタイム投票アプリ5選【ライブ配信やイベントで】

ウェビナーやセミナー、社内研修を実施する際、「参加者が受け身になってしまう」「質問がなかなか出てこない」といった課題を感じたことはないでしょうか。 オンラインでの情報発信が当たり前になった今、一方的な配信だけでは参加者の満足度を高めることが難しくなっています。そこで注目されているのが、リアルタイムで参加者の意見を集約し、その場で結果を共有できる投票・質問ツールです。 本記事では、ライブ配信やイベント、研修などで活用できるリアルタイム投票アプリを5つ厳選してご紹介します。 リアルタイム投票でつながる参加者とイベント リアルタイム投票やQ&A機能を使うと、視聴者や参加者の意見を即座に集計・表示できます。講義や会議の進行を妨げず、参加者全員が自分の意見を簡単に表明できる仕組みです。 従来の挙手による質疑応答では、発言しづらいと感じる参加者も少なくありません。特にオンラインイベントでは、カメラがオンになっていることへの抵抗感や、大人数の前で質問することへのハードルが存在します。 しかし、スマートフォンから匿名で投票やコメントができる仕組みがあれば、参加者は気軽に自分の意見を伝えら

By 阿部 隼也
質問受付ツールの選び方とおすすめ5選を紹介

質問受付ツールの選び方とおすすめ5選を紹介

セミナーや講演会、社内研修などで「質問はありませんか?」と投げかけても、なかなか手が挙がらない経験はないでしょうか。参加者に有益な情報を提供しても、疑問や意見が共有されないまま終わってしまうのは、主催者にとっても参加者にとっても大きな機会損失です。 こうした課題を解決するために注目されているのが「質問受付ツール」です。参加者がスマートフォンから匿名で質問を投稿できるため、発言への抵抗感が下がり、活発なコミュニケーションが生まれます。 本記事では、質問受付ツールの基本機能から、実際に役立つおすすめツール5選、そして選定時に押さえておきたいポイントまで、実務に活かせる情報をまとめて解説します。 質問受付の現場課題 イベントやセミナーの運営で最も頭を悩ませる問題の一つが、参加者からの質問をいかに引き出すかという点です。質問タイムを設けても、会場がシーンと静まり返ってしまい、仕方なく「それでは時間になりましたので」と締めくくる光景は珍しくありません。 この背景には、日本特有の文化的要因も関係しています。大勢の前で発言することへの恥ずかしさ、自分の質問が的外れではないかという不安、他

By 阿部 隼也
オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

オンラインセミナーアプリの選び方。参加者エンゲージメントを高めるポイント

近年、オンラインセミナーの活用が急速に広がっています。会場のコストや移動時間を気にすることなく、全国・世界中から参加者を集められる点は大きな魅力です。 しかし、せっかく開催しても 「参加者が途中で離脱してしまう」 「ただ見ているだけで反応が薄い」 といった課題を抱えている企業も少なくありません。 本記事では、参加者のエンゲージメントを高め、成果につながるオンラインセミナーアプリの選び方と、実務に役立つ具体的なポイントを解説します。 参加者とのつながりを生むオンライン環境の設計 オンラインセミナーにおける最大の課題は、画面越しの距離感です。会場で直接顔を合わせる機会がないからこそ、参加者が「ただ見ているだけ」にならないような仕組みが求められます。適切なツールと機能選びが、参加者のエンゲージメントを左右します。 従来のオフラインセミナーでは、会場の雰囲気や参加者同士の反応が自然と生まれましたが、オンラインではそうした「空気感」が伝わりにくくなります。だからこそ、双方向のコミュニケーション機能や、参加者の行動データを活用した設計が重要になるのです。 エンゲージメントを高

By 阿部 隼也
参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

参加者の質問を効率的に管理!ZoomウェビナーQ&A機能の使い方を徹底解説

オンラインでのセミナーやイベントが日常化する中で、Zoomウェビナーを活用している企業が増えています。しかし、ウェビナーの開催で意外と頭を悩ませるのが「参加者からの質問をどう管理するか」という点ではないでしょうか。 セミナーが盛り上がり、次々と質問が寄せられるのは嬉しいことです。一方で、質問が多すぎて整理しきれない、どの質問に優先的に答えるべきか判断に迷う、といった課題も生じます。こうした問題を解決するために役立つのが、ZoomウェビナーのQ&A機能です。 本記事では、ZoomウェビナーのQ&A機能の基本的な使い方から、参加者の質問を効率的に管理する実践的なテクニックまで、詳しく解説していきます。 ZoomウェビナーのQ&A機能とは ZoomウェビナーのQ&A機能は、ウェビナー開催中に参加者が質問を投稿し、主催者側が回答を行うための専用機能です。この機能を使うことで、質問と回答がスレッド形式で整理され、効率的なコミュニケーションが可能になります。 チャット機能との違い Zoomには「チャット機能」もあるため、「Q&A機能とチャット機能の違いは何か」と疑問に思う方も多いで

By 阿部 隼也