Start Developing iOS Apps Today(sup.1)〜Xcodeでのワークフローの管理

2012. 11. 23
チュートリアル『初めてのiOSアプリケーション』で見たように、主要なワークフローのタスクはXcodeのワークスペースウィンドウで実行します。
分離しているオーガナイザウィンドウでは、ドキュメントの閲覧や、テスト用デバイスの有効化、貴方のアプリをApp Storeへ登録する準備等、補助的なタスクを実行する事ができます。

ワークスペースウィンドウには、ナビゲーション領域、エディタ領域、そしてユーティリティ領域があります。
初めてのiOSアプリケーション』では、編集するファイルの選択にナビゲーション領域を使用していました。
エディタ領域はソースファイルの編集や、ユーザインターフェイス要素の設計に使用しました。
ユーティリティ領域では、ラベルのテキストやボタンのタイトルを設定しました。



●ワークスペースのカスタマイズ

様々な組み合わせでナビゲーション、エディタ、そしてユーティリティ領域を非表示にする事ができます。
初めてのiOSアプリケーション』では、ユーティリティ領域の表示/非表示に、ツールバーViewセレクタを使用しました。
ユーティリティ領域では様々なオブジェクトの属性の検査や選択ができ、またユーティリティ領域を非表示にすると、より大きなエディタ領域を表示することができました。

utility_button_2x.png

ワークスペースウィンドウは他にもSafariスタイルのタブを使用して複数実行するなど、ワークフロー固有のレイアウトにワークスペースをカスタマイズする事ができます。
例えば、あるタブにはヘッダファイル、別のタブには実装ファイルを表示することができます。

MultipleTabs_2x.jpg

タブでソースコードファイルを表示するには
  1. ソースエディタにヘッダファイルを表示するため、プロジェクトナビゲータでHelloWorldViewController.hを選択します。
  2. 『View』メニュー の『Show Tab Bar』を選択します。
  3. 『File』メニューの『New』→『Tab』を選択します。
  4. タブ化したソースエディタウィンドウで実装ファイルを表示するため、プロジェクトエディタでHelloWorldViewController.mを選択します。
  5. ソースファイル間を移動するには、タブをクリックします。
  6. タブを削除するには、タブにポインタを移動してCloseボックスをクリックします。
  7. 『View』メニューの『Hide Tab Bar』を選択すると、タブバーを非表示にできます。

また、複数のワークスペースウィンドウを作成する事もできます。
各タブまたはワークスペースウィンドウは、それぞれ独立してカスタマイズする事ができます。

MultipleWindows_2x.jpg

複数ウィンドウでソースコードファイルを表示するには
  1. ソースエディタにヘッダファイルを表示するため、プロジェクトナビゲータでHelloWorldViewController.hを選択します。
  2. 新しいワークスペースウィンドウを開くため、『File』メニューの『New』→『Window』を選択します。
  3. 新しいウィンドウで実装ファイルを表示するため、プロジェクトエディタでHelloWorldViewController.mを選択します。
  4. Viewセレクタでユーティリティ領域を表示または非表示にするなど、任意のウィンドウをカスタマイズします。



●iOSシミュレータでのアプリのテスト

アプリをテストまたはデバッグする際、Mac上のiOSシミュレータで実行する事ができます。
iOSシミュレータを使うと、貴方の望むようにアプリの動作を確認する事ができます。

デバッグ環境はXcodeに組み込まれています。
アプリを実行している時、スタックトレースを表示するスタックフレームは、デバッグ時に表示または非表示にするために、デバッグナビゲータで展開/圧縮する事ができます。
ステップスルーする場合、単一スレッドにロックし、実行時の特定のスレッドを追跡する事ができます。

Debug_2x.png

Xcodeデバッガでのアプリの実行
  1. HelloWorldプロジェクトでソースエディタにファイルを表示するため、プロジェクトナビゲータでHelloWorldViewController.mを選択します。
  2. 『self.label.text = greeting;}』行を探します。
  3. ブレークポイントを挿入するため、この行の左にあるガーターをクリックします。
    青いブレークポイントのインジケータが表示されます。
    Breakpoint_2x.jpg
  4. iOSシミュレータでHelloWorldをビルドし実行するため、ツールバーのRunボタンをクリックします。
  5. テキストフィールドでWorldと入力し、Doneボタンをクリックしてキーボードを閉じます。
  6. Helloボタンをクリックします。
    ブレークポイントが設定されているため、HelloWorldの実行は停止します。
    ワークスペースウィンドウが最前面に移動し、エディタ領域の下部にデバッグ領域が開きます。
    デバッグ領域にはローカル変数とその現在の値が表示されます。
    ブレークポイントを除去するにはブレークポイントをクリックし、ガーターから離れた場所にドラッグします。



●iOSデバイス上でのアプリのテスト

iOSシミュレータ上でアプリの基本的な動作をテストする事ができますが、Macに接続したデバイス上で実行する事も必要です。
デバイスは最高のテスト環境を提供し、貴方のアプリが顧客のデバイス上でも動作するように観測する事ができます。
iOSシミュレータはデバイス上で実行される全てのスレッドが実行されないので、デバイスでテストをする必要があります。
理想的には全てのデバイスとサポートする予定のiOSバージョンでアプリをテストする必要があります。

iOSデベロッパプログラムに参加している場合、デバイス上でのアプリの実行、テスト、そしてデバッグをXcodeで今すぐ始める事ができます。
(iOSデベロッパとしての登録についての情報は、このロードマップの初め頃にある『セットアップ』に含まれています。)

デバイス上でアプリを実行するには、Appleから開発用証明書を取得する必要があります。
デバイス上で実行するには事前にアプリを暗号化した署名される必要があり、証明書はアプリの署名に使用されます。
貴方はXcodeのオーガナイザウィンドウを介して証明書を取得します。

:Xcodeのドキュメントオーガナイザでこの説明書を読んでいる場合、このページの任意の場所をControlを押しながらクリックし、コンテキストメニューから『Open Page in Browser』を選択してください。
するとデフォルトのウェブブラウザでこのページが表示されます。
そしてデバイスオーガナイザを選択し、このページをドキュメントオーガナイザからデバイスオーガナイザに置き換える事で、ウェブブラウザで説明書を読む事ができるので助かるでしょう。
これらの演習を終了した後、Xcodeでこのページを再開して読みたい場合は、オーガナイザウィンドウのツールバーの『Documentation』をクリックしてください。

Xcodeでの開発用証明書の取得
  1. 『Window』メニューの『Organizer』を選択します。
  2. 『Devices』をクリックします。
  3. 『LIBRARY』下の『Provisioning Profiles』を選択します。
  4. ウィンドウの下部にある『Refresh』ボタンをクリックします。
  5. 貴方のApple Developerのユーザ名とパスワードを入力し、『Log in』をクリックします。
    貴方のアカウントでログインすると、Xcodeが開発用証明書を要求しているのかどうかを尋ねるプロンプトが表示されます。
  6. 『Submit Request』ボタンをクリックします。
    開発用証明書はキーチェーンに保存され、その後iOSチームプロビジョニングプロファイルに追加されます。
    Xcodeが配布用証明書を要求するかどうかを尋ねる別のプロンプトが表示される場合がありますが、それらは後にApp Storeにアプリを登録する際に必要になります。
    必要な場合は『Submit Request』ボタンを再度クリックします。
  7. 4_developmentcertificate_2x.jpg

デバイス上でアプリを実行するには、デバイスに関連するプロビジョニングプロファイルをインストールする必要があります。
このプロビジョニングプロファイルは(開発用証明書を介して)貴方と(一意のデバイス識別子をリストする事によって)貴方のデバイスを識別し、アプリの実行を有効化します。

Xcodeでのデバイスのプロビジョニング
  1. Macにデバイスを接続します。
  2. デバイスオーガナイザを開きます。
  3. 『DEVICES』下にあるデバイスを選択します。
  4. 『Use for Development』ボタンをクリックします。
    6_registerdevice_before_2x.png
    貴方のアカウントに初めてデバイスIDを追加する場合、XcodeはXcodeワイルドカードアプリケーションID、開発用証明書、そしてデバイスIDを使用してiOSチームプロビジョニングプロファイルを生成します。
    またiOSチームプロビジョニングプロファイルはデバイスにインストールされます。

適切な開発用証明書とプロビジョニングプロファイルがあると、インストールされたデバイス上で貴方のアプリを実行する事ができます。
またデバイス上でアプリを実行している間、Xcodeでのデバッグやパフォーマンスのプロファイリング機能を使用する事ができます。

接続されたデバイス上でのアプリの起動
  1. 貴方のプロジェクトでのXcodeのワークスペースウィンドウで、『Product』メニューの『Edit Scheme』を選択してスキームエディタを開きます。
  2. 『Destination』ポップアップメニューから貴方のデバイスを選択します。
    貴方のMacに有効なプロビジョニングプロファイルを持つデバイスが接続されている場合、Destinationポップアップメニューに項目として、その名前と実行しているiOSのバージョンが表示されます。
    LaunchAppOnDevice_2x.jpg
  3. スキームエディタを閉じるため『OK』をクリックします。
  4. Runボタンをクリックします。
    コード署名ツールがキーチェーンのキーを使用してアプリを署名できるかどうかを尋ねるプロンプトが表示された場合は、『Allow』または『Always Allow』をクリックしてください。



●Xcodeのヘルプを素早く検索する

アプリ開発の過程では、Xcodeで操作の多くを実行します。
タスクについての説明が必要な場合、Xcodeはワークフローに応じたヘルプを提供しており、Xcodeのユーザインターフェイスから直接アクセスすることができます。
この支援は理解し易い工程、ビデオまたはスクリーンショット、そして素早く作業に戻れる簡潔な説明が含まれています。

Xcodeでのヘルプの表示
  1. HelloWorldプロジェクトでソースエディタでヘッダファイルを表示するために、プロジェクトナビゲータでHelloWorldViewController.hを選択します。
  2. Xcodeのドキュメントオーガナイザでこのドキュメントを読んでいる場合、『Go Back』ボタンを見つけてください。
    このドキュメントの残りの工程を実行するために戻る場合にクリックする必要があります。
    GoBackButton_2x.png
  3. ソースエディタの任意の場所をControlを押しながらクリックします。
    コンテキストメニューの最後の項目『Source Editor Help』を開きます。
  4. 『Source Editor Help』を選択すると、一般的なソースエディタのタスクのリストが表示されます。
    SourceEditorHelp_2x.jpg
  5. ドキュメントオーガナイザでヘルプ記事を参照するには、『Source Editor Help』→『Catching Mistakes with Fix-it』を選択します。
  6. 教育ビデオの再生を行うにはサムネイル画像をクリックします。



●アプリのパフォーマンスを向上させる

貴方のソフトウェアが最高のユーザ体験を提供することを保証するためには、XcodeでInstrumentsを起動し、iOSシミュレータまたはデバイス上で実行される貴方のアプリのパフォーマンスを分析します。
Instrumentsは実行中のアプリからデータを収集し、グラフィカルなタイムラインで表示します。

instruments_showcase_2x.jpg

アプリのメモリ使用量、ディスクアクティビティ、ネットワークアクティビティ、グラフィックスパフォーマンスなどの測定値についてデータを収集する事ができます。
データをまとめて表示する事によって、アプリのパフォーマンスで改善する可能性のある領域を識別するために、様々な側面から分析する事ができます。
貴方のアプリのユーザインターフェイス要素のテストを自動化する事ができます。
またアプリのパフォーマンスを向上させるための変更を決定するために、異なる時間の動作を比較する事もできます。

アプリのパフォーマンスの分析を開始する
  1. XcodeのHelloWorldプロジェクトで、『Product』メニューから『Perform Action』→『Profile Without Building』を選択します。
  2. 使用可能なトレーステンプレートを表示するには、左側の列にある『iOS Simulator』下の『All』を選択します。
  3. 『Leaks』テンプレートを選択し、『Profile』をクリックします。
    HelloWorldを実行したiOSシミュレータと一緒にInstrumentsアプリが起動します。
  4. HelloWorldのテキストフィールドに貴方の名前を入力し、キーボードのDoneボタンをクリックし、そしてHelloボタンをクリックします。
  5. パフォーマンスデータの記録を停止するには、iOSシミュレータのメニューで『Quit iOS Simulator』を選択してください。
  6. HelloWorldプロジェクトのメモリ割り当てを検証するには、InstrumentsペインのAllocationsをクリックしてください。
    例えば、トラックペインでは割り当てられたメモリがグラフ化されており、プログラム全体で行われたメモリ割り当てを逐次確認する事ができます。
    (トラックペインでの大きなスパイク(急増した部分)は潜在的なボトルネックを示しており、いくつかのブロックを事前に割り当てたり、他のブロックについては後で割り当てる事で軽減する事ができます。)



●アプリのバージョン管理

貴方が行ったコードの変更が原因で不具合が発生した場合、Xcodeでスナップショットを作成していると、削除されたプロジェクトでも以前の状態に簡単に復元することができます。
スナップショットは、後で復元できるようにディスク上にプロジェクトの現在の状態を保存します。
Xcodeのプロジェクトオーガナイザにスナップショットが表示されます。

貴方は好きな時に手動でスナップショットを作成する事ができ、またビルドする前毎や、検索や置換操作を実行する前毎になど、適切な状況で自動的にスナップショットを作成するようにXcodeを設定する事もできます。

snapshots_2x.jpg

プロジェクトのスナップショットの作成と復元
  1. HelloWorldプロジェクトを開き、『File』メニューから『Create Snapshot』を選択します。
  2. 用意された欄に名前と説明を入力します。
  3. 『Create Snapshot』ボタンをクリックします。
  4. スナップショットを見るには、『Window』メニューから『Organizer』を選択することで、オーガナイザウィンドウに表示されます。
  5. 『Projects』ボタンをクリックすると、スナップショットのリストが表示されます。

Source control management(SCM)は、スナップショットよりもきめ細かいレベルでの変更を追跡する事ができます。
(またSource control managementは、プログラマのチームで作業する場合に成果を調整するのに役立ちます。)
SCMシステムは、SCMリポジトリ(集積所)内に各ファイルの各バージョンについてメタデータを蓄積し、ディスク上の各ファイルの複数のバージョンを保存します。

Xcodeは、GitとSubversionという2つの一般的なSCMシステムをサポートします。
Xcodeには、どちらかのシステムからリポジトリ内に保存されたファイルのバージョンを比較することができる、バージョンエディタが含まれています。
コード内でバグを検出した場合、正常に動作していた以前のバージョンと最新バージョン間での変更を比較することができ、トラブルの原因をゼロにする助けとなります。

version_editor_nav_bar_2x.jpg



●アプリの配布や公開

XcodeはApp Store上でアプリを公開して配布する前に、テスターとアプリを簡単に共有することができます。
貴方はXcodeのスキームエディタを使用してアプリのアーカイブを作成することによって、配布工程を開始します。
そしてXcodeのArchivesオーガナイザを使用して、テスト用にアプリを他者と共有することができます。

アプリを公開する準備ができたら、App Storeでの公開に必要となる基本的な検証テストを実行するため、Archivesオーガナイザを使用します。
これらのテストに合格することは、アプリの承認プロセスをできるだけ速くすることを保証します。
これでXcodeからApp Storeへ直接アプリを提出する準備が整います。

archives_organizer_2x.png

このロードマップの後の記事『Prepare for App Store Submission』で、アプリの配布と公開についての詳細を学びます。



参考文献

Apple/Start Developing iOS Apps Today

Apple/Manage Your Workflow in Xcode

Wikipedia/Git

Wikipedia/Apache Subversion

0 CommentsPosted in 資料






QuietControl 30 wireless headphones
Calendar
10 | 2012/11 | 12
Sun Mon Tue Wed Thu Fri Sat
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
Recent Articles
iTunes


Swift
Categories
Tips
Profile

水月杏香

Author:水月杏香
永遠の初心者プログラマ。

Wish List
WACOM


ARC
Technical Q&A
情報プロパティリストキー
Start Developing iOS Apps Today
BOSE

QuietControl 30 wireless headphones
Reference
NSApplicationDelegateプロトコル
NSArrayクラス
NSAutoreleasePoolクラス
NSBundleクラス
NSBundle UIKit追加分
NSCalendarクラス
NSCoderクラス
NSCodingプロトコル
NSCopyingプロトコル
NSDataクラス
NSDateクラス
NSDateFormatterクラス
NSDictionaryクラス
NSEntityDescriptionクラス
NSEnumeratorクラス
NSErrorクラス
NSExceptionクラス
NSFetchRequestクラス
NSFileHandleクラス
NSFileManagerクラス
NSIndexPathクラス
NSIndexPath UIKit追加分
NSKeyedArchiverクラス
NSKeyedUnarchiverクラス
NSKeyValueCodingプロトコル
NSLocaleクラス
NSManagedObjectクラス
NSManagedObjectContextクラス
NSManagedObjectModelクラス
NSMutableArrayクラス
NSMutableCopyingプロトコル
NSMutableDictionaryクラス
NSMutableSetクラス
NSNotificationクラス
NSNotificationCenterクラス
NSNullクラス
NSNumberクラス
NSObjectクラス
NSObject UIKit追加分
NSObjectプロトコル
NSPersistentStoreクラス
NSPersistentStoreCoordinatorクラス
NSPredicateクラス
NSPropertyListSerializationクラス
NSRunLoopクラス
NSSetクラス
NSStringクラス
NSString UIKit追加分
NSTimerクラス
NSTimeZoneクラス
NSURLクラス
NSURLProtectionSpaceクラス
NSURLRequestクラス
NSUserDefaultsクラス
NSValueクラス

UIActionSheetクラス
UIActionSheetDelegateプロトコル
UIActivityIndicatorViewクラス
UIAlertViewクラス
UIAlertViewDelegateプロトコル
UIApplicationクラス
UIApplicationDelegateプロトコル
UIBarButtonItemクラス
UIBarItemクラス
UIButtonクラス
UIColorクラス
UIControlクラス
UIDatePickerクラス
UIDeviceクラス
UIEventクラス
UIFontクラス
UIGestureRecognizerクラス
UIImageクラス
UIImageViewクラス
UIKit Function
UILabelクラス
UINavigationControllerクラス
UINavigationItemクラス
UIPickerViewクラス
UIPickerViewDataSourceプロトコル
UIPickerViewDelegateプロトコル
UIPinchGestureRecognizerクラス
UIResponderクラス
UIScreenクラス
UIScrollViewクラス
UISearchBarクラス
UISearchBarDelegateプロトコル
UISegmentedControlクラス
UISliderクラス
UISwipeGestureRecognizerクラス
UISwitchクラス
UITableViewクラス
UITableViewCellクラス
UITableViewControllerクラス
UITableViewDataSourceプロトコル
UITableViewDelegateプロトコル
UITapGestureRecognizerクラス
UITextFieldクラス
UITextFieldDelegateプロトコル
UITextInputTraitsプロトコル
UITextViewクラス
UITextViewDelegateプロトコル
UIToolbarクラス
UITouchクラス
UIViewクラス
UIViewControllerクラス
UIWebViewクラス
UIWebViewDelegateプロトコル
UIWindowクラス

AVAudioPlayerクラス
AVAudioPlayerDelegateプロトコル

CADisplayLinkクラス
CAEAGLLayerクラス
CALayerクラス

CGAffineTransform
CGBitmapContext
CGColor
CGColorSpace
CGContext
CGGeometry
CGImage
CGPath

EAGLContextクラス
EAGLDrawableプロトコル

Foundation Constants
Foundation Data Types
Foundation Functions

MPMediaItemクラス
MPMediaItemArtworkクラス
MPMediaPlaylistクラス
MPMediaPropertyPredicateクラス
MPMediaQueryクラス
MPMusicPlayerControllerクラス

Randomization Services

System Sound Services
Amazon


OpenGL ES
SQLite
Monthly Archives
Recent Comments
Recent TrackBacks
RSS Link
Visitors
QR Code
QR