171
WWDC 2014 Feedback

[20140625]wwdc2014 feedback

Embed Size (px)

DESCRIPTION

VOYAGE GROUPエンジニアによるApple WWDC 2014フィードバック資料です

Citation preview

WWDC 2014 Feedback

WWDC 2014のスライドおよびApple.com の iOS 8 プレビューを

まとめた資料になります。

Agenda• iOS 8 New Features

• New APIs and Frameworks

• Extension

• New Frameworks

• CloudKit

• Security and User Privacy

• Safari and Web

• iTunes Connect and App Store

iOS 8 New Features

Notifications

Quick Type

• 予測変換 ではなく 予測入力

• 日本語含む14ヶ国語対応

• 相手, 文脈によって学習

Continuity

Handoff

• iWork, Mail, Safariなど作業状態を転送

Phone Call

• iPhoneの電話をMac/iPadで (IN/OUT)

Messages

• メッセージの同期

Instant Hotspot

• デバイスを選択するだけでテザリングを開始

iCloud Drive

• デバイス間で同期されるフリーストレージ

• Dropboxに非常に近い感覚

• アプリ間で共有される

• Windowsにも対応

Health

Family Sharing

• Apple ID 6アカウントまでをグループ化

• 共通のクレジットカードで支払い可能

• コンテンツが共有される

• 写真, 予定, リマインダー, 位置, 端末位置, 音楽, 映画, 本, アプリ

• アプリの購入時に親に確認が行われる.

Others

App Switcher に頻繁に連絡を取る相手を表示

Mail

• ジェスチャの強化, 下書き途中でもInboxに

Spotlight

• App Store, Wikipedia, iTunes Store

Messages

• Type to talk, Group messaging

Photos

• すべての端末でデータが同期される.

Fall in 2014

Agenda• iOS 8 New Features

• New APIs and Frameworks

• Extension

• New Frameworks

• CloudKit

• Security and User Privacy

• Safari and Web

• iTunes Connect and App Store

New APIs and Frameworks

4000 New APIs

App Extension

What is App Extension• App Extensions

• Today (iOS/OS X)

• Share (iOS/OS X)

• Action (iOS/OS X)

• Photo Editing (iOS)

• Finder (OS X)

• Storage Provider (iOS)

• Custom keyboard (iOS)

What is App Extension• App Extensions

• Today (iOS/OS X)

• Share (iOS/OS X)

• Action (iOS/OS X)

• Photo Editing (iOS)

• Finder (OS X)

• Storage Provider (iOS)

• Custom keyboard (iOS)

What is App Extension• App Extensions

• Today (iOS/OS X)

• Share (iOS/OS X)

• Action (iOS/OS X)

• Photo Editing (iOS)

• Finder (OS X)

• Storage Provider (iOS)

• Custom keyboard (iOS)

テキスト入力は不可 (タッチ・ジェスチャー イベントのみ) Widgetの高さは調整可能

What is App Extension• App Extensions

• Today (iOS/OS X)

• Share (iOS/OS X)

• Action (iOS/OS X)

• Photo Editing (iOS)

• Finder (OS X)

• Storage Provider (iOS)

• Custom keyboard (iOS)

What is App Extension• App Extensions

• Today (iOS/OS X)

• Share (iOS/OS X)

• Action (iOS/OS X)

• Photo Editing (iOS)

• Finder (OS X)

• Storage Provider (iOS)

• Custom keyboard (iOS)

Notify to users• on/offの設定がわかりにくく、せっかくExtensionを実装してもユーザーに気がついてもらえない可能性がある。

New Frameworks

HealthKit & HomeKit

HealthKit

HealthKit

• ナニが出来るのか?

• ヘルスケア関連アプリ同士がデータを共有できる

• iOS標準アプリ「Health」、「Run keeper」、「Sleep cycle」など・・

HealthKit• iWatchとの連携

• ヘルスケア関連のセンサを搭載している(うわさ

• サードパーティ製のハードとの連携

• Nike FuelBand、fitbitなど

HealthKit• 収集されたデータを一元管理

• セキュアに管理されている(らしい

• 医療機関へのデータ提供

• 医療機関との連携が密に。

• 問題があると病院側からアラートが送られてきたり

• iPhoneのバッテリー切れが命に関わる時代が・・・

HealthKit

HealthKit

• まとめ

• ヘルスケアデータの一元管理

• 医療機関と連携

• ハードウェアを作る場合は申請を

HomeKit

HomeKit• ナニが出来るのか?

• iOSから家電の操作が可能に

• 鍵、エアコン、ガレージ、ライトなど

• 家電の状態を知ることが可能に

• 鍵かかってたっけ?部屋の気温は?

• iOS標準アプリは提供されない

• Siriからコントロール可能に

HomeKit

• Siriとの連携

• 音声ですべての家電操作を

HomeKit

HomeKit• MFi Program

• アクセサリを作るサードパーティに取らせるライセンス

• 品質の保証が出来る

HomeKit• MFi Programに参加する必要があるもの

• HomeKit accessory specifications <- New!!

• Lightning and 30-pin connectors

• Authentication coprocessors

• iPod Accessory Protocol, the protocol used to communicate with iPhone, iPad and iPod

• AirPlay audio technology

• Apple Wireless Accessory Configuration feature

• Apple Headphone Remote and Mic system

• Lightning Headphone Module

HomeKit• MFi Programに参加するときに必要なもの

• A registered legal entity name

• Address for the company/organization's principal place of business or corporate headquarters (P.O. boxes are not accepted)

• Company/organization domain name/e-mail address and Web site

• A completed credit review of your company by an Apple-specified third party

• A valid credit card to purchase the credit review

• (For the MFi Manufacturing License) Ownership of a manufacturing facility

HomeKit• まとめ

• 家電をiPhoneで操作(Siriで!

• 家電の情報をiPhoneで取得

• ハードを作るときはMFi Programのライセンスを

Home & Helthまとめ• 自分の健康と家の管理がiPhoneで

• より多くの大切な情報がモバイルデバイスに

• 攻撃対象になりやすくなる

• 開発者、ユーザ共にプライバシーの意識を

• 用法用量を守って正しく使いましょう

参考• Health (http://www.apple.com/ios/ios8/health/)

• HealthKit (https://developer.apple.com/healthkit/)

• Fit: Store and Retrieve HealthKit Data (https://developer.apple.com/library/prerelease/ios/samplecode/Fit/Introduction/Intro.html)

• HomeKit (https://developer.apple.com/homekit/)

• MFi Program (https://developer.apple.com/jp/programs/mfi/)

• シマンテック社 Sevurity Response「iPhone や iPad のセキュリティに影響する iOS 8 の新機能」(http://www.symantec.com/connect/blogs/iphone-ipad-ios-8)

CloudKit

CloudKitとは• Apple製のMBaaS(Mobile Backend As A Service)

• iCloud CoreData や新機能の iCloud Drive 等でも使われている

CloudKitの特徴• ユーザー認証には iCloud アカウントを利用

• データベースには Public と Private の 2 種類がある

• Private Database はユーザーのみがアクセス可能(Developer も不可?)

• Push 通知もサポート

• 位置情報を絡めたデータの検索に対応

• CloudKit Dashboard によりブラウザ上でのデータの閲覧、管理が可能

スペックとお値段Start with: Grow with every user: Free up to:

Storage

5GB for assets 100MB for assets 1PB for assets

50MB for database 1MB for database 10TB for database

Data Transfer

25MB/day for assets 0.5MB/user for assets 25TB/day for assets

250KB/day for database 5KB/user for database 50GB/day for database

割り当てられたストレージと転送量はユーザー数によってスケーリングし、最大で 1PB まで拡張される。

Free (with limits)

Parse.comとの比較Parse.com CloudKit

ユーザー管理アプリ毎に自前, ソーシャルアカ

ウント連携をサポート iCloud アカウント

サポート OS iOS, Android, Windows Phone, etc OS X / iOS

ストレージ20GB for files

20GB for database 2TB for data transfer

1PB for assets 10TB for database 25TB/day for assets

50GB/day for database ※最大

Push Notification 有り 1 million まで無料

有り 通知回数などの制限なし

バックグラウンドジョブ 有り 無料プランでは 1 job 無し

Parse.comとの比較Parse.com CloudKit

サーバーサイドスクリプト有り

Cloud Code(javascript) 無し

データの権限管理 有り 有り(ただしAPI見当たらず。Dashboardからのみ設定可能?)

ドキュメント 豊富API Reference とサンプルコードのみ(そのうち Programing

Guide とか出るはず)

費用 Free $100/month~

無料(ただし Developer Program が切れたあとデータが

どうなるかは不明)

CloudKitのイマイチなところ• 認証に iCloud アカウントを用いるため、開発中やテスト用のアカウントが気軽に用意できない

• Apple ID は作るのは簡単だけど削除が非常に面倒(サポートへの問い合わせベース)

• iTunes Connect でテスト用ユーザーを作成できるが、これはアプリ内課金用であってCloudKit(iCloud アカウント)では使えなかった

• サーバーサイドスクリプト未対応

• サーバー側に処理が書けないためアプリ側で全てを書く必要がある

• Web API なし

• バックグラウンドジョブ的なものなし

• データの権限管理が貧弱すぎる

• 今のところ権限に関する API が見当たらず、Dashboard 上で Security Role を生成しユーザーに設定するしかない(?)

• 無料にしてはスペックが良いように見えるが実際はユーザー数が増えた際の最大値であり、スタート時は非常にスペックが低い

• OS X/iOS 専用

結論

大人しくParse.com 使っとけ

Security and User Privacy

Agenda• User Privacy

• IDFA

• MAC Address

• Safari Third Party Cookie Policy

• Prompting With Purpose

• Privacy policy

• Local Authentication

• TouchID

User Privacy

IDFA

• IDFAの利用について

• ユーザが制限をかけている場合利用方法を限定的にしないといけない

MAC Address• MAC Addressをランダマイズするようになる

• 周辺のWi-Fiを探すとき(スキャニング)

• 接続時は本来のMAC Addressを使用(制限ができる)

• どのタイミングでランダマイズされるかはまだ不明

• iOS8 beta1ではMAC Addressのランダマイズは実装されていない?

MAC Address• なんでこんなことするのか?

• 勝手にMAC Addressを収集しちゃう輩がいるため

• MAC Addressを元にストーキングされちゃう!

• アクセスポイントを探す機能をオフるしか対策がなかった

Safari Third Party Cookie Policy

Safari Third Party Cookie Policy

• 新しいパーミッションが追加されました

• ファーストパーティクッキーのみ <- New!!

• デフォルトは訪問済みに限ったサードパーティCookieも許可 (iOS7以前と同じ)

Safari Third Party Cookie Policy

• OSXのsafariにおいて

• サードパーティクッキーの”保存”は制限

• “送信”は制限していない

• iOSでも同様?

Prompting with Purpose• Design the experience Five core principles for “prompting with purpose”

• 許可を取る

• 何を何に使うか伝える

• ユーザのアクションに合わせる

• 明確に伝える

• 必要な物だけ使う

Privacy policy• Privacy policyの提出が義務化(一部カテゴリのみ

• Apps that link against HealthKit

• Apps that link against HomeKit

• Third party keyboards

• Kids

Local Authentication

Touch ID• Touch IDをアプリ内で使えるようになるよ!

• サービスへのログイン

• 機密情報へのアクセス

• 一部の機能開放

• ペアレンタル・コントロール

Touch ID

• 認証はセキュアなのか?

• Touch ID センサとペアリングされている

• Touch IDセンサを取り替えるとリセット

Touch ID

• 認証はセキュアなのか?

• 指紋データはTouch ID以外アクセス出来ない

• A7チップ内、SecureEnclave領域に保存

Touch ID• SecureEnclave

• ARMのTrustZone

• ソフトウェア的に制御

• ハード上では漏洩の可能性

• 指紋は変更不可

User PrivacyLocal Authentication

• まとめ

• iOSは8でよりセキュアな作りに

• TouchIDなど利用してアプリもセキュアにできる

• 開発者はもっと セキュリティ / プライバシー への配慮を

• ユーザの セキュリティ / プライバシー に対する理解を促す必要も

• 指紋は変更不可

• 指紋認証というシステム自体のリスクを理解しましょう

参考• User Privacy in iOS and OS X (http://devstreaming.apple.com/videos/wwdc/2014/715xx4loqo5can9/715/715_user_privacy_in_ios_and_os_x.pdf?dl=1)

• Keychain and Authentication with Touch ID (http://devstreaming.apple.com/videos/wwdc/2014/711xx6j5wzufu78/711/711_keychain_and_authentication_with_touch_id.pdf?dl=1)

• サードパーティCookieの歴史と現状 Part1 前提知識の共有 (http://d.hatena.ne.jp/mala/20111125/1322210819)

• iPhone5s: Secure Enclaveの内部 (http://www.fortinet.co.jp/security_blog/130916-iPhone5s-Inside-the-Secure-Enclave.html)

Safari and

WKWebView

Agenda

• WKWebView

• iOS App with iCloud Keychain Credentials

• Whats new in Safari

WKWebView

• UIWebViewだが機能が強化されている

• つまり強力なWebViewアプリが作れる

• ECナビアプリなんかに向いてそう

例: History操作

• スワイプでWebView内のヒストリを戻れる

• 正しSingle Page WebAppでHistory APIを使っていない場合は悲しい事になる(ex. yahoo.com)

• つまり PushState, PopState使え

Communicate with Obj-C• WebView内のJavaScriptとObj-Cコードのやりとり。UIWebViewではHackyな方法が使われていた。

• HTML5 Post Message API相当の物が追加された。これが決定番になると思われる。

• window.webkit.messageHandlers.<name>.postMessage();

User Script

• Script Injection

• At Document Start

• At Document End

Use iCloud Keychain in iOS Apps

About

• SafariでiCloud Keychainに保存したパスワードとUserIDをアプリから利用できる。

• ECナビアプリ向け

使い方サイニングした設定ファイル(JSON)をWebサーバが返せるようにしておく。 例: { "webcredentials": { "apps": [ "XXXXX.com.example.Huga", "XXXXX.com.example.HugaUploader"] } }

Safari

Auto Fill<input type=“text” autocomplete=“username”> !

<input type=“text” autocomplete=“current-password”> !

<input type=“text” autocomplete=“new-password”>

Auto Fill

• autocomplete属性の強化

• autocomplete=“new-password” すると、パスワード生成してくれる。

• iOS8 beta2では確認できず(Macだけかも)

Auto Fill

Icongraphy

Shared Links

Support ES6 Harmony

• EcmaScript 6の一部をサポート

Mapvar simpleMap = new Map(); simpleMap.set(‘foo’, 42); simpleMap.get(‘foo’); // -> 42 !

for (var [k, v] of someMap) { process(k, v); } !

simpleMap.delete(‘foo’);

WeakMap

Mapの弱参照版。これ以外は全て強参照

Set

一括代入function foo(){ return [100, 200] }; var [a, b] = foo(); !

function bar() { return {x: 4, y: 9} }; var {x: myX, y} = bar();

パラメータ展開function cubic(width, height, depth) { return width * height * depth;} var args = [1, 2, 3]; cubic(...args); !

// cubic.apply(null, args); と書かなくていい

Promisesfunction load(url) { return new Promise(function (resolve, reject) { var xhr = new XMLHttpRequest(‘GET’); xhr.open(url); xhr.onreadystatechange = function() { … resolve(xhr.response); -------略------ } var imgs = [load(a), load(b)]; Promise.all(imgs).then(done);

Promises

// 例えばRTBサーバーみたいな処理 var bidReqeusts = [dsp1, dsp2, dsp3].map(function(dsp) { return sendBidRequest(dsp); }); Promise.all(bidRequests).then(pickWinner).then(done);

ES6 Supportまとめ• ES6 Scope (let), Proxy は使えない

• Node.jsの --harmony_collections オプションだけをオンにした状態に近い

• 一括代入はChromeが対応していない

• 普段Chromeでデバッグしてる人は死ぬ

• 現実的にはes6-shim.js等の併用必須

video要素• Support source要素

• クライアントが最適な動画ソースを選べる

• Support Media Source Extensions (Mac)

• 例えば

• localSource -> 自端末のfront camera

• remoteSource -> 相手のcamera

まとめ• WKWebView追加

• Safari

• auto-complete属性強化

• iCloud credentialsがアプリでも使える

• ES6 Support

• video要素強化

Agenda• iOS 8 New Features

• New APIs and Frameworks

• Extension

• New Frameworks

• CloudKit

• Security and User Privacy

• Safari and Web

• iTunes Connect and App Store

iTunes Connect

New iTunes Connect

All-new design App previews App bundlesApp analyticsTestFlight beta testing

All-new design

デザイン変わったよ

App Previews

プレビューに動画が使えるようになったよ設定可能な動画は30秒

動画みないよね

App Bundle

複数アプリをセット配布可能になった

10個抱き合わせ可能

電子書籍シリーズものによさそうだね

App Analytics

アナリティクス機能が強化されたよ

メトリクス

流入経路

Retention

グレイトだね!

Building a Great App

Great idea Thoughtful design Bug-free code Test, test, and testSubmit to App Store

After Launch

App Store presence Marketing New updatesAdvertising Analytics

メトリクス

流入経路

リテンション

SDKの必要なしコードも必要なしアップデートも必要なし規約周りも大丈夫もちろん無料

独自のイベントとかとれる?流入経路別のリテンションは?

……………

TestFlightベータテスト機能追加したよ

1,000ユーザまでテスター登録可能

UDIDやプロファイルはいらない

Betaテストは1000ユーザかつ、レビューが必要

Internalテスターは25人(レビューなし)

……………

Wrap up

• 過去最大級のAPIの拡充

• Extensionなど自由度は高く

• iOS端末をハブとした生活圏

• デバイスのコントロール, UIをiOSで行う時代

• 新型端末のヒントは?

WWDC 2014 Feedback

References•WWDC 2014 Videos & Slides

• https://developer.apple.com/videos/wwdc/2014/

• iOS 8 Preview

• http://www.apple.com/jp/ios/ios8/