狠狠撸

狠狠撸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を使うとコンパイラが悲鳴をあげます

More Related Content

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