React.jsとNode.jsを使ったアプリケーションをHerokuにデプロイする方法を、完全かつ包括的に解説します。これには、フロントエンドのReactアプリケーションとバックエンドのNode.jsアプリケーションをHerokuにデプロイするための一連のステップが含まれます。この記事を通じて、HerokuにReact.jsとNode.jsアプリを展開するために必要な準備と手順を順を追って学ぶことができます。
1. 前提条件
まず、React.jsとNode.jsを使用したアプリケーションをHerokuにデプロイするためには、以下のツールをインストールしておく必要があります。
- Node.js: Node.jsはバックエンドサーバーとして機能します。公式サイトからインストールできます。
- npm (Node Package Manager): Node.jsにはnpmが含まれており、パッケージ管理に使用します。
- Heroku CLI: Herokuにアプリケーションをデプロイするために、Heroku CLIが必要です。Heroku CLIのインストールガイドに従ってインストールしてください。
- Git: ソースコードの管理とHerokuへのプッシュにはGitが必要です。もしインストールされていない場合は、Gitの公式サイトからインストールできます。
2. プロジェクトのセットアップ
React.jsとNode.jsのアプリケーションを作成します。
2.1. React.js(フロントエンド)アプリの作成
まず、Reactアプリを作成します。以下のコマンドを使ってReactアプリを作成します。
bashnpx create-react-app my-react-app
cd my-react-app
これで、my-react-app
というReactアプリケーションのプロジェクトが作成されます。
2.2. Node.js(バックエンド)アプリの作成
次に、バックエンドとしてNode.jsアプリケーションを作成します。Reactアプリとは別のディレクトリでNode.jsのAPIを作成します。
bashmkdir my-node-api
cd my-node-api
npm init -y
これでmy-node-api
というディレクトリにNode.jsのアプリケーションが作成されます。次に、Expressというフレームワークをインストールして、APIサーバーを構築します。
bashnpm install express
server.js
というファイルを作成して、以下のコードを記述します。
jsconst express = require('express');
const app = express();
const port = process.env.PORT || 5000;
app.get('/', (req, res) => {
res.send('Hello from Node.js API');
});
app.listen(port, () => {
console.log(`Server running on port ${port}`);
});
これで簡単なNode.jsバックエンドのAPIサーバーが作成されます。
3. React.jsとNode.jsの統合
フロントエンドのReactアプリケーションとバックエンドのNode.jsアプリケーションを統合します。まず、Reactアプリがバックエンドにリクエストを送信できるように、ReactアプリからAPIを呼び出すコードを追加します。
Reactアプリ内の任意のコンポーネントに、以下のようなAPIリクエストのコードを追加します。
jsimport { useEffect, useState } from 'react';
function App() {
const [data, setData] = useState('');
useEffect(() => {
fetch('/api')
.then(response => response.text())
.then(data => setData(data));
}, []);
return (
<div>
<h1>{data}h1>
div>
);
}
export default App;
次に、ReactアプリとNode.jsのバックエンドを統合するために、バックエンド側でAPIエンドポイントを設定します。Node.js側で/api
というルートを追加し、リクエストに応じたレスポンスを返します。
jsapp.get('/api', (req, res) => {
res.send('Hello from Node.js API');
});
4. Herokuでの設定
4.1. Herokuアプリの作成
次に、Heroku上でアプリケーションを作成します。Heroku CLIを使用して、次のコマンドで新しいHerokuアプリを作成します。
bashheroku create my-app-name
これにより、Herokuにアプリケーションが作成されます。
4.2. Gitの設定
プロジェクトのルートディレクトリでGitを初期化します。
bashgit init
git add .
git commit -m "Initial commit"
その後、Herokuにコードをプッシュするために、HerokuのGitリモートを設定します。
bashgit remote add heroku https://git.heroku.com/my-app-name.git
4.3. Procfile
の作成
Herokuでアプリを実行するために、Procfile
を作成します。このファイルはHerokuがどのコマンドでアプリケーションを起動するかを指定します。
プロジェクトのルートにProcfile
という名前のファイルを作成し、以下の内容を追加します。
makefileweb: npm start
4.4. 必要なファイルの準備
ReactアプリとNode.jsアプリを同じリポジトリでデプロイするために、以下の手順を行います。
- Reactアプリのビルドを作成します。
bashcd my-react-app
npm run build
- ビルドされたReactアプリをNode.jsアプリの
public
ディレクトリにコピーします。
bashcp -r build/* ../my-node-api/public/
package.json
ファイルで、Reactアプリをビルドした後に静的ファイルを提供するようにNode.jsサーバーを設定します。
json"scripts": {
"start": "node server.js"
}
これで、Node.jsサーバーがReactアプリを提供できるようになりました。
5. Herokuへのデプロイ
すべての準備が整ったら、Herokuにアプリケーションをデプロイします。以下のコマンドでGitリポジトリをHerokuにプッシュします。
bashgit push heroku master
Herokuがコードをデプロイし、アプリケーションが自動的に起動します。デプロイが完了したら、以下のコマンドでアプリケーションのURLを確認できます。
bashheroku open
これで、React.jsとNode.jsを使ったアプリケーションがHeroku上で正常に動作するはずです。
6. まとめ
この記事では、React.jsとNode.jsを使ったアプリケーションをHerokuにデプロイする方法をステップバイステップで解説しました。まずReactアプリとNode.jsアプリを作成し、それらを統合した後、Herokuにデプロイしました。この方法を使うことで、簡単にフルスタックのアプリケーションをHerokuでホストすることができます。