Suche senden
Hochladen
iOS9/iPadとマルチタスキング
•
2 gefällt mir
•
2,637 views
Akinori Adachi
Folgen
iPadアプリの開発の話や、マルチタスキング対応や、工夫した点、苦労した点などの話です。
Weniger lesen
Mehr lesen
Ingenieurwesen
Melden
Teilen
Melden
Teilen
1 von 32
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
Tomoki Hasegawa
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
Nagamine Hiromasa
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
大阪発Map guideを用いたスマホアプリ連携実装
大阪発Map guideを用いたスマホアプリ連携実装
Osamu Inoue
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
Fumiya Sakai
DeepLのAPIを使って翻訳サイトを作ってみた話 -Bubble.io開発事例-
DeepLのAPIを使って翻訳サイトを作ってみた話 -Bubble.io開発事例-
shunohmichi1
Pixate導入についてのあれこれ
Pixate導入についてのあれこれ
Kazuyuki Oikawa
Xcode 7で始めるCI
Xcode 7で始めるCI
yuki0211s
Empfohlen
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
オプショナル型。〜なんとなく付ける ! ? 撲滅〜 改訂版
Tomoki Hasegawa
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
Nagamine Hiromasa
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
大阪発Map guideを用いたスマホアプリ連携実装
大阪発Map guideを用いたスマホアプリ連携実装
Osamu Inoue
SwiftとReactNativeで似たようなUIを作った際の記録
SwiftとReactNativeで似たようなUIを作った際の記録
Fumiya Sakai
DeepLのAPIを使って翻訳サイトを作ってみた話 -Bubble.io開発事例-
DeepLのAPIを使って翻訳サイトを作ってみた話 -Bubble.io開発事例-
shunohmichi1
Pixate導入についてのあれこれ
Pixate導入についてのあれこれ
Kazuyuki Oikawa
Xcode 7で始めるCI
Xcode 7で始めるCI
yuki0211s
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
Ichiro Yamamoto
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
徹 上野山
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
tak9029
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
Server Side Swift with Swag
Server Side Swift with Swag
Jens Ravens
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
Kosuke Ogawa
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
Xcode tips
Xcode tips
Motoki Narita
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
Syo Ikeda
奥行きを意識したプロダクト-iOS9で変わる体験-
奥行きを意識したプロダクト-iOS9で変わる体験-
正典 三橋
shinobu.apk #1
shinobu.apk #1
Shinobu Okano
Beyond JSON with FlatBuffers
Beyond JSON with FlatBuffers
Maxim Zaks
Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9
Tomohiro Kumagai
Swift2.x を Scala からみる
Swift2.x を Scala からみる
Yuichi Adachi
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
Tomohiro Kumagai
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
Toshiyuki Hirata
Tensor flow唐揚サーバーロボット rev1
Tensor flow唐揚サーバーロボット rev1
Yuki Nakagawa
賢くなる自動フィードアグリゲータの制作 9月号
賢くなる自動フィードアグリゲータの制作 9月号
Akio Kondo
iOS 9 Bootcamp #6 UIKit
iOS 9 Bootcamp #6 UIKit
Shingo Hiraya
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流
Rakuten Group, Inc.
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
Weitere ähnliche Inhalte
Andere mochten auch
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
Ichiro Yamamoto
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
徹 上野山
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
tak9029
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
Server Side Swift with Swag
Server Side Swift with Swag
Jens Ravens
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
Kosuke Ogawa
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
Xcode tips
Xcode tips
Motoki Narita
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
Syo Ikeda
奥行きを意識したプロダクト-iOS9で変わる体験-
奥行きを意識したプロダクト-iOS9で変わる体験-
正典 三橋
shinobu.apk #1
shinobu.apk #1
Shinobu Okano
Beyond JSON with FlatBuffers
Beyond JSON with FlatBuffers
Maxim Zaks
Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9
Tomohiro Kumagai
Swift2.x を Scala からみる
Swift2.x を Scala からみる
Yuichi Adachi
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
Tomohiro Kumagai
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
Toshiyuki Hirata
Tensor flow唐揚サーバーロボット rev1
Tensor flow唐揚サーバーロボット rev1
Yuki Nakagawa
賢くなる自動フィードアグリゲータの制作 9月号
賢くなる自動フィードアグリゲータの制作 9月号
Akio Kondo
iOS 9 Bootcamp #6 UIKit
iOS 9 Bootcamp #6 UIKit
Shingo Hiraya
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
Andere mochten auch
(20)
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
iOS 9 Overview - iOS 9 Bootcamp in Tokyo - 20150930
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlow を使った機械学習ことはじめ (GDG京都 機械学習勉強会)
TensorFlowで会話AIを作ってみた。
TensorFlowで会話AIを作ってみた。
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Server Side Swift with Swag
Server Side Swift with Swag
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
自作アプリを watchOS 2 対応した話 〜FastCheckin編〜
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Xcode tips
Xcode tips
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
奥行きを意識したプロダクト-iOS9で変わる体験-
奥行きを意識したプロダクト-iOS9で変わる体験-
shinobu.apk #1
shinobu.apk #1
Beyond JSON with FlatBuffers
Beyond JSON with FlatBuffers
Xcode 7 の新しいところ #cm_ios9
Xcode 7 の新しいところ #cm_ios9
Swift2.x を Scala からみる
Swift2.x を Scala からみる
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
コードを書きやすくしてくれる Xcode の基本機能 #NSStudy #devsap
iOSアプリの自動テストをはじめよう
iOSアプリの自動テストをはじめよう
Tensor flow唐揚サーバーロボット rev1
Tensor flow唐揚サーバーロボット rev1
賢くなる自動フィードアグリゲータの制作 9月号
賢くなる自動フィードアグリゲータの制作 9月号
iOS 9 Bootcamp #6 UIKit
iOS 9 Bootcamp #6 UIKit
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Ähnlich wie iOS9/iPadとマルチタスキング
iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流
Rakuten Group, Inc.
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
BlackJack
BlackJack
yanoojapan
Androidレイアウトのスタンダードアプローチ
Androidレイアウトのスタンダードアプローチ
Takao Sumitomo
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Takuya Ueda
Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。
Eiichi Tsuru
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
Yoshito Tabuchi
Android Develop presentation on 19 Sep 2012.
Android Develop presentation on 19 Sep 2012.
Kazuaki Ueda
Metroアプリの作り方 (COD2012)
Metroアプリの作り方 (COD2012)
Yasuhiko Yamamoto
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
decode2016
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
mokelab
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Kazuaki Hidaka
Cocos2d-x によるスマートフォンアプリ開発のこれまでとこれから
Cocos2d-x によるスマートフォンアプリ開発のこれまでとこれから
Akihiro Matsuura
HOME'Sアプリ Swift化
HOME'Sアプリ Swift化
LIFULL Co., Ltd.
Xcode で gulp を使うお話
Xcode で gulp を使うお話
Yoichiro Sakurai
iOS Traning #0
iOS Traning #0
yuichi takeda
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
Yugo Yamamoto
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Seunghun Lee
Xcode and iTC submission topics
Xcode and iTC submission topics
Syo Ikeda
Cocos2d platforms
Cocos2d platforms
Keisuke Hata
Ähnlich wie iOS9/iPadとマルチタスキング
(20)
iPhoneとAndroidのアプリ開発最新潮流
iPhoneとAndroidのアプリ開発最新潮流
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
BlackJack
BlackJack
Androidレイアウトのスタンダードアプローチ
Androidレイアウトのスタンダードアプローチ
Go mobileでモバイルアプリを作ろう
Go mobileでモバイルアプリを作ろう
Google mapとgps機能を使ってみた。
Google mapとgps機能を使ってみた。
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
Android Develop presentation on 19 Sep 2012.
Android Develop presentation on 19 Sep 2012.
Metroアプリの作り方 (COD2012)
Metroアプリの作り方 (COD2012)
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
DEV-022_これから始める Xamarin ~環境構築から iOS/Android/UWP アプリのビルドまで~
Android Studio 2.2の紹介@Google I/O 2016東京報告会
Android Studio 2.2の紹介@Google I/O 2016東京報告会
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Cocos2d-x によるスマートフォンアプリ開発のこれまでとこれから
Cocos2d-x によるスマートフォンアプリ開発のこれまでとこれから
HOME'Sアプリ Swift化
HOME'Sアプリ Swift化
Xcode で gulp を使うお話
Xcode で gulp を使うお話
iOS Traning #0
iOS Traning #0
スマートフォンの方式検討に関する基礎知識
スマートフォンの方式検討に関する基礎知識
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Xcode and iTC submission topics
Xcode and iTC submission topics
Cocos2d platforms
Cocos2d platforms
iOS9/iPadとマルチタスキング
1.
マルチタスキングを考慮した iPadアプリ開発 NOV/18,2015 安達 彰典
2.
3.
4.
自己紹介 : 安達彰典@adachi_c •
趣味 ・作ってるゲーム(C++) ・qMapEditor(objc) (マップ・エディタ) ・qMapBuilder(Go) (自動地形生成)
5.
スライドの目的 • iOS9対応iPadアプリを作るにあたって苦労した 点、工夫すると良さそうな点を共有
6.
目次 1.AppCode 2.開発フロー 3.Carthage 4.iPad開発の特徴 5.ワイヤーフレーム 6.その他考慮ポイント 7.モデル/ビューの完全な分離 8.描画関連デリゲート順番 9.Swiftについて 10.まとめ
7.
iOS9とAppCode • 使いたい • 11月3日までAppCode3.2だった •
Xcode7に対応していない • JetBrainsに金払いながらもXcodeを使ってる期間
8.
iPadアプリ開発/最初の分岐 • iOS7に対応するのか? • マルチタスキングに関係ないが苦難の道 •
主にSwiftライブラリ/8以上対応が多い • ユニバーサルバイナリか? • マルチタスキングに関係ないが苦難の道
9.
iPadアプリ開発の特徴 • Split view •
iOS9の新機能 • Compact(SizeClass)とRegular(SizeClass)の2パターンの画面設 計が必要 • 回転 • LandscapeとPortraitも、traitCollectionから引っ張ってこれる が、iOS7以前ではtraitCollectionがない • 結局書き分ける
10.
ワイヤーフレーム • QAしやすいように作ることが全て • 作り手も使い手も理解しやすいものを作る •
状態遷移を明確化し、アプリ全体のルールとする • 状態/イベント/アクション
11.
12.
その他考慮ポイント1 • 開発メンバーが2人以上ならこの辺を統一しておく と良いかもしれない
13.
その他考慮ポイント • あとからのgrepを考慮 • 具象に対する呼び方、用語の統一 •
クロージャかデリゲートか • 迷ったらデリゲート • 大事なやつはアクセサを作る
14.
その他考慮ポイント • assert • スキあらばあらゆる箇所に入れる •
状態数 • とにかく状態を減らす • クロージャ • ヒープ渡しでなく、スタック渡しするようにする • デリゲートのほうが一本の線で表せてオブジェクト指向崩さない
15.
その他考慮ポイント • シングルトン • 実質的なグローバル変数、追加時は厳格に協議 •
オブジェクト指向を壊す
16.
その他考慮ポイント • NSNotification • 逃げの設計 •
オブジェクト指向を壊す • メモリリーク+postNotificationで死はよくある話
17.
その他考慮ポイント • 値渡しか参照渡しか • 値渡しを使う •
モデルはstructでいいかな感 • パフォーマンスが落ちるところだけ参照渡しに
18.
モデル/ビューの完全な分離 • あちこちからビューの更新、モデルの更新というこ とを避けたい
19.
モデル/ビューの完全な分離 • メインループを意識する • 1.ユーザアクション以外のイベント->モデル操作 •
2.ユーザアクション->モデル操作 • 3.モデル操作された分のビュー操作 • 1ループで • モデル操作フェーズ • ビュー操作フェーズ • をわかりやすくする。
20.
モデル/ビューの完全な分離 • ビューとモデルの不整合をなくすとは • すなわち、状態の把握、同期 •
レンダリング時にいつ何が呼ばれるかを整理 • その中でsplit時、rotate時の呼びだされ順を知る
21.
描画関連デリゲート順 • 前提 • storyboardで基本の骨組みを作る •
個々のビューはxibをロードする • 状態が多いので、なるべくコード量を減らしたい • 状態の数が多いほど不整合発生する
22.
描画関連デリゲート順 • ビューの操作 • updateViewConstraints, •
updateConstraints • layoutSubview • からの操作に限定 • アニメーションなどもlayoutConstraintsのみ使う
23.
描画関連デリゲート順 • 注意ポイント • User
Interaction/rotate/splitがどこに入るか? • アニメーションをどうやるのか? • タップハンドラなどから実行 • extensionしまくるのも手 • ヘルパを用意、これもgrepしやすいと良い
24.
描画関連デリゲート順 • 何を使っていくか • StoryBoard,
Xibに定義していればコードを記述しな くても良い • 記述する場面(いずれもレアケース) • xibをロードしないviewの生成、貼り付け、剥がし • 回転やsplitしたあとで、状態がかわるとき
25.
描画関連デリゲート順 • UIViewController • 1.viewWillLayoutSubviews(ビューが再レイアウトされるときに呼ば れる) •
使わない • 2.viewDidLayoutSubviews • 使わない • 3.updateViewConstraints(Constraintsが変更されるときに呼ばれる) • 使わない
26.
描画関連デリゲート順 • UIView • 1.layoutSubviews(NeedsLayoutが有効時) •
使う • やること • removeFromSuperview • addSubview • addConstraints • 2.updateConstraints(NeedsUpdatedConstraintsが有効時) • 使わない
27.
描画関連デリゲート順 • 回転 • iOS7 •
1.willRotateToInterfaceOrientation • 2.didRotateFromInterfaceOrientation • 使う • やること: • C/Rの状態変更後のビュー調整
28.
描画関連デリゲート順 • 回転 • iOS8,9 •
viewWillTransitionToSize • traitCollectionWillChange • traitCollectionDidChange • 使う • やること: • C/Rの状態変更後のビュー調整
29.
描画関連デリゲート順 • Split View •
0.デバイダーをつまんだ • 1.applicationWillResignActive • 2.デバイダーを動かす • 3.各境界に達したときにlayoutSubviewが呼ばれる • 4.デバイダーを離す • 5.SizeClassが変わっていればdidChangeTraitCollectionが呼ばれる • didChangeTraitCollectionで状態変化調整しておけば基本的になにもしなくて良い
30.
結果こうなる • TopViewController一強時代 • デリゲート経由での通知を使う •
Notificationやシングルトンをやめる • よく使うところはオンメモリ(記事/リストのビューはキャッシュ) • アニメーションはヘルパ • コード的にはextensionを作りまくる • Split View「そのもの」については対応しなくて良い
31.
Swiftも使った所感 • enum無双 • varが定義でき、それぞれのcaseに機能もてる •
エンドポイントのURLかえすやつとか • extention無双 • 可読性アップのためにとにかく分ける • ジェネリクス • 共通処理をまとめられる • APIアクセスのコードなどで使ってます • CommonRequestやCommonResponseを継承したものをFetcher<Res>などとしてわたして、クラス 毎のパースが動作
32.
まとめ • マルチタスキングとか使いたい、iOS9/Swift開発したいときは deployment target
iOS8以上がオススメ • とにかく状態が多いのでQAしやすいように状態を整理するの がオススメ • コードでビューを制御しようとするといっぱいかかないとダ メなのでxibやstoryboardに書くのがオススメ • Swift使いたい人は、とにかくenumを伸ばしていくのオススメ
Jetzt herunterladen