>100 Views
October 09, 13
スライド概要
2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp
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の取り込み • 13年10月8日火曜日 AppleIDの”View Details..”
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 • • • 13年10月8日火曜日 すでにある画像からAssetCatalogを作れる “New File” → ”iOS Resource” →”Asset Cagalog” AssetCatalogを選んで→”Edit”→ “Import from project”
ソースコード管理(1):Source Control • • 上部メニューに”Source Control”が追加 Gitの一通りの操作が可能 • • 13年10月8日火曜日 Pull Push Commit Branch ... SVNに対応
ソースコード管理(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”→”Refac tor”→”Convert to XCTest” 13年10月8日火曜日
UnitTest(6):XCTest •SenTestingKit との違いはほぼ無い •STAssert〜 →XCTAssert〜 •マクロは、AssertNotXXXが多少増えている程度。 •SenTestingKitとXCTestを混ぜては使えない SenTest STFail XCTest XCTFail XCTAssert STAssertNil XCTAssertNil, STAssertNotNil XCTAssertNotNil, STAssertTrue XCTAssertTrue STAssertFalse XCTAssertFalse STAssertEquals XCTAssertEqual XCTAssertNotEqual STAssertEqualObjects XCTAssertEqualObjects XCTAssertNotEqualObjects STAssertEqualsWithAccuracy XCTAssertEqualWithAccuracy XCTAssertNotEqualWithAccuracy STAssertThrows XCTAssertThrows STAssertThrowsSpecific XCTAssertThrowsSpecific STAssertThrowsSpecificNamed XCTAssertThrowsSpecificNamed STAssertNoThrow XCTAssertNoThrow STAssertNoThrowSpecific XCTAssertNoThrowSpecific STAssertNoThrowSpecificNamed XCTAssertNoThrowSpecificNamed STAssertTrueNoThrow STAssertFalseNoThrow 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 (開発機) ④結果 リポジトリ (Git、SVN) ②チェックアウト 検証機1 Bots (MacOSX 10.9 Server) 検証機2 検証機3 ③ビルドとテスト https://developer.apple.com/jp/technologies/tools/whats-new.html 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̲guidecontinuous̲integration/000About̲Continuous̲Integration/ about̲continuous̲integration.html • “XCode bots”で検索 13年10月8日火曜日
まとめ: いろいろ増えた機能を使って、 iOS開発でラクしましょう。 13年10月8日火曜日
ご静聴ありがとう ございました。 13年10月8日火曜日