Upgrade to Pro — share decks privately, control downloads, hide ads and more …

istyleにおける Atomic Design利用の現状と課題

IstyleDesign
October 30, 2018
2.7k

istyleにおける Atomic Design利用の現状と課題

下記イベントで登壇した資料です。
https://roppongi-designers.connpass.com/event/98120/

IstyleDesign

October 30, 2018
Tweet

Transcript

  1. 役割について エンジニア Vue.jsのAPIつなぎ 複雑なscript サーバーの準備 デザイナー UI設計 ビジュアルデザイン フロントエンド Vue.jsのUIに関するtemplate

    style script • フロントエンドも「エンジニア」が付くが、エンジニアと区別するため以降は「エンジニア」を割愛 • 部署や人によって若干前後する場合はあるが、大方こんなかんじ
  2. Atoms (原子) これ以上分けられない最小単位 それ単体だと意味はない ボタン、アイコン、テキスト、 フォーム Molecules (分子) Atomsを組み合わせたもの ユーザーが何かアクションできる意味のあるもの

    検索フォーム、削除ボタン Organisms (組織) Molecules、Atoms、他のOrganismsを組み合わせたもの 複雑なまとまりになる ヘッダー、フッター、パン屑、〇〇 アイテム、〇〇一覧 Templates (テンプレート) 画面のテンプレート 実際のデータは入っていない仮の状態 トップテンプレート Pages (ページ) Templatesに実際のデータが入ったページ 実際のデータが入った状態(APIにつなぐ) トップページ
  3. vueファイル内での作業分担 フロントエンド エンジニア モック 主にtemplateとstyle、script部分 UIに関するパターン ロジック データ受け取り、APIつなぎ込みなどのscript。 表示の出しわけに関するtemplateでの条件など。 エンジニアは先にAPI作ることが多いので、その間に

    templateとstyle部分を作成し、templateまでつなぎ 込みを行う。 必要によっては、エンジニアが入ってから、調整す る。 モックコンポーネントのロジックを実装。 時間が掛かりそうなコンポーネントは、モックコンポー ネントをまたず先に作業する。設計あるので、どこで切 るか分かっているのでスムーズ。 最後PagesにAPIつなぎ込みを行う。
  4. 作成したAtoms コンポーネント名 役割 要素 概要 AtcosmeButton ボタン button要素 汎用ボタンを表示、Google AnalyticsひゃpreventDefaultのため「@click」イベントも返す

    AtcosmeCount カウント数 (フォロー数やLike数など) span要素 カウントの数字を表示、3桁ごとにカンマが付く AtcosmeHeading ヘディング hx要素 タイトルを表示、levelを設定したらそのhx要素になる AtcosmeIcon アイコン span要素 >svg要素 アイコンを表示 アイスタイルでは、アイコンは基本SVG要素で実装、インラインでHTML上に書き出す形式のため、画像とは別コンポーネント AtcosmeImage 画像 img要素 画像を表示、リソースURLを受け取りsrcにセット AtcosmeLink リンク a要素 リンクを表示、Google AnalyticsひゃpreventDefaultのため「@click」イベントも返す AtcosmeLinkButton 見た目ボタンのリンク a要素 スタイルはボタンと同じのリンクを表示、Google AnalyticsひゃpreventDefaultのため「@click」イベントも返す AtcosmeText テキスト span要素 汎用テキストを表示 AtcosmeTextError エラーテキスト span要素 エラーテキストを表示 AtcosmeTextSub サブテキスト span要素 サブテキストを表示
  5. Atomsの実装の認識 基本 Atomsは基本タグを表示するだけで、ロジックは持たない。 ただし、headingの出しわけやcountのカンマつけるとかscriptは仕方ない。 (表示するに必要なものは OK) スタイル • アイスタイル共通として決まっているスタイルを持つ •

    各サービスや共通コンポーネントでMoleculesからの上書き前提でclass設定やscopedなし • scopedなしについては、名前が一意であること、 scoped後からつけるほうが影 響範囲少ない • Atomコンポーネント自身の役割を超えたスタイルは付与しない • スタイルに関してはどんな画面でも大丈夫な指定にする。 • 例えば、横幅など固定値はつけない