Xcode 7 の新しいところ #cm_ios9

>100 Views

November 05, 15

スライド概要

2015-11-05 に開催された『iOS 9 週連続 Bootcamp!』の第6回目で Xcode 7 の新機能について紹介してきました。ざっくりとじっくり含めて、目に止まった新機能を網羅的に扱っています。

※ Docswell での公開に移行する直前の Slideshare での閲覧数は 4,373 でした。

profile-image

正統派趣味人プログラマー。プログラミングとは幼馴染です。

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Xcode 7 の新しいところ 2015.11.04 @ iOS 9 週連続 Bootcamp ! EZ-NET 熊⾕友宏 http://ez-net.jp/

2.

熊谷友宏 EZ-NET http://ez-net.jp/ @es̲kumagai iOS, OS X, Apple Watch アプリ CodePiece いつもの電卓 ソースコードを Twitter と Gist に同時投稿できる。 計算式も見える電卓アプリ。 watchOS 1 対応 音で再配達ゴッド EZ-NET IP Phone 簡単操作で 再配達の申し込み。 iPhone でひかり電話を使う。 自宅 LAN からの利用専用

3.

熊谷友宏 EZ-NET http://ez-net.jp/ @es̲kumagai 勉強会 横浜 iPhone 開発者勉強会 カジュアル Swift 勉強会 【 横浜・馬車道 】 #yidev 【 横浜・青葉台 】 #cswift わいわい・ゆるく、iPhone 開発者の みんなで楽しく過ごすのが目的の会 ゆるくみんなで Swift を語らえる場を 作りたくて始めた会 第21回を 2015-12-12 に開催 第3回を 2015-11-14 に開催

4.

著書 Xcode 5 徹底解説 > 全機能を徹底解説 ✔ 各画面の使い方 ✔ プロジェクトやコードの編集 ✔ インターフェイスビルダー ✔ ビルドとデバッグ ✔ ユニットテストと Bot > 紙版は絶版 (2015/08/21) 750 ページ 2014/04/28 - 2015/08/21 > 電子書籍版は販売中 ✔ 10x-Eng.com でも取扱予定

5.

MSM 2015 Swift 2 の話をする予定 > MSM 2015 ✔ NPO 法人 MOSA 主催 ✔ 有料イベント(会員制) ✔ 年に一度の2日間に渡る お祭り的なイベント ✔ 2015/11/06 - 2015/11/07 http://www.mosa.gr.jp/ Apple 最新技術の話題満載 > NPO 法人 MOSA ✔ 10 年以上の活動実績 ✔ 法人会員での参加も多い印象

6.

Xcode 7 ̶ 2015.09.16 ̶

7.

Xcode 7 新機能 ▶ Swift 2 ▶ スタックビュー ▶ 新 OS サポート ▶ ストーリーボード参照 ▶ UI テスト ▶ オンデマンドリソース ▶ コードカバレッジ ▶ ドキュメントコメント ▶ 呼出階層検索ナビゲーター ▶ インターフェイス定義の確認 ▶ 無料のオンデバイス開発

8.

Xcode 7 新機能 ざっくり紹介 ▶ Swift 2 ▶ スタックビュー ▶ 新 OS サポート ▶ ストーリーボード参照 ▶ UI テスト ▶ オンデマンドリソース ▶ コードカバレッジ ▶ ドキュメントコメント ▶ 呼出階層検索ナビゲーター ▶ インターフェイス定義の確認 ▶ 無料のオンデバイス開発

9.

Xcode 7 新機能 じっくり紹介 ▶ Swift 2 ▶ スタックビュー ▶ 新 OS サポート ▶ ストーリーボード参照 ▶ UI テスト ▶ オンデマンドリソース ▶ コードカバレッジ ▶ ドキュメントコメント ▶ 呼出階層検索ナビゲーター ▶ インターフェイス定義の確認 ▶ 無料のオンデバイス開発

10.

Xcode 7 の新機能 ざっくり紹介

11.

1/8 Swift 2

12.

Xcode 7 の新機能 Swift 2 ざっくり ▶ プロトコル拡張とジェネリック拡張 ▶ 基本構文の追加 guard, defer, repeat-while ▶ エラーハンドリング機構 do-catch, try, throws, rethrows ▶ 関数 forEach の追加 ▶ 再帰的な列挙子 (indirect case) ▶ #available による環境判定

13.

2/8 新 OS サポート

14.

Xcode 7 の新機能 新 OS サポート ざっくり ▶ iOS 9.0 ▶ OS X 10.11 ▶ watchOS 2.0 ▶ tvOS 9.0

15.

3/8 呼出階層検索ナビゲーター

16.

Xcode 7 の新機能 呼出階層検索ナビゲーター ざっくり ▶ 機能がどこで使われているか検索できる 呼出階層を 検索 どこから 呼ばれるか分かる ⌃ ⇧ ⌘ H

17.

4/8 インターフェイス定義の確認

18.

Xcode 7 の新機能 インターフェイス定義の確認 ざっくり ▶ Swift のインターフェイス定義だけ見られる ▶ 実装が省かれるので見渡しやすい ▶ Objective-C ヘッダーも Swift のインターフェイス定義に変換できる

19.

Xcode 7 の新機能 インターフェイス定義の確認 ざっくり ここから 定義を生成

20.

Xcode 7 の新機能 インターフェイス定義の確認 ざっくり 読みづらかった 機能の定義が …

21.

Xcode 7 の新機能 インターフェイス定義の確認 ざっくり すっきり把握 しやすくなる

22.

Xcode 7 の新機能 インターフェイス定義の確認 ざっくり Objective-C の ヘッダーファイルも …

23.

Xcode 7 の新機能 インターフェイス定義の確認 ざっくり Swift の 構文で見れる

24.

5/8 無料のオンデバイス開発

25.

Xcode 7 の新機能 無料のオンデバイス開発 ざっくり ▶ 無料の Apple ID だけでコード署名できる ▶ iOS 9 以前のアプリも実行できる ▶ インストールされたアプリは ホーム画面からいつでも起動できる

26.

Xcode 7 の新機能 無料のオンデバイス開発 ざっくり 実行手順 (1/3) ▶ アカウント設定で無料の Apple ID を登録して ターゲット設定で選択する 無料の Apple ID を選択

27.

Xcode 7 の新機能 無料のオンデバイス開発 ざっくり 実行手順 (2/3) ▶ 実機を選択してデバッグ実行を行い 出てきた画面で Fix Issue する コード署名が 生成される

28.

Xcode 7 の新機能 無料のオンデバイス開発 ざっくり 実行手順 (3/3) ▶ コード署名の問題が解決すると 実機でアプリが起動する これが消えると 実機で動き出す

29.

6/8 スタックビュー

30.

Xcode 7 の新機能 スタックビュー ざっくり ▶ 複数のビューを詰め込めるビュー ▶ 余白と順番で手軽にレイアウトできる ▶ オートレイアウトの使用を最小限にできる ▶ 全機能は iOS 9.0 と OS X 10.11 で使える

31.

Xcode 7 の新機能 スタックビュー ざっくり まとめたい ビューを選んで ここから簡単に まとめられる

32.

7/8 ストーリーボード参照

33.

Xcode 7 の新機能 ストーリーボード参照 ざっくり ▶ ストーリーボードを分離してリンクできる ▶ 画面の見通しが効きやすくなる ▶ 複数人数でのデザインがしやすいかも ▶ 全機能は iOS 9.0 と OS X 10.11 で使える

34.

Xcode 7 の新機能 ストーリーボード参照 ざっくり 分割したい 部分を選んで リファクター すると…

35.

Xcode 7 の新機能 ストーリーボード参照 ざっくり 別ファイルに 分断される

36.

8/8 オンデマンドリソース

37.

Xcode 7 の新機能 オンデマンドリソース ざっくり ▶ リソースを必要時に DL できる ▶ リソースは App Store に保持される ▶ 実行可能バイナリ以外のほぼ全てを扱える ▶ NSBundleResourceRequest で取得する ▶ tvOS, watchOS, iOS で利用可能

38.

Xcode 7 の新機能 オンデマンドリソース ざっくり ターゲットの リソースタグで設定

39.

Xcode 7 の新機能 オンデマンドリソース ざっくり アセットカタログでは 属性インスペクター からも設定できる ファイルインスペクター からも設定できる

40.

Xcode 7 の新機能 オンデマンドリソース ざっくり ターゲットの ビルド設定から デバッグ時の リソースサーバーを 変更できる

41.

Xcode 7 の新機能 オンデマンドリソース ざっくり ディスク デバッグゲージで リソースの状況を 確認できる

42.

Xcode 7 の新機能 じっくり紹介

43.

1/3 UI テスト

44.

UI テスト 特徴 ▶ 画面操作を自動でテストする ▶ コードでアプリを操作する ▶ 操作からコードを生成できる

45.

たとえば テキストフィールドに入力したら ボタンが押せるようになるか確認

46.

たとえば ここに入力 したときに 押せるように なるのを確認

47.

テストを登録する

48.

UI テストの登録 STEP 1 : テストターゲットを登録

49.

UI テストの登録 STEP 2 : テストメソッドを登録 test で始まる メソッドを定義 テストナビゲータに 登録される

50.

テストコードを書く

51.

UI テスト コードで画面を操作できる func testAutoEnabled() { let app = XCUIApplication() let window = app.windows["CodePiece"] let menuBars = app.menuBars let TweetTextField = window.textFields["TweetText"] let tweetButton = window.buttons["PostButton"] menuBars.menuItems["Clear Tweet"].click() XCTAssertFalse(tweetButton.enabled) TweetTextField.click() TweetTextField.typeText("abc") XCTAssertTrue(tweetButton.enabled) }

52.

書き方が分からないときは?

53.

たとえば 画面いっぱいに 表示させたい

54.

UI テスト 操作をコードに変換する 入力したい行に カーソルを置いて 記録開始

55.

UI テスト 変換したい操作を実施 最大化ボタンを 押すと・・・

56.

UI テスト 操作がコードに記録される 操作が 記録される

57.

先の画面操作を記録したい場合は?

58.

たとえば この場面で 操作を記録したい

59.

UI テスト 操作の記録は休止できる 記録休止 ボタン ▶ 操作をコードに変換しなくなる ▶ アプリの操作は進められる ▶ 記録したい場面から再開できる

60.

テスト結果を見る

61.

UI テストの実行結果 CASE 1 : テストナビゲーターで確認 テスト項目と 結果を確認可能

62.

UI テストの実行結果 CASE 2 : テストログビューで確認 テスト項目と 結果を確認可能

63.

UI テストの実行結果 CASE 2 : テストログビューで確認 その時の画面も 記録されている

64.

まとめ UI テスト

65.

UI テスト 要点 ▶ 従来の XCTest と同じ感覚で使える ▶ UI をコードで操作する ▶ 操作の都度、状態をコードで判定する ▶ テストを実行すると実際に動く ▶ 操作からもコードを生成できる

66.

UI テスト 留意点 ▶ 最新 OS で利用可能 ✓ ✓ ✓ iOS 9.0 以上 OS X 10.11 以上 tvOS ▶ テスト完了までに時間がかかる ▶ テスト実行中の操作が結果に影響する

67.

2/3 コードカバレッジ

68.

コードカバレッジ 特徴 ▶ どのコードが実行されたかを収集 ▶ コードが実際に使われた割合を表示 ▶ メソッドやプロパティごとに計測 ▶ テスト実行ごとに測定

69.

コードカバレッジの収集

70.

コードカバレッジ 収集の仕方 ▶ スキーム設定で有効化 ▶ テストを実行すると収集される

71.

スキーム設定 テストアクションで有効化 テスト アクションで コードカバレッジ を有効化

72.

実行結果

73.

コードカバー率 テストログビューで確認 テストログに 記録される カバレッジの タグを選択

74.

コード通過回数 ソースコードエディターで確認 直近のテストでの 通過回数 通過してない コードは赤で

75.

コード通過回数 表示されない場合は … カバレッジの 表示切り替え

76.

まとめ コードカバレッジ

77.

コードカバレッジ 要点と留意点 ▶ どのコードを実行したかを計測できる ▶ 計測はテストの度に行われる ▶ スキーム設定のテストアクションで有効化 ▶ テストログビューでカバー率を確認できる ▶ ソースコードエディターで 実際の網羅状況を確認できる(直近のみ)

78.

3/3 ドキュメントコメント

79.

ドキュメントコメント これまでの機能 ▶ コードの型や機能に説明を記載できる ▶ コード補完時に概要を見られる ▶ クイックヘルプで詳細を見られる

80.

ドキュメントコメント 強化されたドキュメントコメント ▶ Markdown のような書式 • テキストの装飾 • 画像の挿入 • リンクの挿入 ▶ プレイグラウンド専用機能 • ページナビゲーション • リッチコメント描画 ▶ Swift 専用

81.

強化されたドキュメントコメント 利用できる場面 1. シンボルの文書化 ▶ 型や機能にドキュメントを添える ▶ クイックヘルプやコード補完で見れる ▶ ソースコードとプレイグラウンドで使える 2. リッチコメント ▶ 見栄えの良いコメントが書ける ▶ プレイグラウンドをドキュメントとして見せる ▶ プレイグラウンド専用

82.

1. シンボルの文書化

83.

シンボルの文書化 書き方 ▶ コメント行内でマークアップする ▶ コメント行は次の2通りで書く (a) (b) /// でコメント行を書く(複数行可) /** 〜 */ でコメントブロックを書く

84.

シンボルの文書化 記載 /// 指定したターゲットをビルドします。 /// 設定を追加することで異なるオプションでビルドできます。 /// /// - precondition: /// ビルド対象のプロジェクトが開かれている必要があります。 /// /// - parameters: /// - target: ビルドするターゲットです。 /// - configuration: ビルドで使う設定です。 /// /// - returns: ビルドの実行結果を返します。 /// - throws: エラー時は BuildError が投げられます。 func build(target:Target, config:Config) throws -> Report {

85.

シンボルの文書化 表示 ▶ コード補完 ▶ クイックヘルプ

86.

2. リッチコメント

87.

リッチコメント 書き方 ▶ コメント行内でマークアップする ▶ コメント行は次の2通りで書く (A) (B) //: でコメント行を書く(複数行可) /*: 〜 */ でコメントブロックを書く

88.

リッチコメント 記載 //: ## ̀reducè メソッド //: 配列の **総和** を簡単に計算できます。 //: ### 準備 let values = [1, 3, 8, 20] //: ### 実行 let sum = values.reduce(0, combine: +)

89.

リッチコメント 表示

90.

リッチコメント 表示の切り替え ▶ ファイルインスペクターで切り替える オン・オフで 切り替わる

91.

マークアップ

92.

マークアップ 基本 ▶ シンボルの文書化やリッチコメントの 内容に付加情報を添える ▶ コマンドを使ってマークアップする ▶ コマンドはインデントレベルが大事 • インデントによって解釈が変わる • コメントブロックの最初が第一レベル ▶ Markdown みたいな書式

93.

マークアップ コマンドの種類 1. 行書式コマンド 2. テキスト書式コマンド シンボル文書化 専用 3. シンボル文書化コマンド 4. ページナビゲーションコマンド リッチコメント 専用

94.

詳細は割愛 ! Apple - iOS Developer Library Markup Formatting Reference 参照

95.

ページナビゲーションコマンド シンボル文書化 リッチコメント

96.

ページナビゲーションコマンド 特徴 ▶ ページ移動するための機能 • 指定ページに移動する • 前後のページに移動する ▶ リッチコメントだけで使える シンボル文書化 リッチコメント

97.

ページナビゲーションコマンド 指定ページに移動 ▶ 指定したページ名へのリンクを作れる ▶ ページ名の空白文字は %20 に置き換える 記載方法 [ 表題 ] ( 移動先ページ名 シンボル文書化 ) リッチコメント

98.

ページナビゲーションコマンド 次のページに移動 ▶ 次のページへのリンクを作れる ▶ 順番はプロジェクトナビゲーターで指定する 記載方法 [ 表題 ] ( @next ) シンボル文書化 リッチコメント

99.

ページナビゲーションコマンド 前のページに移動 ▶ 前のページへのリンクを作れる ▶ 順番はプロジェクトナビゲーターで指定する 記載方法 [ 表題 ] ( @previous ) シンボル文書化 リッチコメント

100.

ページ シンボル文書化 リッチコメント

101.

ページナビゲーションコマンド Playground ページ ▶ プレイグラウンド内に 複数のページを追加できる機能 ▶ プロジェクトナビゲーターで管理する シンボル文書化 リッチコメント

102.

ページナビゲーションコマンド Playground ページのリソース ▶ 各ページがリソースを持てる ▶ Playground ファイル直下のリソースは すべてのページで利用できる様子 このページ 専用 全ページで 使える シンボル文書化 リッチコメント

103.

ページ作成 シンボル文書化 リッチコメント

104.

Playground ページ ページの新規作成 ▶ プロジェクトナビゲーターから作成 ⌥ + Click 新規作成 シンボル文書化 リッチコメント

105.

Playground ページ ページの順番 ▶ プロジェクトナビゲーターで 登録されている順番で管理される ページは この順番 シンボル文書化 リッチコメント

106.

ページ移動 シンボル文書化 リッチコメント

107.

ページ移動 指定ページに移動 記載例 //: 目次 //: //: [セクション A](Section%20A) //: //: [セクション B](Section%20B) 表示例 シンボル文書化 リッチコメント

108.

ページ移動 指定ページに移動 記載例 //: [前のページ](@previous) //: //: [次のページ](@next) 表示例 シンボル文書化 リッチコメント

109.

まとめ ドキュメントコメント

110.

ドキュメントコメント まとめ ▶ シンボルに説明を記載できる • セクションで詳しく意味づけできる • コード補完やクイックヘルプで見れる • テキストを装飾できる ▶ Playground コメントの可能性が広がる • テキストを装飾できる • ページ移動のリンクが貼れる

111.

Xcode 7 の新しいところ ▶ Swift 2 ▶ スタックビュー ▶ 新 OS サポート ▶ ストーリーボード参照 ▶ UI テスト ▶ オンデマンドリソース ▶ コードカバレッジ ▶ ドキュメントコメント ▶ 呼出階層検索ナビゲーター ▶ インターフェイス定義の確認 ▶ 無料のオンデバイス開発