プログラミングをしていると、突然開発環境が動かなくなることがあります。
昨日までは問題なく動いていたのに、今日になって起動しない。
教材どおりに進めているはずなのに、自分の画面だけエラーが出る。
コマンドを実行しても、何が原因なのか分からない。
こうしたときに、手当たり次第に設定を変更したり、エラー文をそのままAIに貼り付けたりする人は少なくありません。
しかし、開発環境のトラブル対応で重要なのは、知識量よりも「確認する順番」です。
順番を決めずに調べ始めると、本来の原因とは関係のない箇所まで変更してしまい、状況をさらに悪化させることがあります。
今回は、開発環境が動かないときに、どのような順番で確認すればよいのかを整理します。
まずはエラー文を読む
最初に確認するべきなのは、画面に表示されているエラー文です。
当たり前に聞こえるかもしれませんが、エラー文をほとんど読まずに検索を始める人は意外と多くいます。
エラー文には、原因を特定するための情報が含まれています。
たとえば、次のような内容です。
ファイルが見つからない
コマンドが存在しない
ポートがすでに使用されている
パッケージがインストールされていない
権限がない
設定ファイルの記述が間違っている
エラー文をすべて理解できなくても問題ありません。
まずは、次の3点を探します。
どのコマンドを実行したときに出たか
どのファイルや行が問題だと書かれているか
エラーの種類を表す単語は何か
長いエラー文でも、重要なのは最後の数行であることがよくあります。
大量の英語が表示されたからといって、すぐに画面を閉じるのではなく、まずは落ち着いて内容を確認しましょう。
正しいディレクトリにいるか確認する
次に確認するのは、ターミナルで正しいディレクトリを開いているかどうかです。
開発環境が動かない原因として、非常に多いのがディレクトリの間違いです。
たとえば、本来はプロジェクトフォルダの中で実行する必要があるコマンドを、デスクトップや別のフォルダで実行しているケースです。
この状態では、設定ファイルやパッケージ情報が見つからないため、正常に起動できません。
特に、次のようなエラーが出ている場合は、ディレクトリを疑う必要があります。
package.jsonが見つからない
composer.jsonが見つからない
docker-compose.ymlが見つからない
指定されたファイルやディレクトリが存在しない
まずは、現在いる場所を確認します。
そして、その場所にプロジェクトに必要なファイルが存在するかを確認します。
初歩的な確認に見えますが、ここを飛ばして複雑な原因を探し始めると、かなりの時間を無駄にします。
実行したコマンドが正しいか確認する
ディレクトリに問題がなければ、実行したコマンドを確認します。
コマンドの入力ミスだけでなく、そもそもそのプロジェクトで使用するコマンドが違っている可能性もあります。
たとえば、次のような違いです。
npm run dev
npm start
npm run watch
yarn dev
pnpm dev
同じJavaScriptのプロジェクトでも、設定されているコマンドは異なります。
以前のプロジェクトで使用していたコマンドが、現在のプロジェクトでも使えるとは限りません。
package.jsonなどの設定ファイルを確認し、実際にどのスクリプトが登録されているかを見る必要があります。
また、インターネット上の記事に書かれているコマンドをそのまま実行するのも危険です。
使用しているフレームワークやバージョン、プロジェクト構成が違えば、必要なコマンドも変わります。
「一般的に使われているコマンド」ではなく、「このプロジェクトに設定されているコマンド」を確認することが重要です。
必要なパッケージが入っているか確認する
コマンドが正しい場合は、必要なパッケージがインストールされているか確認します。
GitHubからプロジェクトを取得した直後や、別のパソコンへ環境を移した直後は、パッケージがまだインストールされていないことがあります。
Gitで管理されているのは、基本的にソースコードや設定ファイルです。
node_modulesなど、容量の大きい依存パッケージはGitに含めないことが一般的です。
そのため、プロジェクトを取得しただけでは、開発環境が動かない場合があります。
また、すでにパッケージをインストールしていたとしても、次のような理由で壊れることがあります。
インストール中に処理が止まった
Node.jsのバージョンを変更した
パッケージ構成が更新された
lockファイルと実際の環境に差がある
別のOSで作られた環境を移動した
この場合は、依存関係を入れ直すことで改善することがあります。
ただし、いきなり関連ファイルをすべて削除するのは避けた方がよいでしょう。
まずは現在の状態を確認し、必要に応じて再インストールします。
原因を理解しないまま削除と再インストールを繰り返すと、一時的に直っても、同じ問題が再発したときに対応できません。
使用しているバージョンを確認する
開発環境のトラブルでは、バージョンの不一致もよくある原因です。
特に確認するべきなのは、次のようなものです。
Node.js
npm
PHP
Composer
Ruby
Python
Docker
使用しているフレームワーク
プロジェクトが作られた時期と、現在使用している環境のバージョンが大きく違うと、正常に動かないことがあります。
たとえば、古いプロジェクトを最新バージョンのNode.jsで動かそうとして、エラーになるケースです。
反対に、新しいフレームワークを古い実行環境で動かそうとして失敗することもあります。
「最新版を使っているから問題ない」という考え方は正しくありません。
開発では、最新版であることよりも、プロジェクトが想定しているバージョンと一致していることの方が重要です。
READMEや設定ファイル、バージョン管理用のファイルを確認し、そのプロジェクトがどのバージョンを前提としているのかを調べましょう。
設定ファイルと環境変数を確認する
次に確認するのは、設定ファイルと環境変数です。
開発環境では、ソースコードだけでなく、外部の設定値を使って動作することがあります。
たとえば、次のような情報です。
データベースの接続情報
APIキー
サイトURL
ポート番号
実行モード
メール送信設定
これらは.envファイルなどで管理されることがあります。
しかし、.envファイルはセキュリティ上の理由からGitに含まれないことが多いため、プロジェクトを複製しただけでは存在しない場合があります。
また、ファイル自体は存在していても、変数名が間違っていたり、値が空になっていたりする可能性もあります。
この場合、アプリケーション自体は起動しても、一部の機能だけ動かないことがあります。
ただし、環境変数にはパスワードや秘密鍵が含まれることがあります。
エラー相談をするときに、.envファイルの内容をそのまま公開しないよう注意が必要です。
ポートが重複していないか確認する
開発サーバーを起動するときに、「ポートが使用中」というエラーが出ることがあります。
これは、同じポート番号を別のアプリケーションがすでに使っている状態です。
たとえば、以前起動した開発サーバーが終了しておらず、裏側で動き続けていることがあります。
また、Dockerや別の開発ツールが同じポートを使用していることもあります。
この場合は、使用中のプロセスを終了するか、別のポート番号を指定する必要があります。
何度も起動コマンドを実行すれば解決する問題ではありません。
むしろ、複数のプロセスが起動して状況が分かりにくくなる可能性があります。
「起動できないからもう一度実行する」のではなく、すでに何かが動いていないかを確認しましょう。
直前に変更した内容を確認する
昨日まで動いていた環境が突然動かなくなった場合、直前に行った変更が原因である可能性は高いです。
たとえば、次のような変更です。
パッケージを追加した
設定ファイルを書き換えた
Node.jsやPHPを更新した
プラグインを追加した
ファイル名を変更した
フォルダを移動した
Gitで別のブランチに切り替えた
OSをアップデートした
トラブルが起きたときに重要なのは、「何が壊れているか」だけでなく、「正常に動いていた状態から何が変わったか」を考えることです。
変更点が少なければ、原因の候補も絞り込めます。
一度に複数の設定を変更していると、どの変更が原因だったのか分からなくなります。
そのため、普段から変更を小さく分け、こまめに動作確認することも重要です。
Gitの差分を確認する
Gitを使用している場合は、変更差分を確認します。
自分では変更した覚えがないファイルが書き換わっていたり、必要なファイルを誤って削除していたりすることがあります。
また、別のブランチに移動したことで、設定ファイルやパッケージ構成が変わっている可能性もあります。
Gitの差分を確認すれば、正常に動いていた状態から、どこが変わったのかを把握できます。
ここで重要なのは、すぐにすべての変更を元に戻さないことです。
内容を確認せずにリセットすると、必要な作業まで消してしまう危険があります。
まずは差分を見て、問題の可能性がある箇所を特定します。
再起動は原因調査の後に行う
パソコンや開発ツールを再起動すると、問題が解消することがあります。
一時的に残っていたプロセスやキャッシュが消えるためです。
ただし、最初から再起動だけで解決しようとするのはおすすめしません。
再起動で直ってしまうと、何が原因だったのか分からないままになるからです。
もちろん、原因調査に時間をかけすぎる必要はありません。
しかし、最低限エラー文や実行状況を確認してから再起動した方が、今後の再発防止につながります。
再起動は有効な手段ですが、原因分析の代わりではありません。
エラー文を検索するときの注意点
ここまで確認しても原因が分からない場合は、エラー文を検索します。
検索するときは、エラー文全体をそのまま貼り付けるよりも、重要な部分を抜き出した方が見つかりやすいことがあります。
その際は、使用している技術名やバージョンも一緒に検索します。
たとえば、同じエラー文でも、Node.js、PHP、Dockerでは原因が違う可能性があります。
また、検索結果の情報が古い場合にも注意が必要です。
数年前の記事に書かれている解決方法が、現在のバージョンでは使えないことがあります。
検索結果の上位にあるから正しいとは限りません。
公式ドキュメント、GitHubのIssue、使用しているツールの現在のバージョンに対応した情報を優先しましょう。
AIに聞くときは状況を整理する
AIにエラーを相談すること自体は問題ありません。
ただし、エラー文だけを貼り付けて「直して」と聞いても、正確な回答が返ってくるとは限りません。
少なくとも、次の情報は伝えた方がよいでしょう。
何をしようとしていたか
どのコマンドを実行したか
使用している技術とバージョン
表示されたエラー文
直前に変更した内容
すでに試したこと
情報が不足していると、AIは一般的な原因を推測するしかありません。
その結果、本当の原因とは関係のない設定変更を提案されることがあります。
そして、提案されたコマンドを意味も分からず実行すると、別の問題を発生させる危険があります。
AIは原因を自動的に特定してくれる存在ではありません。
状況を整理したうえで、調査を補助してもらう道具として使うべきです。
むやみに削除しない
開発環境が動かないときに、次のような行動をすぐに取る人がいます。
node_modulesを削除する
lockファイルを削除する
Dockerのコンテナやボリュームをすべて削除する
プロジェクトを最初から作り直す
開発ツールを再インストールする
これらの方法で直ることもあります。
しかし、原因を確認せずに削除すると、元の状態に戻せなくなる可能性があります。
特にデータベースやDockerのボリュームを削除すると、保存していたデータまで消えることがあります。
「分からないから全部消す」は、トラブル解決ではなく、問題を見えなくしているだけです。
削除する前に、何を削除するのか、削除すると何が失われるのか、復元できるのかを確認する必要があります。
確認する順番を決めておく
開発環境が動かないときは、次の順番で確認すると原因を絞り込みやすくなります。
エラー文を読む
正しいディレクトリにいるか確認する
実行コマンドを確認する
必要なパッケージを確認する
各種バージョンを確認する
設定ファイルと環境変数を確認する
ポートや起動中のプロセスを確認する
直前の変更内容を確認する
Gitの差分を確認する
公式情報やエラー内容を検索する
必要に応じて再起動や再インストールを行う
もちろん、すべてのトラブルがこの順番だけで解決するわけではありません。
それでも、確認手順を持っているだけで、無駄な作業は大きく減ります。
動かないことより、原因が分からないことが問題
開発環境が動かなくなること自体は、珍しいことではありません。
経験豊富なエンジニアでも、環境構築や依存関係のトラブルには遭遇します。
違いが出るのは、エラーが起きた後の対応です。
経験が少ないうちは、エラーを見ると焦って、思いついた解決方法を次々と試してしまいます。
一方で、経験を積んだ人は、現在の状態と正常だった状態の差を整理し、原因を一つずつ切り分けます。
重要なのは、すぐに正解を思いつくことではありません。
根拠を持って確認範囲を狭めていくことです。
開発環境が動かないときこそ、場当たり的に操作するのではなく、順番を決めて調査しましょう。
その習慣が身につけば、エラー対応にかかる時間が減るだけでなく、自分で問題を解決する力も確実に伸びていきます。