サーバーサイドエラー

Railwayデプロイログ、APIルートエラー、500レスポンスの見つけ方と修正方法。

サーバーサイドエラーとは?

サーバーサイドエラーはブラウザではなくサーバー(Railway)で発生します。以下のような症状が見られます:

  • ブラウザに「500 Internal Server Error」メッセージ
  • エラーを返すAPIリクエスト
  • Railwayで失敗するデプロイ

ブラウザは詳細を教えてくれません — サーバーログを確認する必要があります。

Railwayログの確認方法

ステップ1:ログを見つける

Railwayダッシュボードにアクセスし、サービスを選択してDeploymentsタブをクリックし、アクティブなデプロイのView logsをクリックします。

ステップ1:サービスを選択し、Deploymentsタブ、View logsをクリック

ステップ2:エラーを見つける

Deploy Logsタブで赤い行を探してください — これがエラーです。通常のログ行は白/グレーです。

ステップ2:Deploy Logsタブで赤いエラー行を探す

ステップ3:エラーメッセージをコピー

赤いエラー行をクリックして詳細を展開します。Name/Value属性に完全なエラーメッセージが表示されます。このテキストをコピーしてClaudeに渡してください。

ステップ3:エラーをクリックして詳細を表示し、エラーメッセージをコピー

サーバーログには、アプリが実行中に出力するすべてが表示されます(ファイル名と行番号を含むエラーメッセージも含む)。

500エラーの理解

ブラウザが「500 Internal Server Error」を表示する場合、サーバーで何かがクラッシュしたことを意味します。ブラウザは何かが間違ったことだけを知っています — 詳細はRailwayログにあります。

500エラーを報告
Claudeプロンプト
my-app-name: ダッシュボードページを読み込もうとすると500エラーが返されます。 ブラウザの表示: "500 Internal Server Error" Railwayログは以下の通りです: [Railwayデプロイログからエラーを貼り付け] サーバーサイドエラーを見つけて修正してください。

APIルートエラー

Next.jsのAPIルート(app/api/...)はサーバー上で実行されます。よくある問題:

問題考えられる原因
APIコールで500エラーAPIルートコードのバグ(Railwayログを確認)
APIコールで404URLパスの間違いまたはAPIファイルの欠落
空のレスポンスデータベースクエリがデータを返さなかった
タイムアウトクエリが遅すぎるか無限ループ
APIルートをデバッグ
Claudeプロンプト
my-app-name: APIルート /api/users が500エラーを返しています。 ブラウザコンソールの表示: "GET /api/users 500 (Internal Server Error)" Railwayログ: [エラーログを貼り付け] APIルートを修正してください。

プレビューでAPIルートをテスト

アプリをローカルで起動することはないので、APIルートのテストはPRのプレビューURLで行います。PRを開くと、コメントにプレビューURLが投稿されます。そのURLに対して:

プレビューのAPIを叩くbash
# PRコメントにあるプレビューURLに置き換える
curl https://your-app-pr-123.up.railway.app/api/your-route

プレビュー環境には専用のNeonデータベースブランチがアタッチされているため、データベースに依存するルートもエンドツーエンドで動きます。

よくあるサーバーエラーの原因

  • 環境変数の欠落 — アプリが必要とする変数がRailwayで設定されていない
  • データベースクエリエラー — テーブル名の間違い、カラムの間違い、SQL構文エラー
  • インポートエラー — 存在しないファイルやパッケージをインポート
  • 実行時の型エラー — 関数に間違ったデータ型を渡す

プレビューデプロイログの確認

PRプレビューデプロイが動作しない場合:

プレビューデプロイの問題をデバッグ
Claudeプロンプト
my-app-name: PRのプレビューデプロイが失敗しています。 Railwayデプロイログ: [エラーログを貼り付け] デプロイが失敗している原因を調査してください。

クイズ

Quiz

500 Internal Server Errorの詳細はどこで確認できますか?