環境構築手順をメモしていきます。
1.リポジトリのクローン作成
GitリポジトリのURLが提供されているはずなので、リポジトリをクローンします。
git clone <repository-url>
cd <project-directory>
2.依存関係のインストール
依存関係とは、プロジェクトが動作するために必要な外部ライブラリやフレームワークのこと。ローカルで正しく動作させるために、必要な依存パッケージをインストールします。(npm installやyarn installでインストールすると、それらはプロジェクトのローカル環境にあるnode_modulesディレクトリに保存されます。このディレクトリは、プロジェクトのルートフォルダに自動的に作成されます。)
また、ローカルマシンでJavaScriptコードを実行したりnpmを使ったりするために必要なのがNode.js。対応するNode.jsもインストールしておきましょう。
nodenv install <version指定>
npm install
3.環境変数の設定
環境変数とは?
アプリケーションの設定情報を管理するための変数です。これらの変数には、APIキー、データベース接続情報、外部サービスのURLなど、アプリケーションが動作する際に必要な情報が含まれます。
例えば、開発環境と本番環境では接続先のURLやAPIキーが異なることがあります。このような情報をソースコードに直接書くのではなく、環境変数を使って管理することで、異なる環境に合わせて簡単に切り替えることができます。
.envファイルとは?
.envファイルは、プロジェクトの環境変数を定義するためのファイルです。このファイルには、開発者が使う環境変数を簡単に設定でき、プロジェクトの構成に合わせて編集します。
具体的にどうすればいいのか?
プロジェクトの運用ルールにもよりますが、.envファイルを自分の開発環境に合わせて編集します。例えば、APIキーやURLなど、自分のプロジェクトで必要な情報を記入します。
ちなみに、.env.localなどの環境設定ファイルは、一般的には.gitignoreに追加され、リモートリポジトリにコミットされないように設定されています。これは、APIキーや機密情報が含まれていることが多いため、他の人と共有するべきではないからです。
これにより、個人の設定ファイルはローカルにのみ保持され、Gitにコミットされることはありません。
4.ビルドと開発サーバの起動
定義の確認からいきましょう。
ビルドとは?
ビルド(build)は、開発中のコードを最適化し、本番環境で動作する形式に変換するプロセスです。ソースコードを圧縮したり、モジュールバンドル(依存関係をまとめる作業)を行ったりします。
具体的には、
トランスパイル: JSXやTypeScriptなどのコードをブラウザが理解できるJavaScriptに変換します(BabelやTypeScriptコンパイラを使用)。
最適化: 不要なコードを削除し、ファイルサイズを小さくします(デッドコードエリミネーションや圧縮)。
モジュールバンドリング: JavaScriptファイルを1つまたは少数のファイルにまとめます(WebPackやRollupを使用)。
コード分割: ページごとに必要なコードだけを読み込むように分割します(コードスプリッティング)。
などの処理が行われています。
つまり、本番環境にデプロイする準備のために必要なことなんだね。
生成されたファイルはdistやbuildフォルダに保存され、これをWebサーバーにデプロイします。
(ビルドは本番環境にデプロイする際に行うのが一般的で、開発のたびに毎回ビルドする必要はありません。)
開発サーバーの起動とは?
開発中にアプリケーションを素早く確認できるローカル環境を立ち上げることです。開発サーバーは、コードの変更があった場合に自動で再ビルドを行い、即座にブラウザへその変更を反映します(ホットリロードやライブリロード)。
next build
next dev
5.ローカル開発環境を構築し、リモートサーバーと連携させる
リモートサーバーの設定を行い、ローカルドメインを名前解決できるようにするためのものです。リモートサーバーに接続するためのURLと、ローカルホスト上でのカスタムドメイン名を設定しています。この設定をしないと、APIからデータを取得できず、ページが正しく表示されないことがあります
(puma-devがインストール済みであることが前提。puma-devは、Ruby on Railsアプリケーションなどの開発環境を簡単にセットアップするためのツール。)
echo 'http://remote-server-ip:20000' > ~/.puma-dev/work.jp
npm install
echoは、指定した文字列を出力するコマンドです。リモートサーバーのIPアドレスとポート番号を示していて、これを/.puma-dev/work.jpというファイルに書き込むことを意味します。このファイルにURLを記述することで、puma-dev が特定のドメインやサブドメインでリクエストをリモートサーバーにリダイレクトする設定を行っています。つまり、work.jp というサブドメインを指定すると、リモートサーバーにリクエストを転送する設定を行っています。これにより、ローカル環境で動作するように見せかけながら、実際にはリモートサーバーと通信できるようになるということです。
続いて、名前解決用の設定を追加します。
sudo echo '127.0.0.1 remote-work.jp' >> /etc/hosts
sudoは、管理者権限でコマンドを実行するためのもので、/etc/hostsファイルに書き込みを行うために必要です。127.0.0.1は、ローカルホスト(自分のマシン)を指します。
remote-work.jpは、リモートサーバーを指すカスタムドメイン名として設定されます。このドメイン名も適切なものに変更する必要があります。>>は、指定したファイルに追記するための記号です。ここでの設定により、指定されたドメイン名がローカルホストに解決されるようになります。
つまり、これらの設定は、ローカル開発環境で puma-dev を使って、リモートサーバーにあるアプリケーションにローカルのカスタムドメインを使ってアクセスできるようにするものです。