対象
- macOSやiOSでのネイティブアプリ開発
- SwiftやObjective-Cでの開発
- React Nativeなどクロスプラットフォーム環境でも対応している場合があります
- Xcodeのデバッグコンソールが使えない
Xcodeのデバッグコンソールが使えない状況とは
- Push通知等によるバックグランドからの起動時の挙動を見たい(iOS)
- IME,webcamプラグイン,その他プラグインでXcodeからの起動ではなく指定場所に配置してシステムによって起動されたときの挙動をしらべたい(mac)
このように,Xcodeからの起動では上手く動作するが,実際に使ってみると上手く動かない,その理由を調べたいというシーンがあります.こういう場合に紹介する方法を使うと簡単に値の出力ができます.
使用方法
macOS,iOSのライブラリのFoundationに含まれるNSLogを使用します.
NSLog("Debug Message")
[NSLog @"DebugMessage"];
NSLogはXcodeから実行するとXcodeのデバッグコンソールに出力しますが,shellから起動されたり,プラグインとして起動したり,その他の起動方法で起動した場合にはmacOSなら/var/log/system.log
に出力されます.ここに出力されたログはConsole.appで見ることができます.

Console.appでログを見る
macOSに標準でインストールされているConsole.appを開くと次のような画面が表示され,様々なアプリからのログが出力されているのをリアルタイムに見ることができます.
Consoleでは接続されているiOSのデバイスも見ることができ,左のペインから選択できます.大量のログが出力され続けるので自分のアプリの名前で検索するとよいでしょう.

注意事項
Objective-CではもともとNSLogで出力するのが一般的かも知れませんが,Swiftではprintを使う方が多いと思います.NSLogはXcodeのコンソールに出力しても詳細に出るので便利ですが,一方でprintに比べて負荷が高いそうです.場合によって,普段はprintを使ったり,リリース時はNSLogを含めないようにするなどしたほうが良いかも知れません.