ローカル開発環境の作り方|XAMPP・Dockerの違いと選び方
ローカル開発環境をこれから作るなら、まず押さえたい結論はシンプルです。すぐに1台でPHPとMariaDBを動かしたいならXAMPP、複数案件を切り替えたりチームで同じ環境を配りたいならDockerが向いています。
特に初心者は「とにかく今日中に動かしたい」のか、「あとで環境差分に悩みたくない」のかで選ぶと失敗しにくくなります。XAMPPは導入が速く、Dockerは再現性が高い。この違いが、実務ではかなり大きいです。
- XAMPPは、Apache・PHP・MariaDB・phpMyAdminをまとめて入れてすぐ試せる
- Dockerは、
compose.yamlで環境をコード化でき、PCを替えても同じ構成を再現しやすい - 2026年4月21日確認時点では、Docker DesktopはDocker Composeを同梱
- 同日確認時点のXAMPP通常配布版は、Windows/LinuxでPHP 8.2.12、macOSでPHP 8.2.4が案内されている
ここがポイント: 速さを取るならXAMPP、再現性を取るならDocker。迷ったら、この1本で判断できます。
まず結論を比較で見る
導入前に、違いを一度並べておくと選びやすくなります。
| 比較軸 | XAMPP | Docker |
|---|---|---|
| 導入の速さ | 非常に速い。インストーラー中心 | 初回はやや重い。Docker Desktopの準備が必要 |
| 環境の再現性 | 低め。各PCで設定差が出やすい | 高い。設定ファイルを共有しやすい |
| 複数案件の切り替え | やや苦手。PHPやDBの版管理で詰まりやすい | 得意。案件ごとに構成を分離しやすい |
| 学習コスト | 低い | 中程度。コンテナ、イメージ、ボリュームの理解が必要 |
| 実務とのつながり | 個人学習や小規模検証向き | 本番・CI/CD・チーム開発に寄せやすい |
最初の1本を選ぶだけなら、学習用はXAMPP、実務導入前提ならDockerで考えるのが分かりやすいです。
前提環境と確認時点
この記事は、PHP系のローカル開発を想定しています。WordPress、Laravel、素のPHPアプリを試す場面なら、そのまま考え方を流用できます。
確認時点は 2026年4月21日 です。バージョン差で判断が変わる部分だけ、先に押さえておきます。
- Docker DesktopはMac、Windows、Linux向けに提供され、Docker Composeを含みます
- Docker DesktopのWindows向け案内では、WSL 2またはHyper-Vが前提です
- 同案内では、WSL 2.1.5以降と8GB RAMが要件として示されています
- XAMPP公式FAQでは、XAMPPは本番運用向けではなく開発環境向けと明記されています
- XAMPPの通常配布版はOSごとに収録PHPの版がそろっていないため、「PHP 8.3以上で合わせたい」ような案件ではDockerの方が選びやすくなります
ここは見落とされがちです。ローカル環境は「動けば何でも同じ」に見えますが、案件ごとのPHP版をそろえたいかどうかで後の手戻りが大きく変わります。
XAMPPで作る最小構成
XAMPPの強みは、ローカルのWebサーバーを最短で立ち上げられることです。Apache、MariaDB、phpMyAdminを一気に入れて、localhost ですぐ確認できます。
手順
- XAMPPをインストールする
- XAMPP Control Panelで
ApacheとMySQLを起動する htdocs配下に確認用ディレクトリを作る- PHPファイルを置いてブラウザで開く
Windowsなら、たとえば次のような配置です。
C:\xampp\htdocs\local-sample\index.php
<?php
echo "XAMPP local env OK";
ブラウザで次を開きます。
http://localhost/local-sample/
想定される表示は次のとおりです。
XAMPP local env OK
XAMPPが向く場面
- PHPの文法確認をすぐ始めたい
- WordPressテーマや簡単なPHP修正を1台で試したい
- Dockerの概念より先に、HTTPとDB接続の流れを理解したい
- GUI中心でApacheとMySQLを起動停止したい
XAMPPの弱いところ
- PHPやMariaDBの版を案件ごとに切り替えにくい
- PCのローカル環境に設定が直接乗る
- 複数案件でポートや設定がぶつかりやすい
- チームに「同じ環境」をそのまま渡しにくい
XAMPPは便利ですが、便利さの代わりに環境差分を吸収しにくいのが弱点です。個人学習には十分でも、案件が2本、3本と増えると苦しくなります。
Dockerで作る最小構成
Dockerの強みは、開発環境そのものをファイルとして管理できることです。Docker公式のComposeドキュメントでも、複数サービスを1つのYAMLで定義し、docker compose up でまとめて起動する流れが基本になっています。
最小の compose.yaml
作業ディレクトリに compose.yaml を置きます。
services:
web:
image: php:8.2-apache
ports:
- "8080:80"
volumes:
- ./src:/var/www/html
db:
image: mariadb:11
environment:
MARIADB_ROOT_PASSWORD: localroot
MARIADB_DATABASE: appdb
MARIADB_USER: appuser
MARIADB_PASSWORD: apppass
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:
続いて src/index.php を作ります。
<?php
try {
$pdo = new PDO(
'mysql:host=db;dbname=appdb;charset=utf8mb4',
'appuser',
'apppass'
);
echo 'Docker local env OK';
} catch (PDOException $e) {
echo 'DB connection failed: ' . $e->getMessage();
}
起動コマンドはこれです。
docker compose up -d
ブラウザで次を開きます。
http://localhost:8080
正常なら、次の表示になります。
Docker local env OK
この構成で分かること
webとdbを分けて管理できるdb_dataという名前付きボリュームでDBデータを保持できる- ほかのPCでも同じ
compose.yamlを使って起動しやすい
Docker公式のQuickstartでも、名前付きボリュームを使うと compose down と compose up の間でデータを保持できると説明されています。DBを毎回まっさらにしたくないなら、ここは実務で重要です。
Dockerが向く場面
- チーム全員で同じPHP版、同じDB版を使いたい
- 本番に近い構成で動作確認したい
- WordPress、Laravel、API、DBを案件ごとに分けたい
- Gitリポジトリに環境定義を含めたい
Dockerの注意点
- 初回導入はXAMPPより重い
- WindowsではWSL 2や仮想化設定でつまずくことがある
- コンテナを消す操作とボリューム削除の違いを理解しないと、DBを消してしまう
実務ではどちらを選ぶべきか
ここは「良し悪し」ではなく、「何を優先するか」で分けるのが正解です。
XAMPPを選ぶとよいケース
- 学習開始までの速さを最優先したい
- PHPとMySQLをまず1台で動かしたい
- 配布や共有より、自分だけで試す時間が長い
- ApacheやphpMyAdminをGUIで扱いたい
特に、HTMLとPHPのつながりを確認したい段階では、XAMPPはまだ強いです。ブラウザで localhost を開いてすぐ反応が返るので、最初の一歩が軽いからです。
Dockerを選ぶとよいケース
- 案件ごとにPHP版を分けたい
- 同じ設定を他メンバーにも配りたい
- 今後CIや本番環境とのズレを減らしたい
- DB、Redis、Mailhogなどをまとめて立ち上げたい
Dockerは、環境の説明を口頭でしなくてよくなるのが大きいです。README と compose.yaml があれば、再現の中心がファイルに移ります。ここがXAMPPとの決定的な差です。
迷ったときの実用的な選び方
- 1週間以内に学習成果を出したい: XAMPP
- 半年単位で案件や保守を続ける: Docker
- 個人ブログや簡単なテーマ修正だけ: XAMPP寄り
- チーム開発、複数案件、版固定が必要: Docker寄り
よくある失敗と対処
短時間で詰まりやすいポイントだけ先に見ておくと、導入がかなり楽になります。
XAMPPで多い失敗
Apacheが起動しない- 80番や443番ポートを別のWebサーバーが使っていることがあります
- そのまま外部公開前提で使ってしまう
- 公式FAQでも、XAMPPは開発用で本番向けではないと案内されています
- PHP版を後から変えたくなって詰まる
- 複数案件があるなら、最初からDockerの方が整理しやすいです
Dockerで多い失敗
docker compose down -vを軽く実行してDBを消す- パスワードを
compose.yamlに直書きしたままGitへ入れる - WindowsでWSL 2や仮想化が未設定のまま導入しようとする
localhost:8080を開いても、コンテナ側のポート公開設定がずれている
認証情報の扱いも注意が必要です。上のサンプルはローカル確認用です。実務では次を守った方が安全です。
- 本物のパスワードやAPIキーは
.envなどで分離する .envをGitに含めるかどうかは運用ルールを決める- 本番とローカルで同じ秘密情報を使わない
代替手段も知っておく
XAMPPとDockerの二択で考えがちですが、用途によっては別の選択肢もあります。
- ローカルでWordPressをすぐ試したいなら、専用ローカル環境ツールの方が早いことがあります
- PHP以外も含めて開発環境を共通化したいなら、Dockerの方が拡張しやすいです
- macOSでGUI中心に扱いたい場合でも、案件ごとの版固定が必要ならDockerの優位は残ります
つまり、XAMPPは「早い」、Dockerは「残る」と覚えると整理しやすいです。今日の作業だけを見るならXAMPP、来月の保守まで見るならDocker、という分け方が現実的です。
まとめ
ローカル開発環境の作り方で迷ったら、まずは次の3点で決めてください。
- すぐ動かすことが最優先ならXAMPP
- 環境差分を減らしたいならDocker
- 複数案件やチーム共有を考えるなら最初からDocker
特に2026年4月21日時点では、XAMPPの通常配布版はOSごとに収録PHPの版差があります。「案件の指定バージョンに合わせる必要があるか」は、導入前に必ず確認したいポイントです。ここを曖昧にしたまま始めると、動いたあとで作り直しになります。
