5-5. よくあるエラーと解決方法

更新日:2025年12月7日

5-5. よくあるエラーと解決方法について解説します。

JavaScriptとPHPの開発でよく遭遇するエラーと、その解決方法を紹介します。 エラーメッセージの読み方と、効果的なデバッグ方法を身につけましょう。

JavaScriptのよくあるエラー

1. Uncaught TypeError: Cannot read property 'xxx' of null

// ❌ エラーの例
const element = document.getElementById('myElement');
element.innerHTML = 'Hello';  // elementがnullの場合エラー

// ✅ 解決方法
const element = document.getElementById('myElement');
if (element) {
    element.innerHTML = 'Hello';
} else {
    console.error('要素が見つかりません');
}

原因:存在しない要素にアクセスしようとした

対策:要素の存在確認を行う、IDのスペルミスを確認

2. Uncaught ReferenceError: xxx is not defined

// ❌ エラーの例
console.log(myVariable);  // 変数が定義されていない

// ✅ 解決方法
let myVariable = 'Hello';
console.log(myVariable);

原因:変数が定義される前に使用した、スコープ外の変数を参照

対策:変数の宣言位置を確認、スコープを確認

3. Uncaught SyntaxError: Unexpected token

// ❌ エラーの例
const data = {
    name: 'Test',
    value: 100,  // 最後のカンマに注意(古いブラウザでエラー)
}

// ✅ 解決方法
const data = {
    name: 'Test',
    value: 100
};

原因:構文エラー(括弧の不一致、カンマの位置など)

対策:エディタの構文チェック機能を使用、括弧の対応を確認

4. CORS Policy Error

// ❌ エラーの例
fetch('https://other-domain.com/api/data')
    .then(response => response.json())
    // CORSエラーが発生

// ✅ 解決方法(PHP側で対応)
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Allow-Headers: Content-Type');
?>

原因:クロスオリジンリクエストが許可されていない

対策:サーバー側でCORSヘッダーを設定

PHPのよくあるエラー

1. Parse error: syntax error, unexpected...

// ❌ エラーの例
<?php
if ($condition) {
    echo "Hello"
}  // セミコロンがない
?>

// ✅ 解決方法
<?php
if ($condition) {
    echo "Hello";
}
?>

原因:構文エラー(セミコロン忘れ、括弧の不一致)

対策:エラーメッセージの行番号を確認、その前の行もチェック

2. Fatal error: Call to undefined function

// ❌ エラーの例
<?php
$result = myFunction();  // 関数が定義されていない
?>

// ✅ 解決方法
<?php
function myFunction() {
    return "Hello";
}
$result = myFunction();
?>

原因:存在しない関数を呼び出した

対策:関数名のスペルミスを確認、必要なファイルがincludeされているか確認

3. Warning: Cannot modify header information

// ❌ エラーの例
<?php
echo "Hello";
header('Location: page.php');  // 出力後にheader()を実行
?>

// ✅ 解決方法
<?php
header('Location: page.php');
exit;
?>

原因:出力後にheader()を実行しようとした

対策:header()は最初に実行、出力バッファリングを使用

4. Notice: Undefined index

// ❌ エラーの例
<?php
$name = $_POST['name'];  // キーが存在しない場合エラー
?>

// ✅ 解決方法
<?php
$name = $_POST['name'] ?? '';  // Null合体演算子
// または
$name = isset($_POST['name']) ? $_POST['name'] : '';
?>

原因:存在しない配列キーにアクセス

対策:isset()で確認、Null合体演算子を使用

データベース関連のエラー

1. SQLSTATE[HY000] [1045] Access denied

// ❌ エラーの例
$pdo = new PDO('mysql:host=localhost;dbname=test', 'wrong_user', 'wrong_pass');

// ✅ 解決方法
$pdo = new PDO('mysql:host=localhost;dbname=test', 'correct_user', 'correct_pass');

原因:データベースの認証情報が間違っている

対策:ユーザー名、パスワード、ホスト名を確認

2. SQLSTATE[42S22]: Column not found

// ❌ エラーの例
SELECT namee FROM users  -- カラム名のスペルミス

// ✅ 解決方法
SELECT name FROM users

原因:存在しないカラム名を指定

対策:テーブル構造を確認、カラム名のスペルを確認

デバッグテクニック

JavaScript

// 1. console.log()で変数の内容を確認
console.log('変数の値:', myVariable);

// 2. console.table()で配列やオブジェクトを見やすく表示
console.table(users);

// 3. debuggerステートメントで実行を一時停止
function myFunction() {
    debugger;  // ここで実行が止まる
    // 処理...
}

// 4. try-catchでエラーをキャッチ
try {
    // エラーが起きそうな処理
    riskyOperation();
} catch (error) {
    console.error('エラー詳細:', error.message);
    console.error('スタックトレース:', error.stack);
}

PHP

<?php
// 1. var_dump()で変数の詳細を表示
var_dump($variable);

// 2. print_r()で配列を見やすく表示
print_r($array);

// 3. error_log()でログファイルに出力
error_log("デバッグ情報: " . print_r($data, true));

// 4. try-catchでエラーをキャッチ
try {
    $pdo->query($sql);
} catch (PDOException $e) {
    error_log("データベースエラー: " . $e->getMessage());
}

// 5. エラー表示設定(開発環境のみ)
ini_set('display_errors', 1);
error_reporting(E_ALL);
?>

ブラウザの開発者ツール活用法

タブ 用途 主な機能
Console ログ確認、コード実行 エラーメッセージ表示、JavaScriptの実行
Network 通信の確認 Ajaxリクエスト、レスポンスの内容確認
Sources デバッグ ブレークポイント設定、ステップ実行
Elements HTML/CSS確認 DOM構造の確認、スタイルの変更

エラー解決のフローチャート

  1. エラーメッセージを読む
    • どこでエラーが発生したか(ファイル名、行番号)
    • 何が問題か(エラーの種類)
  2. 該当箇所を確認
    • 構文エラーがないか
    • 変数名のスペルミスがないか
  3. 前後のコードを確認
    • エラー行の前の処理は正しいか
    • 必要な変数は定義されているか
  4. デバッグ出力を追加
    • console.log()やvar_dump()で変数の値を確認
    • 処理の流れを追跡
  5. 検索して調べる
    • エラーメッセージで検索
    • 公式ドキュメントを確認

まとめ

エラーは開発の一部です。エラーメッセージを恐れず、落ち着いて原因を特定しましょう。 デバッグツールを効果的に使い、エラーログを活用することで、 問題を素早く解決できるようになります。

この講座で学んだ知識を活かして、実際のプロジェクトに挑戦してください。 最初は小さなアプリケーションから始めて、徐々に複雑なものに取り組んでいきましょう。

免責事項
本コンテンツは2025年12月時点の情報に基づいて作成されている。最新の情報については公式ドキュメントを参照されたい。