View
6.766
Download
5
Category
Preview:
DESCRIPTION
VOYAGE GROUPエンジニアによるApple WWDC 2014フィードバック資料です
Citation preview
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
Handoff
• iWork, Mail, Safariなど作業状態を転送
Phone Call
• iPhoneの電話をMac/iPadで (IN/OUT)
Messages
• メッセージの同期
Instant Hotspot
• デバイスを選択するだけでテザリングを開始
• Apple ID 6アカウントまでをグループ化
• 共通のクレジットカードで支払い可能
• コンテンツが共有される
• 写真, 予定, リマインダー, 位置, 端末位置, 音楽, 映画, 本, アプリ
• アプリの購入時に親に確認が行われる.
App Switcher に頻繁に連絡を取る相手を表示
• ジェスチャの強化, 下書き途中でもInboxに
Spotlight
• App Store, Wikipedia, iTunes Store
Messages
• Type to talk, Group messaging
Photos
• すべての端末でデータが同期される.
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
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)
HealthKit• 収集されたデータを一元管理
• セキュアに管理されている(らしい
• 医療機関へのデータ提供
• 医療機関との連携が密に。
• 問題があると病院側からアラートが送られてきたり
• iPhoneのバッテリー切れが命に関わる時代が・・・
HomeKit• ナニが出来るのか?
• iOSから家電の操作が可能に
• 鍵、エアコン、ガレージ、ライトなど
• 家電の状態を知ることが可能に
• 鍵かかってたっけ?部屋の気温は?
• iOS標準アプリは提供されない
• Siriからコントロール可能に
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
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とは• 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 まで拡張される。
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 専用
Agenda• User Privacy
• IDFA
• MAC Address
• Safari Third Party Cookie Policy
• Prompting With Purpose
• Privacy policy
• Local Authentication
• TouchID
MAC Address• MAC Addressをランダマイズするようになる
• 周辺のWi-Fiを探すとき(スキャニング)
• 接続時は本来のMAC Addressを使用(制限ができる)
• どのタイミングでランダマイズされるかはまだ不明
• iOS8 beta1ではMAC Addressのランダマイズは実装されていない?
MAC Address• なんでこんなことするのか?
• 勝手にMAC Addressを収集しちゃう輩がいるため
• MAC Addressを元にストーキングされちゃう!
• アクセスポイントを探す機能をオフるしか対策がなかった
Safari Third Party Cookie Policy
• 新しいパーミッションが追加されました
• ファーストパーティクッキーのみ <- New!!
• デフォルトは訪問済みに限ったサードパーティCookieも許可 (iOS7以前と同じ)
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
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)
例: 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();
使い方サイニングした設定ファイル(JSON)をWebサーバが返せるようにしておく。 例: { "webcredentials": { "apps": [ "XXXXX.com.example.Huga", "XXXXX.com.example.HugaUploader"] } }
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だけかも)
Mapvar simpleMap = new Map(); simpleMap.set(‘foo’, 42); simpleMap.get(‘foo’); // -> 42 !
for (var [k, v] of someMap) { process(k, v); } !
simpleMap.delete(‘foo’);
一括代入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
Building a Great App
Great idea Thoughtful design Bug-free code Test, test, and testSubmit to App Store
TestFlightベータテスト機能追加したよ
1,000ユーザまでテスター登録可能
UDIDやプロファイルはいらない
Betaテストは1000ユーザかつ、レビューが必要
Internalテスターは25人(レビューなし)
References•WWDC 2014 Videos & Slides
• https://developer.apple.com/videos/wwdc/2014/
• iOS 8 Preview
• http://www.apple.com/jp/ios/ios8/
Recommended