41

永野 哲久 / @7gano - Cloud Object Storage | Store ... ドキュメントブラウザAPI ..... 180 7.4 Document-Based Appの実装 ..... 181 7.5 Thumbnail Extension ..... 190

  • Upload
    lethuy

  • View
    217

  • Download
    0

Embed Size (px)

Citation preview

i目次

目次

はじめに 1

0.1 本書について ................................................................................................................... 1

0.2 本書の読み方 ................................................................................................................... 2

0.3 サンプルコード ................................................................................................................ 2

0.4 クラウドファンディングとPEAKS ..................................................................................... 2

0.5 謝辞 ................................................................................................................................ 2

第1章 iOS 11 概要 永野 哲久 / @7gano 3

第2章 ARKit 堤 修一 / @shu223 7

2.1 はじめに .......................................................................................................................... 7

2.2 ARKit入門その1 - 最小実装で体験してみる ...................................................................... 7

2.3 ARKit入門その2 - 水平面を検出する .............................................................................. 11

2.4 ARKit入門その3 - 検出した水平面に仮想オブジェクトを置く .......................................... 16

2.5 ARKit開発に必須の機能 .................................................................................................. 17

2.6 特徴点(Feature Points)を利用する ............................................................................... 22

2.7 AR空間におけるインタラクションを実現する .................................................................. 24

2.8 アプリケーション実装例1: 現実空間の長さを測る ........................................................... 30

2.9 アプリケーション実装例2: 空中に絵や文字を描く ........................................................... 33

2.10 アプリケーション実装例3: Core ML + Vision + ARKit .................................................... 37 2.11 Metal + ARKit ............................................................................................................... 39

第3章 Core ML 吉田 悠一 / @sonson_twit 41

3.1 はじめに ........................................................................................................................ 41

3.2 Core MLのために学ぶ機械学習 ....................................................................................... 42

3.3 Core ML ........................................................................................................................ 53

3.4 実装 .............................................................................................................................. 58

3.5 Core MLの短所 .............................................................................................................. 75

3.6 まとめ ........................................................................................................................... 77

3.7 参考文献 ........................................................................................................................ 78

ii 目次

第4章 Swift 4の新機能とアップデート 池田 翔 / @ikesyo 79

4.1 はじめに ........................................................................................................................ 79

4.2 Codableプロトコル ....................................................................................................... 79

4.3 Smart KeyPaths .......................................................................................................... 100

4.4 参考文献 ...................................................................................................................... 106

第5章 Xcode 9 の新機能  坂田 晃一 / @huin 107

5.1 はじめに ...................................................................................................................... 107

5.2 開発フェーズの新機能 .................................................................................................. 108

5.3 デバッグフェーズの新機能 ............................................................................................ 120

5.4 テストフェーズの新機能 ............................................................................................... 123

5.5 Xcodeサーバーの利用 .................................................................................................. 135

5.6 まとめ ......................................................................................................................... 145

第6章 Drag and Drop 加藤 尋樹 / @cockscomb 147

6.1 ドラッグ&ドロップによるデータのやり取り .................................................................. 147

6.2 ドラッグ ...................................................................................................................... 154

6.3 ドロップ ...................................................................................................................... 161

6.4 スプリングローディング ............................................................................................... 166

6.5 UITableViewとUICollectionView ................................................................................. 167

6.6 UITextViewとUITextField ............................................................................................ 175

第7章 FilesとDocument Based Application 加藤 尋樹 / @cockscomb 179

7.1 はじめに ...................................................................................................................... 179

7.2 Filesアプリ ................................................................................................................. 179

7.3 ドキュメントブラウザAPI ............................................................................................. 180

7.4 Document-Based Appの実装 ....................................................................................... 181

7.5 Thumbnail Extension ................................................................................................... 190

7.6 Quick Look Preview Extension .................................................................................... 192

7.7 おわりに ...................................................................................................................... 193

iii目次

第8章 レイアウト関連の新機能及び変更点 川邉 雄介 / @jeffsuke 195

8.1 ラージタイトルとUINavigationBar ................................................................................ 195

8.2 Auto Layoutとレイアウト手法のアップデート ............................................................... 198

8.3 iOS 11におけるアクセサビリティ、ダイナミックタイプ関連のアップデート .................... 207

8.4 参考文献 ...................................................................................................................... 212

第9章 Core NFC 岸川 克己 / @k_katsumi 213

9.1 はじめに ...................................................................................................................... 213

9.2 NFCを使ったアプリケーションの例 .............................................................................. 213

9.3 Core NFCでできること ................................................................................................ 213

9.4 Core NFCのAPI構成 .................................................................................................... 214

9.5 まとめ ......................................................................................................................... 221

第10章 PDF Kit 岸川 克己 / @k_katsumi 223

10.1 はじめに ...................................................................................................................... 223 10.2 PDF Kitとは ................................................................................................................ 223 10.3 基本的な使い方 ............................................................................................................ 225 10.4 PDFView ..................................................................................................................... 227 10.5 PDFThumbnailView ..................................................................................................... 234 10.6 PDFDocument ............................................................................................................. 236 10.7 PDFSelection .............................................................................................................. 251 10.8 PDFAnnotation(注釈とフォーム) ................................................................................ 253

第11章 SiriKit 岸川 克己 / @k_katsumi 263

11.1 SiriKitとは .................................................................................................................. 263 11.2 iOS 11の変更点 ........................................................................................................... 263 11.3 動作のしくみ ............................................................................................................... 266 11.4 アプリ実装の準備 ......................................................................................................... 270 11.5 サンプルプロジェクト:To-Do管理とメモ帳(List and Notes) ...................................... 275 11.6 サンプルプロジェクト:QRコード表示 .......................................................................... 282 11.7 Extensionのデバッグ ................................................................................................... 288 11.8 まとめ ......................................................................................................................... 291

iv 目次

第12章 HomeKit入門とiOS 11のアップデート 所 友太 / @tokorom 293

12.1 はじめに ...................................................................................................................... 293 12.2 HomeKit入門 .............................................................................................................. 294 12.3 iOS 11でのアップデートまとめ .................................................................................... 318 12.4 HomeKit実践 .............................................................................................................. 326 12.5 まとめ ......................................................................................................................... 339 12.6 HomeKitお役立ちリファレンス ..................................................................................... 340 12.7 サンプルコード ............................................................................................................ 346

第13章 Metal 堤 修一 / @shu223 349

13.1 はじめに ...................................................................................................................... 349 13.2 Metalの概要 ................................................................................................................ 349 13.3 Metalの基礎 ................................................................................................................ 351 13.4 MetalKit ...................................................................................................................... 354 13.5 Metal入門その1 - 画像を描画する ............................................................................... 356 13.6 Metal入門その2 - シェーダを利用する ......................................................................... 362 13.7 Metal入門その3 - シェーダでテクスチャを描画する ..................................................... 371 13.8 ARKit+Metalその1 - マテリアルをMetalで描画する .................................................... 375 13.9 ARKit+Metalその2 - MetalによるARKitのカスタムレンダリング .................................. 379 13.10 Metal 2 ....................................................................................................................... 380 13.11 Metalを動作させるためのハードウェア要件 .................................................................. 384

第14章 Audio関連アップデート 永野 哲久 / @7gano 387

14.1 はじめに ...................................................................................................................... 387 14.2 MusicKit ..................................................................................................................... 387 14.3 AirPlay 2 ..................................................................................................................... 408 14.4 AVAudioEngineのアップデート .................................................................................... 415 14.5 まとめ ......................................................................................................................... 419

著者紹介 421

はじめに

1はじめに

本書について0.1

2 はじめに

本書の読み方0.2

サンプルコード 0.3

クラウドファンディングとPEAKS0.4

謝辞0.5

3第 1章 iOS 11 概要

iOS 11 概要第1章

 永野 哲久 / @7gano

WWDC 2017

注1)

■ 新しい API

Augmented Reality Machine Learning

■ Core Technology

注1) https://developer.apple.com/videos/play/wwdc2017/102/ 本章の画像は全てこのセッションより

4 第 1章 iOS 11 概要

注2)

■ iPad の GUI が大幅に変更

■ アプリの 64bit 対応が必須に 64bit対応が必須

注 2) https://developer.apple.com/library/content/documentation/FileManagement/Conceptual/APFS_Guide/Introduction/Introduction.html

7第 2章 ARKit

ARKit第 2章

 堤 修一 / @shu223

はじめに2.1

AR(Augmented reality / 拡張現実)を構築するためのフレームワーク

ARKitを使った画期的なアイデアをいち早く具現化できるようになる

体感しながら学んでいく

ARKit入門その1 - 最小実装で体験してみる2.2

(約)3行でできるARKitの最小実装

既存プロジェクトに数行のコードを追加してAR機能を構築する

サンプルコード:

8 第 2章 ARKit

2.2.1 手順1: プロジェクトの準備

注1)

注2)

注3)

● 図 2.1 ship.scn

2.2.2 手順2: ViewController の実装

注1) Xcode の Info.plist エディタでは「Privacy - Camera Usage Description」と表示されます。注 2) は SceneKit 用のシーンのデータを扱うファイルの拡張子です。なお、ここで用いている ship.scn は Xcode の「Augmented

Reality App」テンプレートに含まれています。注 3) サンプルではこれらのファイルを、 という拡張子のついたSceneKit のアセット管理用フォルダに入れています。

92.2 ARKit 入門その1 - 最小実装で体験してみる

● 図 2.2 仮想オブジェクトが現実世界に設置され、色々な角度から見ることができる

わずか3行程度の実装によって、現実世界に仮想シーンをオーバーレイし、デバイスの位置や角度の変化に追従するARの機能が構築できた

2.2.3 基本クラスの解説

■ ARSession

41第 3章 Core ML

Core ML第3章

 吉田 悠一 / @sonson_twit

はじめに3.1

3.1.1 ユースケース

■ 既存の研究成果やオープンなモデルを手身近に使いたいケース

42 第 3章 Core ML

■ 瑣末な機能を機械学習で実現したいケース

■ 即時性が求められるケース

3.1.2 本章の構成

Core MLのために学ぶ機械学習3.2

433.2 Core ML のために学ぶ機械学習

3.2.1 機械学習の分類

本 節のサンプルプロジェクトは、 内 にある です。

識別モデル 生成モデル

教師あり学習 教師なし学習

Swift 4の新機能とアップデート第4章

 池田 翔 / @ikesyo

79第 4章 Swift 4 の新機能とアップデート

Swift 4の新機能とアップデート第4章

 池田 翔 / @ikesyo

Swift 4の新機能とアップデート

はじめに4.1

Swift 4コンパイラの言語モード

 Swift 4のコンパイラはSwift 3.2モードと、Swift 4モードという2つの言語モードをサポートしています。前者

はSwift 3.xと基本的に互換性があるモードで、後者がSwift 4の全ての機能とAPI変更が有効になるモードです。

Swift 4モードでビルドしたフレームワークを、Swift 3.2モードでビルドするアプリで使用する、といった混在利用が

可能です。言語モードはプロジェクト単位、もしくはターゲット単位で、“Swift Language Version”というBuild

Settingsから変更できます。

 実はSwift 4の新機能のほとんどはSwift 3.2モードでも利用でき、これから紹介する プロトコルとSmart

KeyPathsもそれに含まれます。Swift 4の構文に移行せずとも導入できるこれらの機能をぜひ活用していきましょう。

Codableプロトコル4.2

80 第 4章 Swift 4 の新機能とアップデート

注1) 注2)

4.2.1 Codableプロトコルの基本的な使い方

注1) https://github.com/apple/swift-evolution/blob/master/proposals/0166-swift-archival-serialization.md注 2) https://github.com/apple/swift-evolution/blob/master/proposals/0167-swift-encoders.md

Xcode 9 の新機能第5章

 坂田 晃一 / @huin

107第 5章 Xcode 9 の新機能

第5章

 坂田 晃一 / @huin

はじめに5.1

注1)

5.1.1 本章の構成

注1) https://developer.apple.com/videos/play/wwdc2017/102/

108 第 5章 Xcode 9 の新機能

注2)

注3)

開発フェーズの新機能5.2

5.2.1 GitHubの統合とソースコード管理機能の改善

注4)

注5)

注 2) https://developer.apple.com/videos/play/wwdc2014/415/ 注 3) 旧称は「OS X Server」です。注 4) Subversion については将来のバージョンでサポート停止することが公式に発表されています。注 5) https://github.com

147第 6章 Drag and Drop

Drag and Drop第6章

 加藤 尋樹 / @cockscomb

注1)

ドラッグ&ドロップによるデータのやり取り6.1

6.1.1 NSItemProvider

注1) https://developer.apple.com/ios/human-interface-guidelines/interaction/drag-and-drop/

148 第 6章 Drag and Drop

6.1.2 Uniform Type Identifier(UTI)

注2)

6.1.3 データをやり取りする

注 2) もう1つ も予約済みで、動的に作られるUTI に用いられます。

179第 7章 Files と Document Based Application

FilesとDocument Based Application第 7章

 加藤 尋樹 / @cockscomb

はじめに7.1

Filesアプリ7.2

180 第 7章 Files と Document Based Application

ドキュメントブラウザAPI7.3

● 図 7.1 

195第 8章 レイアウト関連の新機能及び変更点

レイアウト関連の新機能及び変更点第8章

 川邉 雄介 / @jeffsuke

レイアウト関連の新機能及び変更点

本章のサンプルプロジェクトは です。

ラージタイトルとUINavigationBar8.1

● 図 8.1 ナビゲーションバーに大きなタイトルを表示できる

196 第 8章 レイアウト関連の新機能及び変更点

● 図 8.2 ラージタイトルは、スクロール挙動によりサイズが変更される

8.1.1 ラージタイトルをナビゲーションバーに追加

● 図 8.3 ラージタイトルのテキストアトリビュートを変更できる

213第 9章 Core NFC

Core NFC第9 章

 岸川 克己 / @k_katsumi

Core NFC

はじめに9.1

NFCを使ったアプリケーションの例9.2

Core NFCでできること9.3

214 第 9章 Core NFC

Core NFCのAPI構成9.4

Reader Sessions

NFC Tags ■

NDEF Messages ■

Errors ■

223第 10章 PDF Kit

PDF Kit第10 章

 岸川 克己 / @k_katsumi

PDF Kit

はじめに10.1

PDF Kitとは10.2

注1)

注1) アドビシステムズが開発および提唱する、ソフトウェア、ハードウェア、オペレーティングシステムに関係なく、文書を確実に表示および交換するために使用されるファイル形式です。

224 第 10章 PDF Kit

10.2.1 PDF Kitと既存 API の比較

■ PDF 文書の表示 PDFKit

UIWebView/WKWebView■

Core Graphics■

■ PDF 文書の編集 PDFKit/Core Graphics

UIWebView/WKWebView■

■ PDF 文書の作成 PDFKit/Core Graphics

UIWebView / WKWebView■

263第 11章 SiriKit

SiriKit第11章

 岸川 克己 / @k_katsumi

SiriKitとは11.1

● 表 11.1 SiriKit をアプリで利用できるドメイン一覧

To-Do 管理およびリマインダーとメモ帳(List and Notes)QRコード(Visual Codes)

iOS 11の変更点11.2

264 第 11章 SiriKit

11.2.1 To-Do 管理とメモ帳(List and Notes)ドメイン

1. メモの作成(Create Note)

2. メモにテキストを追加(Append to Note)

3. メモ帳とタスクリストおよびリマインダーからメモやタスクを検索(Search for Notebook Items)

4. タスクリストの作成(Create Task List)

5. タスクリストにタスクを追加(Add Task)

6. タスクの状態(完了、未完了)を変更(Set Task Attributes)

● 表 11.2 To-Do 管理とメモ帳ドメインの Intent

293第 12章 HomeKit 入門と iOS 11 のアップデート

HomeKit入門とiOS 11のアップデート第12章

 所 友太 / @tokorom

はじめに12.1

注1)

注2)

注3)

12.1.1 本章の構成

注1) Apple の HomeKit Developer Guide の概説より注 2) HomeKit 対応製品を作るための仕様注 3) https://developer.apple.com//homekit/specifi cation/

294 第 12章 HomeKit 入門と iOS 11 のアップデート

HomeKit入門12.2

12.2.1 HomeKitでできること

12.2.2 HomeKit の構成

● 図 12.1 HomeKit 構成全体像

349第 13章 Metal

Metal第13章

 堤 修一 / @shu223

第13 章

はじめに13.1

本章のサンプルプロジェクトは フォルダにあります。

シミュレータではサポートされていない

Metalの概要13.2

13.2.1 Metalとは

GPUへのアクセスを提供するAPI

そもそもは描画処理を担う演算装置

13.2.2 OpenGL ESとMetal

350 第 13章 Metal

Appleのハードウェアに最適化し、性能を限界まで引き出す

13.2.3 Metal の用途

● 図 13.1 Metal 初登場時のWWDC 基調講演でのデモ

● 図 13.2 Metal を利用しているフレームワーク

35113.3 Metal の基礎

iOSの超定番フレームワークの下回りでも実はMetalが利用されている

用途が拡大

Metalの基礎13.3

13.3.1 Metal の基礎概念

「最小実装」がUIKitのように小さくはない

● 図 13.3 CPU・GPUとコマンドバッファ

■ 両方からアクセスできるメモリ領域を持つ

■ CPUは、GPUへの命令(コマンド)をコマンドバッファという形で作成し、GPUに渡す

352 第 13章 Metal

13.3.2 Metal の基本クラス

■ MTLDevice

■ MTLCommandBuffer コマンドを格納するコンテナ コマン

ドバッファ単位でGPUに渡され、実行

コマンドバッファのオブジェクトは再利用はできない

■ MTLCommandQueue

スレッドセーフ

生成元のコマンドキューにコマンドバッファが追加 注1)

注1) には というメソッドもあります。 を呼んだタイミングで、当該コマンドバッファのキューにおける実行順が確保されますが、コミット自体はされません( を呼ばない限り実行されません)。

35313.3 Metal の基礎

コマンドバッファの実行順が保証される

■ MTLCommandEncoder コマンドを作成し、コマンドバッファに追加(エンコード)

● 表 13.1 コマンドエンコーダの種類

● 図 13.4 コマンドキュー、コマンドバッファ、コマンドエンコーダの関係

■ MTLBuffer, MTLTexture

GPUからアクセス可能なメモリ領域

387第 14章 Audio 関連アップデート

Audio関連アップデート第14章

 永野 哲久 / @7gano

はじめに14.1

注1)

MusicKit14.2

14.2.1 MusicKitとは

注2)

注3)

注1) https://www.apple.com/homepod/注 2) https://developer.apple.com/musickit/注 3) iPhone OS 3.0 で実装されましたが、iPod Library Access のドキュメントは現在削除されています。この名称は使わなくなったので

はないかと思われますが、実際には iOS 11でも使用できます。Media Playerフレームワークの機能です。

388 第 14章 Audio 関連アップデート

● 表 14.1 MusicKit / Apple Music(ミュージックApp)比較

1. Apple Music APIへアクセスするためのトークンを生成する

2. Apple Music APIで再生する曲の情報(StoreID)を取得する

3. StoreKitでApple Musicへのアクセス許可をユーザーから得る

4. StoreIDをMediaPlayerフレームワークのMPMusicPlayerControllerに渡して再生する

14.2.2 Apple Music API

■ Developer Token Developer Token Music User Token

この続きを読むには...

iOS 11 Programming堤 修一 / 吉田 悠一 / 池田 翔 / 坂田 晃一 / 加藤 尋樹川邉 雄介 / 岸川克己 / 所 友太 / 永野 哲久 / 加藤 寛人

電子版 : ¥3,200 製本版: ¥3,500

購入して続きを読む