SwiftUIで STORES 予約 をフルリニューアルした話
by
yoshikei
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
ɹɹ ©︎ hey, Inc SwiftUI で STORES 予約 を フルリニューアルした話 ヘイ株式会社 テクノロジー部門 モバイルアプリケーション本部 予約グループ モバイルエンジニア 吉田 圭佑 | @y0shikei
Slide 2
Slide 2 text
自己紹介 1 ɹɹ 吉田 圭佑 | @y0shikei Keisuke Yoshida ヘイ株式会社 (2021.08 ~) STORES 予約 モバイルエンジニア
Slide 3
Slide 3 text
ɹɹ 1. STORES 予約 とは? 2. リニューアルアプリについて 3. SwiftUIを利用してみて Agenda 2
Slide 4
Slide 4 text
STORES 予約 とは? 1 ❶ サービス概要 ❷ アプリについて 3
Slide 5
Slide 5 text
1. STORES 予約とは? ❶ サービス概要 4
Slide 6
Slide 6 text
5 ɹɹ 予約の「めんどう」を 解決する ガイドに沿って設定するだけで、 あっという間に専用の予約サイトを作成。 1. STORES 予約とは? ❶ サービス概要
Slide 7
Slide 7 text
6 ɹɹ フリーミアム SaaS としての月額利用料 予約決済手数料 (オンライン決済導入時) オーナーさま向け 予約者さま向け 1. STORES 予約とは? ❶ サービス概要
Slide 8
Slide 8 text
❷ アプリについて 1. STORES 予約とは? 7
Slide 9
Slide 9 text
8 ɹɹ それぞれ iOS / Android のアプリが存在 (計4つ) 1. STORES 予約とは? ❷ アプリについて オーナーさま向け 予約者さま向け
Slide 10
Slide 10 text
9 ɹɹ オーナーさま向けのiOSアプリをリニューアル🎉 1. STORES 予約とは? ❷ アプリについて
Slide 11
Slide 11 text
リニューアルアプリについて 2 ❶ SwiftUIを採用した経緯 ❷ 技術スタック 10
Slide 12
Slide 12 text
❶ SwiftUIを採用した経緯 2. リニューアルアプリについて 11
Slide 13
Slide 13 text
❶ SwiftUIを採用した経緯 12 2. リニューアルアプリについて ɹɹ 🛠 リソースが限られた中での開発 モバイルエンジニアが自分1人のみ → 宣言的UIフレームワークを使い開発スピードを上げたい Flutterという選択肢 → 他サービスのアプリとの今後の親和性を考えて不採用 🧑💻
Slide 14
Slide 14 text
❶ SwiftUIを採用した経緯 13 2. リニューアルアプリについて ɹɹ 🎬 新しい技術にトライできるタイミング 📝 OSの普及率 → サポートバージョンがiOS14~でよかった アプリの要件 → 比較的シンプルな構造で特殊な機能が必要なかった フルスクラッチ → デザインから作り直すのでUI周りの制約がなかった 📱 🐣
Slide 15
Slide 15 text
❷ 技術スタック 2. リニューアルアプリについて 14
Slide 16
Slide 16 text
❷ 技術スタック 15 2. リニューアルアプリについて ɹɹ アーキテクチャ:MVVM → アプリ規模も大きくないのでシンプルに フレームワーク:SwiftUI + Combine → 前述した通り APIクライアント:REST API → 既存のAPIを活用するため パッケージ管理:Swift Package Manager → Firebaseの対応もありSwiftPMのみで完結 🏛 ⚙ 📦
Slide 17
Slide 17 text
SwiftUIを利用してみて 3 ❶ 強みと弱み ❷ 具体的な事例 16
Slide 18
Slide 18 text
❶ 強みと弱み 3. SwiftUIを利用してみて 17
Slide 19
Slide 19 text
❶ 強みと弱み 18 3. SwiftUIを利用してみて ɹɹ SwiftUIの強み コンポーネント単位でUIを使いまわしできる → レイアウトが似ている画面を素早く作れる コードの記述がシンプル → 宣言的にレイアウトを組めるためUIKitよりコード量が減る UIの変更に強くレビューしやすい → コンポーネントの集合なので変更しやすい&読みやすい ♻ 👍 🎨
Slide 20
Slide 20 text
❶ 強みと弱み 19 3. SwiftUIを利用してみて ɹɹ OS間で実装を分けないといけないことがある → iOS14/15両方で動作を担保するのが大変&めんどう ベストプラクティスが少ない&挙動が安定していない → 色々と手探りで実装していく必要がある(気合い) UIKitでできたことがすべてできるわけではない → まだUIKitに頼らざるを得ないときがある 📚 🤷 ⚠ SwiftUIの弱み
Slide 21
Slide 21 text
❷ 具体的な事例 3. SwiftUIを利用してみて 20
Slide 22
Slide 22 text
❷ 具体的な事例 21 3. SwiftUIを利用してみて ɹɹ ⭕ 構造が似ているUIの流用 ReservationTabView ScheduleTabView ReservationTileView ScheduleTileView ReservationView ScheduleView コードベースなので ・流用が容易 ・変更コストが低い 開発効率UP
Slide 23
Slide 23 text
❷ 具体的な事例 22 3. SwiftUIを利用してみて ɹɹ ⭕ List (TableView) をシンプルなコードで実現 UIKit SwiftUI サンプルコード サンプルコード SwiftUIの方が コード量が少ない 開発効率UP
Slide 24
Slide 24 text
❷ 具体的な事例 23 3. SwiftUIを利用してみて ɹɹ ❌ Listのseparatorを消す サンプルコード iOS15 iOS14 iOS13 ただListのseparatorを 消したいだけなのに… それぞれのOSごとに 分岐させる必要がある ※iOS14に関しては 半ば無理やり消している...汗
Slide 25
Slide 25 text
❷ 具体的な事例 24 3. SwiftUIを利用してみて ɹɹ ❌ 複雑な動きをSwiftUIのみで実現しにくい UIKitの部分 サンプルコード PullToRefresh →下スワイプで予約情報の更新 SwipeReader →左右スワイプでセグメント切替 ActivityIndicator →予約情報の読み込みをお知らせ
Slide 26
Slide 26 text
25 ɹɹ まとめ https://hello.hey.jp/engineer 採用情報 STORES 予約 を SwiftUIでリニューアルしてみて... 当初の狙い通り開発スピードを担保できた → 約3ヶ月でリニューアル&リリースできた! コードがシンプルになる → UIの流用や変更に強く、読みやすいためレビューしやすい かゆいところに手が届いていない → OSごとの対応やUIKitの併用がまだ必要 🚀 ☀ ☔
Slide 27
Slide 27 text
No content