プログラミングの条件分岐って、どう書けばいいんでしょうか?
if文・switch文・三項演算子の3つを使い分けられれば、ほとんどの場面に対応できますよ。構文自体はシンプルなので、基礎から一つずつ押さえていきましょう。
この記事では、プログラミングの条件分岐の仕組みから、3つの構文の書き方・使い分けまで解説します。

本記事の専門性
現役エンジニアのZettoです。Java Silver・Java Goldを保有し、フリーランスエンジニアとして複数のWebアプリ開発に携わってきました。
この記事を読めば、プログラミングの条件分岐の基本構文・使い分けの判断軸・ネストが深くなったときの整理方法まで、一通り理解できます。
プログラミングにおける条件分岐とは

条件分岐の仕組みを理解すると、プログラムが「なぜこう動くのか」が見えてきます。
- 条件分岐の役割と仕組み
- プログラムの3つの基本処理(順次・分岐・反復)
それぞれ解説します。
条件分岐の役割と仕組み
条件分岐とは、「ある条件が成り立つかどうか」によって、処理の流れを変える仕組みです。

たとえば「ログインに成功したらマイページへ、失敗したらエラーを表示する」という処理は、まさに条件分岐です。条件によって「どちらの道を通るか」を選ぶイメージですね。
条件分岐を使うことで、ユーザーの入力・データの状態・時間帯など、さまざまな状況に応じた動きを作れるようになります。
具体例
下記の例では、`age`が18以上かどうかを判定して、表示するメッセージを変えています。条件(`age >= 18`)が正しければ「成人です」、そうでなければ「未成年です」が出力されます。
// 年齢が18歳以上かどうかで表示を変える例
const age = 20;
if (age >= 18) {
console.log("成人です");
} else {
console.log("未成年です");
}条件分岐はプログラミング言語によって書き方は少し違いますが、「条件を評価して処理を切り替える」という役割は共通です。
プログラムの3つの基本処理(順次・分岐・反復)
プログラムはどんなに複雑に見えても、実は3つの処理の組み合わせでできています。
- 順次処理:上から順番に実行する
- 分岐処理:条件によって処理を切り替える(if文など)
- 反復処理:同じ処理を繰り返す(for文・while文など)
条件分岐はこの3つのうちの「分岐処理」にあたります。
たとえば自動販売機を例に考えてみましょう。「お金を投入する → 商品を選ぶ」が順次、「投入金額が足りるか確認する」が分岐、「在庫がある限り販売を続ける」が反復です。
プログラミングにおける3つの基本処理については、以下の記事でも詳しく解説しています。プログラムの考え方全体を掴みたい方はあわせて読んでみてください。

この3つの構造を理解しておくと、どんなコードを読んでも「今どの処理をしているのか」がわかるようになります。
プログラムの基本構造が掴めたら、次は実際の書き方に入りましょう。
プログラミング条件分岐の3つの構文と書き方

条件分岐には主に3つの書き方があります。
- if文・else if文の基本構文
- switch文の使いどころと書き方
- 三項演算子でシンプルに書く方法
ひとつずつ見ていきましょう。
if文・else if文の基本構文
if文は、条件分岐の中でもっとも基本的な構文です。「もし〇〇なら〜する」という意味を表します。
// 点数によって評価を変える例
const score = 75;
if (score >= 90) {
console.log("優");
} else if (score >= 70) {
console.log("良");
} else if (score >= 50) {
console.log("可");
} else {
console.log("不可");
}構造を整理すると、次のようになります。
- `if (条件)`:最初の条件を判定する
- `else if (条件)`:最初の条件がfalseのとき、次の条件を判定する
- `else`:すべての条件がfalseのときに実行される
`else if`はいくつでも追加できます。ただし、条件の数が増えすぎると読みにくくなるため、後述するswitch文への切り替えも検討するといいですね。
条件に使う記号(比較演算子)は次のとおりです。
- `===`:等しい
- `!==`:等しくない
- `>`:より大きい
- `>=`:以上
- `<`:より小さい
- `<=`:以下
JavaScriptでは`==`(イコール2つ)と`===`(イコール3つ)の両方が使えますが、`===`を使うのが基本です。理由は後のよくある質問セクションで解説します。
Javaでif文を書く場合の構文や注意点については、以下の記事で詳しくまとめています。Javaを学んでいる方はこちらもチェックしてみてください。

switch文の使いどころと書き方
switch文は、1つの値に対して複数の条件を比較するときに使います。
// 曜日によってメッセージを変える例
const day = "月";
switch (day) {
case "土":
case "日":
console.log("休日です");
break;
case "月":
console.log("週の始まりです");
break;
default:
console.log("平日です");
break;
}switch文の構造は次のとおりです。
- `switch (値)`:比較する値を指定する
- `case 〇〇:`:値が一致したときの処理を書く
- `break`:処理を終了してswitch文を抜ける
- `default`:どのcaseにも一致しなかったときの処理
`break`を書き忘れると、一致したcaseの下にある処理もすべて実行されてしまいます。これは「フォールスルー」と呼ばれる動作で、意図しないバグの原因になります。最初のうちはbreakを書く癖をつけておくといいですね。
switch文がif文より読みやすい場面の特徴は次のとおりです。
- 比較する値が1つに決まっている(「dayの値は何か?」など)
- caseのパターンが3つ以上ある
- 「範囲の比較(〇〇以上・未満)」ではなく「値の一致」で判定したい
逆に「スコアが70以上か80以上か」のような範囲の比較は、if文の方が自然に書けます。
三項演算子でシンプルに書く方法
三項演算子は、if文を1行でコンパクトに書くための記法です。
// if文で書いた場合
const age = 20;
let label;
if (age >= 18) {
label = "成人";
} else {
label = "未成年";
}
// 三項演算子で書いた場合
const label2 = age >= 18 ? "成人" : "未成年";書き方は次のとおりです。
条件 ? 条件がtrueのときの値 : 条件がfalseのときの値「条件が正しければ〇〇、そうでなければ△△」という2択の場合に使います。変数への代入と組み合わせることが多いですね。
ただし、三項演算子は処理が複雑になると読みにくくなります。条件が1つ・処理が単純な場合にのみ使うのが基本です。ネストして使う(三項演算子の中にさらに三項演算子を書く)のは、読みにくくなるため避けましょう。
この3つの構文が使い分けられると、大抵の条件分岐に対応できるようになりますよ。
ネストが深くなったときの整理方法

条件分岐を重ねると、コードが右に伸びて読みにくくなります。
- 早期リターンでネストを減らす書き方
- 条件をまとめて読みやすくするコツ
- 初心者がはまりがちな比較演算子の間違い
具体的に解説します。
早期リターンでネストを減らす書き方
ネスト(入れ子)とは、if文の中にさらにif文を書いた状態のことです。
// ネストが深い書き方(読みにくい)
function checkUser(user) {
if (user !== null) {
if (user.isLoggedIn) {
if (user.age >= 18) {
console.log("利用できます");
}
}
}
}このように右に深くなっていくコードは、どの条件がどの処理に対応しているか追いにくくなります。
「早期リターン」は、条件を満たさない場合に早めに処理を終了させる書き方です。
// 早期リターンを使った書き方(読みやすい)
function checkUser(user) {
if (user === null) return;
if (!user.isLoggedIn) return;
if (user.age < 18) return;
console.log("利用できます");
}エラーになる条件・弾きたい条件を先に書いて`return`で抜けてしまいます。こうすると、最後に残るのが「正常な処理」だけになるので、コードの意図が伝わりやすくなります。
僕が実務で読んできたコードでも、早期リターンを使っている関数は読みやすいものが多かったです。ネストが深いコードを見たら、「これは早期リターンで書き直せないか?」と考えてみる癖をつけると良いかなと。
条件をまとめて読みやすくするコツ
複数の条件を組み合わせるときは、論理演算子を使います。
// &&(AND):すべての条件が true のとき
if (age >= 18 && hasTicket) {
console.log("入場できます");
}
// ||(OR):どちらかの条件が true のとき
if (isMember || hasCoupon) {
console.log("割引が適用されます");
}
// !(NOT):条件を反転させる
if (!isLoggedIn) {
console.log("ログインしてください");
}複数の条件を組み合わせるときは、条件を変数に切り出すと読みやすくなります。
// 条件が長くなった場合は変数に切り出す
const canEnter = age >= 18 && hasTicket && !isBanned;
if (canEnter) {
console.log("入場できます");
}`canEnter`という変数名を見るだけで「入場できるかどうかの条件」だとわかります。条件式をそのままif文に書くより、意図が伝わりやすくなりますね。
初心者がはまりがちな比較演算子の間違い
JavaScriptで初心者がよくミスするのが、`==`と`===`の使い方です。
console.log(1 == "1"); // true(型を無視して比較)
console.log(1 === "1"); // false(型も含めて比較)`==`は数値の`1`と文字列の`”1″`を「同じ」と判断します。これは「型の強制変換」という動作で、意図しない結果を生みやすいです。`===`は型も含めて比較するため、より厳密です。基本的には`===`を使うのが安全です。
もう1つよくあるミスが、代入(`=`)と比較(`===`)の混同です。
NG:代入になってしまう(常にtrueになる)if (score = 100) { ... }
OK:比較になるif (score === 100) { ... }
`=`は代入、`===`は比較です。この違いはエラーにならずに動いてしまうケースもあるため、気づきにくいバグになります。条件式の中では必ず`===`か`!==`を使うようにしましょう。
早期リターンと条件の切り出しは、実務でも重宝される技法ですよ。
プログラミングでよくある失敗や躓きのパターンについては、以下の記事でも取り上げています。「なんでうまくいかないんだろう」と感じたときに読んでみてください。

プログラミングの条件分岐に関するよくある質問

よくある質問と回答をまとめました。
- if文とswitch文はどう使い分ければいいですか?
- 三項演算子はどんな場面で使いますか?
- ネストが深いコードはどこから直せばいいですか?
if文とswitch文はどう使い分ければいいですか?
判断基準はシンプルです。
- 「範囲の比較(〇〇以上・未満など)」→ if文
- 「値の一致(曜日・ステータスなど、決まった値との比較)」→ switch文
たとえば「スコアが何点以上か」という条件はif文が向いています。「ユーザーのステータスが何か(active / inactive / pending)」という条件はswitch文が読みやすいですね。判断に迷ったときは、「if文で書いたとき・switch文で書いたとき、どちらが読みやすいか」を見比べるのが一番です。
三項演算子はどんな場面で使いますか?
2択の条件で、変数に値を代入するときが一番向いています。
// 変数への代入と組み合わせるのが一番多いパターン
const greeting = isLoggedIn ? "ようこそ!" : "ログインしてください";こうした1行で完結するシンプルな分岐が三項演算子の得意場面です。逆に、条件が複数あるときや、処理が複数行にわたるときはif文を使いましょう。
三項演算子の中に三項演算子を入れる(ネスト)のはコードが読みにくくなるため、避けた方が賢明です。
ネストが深いコードはどこから直せばいいですか?
まず「どの条件が弾く条件か(エラー・異常系)」を探してみてください。
弾く条件を先頭に移動させ、早期リターンで抜ける形に書き直すと、全体のネストが1段ずつ浅くなります。
// ネストが深い
if (isLoggedIn) {
if (hasPermission) {
doSomething();
}
}// 早期リターンで整理
if (!isLoggedIn) return;
if (!hasPermission) return;
doSomething();1つのif文に注目して書き直していくと、全体が整理されてきます。一度に全部直そうとせず、1ブロックずつ見ていくのがおすすめです。
条件分岐の基礎を身につけて、次の構文へ進もう

プログラミングにおける条件分岐について、基礎から実践的な整理方法まで解説しました。
この記事のポイントをまとめます。
- if文:条件の範囲比較に使う基本構文
- switch文:決まった値との一致比較が複数あるときに向いている
- 三項演算子:2択の代入処理をシンプルに書ける
- 早期リターン:ネストを減らしてコードを読みやすくする技法
- `===`を使う:JavaScriptでは型も含めた厳密比較が基本
条件分岐は、反復処理(for文・while文)と組み合わせることで、さらに多様な処理が書けるようになります。繰り返し処理について詳しく知りたい方は、以下の記事をあわせて読んでみてください。

また、プログラミングの基礎からしっかり固めたいという方には、まず全体の流れをつかむのがおすすめです。

条件分岐の構文は、書いていくうちに自然と手が動くようになります。今日の内容をもとに、ぜひ実際にコードを書いて確認してみてください。
if文・switch文・三項演算子の使い分け、ようやく整理できました!早期リターンも試してみます。
3つの構文の使い分けが掴めると、コードの読みやすさが一段と変わってきますよ。早期リターンは最初は少し慣れが必要かもしれませんが、使い始めると手放せなくなりますね。ぜひ実践してみてください。