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

この記事では、Railway に SvelteKitアプリをデプロイする方法方法を紹介します。クイックセットアップ、アダプター構成、ワンクリックデプロイ、その他のデプロイ戦略について解説します。

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

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

SvelteKit は、Svelte を使用して堅牢で高性能な Web アプリケーションを迅速に開発するためのフレームワークです。

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

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

それでは、SvelteKit アプリを作成しましょう。

SvelteKit アプリの作成

注: すでにローカルまたは GitHub に SvelteKit アプリがある場合は、この章をスキップして「SvelteKit アプリを Railway にデプロイする」へ進んでください。

新しい SvelteKit アプリを作成するには、Node がインストールされていることを確認してください。

ターミナルで以下を実行し、Vite を使用して新しい SvelteKit アプリを作成します。

npx sv create svelteapp

プロンプトは次のとおりです。

  1. SvelteKit demo テンプレートを選択します。
  2. TypeScript で型チェックを追加します。
  3. Prettier、ESLint、Tailwind CSS を追加します。
  4. Tailwind CSS のプラグインは不要です。Enter キーで次へ進みます。
  5. 依存関係のインストールにはパッケージマネージャーとして npm を選択します。

svelteapp ディレクトリに新しい SvelteKit アプリが作成されます。

SvelteKit アプリをローカルで実行

ディレクトリに cd し、以下を実行して Vite の開発サーバーを起動します。

npm run dev

ブラウザで http://localhost:5173 を開き、アプリを確認します。/sverdle ルートにアクセスするとデモゲームをプレイできます。

デプロイのための SvelteKit アプリの準備

まず、SvelteKit の Node アダプターを有効にします。

SvelteKit のアダプターは、ビルドされたアプリを入力として受け取り、デプロイ用の成果物を生成するプラグインです。各デプロイプラットフォームでプロジェクトを実行するために使用します。

Node アダプターをアプリに追加します。ターミナルで以下を実行します。

npm i -D @sveltejs/adapter-node

インストール後、アダプターをアプリの svelte.config.js に追加します。

svelte.config.js ファイルは次のようになります。

import adapter from '@sveltejs/adapter-node';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
 
/** @type {import('@sveltejs/kit').Config} */
const config = {
	// プリプロセッサの詳細については、https://svelte.dev/docs/kit/integrations を参照してください
	preprocess: vitePreprocess(),
 
	kit: {
		// adapter-autoは一部の環境のみをサポートしています。リストについては https://svelte.dev/docs/kit/adapter-auto を参照してください。
		// お使いの環境がサポートされていない場合、または特定の環境に決定した場合は、アダプターを切り替えてください。
		// アダプターの詳細については、https://svelte.dev/docs/kit/adapters を参照してください。
		adapter: adapter()
	}
};
 
export default config;

次に、package.json に start スクリプトを追加します。

Svelte はプロジェクトを build ディレクトリにビルドします。サーバーは既定で build/index.js のエントリポイント実行で起動します。

package.json を開き、node build/index.js を start に設定します。

{
	"name": "svelteapp",
	"version": "0.0.1",
	"type": "module",
	"scripts": {
		"dev": "vite dev",
		"build": "vite build",
		"start": "node build/index.js",
		"preview": "vite preview",
		"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
		"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
		"format": "prettier --write .",
		"lint": "prettier --check . && eslint ."
	},
	"devDependencies": {
		"@fontsource/fira-mono": "^5.0.0",
		"@neoconfetti/svelte": "^2.0.0",
		"@sveltejs/adapter-auto": "^3.0.0",
		"@sveltejs/adapter-node": "^5.2.9",
		"@sveltejs/kit": "^2.0.0",
		"@sveltejs/vite-plugin-svelte": "^4.0.0",
		"@types/eslint": "^9.6.0",
		"autoprefixer": "^10.4.20",
		"eslint": "^9.7.0",
		"eslint-config-prettier": "^9.1.0",
		"eslint-plugin-svelte": "^2.36.0",
		"globals": "^15.0.0",
		"prettier": "^3.3.2",
		"prettier-plugin-svelte": "^3.2.6",
		"prettier-plugin-tailwindcss": "^0.6.5",
		"svelte": "^5.0.0",
		"svelte-check": "^4.0.0",
		"tailwindcss": "^3.4.9",
		"typescript": "^5.0.0",
		"typescript-eslint": "^8.0.0",
		"vite": "^5.0.3"
	}
}

package.json

これでデプロイの準備は完了です。

SvelteKit アプリを Railway にデプロイする

Railway は、セットアップや好みに応じて、SvelteKitアプリをデプロイする方法複数の方法を提供します。

テンプレートからワンクリックデプロイ

最速で始めたい場合は、このオプションが最適です。

下のボタンから開始します。

Railwayにデプロイ

デプロイ後はテンプレートから Eject して、ご自身の GitHub アカウントにリポジトリをコピーすることを強くおすすめします。

注: コミュニティが作成した各種 Svelte アプリのテンプレートも選べます。

CLI からデプロイ

  1. Railway CLI のインストール
    • CLI をインストールし、Railway アカウントで認証します。
  2. Railway プロジェクトの初期化
    • プロンプトに従ってプロジェクト名を設定します。
    • 作成後、表示されるリンクからブラウザで開きます。
  3. アプリケーションのデプロイ
    • アプリのファイルをスキャン・圧縮して Railway にアップロードします。ターミナルにリアルタイムのデプロイログが表示されます。
    • 完了後、View logs でサービスが正常に稼働していることを確認します。
  4. 公開 URL の設定
    • 新しいサービスの設定タブ → Networking に移動します。
    • Generate Domain をクリックして公開 URL を作成します。

以下でデプロイします。

railway up

SvelteKit アプリのディレクトリで以下を実行します。

railway init

GitHub リポジトリからデプロイ

Railwayダッシュボード

SvelteKit アプリを GitHub から直接 Railway にデプロイする手順です。

  1. Railway で新しいプロジェクトを作成
    • https://railway.app/dashboard にアクセスし、 + New から新しいプロジェクトを作成します。
  2. GitHub からデプロイ
    • Deploy from GitHub repo を選び、リポジトリを選択します。
      • Railway アカウントが GitHub に未連携の場合は、連携を求められます。
  3. アプリのデプロイ
    • Deploy をクリックして開始します。
    • デプロイ完了後、アプリ用の Railway サービスが作成されます(既定では非公開)。
  4. デプロイの確認
    • 完了したら View logs でサーバーの稼働を確認します。
  5. 公開 URL の設定
    • SettingsNetworking に移動します。
    • Generate Domain をクリックして公開 URL を作成します。

Dockerfile を使う

  1. SvelteKit アプリのルートに Dockerfile を作成します。
  2. CLI または GitHub からデプロイします。

Dockerfile に以下を追加します。

# Node の alpine 公式イメージを使用
# https://hub.docker.com/_/node
FROM node:lts-alpine
# アプリディレクトリを作成して移動
WORKDIR /app
# ファイルをコンテナにコピー
COPY package*.json ./
# 依存関係をインストール
RUN npm ci
# ローカルコードをコンテナにコピー
COPY . ./
# アプリのビルド
RUN npm run build
# アプリの提供
CMD ["npm", "run", "start"]

Railway は Dockerfile を自動検出し、それを使ってアプリをビルド・デプロイします。

注: Railway は、パブリックおよびプライベートの Docker イメージからのデプロイもサポートしています。

この記事では、Railway の主なデプロイ方法を紹介しました。セットアップに適したアプローチを選び、SvelteKit アプリをシームレスにデプロイしましょう。

次のステップ

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 阿部 隼也