メインコンテンツへスキップ
レッスン 11 / 15推定時間: 25

間違いは宝物!エラーとデバッグ

プログラムのエラーは怖くない!むしろ学習のチャンスです。エラーメッセージの読み方、バグの見つけ方、そして直し方を楽しく学びましょう。失敗から学ぶことの大切さを理解します。

はじめに

プログラミングをしていると、必ず出会うもの...それが「エラー」です。

でも、心配しないで!

エラーは:

  • ❌ 失敗ではありません
  • ❌ 才能がないわけではありません
  • ✅ 学習のチャンスです!
  • ✅ プロも毎日エラーと向き合っています

今日は、エラーと仲良くなる方法を学びましょう!

エラーって何だろう?

日常生活のエラー

実は、私たちも毎日「エラー」を経験しています。

🚨 日常のエラー例

料理のエラー

  • 塩と砂糖を間違えた → 味がおかしい!
  • 火が強すぎた → 焦げた!
  • 材料が足りない → 作れない!

勉強のエラー

  • 計算ミス → 答えが違う
  • 漢字の書き間違い → 読めない
  • 問題文の読み間違い → 違うことをしてしまう

ゲームのエラー

  • 操作ミス → ゲームオーバー
  • ルール違反 → ペナルティ
  • アイテム不足 → 進めない

これらのエラーから、私たちは学んで成長しています。 プログラミングも同じです!

エラーの種類

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行目)

このメッセージが教えてくれること:

  1. 何が問題? → 'りんご'という変数が見つからない
  2. どこが問題? → 5行目
  3. どうすればいい? → 'りんご'を先に定義する

よくあるエラーメッセージ

// 1. 変数が見つからない
好きな食べ物を表示  // エラー:'好きな食べ物'が定義されていません

// 解決法
好きな食べ物 = "カレー"
好きな食べ物を表示  // OK!

// 2. 括弧の数が合わない
計算 = (10 + 20 × 3  // エラー:括弧が閉じられていません

// 解決法
計算 = (10 + 20) × 3  // OK!

// 3. 配列の範囲外
数字 = [1, 2, 3]
数字[5]を表示  // エラー:インデックスが範囲外です

// 解決法
数字[2]を表示  // OK!(0, 1, 2の3つ)

デバッグの方法

デバッグって何?

デバッグ = バグ(虫)を取り除く = エラーを直すこと

🔍 デバッグの手順

  1. エラーを再現する

    • どんな操作でエラーが出る?
  2. エラーメッセージを読む

    • 何が問題?どこが問題?
  3. 原因を探る

    • なぜそうなった?
  4. 修正する

    • 正しいコードに直す
  5. 確認する

    • 本当に直った?他は壊れてない?

デバッグのテクニック

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. 正しい書き方を覚える

    • 一度間違えたら、次は正しく書ける
  2. 注意深くなる

    • よくあるミスに気をつけるようになる
  3. 問題解決力がつく

    • エラーを直す経験が、考える力を育てる
  4. 根気強さが身につく

    • あきらめずに解決する習慣ができる

プロのプログラマーも間違える

実は、プロのプログラマーも:

  • 毎日エラーを出しています
  • デバッグに時間をかけています
  • エラーから新しいことを学んでいます

大切なのは「エラーを恐れないこと」!

練習問題

問題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で体験

CommandAcademy Terminal
Welcome to CommandAcademy Terminal!
Type "help" to see available commands.
user@cmdac:~$

ファイルツリー

/
etc
hosts35B
passwd76B
home
user
tmp
usr
bin
share
var
log

今日のまとめ

覚えておいてほしい3つのこと

  1. エラーは学習のチャンス(恐れる必要はない!)
  2. エラーメッセージは問題解決のヒント
  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スタートも忘れずに!

素晴らしい!エラーを恐れず、むしろ楽しむ気持ちが身につきましたね。これからは、エラーが出ても「また学べる!」と思えるはずです。プログラマーとしての大切な心構えが身につきました!

さらに学習を続けるには

素晴らしい学習ペースです!次のレッスンに進むには、無料会員登録をお願いします。無料会員では各コース3レッスンまで学習できます。

無料で続きを学ぶ

各コース3レッスンまで学習可能

学習進捗の自動保存

コース修了証明書の発行