TypeScriptではじめるUIデザイン / UI design with TypeScript

381ea09c5a26fb7d63ddfc3ccb1d746b?s=47 kgsi
September 29, 2020

TypeScriptではじめるUIデザイン / UI design with TypeScript

UI/UXデザイナーLT会で発表したLT資料です。カレーがメインです。

https://rakus.connpass.com/event/187048/
#uiuxdesignerslt

381ea09c5a26fb7d63ddfc3ccb1d746b?s=128

kgsi

September 29, 2020
Tweet

Transcript

  1. Shinichi kogiso UI/UXデザイナーLT会 #uiuxdesignerslt - 2020/09 TypeScriptではじめるUIデザイン

  2. 自己紹介

  3. - 株式会社SmartHRに在籍 - プロダクトデザイングループ所属のカレー担当 - アジャイルとエンジニアリングとデザインが好き - ハンドルネームは@kgsi こぎそしんいち kgsi

  4. 罪 傲慢 憤怒 嫉妬 怠惰 強欲 暴食 色欲 SmartHRでのロール プロダクトマネージャー

    UXデザイナー UXリサーチャー UIデザイナー デザインエンジニア インフォメーションアーキテクト UIデザイナー、マネージャー 強欲 嫉妬 暴食 色欲 憤怒 怠惰 傲慢 メンバー fumiya versionfive oremega nao kgsi uknmr ouji プロダクトデザイングループのチームはそれぞれ「七つの大罪」を(以下略...
  5. 今回は小ネタ

  6. UIの情報整理、どうしてます?

  7. UIの情報整理、どうしてます? WFから情報を起こす

  8. UIの情報整理、どうしてます? スプレッドシートの 仕様情報から

  9. UIの情報整理、どうしてます? モデル図から落とし込む...等

  10. UIの情報整理は難しい (こともある)

  11. - 情報は視覚的な表現に囚われやすい - 一次情報だとUIに当てはめた場合に迷いが生じる(ことも) - 現状の画面の値を把握する際に整理がしにくい (ことも) UIの情報整理は難しい

  12. - 設計前に正確な情報を把握しておきたい - エンジニアに意図を共通化して伝えられる情報「も」欲しい UIの情報整理は難しい 理想

  13. UIの情報整理にTypeScriptを使ってみよう

  14. UIの情報整理にTypeScriptを使う TypeScriptの特徴

  15. - 強力な型(interfaceやtype)の表現力が使える - フロントエンドの設計に多用されるので相性が良い - エンジニアと共通言語として利用もできる UIの情報整理にTypeScriptを使う

  16. 実際にやってみた (面白そうなので)

  17. 思考ケースで紹介 (実画面は出しにくいので)

  18. ケース1: 大まかなワイヤーと仕様が渡されたら

  19. ケース1:大まかなワイヤーと仕様が渡されたら スプレットシートの情報を収集

  20. interface RightFixedNote { NoteItems: 
 memoText?: sumit:
 } interface NoteItem

    { text?: date?: mail?: 
 edit: } ※interfaceで決められたお作法の上でUIに必要な値を整理する ケース1:大まかなワイヤーと仕様が渡されたら
  21. ※それぞれ値に思案をする。値に対して制約・どんな型が必要かを検討 interface RightFixedNote { NoteItems: NoteItem[]
 memoText?: string sumit: ()

    => void
 } interface NoteItem { text?: string date?: Date mail?: string
 edit: () => void } // UIの本体構造 // メモのテキストが必要だよね(最大値は?) // 保存するボタンも必要 // 編集リストが並ぶ(最大いくつだろ) // 編集リストが構造 // 日付(可能ならフォーマットも決めておきたい) // メール(メールのフォーマットも決める?) // 保存・編集するボタンも必要 // 編集リストが並ぶ ケース1:大まかなワイヤーと仕様が渡されたら
  22. interface RightFixedNote { NoteItems: NoteItem[]
 memoText?: string sumit: () =>

    void
 } interface NoteItem { text?: string date?: Date mail?: string
 edit: () => void } ケース1:大まかなワイヤーと仕様が渡されたら
  23. UIとして可視化し、Sketchなどで組み立てる interface RightFixedNote { NoteItems: NoteItem[]
 memoText?: string sumit: ()

    => void
 } interface NoteItem { text?: string date?: Date mail?: string
 edit: () => void } アウトプット ケース1:大まかなワイヤーと仕様が渡されたら
  24. ケース2: TSは も表現可能

  25. ※カレーライスを表現する。ちなみに値に日本語を使ってもエラーにならない interface カレーライス { カレールー: カレールー ライス: ライス } interface

    ライス { 米: 米の品種 水分: 水 | ミルクの種類 ホールスパイス?: ホールスパイス[] } interface カレールー { ホールスパイス?: ホールスパイス[] パウダースパイス?: パウダースパイス[] 野菜?: 野菜の種類[] 肉?: 肉の種類 水分?: 水 | ミルク 塩分?: 塩の種類   その他?: その他[] } ケース2: も表現可能
  26. ※typeも自由な表現が可能です。書き切れないので割愛 ケース2: も表現可能 type 米の品種 = '日本米'|'ジャスミンライス'|'バスティマライス'|'玄米'|'五穀米' type ホールスパイス =

    'コリアンシード'|'シナモン'|'ベイリーフ'|'カルダモン'|'クローブ'|'クミン type パウダースパイス = 'コリアンパウダー'|'チリパウダー'|'パプリカパウダー'|'ターメリック' type 塩の種類 = '食塩'|'岩塩'|'ヒマラヤ岩塩' type 野菜の種類 = 'ズッキーニ'|'トマト'|'ナス'|'ピーマン'|'豆'|'じゃがいも'|'しょうが'|'ナス type 肉の種類 = '鳥肉'|'豚肉'|'マトン'|'水牛' type その他 = 'ヨーグルト'|'タマリンド'|'酢'|'カリフラワー'|'はちみつ' type 牛乳の種類 = '牛乳'|'ココナッツミルク'|'山羊の乳' ...以下略
  27. ケース2: も表現可能 ?

  28. アウトプット ※これはネタです ケース2: も表現可能

  29. この手法の所感 ※個人の感想

  30. - フロントエンドもやってるので割と違和感なく表現できた - 値や必要な要素のチェックを意識できる - 複雑なUIのリバースエンジニアリングなどにも使えそう - エンジニアとして感覚を忘れず設計できる(コードが書ける) この手法の所感

  31. 終 UIとコードは仲良しだよ ※弊社はTSも書きたい 好きなプロダクトデザイナーを募集中です