Soumettre la recherche
Mettre en ligne
今のうちに知っておきたい Swiftの高速化 + 3D Touch API
•
28 j'aime
•
5,995 vues
Masaki Oshikawa
Suivre
先日Appleから発表された3D TouchのAPIについてと、Swiftの高速化について
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 67
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
AppleWatch発売!Apple Watch WatchKit勉強会-Notification
AppleWatch発売!Apple Watch WatchKit勉強会-Notification
Hiroaki Kaneda
Azure Mobile ServicesとAzure Mobile Apps
Azure Mobile ServicesとAzure Mobile Apps
Masaki Yamamoto
ARCore/Tangoと簡易ヘッドセットHoloKitで光学シースルーAR
ARCore/Tangoと簡易ヘッドセットHoloKitで光学シースルーAR
Takashi Yoshinaga
Microsoft Azureで始めるサクサクAndroid開発 in jazug青森
Microsoft Azureで始めるサクサクAndroid開発 in jazug青森
Masaki Yamamoto
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化する
Tomoki Hasegawa
ARコンテンツ作成勉強会:Webブラウザで簡単作成!スマホAR(Zappar編)
ARコンテンツ作成勉強会:Webブラウザで簡単作成!スマホAR(Zappar編)
Takashi Yoshinaga
20160120 gpsロガーアプリを作ろう
20160120 gpsロガーアプリを作ろう
史識 川原
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
Fumiya Sakai
Recommandé
AppleWatch発売!Apple Watch WatchKit勉強会-Notification
AppleWatch発売!Apple Watch WatchKit勉強会-Notification
Hiroaki Kaneda
Azure Mobile ServicesとAzure Mobile Apps
Azure Mobile ServicesとAzure Mobile Apps
Masaki Yamamoto
ARCore/Tangoと簡易ヘッドセットHoloKitで光学シースルーAR
ARCore/Tangoと簡易ヘッドセットHoloKitで光学シースルーAR
Takashi Yoshinaga
Microsoft Azureで始めるサクサクAndroid開発 in jazug青森
Microsoft Azureで始めるサクサクAndroid開発 in jazug青森
Masaki Yamamoto
AppStore申請を一式まるっと自動化する
AppStore申請を一式まるっと自動化する
Tomoki Hasegawa
ARコンテンツ作成勉強会:Webブラウザで簡単作成!スマホAR(Zappar編)
ARコンテンツ作成勉強会:Webブラウザで簡単作成!スマホAR(Zappar編)
Takashi Yoshinaga
20160120 gpsロガーアプリを作ろう
20160120 gpsロガーアプリを作ろう
史識 川原
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
できるだけUI系のライブラリを用いないアニメーションを盛り込んだサンプル実装まとめ(追加版)
Fumiya Sakai
Adobe Illustrator はじめてのスクリプト
Adobe Illustrator はじめてのスクリプト
naichilab
Xcode の一歩進んだ使い方 分散ビルド
Xcode の一歩進んだ使い方 分散ビルド
nnkgw
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
leverages_event
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
Daiki Mogmet Ito
AWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリ
Takayuki Miyauchi
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
Kanako Kobayashi
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
Keisuke Tada
Css nite(2010.09.23)
Css nite(2010.09.23)
Yoshiki Ushida
kintone を 農業 IoT に活用!「API で農業をつなぐ」
kintone を 農業 IoT に活用!「API で農業をつなぐ」
Yukihito Kataoka
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
Shozo Okada
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
Kosuke Ogawa
Leap motion.js
Leap motion.js
Haraguchi Go
20150930 3D Touchを試す
20150930 3D Touchを試す
Kei Ito
ASP.net MVC で Stripe課金を実装してみた話
ASP.net MVC で Stripe課金を実装してみた話
Yukihito Kataoka
アイコンメモを支えるWeb技術
アイコンメモを支えるWeb技術
Makoto Setoh
20151130 Apple Pencilを使う
20151130 Apple Pencilを使う
Kei Ito
Getting started with Handoff
Getting started with Handoff
Yuichi Yoshida
片岡Io tltシリーズネタ 2016/10/29
片岡Io tltシリーズネタ 2016/10/29
Yukihito Kataoka
Linebotを作ろう
Linebotを作ろう
Shinsuke Matsuda
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
Salesforce Developers Japan
Tmcn Leap Motion
Tmcn Leap Motion
Kaoru NAKAMURA
Contenu connexe
En vedette
Adobe Illustrator はじめてのスクリプト
Adobe Illustrator はじめてのスクリプト
naichilab
Xcode の一歩進んだ使い方 分散ビルド
Xcode の一歩進んだ使い方 分散ビルド
nnkgw
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
leverages_event
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
Daiki Mogmet Ito
AWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリ
Takayuki Miyauchi
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
Kanako Kobayashi
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
Keisuke Tada
En vedette
(7)
Adobe Illustrator はじめてのスクリプト
Adobe Illustrator はじめてのスクリプト
Xcode の一歩進んだ使い方 分散ビルド
Xcode の一歩進んだ使い方 分散ビルド
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
脱swift初心者するための2つのきっかけ
脱swift初心者するための2つのきっかけ
AWS+WordPressでつくるFirefoxアプリ
AWS+WordPressでつくるFirefoxアプリ
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
swiftビギナーズ倶楽部:タブバーから学ぶ 「App delegate」と「as演算子」
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
モバイルアプリのインタラクションプロトタイピング - 高速に仮説・実行・検証サイクルを回すために
Similaire à 今のうちに知っておきたい Swiftの高速化 + 3D Touch API
Css nite(2010.09.23)
Css nite(2010.09.23)
Yoshiki Ushida
kintone を 農業 IoT に活用!「API で農業をつなぐ」
kintone を 農業 IoT に活用!「API で農業をつなぐ」
Yukihito Kataoka
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
Shozo Okada
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
Kosuke Ogawa
Leap motion.js
Leap motion.js
Haraguchi Go
20150930 3D Touchを試す
20150930 3D Touchを試す
Kei Ito
ASP.net MVC で Stripe課金を実装してみた話
ASP.net MVC で Stripe課金を実装してみた話
Yukihito Kataoka
アイコンメモを支えるWeb技術
アイコンメモを支えるWeb技術
Makoto Setoh
20151130 Apple Pencilを使う
20151130 Apple Pencilを使う
Kei Ito
Getting started with Handoff
Getting started with Handoff
Yuichi Yoshida
片岡Io tltシリーズネタ 2016/10/29
片岡Io tltシリーズネタ 2016/10/29
Yukihito Kataoka
Linebotを作ろう
Linebotを作ろう
Shinsuke Matsuda
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
Salesforce Developers Japan
Tmcn Leap Motion
Tmcn Leap Motion
Kaoru NAKAMURA
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒す
Tomoki Hasegawa
fastlane触ってみた
fastlane触ってみた
Shingo Tamaki
実装だって楽したい!〜リアルタイム通信はじめの一歩〜
実装だって楽したい!〜リアルタイム通信はじめの一歩〜
Yuka Tokuyama
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
Akira Iwaya
ユーザーを待たせないためにできること
ユーザーを待たせないためにできること
Tomoaki Imai
Similaire à 今のうちに知っておきたい Swiftの高速化 + 3D Touch API
(20)
Css nite(2010.09.23)
Css nite(2010.09.23)
kintone を 農業 IoT に活用!「API で農業をつなぐ」
kintone を 農業 IoT に活用!「API で農業をつなぐ」
2011_9_9_AIR_LightningTalk
2011_9_9_AIR_LightningTalk
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
自作アプリを Apple Watch対応した話 〜FastCheckin編〜
Leap motion.js
Leap motion.js
20150930 3D Touchを試す
20150930 3D Touchを試す
ASP.net MVC で Stripe課金を実装してみた話
ASP.net MVC で Stripe課金を実装してみた話
アイコンメモを支えるWeb技術
アイコンメモを支えるWeb技術
20151130 Apple Pencilを使う
20151130 Apple Pencilを使う
Getting started with Handoff
Getting started with Handoff
片岡Io tltシリーズネタ 2016/10/29
片岡Io tltシリーズネタ 2016/10/29
Linebotを作ろう
Linebotを作ろう
Einsteinvision - object detection を試してみよう
Einsteinvision - object detection を試してみよう
Tmcn Leap Motion
Tmcn Leap Motion
Swiftのプロパティオブザーバを使い倒す
Swiftのプロパティオブザーバを使い倒す
fastlane触ってみた
fastlane触ってみた
実装だって楽したい!〜リアルタイム通信はじめの一歩〜
実装だって楽したい!〜リアルタイム通信はじめの一歩〜
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
ユーザーを待たせないためにできること
ユーザーを待たせないためにできること
今のうちに知っておきたい Swiftの高速化 + 3D Touch API
1.
今のうちに知っておきたい Swiftの高速化 + 3D Touch
API
2.
pochikawa starfruits_j Azione Co., Ltd. Oshikawa
3.
4.
Twitterアイコン 変わりました
5.
ヤラナイカ スプラトゥーンのフレンドの オンライン状態をチェックし たり通知してくれるアプリ 他 > littlegleam.com
6.
3D Touch APIs
7.
• Home Screen
Quick Actions • UIKit peek and pop API • Web view peek and pop API • UITouch force properties ※ Apple Developer Libraryで一般に公開されている情報に基きます 3D Touch APIs
8.
試せない。。。
9.
Home Screen Quick
Actions App Icon を強押しでPopOverを表示させるやつ
10.
• カメラ (セルフィ、ビデオ、スロー撮影、写真撮影) •
メッセージ (新規、履歴) • マップ (自宅への経路、現在地のマーク、位置情報送信、周辺検索) 使用例
11.
Static quick actions UIApplicationShortcutItemsのarrayをinfo.plistに記述する func
application(application: UIApplication, performActionForShortcutItem shortcutItem: UIApplicationShortcutItem, completionHandler: Bool -> Void) が呼ばれるので、ごにょごにょする 起動時の場合はlaunchOptionsに UIApplicationLaunchOptionsShortcutItemKey があるので、そっちを使う。 notificationやopenURLの処理とかと同じ感じ
12.
Dynamic quick actions UIApplication.shortcutItems
に UIApplicationShortcutItemを登録 ログインやユーザ登録等が必要な場合はこちらを使うっぽい 4つまで登録が可能 sample code: ApplicationShortcuts: Using UIApplicationShortcutItem
13.
UIKit peek and
pop API 概要モードと全画面モードを担うUI
14.
• 受信ボックスのEメールをPeek ->
Popで普通に開く • リンクをPeek -> PopでSafari • カメラ画面でサムネイルをPeek -> Popで全画面 • 住所をPeek -> Popでマップ • 顔アイコンを3D Touchで (Facetime、メッセージ、メール等) • 左スワイプでメール削除、右スワイプで未読に? 使用例
15.
• Appleの日本語ページによれば、Peekが覗く Pop
で開くというニュアンス • UIViewControllerPreviewingDelegate • UIPreviewAction • UIPreviewActionGroup • UIPreviewActionItem (protocol)
16.
前準備 3D Touchの対応チェック traitCollection.forceTouchCapability ==
.Available 3D Touchを検出するViewを登録 registerForPreviewingWithDelegate(self, sourceView: view) 解除は unregisterForPreviewingWithContext(previewing: UIViewControllerPreviewing) ViewControllerにUIViewControllerPreviewingDelegateを実装
17.
Peekさせる ViewController を返す感じ func
previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? Popさせる 時に呼ばれるのでshowViewControllerする感じ func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController) UIViewControllerPreviewingDelegate
18.
Peekを上へスワイプした時にActionSheetっぽいやつが表示される override func previewActionItems()
-> [UIPreviewActionItem] で、UIPreviewActionItemのリストを返す UIPreviewActionGroup を使って複数のItemを内包させることもできる。 どうなるかは未確認。。 UIPreviewActionItem
19.
Web view peek
and pop API WebViewのリンクを3D Touchでポップアップする
20.
WKWebView.allowsLinkPreviewをtrueにすると有効になる Pop時にはSafariじゃなくてSFSafariViewControllerが開くみたい。 JavascriptのAPIが出来れば良いのになと。 使い方
21.
UITouch force properties アプリでも自由に使えます的な
22.
• キーボードの3D Touchでトラックパッドに。カーソル移動に使えるらしい。 •
左端の3D Touchでマルチタスク表示 • 感圧スケッチ 使用例
23.
• UITouch に
force, maximumPossibleForce のプロパティが増えた • 9.1はPencil関係、ペンの角度も取れるみたいでヤバイ UITouch.force, UITouch.maximumPossibleForce
24.
はやくさわりたい
25.
今のうちに知っておきたい Swiftの高速化
26.
TestSplee https://github.com/jstarfruits/TestSplee
27.
Swift 2 採用して数ヶ月 •
だんだんコーディング規約のようなものも出来てきた • selfを使わない • セミコロンなしで統一 • 可能な限り型定義しない • クロージャは省略した書き方を優先する • Voidは省略等
28.
気楽に開発したいので、ほどほどに 例えばnilのチェック
29.
とかどっちでもいい
30.
とかどっちでもいい?
31.
よくないんです!
32.
Swiftって安全ですか? https://developer.apple.com/swift/
33.
その通りと思う しかし書く人によります • 全部の変数がOptionalで、使う時は!でアンラップ? • 全部AnyObjectにされて、obj
as! Stringとかされたら?
34.
Swiftって速いですか? https://developer.apple.com/swift/
35.
そう、きっと書く人による
36.
コーディング規約の採用で迷った時の判断基準にもなるし、どんな書き方が理想なのか 使う頻度の高いパターンのベンチマークを取ってみました そう、きっと書く人による
37.
前提 これからお見せするのは 2015/09/10 iOS
9 GM Seed 発表時点、iPhone 6上で実行結果です 一部を除き1,000,000回ループさせた時にかかった時間です TestSplee https://github.com/jstarfruits/TestSplee
38.
-------------------- 0.008 0.007 0.008 0.008 0.008 -------------------- Avg: 0.008 ====================
39.
VS 0.021 0.020 0.020 0.021 0.021 -------------------- Avg: 0.021 0.377 0.374 0.373 0.372 0.374 -------------------- Avg: 0.374
40.
圧倒的 if let!!
41.
strがnilじゃない場合
42.
VS 0.234 0.231 0.233 0.233 0.234 -------------------- Avg: 0.233 0.568 0.572 0.572 0.573 0.569 -------------------- Avg: 0.571
43.
やはり圧倒的 if let
! これだけで、あなたのコードは2倍早くなるんです!?
44.
配列に要素があるか確認 100,000件のIntを登録した配列に 要素が存在するか確認
45.
0.836 0.832 0.835 0.830 0.831 -------------------- Avg: 0.833 0.089 0.090 0.090 0.089 0.089 -------------------- Avg: 0.090 0.343 0.343 0.342 0.343 0.342 -------------------- Avg:
0.343
46.
count速っ!
47.
Realmでは? 100,000件のUserデータを登録した中から レコードが存在するか確認
48.
VS 0.446 0.446 0.450 0.448 0.443 -------------------- Avg: 0.447 0.211 0.210 0.212 0.211 0.212 -------------------- Avg: 0.211
49.
Stringは?
50.
0.630 0.624 0.625 0.624 0.625 -------------------- Avg: 0.626 0.229 0.227 0.229 0.227 0.228 -------------------- Avg: 0.228 0.227 0.227 0.228 0.226 0.227 -------------------- Avg:
0.227
51.
Arrayのappend, insert 時間がかかるのでループを100,000回に変更しています
52.
0.059 0.060 0.059 0.060 0.059 -------------------- Avg: 0.059 0.167 0.168 0.169 0.167 0.169 -------------------- Avg: 0.168 6.690 6.751 6.810 6.784 6.755 -------------------- Avg:
6.758
53.
Arrayの走破
54.
0.542 0.537 0.537 0.539 0.538 -------------------- Avg: 0.538 0.043 0.044 0.044 0.042 0.042 -------------------- Avg: 0.043 0.746 0.744 0.755 0.747 0.745 -------------------- Avg:
0.747
55.
countの方が 10倍以上速い!
56.
class vs struct 初期化コスト
57.
0.286 0.280 0.294 0.288 0.285 -------------------- Avg: 0.286 0.009 0.009 0.009 0.009 0.009 -------------------- Avg: 0.009
58.
LOG関数問題 • デバッグ用のprint出力を、リリース時に無効にしたい • Swiftにはマクロが無いので、printは抑止できるが引数が評価されてしまう
59.
60.
Objective-Cでは無かった事にできた
61.
2.941 2.662 2.635 2.646 2.635 -------------------- Avg: 2.704 0.199 0.199 0.197 0.210 0.200 -------------------- Avg: 0.201 引数が1つなら0.026まで短縮
62.
63.
Logがnilなら、実行されない 0.014 0.013 0.014 0.013 0.014 -------------------- Avg: 0.014
64.
Objective-Cのメソッ ド呼び出しは遅い?
65.
0.092 0.092 0.092 0.094 0.092 -------------------- Avg: 0.092 0.107 0.106 0.106 0.107 0.107 -------------------- Avg: 0.107
66.
まとめ • 3D Touch
はやくさわりたい • 書き方次第で10倍以上スピードが上がる • 規約に悩んだらスピードで決めるのって良い • 遅いのはObjective-Cのせいじゃない • なぜ速いのか速いのか? 中間コードを読めれば・・・
67.
注意!
Télécharger maintenant