ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
開発環境とは
「開発環境 (development environment)」とは、ソフトウェア開発に必要な OS / エディタ / 言語ランタイム / バージョン管理 / ビルドツール / DB / コンテナ / シェル設定を一式揃えたものを指します。本番環境 (production) / ステージング環境 (staging) と対比されるローカル PC 上の作業環境を指す場合と、これら 3 つを総称する場合があります。
環境の段階
| 環境 | 用途 | 典型例 |
|---|---|---|
| local (開発環境) | エンジニアの PC で動かす | WSL2 + Docker Compose |
| dev (共用開発) | チームで動作確認 | クラウド上の小型 VM / staging のサブセット |
| staging | 本番相当の最終確認 | 本番と同構成で別 DB |
| production (本番) | 実ユーザが使う | 負荷分散 + 監視 + バックアップ |
1. OS の選択
| OS | 長所 | 短所 |
|---|---|---|
| macOS | Unix + 商用 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 開発 |
| Xcode | iOS / macOS / Swift 開発 (必須) |
| Android Studio | Android 開発 (必須) |
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.js | nvm / Volta / fnm | Volta はプロジェクト固定が容易 |
| Python | pyenv + venv / uv | uv は近年急速に普及 |
| Ruby | rbenv / asdf | — |
| Java | SDKMAN / asdf | JDK 17/21 LTS が現役 |
| PHP | phpenv / Docker | Docker で済ますパターン多 |
| Go | 公式 + asdf | — |
| Rust | rustup | 事実上必須 |
| 全部 | 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.js | npm / pnpm / yarn / bun |
| Python | pip / pipx / poetry / uv |
| Ruby | gem + bundler |
| PHP | composer |
| Java | Maven / Gradle |
| Go | go modules (組込) |
| Rust | cargo (組込) |
| OS 横断 CLI | Homebrew / 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 |
| 便利 CLI | ripgrep / 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: 環境固定の利点は大きい一方、エディタ補完用にホストにも同じ言語を入れたい場面が出てきます。両立が現実解。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?