hanamii
hanamii

特徴

お知らせ

お問い合わせ

REST API リファレンス

Next.js 以外のアプリをデプロイする

Express・Vite/React SPA・静的サイト・Python・PHP(Laravel) など、Next.js 以外のプロジェクトをデプロイするための要件と構成例。

hanamii のビルド基盤は Next.js 専用ではありません。Node.js・Python・PHP のプロジェクトに対応しており(Go は準備中)、Express のようなサーバアプリも、Vite でビルドする SPA も、素の HTML サイトも公開できます。

このページでは、言語の判定ルールと、構成別のデプロイレシピを紹介します。手元のプロジェクトの構成変更を Claude や Codex などの AI に任せたい場合は、下の「AI に構成変更を任せる」にあるコピペ用プロンプトをそのまま使えます。

対応言語と判定のしくみ

アップロードされたプロジェクトは、ファイルの存在 で言語を判定します。判定は次の優先順位です。

優先判定ファイル言語必須要件
1composer.jsonPHPDockerfileEXPOSE の定義必須)
2package.jsonNode.jsscripts.start の定義
3requirements.txt / pyproject.tomlPythonPipfile は非対応

composer.json が最優先で判定されます。Node.js プロジェクトに composer.json が紛れ込んでいると PHP プロジェクトと判定され、Dockerfile を要求されるので注意してください。

どの言語でも共通のルール

  • アプリは HTTP サーバとして起動 し、環境変数 PORT(未設定なら 8080)で listen してください。ポートが固定のアプリは、環境変数PORT にその番号を設定すると公開ポートが切り替わります
  • ビルドは hanamii 側で実行されます。dist/build/ などのビルド成果物は含めないでください(ZIP アップロード時は自動で除外されます)
  • .env などのシークレットは含めず、環境変数タブから設定してください。ブラウザに埋め込まれるのは NEXT_PUBLIC_ / VITE_ / REACT_APP_ / NUXT_PUBLIC_ / PUBLIC_ プレフィックスの変数のみです
  • コンテナ内のファイルシステムは一時的です。再デプロイや再起動で消えるため、永続化したいデータはデータベース機能を使ってください

AI に構成変更を任せる(コピペ用プロンプト)

このページのレシピを自分で適用する代わりに、Claude Code や Codex などのコーディング AI に構成変更を任せられます。技術条件の正本は機械可読ページ https://hanamii.jp/ai/other-frameworks-deploy.txt にあり、プロンプトが AI にこれを読ませます(2026年8月時点)。

プロジェクトのフォルダで AI を起動して(または ChatGPT / Claude のチャットにプロジェクト一式を添付して)、次をそのまま貼り付けてください。

このプロジェクトを hanamii(https://hanamii.jp)にデプロイできる構成に整えてください。

【手順】
1. まず https://hanamii.jp/ai/other-frameworks-deploy.txt を読み、
   そこに書かれた要件にすべて従うこと
2. このプロジェクトの構成(Node.jsサーバ / SPA / 静的サイト / Python / PHP)を
   調べて特定し、該当するレシピに沿って必要最小限の変更だけを加えること。
   アプリの機能やコードのロジックは変えないこと
3. 変更後、アプリが環境変数 PORT(未設定なら 8080)で HTTP サーバとして
   起動することを、実際にローカルで起動して確認すること
4. 最後に次を報告すること:
   - 加えた変更の一覧と、それぞれの理由
   - hanamii の環境変数タブに設定が必要な変数の一覧(値そのものは表示しない)
   - デプロイ方法(ZIPアップロード / GitHub連携)ごとの、この後の操作

上記 1 の URL が読めない場合は、その旨をひとこと伝えたうえで、
https://hanamii.jp/docs/guides/deploy-other-frameworks の内容に沿って作業すること。
  • AI の作業が終わったら、報告された環境変数を環境変数タブに設定し、ZIP アップロードまたは GitHub 連携でデプロイしてください
  • AI がどの URL も読めない環境の場合は、このページの該当レシピの節をコピーして、プロンプトの末尾に貼り付けてください

Node.js サーバ(Express など)

package.jsonscripts.start があれば、フレームワークを問わずデプロイできます。依存パッケージのインストールとビルド(scripts.build がある場合)は自動で実行されます。

{
  "name": "my-api",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.19.0"
  }
}
const express = require('express')
const app = express()

app.get('/', (req, res) => res.send('Hello hanamii'))

app.listen(process.env.PORT || 8080)
  • TypeScript を使う場合は、devDependenciestypescript@types/node の両方が必要です
  • Remix / Nuxt / SvelteKit なども、ビルド後にサーバとして起動する構成(scripts.start あり)であれば同じ流れでデプロイできます
  • Astro(SSR アダプタ構成)は、外部からアクセスできるようにするためのホスト設定(HOST=0.0.0.0)が自動で行われます

SPA(Vite / React / Vue)

vite build などで静的ファイルを吐き出す SPA は、ビルド済みの dist/ をアップロードするのではなく、ソース一式に「配信用サーバ」を足してデプロイします。

{
  "name": "my-spa",
  "scripts": {
    "build": "vite build",
    "start": "serve -s dist -l ${PORT:-8080}"
  },
  "dependencies": {
    "serve": "^14.2.0"
  }
}

hanamii 側で npm installnpm run buildnpm start が実行され、ビルドされた dist/serve で配信されます。-s(single-page モード)を付けると、どの URL でも index.html が返るため SPA のルーティングが機能します。

静的サイト(素の HTML / CSS / JS)

index.html だけの静的サイトは、そのままでは「対応する言語を検出できませんでした」エラーになります。配信用の最小の package.json を 1 つ足せばデプロイできます。

my-site/
├── package.json   ← これを追加
├── index.html
├── style.css
└── ...
{
  "name": "my-site",
  "scripts": {
    "start": "serve -l ${PORT:-8080}"
  },
  "dependencies": {
    "serve": "^14.2.0"
  }
}

Python

requirements.txt または pyproject.toml があるプロジェクトをデプロイできます。

  • Pipfile / Pipfile.lock は非対応です。requirements.txt に変換してください
  • 他の言語と同じく、アプリは環境変数 PORT で listen する HTTP サーバとして起動してください

PHP / Laravel

PHP プロジェクトは Dockerfile が必須 です。次の要件を満たしてください。

要件内容
composer.jsonプロジェクト直下に必須
Dockerfile必須。EXPOSE でアプリが listen するポートを宣言する
Web サーバphp:*-fpm 単体は不可(HTTP を直接受けられないため)。Nginx + PHP-FPM を 1 コンテナに統合するか、php:8.x-apache を使う
Laravelpublic/index.php が必須

もっともシンプルな構成は Apache 同梱イメージです。

FROM php:8.3-apache

COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
COPY . /var/www/html
RUN composer install --no-dev --optimize-autoloader

EXPOSE 80

Laravel の場合は、ドキュメントルートを public/ に向ける設定(APACHE_DOCUMENT_ROOT の変更など)を Dockerfile に追加してください。

よくあるハマりどころ

「対応する言語を検出できませんでした」と表示される

プロジェクト直下に package.json / requirements.txt / pyproject.toml / composer.json のいずれもない状態です。静的サイトの場合は、上の「静的サイト」の節にある配信用の package.json を追加してください。

Node.js プロジェクトなのに Dockerfile を要求される

composer.json が含まれていると PHP と判定されます。不要なら削除してください。

GitHub 連携でデプロイしたらビルドで失敗した

GitHub 連携はアップロード前の検証をスキップしてデプロイまで進むため、構成の問題はビルドログ側にエラーとして現れます。エラー内容はトラブルシューティングを参照するか、ZIP アップロードで一度検証を通すと原因を特定しやすくなります。

Go のプロジェクトを上げたい

Go 対応は現在準備中です。

次のガイド

環境変数の設定と反映

hanamii

日本の空に咲くクラウド

Calm. Fast. Trusted.

プロダクト

© 2026 hanamii. All rights reserved. 🌸