ITエンジニア Swift 学習関連

【デバックを便利に!!】print()とdump()の比較解説!(Swiftコード例あり)

こんにちは!今回は、dump()というデバックにモデルのデータ構造を一目で解るようにしてくれる便利な関数について解説します!

目次

  • dump()について
  • dump()の具体的な使用例
  • さいごに

dump()について

まず、dump()についてですが、Apple公式のリファレンスからは、以下のように説明されています。

func dump(_:name:indent:maxDepth:maxItems:)
Dumps the given object’s contents using its mirror to standard output.
与えられたオブジェクトをミラーを使って標準出力をする

https://developer.apple.com/documentation/swift/dump(_:name:indent:maxdepth:maxitems:)/

直訳だとよくわかりませんが、要するにオブジェクトをデバックに出力してくれるということが言いたいみたいです!
ちなみに、dumpという英語の意味の1つに、『〔中身を〕放出する』というものがありここからきているのではないかと考えています!(あくまでも推測ですが...笑)

dump()の具体的な使用例

ここまで読まれた方の中には、以下のように思う方もいるのではないでしょうか?

デバックに表示してくれるだけなら、print()でもいいじゃないか!!dump()を使うことで何がどう違うんだよ?

そこで、以下でprint()とdump()の違いについて解説します!

事前準備で以下のようにUser型を作成して、デバックでUser型に入っているパラメータが何であるのかを確かめたいというシーンを想定します!

/// 事前準備

struct User {
  var id: String
  var name: String
  var age: Int
  var likeSauna: String
}

let user = User(id: "nfosdfoansgosfjdnsao", name: "しょ〜ひ〜", age: 24, likeSauna: "改良湯")

そして、print()を使ってデバックに反映させた場合とdump()を使用した時を比較してみます!

/// print

print(user)
----------------------------
デバックエリア
[プロジェクト名.User(id: "nfosdfoansgosfjdnsao", name: "しょ〜ひ〜", age: 24, likeSauna: "改良湯")]

/// dump
dump(user)
----------------------------
デバックエリア
▿ 1 element
  ▿ プロジェクト名.User
    - id: "nfosdfoansgosfjdnsao"
    - name: "しょ〜ひ〜"
    - age: 24
    - likeSauna: "改良湯"

バージョン等により多少、誤差はありかもしれませんが、dump()を使用することで上記のように、パラメータが階層になって表示されます!
情報を少なめにしたUser型を用意しましたが、もっと情報が増えても一目でパラメータを確認することができるので、効率よく実装できますよね!

さいごに

いかがでしたか?dump()を使用することで、APIで返ってきたパラメータの値をデバックで瞬時に確認することができるため、使ってみる価値は大有りです!!
僕自身は、print()を利用して地道にしパラメータを探していましたが、dump()を使用し出してからパラメータがあるかを確認する無駄な時間をなくすことができました!
今後も、技術関連の記事を書いていきますので、チェックしていただけると幸いです!

  • この記事を書いた人

しょ〜ひ〜

『人生を豊かに楽しみたい!!』と考え、ブログ執筆を始めました! 主に、『技術記事』『新卒&転職活動』『サウナ』や趣味について発信していきます!! 【経歴】IT企業←信託銀行←関西私立文系 個人開発のiOSアプリをリリースしました!

-ITエンジニア, Swift, 学習関連
-, , ,