フルスタックエンジニアのノウハウ
2020.02.19    2020.03.17

【条件分岐】条件式の書き方の基礎①

【条件分岐】条件式の書き方の基礎①

こんにちは、徳田 啓です。
Webプログラマー歴20年、【フルスタックエンジニア マスター講座】を運営しています。(生徒数1,800名突破)


前回、「条件分岐処理とは何か?」という基本的なことについて解説しました。

もしまだ読んでいない方は以下の記事をご参照ください。

関連記事

条件分岐はif文、switch文を使い分けろ!

プログラムを書いていると、「こういう場合はこの処理」「別の場合はこの処理」というように、条件によって処理を分けたいことがあります。

例えば、ネットショップの商品画面で、

①在庫があるなら→「残りの在庫数」を出す
②在庫がないなら→「売り切れ表示」を出す

といったように、表示を切り替えたい場合などです。

前回、このような場合に条件分岐処理というものを使うとご説明しました。

今回は1歩進んで、実際の条件式の書き方をご説明していきます。


この記事の動画版はこちら

チャンネル登録お願いします!

条件式とは?


在庫がある/ない、というのは、プログラム的に言うと以下のようになります。

①在庫がある→「在庫数が0より大きい」ということ
②在庫がない→「在庫数が0」ということ

これをプログラムでチェックさせるために、条件式というものを書きます。

条件式を書くときは「比較演算子(ひかくえんざんし)」というものを使います。(関係演算子と呼ぶ場合もあります)

比較演算子って、なんだか難しそうな名前ですよね。

でも実際はそれほど難しいものではないので、ぜひこの機会に攻略してしまいましょう!

比較演算子とは?


比較演算子とは、「イコール」や「大なり」「小なり」などの記号のことです。

基本的には以下の6パターンを使います。

①等しい  ==
②等しくない !=
③大きい(大なり) >
④以上(大なりイコール) >=
⑤小さい(小なり) <
⑥以下(小なりイコール) <=

例えば、先ほどの在庫のあり/なしを判断する場合は、

在庫ありの場合:在庫数が「0よりも大きいかどうか」
→「③大きい(大なり)」を使う

在庫なしの場合:在庫数が「0かどうか」
→「①等しい」を使う

ということになります。


これを実際の条件式で書くと以下のようになります。(在庫数は$stockという変数に入っているとします)

在庫が0より大きいかどうか
$stock > 0

在庫は0かどうか
$stock == 0

このように比較演算子は、あるデータ($stock)と、あるデータ(0)を比較するために使います。


ここで1つ注意点ですが、イコール(等しい)の場合は「=」ではなく、「==」のように2つ続けて書きます。

プログラミングでは、1つの「=」は「代入」といって、変数にデータを入れるための記号になります。

右辺を左辺に代入する。

比較する際に「=」を1しか書かなくてバグになっている例をよく見かけるので注意しましょう。

また、「>=」や「<=」は、イコールの左右の位置を間違えやすいですが、イコールは必ず右側に書くと覚えておきましょう(大なりイコールと読んだままに書きます)

実際の条件式の書き方

条件式は、ifやelse ifの後にある括弧 () の中に書きます。


先程の在庫チェックの条件式を実際に書くとこのようになります。

(補足説明)
前回のおさらいになりますが、if文では、上から順番に条件をチェックしていき、どこかの条件にマッチしたらそれ以降の条件チェックは行いません。したがって、条件2に来ている時点で、条件1にはマッチしなかった(在庫が10以下だった)ことになります。そのため、条件2で「> 0」だったらという指定しかしていないにも関わらず、その値は「1〜10」のどれかになります。

上記の処理では、比較演算子として「③大きい(大なり)>」のみを使いましたが、他のパターンの書き方も見ておきましょう。

①在庫が10と「等しい」
$stock == 10

②在庫が10と「等しくない」
$stock != 10

③在庫が10より「大きい」(10を含まない)
$stock > 10

④在庫が10「以上」(10を含む)
$stock >= 10

⑤在庫が10より「小さい」(10を含まない)
$stock < 10

⑥在庫が10「以下」(10を含む)
$stock <= 10

以下の4種類は、数値や日付の比較のみに使うことが出来ます。
③(大きい)>
④(以上)>=
⑤(小さい)<
⑥(以下)<=

以下の2種類は、数値や日付に加えて、文字列の比較にも使うことが出来ます。
①(一致)
②(不一致)


文字列の比較


実際の開発では、文字列の比較もよく行います。


例えば、
・パスワードが正しい値と一致しているかどうか
・入力されたメールアドレスが空っぽかどうか(空っぽだったらエラー表示)

などといった場合です。

例)$passwordに入っているデータが「H2xYv4Pj」かどうかをチェックする場合※実際には、パスワードは暗号化された方式でチェックを行いますが、この例は分かりやすくしています。

例)$mail_addressが空っぽかどうかをチェックする場合
シングルクォーテーションのみを2つ書いた場合は、空っぽ(空文字)という意味になります。

このように、比較演算子を使って文字列の比較も可能です。

条件分岐処理を書くときのコツ


どの比較演算子を使う場合も、条件式の結果は必ず「はい」か「いいえ」になります。(プログラミングでは「真(しん):TRUE」か「偽(ぎ):FALSE」と言います)

if文では、条件式の結果が「真(TRUE)」の場合のみ、その中の処理が実行されます。

条件式を考える際は、式の答えが「はい」だった場合の処理を中括弧 {} の中に書く、というように考えると分かりやすいと思います。


また、複雑な条件分岐処理の場合は、いきなりコーディングしようとせずに、まずは日本語でコメントだけを書いてみましょう。
そうした方が、流れが整理出来て、処理の抜けがなくなります。

僕も複雑な処理を書くときは、まずはコメントだけで組み立てて、後からそのコメントの通りに処理を実装することも多いです。

例)いきなり処理を書かずに、先にコメントだけを書いてみる


まとめ


6種類の「比較演算子」を使って、プログラムに行わせたい処理を分岐させ、制御するのがプログラマーの仕事です。

しかし、分解していくと1つ1つの条件式は「はい」「いいえ」で答えられるシンプルなものです。
シンプルな処理を積み重ねて、大きなシステムを作っているのです。

まずは、6種類の比較演算子を覚えて、「こういった比較を行いたい」と思った時に、適切な条件式が書けるようにしていきましょう。

なお、この他にも実際には、複数の条件の同時に指定したり、関数の戻り値を比較するといった、より実践的な条件式の書き方がありますので、それはまた次の機会にご説明したいと思います。

おすすめ記事
無料メルマガ配信中