Laravel + Vue.js を使った開発をしている中で、「Sailって使わなきゃダメ?」「Docker重すぎるんだけど…」と思ったことがある人は多いはず。自分の開発スタイルを見直す機会にもなったので、備忘録としてまとめます。


結論:ローカル実行で全く問題なし

現在、自分は以下のような構成で開発しています。

  • php artisan serve(Laravel)
  • npm run dev(Vue.js / Vite)
  • DBやRedisなど一部だけDockerで起動

Docker(Laravel Sail)は使っていませんが、全く困っていません。


なぜDockerが重いのか?

特にMacやWindows環境では、DockerのファイルI/O(マウント)がとにかく遅い。

  • node_modulesvendor の大量ファイルで激重に
  • HMR(Hot Module Replacement)がうまく動かない or 激遅
    • **HMRは使用できないという欠点がある。**更新が1〜2分程度かかることもあり、HMRのリアルタイム更新という利点が完全に失われてしまう。
  • Bladeファイルの更新も、Docker上では反映に時間がかかるケースがあり、テンプレート修正の確認作業がストレスになる
  • npm install に時間がかかりすぎて地獄

開発ストレスが非常に高くなる要因です。


Laravel Sailとは?

Sail は Laravel の公式 Docker 環境です。つまり、Sailを使う=Docker上でLaravelを実行することになります。

./vendor/bin/sail up -d        # コンテナ起動
./vendor/bin/sail artisan ...  # Artisan コマンド実行
./vendor/bin/sail npm run dev  # npm 実行

便利な面もありますが、Dockerを前提とした環境になるため、ローカル開発が重くなりがちです。


Sailを使わないメリット

項目Sailなし(ローカル)開発のメリット
起動速度爆速。ファイルI/Oも軽快
HMRきちんと動く(ViteやWebpackの開発体験が快適)
理解しやすさLaravelの構造や挙動が直接見える
デバッグXdebugやtelescope等も導入しやすい
柔軟性開発ツールをホストマシンに自由に構成できる

どんな時にSailを使うべき?

  • 初学者で環境構築が不安
  • チームで環境を統一したい
  • CI/CDをDockerで統一している
  • 開発環境を完全に本番に近づけたい

ただし、ローカル開発の快適さとはトレードオフです。


Tips:sailコマンドでよく使うもの

./vendor/bin/sail up -d        # コンテナ起動
./vendor/bin/sail down         # 停止
./vendor/bin/sail shell        # コンテナに入る
./vendor/bin/sail artisan migrate
./vendor/bin/sail composer install
./vendor/bin/sail npm run dev

エイリアス登録すると楽:

alias sail='[ -f sail ] && bash sail || bash vendor/bin/sail'

まとめ

  • ローカル実行で php artisan serve + npm run dev が今のところ最も快適
  • Docker(Sail)は環境統一やCI用には良いが、ローカル開発には重い
  • 開発体験重視なら、ローカル優先がオススメ

本番環境と開発環境のバランスをどう取るか、自分のスタイルに合わせて選ぶのが正解。


今後は .env 設定や、DBだけDockerで動かす構成例なども追記していく予定。

投稿者 kojiro777

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です