• トップ
  • ブログ一覧
  • Swiftでguardを使うメリットと使い方をご紹介!
  • Swiftでguardを使うメリットと使い方をご紹介!

    広告メディア事業部広告メディア事業部
    2021.02.22

    エンジニアになろう!

    Swift では guard を使った方がいい?

    Swift 2.0から追加された「guard」。

    基本的な使い方は if と同じで、定数や変数に nil が含まれていないか判断するために使われます。

    しかし、Swift では if よりも guard を使う方が断然おすすめなのです。

    今回は、guard を使うメリットと、その使い方について解説していきます。

    メリット①コードのメンテナンスがしやすい

    nil を確認してアンラップする記述に guard を使うと、コードが見やすく、メンテナンスが楽になります。

    guard と if の記述を比較

    実際に、guard と if のコードを比較してみましょう。

    guard

    guard は、下記のように記述します。

    1        let testint:Int? = nil
    2
    3        guard let unwrapint = testint else {
    4            return
    5        }

    if

    上のコードを if に直すと、こうなります。

    1        let testint:Int? = nil
    2        
    3        if let unwrapint = testintif  {
    4            print(“nilではない”)
    5        } else {
    6            return
    7        }

    やっていることは同じでも、guard の方が簡潔

    どちらも testint をオプショナル型として宣言し、nil を代入しています。

    もし、nil 以外の数字を代入している場合、testint から unwrapint へ数字が代入され、そのまま処理が継続されます。

    今回は、testint に nil が代入されているため、return が実行されて処理が終了します。

    両者とも同じ処理をしていますが、if よりも guard の方がシンプルな記述になっていますね。

    if だと分岐処理と以上処理の見分けがつきにくいですが、guard ならば一目で異常検知であることがわかります。

    このように、guard はスコープを抜けるための処理がより簡潔に書けるため、メンテナンスの負担を軽減するのです。

    メリット②変数や定数がその後の処理で使える

    if で nil を確認後に変数や定数を使う場合、if の{}の中でしか使用することができません。

    しかし、guard で nil を確認した変数や定数は、guard 処理後も使用することができます。

    一度確認したら、その後も確認する必要はありません。

    先ほどのコードで説明しましょう。

    guard

    1        let testint:Int? = 10
    2
    3        guard let unwrapint = testint else {
    4            return
    5        }
    6
    7        unwrapint = unwrapint + 1 //エラーにならない

    上記のコードでは、testint にオプショナル値の「10」が入っています。

    guard 文により、アンラップされたオプショナル値ではない10が「 unwrapint 」に入ります。

    unwrapint は guard 文の外でも使用できるので、その後の計算式で使えます。

    if

    それでは、if で記述した場合はどうでしょうか?

    1        let testint:Int? = 10
    2        
    3        if let unwrapint = testintif  {
    4            print(“nilではない”)
    5        } else {
    6            return
    7        }
    8
    9       unwrapint = unwrapint + 1 //エラーになる

    この場合、unwrapint は if 文の中でのみ使用することができます。

    もちろん、if 文の外で使用するとエラーになってしまいます。

    guard の方が、その後の処理をスムーズに行うことができるというわけです。

    さいごに

    今回は、Swift を使うならぜひ知っておきたい guard について説明しました。

    if と同じ処理をしますが、異常処理とアンラップが同時にできるため、guard の方が読みやすいコードを書くことができます。

    覚えておくととても便利なので、ぜひ guard を使ってみてくださいね!

    こちらの記事もオススメ!

    featureImg2020.07.17ライトコード的「やってみた!」シリーズ「やってみた!」を集めました!(株)ライトコードが今まで作ってきた「やってみた!」記事を集めてみました!※作成日が新し...
    featureImg2020.08.14スマホ技術 特集Android開発Android開発をJavaからKotlinへ変えていくためのお勉強DelegatedPropert...

    ライトコードでは、エンジニアを積極採用中!

    ライトコードでは、エンジニアを積極採用しています!社長と一杯しながらお話しする機会もご用意しております。そのほかカジュアル面談等もございますので、くわしくは採用情報をご確認ください。

    採用情報へ

    広告メディア事業部

    広告メディア事業部

    おすすめ記事

    エンジニア大募集中!

    ライトコードでは、エンジニアを積極採用中です。

    特に、WEBエンジニアとモバイルエンジニアは是非ご応募お待ちしております!

    また、フリーランスエンジニア様も大募集中です。

    background