プログラミングのwhile文の使い方【基本構文と実務活用例】

Mirai

while文って、for文と何が違うんでしょうか?どんな場面で使えばいいのか、いまいちピンとこなくて。

Zetto

while文は「繰り返す回数が決まっていないとき」に使う構文ですね。for文との使い分けを押さえると、コードの意図がぐっと伝わりやすくなりますよ。

この記事では、while文の基本構文から実務での活用例まで解説します。

本記事の専門性
現役エンジニアのZettoです。Java GoldとJava Silverの資格を持ち、Javaを使ったフリーランス案件を複数経験しています。

この記事を読めば、while文の書き方・for文との使い分け・実務でよく使うパターンまで一通り理解できます。

ぜひ参考にしてみてください。

目次

while文とは(for文との違いと使い分け基準)

while文とfor文の違い

while文は、条件を満たしている間、処理を繰り返す構文です。

  • while文の基本構文
  • for文との使い分け基準

それぞれ確認していきましょう。

while文の基本構文

while文の基本的な書き方は、次の通りです。ブラウザで動かしやすいJavaScriptで示します。

while (条件式) {
  // 繰り返したい処理
}

条件式が true(真)の間、{}の中の処理を繰り返します。条件式が false(偽)になったら、ループを抜けます。

具体的なイメージとしては、こんな感じです。

let count = 0;

while (count < 3) {
  console.log("count: " + count);
  count++;
}
// 出力:
// count: 0
// count: 1
// count: 2

countが3より小さい間、ログを出力してcountを1ずつ増やしています。

countが3になった時点で条件式が偽になり、ループが終わります。

while文は「まず条件を確認してから処理に入る」というのがポイントです。最初から条件が偽なら、1回も処理が実行されません。

for文との使い分け基準

for文もwhile文も「繰り返し処理」ですが、使い分けの基準は明確です。

  • for文:繰り返す回数があらかじめ決まっているとき
  • while文:繰り返す回数が決まっておらず、条件次第でループするとき

たとえば「配列の要素を全部表示したい」なら、要素数という決まった回数があるのでfor文が自然です。

一方で「ユーザーが正しい入力をするまでずっと待ち続ける」という処理は、何回繰り返すかが事前にわからないため、while文が向いています。

Zetto

for文かwhile文か迷ったときは「回数が決まっているかどうか」で判断するのが一番シンプルですね。これだけ覚えておけば、まず迷わなくなります。

繰り返し処理全般の基礎については、以下の記事でわかりやすく解説しています。プログラミングの基本である3つの処理(順次・分岐・反復)についても触れているので、あわせて読んでみてください。

while文の基本的な使い方

while文の基本的な使い方

ここからは、while文の具体的な使い方を解説します。

  • 基本的なwhileループの書き方
  • 無限ループの作り方と適切な使いどころ
  • break文でループを抜ける方法
  • continue文で処理をスキップする方法

ひとつずつ見ていきましょう。

基本的なwhileループの書き方

先ほどの基本構文をもう少し掘り下げます。while文でよく使うパターンは、「カウンター変数を使ったループ」です。

let i = 0;

while (i < 5) {
  console.log(i + "回目の処理");
  i++;
}

注意したいのは、ループ変数(ここではi)の更新を忘れないことです。i++がないとiが変わらず、ループが永遠に終わらない「無限ループ」になってしまいます。

while文を書いたらまず「ループを終わらせる条件と、条件を変化させる処理が書かれているか」を確認する癖をつけると、ミスが減ります。

無限ループの作り方と適切な使いどころ

条件式にtrueを直接書くと、無限ループになります。

while (true) {
  // ここに処理を書く
}

「無限ループ=バグ」と思われがちですが、実はあえて使う場面があります。たとえばゲームのメインループや、ユーザーの操作を待ち続けるインタラクティブなアプリです。

ただし、無限ループを使うときは必ずループを抜け出すbreak文をセットで書く必要があります。break文については次のセクションで解説します。

break文でループを抜ける方法

breakを使うと、ループを途中で強制終了できます。

let count = 0;

while (true) {
  console.log("count: " + count);
  count++;

  if (count >= 3) {
    break; // countが3以上になったらループを抜ける
  }
}

while (true)で無限ループを作りつつ、breakで抜ける、という書き方は実務でもよく見かけます。

条件が複雑なときに「まず動かし続けて、条件を満たしたら抜ける」という発想で使います。

continue文で処理をスキップする方法

continueを使うと、その回の処理だけをスキップして、次のループに進めます。

let i = 0;

while (i < 5) {
  i++;

  if (i === 3) {
    continue; // i が3のときだけスキップ
  }

  console.log(i);
}
// 出力: 1, 2, 4, 5

i === 3のときだけconsole.logを飛ばして、次のループへ進んでいます。特定の値を除外して処理したいときに便利です。

Zetto

break・continueはどちらも「ループの流れを制御する」構文ですね。breakはループを終わらせる、continueはその回だけスキップする、と覚えておくと混乱しなくなりますよ。

breakcontinueの使い方は、if文の条件分岐とセットで理解しておくと応用が効きます。if文の書き方については、以下の記事で詳しく解説しています。

実務で通用するwhile文の使いどころ

実務で使えるwhile文

while文が実際の開発で使われる場面を3つ紹介します。

  • 入力バリデーションへの活用
  • リトライ処理への活用
  • 意図しない無限ループを防ぐ方法

具体的に解説します。

入力バリデーションへの活用

「ユーザーが正しい値を入力するまで、入力を繰り返し求める」という処理は、while文の典型的な使いどころです。

// Node.js環境でのイメージ(疑似コード)
let input = "";

while (!isValidInput(input)) {
  input = getUserInput(); // ユーザーから入力を取得
}

console.log("有効な入力が得られました: " + input);

isValidInput()は「入力が正しければtrue、そうでなければfalse」を返す関数です。正しい入力が来るまで、何度でも入力を求め続けます。

繰り返す回数が「ユーザーの行動次第」でまったく読めないので、for文では書けない処理です。こういう場面でwhile文の真価が発揮されます。

リトライ処理への活用

APIへのリクエストが失敗したとき、一定回数までリトライ(再試行)する処理もwhile文でよく書きます。

const MAX_RETRY = 3;
let retryCount = 0;
let success = false;

while (!success && retryCount < MAX_RETRY) {
  success = callApi(); // APIを呼び出し。成功すればtrueが返ってくる
  if (!success) {
    retryCount++;
    console.log(retryCount + "回目のリトライ...");
  }
}

if (success) {
  console.log("API呼び出し成功");
} else {
  console.log("リトライ上限に達しました");
}

「成功するまで繰り返す、ただし上限を超えたら諦める」という二重の条件を、while文の条件式でシンプルに表現しています。

実務でエラーハンドリングを書くときに、このパターンは頻繁に登場します。例外処理の考え方と組み合わせると、さらに堅牢なコードが書けます。

意図しない無限ループを防ぐ方法

while文で一番やりがちなバグが「無限ループ」です。防ぐためのポイントは以下の通りです。

  • ループ変数の更新を忘れない(i++count++を書いたか確認する)
  • 条件式が必ずfalseになるパスを用意する
  • リトライ上限など「逃げ道」を必ず設ける
  • ループ処理を書いたらすぐ動作確認する

無限ループに陥ったときはブラウザのタブを閉じるか、Node.js環境であればCtrl + Cで強制終了できます。

デバッグのときは、ループの中にconsole.logでカウンターを出力するとどこで詰まっているかわかりやすくなります。

Zetto

実務でwhile文を使うときは「ループから抜け出せる条件」を最初に考えてから書くと、無限ループのバグが格段に減りますね。入力バリデーションやリトライ処理は、僕もJava案件でよく書いていたパターンです。

while文に関するよくある質問

while文のよくある質問

よくある質問と回答をまとめました。

  • 繰り返し回数が決まっているときもwhile文を使っていいですか?
  • while文とdo-while文の違いは何ですか?
  • while文の条件式でよくあるミスはありますか?

繰り返し回数が決まっているときもwhile文を使っていいですか?

動作としては問題ありませんが、回数が決まっているならfor文を使う方が読みやすいコードになります。

たとえば「5回繰り返す」という処理をwhile文で書くと、ループ変数の宣言・条件式・更新の3つが別々に散らばります。

for文なら1行にまとめられるので、コードを読む人が「ああ、5回ループするんだな」とすぐ理解できます。

チームで開発するときは「コードを読む人のわかりやすさ」が重要なので、回数が決まっているときはfor文を選ぶのが賢明です。

while文とdo-while文の違いは何ですか?

do-while文は「最低1回は処理を実行してから条件をチェックする」という点が違います。

// while文(条件が最初から偽なら1回も実行されない)
let i = 5;
while (i < 3) {
  console.log("実行されません");
}

// do-while文(必ず1回は実行してから条件をチェック)
let j = 5;
do {
  console.log("1回は実行されます");
} while (j < 3);

「最低1回は実行する必要がある」場面では、do-while文が使いやすいです。

ただし使用頻度はwhile文よりも低いので、まずwhile文をしっかり使いこなすことを優先するといいですね。

while文の条件式でよくあるミスはありますか?

よくあるミスは次の3つです。

  • 代入(=)と比較(==または===)を間違える:while (i = 5) は常にtrueになってしまう
  • ループ変数の更新を忘れて無限ループになる
  • 条件の向きを逆にする:「5未満の間」と「5以上の間」を混同する

特に最初のミスは気づきにくいです。JavaScriptでは===(厳密な比較)を使う習慣をつけておくと、意図しない挙動を防ぎやすくなります。

while文の使い方をマスターして次のステップへ

while文の次のステップ

while文の基本から実務でよく使うパターンまで解説しました。

重要なポイントをまとめます。

  • while文は「繰り返す回数が決まっていないとき」に使う
  • for文は「回数が決まっているとき」に使う
  • break・continueでループの流れを制御できる
  • 無限ループを防ぐには「ループを抜け出せる条件」を必ず用意する

while文を覚えたら、次はfor文との組み合わせや、配列・オブジェクトを使ったループ処理に挑戦してみてください。繰り返し処理はプログラミングの土台になるので、しっかり身につけておく価値があります。

Mirai

while文とfor文の使い分けって、回数が決まっているかどうかで考えればよかったんですね。なんだかスッキリしました!

Zetto

そうですね。「回数が決まっているかどうか」を基準にするだけで、迷うことがぐっと減りますよ。あとは実際にコードを書いて動かしながら感覚を掴んでいきましょう。

エンジニアとしてさらにステップアップしていくための全体的な学習の流れについては、以下のロードマップ記事も参考になります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次