寄付窓口はこちら

モバイルのデザインシステムを構築する | try! Swift Tokyo 2019 2-7

モバイルデザインシステムをゼロから構築する方法を学びます。デザインシステムとは何か、チームにどう役立つのか、開発のスピードアップにどのように役立つか、そして成功するためにはじめにフォーカスすべき3〜5つのことを学びます。

f:id:niwatako:20190322122256j:plain

ちょっと声がかれていますが昨夜カラオケで楽しみすぎました。

ようこそモバイルデザインシステムの話へ。

実は財務のマネジメントアプリを作っています

f:id:niwatako:20190322122502j:plain

今日そこで得た知見を共有したいと思います。

デザインシステムって?

f:id:niwatako:20190322122533j:plain

新しい分野だと思います。同アプリケーションを構築するのかという代替的な思考方法を提供する

大規模でのデザイン管理が可能になる

f:id:niwatako:20190322122602j:plain

レゴブロックを組み合わせて全く違うものを作れる

f:id:niwatako:20190322122621j:plain

f:id:niwatako:20190322122625j:plain

ソフトウェアもおなじ

f:id:niwatako:20190322122630j:plain

全く違うViewを作れる

f:id:niwatako:20190322122702j:plain

f:id:niwatako:20190322122705j:plain

組み合わせてアプリになる

f:id:niwatako:20190322122711j:plain

素晴らしいブログがあります。

f:id:niwatako:20190322122724j:plain

atomic WebDesign

個々のピースを組み合わせて大きなものを作ることが出来る。誰にメリットが有るの?

デザイナー向け?

f:id:niwatako:20190322122756j:plain

エンジニアやエンドユーザーもメリットが有る。

デザイナーにとって

時間を削減できる。一貫したアプリケーションを作れる。同じパラダイムを取ることで。

エンジニアにとって、かなり時間を構築するところで短縮できる。エンドユーザーに対して、もっと短時間で機能を提供できる。コードの再利用も進められる。アクセシビリティコンポーネントを組み込みめる

自分たちがさらに追加的なところで入れ忘れている機能がないか心配する必要がない

ユーザーには皆さんのブランドを見つけやすく成るし常に同じふるまいでいろいろなものが見つけやすく成る

f:id:niwatako:20190322122934j:plain

f:id:niwatako:20190322122940j:plain

誰どういうとき

f:id:niwatako:20190322122945j:plain

にべんりなのか

AirBnBを例に。

コレクションビューの中で複数のカードを再利用している

Lyft

f:id:niwatako:20190322123012j:plain

Cellを反復して使っている再利用できるViewの候補者

f:id:niwatako:20190322123040j:plain

f:id:niwatako:20190322123043j:plain

どこから始めるのか。個人、チーム、企業によって違い、どうやって始めるかは異なる。

会社のブランドをまずベースに考えるべき。

どうできるか、リソースがたくさんある。

デザインインフラチームがないときにおすすめ

f:id:niwatako:20190322123122j:plain

こちらのガイドはモバイルデザインシステムの実装、哲学の後にどう進めるかに向いています。

f:id:niwatako:20190322123155j:plain

f:id:niwatako:20190322123158j:plain

細かい部分から全体を作る

フォントとカラーが原子

f:id:niwatako:20190322123213j:plain

コードベースの中で確立されていると思います。

f:id:niwatako:20190322123237j:plain

コードベースの中にどう作り込むか

f:id:niwatako:20190322123256j:plain

enumですべてのケースを表す。

f:id:niwatako:20190322123313j:plain

f:id:niwatako:20190322123333j:plain

enumを作れるし、アセットに定義することもできる。

f:id:niwatako:20190322123346j:plain

コントロールについて。

カスタムスタイル、StandardSwitchはこう

f:id:niwatako:20190322123443j:plain

アプリの配色に合わせて少し暗くしている

f:id:niwatako:20190322123503j:plain

Lyftは形状もカラーも変えている

f:id:niwatako:20190322123517j:plain

CustomUIComponent

再利用可能なViewを作るだけでなく、APIデザインも関わる。

どんなエンジニアでも使うことができるだけでなく、皆様のデザインシステムに馴染みのない人にも読みやすくする

f:id:niwatako:20190322123610j:plain

スタイルをいろいろみてどれを適用するかわかりやすくしなくてはいけない

このように保存スタイルを決めます。

削除もコンセプトは同じ

f:id:niwatako:20190322123634j:plain

小さな部分を揃えたところで組み合わせてより大きな再利用可能なViewを作る

AirBnB

f:id:niwatako:20190322123701j:plain

彼らのリストとフォトを表示するために使う

多くのコンポーネントはImageを表示することを求められる

金融系なので入力が必要。

f:id:niwatako:20190322123730j:plain

いろいろな状態のテキストフィールドが必要。相当AirBnBと異なる。目的が違えば。

それぞれの企業に特化したものでなければならない。

f:id:niwatako:20190322123809j:plain

洒落たものでなくて良い、個別のViewを組み合わせいつもどおり使えばいい。

個々で指摘したいのは、我々の業界で、別の会社は、更に進んで取り組んでいます。

OSS Epoxy、AirBNBがやっている、Android用。複雑な画面を構築するのに利用しています

f:id:niwatako:20190322123843j:plain

ヘッダーに3つのことを定義する。識別子、タイトル、説明。 写真を追加するのは簡単。識別子とURLをつけている。最終的にすべての雛形をフレームワークの後ろに隠蔽し、開発スピードを加速できる。

プレゼンテーションとビジネスロジックを切り分けている

f:id:niwatako:20190322123954j:plain

f:id:niwatako:20190322124010j:plain

どうやってみんなとすり合わせる?

f:id:niwatako:20190322124021j:plain

エンジニアと、デザイナー。

エンジニアは人数企業の大きさに応じて会議を設定し説明することも考えられる。しかし新しい人間がチームに入ったら?また細かい点を覚えられないほど複雑なら?

最も優秀なドキュメントはどういうときに使うか、細かく記述する

f:id:niwatako:20190322124106j:plain

2つ目

f:id:niwatako:20190322124125j:plain

デザインとのすり合わせ

一番やらなくてはいけないのはデザインシステムに対するアップデートを上手くコミュニケーションを設けなくてはいけない。

多くの会合を持つか、変更に参加してもらう

プロセスは1年半で実行し、いろいろな教訓を得ています。

f:id:niwatako:20190322124200j:plain

一人のエンジニアと仕事したことはあるが、再利用可能なViewやツールを彼らが手がけたすべてに実現していました。

f:id:niwatako:20190322124216j:plain

使用していないコードを削除しました。このひとのコードが沢山我々の方で削除した。

何かをコンポーネント化したとしても、必ずしもそうしなければならないわけではない

f:id:niwatako:20190322124304j:plain

デザインシステムを構築する上で、再利用可能なコンポーネントだけでなく、デザイナーとエンジニアで意義ある作業関係を作らなくてはいけない。期限や技術的な問題がじゃまになることもあるが、いつノーと言うか。

デザインシステムのコンテキスト、前の教訓と同じように、デザイナーが想像したからと行って必ずしも構築しなくてはいけないわけではない、期限がある場合には妥協できないか考えるべきです。素晴らしい関係をデザインチームと取れたのもこうした関係を取れたからです。多くの人は構築することがどれだけ大変か分かっていないこともある

多くの人にどうするのが最適か考えることです。

f:id:niwatako:20190322124437j:plain