狠狠撸

狠狠撸Share a Scribd company logo
iOS13 SDK による
全機能置き換え
Part.1 SwiftUI 編
自己绍介
能登 要 (@notoroid)
? iOSアプリ開発者
? 屋号:いります電算企画
? @notoroid
? @irimasu
? eスポーツ
題目
? レガシーアプリの刷新
? 厂飞颈蹿迟鲍滨を动かしてみる
? まとめ
話す範囲
? SwiftUI Tutorials
? https://developer.apple.com/tutorials/swiftui/tutorials
? Creating and Combining Views
? Building Lists and Navigation
? Handling User Input
? Composing Complex Interfaces
? Working with UI Controls
話さない範囲
? 既存UI との組み合わせ
? アニメーション
? OSごとへのSwiftUI の適用
次回以降で話す内容
? Combine framework
? KeyPath (Swift5.1)
? @dynamicMemberLookup
https://github.com/notoroid/Swift
UIBatteryMonitor
資料
レガシーアプリの刷新
iOS13 リリース
iOS13に合わせて
既存アプリを刷新中
iOS13 SDK による 全機能置き換え Part1
GloriousBattery (グロリアスバッテリー)
? バッテリーモニター(ユーティリティー)
? 最大4台(実機1+リモート3台)
? 手持ちのiPhoneからiPadなどの機器のバッ
テリー状態確認可能
? 自宅にあるiPhoneのバッテリー状態確認可
能
バージョン1は技術デモ
? 1) バッテリー情報(実機、リモート)の表示
? 2) バッテリー状態の送信
? 2) リモート先バッテリー状態の受信
? 4) 招待QRコードの生成と表示
? 5) 招待QRコードの読み取り(リモート先と接続)
? 6) 色テーマの選択
? 7) バックグラウンド動作(バッテリー情報の送受信)
? 8) バッテリーログの記録
? 9) バッテリーログに基づいた履歴の表示
? 10) バッテリー低下時の通知機能
? 11) 非消費型アプリ内課金の実装
? 12) ローカライズ機能
? Firebase(現在のFirebase
RealtimeDatabase) の技術デモ
? CoreImage(QRCode)
? InAppPurchase(非消費型アプリ内課金)
? バックグラウンド更新
? ローカライズ
バージョン2はレガシー化
部分の差し替えに挑戦
何がレガシー化したの?
? 使用言語 Objective-C
? 最新の開発手法とは縁遠くなりがち(Swift向けが多い)
? iOS13 SDKよりはるか以前の開発手法が残っていた
? バックグラウンド処理(リモート通知以外のBackGround Fetch)
? バックエンドサーバー (ParseServer)
iOS13 SDK で必要な対応
? バックグラウンド動作(バッテリー情報の送受信)
? RemoteNotification + Background Fetch
? iOS7からのBackground Fetchはリモート通知以外deprecated.
? アプリ内イメージの置き換え
? アプリ内で自作したイメージリソースをSF Symbolsに置き換え
SF Symbols
Objective-C からSwift変更に
合わせてSwiftUI を全面適用
SwiftUI 全面適用すると
開発手法の大転換になるので
技術的な棚卸しにちょうど良い
もちろん胜算もあり?
iOS13 SDK による 全機能置き換え Part1
4セルSafeAreaまで
塗りつぶし
iOS13 SDK による 全機能置き換え Part1
バッテリー量
単位
時間毎グラフ
充電状態
端末名
円グラデーション
ユーティリティーアプリだからSwiftU Iを適用できる
? メイン画面と設定画面
? 画面構成が少ない
? ビジュアルを前面に押し出したメイン画面
? 置き換えが用意そうな簡素な設定画面
? ジェスチャーに対応している
? SwiftUI でジェスチャーはサポート
挑戦した结果
バージョン1の80%実现
バージョン1機能の80%実現済
残りはアプリ内課金と、ローカライズ
厂飞颈蹿迟鲍滨を动かしてみる
https://github.com/notoroid/Swift
UIBatteryMonitor
資料
サンプル
? SwiftUIBatteryMonitor/StartingPoint が開始時点
? Step1、Step2 が中間ステップ
? SwiftUIBatteryMonitor/Complete が完成
データ連動のためのキーワード
? ObservableObject/@Published
? SwiftUI 側へ情報をPublishするための定義セット
? .environmentObject()/@EnvironmentObject
? SwiftUI全体で有効な環境オブジェクトの設定
? @State / @Binding
画面構成のキーワード
? ForEach
? VStack,HStack,ZStack
? List
まとめ
? iOS13 に合わせてレガシーなアプリを刷新中です
? iOS13 SDKで示された開発手法に合わせます
? SwiftUIは前提知識持ち開発者も初心者もだいたいドツボにハマります
? SwiftUIを使うとコンパイラが悲鳴をあげます
Ad

Recommended

最新UIフレームワーク Onsen UI2で カッコイイWordPress連携アプリを作る方法
最新UIフレームワーク Onsen UI2で カッコイイWordPress連携アプリを作る方法
アシアル株式会社
?
【别尝痴勉强会】础苍驳耻濒补谤闯厂て?のモハ?イルフロントエント?开発
【别尝痴勉强会】础苍驳耻濒补谤闯厂て?のモハ?イルフロントエント?开発
Hiroyuki Kusu
?
Voice interaction api for android m
Voice interaction api for android m
Atsuko Fukui
?
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Seunghun Lee
?
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
アシアル株式会社
?
スキスキ滨辞苍颈肠
スキスキ滨辞苍颈肠
Kon Yuichi
?
App extension for iOS
App extension for iOS
toyship
?
顿颈谤别肠迟颈惫别で実现できたこと
顿颈谤别肠迟颈惫别で実现できたこと
Kon Yuichi
?
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Kazuaki Hidaka
?
jQuery Mobile で作る" 実用" スマフォアプリ
jQuery Mobile で作る" 実用" スマフォアプリ
Takashi Okamoto
?
【ABC2014Spring LT】AngularJSでWEBアプリ開発
【ABC2014Spring LT】AngularJSでWEBアプリ開発
Hiroyuki Kusu
?
エンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb Componentsハンズオン
Mitsuru Ogawa
?
App Extensions in iOS ver JP
App Extensions in iOS ver JP
qohj
?
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
一希 大田
?
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iPride Co., Ltd.
?
Prott for iOS
Prott for iOS
Seiya Shimokawa
?
iPhoneアプリのUIデザイン - NoteCubeの場合
iPhoneアプリのUIデザイン - NoteCubeの場合
Daigo Wakabayashi
?
Azure Mobile Services と Azure Mobile Apps
Azure Mobile Services と Azure Mobile Apps
Masaki Yamamoto
?
スマートスピーカーのバックエンドで Azure を使う方法
スマートスピーカーのバックエンドで Azure を使う方法
一希 大田
?
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
?
エンタープライズ?モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ?モバイルアプリにおける ハイブリッドアプリ開発
日本颁辞谤诲辞惫补ユーザー会
?
ACI Stateful APP 作ってみた
ACI Stateful APP 作ってみた
yushimaz
?
颁辞谤诲辞惫补で础苍驳耻濒补谤闯厂アプリ开発
颁辞谤诲辞惫补で础苍驳耻濒补谤闯厂アプリ开発
アシアル株式会社
?
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
Nagamine Hiromasa
?
20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
?
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
Akira Iwaya
?
iOS 8 App Extension
iOS 8 App Extension
Takeo Nanba
?
厂飞颈蹿迟鲍滨についての所感
厂飞颈蹿迟鲍滨についての所感
RenUchiyama
?
厂苍补辫蝉丑辞迟と搁耻苍蝉肠谤颈辫迟
厂苍补辫蝉丑辞迟と搁耻苍蝉肠谤颈辫迟
harumidiv
?
颈笔丑辞苍别アフ?リ开発の歩き方?厂飞颈蹿迟编?
颈笔丑辞苍别アフ?リ开発の歩き方?厂飞颈蹿迟编?
Yusuke SAITO
?

More Related Content

What's hot (19)

ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Kazuaki Hidaka
?
jQuery Mobile で作る" 実用" スマフォアプリ
jQuery Mobile で作る" 実用" スマフォアプリ
Takashi Okamoto
?
【ABC2014Spring LT】AngularJSでWEBアプリ開発
【ABC2014Spring LT】AngularJSでWEBアプリ開発
Hiroyuki Kusu
?
エンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb Componentsハンズオン
Mitsuru Ogawa
?
App Extensions in iOS ver JP
App Extensions in iOS ver JP
qohj
?
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
一希 大田
?
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iPride Co., Ltd.
?
Prott for iOS
Prott for iOS
Seiya Shimokawa
?
iPhoneアプリのUIデザイン - NoteCubeの場合
iPhoneアプリのUIデザイン - NoteCubeの場合
Daigo Wakabayashi
?
Azure Mobile Services と Azure Mobile Apps
Azure Mobile Services と Azure Mobile Apps
Masaki Yamamoto
?
スマートスピーカーのバックエンドで Azure を使う方法
スマートスピーカーのバックエンドで Azure を使う方法
一希 大田
?
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
?
エンタープライズ?モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ?モバイルアプリにおける ハイブリッドアプリ開発
日本颁辞谤诲辞惫补ユーザー会
?
ACI Stateful APP 作ってみた
ACI Stateful APP 作ってみた
yushimaz
?
颁辞谤诲辞惫补で础苍驳耻濒补谤闯厂アプリ开発
颁辞谤诲辞惫补で础苍驳耻濒补谤闯厂アプリ开発
アシアル株式会社
?
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
Nagamine Hiromasa
?
20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
?
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
Akira Iwaya
?
iOS 8 App Extension
iOS 8 App Extension
Takeo Nanba
?
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
ネイティブとHTML5を スマートに連携させる設計と 実装のノウハウについて
Kazuaki Hidaka
?
jQuery Mobile で作る" 実用" スマフォアプリ
jQuery Mobile で作る" 実用" スマフォアプリ
Takashi Okamoto
?
【ABC2014Spring LT】AngularJSでWEBアプリ開発
【ABC2014Spring LT】AngularJSでWEBアプリ開発
Hiroyuki Kusu
?
エンタープライヤーのためのWeb Componentsハンズオン
エンタープライヤーのためのWeb Componentsハンズオン
Mitsuru Ogawa
?
App Extensions in iOS ver JP
App Extensions in iOS ver JP
qohj
?
Visual studio 2019 updates pickup!
Visual studio 2019 updates pickup!
一希 大田
?
Hello, React!! まで導く Reactの基礎
Hello, React!! まで導く Reactの基礎
iPride Co., Ltd.
?
iPhoneアプリのUIデザイン - NoteCubeの場合
iPhoneアプリのUIデザイン - NoteCubeの場合
Daigo Wakabayashi
?
Azure Mobile Services と Azure Mobile Apps
Azure Mobile Services と Azure Mobile Apps
Masaki Yamamoto
?
スマートスピーカーのバックエンドで Azure を使う方法
スマートスピーカーのバックエンドで Azure を使う方法
一希 大田
?
smartFXにおけるApache Cordovaの活用について
smartFXにおけるApache Cordovaの活用について
剛志 森田
?
エンタープライズ?モバイルアプリにおける ハイブリッドアプリ開発
エンタープライズ?モバイルアプリにおける ハイブリッドアプリ開発
日本颁辞谤诲辞惫补ユーザー会
?
ACI Stateful APP 作ってみた
ACI Stateful APP 作ってみた
yushimaz
?
颁辞谤诲辞惫补で础苍驳耻濒补谤闯厂アプリ开発
颁辞谤诲辞惫补で础苍驳耻濒补谤闯厂アプリ开発
アシアル株式会社
?
はじめてのiOSアプリ開発 ①
はじめてのiOSアプリ開発 ①
Nagamine Hiromasa
?
20120316 designerworkshoppublished
20120316 designerworkshoppublished
Yoichiro Sakurai
?
Potatotips3 hoshi gaki_akira_iwaya
Potatotips3 hoshi gaki_akira_iwaya
Akira Iwaya
?
iOS 8 App Extension
iOS 8 App Extension
Takeo Nanba
?

Similar to iOS13 SDK による 全機能置き換え Part1 (7)

厂飞颈蹿迟鲍滨についての所感
厂飞颈蹿迟鲍滨についての所感
RenUchiyama
?
厂苍补辫蝉丑辞迟と搁耻苍蝉肠谤颈辫迟
厂苍补辫蝉丑辞迟と搁耻苍蝉肠谤颈辫迟
harumidiv
?
颈笔丑辞苍别アフ?リ开発の歩き方?厂飞颈蹿迟编?
颈笔丑辞苍别アフ?リ开発の歩き方?厂飞颈蹿迟编?
Yusuke SAITO
?
厂飞颈蹿迟と搁别补肠迟狈补迟颈惫别で似たような鲍滨を作った际の记録
厂飞颈蹿迟と搁别补肠迟狈补迟颈惫别で似たような鲍滨を作った际の记録
Fumiya Sakai
?
iOS 8/Swift 概要 #ios8yahoo
iOS 8/Swift 概要 #ios8yahoo
Hiramatsu Ryosuke
?
IBDesignable / IBInspectable で UIプロトタイピンガブル
IBDesignable / IBInspectable で UIプロトタイピンガブル
Masaki Oshikawa
?
厂飞颈蹿迟鲍滨についての所感
厂飞颈蹿迟鲍滨についての所感
RenUchiyama
?
厂苍补辫蝉丑辞迟と搁耻苍蝉肠谤颈辫迟
厂苍补辫蝉丑辞迟と搁耻苍蝉肠谤颈辫迟
harumidiv
?
颈笔丑辞苍别アフ?リ开発の歩き方?厂飞颈蹿迟编?
颈笔丑辞苍别アフ?リ开発の歩き方?厂飞颈蹿迟编?
Yusuke SAITO
?
厂飞颈蹿迟と搁别补肠迟狈补迟颈惫别で似たような鲍滨を作った际の记録
厂飞颈蹿迟と搁别补肠迟狈补迟颈惫别で似たような鲍滨を作った际の记録
Fumiya Sakai
?
IBDesignable / IBInspectable で UIプロトタイピンガブル
IBDesignable / IBInspectable で UIプロトタイピンガブル
Masaki Oshikawa
?
Ad

More from Kaname Noto (6)

厂飞颈蹿迟鲍滨のライブコーディングすると虫肠辞诲别が?回落ちる
厂飞颈蹿迟鲍滨のライブコーディングすると虫肠辞诲别が?回落ちる
Kaname Noto
?
Photos vs Assets Library - いまさら始めるPhotos.framework
Photos vs Assets Library - いまさら始めるPhotos.framework
Kaname Noto
?
Firebase 概要
Firebase 概要
Kaname Noto
?
明日のためのBaaS - BaaS for tomorrow
明日のためのBaaS - BaaS for tomorrow
Kaname Noto
?
iOS グラフィックス Tips
iOS グラフィックス Tips
Kaname Noto
?
Core Data バッドプラクティス
Core Data バッドプラクティス
Kaname Noto
?
厂飞颈蹿迟鲍滨のライブコーディングすると虫肠辞诲别が?回落ちる
厂飞颈蹿迟鲍滨のライブコーディングすると虫肠辞诲别が?回落ちる
Kaname Noto
?
Photos vs Assets Library - いまさら始めるPhotos.framework
Photos vs Assets Library - いまさら始めるPhotos.framework
Kaname Noto
?
明日のためのBaaS - BaaS for tomorrow
明日のためのBaaS - BaaS for tomorrow
Kaname Noto
?
iOS グラフィックス Tips
iOS グラフィックス Tips
Kaname Noto
?
Core Data バッドプラクティス
Core Data バッドプラクティス
Kaname Noto
?
Ad

iOS13 SDK による 全機能置き換え Part1