プログラミング学習 公開 2026.09.20 更新 2026.09.22

if文とは?受講ログで見えた「書き方」より難しい条件の作り方

執筆・監修: 徐 聖博/株式会社シンシア 代表取締役社長

if文の書き方そのものは易しく、ナミノリの受講ログでは再挑戦12%でした。対して変数と混ざる回は35%。つまずくのは構文ではなく「何と、どう比べるか」です。送料の判定と境界値テストで、実行結果を確認済みのコードから解説します。

if文とは?つまずくのは書き方ではなく「何と比べるか」

if文は「もし〜なら」を書く仕組みです。構文そのものは1分で覚えられます。それでも動かないコードが生まれるのは、比べ方のほうに原因があるからです。

ナミノリの受講ログには、その差がはっきり出ていました。

文法だけの回より、変数と混ざる回のほうが難しい

ナミノリの無料講座は各レクチャーに確認テストがあり、何回目で合格したかが記録に残ります。条件分岐に関わる回を並べると、こうなりました。

レクチャー 完了した人 2回以上かかった人
様々な条件分岐(if / else if / switch などの書き方) 16人 2人(12%)
変数と条件分岐(変数の値で分岐する) 17人 6人(35%)

全レクチャーの平均は29.9%(完了887件中265件が2回以上)です。つまり書き方だけを扱う回は平均より易しく、変数と混ざった途端に平均より難しくなります

同じことが変数とデータ型の記事でも起きていました。型の種類を覚える回は10%なのに、型変換の回は67%。単体の文法ではなく、組み合わさった瞬間に詰まるという同じ形です。

だからこの記事では、書き方の一覧ではなく「何と、どう比べるか」を扱います。

※ 集計は2026年9月20日時点。完了したレクチャーのみが対象で、母数は各16〜17人と小さい数字です。

まず、送料の判定を書いてみる

「合計5000円以上なら送料無料、それ未満なら500円」という条件を書きます。

function shippingFee(total) {
  if (total >= 5000) {
    return 0;
  }
  return 500;
}

console.log(shippingFee(4999));
console.log(shippingFee(5000));
console.log(shippingFee(5001));

結果は上から 50000 です。

境界を必ず3つ試す

いま試した4999・5000・5001は、適当に選んだ数字ではありません。条件の境目と、その前後です。この3つを試すと、間違いがすぐ見つかります。

たとえば >=> と書き間違えたとします。

if (total > 5000) {
  return 0;
}

この場合、5000円ちょうどの注文は 500 になります。「5000円以上なら無料」という仕様に反しますが、4999と5001だけを試していると気づけません。ちょうどの値を試して初めて分かります。

この「境目とその前後を試す」やり方を境界値テストと呼びます。条件を1つ書いたら3つ試す、と覚えてください。

もうひとつの例で練習する

「80点以上で合格」を書きます。

function judge(score) {
  if (score >= 80) {
    return "合格";
  }
  return "不合格";
}

console.log(judge(79));
console.log(judge(80));
console.log(judge(81));

結果は 不合格合格合格 です。79で不合格、80で合格になっていれば、境目は正しく書けています。

詰まるのはここ ― 比べる相手の型

受講ログで35%が2回以上かかった「変数と条件分岐」の回が難しいのは、比べる相手が変数になると、中身が見えなくなるからです。

入力欄から受け取った値は、見た目が数字でも文字列です。

console.log("100" >= 5000);
console.log("9" > "80");

結果は falsetrue です。

2つ目に注目してください。9は80より小さいのに true になりました。両方が文字列のときは、文字の並び順で比較されるためです。「9」は「8」より後ろなので、大きいと判定されます。

入力欄の値をそのまま条件に使うと、この種の誤りが起きます。比べる前に数値へ変換します。

const input = "4999";
const total = Number(input);
if (Number.isNaN(total)) {
  console.log("金額を数字で入力してください");
} else if (total >= 5000) {
  console.log("送料無料");
} else {
  console.log("送料500円");
}

空欄が送られてきた場合も確認しておきます。Number("")0 になるため、「未入力」ではなく「0円の注文」として処理が進みます。未入力を弾きたいなら、変換の前に空かどうかを見る必要があります。

自分で確かめる3つ

ブラウザの開発者ツール(F12キー)のコンソールで試してください。

  1. shippingFee>=> に変えて、4999・5000・5001を入れる。どれが変わるか
  2. 「80点以上で合格」を「80点より上で合格」に変えると、80点はどうなるか
  3. "100" >= 5000false になる理由を、一文で説明できるか

3つとも予測してから実行してください。外れたら、なぜ外れたかを書き残す。受講ログが示していたのは、ここを飛ばすと同じ場所で何度も止まるということでした。

まとめ

  • if文の書き方だけを扱う回は、再挑戦12%で平均(29.9%)より易しい
  • 変数と混ざる回は35%。詰まるのは構文ではなく「何と、どう比べるか」
  • 条件を1つ書いたら、境目とその前後の3つを試す(境界値テスト)
  • 入力欄の値は見た目が数字でも文字列。比べる前に Number() で変換し、Number.isNaN() で確かめる
  • 文字列どうしの比較は文字の並び順になる("9" > "80"true

繰り返しに進むなら、for文と配列 ― 最も再挑戦が多かった単元が続きです。

変数・条件分岐・繰り返しを順番に確認するなら、プログラミング入門講座が5本構成です。各回に確認テストがあるので、自分がどこで止まったかが記録に残ります。型の話が先に必要なら、変数とデータ型の記事を読んでください。

無料の学習講座で、いまから手を動かす

AI開発からWeb開発まで、未経験でも進められる講座を無料で公開しています。

会員登録(無料) すると、気になる求人の保存と講座の受講履歴の記録ができます。

この順番で合っているか、確認しませんか

学習の順番は、目指す職種によって変わります。いま考えている進め方を書いて送ってもらえれば、無料講座の内容と実際の求人要件に照らして返答します。

相談を書いて送る(無料・会員登録なし)

返答までお時間をいただくことがあります。

おすすめ記事

プログラミング学習 2026.09.22

for文と配列の基本|受講ログで最も再挑戦が多かった単元を、合計と絞り込みで理解する

プログラミング学習 2026.09.20

if文とは?受講ログで見えた「書き方」より難しい条件の作り方

プログラミング学習 2026.09.20

変数とデータ型とは?受講ログで見えた「型が変わる瞬間」のつまずき方

プログラミング学習 2026.08.29

AIに聞けば、独学は続くのか|受講データ132件でわかった止まる2地点

プログラミング学習 2026.08.16

非エンジニアがAI時代に受けるべき講座10選|受ける順番つき