エラーが出て、3日進んでいない。
検索しても同じ状況の記事が出てこない。
自分には向いていないんじゃないか——。
まず知ってほしいことがあります。
現役エンジニアも、毎日エラーで詰まっています。
そして、先に正直なことを書いておきます。
魔法のような解決法はありません。
僕が実際にやっていること
エラーで詰まったとき、僕がやっているのはこれだけです。
- 流れを意識して、一個ずつデバッグしていく
- 今どうなっているかを、その都度確認する
- コードの構文チェックもする
結局のところ、一個ずつしらみつぶしに見ていくしかありません。
地味です。でも、経験者がやっているのも本当にこれだけです。
違うのは才能ではなく、「どこから見ればいいか」が分かっているかどうかだけです。
「どこを見ればいいか」は、流れを理解していれば分かる
ここが本題です。
エラーが解決できない人の多くは、調べ方を知らないのではありません。
そもそも、どこを見ればいいか分かっていないんです。
今プログラミングを教えているS.Tさんが、こう言っていました。
Laravelはどこに何があって、どのファイルがどういう役割で、どういう流れなのかが理解できていない。だから、どこに何を書いたらいいか分からない
これはエラー解決でもまったく同じです。
流れが分かっていれば、「ここまでは動いているはずだから、次はここを見よう」と進めます。
流れが分かっていないと、どこから手をつけていいか分からず、当てずっぽうでコードを書き換えることになります。
だから僕は、学習段階で流れを理解することが一番大事だと思っています。
最低限つかんでおく流れ
URLを開く
→ ルート(routes/web.php)が受け取る
→ コントローラーが処理する
→ モデルがデータベースとやり取りする
→ ビューが画面を作る
→ 画面が表示される
この流れを口で説明できるだけで、エラーの調べ方が変わります。
エラーは、必ずこの流れのどこかで起きているからです。
やりがちな「当てずっぽう」
- エラー文をそのままGoogleに貼る
- 出てきた記事のコードを試す
- 直らない
- 別の記事のコードを試す
- 直らない(しかも、元の状態が分からなくなる)
これは解決ではなく、状況を悪くする作業です。
5番が特にまずいです。動いていたところまで壊れます。
エラー解決6ステップ
ステップ1:エラー文を最後まで読む
当たり前に聞こえますが、初心者の多くはここができていません。
| 要素 | 例 |
|---|---|
| 何が起きたか | Undefined variable $user |
| どのファイルか | resources/views/index.blade.php |
| 何行目か | line 14 |
「$userという変数が、index.blade.phpの14行目で定義されていない」
ここまで読めば、原因はほぼ絞れています。
英語だからと閉じてしまうのが、一番もったいないです。
ステップ2:エラーが出ない状態まで戻す
- 直前に何を変更したか思い出す
- Gitを使っているなら
git diffで変更点を確認する - 変更を1つずつ戻して、どこで直るか確認する
「さっきまで動いていた」なら、原因は必ず直前の変更の中にあります。
ステップ3:どこまで動いているかを確認する(一番重要)
エラーの原因を探すのではなく、「どこまでは正常か」を確認します。
ここが、さっき書いた「流れを意識して一個ずつ」の部分です。
たとえばLaravelで、フォームを送信したのにデータが保存されない場合。
// コントローラの中で、順番に確認する
public function store(Request $request)
{
dd($request->all()); // ① そもそも値は届いている?
$shift = Shift::create([...]);
dd($shift); // ② 保存処理は成功している?
return redirect(...); // ③ リダイレクトまで来ている?
}
dd() や var_dump() を挟んで、どこまで来ているかを1つずつ確認します。
①で値が届いていないなら、原因はフォームかルート側です。
②で保存できていないなら、モデルかDB側です。
流れが分かっていると、確認する場所が自動的に決まります。これが切り分けです。
ステップ4:ログを見る
画面に何も表示されない(真っ白)ときは、ログを見ます。
- Laravel:
storage/logs/laravel.logの一番下 - PHP:
php.iniで指定されたエラーログ - ブラウザ側:開発者ツールのConsoleタブ、Networkタブ
画面のエラーより、ログのほうが詳しい情報が書かれています。
ステップ5:構文をチェックする
意外とここです。
- 閉じ括弧が足りない
- セミコロンが抜けている
- スペルが違う(
$usersと$userなど) - ファイル名が違う
難しい原因を探しているときほど、こういう単純なミスだったりします。
エディタが警告を出していないか、まず確認してください。
ステップ6:検索する(コツがあります)
| ✕ 悪い検索 | ○ 良い検索 |
|---|---|
| Laravel エラー 直らない | Laravel SQLSTATE[42S02] Base table or view not found |
| ログインできない | Laravel 認証後 リダイレクトされない |
エラー文をそのまま貼るのが基本。ただし、次は削ります。
- 自分のファイルパス(
C:\Users\...) - 自分の変数名・テーブル名
- 行番号
固有の情報が入っていると、同じ状況の記事がヒットしません。
30分考えて分からなければ、質問する
粘るのは美徳ではありません。止まっている時間は成長になりません。
ただし、質問する前に上の手順を通してください。
やったことを書けるようになっていると、質問の質が一気に上がります。
質問テンプレート(そのまま使えます)
人に聞くときも、AIに聞くときも、この形で書きます。
【やりたいこと】
Laravelで、ログイン後にダッシュボード画面を表示したい
【起きていること】
ログインボタンを押すと、画面が真っ白になる
【エラー内容】
(storage/logs/laravel.log の該当部分を貼る)
【試したこと】
1. php artisan route:list で確認 → ルートは定義されていた
2. dd() をコントローラに入れた → コントローラまでは到達していた
3. ビューのファイル名を確認 → 存在していた
【仮説】
ビューの中で使っている変数が渡っていないのではないかと考えています
このメモを書いている途中で、自力で解決することがよくあります。
書けないということは、まだ切り分けができていないということなので、そこが次に見る場所です。
AIに聞くときの注意
AIに丸投げすると、答えのコードが返ってきます。
それを貼れば直ることもありますが、切り分ける力は一切つきません。
おすすめは、この一文を付けることです。
「答えのコードは書かないでください。確認すべき場所と、切り分けの手順だけ教えてください」
これだけで、AIが「答えを出す機械」から「一緒に切り分けてくれる相手」に変わります。
まとめ
- 現役エンジニアも毎日エラーで詰まっている
- やっていることは流れを意識して一個ずつ確認するだけ。魔法はない
- どこを見ればいいかは、流れを理解していれば分かる
- だから学習段階で「流れの理解」に時間を使う
- 30分で分からなければ質問する。粘るのは美徳ではない
エラーが解決できないのは、頭の良し悪しではありません。
まだ流れが見えていないだけです。そこが見えると、同じエラーでも景色が変わります。
次に読む記事
未経験からエンジニア転職までの6カ月ロードマップを無料で配布しています。LINEから受け取れます。