1.

開発環境構築完全ガイド

編集
この記事の要点
  • 開発環境は OS / エディタ / 言語ランタイム / VCS / DB / コンテナ / ターミナルから構成
  • OS は Mac / Linux / Windows + WSL2。Windows ネイティブより WSL2 が現代 Web 開発の主流
  • エディタは VS Code が事実上の標準、JetBrains 系 (IntelliJ/PyCharm/PhpStorm) も根強い
  • 言語ランタイムは バージョン管理ツール (asdf / nvm / pyenv / rbenv / Volta) で複数並存
  • Docker による環境固定 + ドットファイル (chezmoi/dotbot) でマシン乗換 30 分化

開発環境とは

「開発環境 (development environment)」とは、ソフトウェア開発に必要な OS / エディタ / 言語ランタイム / バージョン管理 / ビルドツール / DB / コンテナ / シェル設定を一式揃えたものを指します。本番環境 (production) / ステージング環境 (staging) と対比されるローカル PC 上の作業環境を指す場合と、これら 3 つを総称する場合があります。

環境の段階

環境用途典型例
local (開発環境)エンジニアの PC で動かすWSL2 + Docker Compose
dev (共用開発)チームで動作確認クラウド上の小型 VM / staging のサブセット
staging本番相当の最終確認本番と同構成で別 DB
production (本番)実ユーザが使う負荷分散 + 監視 + バックアップ

1. OS の選択

OS長所短所
macOSUnix + 商用 GUI、JetBrains/Xcode、開発者多数ハード高い、iOS 開発以外で Linux と差は小
Linux (Ubuntu 等)本番と同じ、無料、軽量業務ツール (Excel/Teams 等) と相性
Windows + WSL2業務 OS と両立、Linux 開発も可能WSL のディスク I/O が遅い (場所による)
Windows ネイティブ.NET / Visual Studio 純正開発Web/Linux 系は WSL2 推奨

2. エディタ / IDE

ツール用途
VS Code事実上の標準。拡張で多言語対応。Remote-WSL/SSH/Containers
JetBrains (IntelliJ/PyCharm/PhpStorm/WebStorm/RubyMine/GoLand)言語特化の強力 IDE。リファクタリング/補完が秀逸
Vim / Neovimターミナル内編集。SSH 越し / CLI 派
Emacsカスタマイズの極致
Visual Studio.NET / C++ Windows 開発
XcodeiOS / macOS / Swift 開発 (必須)
Android StudioAndroid 開発 (必須)

3. バージョン管理 (Git)

# Git インストール
sudo apt install -y git           # Linux/WSL
brew install git                  # Mac
choco install git                 # Windows (Chocolatey)

# 初期設定
git config --global user.name  "Your Name"
git config --global user.email "you@example.com"
git config --global init.defaultBranch main
git config --global pull.rebase true
git config --global core.editor "code --wait"

# 鍵生成
ssh-keygen -t ed25519 -C "you@example.com"
cat ~/.ssh/id_ed25519.pub          # GitHub Settings -> SSH Keys に登録

4. 言語ランタイムとバージョン管理

同じ PC で複数バージョン (例: Node 18 と 22) を切り替えたいので、各言語に専用のバージョンマネージャを入れます:

言語マネージャ備考
Node.jsnvm / Volta / fnmVolta はプロジェクト固定が容易
Pythonpyenv + venv / uvuv は近年急速に普及
Rubyrbenv / asdf
JavaSDKMAN / asdfJDK 17/21 LTS が現役
PHPphpenv / DockerDocker で済ますパターン多
Go公式 + asdf
Rustrustup事実上必須
全部asdf / mise一元管理派
# asdf / mise (汎用バージョン管理)
brew install mise
mise install node@22
mise install python@3.12
mise install ruby@3.3
mise use --global node@22 python@3.12

# .tool-versions / .mise.toml をリポジトリに置けば自動切替
cat .tool-versions
# nodejs 22.5.1
# python 3.12.4

5. パッケージ管理

言語マネージャ
Node.jsnpm / pnpm / yarn / bun
Pythonpip / pipx / poetry / uv
Rubygem + bundler
PHPcomposer
JavaMaven / Gradle
Gogo modules (組込)
Rustcargo (組込)
OS 横断 CLIHomebrew / Scoop / winget / Chocolatey

6. データベース

ローカルで DB を動かす方法は 3 通り:

  • OS にネイティブインストール (brew install postgresql)
  • Docker Compose で起動 (推奨)
  • SQLite でファイル単体に閉じる (テスト/小規模)
# docker-compose.yml (Postgres + Redis + MySQL)
services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_PASSWORD: secret
    ports: ["5432:5432"]
    volumes: ["pgdata:/var/lib/postgresql/data"]

  mysql:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
    ports: ["3306:3306"]

  redis:
    image: redis:7-alpine
    ports: ["6379:6379"]

volumes:
  pgdata:

7. Docker / コンテナ

近年は「自分のマシンに直接 PHP/Node/Postgres を入れずに Docker で固定」するスタイルが標準化しつつあります。利点:

  • 環境差異が消える → 「私の PC では動く」が無くなる
  • プロジェクト切替時に旧バージョンが残らない
  • CI/CD でも同じ Dockerfile を使える
# 例: Laravel 開発環境
FROM php:8.3-fpm-alpine
RUN apk add --no-cache git unzip libpq-dev \
 && docker-php-ext-install pdo_pgsql opcache
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer
WORKDIR /app

8. ターミナルとシェル

分類選択肢
シェルbash / zsh / fish / nushell
ターミナルエミュレータiTerm2 (Mac) / Windows Terminal / Alacritty / WezTerm / Ghostty
プロンプトoh-my-zsh / Powerlevel10k / starship
多重化tmux / zellij / screen
便利 CLIripgrep / fd / bat / fzf / eza / delta / jq / yq / gh

9. ドットファイル管理

.zshrc / .gitconfig / .vimrc / .tmux.conf を Git で管理し、新 PC でも 30 分で同じ環境が組めるようにします:

# 代表的ツール
brew install chezmoi    # 推奨
# or
yadm
# or
stow
# or 自作シンボリックリンクスクリプト

# 初期化
chezmoi init --apply git@github.com:you/dotfiles.git

10. SSH 鍵と認証

# 鍵生成 (ed25519 推奨)
ssh-keygen -t ed25519 -C "you@example.com"

# 公開鍵を GitHub / サーバに登録
cat ~/.ssh/id_ed25519.pub
ssh-copy-id user@server

# ~/.ssh/config で接続をまとめる
Host work
    HostName work.example.com
    User alice
    Port 22022
    IdentityFile ~/.ssh/id_work

Host github.com
    User git
    IdentityFile ~/.ssh/id_ed25519

11. シェル初期化スクリプトの構成例

# ~/.zshrc 抜粋
export EDITOR=nvim
export LANG=ja_JP.UTF-8

# starship
eval "$(starship init zsh)"

# mise (バージョン管理)
eval "$(mise activate zsh)"

# alias
alias g='git'
alias ll='eza -lah --git'
alias cat='bat -p'
alias k='kubectl'

# fzf
[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

12. 環境構築の自動化

新 PC を毎回ゼロから手作業で組むのは苦行なので、自動化が大事です:

  • Brewfile: brew bundle dump でインストール済み一覧を保存 → brew bundle で再現
  • Ansible playbook: 大規模な複数 PC 管理
  • devcontainer.json: VS Code Remote Containers でリポジトリ毎に環境を共有
  • Nix: 究極の再現性。学習コストは高い

FAQ

Q: Windows / Mac どちらが良い?
A: 業務指定がなければ Mac か Linux。会社支給が Windows なら WSL2 を入れれば Linux 系開発はほぼ可能。.NET / Visual Studio 主体なら Windows。

Q: バージョンマネージャを使う理由
A: プロジェクト A は Node 18、B は Node 22 のように並存と切替が必須だから。グローバル単一バージョンだと別案件で破綻します。

Q: 全部 Docker でやれば本当に楽?
A: 環境固定の利点は大きい一方、エディタ補完用にホストにも同じ言語を入れたい場面が出てきます。両立が現実解。

編集
Post Share
子ページ
  1. eclipse
  2. NetBeans
  3. Visual Studio
  4. Android Studio
  5. PyCharm
  6. XAMPP
  7. Jupyter Notebook
  8. Unity
  9. Xcode
同階層のページ
  1. 開発環境
  2. 仮想環境
  3. プロジェクト管理(プログラム)
  4. プロジェクト管理(グループウェア)
  5. ネットワーク
  6. バージョン管理
  7. Webサーバー / アプリケーションサーバー
  8. エミュレーター
  9. システム管理
  10. ゲームエンジン
  11. 3Dグラフィックス
  12. 学習・教育用ソフトウェア
  13. Webサイト作成
  14. シミュレーター
  15. Microsoft Office
  16. エディタ
  17. BIM
  18. Bluetooth
  19. ブラウザ
  20. その他

最近更新/作成されたページ