xcode5でのデバッグ / ci | ios 7エンジニア勉強会

37
XCode5での デバッグ / CI メディアサービスカンパニー 田村孝文 13108日火曜日

Upload: yahoo

Post on 15-Jan-2015

28.597 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

XCode5でのデバッグ / CI メディアサービスカンパニー

田村孝文

13年10月8日火曜日

Page 2: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

今日のメニュー

•XCode5新機能をピックアップして紹介•XCode5でのUnitTestとCI(Bots)の紹介

13年10月8日火曜日

Page 3: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

XCode5新機能ピックアップ

•AppleID連携•画像管理•ソースコード管理•デバッグで使える機能•小ネタ

13年10月8日火曜日

Page 4: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

AppleID連携(1):Automatic Configuration• AppleIDに対応した設定(証明書やプロファイル)を自動でXCode5に取り込む機能

• AppleIDの設定は、”Preferrence”→”Accounts”

13年10月8日火曜日

Page 5: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

AppleID連携(2):Provisioning Profile• AppleIDの設定画面から Provisioning Profileの取り込み• AppleIDの”View Details..”

13年10月8日火曜日

Page 6: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

AppleID連携(3):Provisioning Profile• 取り込んだProvisioning Profileは、各プロジェクトの中のBuildSettingsで指定

• “Code Signing Identity”の下に項目が追加されている

13年10月8日火曜日

Page 7: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

AppleID連携(4):Capabilities• Capabilities: Apple提供の各種サービスの設定を行う• 各種設定のON/OFFをスイッチでコントロール• アカウントの設定、Frameworkの追加が自動化

13年10月8日火曜日

Page 8: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

画像管理(1):Asset Catalog• いろいろなサイズの画像パーツやアイコンをセットで管理• XCode4までの方法(~@2x)と共存可能

13年10月8日火曜日

Page 9: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

画像管理(2):Asset Catalog• すでにある画像からAssetCatalogを作れる• “New File” → ”iOS Resource” →”Asset Cagalog”• AssetCatalogを選んで→”Edit”→ “Import from project”

13年10月8日火曜日

Page 10: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

ソースコード管理(1):Source Control• 上部メニューに”Source Control”が追加• Gitの一通りの操作が可能• Pull Push Commit Branch ...• SVNに対応

13年10月8日火曜日

Page 11: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

ソースコード管理(2):Source Control• コミット時に、”Push to Remote”が可能• 地味だけど便利機能

13年10月8日火曜日

Page 12: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

ソースコード管理(3):Blame• Blame ソースコードに対応したコミットを見る• カーソル→“Editor”→”Show Blame for Line”

13年10月8日火曜日

Page 13: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

ソースコード管理(4):Blame• AssistantEditorの横の”Comparison”を長押し→Blame表示

• Blame ソースコードの部分に対応したコミットを表示

• 誰が何時のコミットで修正したのかが分かる

• 長押しの後”Log”でコミットログ

13年10月8日火曜日

Page 14: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

デバッグ(1):デバッグゲージ• デバッグ開始で、CPUのいろいろな情報が見えます。

13年10月8日火曜日

Page 15: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

デバッグ(2):デバッグゲージ• デバッグ開始で、メモリのいろいろな情報が見えます。

13年10月8日火曜日

Page 16: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

デバッグ(3):DataTips• 色々なオブジェクトの内容を見るための”DataTips”• 変数をマウスオーバー→吹き出しの中の”目”アイコンをクリック

13年10月8日火曜日

Page 17: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

デバッグ(4):DataTips•オブジェクトの種類で見え方が違う

13年10月8日火曜日

Page 18: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

デバッグ(5):DataTips• 標準的なオブジェクト• NSData (16進数表示)、NSString、NSNumber等• 図形に関するオブジェクト• NSPoint、NSSize、CGSize、Path、UIColor等• 画像に関するオブジェクト• UIImage,NSImage、CGImageRef等• ブラウザのような表示(URL)• 地図表示(CLLocation) *MacOSX10.9以降

13年10月8日火曜日

Page 19: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

デバッグ(6):BreakPointのon/off

• debugツールバーで全てのBreakPointのオンオフをコントロール

13年10月8日火曜日

Page 20: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

デバッグ(7):Viewの階層構造

• lldbデバッガでViewの階層構造を見る事が出来ます。• (lldb) po [view recursiveDescription]

13年10月8日火曜日

Page 21: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

小ネタ(1)• Storyboardで画面プレビュー• Storyboard→”Assistant Editor”→”Preview”• 縦長や横長表示、iOS6まで/7以降の切り替えが可能

13年10月8日火曜日

Page 22: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

小ネタ(2)• JavaDocのようなコメントが可能で、QuickHelp(Option+メソッド)の吹き出しにコメント内容が表示される

• /*! ディスクリプション \param パラメータ \return 戻り値 等• AppleDoc/doxygenのようなジェネレート作業は不要

13年10月8日火曜日

Page 23: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

情報源•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日火曜日

Page 24: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

13年10月8日火曜日

Page 25: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

UnitTestとCI(Bots)の紹介

•UnitTest• 追加されたTest Navigator• 追加されたXCTest.framework• CI(Bots)の概要

13年10月8日火曜日

Page 26: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

UnitTest(1):Test Navigator•XCode4までのUnitTest:コンソール出力のみ•→成功/失敗がわかりにくく使いにくい•XCode5からのUnitTest : Test Navigator

13年10月8日火曜日

Page 27: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

UnitTest(2): Test Navigator

• UnitTestのファイルと、その中のテストメソッドが表示される

• ここからテストメソッドをリトライ出来る。

• 1つだけのリトライも可能• TestClassの追加• 失敗テストのみ表示

13年10月8日火曜日

Page 28: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

UnitTest(3):TestFailureBreakpoint

• テストで失敗したときに停止するブレークポイント• BreakpointNavigatorで            ”Add Test Failure Breakpoint”

13年10月8日火曜日

Page 29: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

UnitTest(4):XCTest

• XCode4まで: SenTestingKit.framework• XCode5から: ↑とXCTest.framework• SenTestingKit はXCode5(TestNavigator)でも使えます

13年10月8日火曜日

Page 30: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

UnitTest(5):XCTest

• SenTestingKit からの変換

• “Edit”→”Refactor”→”Convert to XCTest”

13年10月8日火曜日

Page 31: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

UnitTest(6):XCTest

SenTest XCTestSTFail

STAssertNilSTAssertNotNilSTAssertTrueSTAssertFalseSTAssertEquals

STAssertEqualObjects

STAssertEqualsWithAccuracy

STAssertThrowsSTAssertThrowsSpecificSTAssertThrowsSpecificNamedSTAssertNoThrowSTAssertNoThrowSpecificSTAssertNoThrowSpecificNamedSTAssertTrueNoThrowSTAssertFalseNoThrow

XCTFailXCTAssertXCTAssertNil,XCTAssertNotNil,XCTAssertTrueXCTAssertFalseXCTAssertEqualXCTAssertNotEqualXCTAssertEqualObjectsXCTAssertNotEqualObjectsXCTAssertEqualWithAccuracyXCTAssertNotEqualWithAccuracyXCTAssertThrowsXCTAssertThrowsSpecificXCTAssertThrowsSpecificNamedXCTAssertNoThrowXCTAssertNoThrowSpecificXCTAssertNoThrowSpecificNamed

•SenTestingKit との違いはほぼ無い•STAssert~ →XCTAssert~•マクロは、AssertNotXXXが多少増えている程度。•SenTestingKitとXCTestを混ぜては使えない

13年10月8日火曜日

Page 32: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

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日火曜日

Page 33: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

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日火曜日

Page 34: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

Botsのメリット• 複数の実機に対してUnitTestが可能• iPhone5s+iOS7 と iPodTouch+iOS6 とiPad + iOS5 と iPhone3GS + iOS4.3 等

• 複数のデバイスやユニバーサルバイナリでの検証に有利• warning/errorをXCodeで確認出来る• そのままコード修正→コミット→次のイテレーション• XCodeからBotsの作成や設定変更が可能

13年10月8日火曜日

Page 35: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

情報源• 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日火曜日

Page 36: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

まとめ:いろいろ増えた機能を使って、iOS開発でラクしましょう。

13年10月8日火曜日

Page 37: Xcode5でのデバッグ / CI | iOS 7エンジニア勉強会

ご静聴ありがとうございました。

13年10月8日火曜日