Language
日本語
English

Caution

JavaScript is disabled in your browser.
This site uses JavaScript for features such as search.
For the best experience, please enable JavaScript before browsing this site.

  1. Home
  2. SwiftBeginner - The if Statement: Conditional Execution

The if Statement: Conditional Execution - Japanese Only

みなさまどうも。

さて、続きまして『if文』(イフぶん)ってやつをやっていきましょう。

『if文』は「もし〜だったら〜を行う」といったような感じの分岐処理になりますね。『if文』はプログラミングにおいての使用頻度がめちゃめちゃ高いので超重要項目になります。

ちょっと前の記事で出てきた真偽値と比較演算子がいっぱい出てきますので忘れてしまった方はこちらを確認しておいて下さい。

では早速ですが以下のサンプルをみてみましょう。

if true {
    print("実行されました。その1")
}

これが『if文』になります。

というわけでまず文法から確認していきましょう。日本語にするとこんな感じです。

if 条件式 {
    // ここに処理...
}

細かく見ていきます。まず『if』と書き、その後に半角スペースとかをあけて『条件式』を記述します。続いて『{}』の中に実行させたい処理を書きます。『条件式』は『判定式』とか『条件』とか『判定部分』とか呼ばれることもありますね。多分『条件式』っていうのが一般的な気がします。

『条件式』が『true』ならば『{}』の中身が実行され、『false』ならば実行されない、といった処理を構築できるのが『if文』です。

先程のサンプルの場合は『条件式』が『true』となっていますね。なので『{}』の中に記述してある『print("実行されました。その1")』が実行されるといった感じです。

さらに『else文』(エルスぶん)というのを続けて記述することができます。『else文』は最初の『if文』の『条件式』が『false』となった場合に問答無用で『else文』の『{}』の中身が実行される、といった処理になります。

こんな感じです。

if false {
    print("実行されました。その1")
}
else {
    print("実行されました。その2")
}

上記の場合は最初の『if文』の『条件式』が『false』なので『print("実行されました。その2")』が実行されます。

さらにもういっちょ、『else if文』(エルスイフぶん)というのがあります。

if false {
    print("実行されました。その1")
}
else if true {
    print("実行されました。その2")
}

これは『if文』で処理を分岐させたあと、さらに別の『if文』をかませることができる処理となります。

上記の場合は最初の『if文』で『false』となっているため、次の『else if文』に処理が移り、そこが『true』となっているので『print("実行されました。その2")』が実行される感じになります。

『else文』ではその前の『if文』が『false』ならば問答無用で実行されますが、『else if文』だとそのあとに更に処理を分岐させることができるといった違いです。

そして『else if文』と『else文』を複数組み合わせることができます。

if false {
    print("実行されました。その1")
}
else if false {
    print("実行されました。その2")
}
else if false {
    print("実行されました。その3")
}
else {
    print("実行されました。その4")
}

上記の場合はまず『if文』で条件分岐が行われ、その後に『else if文』でさらに条件分岐、その後全てが『false』ならば『else文』の処理が実行される、といった流れになります。

ちなみに『else文』を記述する場合は必ず最後に記述しなくてはなりません。

if false {
    print("実行されました。その1")
}
else {
    print("実行されました。その2")
}
else if false { // エラーです。
    print("実行されました。その3")
}

上記は『else文』の後に『else if文』を書いてます。これはエラーになりますので注意しましょう。

さらに『else if文』を最初に書いちゃダメです。最初は必ず『if文』です。これも要注意ですね。

else if false { // エラーです。
    print("実行されました。その1")
}
if false {
    print("実行されました。その2")
}

というわけでちょっとややこしくなってきましたので『if文』を複数書いた場合との違いを確認してみましょう。

if true {
    print("実行されました。その1")
}

if true {
    print("実行されました。その2")
}

これは2つの『if文』が記述されていますね。この2つの『if文』は全く別の処理として実行されます。

上記の場合は両方『true』なので『print("実行されました。その1")』と『print("実行されました。その2")』が両方実行される感じになります。

『else if文』では最初の『if文』が『false』となった時に続けて条件分岐が行われる、つまり最初の『if文』とセットで行われる形になり、複数の『if文』を記述した場合はそれぞれが全く別の処理として実行されます。

ここ、こんがらがりやすいところなので間違えないようにしましょう。

さて、これまでのサンプルでは『条件式』のところに直接『true』とか『false』とかを記述しちゃってましたね。

これではあんまり意味ないので『if文』の『条件式』に演算式を記述してみましょう。以下のサンプルでは『比較演算子』を入れています。

if 1 < 2 {
    print("実行されました。")
}

『条件式』に注目してみてください。『1 < 2』と記述されていますね。これは『true』なので『print("実行されました。")』が実行される、といった感じになります。

基本的に『if文』の『条件式』にはこのように演算式を書くのが一般的になりますので覚えておいておくようにして下さい。

それでは続きまして『if文』の注意点とかを確認していきましょう。

まず、Swift以外の他の言語では『条件式』に数値や文字列、配列、連想配列などなど色々なものを置くことができます。

そして数値『0』や空文字列とかだったら『false』扱い、『0』以外の数値や文字列とかだったら『true』扱い、といったように『true』扱いされるものと『false』扱いされるものが明確に分けられています。

しかし、Swiftの場合は『条件式』の演算結果が真偽値でない場合はエラーになります。こんな感じですね。

if true { // OKです。

}

if 1 < 2 { // 『1 < 2』の演算結果は真偽値『true』なのでOKです。

}

if 1 { // 数値『1』は真偽値ではないのでエラーです。

}

他の言語の『true』扱いされるものと『false』扱いされるものはそれぞれの言語によって違ってしまう事が多く、確認するのが面倒だったり思わぬミスの原因になりがちです。

しかし、Swiftの場合は「真偽値じゃないとダメ!」とはっきり決められているのでこの仕様はかなり分かりやすいと思います。ただし、他の言語に精通している方は間違いやすいところなんで注意して下さい。

他の言語の『if文』は『条件式』を『()』の中に記述する、という文法になっている場合があります。古い時代からやっているプログラマーの方は『()』を使った文法の方が馴染みある感じかと思います。こんな感じですね。

if (true) { // 『()』の中に『条件式』を書きます。

}

この記法、Swiftでも使用できるので使ってしまってOKです。

ただし、Swiftの場合は『()』を使わない記法で記述する方が多数派な気がします。(著者調べ)この辺はお好みどうぞ。

Swift以外の他の言語の『if文』では、処理が1行の場合は『{}』を省略できちゃったりします。こんな感じですね。

if true print("test")
else if true print("test")

この記法、SwiftではNGですのでご注意下さい。Swiftでは処理が1行だろうが複数行だろうが『{}』は必須になりますのでご注意です。

というわけで『if文』については以上になります。続いての記事では『論理演算子』についてやっていきましょう。ではではこの辺で。失礼致します。

This article was written by Sakurama.

Author's beloved small mammal

桜舞 春人 Sakurama Haruto

A Tokyo-based programmer who has been creating various content since the ISDN era, with a bit of concern about his hair. A true long sleeper who generally feels unwell without at least 10 hours of sleep. His dream is to live a life where he can sleep as much as he wants. Loves games, sports, and music. Please share some hair with him.

If you find any errors or copyright issues, please .