Slide 1

Slide 1 text

STORES 株式会社 2022/10/20 デザインシステムを利用したSwiftUIによ るアプリ開発事情

Slide 2

Slide 2 text

2 @neko 2022.03〜 STORES株式会社 STORES 予約 モバイルアプリエンジニア

Slide 3

Slide 3 text

3 現在の状況 ● モバイルアプリエンジニア3名 ○ チームにはその他、BEエンジニア、デザイナー、PdMが各1名ずつ ● モバイルアプリエンジニア3名 ○ 店舗のオーナーさん向けiOS/Androidアプリ ○ 予約するユーザーさん向けiOS/Androidアプリ ● リニューアルに伴い、利用技術を見直し ○ iOS:Swift / SwiftUI ○ Android:Kotlin / Jetpack Compose

Slide 4

Slide 4 text

4 デザインシステム導入の背景 1 ● 宣言的UIとデザインシステムとの相性が良い ○ 宣言的UIではコードのネストが深くなりがちだが、ネストが深くなりす ぎると、可読性が落ちていく ○ 上記を避けるため、ビューの構成要素を分割していくが、どの単位で分 割するのか、エンジニア間で合意が必要 ○ デザイナー組織を中心に全社的なデザインシステム導入の動きがあり、 実装側もそれにあわせることがスムーズと考えた

Slide 5

Slide 5 text

5 デザインシステム導入の背景 2 ● デザイン <-> 開発コストの抑制 ○ デザイナー側に、プラットフォームごとのコンポーネント表現の差、OS バージョンごとの仕様の差などを逐一把握してもらうことが難しい ○ デザインシステムを双方で導入することにより、それが共通言語として の役割を果たしてくれる期待 ○ それにより、お互いの認識齟齬を防ぎ、運用の蓄積によってデザイン・ 開発コストが抑制されていくのではないか

Slide 6

Slide 6 text

6 実装の進め方 ● Foundation ○ Color、Typographyなどを定義 ● Component、Pattern ○ Button、TextField、SegmentedControl、Dialog、TabViewなどを実装 ● ライブラリとして開発 ○ 各プロダクトにインポートして利用することを想定し、独立したライブ ラリとして開発

Slide 7

Slide 7 text

Color定義 サンプルコード 7 ※コードは公開用に編集してあり、実際のコードとは異なります

Slide 8

Slide 8 text

Typography定義 サンプルコード 8 ※コードは公開用に編集してあり、実際のコードとは異なります

Slide 9

Slide 9 text

Button定義 サンプルコード 9 ※コードは公開用に編集してあり、実際のコードとは異なります

Slide 10

Slide 10 text

10 チーム内での共有 ● 実装したライブラリの内容を一覧できるアプリ ○ ライブラリの内容が確認できるカタログアプリを開発 ● デザイナーやPdMが実際の端末で確認できる ○ 実際の端末での見え方や操作感を体験してもらえる ● iOS/Androidそれぞれのアプリを実装 ○ プラットフォームやバージョンごとの差異が分かる

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

12 ここまでの課題 ● バリエーションの実装方針が難しい ○ 似ているが少し違うパターンをどのように実装するか ○ 引数によって分岐させるか、別々のコンポーネントにするか ● 想定外のパターンへの対応が難しい ○ 実際の画面要件として想定外のパターンが出てきた場合、都度対応が必 要になってくる ○ 事前にある程度、方向性を決めておくことが必要

Slide 13

Slide 13 text

13 開発スピードは向上 ● 実際の画面を実装する際、事前に準備してあるコンポーネントを呼び出すだ けなのがかなり楽 ● デザイナーとのコミュニケーションがスムーズになり、お互いのコスト削減 に役立っている実感がある

Slide 14

Slide 14 text

14 ありがとうございました