はじめに
プログラミングをしていると、必ず出会うもの...それが「エラー」です。
でも、心配しないで!
エラーは:
- ❌ 失敗ではありません
- ❌ 才能がないわけではありません
- ✅ 学習のチャンスです!
- ✅ プロも毎日エラーと向き合っています
今日は、エラーと仲良くなる方法を学びましょう!
エラーって何だろう?
日常生活のエラー
実は、私たちも毎日「エラー」を経験しています。
🚨 日常のエラー例
料理のエラー:
- 塩と砂糖を間違えた → 味がおかしい!
- 火が強すぎた → 焦げた!
- 材料が足りない → 作れない!
勉強のエラー:
- 計算ミス → 答えが違う
- 漢字の書き間違い → 読めない
- 問題文の読み間違い → 違うことをしてしまう
ゲームのエラー:
- 操作ミス → ゲームオーバー
- ルール違反 → ペナルティ
- アイテム不足 → 進めない
これらのエラーから、私たちは学んで成長しています。 プログラミングも同じです!
エラーの種類
1. 文法エラー(Syntax Error)
日本語で例えると:
- 「私は学校に来ました行く」(文法がおかしい)
プログラムの例:
// ❌ エラー:カッコを閉じ忘れ
もし (年齢 >= 18 なら
"大人です"
// ✅ 正解
もし (年齢 >= 18) なら
"大人です"
2. 実行時エラー(Runtime Error)
日常で例えると:
- 0で割り算しようとする
- 存在しない場所に行こうとする
プログラムの例:
// ❌ エラー:存在しない要素にアクセス
果物 = ["りんご", "みかん"]
3番目 = 果物[2] // 2番目までしかない!
// ❌ エラー:0で割る
答え = 10 ÷ 0 // 計算できない!
3. 論理エラー(Logic Error)
日常で例えると:
- レシピ通りに作ったけど、レシピが間違っていた
- 道順は正しいけど、目的地が違った
プログラムの例:
// ❌ 論理エラー:計算式が間違っている
消費税込み = 価格 + 0.1 // 10%ではなく10円足してる!
// ✅ 正解
消費税込み = 価格 × 1.1
エラーメッセージの読み方
エラーメッセージは友達!
エラーメッセージは、コンピュータからの「助けのヒント」です。
📝 エラーメッセージの読み方
エラー: 'りんご' は定義されていません(5行目)
このメッセージが教えてくれること:
- 何が問題? → 'りんご'という変数が見つからない
- どこが問題? → 5行目
- どうすればいい? → 'りんご'を先に定義する
よくあるエラーメッセージ
// 1. 変数が見つからない
好きな食べ物を表示 // エラー:'好きな食べ物'が定義されていません
// 解決法
好きな食べ物 = "カレー"
好きな食べ物を表示 // OK!
// 2. 括弧の数が合わない
計算 = (10 + 20 × 3 // エラー:括弧が閉じられていません
// 解決法
計算 = (10 + 20) × 3 // OK!
// 3. 配列の範囲外
数字 = [1, 2, 3]
数字[5]を表示 // エラー:インデックスが範囲外です
// 解決法
数字[2]を表示 // OK!(0, 1, 2の3つ)
デバッグの方法
デバッグって何?
デバッグ = バグ(虫)を取り除く = エラーを直すこと
🔍 デバッグの手順
-
エラーを再現する
- どんな操作でエラーが出る?
-
エラーメッセージを読む
- 何が問題?どこが問題?
-
原因を探る
- なぜそうなった?
-
修正する
- 正しいコードに直す
-
確認する
- 本当に直った?他は壊れてない?
デバッグのテクニック
1. プリントデバッグ
値を表示して確認する方法:
// どこで値がおかしくなっているか調べる
価格 = 1000
"価格:" + 価格 // 1000
割引率 = 0.2
"割引率:" + 割引率 // 0.2
割引額 = 価格 × 割引率
"割引額:" + 割引額 // 200
最終価格 = 価格 + 割引額 // あれ?引いてない!
"最終価格:" + 最終価格 // 1200(高くなってる!)
// 修正
最終価格 = 価格 - 割引額 // 引き算に修正
2. コメントアウト
一部分を無効にして、問題の場所を特定:
関数 成績判定(点数):
// もし 点数 >= 90 なら
// 返す "秀"
// もし 点数 >= 80 なら
// 返す "優"
もし 点数 >= 70 なら
返す "良"
そうでなければ
返す "可"
// 一部ずつコメントを外して、どこでエラーが出るか確認
3. 小さく分けてテスト
複雑な処理を小さく分けて確認:
// 複雑な計算を分解
// ❌ 一度に全部
結果 = ((基本給 + 残業代) × 1.1 - 控除額) × 0.8
// ✅ 分けて確認
給与合計 = 基本給 + 残業代
"給与合計:" + 給与合計
税込み = 給与合計 × 1.1
"税込み:" + 税込み
手取り前 = 税込み - 控除額
"手取り前:" + 手取り前
結果 = 手取り前 × 0.8
"最終結果:" + 結果
よくあるエラーと対処法
1. スペルミス
// ❌ エラー
fruite = "りんご"
fruit を表示 // スペルが違う!
// ✅ 修正
fruit = "りんご"
fruit を表示
2. 大文字小文字の間違い
// ❌ エラー
Name = "太郎"
name を表示 // 大文字小文字が違う!
// ✅ 修正
name = "太郎"
name を表示
3. 無限ループ
// ❌ 危険!終わらない
カウント = 1
カウント < 10 の間繰り返す:
"こんにちは"
// カウントを増やし忘れた!
// ✅ 修正
カウント = 1
カウント < 10 の間繰り返す:
"こんにちは"
カウント = カウント + 1
エラーから学ぶ
エラーは成長のチャンス
💎 エラーから学べること
-
正しい書き方を覚える
- 一度間違えたら、次は正しく書ける
-
注意深くなる
- よくあるミスに気をつけるようになる
-
問題解決力がつく
- エラーを直す経験が、考える力を育てる
-
根気強さが身につく
- あきらめずに解決する習慣ができる
プロのプログラマーも間違える
実は、プロのプログラマーも:
- 毎日エラーを出しています
- デバッグに時間をかけています
- エラーから新しいことを学んでいます
大切なのは「エラーを恐れないこと」!
練習問題
問題1:エラーを見つけて直そう
次のプログラムには3つのエラーがあります。見つけて直してください。
生徒の点数 = [85, 92, 78, 65, 90
合計 = 0
番号 を 0 から 5 まで繰り返す:
合計 = 合計 + 生徒の点数[番号]
平均 = 合計 ÷ 生徒の点数の長さ
"平均点は" + heikin + "点です"
答えを見る
// エラー1: 配列の閉じ括弧がない
生徒の点数 = [85, 92, 78, 65, 90] // ]を追加
合計 = 0
// エラー2: 配列は5個なので、0から4まで
番号 を 0 から 4 まで繰り返す:
合計 = 合計 + 生徒の点数[番号]
// 正しい書き方(.長さを使う)
平均 = 合計 ÷ 生徒の点数.長さ
// エラー3: 変数名が違う(heikin → 平均)
"平均点は" + 平均 + "点です"
問題2:デバッグしてみよう
おつりの計算プログラムが正しく動きません。デバッグして直してください。
商品の値段 = 580
支払い = 1000
おつり = 商品の値段 - 支払い
もし おつり >= 0 なら
"おつりは" + おつり + "円です"
そうでなければ
"お金が足りません"
答えを見る
問題:引き算の順番が逆!
商品の値段 = 580
支払い = 1000
// デバッグ:値を確認
"商品の値段:" + 商品の値段 // 580
"支払い:" + 支払い // 1000
// エラー:引き算が逆
// おつり = 商品の値段 - 支払い // -420になってしまう
// 修正:正しい引き算
おつり = 支払い - 商品の値段 // 420
もし おつり >= 0 なら
"おつりは" + おつり + "円です"
そうでなければ
"お金が足りません"
実践演習:CommandPlaygroundで体験
ファイルツリー
今日のまとめ
覚えておいてほしい3つのこと
- エラーは学習のチャンス(恐れる必要はない!)
- エラーメッセージは問題解決のヒント
- デバッグは「探偵」のように原因を探ること
次回予告
次のレッスンでは、「フローチャート」について学びます。
- プログラムを絵で描く方法
- 処理の流れを視覚的に理解
- 複雑な処理も分かりやすく
プログラムを作る前の「設計図」の描き方を身につけましょう!
チャレンジ問題
ミッション:エラー探偵になろう
次のプログラムは「1から10までの合計を計算する」はずですが、結果がおかしいです。 デバッグして、正しい答え(55)が出るようにしてください。
合計 = 1
カウント = 1
カウント <= 10 の間繰り返す:
合計 = 合計 + カウント
カウント = カウント + 2
"1から10までの合計:" + 合計
ヒント:
- プリントデバッグを使って、各ステップの値を確認しよう
- カウントの増え方に注目!
答えを見る
// デバッグ過程
合計 = 0 // 最初は0から始める(1ではない)
カウント = 1
カウント <= 10 の間繰り返す:
"カウント:" + カウント // デバッグ用
合計 = 合計 + カウント
"合計:" + 合計 // デバッグ用
// エラー:+2だと奇数しか足されない
// カウント = カウント + 2 // 1, 3, 5, 7, 9
// 修正:+1にする
カウント = カウント + 1 // 1, 2, 3, ..., 10
"1から10までの合計:" + 合計 // 55
// 別解:最初から0スタートも忘れずに!
素晴らしい!エラーを恐れず、むしろ楽しむ気持ちが身につきましたね。これからは、エラーが出ても「また学べる!」と思えるはずです。プログラマーとしての大切な心構えが身につきました!