*

Xcode5でSchemeを利用する。[前編]

公開日: : 最終更新日:2014/04/04 Objective-C ,


スポンサードリンク



Xcode5の「Scheme」の作成方法や使い方のエントリーとなります。
思った以上に内容が多くなったため、本エントリーは前編とさせていただきます。
中身が濃いかどうかはご判断ください。

利用しているXcodeはXcode5(5.0.2)となります。

対象プロジェクトの作成

実際に動かしながら確認を実施される場合は
Empty Application templateを指定して
Project NameにToDoList、Company Identifierにcom.exampleを指定しプロジェクトを作成してください。

「Scheme」に関する操作

「Scheme」に関する操作を行う場所と存在するメニューの概要

「Scheme」に関する操作を行う場所は、以下の画像の赤枠の部分となります。
スクリーンショット 2014-02-17 21.57.22

プロジェクト作成時のままの状態でクリックすると以下のメニューが表示されます。
スクリーンショット 2014-02-15 19.06.06

Scheme一覧

一番上に表示されているのがProduct名と同名でプロジェクト作成時に生成されるデフォルトのSchemeです。
どのSchemeを選択した場合でもサブメニューに実行対象端末の一覧が表示されます。
謎なのは、任意のSchemeAで実行対象端末を「iPad」に変更すると、任意のSchemeBの実行対象端末も「iPad」に変わってしまうことです。
スクリーンショット 2014-02-15 19.08.12

Scheme編集メニュー

存在しているScheme名の一覧の下に「Edit Scheme…」メニューが存在します。
Schemeの編集を行う時に利用します。
スクリーンショット 2014-02-15 19.18.07

Scheme作成メニュー

「Edit Scheme…」メニューの下に「New Scheme…」メニューが存在します。
Schemeの新規作成を行う際に利用します。
スクリーンショット 2014-02-15 19.21.45

Scheme管理メニュー

「New Scheme…」メニューの下に「Manage Schemes…」メニューが存在します。
Schemeのを管理を行う際に利用します。
スクリーンショット 2014-02-15 19.25.08

「Target」

Targetとは

XcodeでSchemeを扱う上でTargetの説明は避けて通れません。
しかし、Xcode5におけるTargetと言う言葉の定義はとても不明確で大変混乱します。私だけかもしれません。
iOS Developer LibraryのXcode Targetの説明を読む限りはTargetはビルドを行う最小粒度の設定で、1プロジェクトに複数のTargetを含む事ができ、各Targetで利用者は任意のビルド設定を上書きし、変更することができるそうです。ただSchemeとの関連は「the Xcode scheme specifies the active target.」しかなく。1つのschemeに1つのtargetしか含まないように読み取れます。

またiOS Developer LibraryのXcode Schemeには「An Xcode scheme defines a collection of targets to build,」との記載があるので、1つのschemeに複数のtargetが含まれるように読み取れますが、
この文のtargetsとthe active targetのtargetは異なる物の様です。
その根拠となるのが以下の画面です。TARGETSの「ToDoListTests」を選択すると、右パネルにTargetを選択するコンボボックスが表示されます。
スクリーンショット 2014-02-16 19.44.10

ここ数日色々動作させ、検証した結果の結論なのですが、プロダクトを実際にビルドするTargetと、それに付帯するTargetが存在するようです。
UnitTestのtargetは後者に属します。とは言え、それ以外に付帯的なtargetは存在しないように思えます。(断言できない・・・)

TARGETSの表示方法

プロジェクトナビゲータでプロジェクトルートを選択後に、エディタエリアの右向きのアイコンをクリックすると、TARGETSが参照できるようになります。
スクリーンショット 2014-02-16 21.23.32

TARGETSの表示後の画面
スクリーンショット 2014-02-16 21.26.40

TARGETSへのTargetの新規追加

「Add Target…」ボタンをクリックします。
スクリーンショット 2014-02-16 21.29.32

すると新規追加するTargetの種類を選択する画面が表示されます。
スクリーンショット 2014-02-16 21.32.10

プロジェクト作成時の画面と良くにています、「Other」以外の項目は同じです。
「Master-Detail Application」を選択して「Next」ボタンをクリックしてください。

次画面んでは、Product名:MasterDetail、Company Identifier:com.exampleを指定して「Finish」ボタンをクリックしてください。

予想通りの結果になりました。
スクリーンショット 2014-02-16 21.55.15

画面中央のTargetの一覧にも「MasterDetail」が追加されました。
スクリーンショット 2014-02-16 21.57.31

Targetの設定変更

テストケースのTarget以外は様々な設定項目が存在します。
Generalの設定だけでも以下のようにたくさんです。
スクリーンショット 2014-02-16 22.00.49

詳細は、「Project Editor Help」>「Editing General Target Settings」をクリックして表示されたヘルプを参照ください。
スクリーンショット 2014-02-16 22.04.21

Targetの複製

複製したいTargetを選択後に、マウスの右クリックを行い、表示される「Duplicate」をクリックします。
スクリーンショット 2014-02-16 22.11.00

コピーしたいTargetがiPhone向(プロジェクト作成時に指定した値)けのターゲットの場合は以下の確認ダイアログが表示されます。
スクリーンショット 2014-02-16 22.13.52

「Duplicate Only」を選択するとターゲットを変更せずにコピーが行われます。
「Duplicate and Transitision to iPad」を選択するとコピー後にターゲットがiPadに変換されます。

当然ですが、iPadのプロジェクトをDuplicateしようとすると「Duplicate and Transitision to iPhone」のボタンが表示されます。

「Duplicate and Transitision to iPad」をクリック後のTARGETSは以下のようになりました。
スクリーンショット 2014-02-16 22.21.09

Targetの削除

削除したいTargetを選択後に、マウスの右クリックを行い、表示される「Delete」をクリックします。
スクリーンショット 2014-02-16 22.22.41

「Scheme」の利用方法

ここまでの操作(Targetの新規追加)によってSchemeとして登録されている物を確認してみます。
以下の画像のように、ToDolist、MasterDetail、ToDoList copyが登録、表示されていることが確認できます。
スクリーンショット 2014-02-17 17.22.59

なお、プロジェクト新規作成時はToDolistしか存在しなかったことから、Scheme:MasterDetail、ToDoList copyは
対応するTarget作成時に対応するSchemeが自動的に作成されたことを意味しています。実際には「Manage Schemes…」メニューから表示される画面で自動生成の設定は変更可能です。

せっかくSchemeが複数できましたので、MasterDetailを選択して実行してみたいと思います。
まずはツールバーのScheme一覧でMasterDetailを選択し、アクティブSchemeをMasterDetailに変更します。
スクリーンショット 2014-02-19 20.45.45

アクティブSchemeがMasterDetailに変更された画面
スクリーンショット 2014-02-19 20.49.46

この状態で実行ボタンをクリックします。
すると、当然ですが、Master-Detail-Applicationのテンプレートで生成されたアプリケーションが実行されます。
スクリーンショット 2014-02-19 20.51.28

「Scheme」の新規追加

「New Scheme」メニューをクリックするとSchemeの新規追加画面が表示されますので、Nameに”ToDoList2″を指定し、Targetは変更せずに「OK」ボタンをクリックします。
スクリーンショット 2014-02-15 19.56.16

するとScheme一覧にToDoList2が追加されます。
スクリーンショット 2014-02-17 17.28.08

再度「New Scheme」メニューをクリックするとSchemeの新規追加画面が表示されますので、Nameに”ToDoList3″を指定し、Targetを変更してみます。
Targetをクリックします。
スクリーンショット 2014-02-16 22.24.45

表示された画面で「ToDoListTests」を選択し、「OK」ボタンをクリックしSchemeを作成します。

ToDoList2,ToDoList3追加後のScheme一覧は以下のようになっているはずです。
スクリーンショット 2014-02-17 17.31.04

「Scheme」の編集

以下の画面で「Edit Scheme」をクリックすると
スクリーンショット 2014-02-17 17.39.31

以下のようなScheme編集画面が表示されます。
スクリーンショット 2014-02-17 17.40.22

編集対象のSchemeは以下の画像の赤枠のコンボボックスで変更可能です。
スクリーンショット 2014-02-17 17.40.22

編集対象のSchemeは以下の画像の赤枠のコンボボックスの右側にある対象デバイスが本画面に存在する意義は不明です。Scheme毎に設定を保持できるのであればここに有ってもOKですが、プロジェクトで1つの設定なのに・・・、UIの自己レビューでNGを自ら食らわすレベルだと思いますが・・・
Breakpointsも同じです。デバッグ実行時にブレークポイントを指定&有効にしたい場合はここでプレークポイントを有効にします。
スクリーンショット 2014-02-17 17.44.36

Scheme編集画面の左メニューにはBuild、Run ToDoList.app、Test、Profile ToDoList.app、Archiveが存在します。
以降では、SchemeとしてToDoListを選択した状態の画面イメージとなります。

Build選択時

Build選択時に表示される画面は以下の通りです。
スクリーンショット 2014-02-17 17.55.22

以降で、Build選択時に指定できる各項目の説明を記載いたします。

「Parallelize Build」
チェックすると依存性の無いソースを並列にビルドします。

「find implicit Dependencies」
ワークスペースの中に複数のプロジェクトが存在する場合のビルド動作に影響する設定です。
ワークスペースにプロジェクトAとプロジェクトB(ライブラリ)が存在しており、AがBを参照している場合
この値がチェックされない場合は、プロジェクトAビルド前に、プロジェクトBが自動的にビルドされません。
この設定時は、プロジェクトAビルド前にプロジェクトBをビルドしておく必要があります。

「Targets一覧」
指定できる項目は以下の項目となります。

  • 「Analyze」:静的解析を実行
  • 「Test」:ユニットテストを実行
  • 「Run」:アプリケーションの実行
  • 「Profile」:パフォーマンス監視(Instruments起動)
  • 「Archive」:リリース用バイナリ作成(ipaファイル作成含む)

ただし、Target=ToDoListの行の「Test」、「Run」、「Profile」はグレーチェック(スリーステートチェックボックスの中間値)となっています。
同様にToDoListTestsの行の「Test」もグレーチェックとなっています。
このグレーチェック状態の意味が何日調査&考え&実行しても理解できませんAppleの意図が・・・
意図が判明次第このエントリーの修正を行う予定です。

Run選択時

中央上部に更にタブのような設定の切り替え部分が存在します。
・「info」タブ
スクリーンショット 2014-02-13 17.50.33

「Build Configuration」では「Release」、「Debug」が選択可能です。他の画面でも「Build Configuration」は良く登場しますので、以降では、動作が同じ場合の説明は省略させていただきます。
「Release」は言葉の通りリリース用のビルドを実行時に選択、「Debug」はデバック用のビルドを実行時に選択します。
「Debug」でビルドしたバイナリはデバッグ情報が組み込まれたり、未割当のメモリー空間にアクセスしても異常終了しない(VCはそうですが・・・)
実行速度が遅くなるのでマルチスレッド実行時におけるスレッドセーフでない問題が再現しない等々の特徴がありますので、
Appleに申請する前の通しのテスト(IT,ST)は必ず「Release」ビルドでバイナリに対して行う必要があります。

「Executable」をクリックすると以下の画面が表示されます。
「none」、「現在のPojectの実行ファイル」、「Other…」が指定可能です。
「Other…」を選択するとファイル選択ダイアログが表示されますので、希望の実行ファイルを選択します。
スクリーンショット 2014-02-17 18.32.46

Debuggerをクリックすると以下の画面が表示されます。
選択肢は「None」、「LLDB」の2つとなります。「None」を選択するとデバック実行は不可能となります。
スクリーンショット 2014-02-12 21.38.46

Debug Process Asは選択不能になっていますが、「Me」、「Root」の選択肢が存在します。

Launchは「Autmatically」、「Wait for ToDoList.app to be launched manualy」の2つの選択が存在します。
Debuggerで「None」を指定している場合はWait for ToDoList.app to be launched manualy」は選択不可となります。
なお、Wait for ToDoList.appのToDoList.app部分は「Executable」で選択している物となります。

・「Argument」タブ
「Argument Passed Launch」では実行時の引数を指定可能です。
「Environment Variables」では実行時の環境変数を指定可能です。
両方とも「+」ボタンクリックで新規追加ができます。
スクリーンショット 2014-02-13 18.00.11

値の追加後のイメージは以下のようになります。
スクリーンショット 2014-02-13 18.05.48

各値の前に存在するチェックを外すことで、一時的に値を利用しないようにできます。
スクリーンショット 2014-02-13 18.07.37

既に追加している値の変更は、その行を選択後に、クリックすると更新モードに変わります。
スクリーンショット 2014-02-13 18.11.21

削除は、削除したい値を選択後に「-」ボタンをクリックすることで可能です。

・「Options」タブ
スクリーンショット 2014-02-17 18.40.08

「Allow location simulation」チェックボックスは、仮想的にロケーション(位置情報をに変更)の変更を許可する場合にチェックします。
「Default location」は「Allow location simulation」がチェックされている時のみ有効です。指定したい地域を選択します。
Xcodeの過去のバージョンでは、この値を指定しても、GPSの値で上書きされるバグが有ったようですが、現在のバージョンで修正済みかは不明です。
スクリーンショット 2014-02-17 19.47.50

「Application Data」ですがstackoverflowに「iOS: How to specify application data package in Xcode Schemes?」とのQ&Aがありましたので、こちらをご覧ください。
「Application Data」後にプロジェクトに追加すると、選択のコンボボックスに表示されるようです。
申し訳ございませんが、実際の動作確認まではできておりません。

選択する画面は以下のようになります。
スクリーンショット 2014-02-17 21.03.55

「Routing App Coverage File」
ナビアプリのような、位置情報を使用するアプリのカバーするエリアを .geojson 形式で登録します。ナビアプリでない場合は未登録でOKです。
スクリーンショット 2014-02-17 21.15.38

「OpenGL ES frame capture」
シェーダ情報をキャプチャするかどうかの設定を行います。デフォルトで「Automatically enabled」が設定されています。
選択肢は以下の通りです。
スクリーンショット 2014-02-17 21.30.35

ウィキペディアによると

コンピュータグラフィックスのシェーダ(英: shader)は、主にライティング(光源計算)・シェーディング(陰影処理)とレンダリング(ピクセル化)を実行するためにグラフィック リソースに対して使用するソフトウェア命令の組み合わせである。「shade」とは「次第に変化させる」「陰影・グラデーションを付ける」という意味で、「shader」は頂点色やピクセル色などを次々に変化させるもの(より具体的に、狭義の意味で言えば関数)を意味する。

だそうで、ゲーム等の3Dの動きを多用するアプリのレンダリング性能劣化時等に、取得しておいた情報を用いて評価を行えます。

「Enable Performance Analysis」はそのままですが、パフォーマンスの解析を行うかどうかの設定です。
選択肢は以下の通りですが、iOS7からはARC(Automatic Reference Counting)がデフォルトのメモリ管理手法となっているためこのような選択肢の構成になっていると思われます。
スクリーンショット 2014-02-17 21.33.10

「Background Fetch」は
iOSが必要なタイミングで

を呼び出してくれる機能です。
詳細は、Qiitaの「Background Fetch を試してみた」が非常に参考になりますのでご覧ください。

・「Diagnostic」タブ
このタブは画面に書いてあるままで理解いただけると思いますので、画面だけとします。
スクリーンショット 2014-02-17 21.46.44

「Xcode5でSchemeを利用する。[前編]」のエントリーは以上です。

他にもXcode5に関するエントリーがございますので、「Xcode5の使い方」
もしくは、ページ右側にある「カテゴリー」の「Objective-C」
もしくは、ページ上部にあるタブメニューの「Objective-C」をクリックしていただければ、
何らかお役に立てる情報があるかも知れません。

「Xcode5でSchemeを利用する。[後編] 」に続く。


スポンサードリンク

Googleアドセンス

Googleアドセンス




関連記事

Xcode(Objective-C)のデリゲートとプロトコルの使い方[後編]

ではXcodeが既に用意しているデリゲートを利用した実装例について説明させていただきました。

記事を読む

Xcode5でイメージ(画像)を表示&操作する[後編]

Xcodeでアプリ開発を行う時に、イメージ(画像)の表示とイメージ操作時のイベント処理は必須とまでは

記事を読む

Xcode5&Objective-Cでセグエを利用して画面遷移を実現する。[前編:モックの作成]

iPhoneアプリの画面遷移と言えば、真っ先に挙がるのが「ナビゲーションコントローラ」なのですが

記事を読む

Xcode5の「Auto Layout」機能の使い方[Pin制約の設定方法]

「基礎知識と制約(Align:アライメント)の設定方法」に引き続き、「Auto Layout」に必要

記事を読む

Xcodeのユーティリティエリアの使い方[ストーリーボード表示時の「Attributes」,「Size」,「Connections」Inspector]

本エントリーでは、「Xcodeのユーティリティエリアの使い方」に引き続き、「ストーリーボード」表示時

記事を読む

Xcode5で画面にナビゲーションバーを配置して利用する。

今回は「ナビゲーションバー」をiPhoneアプリの画面に配置して利用する方法を記載させていただきます

記事を読む

Xcode5の「Auto Layout」機能の使い方[簡単な画面レイアウトを構成してみる。]

「基礎知識と制約(Align:アライメント)の設定方法」 で「Auto Layout」機能の利

記事を読む

Xcode5の「Auto Layout 」機能の使い方[基礎知識と制約(Align)の設定方法]

Xcode4から導入された「Auto Layout」ですが、使いこなせるようになるのは骨が折れます。

記事を読む

Xcode5&Objective-CでUITableViewでUINibを使ったカスタムセル(UITableViewCell)を利用する方法

本エントリーでは、Xcode5のテーブルビューにUINibを使ったカスタムセル(UITableVie

記事を読む

Xcode5でイメージ(画像)を表示&操作する[前編]

Xcodeでアプリ開発を行う時に、イメージ(画像)の表示は必須な処理であると言えます。 前回のエン

記事を読む

Comment

  1. […] こちらがスクリーンショット付きで場所を解説していますので、ぜひ。 Xcode5でSchemeを利用する。 […]

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

動画で英語を学習できるiOSの無料アプリCapTubeをリリースいたしました。

個人では初となるiOSアプリをリリースいたしました。 何度もリジ

no image
Ruby on rails4系でBootstrapを利用するためのtips

MacでRuby on rails4系のBootstrapを利用しよう

no image
Java、Eclipse、JUnit関連のエントリーの移行のお知らせ

Java、Eclipse、JUnit関連のエントリーは http:/

iOS8開発者向けお勧め本紹介[詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応]

iOS7開発者向けお勧め本紹介を以前に紹介させていただきまいたが、今回

Swift入門(Xcode6のXCTestフレームワークで学ぶ) 第二回「関数(メソッド)とクロージャーの利用方法」

前回はSwiftの概要をザックリと説明させていただきました。 今

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑