SwiftによるiOSアプリ開発基本講座

デバッグ方法の紹介

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

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
さまざまなデバッグ方法を紹介し、問題のレベルに応じた問題解決の方法を選択できるようにします。
講師:
07:27

字幕

このレッスンでは、iOS アプリ開発におけるデバッグ方法を紹介したいと思います。まずこちらのアプリをご覧ください。このアプリでは、一番上にユーザーの名前を入力するテキストフィールドがあり、下にある Button を押すことによってこの Label 上にその名前を文字列に埋め込んで表示するという機能を持っています。ですが現在、 Button を押しても名前が Label 上に表示されるということがありません。そこでソースコードの方を見てみたいと思いますが、ソースコードの方にはこの名前を入力するテキストフィールドを表すアウトレット、そして Label を表すmessageLabel というアウトレット、そしてボタンがおされたときに呼び出されるはずのメソッドが用意されていることがわかります。ですので実装が書かれていないというわけではありませんので、なぜこの buttonPressed が正常に機能していないのかということを次に考える必要があります。そこでまず最初に思い当たるのは、この buttonPressed という関数が本当に呼ばれているんだろうかということです。もしこの buttonPressed が呼ばれていないのであれば、この storyboard であるとかそういったところの接続に問題があるということになりますし、もしこの buttonPressed が呼ばれているのであれば、この下にあるプログラムのコードに問題があるんだろうと考えることができます。 このように iOS アプリのデバッグにおいては、どこに問題があるのかということを切り分けていくのが重要になります。そこでまず buttonPressed というメソッドが本当に呼ばれているかということを検証してみたいと思います。この buttonPressed のメソッドの一番上にprintln の関数を書き、buttonPressed という文字列が表示されるようにしてみたいと思います。もしもこの buttonPressed のメソッドが呼ばれているのであれば、buttonPressed というこの文字列も表示されるはずです。それではシミュレータを実行し直してボタンを押してみましょう。Button を押します。するとこの Button をいくら押してもこの後ろの方にはデバッグ文字列が表示されませんので、この Button とこの buttonPressed のメソッドが繋がっていないということが推測できます。そこで storyboard を見てみますとstoryboard でこの View Controller との対応を見てみますと、buttonPressed というこのメソッドとこの Button との間に現在接続がないことがわかります。 ですのでこの buttonPressed というメソッドとこの Button を接続しますよということで、この + 印のこのボタンからですねこのようにドラッグして線を引いてやることによって、この buttonPressed のメソッドが呼ばれるように変更できます。それでは実際に実行してみましょう。するとこの Button を押したときに、このように buttonPressed というのが表示されるようになりました。しかしさらにここでエラーが起きていますので、何か問題が起きているということがわかります。どこで問題が起きているのかと言いますと、この messageLabel.text というのが書かれているこのプログラムの行で起きているということがわかりますので。この行で書かれているプログラムの問題点としてはmessageLabel のここの部分か、nameField のこの部分か、といったところに大きく問題があるんじゃないかということが推測できます。実際にさきほどこのbuttonPressed がインターフェース上で接続されていないということが確認できていますので、やっぱりこれも storyboard に問題があるんじゃないかということで、storyboard の接続をもう一度この Outlet に対して確かめてみると、やはりここに Outlet が接続されていないことがわかりますので、nameField の方をこのテキストフィールドに接続し、messageLabel の方をLabel の方に接続することによって、問題を取り除くことができます。 それではここで実行し直してみましょう。名前を入力してButton を押すことによって、このように Hello, Satoshi!!とうまくアプリケーションが機能するようになりました。このようにですね、自分が気になっている場所で本当にそのプログラムが呼ばれているのかどうかということを確認するためのこの手法のことを、C 言語から名前をとってprintf デバッグというふうに呼ばれています。この printf デバッグというのを使うことでも様々なデバッグをすることができるんですが、実はこの printf デバッグというのはあまりいい手法ではありません。なぜかというと、これ println という関数を実行するという余計な動作をこの buttonPressed の関数の中に入れているので、アプリケーションの本来の動作ではないものがここに挟まってしまっているわけです。ですからここに挿入したこのコードがあることによって、さらなるバグが引き起こされてしまうという可能性もあるわけです。ですのでできればこのprintf デバッグというのは避けて、このようなプログラムを書くべきではないんですが、では逆にどうすればいいのかと言いますと、そこで登場するのがブレークポイントという機能です。 Xcode にはブレークポイントという機能がサポートされていますので、こちらのですねmessageLabel.text から始まるこの buttonPressed のメソッドの中身が本当に呼ばれているかということを確認したいのであれば、この messageLabel.text のあるこの行の先頭のここの行番号が表示されている部分、これあの環境設定によっては行番号が表示されていないこともあると思いますけど、このあたりをクリックしていただければそれで構いません。このあたりをクリックしますと、このようにブレークポイントというものが作成できます。この青い栞のようなマークがブレークポイントと呼ばれるものです。このブレークポイントを設定した状態でアプリケーションを起動しまして、そしてこのプログラムが含まれる部分を実行するようなアクションを何か起こしてみます。例えばここではButton を押すと、この buttonPressedが呼ばれるはずですから、このように Button を一度押します。すると、この buttonPressed一番先頭の行のところでプログラムが中断したということがわかりますので、正しくこの buttonPressed のメソッドが呼ばれているということが確認できました。 これがブレークポイントです。ブレークポイントはプログラムの動作を一時中断させますので、もう一度実行を再開する場合にはここにある Continueprogram executionというこのボタンを押して再開してください。そうするとこのように、アプリケーションの動作が再開されます。なお、このブレークポイントはここの右側にあるですね、Step over というボタンを押すことによってプログラムのコードを一行一行実行していくこともできますので、適宜使い分けてください。そしてこのブレークポイントを使用した方法では、プログラムの一部を書き換えるということをしていませんので、アプリケーションの動作をそのまま確認することができます。ですのでできれば、println を使った printf デバッグを多用するのは避けて、このブレークポイントを使ったデバッグ方法を試してみてください。このレッスンでは、iOS アプリ開発のデバッグ方法を紹介しました。

SwiftによるiOSアプリ開発基本講座

このコースではiPhoneやiPadのアプリを作ってみたい方に向けて、簡単なiOSアプリを作りながらSwiftを使ったXcodeでの開発手順をひとつずつ丁寧に解説していきます。各レッスンではiOSのフレームワークの機能を確認しながら、アウトレットやアクション、MVCモデルやDelegateといったアプリ開発に必要な知識を説明します。

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

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

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

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