はじめてのエラーメッセージ
エラーメッセージは、プログラミングで最初に出会う「英語の壁」です。でも実は、エラーメッセージで使われる英単語はたった15個程度を覚えるだけで、ほとんど理解できるようになります。
エラーメッセージは怖くない
よくある誤解
多くの初心者は、こんなエラーを見ると固まってしまいます:
TypeError: Cannot read property 'name' of undefined
「英語だ...無理...」と思うかもしれません。でも、実はこのメッセージは5つの単語を知っていれば理解できます。
エラーメッセージ頻出単語15選
1. Cannot / Can't(〜できない)
最も頻繁に見る単語です。何かができないときに表示されます。
Cannot find module 'express'
→ expressモジュールを見つけることができない
Cannot read property 'length' of null
→ nullのlengthプロパティを読むことができない
2. undefined(未定義)
変数や値が定義されていない状態を表します。
let user;
console.log(user.name); // Error: Cannot read property 'name' of undefined
user
が定義されていない(値が入っていない)ので、name
にアクセスできません。
3. null(空、何もない)
意図的に「何もない」ことを表す値です。
let data = null;
console.log(data.length); // Error: Cannot read property 'length' of null
4. is not(〜ではない)
期待される状態ではないことを表します。
'hello' is not a function
→ 'hello'は関数ではない(関数として呼び出せない)
map is not a function
→ mapは関数ではない(配列でないものに.map()を使った)
5. Error(エラー)
問題が発生したことを示す最も基本的な単語です。
SyntaxError → 構文エラー(書き方が間違っている)
TypeError → 型エラー(データ型が期待と違う)
ReferenceError → 参照エラー(存在しないものを参照)
6. expected(期待される、〜のはず)
プログラムが期待していたものと違うときに使われます。
Unexpected token '\}'
→ 予期しない記号 '\}'(閉じカッコが多い)
Expected ';' but found '.'
→ ';'を期待したが'.'を見つけた
7. found(見つけた)
実際に見つかったものを表します。通常「expected」とセットで使われます。
Expected number but found string
→ 数値を期待したが文字列を見つけた
8. missing(欠けている、不足)
必要なものが足りないときに使われます。
Missing semicolon
→ セミコロンが不足している
Missing required parameter 'id'
→ 必須パラメータ'id'が不足している
9. invalid(無効な、不正な)
形式や値が正しくないときに使われます。
Invalid token
→ 無効なトークン(記号)
Invalid date format
→ 無効な日付形式
10. failed(失敗した)
処理が失敗したことを示します。
Failed to load resource
→ リソースの読み込みに失敗した
Connection failed
→ 接続に失敗した
11. property(プロパティ、属性)
オブジェクトの属性を指します。
const user = { name: "太郎", age: 20 };
// nameとageがプロパティ
12. function(関数)
処理をまとめたもの、呼び出し可能なものを指します。
'hello' is not a function
→ 'hello'は関数ではない(()をつけて呼び出せない)
13. defined(定義された)
変数や関数が宣言・定義されている状態を表します。
'userName' is not defined
→ 'userName'は定義されていない
14. syntax(構文、書き方)
プログラムの書き方のルールを指します。
SyntaxError: Unexpected token
→ 構文エラー:予期しないトークン
15. type(型、種類)
データの種類(文字列、数値、配列など)を指します。
TypeError: Cannot convert undefined to object
→ 型エラー:undefinedをオブジェクトに変換できない
エラーメッセージの読み方
基本パターン
多くのエラーメッセージは以下のパターンで構成されています:
[エラーの種類]: [何が] [どうなっている/できない]
例:
TypeError: Cannot read property 'name' of undefined
↓
型エラー: undefinedの'name'プロパティを読むことができない
実践例1:よくあるエラー
const users = null;
users.map(user => user.name);
エラー:
TypeError: Cannot read property 'map' of null
解読:
- TypeError:型に関するエラー
- Cannot:できない
- read property:プロパティを読む
- 'map':mapという名前の
- of null:nullの
→ 「nullのmapプロパティを読むことができない」
→ つまり、users
がnullなので、.map()
が使えない
実践例2:文法エラー
if (x > 10) { // 正しい例(括弧が閉じられている)
console.log("大きい");
}
// エラーの例:if (x > 10 { ← )が足りない
エラー:
SyntaxError: Unexpected token '\{'
解読:
- SyntaxError:構文(書き方)のエラー
- Unexpected:予期しない
- token:トークン(記号)
{
:開き波カッコ
→ 「予期しない記号 '{' 」
→ つまり、その前に何か(この場合は)
)が必要
実践例3:未定義エラー
console.log(userName); // userNameを宣言していない
エラー:
ReferenceError: userName is not defined
解読:
- ReferenceError:参照エラー
- userName:変数名
- is not:〜ではない
- defined:定義された
→ 「userNameは定義されていない」
→ つまり、userName
という変数を作っていない
エラーメッセージから学ぶコツ
1. パニックにならない
エラーメッセージは「何が間違っているか教えてくれる味方」です。敵ではありません。
2. キーワードを探す
- Cannotがあれば「何ができないのか」を見る
- is notがあれば「何ではないのか」を見る
- undefined/nullがあれば「値が入っていない」と理解
3. 行番号を確認
多くのエラーには行番号が表示されます:
script.js:15:8
↓
script.jsファイルの15行目、8文字目
4. エラーの種類で原因を推測
- SyntaxError:タイプミス、カッコの不一致
- TypeError:想定と違う型の値を使っている
- ReferenceError:存在しない変数・関数を使っている
練習問題
以下のエラーメッセージは何を意味していますか?
問題1
Cannot find module 'react'
答えを見る
「reactモジュールを見つけることができない」 → reactがインストールされていない可能性が高い
問題2
map is not a function
答えを見る
「mapは関数ではない」 → 配列でないものに.map()を使おうとした
問題3
Missing required parameter 'email'
答えを見る
「必須パラメータ'email'が不足している」 → emailという必須の値を渡し忘れている
まとめ
エラーメッセージの頻出単語15個:
- Cannot - できない
- undefined - 未定義
- null - 空
- is not - 〜ではない
- Error - エラー
- expected - 期待される
- found - 見つけた
- missing - 不足
- invalid - 無効な
- failed - 失敗した
- property - プロパティ
- function - 関数
- defined - 定義された
- syntax - 構文
- type - 型
これらの単語を覚えるだけで、エラーメッセージの80%以上が理解できるようになります。
次のレッスンでは、プログラミングでよく使う基本的な動詞と名詞を学びましょう。