xcode5でのデバッグ / ci | ios 7エンジニア勉強会
DESCRIPTION
TRANSCRIPT
XCode5でのデバッグ / CI メディアサービスカンパニー
田村孝文
13年10月8日火曜日
今日のメニュー
•XCode5新機能をピックアップして紹介•XCode5でのUnitTestとCI(Bots)の紹介
13年10月8日火曜日
XCode5新機能ピックアップ
•AppleID連携•画像管理•ソースコード管理•デバッグで使える機能•小ネタ
13年10月8日火曜日
AppleID連携(1):Automatic Configuration• AppleIDに対応した設定(証明書やプロファイル)を自動でXCode5に取り込む機能
• AppleIDの設定は、”Preferrence”→”Accounts”
13年10月8日火曜日
AppleID連携(2):Provisioning Profile• AppleIDの設定画面から Provisioning Profileの取り込み• AppleIDの”View Details..”
13年10月8日火曜日
AppleID連携(3):Provisioning Profile• 取り込んだProvisioning Profileは、各プロジェクトの中のBuildSettingsで指定
• “Code Signing Identity”の下に項目が追加されている
13年10月8日火曜日
AppleID連携(4):Capabilities• Capabilities: Apple提供の各種サービスの設定を行う• 各種設定のON/OFFをスイッチでコントロール• アカウントの設定、Frameworkの追加が自動化
13年10月8日火曜日
画像管理(1):Asset Catalog• いろいろなサイズの画像パーツやアイコンをセットで管理• XCode4までの方法(~@2x)と共存可能
13年10月8日火曜日
画像管理(2):Asset Catalog• すでにある画像からAssetCatalogを作れる• “New File” → ”iOS Resource” →”Asset Cagalog”• AssetCatalogを選んで→”Edit”→ “Import from project”
13年10月8日火曜日
ソースコード管理(1):Source Control• 上部メニューに”Source Control”が追加• Gitの一通りの操作が可能• Pull Push Commit Branch ...• SVNに対応
13年10月8日火曜日
ソースコード管理(2):Source Control• コミット時に、”Push to Remote”が可能• 地味だけど便利機能
13年10月8日火曜日
ソースコード管理(3):Blame• Blame ソースコードに対応したコミットを見る• カーソル→“Editor”→”Show Blame for Line”
13年10月8日火曜日
ソースコード管理(4):Blame• AssistantEditorの横の”Comparison”を長押し→Blame表示
• Blame ソースコードの部分に対応したコミットを表示
• 誰が何時のコミットで修正したのかが分かる
• 長押しの後”Log”でコミットログ
13年10月8日火曜日
デバッグ(1):デバッグゲージ• デバッグ開始で、CPUのいろいろな情報が見えます。
13年10月8日火曜日
デバッグ(2):デバッグゲージ• デバッグ開始で、メモリのいろいろな情報が見えます。
13年10月8日火曜日
デバッグ(3):DataTips• 色々なオブジェクトの内容を見るための”DataTips”• 変数をマウスオーバー→吹き出しの中の”目”アイコンをクリック
13年10月8日火曜日
デバッグ(4):DataTips•オブジェクトの種類で見え方が違う
13年10月8日火曜日
デバッグ(5):DataTips• 標準的なオブジェクト• NSData (16進数表示)、NSString、NSNumber等• 図形に関するオブジェクト• NSPoint、NSSize、CGSize、Path、UIColor等• 画像に関するオブジェクト• UIImage,NSImage、CGImageRef等• ブラウザのような表示(URL)• 地図表示(CLLocation) *MacOSX10.9以降
13年10月8日火曜日
デバッグ(6):BreakPointのon/off
• debugツールバーで全てのBreakPointのオンオフをコントロール
13年10月8日火曜日
デバッグ(7):Viewの階層構造
• lldbデバッガでViewの階層構造を見る事が出来ます。• (lldb) po [view recursiveDescription]
13年10月8日火曜日
小ネタ(1)• Storyboardで画面プレビュー• Storyboard→”Assistant Editor”→”Preview”• 縦長や横長表示、iOS6まで/7以降の切り替えが可能
13年10月8日火曜日
小ネタ(2)• JavaDocのようなコメントが可能で、QuickHelp(Option+メソッド)の吹き出しにコメント内容が表示される
• /*! ディスクリプション \param パラメータ \return 戻り値 等• AppleDoc/doxygenのようなジェネレート作業は不要
13年10月8日火曜日
情報源•WWDC2013の400番台• https://developer.apple.com/wwdc/videos/• 400 What’s New in XCode 5 ★• 407 Debugging with XCode• PDFよりもVideoが分かりやすいです。•英語は分からないけど、デモのXCodeの操作なら分かるのでお勧めします。
13年10月8日火曜日
13年10月8日火曜日
UnitTestとCI(Bots)の紹介
•UnitTest• 追加されたTest Navigator• 追加されたXCTest.framework• CI(Bots)の概要
13年10月8日火曜日
UnitTest(1):Test Navigator•XCode4までのUnitTest:コンソール出力のみ•→成功/失敗がわかりにくく使いにくい•XCode5からのUnitTest : Test Navigator
13年10月8日火曜日
UnitTest(2): Test Navigator
• UnitTestのファイルと、その中のテストメソッドが表示される
• ここからテストメソッドをリトライ出来る。
• 1つだけのリトライも可能• TestClassの追加• 失敗テストのみ表示
13年10月8日火曜日
UnitTest(3):TestFailureBreakpoint
• テストで失敗したときに停止するブレークポイント• BreakpointNavigatorで ”Add Test Failure Breakpoint”
13年10月8日火曜日
UnitTest(4):XCTest
• XCode4まで: SenTestingKit.framework• XCode5から: ↑とXCTest.framework• SenTestingKit はXCode5(TestNavigator)でも使えます
13年10月8日火曜日
UnitTest(5):XCTest
• SenTestingKit からの変換
• “Edit”→”Refactor”→”Convert to XCTest”
13年10月8日火曜日
UnitTest(6):XCTest
SenTest XCTestSTFail
STAssertNilSTAssertNotNilSTAssertTrueSTAssertFalseSTAssertEquals
STAssertEqualObjects
STAssertEqualsWithAccuracy
STAssertThrowsSTAssertThrowsSpecificSTAssertThrowsSpecificNamedSTAssertNoThrowSTAssertNoThrowSpecificSTAssertNoThrowSpecificNamedSTAssertTrueNoThrowSTAssertFalseNoThrow
XCTFailXCTAssertXCTAssertNil,XCTAssertNotNil,XCTAssertTrueXCTAssertFalseXCTAssertEqualXCTAssertNotEqualXCTAssertEqualObjectsXCTAssertNotEqualObjectsXCTAssertEqualWithAccuracyXCTAssertNotEqualWithAccuracyXCTAssertThrowsXCTAssertThrowsSpecificXCTAssertThrowsSpecificNamedXCTAssertNoThrowXCTAssertNoThrowSpecificXCTAssertNoThrowSpecificNamed
•SenTestingKit との違いはほぼ無い•STAssert~ →XCTAssert~•マクロは、AssertNotXXXが多少増えている程度。•SenTestingKitとXCTestを混ぜては使えない
13年10月8日火曜日
Continuous Integration(CI)• CI=継続的インテグレーション• XCode5からこのCIを行うための仕組み”Bots”が組み込まれた• Bots = XCode専用のJenkinsのようなもの• XCode5にBots用の設定画面がビルドイン• Bots本体はMacOSX 10.9 Serverで動作• Serverに複数のiOS端末をUSB接続していると、その端末それぞれでUnitTestが実行されます
• MacOSX 10.9(Mavericks)のServerが必要• ↑まだリリースされていませんが、概要だけでもご紹介
13年10月8日火曜日
CI(Bots)の流れ
XCode(開発機)
Bots(MacOSX 10.9 Server)
検証機1
検証機2
リポジトリ(Git、SVN)①コミット
②チェックアウト
③ビルドとテスト
④結果
https://developer.apple.com/jp/technologies/tools/whats-new.html
検証機3
13年10月8日火曜日
Botsのメリット• 複数の実機に対してUnitTestが可能• iPhone5s+iOS7 と iPodTouch+iOS6 とiPad + iOS5 と iPhone3GS + iOS4.3 等
• 複数のデバイスやユニバーサルバイナリでの検証に有利• warning/errorをXCodeで確認出来る• そのままコード修正→コミット→次のイテレーション• XCodeからBotsの作成や設定変更が可能
13年10月8日火曜日
情報源• WWDC2013の”409 Testing in Xcode 5”• https://developer.apple.com/wwdc/videos/• ドキュメント “Xcode Continuous Integration Guide”• https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/000-About_Continuous_Integration/about_continuous_integration.html
• “XCode bots”で検索13年10月8日火曜日
まとめ:いろいろ増えた機能を使って、iOS開発でラクしましょう。
13年10月8日火曜日
ご静聴ありがとうございました。
13年10月8日火曜日