前回は作成したいWebサービスを定義し、必要となるプログラミング言語や環境などを明確化してプレゼン資料にまとめました。
前回の記事
本記事では開発の土台となる環境構築を進めていきます。途中で問題点を発見してやり直している過程もそのまま記載しているので、そこもリアルということで読み進めてみて下さい。
1. 必要なツールをインストールする
a. Node.js
- 理由: フロントエンド(Next.js)とバックエンド(Express.js/NestJS)で使用する。
-
インストール手順:
- Node.js公式サイトにアクセス。
- 推奨版(LTS)をダウンロードしてインストール。
b. Git
- 理由: バージョン管理とコード共有のため。
-
インストール手順:
- Git公式サイトにアクセス。
- OSに合わせたバージョンをダウンロードしてインストール。
- インストール後、以下をターミナルで実行してセットアップ:
git config --global user.name "あなたの名前"
git config --global user.email "あなたのメールアドレス"
c. Package Manager
- 選択肢: npm(Node.jsに付属)または Yarn(必要なら)。
- インストール: Node.jsインストール時に npm が自動でセットアップされる。
d. コードエディタ
-
推奨: Visual Studio Code
- 理由: 拡張機能が豊富で、Node.js/Next.jsに最適。
- インストール: VS Code公式サイトからダウンロード。
e. PostgreSQL
- 理由: データベースとして採用。
-
インストール手順:
- PostgreSQL公式サイトにアクセス。
- OSに合ったバージョンをダウンロードしてインストール。
2. プロジェクト構造を準備する
a. ディレクトリ構造
以下のようなディレクトリ構造を作成します:
3. フロントエンド環境の構築
- Next.jsプロジェクトのセットアップ
- 必要なパッケージをインストール
-
開発サーバーを起動
- ブラウザで http://localhost:3000 にアクセスして確認。
4. バックエンド環境の構築
- Express.jsプロジェクトのセットアップ
- 基本的なサーバーファイルを作成
-
サーバーを起動
- ブラウザで http://localhost:5000 にアクセスして確認。
5. データベース環境の構築
-
PostgreSQLをセットアップ
- PostgreSQLをインストール後、psql コマンドラインツールを使用。
- 新しいデータベースを作成
- 接続情報を環境変数に設定
- Node.jsからPostgreSQLに接続
6. Gitでプロジェクトを管理
- Gitリポジトリを初期化
- GitHubリポジトリを作成してリモートに追加
7. ホスティングの準備
a. フロントエンド(Vercel)
- Vercelアカウントを作成。
- プロジェクトをVercelにデプロイ。
b. バックエンド(AWSまたはRender)
- AWS EC2またはRenderでインスタンスを作成。
- Node.jsサーバーをインスタンス上で起動。
8. テスト環境を構築
- Jestを使用してフロントエンド・バックエンドのテストを実装
上記のように複数の過程があるので、今回はNode.jsとGit、PostgreSQLのインストールをAIに聞きながら実施します。
Node.jsとGit、PostgreSQLをインストールする
まずは上記に従ってNode.jsとGit、PostgreSQLのインストーラーを自分のPCへダウンロードします。
Node.jsより
Node.jsの公式サイトへアクセスし、トップ画面にある「Download Node js[LTS]」をクリックします。
Node.js:https://nodejs.org/en
インストーラーでインストール作業が終わったら、WindowsならPower Shell、Macならターミナルで下記のコマンドを実行してバージョンを確認してみます。
node --version
基本的にバージョンを確認されるコマンドで結果が出力されたら、その送付とは無事インストールされている認識で問題ないでしょう。
Gitより
Gitのインストール方法も同様です。公式ページへアクセスすると上記のようなトップ画面が表示されるので、そちらに記載されているダウンロードボタンから入手してください。
Gitのバージョンは下記のコードで確認できます。
git --version
PostgreSQLより
次にPostgreSQLをインストールします。ますは下記のURLから公式のダウンロードページへアクセスしてください。
PostgreSQL:https://www.postgresql.org/download/
するとOSごとのリンクが表示されるので、任意のボタンをクリックします。
PostgreSQLより
かなりわかりずらいですが、上記画面の「Download the installer」という赤文字がダウンロードするためのリンクとなっています。ここをクリックしましょう。
PostgreSQLより
またOSごとのページが表示されるので、上記から自分が使っている環境のリンクをクリックするとインストーラーがダウンロードされます。
テキストエディタはCursorを使ってみる
AIの提案ではVSCodeを推進していましたが、今回はCursorというAI機能を搭載したテキストエディタを使うことにします。
CursorはVSCodeと同じくプラグインが豊富でUIも似ていることから、個人的にはVSCodeの上位互換という認識です。
自然言語を駆使してリアルタイムでのコード補完やエラーチェックにも対応しているので、VSCodeより適していると判断しました。
開発環境は自分のPCで良いのか再確認
ここまで順調に作業を進めていましたが、その過程であることに気づきました。
この辺りを再度ChatGPTへ確認してみます。
・自分が使っているPCのOS(WindowsやmacOS)
・自分のPCに仮想環境を作る(CentOSなど)
・Dockerを使う
~最初の文は割愛~
結論: あなたのプロジェクトに最適な選択肢
最適: Dockerを使う
理由:
本番環境との一致を確保しやすく、環境差異を減らせる。
開発メンバーが増えても、同一の環境を簡単に共有できる。
拡張性が高く、機能追加や運用スケールアップに柔軟。
代替: 自分のPCのOS
理由:
開発者が少人数かつシンプルに開発を始めたい場合に最適。
初期設定が簡単で、学習コストがほぼ不要。
次のステップ: Docker環境のセットアップ
Dockerのインストール
Docker公式サイトからインストール。
Windowsの場合は、WSL2を有効化して使用。
Docker Composeファイルの作成
フロントエンド、バックエンド、データベースを連携するために docker-compose.yml
を作成。
Docker環境での開発開始
各サービスをコンテナ化し、docker-compose up
で開発環境を立ち上げ。
Docker環境のセットアップに進む際は、具体的な手順もサポートできますのでお気軽にお知らせください!
はい、現在のWindows環境にインストールされているGit、Node.js、PostgreSQLをDockerに移行することは可能です。具体的には、Dockerコンテナ上にそれぞれの環境を再構築する形になります。
以下に、現在の環境をDockerへ移行する手順を説明します。
なるほど、Windows内の環境をdockerへ移行できるようです。とはいえ今の状態はただインストールしただけなので、移行するのと再度dockerでインストールするのはどちらが手間なのか気になりますね。こちらについても聞いてみます。
1. 現在の状況の整理
- ・Git、Node.js、PostgreSQLはインストール済みだが、まだ何も設定していない。
- ・データや特別な設定が存在しないため、移行のためのデータエクスポートや設定ファイルの調整は不要。
2. 手間の比較
- A. 現在の環境をDockerに移行する場合
- ・既存のNode.jsやPostgreSQLの設定をエクスポートする必要がある。
- ・Node.jsプロジェクトが空の場合は特に移行するものがなく簡単。
- ・PostgreSQLの場合、現在はデータがないのでデータ移行の手間は不要。
- ・現在の環境とDockerコンテナの接続を調整する必要がある。
- ・Docker内のPostgreSQLとホストのNode.jsを連携させるには、ネットワーク設定が必要。
手間:
- ・現在の環境を理解し、適切な方法でDockerに合わせて移行する必要がある。
- ・特に、ホスト環境とDocker環境の連携は、環境差異を考慮する必要がある。
- B. Docker内で再度インストールする場合
- ・Dockerfileやdocker-compose.ymlを用意し、Node.jsやPostgreSQLを新規にセットアップ。
- ・Gitはホスト環境でそのまま利用可能。
- ・必要に応じて、PostgreSQLやNode.jsで新規設定を行う。
- ・コンテナを起動して環境を確認。
手間:
- ・すべての環境を新規構築する手間はあるものの、Dockerを初めて使う場合でも手順はシンプル。
- ・公式イメージを利用すれば、最小限の設定で稼働可能。
3. 手間の結論
- ・移行する場合は、現在の環境を理解し、それをDocker環境に適合させる作業が必要。
- ・再度Dockerでインストールする場合は、新しい環境を作るだけなので、作業が単純かつ効率的。
推奨: Docker内で再度インストール
- 理由:
- ・作業のシンプルさ: 現在の環境に依存しないので、新しい環境を作るだけで完結。
- ・統一性の確保: Docker環境内で完全に分離されるため、本番環境との統一がしやすい。
- ・無駄を省ける: 現在のインストール済みツールは利用されていないため、Docker内で一から構築するほうが合理的。
次のステップ
- ・Docker Desktopのインストール
- ・WindowsでWSL2を有効化して、Docker Desktopをインストールします。
- ・Docker Composeを準備
- ・Node.jsとPostgreSQLを含む
docker-compose.yml
ファイルを作成します。 - ・新しい環境を構築
- ・Docker内でNode.jsとPostgreSQLをセットアップして、開発を始めます。
結論が出ましたね。Docker上で開発環境を作り直す方が合理的のようです。このような遠回りは開発未経験者ならではのデメリットかもしれません。
ですが今回は比較的早い段階で気づいたのでよしとします。では気を取り直してdockerを使った開発環境を始めます。
<!--ここから-->Dockerで開発環境を作り直す
Dockerとはアプリケーションとその動作環境をパッケージ化し、どこでも簡単に動作させられるコンテナ型仮想化技術です。開発から運用まで一貫した環境を提供し、効率的でスムーズなソフトウェアのデプロイを可能にします。
Dockerについては下記の記事で詳しく解説します。
まずはDocker Desktopをインストールします。具体的な手順は下記の記事で解説しているので、気になる方はチェックしてみて下さい。
Docker Desktopをインストールしたところで、Webサービス開発に必要な開発環境をインストールしていきます。とはいえ、やり方がわからないのでChatGPTに聞きながら進めます。
1. GitをDockerでインストール
方法:
Gitは通常、Dockerコンテナの中でインストールして使用します。以下はGitをインストールしたコンテナを作成する例です。
- Git用のDockerコンテナを作成
Dockerfileを用意してGitをインストールします。
mkdir git-container
cd git-container
echo "
FROM ubuntu:latest
RUN apt-get update && apt-get install -y git
CMD [\"git\", \"--version\"]
" > Dockerfile
docker build -t git-image .
docker run --rm git-image
出力例:
git version 2.xx.x
コンテナ内でGitを使うには、以下を実行:
docker run -it git-image bash
2. Node.jsをDockerでインストール
方法:
Node.jsの公式Dockerイメージを使用するのが簡単です。
- Node.js公式イメージを取得
docker pull node:18
docker run -it --rm node:18 bash
-it: 対話モードで実行。
--rm: コンテナ終了時に自動削除。
node -v
npm -v
出力例:
v18.xx.x
8.xx.x
プロジェクトディレクトリをコンテナ内にマウント:
docker run -it --rm -v "$(pwd)":/usr/src/app -w /usr/src/app node:18 bash
3. PostgreSQLをDockerでインストール
方法:
PostgreSQLの公式Dockerイメージを使用します。
- PostgreSQL公式イメージを取得
docker pull postgres:15
docker run -d \
--name postgres \
-e POSTGRES_USER=myuser \
-e POSTGRES_PASSWORD=mypassword \
-e POSTGRES_DB=mydatabase \
-p 5432:5432 \
postgres:15
--name: コンテナ名を指定。
-e POSTGRES_USER: ユーザー名。
-e POSTGRES_PASSWORD: パスワード。
-e POSTGRES_DB: データベース名。
-p: ホストとコンテナのポートをマッピング。
コンテナにログイン:
docker exec -it postgres psql -U myuser -d mydatabase
4. Docker Composeで統合管理
Git、Node.js、PostgreSQLを1つの環境で管理するには、docker-compose.yml を作成します。
docker-compose.yml の例:
version: '3.8'
services:
git:
image: ubuntu:latest
container_name: git-container
command: bash
stdin_open: true
tty: true
volumes:
- ./my-repo:/my-repo
build:
context: .
dockerfile: Dockerfile-git
node:
image: node:18
container_name: node-container
volumes:
- ./app:/usr/src/app
working_dir: /usr/src/app
stdin_open: true
tty: true
postgres:
image: postgres:15
container_name: postgres
environment:
POSTGRES_USER: myuser
POSTGRES_PASSWORD: mypassword
POSTGRES_DB: mydatabase
ports:
- "5432:5432"
Docker Composeの起動:
- 必要なファイルを準備
Dockerfile-git を作成:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y git
CMD ["/bin/bash"]
docker-compose up -d
Git:
docker exec -it git-container bash
Node.js:
docker exec -it node-container bash
PostgreSQL:
docker exec -it postgres psql -U myuser -d mydatabase
これで、Docker環境でGit、Node.js、PostgreSQLを統合的に利用できるようになります。
ただここで怒涛のエラーラッシュに遭います。エラーが表示されたりChatGPTの指示でわからないところが出たりするごとに、ChatGPTへ質問を繰り返します。実際位質問した一部の内容は下記の通りです。
「Dockerfileを用意」とありますが、これってどうしたらいいんですか?
「それはpower shellでやる動作ですか?」
「Dockerイメージをビルド
docker build -t git-image .
これがうまくいきません。下記のエラーが表示されます。
PS C:\Users\ユーザー名\desktop\git-container> docker build -t git-image .
[+] Building 0.1s (1/1) FINISHED docker:desktop-linux
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 221B 0.0s
ERROR: failed to solve: Internal: Internal: Internal: stream terminated by RST_STREAM with error code:
どのように対処すればいいですか?」
コマンドプロンプトで操作する場合、LinuxやmacOSで利用できる「Bash」を使ったコマンドも随時必要になります。そこで混乱することもあるので、わからないところはしつこく聞いて使い倒しましょう。
結果としてGit・Node.js・postgreSQLを無事インストールできたので、その過程を各ソフトごとに書き残しておきます。
DockerでUbuntuをセットアップしGitをインストールする手順
DockerでUbuntuイメージを取得
docker pull ubuntu:latest
Ubuntuコンテナを起動
docker run -it ubuntu:latest bash
これでUbuntuのシェル(Ubuntuの操作画面(bashともいう))に入ります。
コンテナ内でGitをインストール
- パッケージ情報を更新します。
apt-get update
- Gitをインストールします。
apt-get install -y git
- Gitのバージョンを確認します。
git --version
→ Gitのバージョンが表示されれば成功です。
- コンテナから抜けます。
exit
コンテナの状態を確認
docker ps -a
出力結果の CONTAINER ID
をメモします(例: 5dafldn245323avsd2
)。
コンテナをイメージとして保存
docker commit "CONTAINER ID" ubuntu-with-git
新しいイメージを使って再利用
docker run -it ubuntu-with-git bash
停止したコンテナに再接続する方法
docker exec -it "CONTAINER ID" /bin/bash
これでUbuntuのセットアップからGitのインストール、新しいイメージの保存まで完了します。
ここまでのメモ
-
WindowsやUbuntuのように、OSによって利用できるコマンドが異なることがある。UbuntuだとBashが使えるみたい。ただWindowsでもGit Bashを使えばLinuxのコマンドを利用できる。Dockerに仮想環境を作ってそこにUbuntuというOSをインストールしているイメージ。
DockerでNode.jsをインストールする手順
apt-get update と必要なパッケージのインストール
apt-get update && apt-get install -y curl
Node.jsのセットアップスクリプトをダウンロードするためには、curlというツールが必要らしいので、上記のコマンドでインストールします。
Node.jsのセットアップスクリプトを実行
curl -fsSL https://deb.nodesource.com/setup_18.x | bash -
curlで上記のコマンドを実行することで、Node.js の公式リポジトリが追加されます。今回はsetup_18.x
を指定していますが、別のバージョンをインストールしたい場合はURLの末尾を変更してください。(setup_16.xなど
)
Node.jsをインストール
apt-get install -y nodejs
上記のコードでNode.jsとともにnpm(Node.jsのパッケージマネージャ)もインストールされます。
インストール後のバージョン確認
node --version
npm --version
node.jsとnpmが正しくインストールされたことを確認できます。
ここから下がエラーDockerでPostgreSQLをインストールする手順
必要なツールをインストール
apt-get install -y wget gnupg lsb-release
PostgreSQLリポジトリを追加するために必要なツールをインストールします。
PostgreSQLリポジトリを追加
echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list
現在のUbuntuバージョンに応じたリポジトリを追加します。
PostgreSQLのGPGキーを追加
wget -qO - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
PostgreSQL公式リポジトリの信頼性を確保するためにGPGキーを追加します。
パッケージリストを更新してPostgreSQLをインストール
apt-get update && apt-get install -y postgresql postgresql-contrib
PostgreSQLとその便利な拡張機能をインストールします。
この手順でPostgreSQLをインストールすることが可能です。
Docker Composeを作成する
これでひと段落ですが、ChatGPTの指示に気になるポイントがありました。それが「Docker Composeファイルを作成」です。なのでこのDocker Composeの必要性についても聞いてみます。
しかし下記について疑問があります。
Docker Composeで統合管理
Git、Node.js、PostgreSQLを1つの環境で管理するには、docker-compose.yml を作成します。
上記の必要性がわかりません。それぞれインストールするだけではだめなのですか?
Docker Composeを使用することで、複数のDockerコンテナ(Git、Node.js、PostgreSQLなど)を1つのコマンドでまとめて管理できます。それぞれを個別にインストールするだけでは、統合管理が難しくなり、コンテナ同士の通信や依存関係の管理が手間になります。 Docker Composeを使うことで、以下のような利点があります:
~以下メリットや必要性を永遠に挙げてきたので割愛~
簡単にまとめると、Docker Composeは利用しないよりした方がいいみたいなので使用します!
はじめに下記のコマンドでDocker Compose用のフォルダを作成し、そのフォルダへ移動します。
mkdir my-docker-project
cd my-docker-project
次に下記のコードでYAML(ymlファイル)を作成します。
New-Item -ItemType File -Name docker-compose.yml
ここから上はOK
テキストエディタ「Cursor」で上記のファイルを開き、下記のコードを入力します。
version: '3.8'
services:
# Node.js コンテナ
app:
image: node:18
container_name: node-container
working_dir: /usr/src/app
volumes:
- ./app:/usr/src/app
ports:
- "3000:3000" # ホストの3000番ポートをコンテナの3000番ポートにマッピング
environment:
- DATABASE_URL=postgresql://user:password@db:5432/mydatabase
depends_on:
- db
# PostgreSQL コンテナ
db:
image: postgres:15
container_name: postgres-container
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
ports:
- "5432:5432" # ホストの5432番ポートをコンテナの5432番ポートにマッピング
volumes:
- postgres_data:/var/lib/postgresql/data
# Git コンテナ
git:
build:
context: .
dockerfile: Dockerfile-git
container_name: git-container
stdin_open: true
tty: true
volumes:
postgres_data:
上記の状態でdocker-composeを起動するも「dockerファイルが見つからない」というエラーが表示されました。なので上記のコードで作成します。
notepad Dockerfile-git
そして以下の内容を作成した「Dockerfile-git」に記述して保存します。
FROM ubuntu:20.04
RUN apt-get update && apt-get install -y git
CMD ["git", "--version"]
「Dockerfile-git」の拡張子が「.txt」になっていたので、下記のコマンドで修正します。
rename-item Dockerfile-git.txt Dockerfile-git
ここで下記のコマンドを入力し、docker composeを起動してみます。
docker-compose up -d
最後に下記のコマンドで駆動しているのか確認しましょう。
docker ps
これで一端の開発環境が完了です。プログラミングを含むIT知識が全くない状態だと、AIでサービスの表面は作れても、開発環境はなかなかハードルが高いんじゃないかというのが現在思うところです。
次回からはこれからやるべきことを再確認し、Next.jsのインストールやコーディング作業に移っていきます。