XcodeによるSwiftプログラミング中級講座

println()関数によるデバッグ

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
println()やNSLog()関数を使ったデバッグ方法を紹介します。簡単なデバッグに力を発揮します。
講師:
06:06

字幕

このレッスンでは println 関数やNSLog 関数を使ったデバッグ方法を紹介します。まずこちらのプログラムをご覧いただきますと、現在、bluesky, chess,hydepark,momiji, sunset,violin, と6 種類のファイルを用意して、それを読み込んで表示しているアプリケーションを作っています。ですが、実行したところですね、Blue Sky から始まって5 種類しか表示されていません。これを突き合わせていくと、Blue Sky の次に Chess が欠けている、ということが分かるので、そこら辺のコードを探っても良いんですが、今回は、そこのチェスのところが分からない、という前提で全体的にどこに問題があるのか、ということをちょっと絞っていきたいと思います。この絞り込むために、println 関数を使う方法をまず見ていきます。この PhotosTableViewController.swift、こちらのファイルにですね、photos という配列が用意してあって、ここにまずこの Photo という構造体に新しいデータを用意して、append を使って追加していく、とこういうプログラムを書いています。 Blue Sky のもの、そして Chess のもの、London Hydepark、Momiji、という風に追加していっているんですが、それぞれ本当にちゃんと追加出来ていっているのか、ということを確認していきます。println 関数を使ってここに photos.count を表示してみましょう、ということで=\() のここの中に photos.count を書いてみます。これを全体的にこうやって実行する、このphotos.append というですね、1 行 1 行のそれぞれの写真の追加の後ろにこうやってコピー & ペーストで貼り付けていきます。全部同じものです。これを一つ一つ実行していきますと、今実行して後ろの方に表示が出ましたけど、photos.count = 1 となっているところが2 つあることが分かります。これ、上の方から数えていくと、photos.count = 1 と最初は 1 つ追加されているので、1 が出てきて勿論当たり前なんですけど、もう 1 個の方では 1 が出てきているので、これ、追加されていない、ということですね。よくよく見てみるとphotos.append というのを入れ忘れている、というのがここで見つかりますので、ここで photos.appendというのをもう一度ここにも入れてやってですね、しっかりと、本当にこれで問題が解決できたか、ということを実行して確かめてみます。 すると Chess の画像が追加されました。Chess をクリックするとちゃんとチェスの画像が出てくることが分かります。C 言語の中では、この println 関数の替わりにprintf という関数を使いますので、俗にこのようなデバッグ手法のことをprintf デバッグと呼びます。printf デバッグのための関数がもう一つ、実はXcode には用意されているんですが、この println を使っても構いませんし、println の替わりに、NSLogというのを使うこともできます。NSLog は Objectiv-C の時代からずっと用意されているものですが、Objective-C のフォーマットに従わなくても、このように \() を埋め込んだ形のこの文字列がちゃんと使えますので、swift でもこの NSLog がですね、println と同じ形で使うことができます。NSLog にしても、println にしても、基本的にできることはほとんど一緒なんですが、これ全部 NSLog に変えて実行してみますと、分かりますように、フォーマットが違うんですよね。このように細かくですね、これがなんのアプリケーションなのかという情報と、それからこれがいつ実行されているのか、という時間情報ですね、これが付加されますので、デバッグ実行していった後に、細かくこの時間の情報を見たいな、という時にはこの NSLog の方が力を発揮する場面がでてきます。 ただし、今回のような場面ではですね、この時間情報、必要ありませんので、まずは println という関数を使ってデバッグすれば十分ですし、どっちかというと NSLog に比べてprintln 関数を使う方が10 倍 から 20 倍とか、その位のオーダーで速い処理になります。ですので実行時間もかなり軽くなりますし、速くなりますし、デバッグをしながらの負荷もあまりかからない、ということになります。また、ほかの場面でですね、もしこの例えばここに tableView のセルを表示するようなメソッドがありますけど、本当にこのメソッドでちゃんと処理が行われているのかな、ということを確認したい時にはこの println のまず A の場所がここですよ、というのを表示して、その後に B の場所がここですよ、そして C の場所がここですよ、という風に全体的にこうやって A, B, C というこの順番になっているコードを挟んでいって、これが実行される度に、本当にこのA と B と C が呼ばれているか、ということを確認していく、という方法もあります。今ちゃんとA, B, C, A, B, C と表示されていますけど、このようにならずに、A と B の間のところで止まっている、という時にはこの cell = と書いているこの行が問題だ、ということになります。 デバッグをする時には自分のプログラムのどこに問題があるのか、ということをまず見つける必要がありますのでこのように全体を println で区切りながらですね、この println と、この println と、この println のどこで問題が起こっているのか、とあるいはそれ以外のところで問題が起こっているのか、ということを切り分けるために、この println のデバッグ方法を使うことができます。簡単なデバッグですね、こういった簡単なデバッグに力を発揮するのがprintln デバッグです。このレッスンでは println 関数や、NSLog 関数を使ったデバッグ方法を紹介しました。

XcodeによるSwiftプログラミング中級講座

このコースではSwiftのプログラミングに慣れてきた方を対象に、より効率的にXcodeを使い、プロジェクトを管理するためのさまざまなテクニックを紹介します。各レッスンではブレークポイントやプロファイラを使った便利なデバッグ方法や、条件に応じてコンパイル対象のコードを書き分けるやり方など実際のアプリ開発で使える実践的なテクニックを解説します。

3時間01分 (27 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2015年10月29日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。