想成為高級(jí)UI 設(shè)計(jì)師?先學(xué)會(huì)構(gòu)建自己的設(shè)計(jì)體系!
- 來源:
- Hipop Dueng
- 時(shí)間:
- 2017-06-29 22:52:57
- 閱讀:
- 5816
我一直對(duì)建構(gòu)Design system、Design guideline 很有興趣,因?yàn)樵诮?gòu)的過程中,可以深度了解與思考各個(gè)元件的操作、適合使用的場(chǎng)景、享受制定屬于自己產(chǎn)品視覺風(fēng)格的過程。
以往的經(jīng)驗(yàn)都是為單一專案整理出Design guideline,每個(gè)專案都擁有自己的風(fēng)格。但這樣的做法在團(tuán)隊(duì)運(yùn)作一段時(shí)間后,就面臨到團(tuán)隊(duì)人數(shù)有限,專案無限的狀況。在資源有限的情況下如何達(dá)到不重工并加快開發(fā)效率,讓相同元件的設(shè)計(jì)與程式碼可以在不同專案重復(fù)利用,變成我們下一步目標(biāo)。
于是,我們開始思考如何建構(gòu)自己的Design system,不只是設(shè)計(jì),也將程序模組化。
但在團(tuán)隊(duì)資源有限與同時(shí)有專案進(jìn)度的情況下,并無法做到像Airbnb、Google Material Design、Ant Design、Atlassian這么完整。我們能解決的是先抽出共用元件,將其模組化,變成Common UI Library,讓共用元件可以跨專案的使用。
建立Common UI Library 流程
當(dāng)提出建置新元件需求后,我們會(huì)盤點(diǎn)他的實(shí)用性、必要性:
-
是否不同專案都會(huì)使用?
-
是否其他元件無法取代其功能?
這部分會(huì)直接影響要不要實(shí)際制作以及制作的先后順序。接著設(shè)計(jì)師可以為了這個(gè)元件提案,提案包含:
-
元件的名稱
-
視覺呈現(xiàn)
-
功能涵蓋范圍與互動(dòng)操作
提出后,團(tuán)隊(duì)的每個(gè)人都可以表達(dá)自己的意見。通常工程師對(duì)于「功能涵蓋范圍與互動(dòng)操作」會(huì)跟設(shè)計(jì)師有比較多的討論,原因是各自還有專案進(jìn)度要做,所以會(huì)討論現(xiàn)階段這個(gè)元件要做到多完美、多通用。
實(shí)際操作后,工程師會(huì)Pull request 給團(tuán)隊(duì)做驗(yàn)收,驗(yàn)收項(xiàng)目包含:
-
視覺呈現(xiàn)
-
功能與互動(dòng)操作是否達(dá)到預(yù)期
-
Code review
驗(yàn)收完成后才能Push到Common UI Library,這就是我們建立的流程。建立了內(nèi)部開發(fā)使用的Common UI Library: MTKUI 后,除了加快前端的開發(fā)速度外,最重要的是可以讓設(shè)計(jì)師將重心放在流程規(guī)劃的部分。
但這樣的流程要維持不太容易。除了剛剛提到的各自還有專案進(jìn)度要做,在這個(gè)流程里我們并沒有指定是哪位設(shè)計(jì)師與工程師要負(fù)責(zé)什么元件或模組,靠的是自發(fā)性與熱情。
當(dāng)專案一忙起來,建置的速度就會(huì)延宕 ; 再來是前端技術(shù)日新月異,所使用的套件如果升級(jí),免不了要再花時(shí)間調(diào)整。其他的缺點(diǎn)還有設(shè)計(jì)風(fēng)格會(huì)被局限、建置后要花時(shí)間替換原本的元件等等。
所以擁有自己的Design system 是條不歸路,組織要有共識(shí)并且愿意持續(xù)投入人力才會(huì)走得長(zhǎng)久。要有Design system 前,還是要先知道自己的需求以及想解決什么樣的問題,才討論需不需要建置自己的Design system。
開源前的準(zhǔn)備
時(shí)間拉回到今年初,在知道了MCS Lite 有開源計(jì)劃后,我便開始收集與Design system 相關(guān)的資料。
例如什么是一套好的Design system、需要具備什么思維來設(shè)計(jì)Design system 等等,用來檢視目前設(shè)計(jì)得MTK UI 在開源前還有哪些地方可以調(diào)整或可以做得更好。特別提一下,我并不是從零開始,而是從現(xiàn)有的MTKUI 抽出Lite 所用的元件,做開源的準(zhǔn)備,我們就稱它為『MCS Lite UI』吧。
以下是我在開源前做的一些準(zhǔn)備:
1. 命名的規(guī)劃與整理
從Common UI Library 抽出Lite 所用的元件,并做開源準(zhǔn)備的第一步就是整理命名。
除了了解各元件正確的名稱外,如何讓整體命名邏輯一致,使用起來一目了然?這時(shí)腦中會(huì)突然涌現(xiàn)很多想法,例如需不需要加上底線呢?使用分隔線呢?還是用空格?要用大寫還是小寫呢?
決定命名邏輯的同時(shí),也要想一下元件的最小單位是什么?要怎么劃分?例如元件切割得越小、Symbol 化越多,可以調(diào)整的彈性越大,但整份Guideline 也會(huì)變得復(fù)雜,特別是當(dāng)使用者要更改狀態(tài)時(shí)。
以下是幾個(gè)范例的觀察:
-
以Facebook iOS 10 Sketch來說
元件命名→單字的字首都是大寫、使用空格和Dash、不使用縮寫
-
以iOS-10.0-Sketch來說
元件命名→單字的字首都是大寫、使用空格和Dash、不使用縮寫Symbol命名→與元件命名方式相同,但少部分使用縮寫
-
以Material Design 來說
這部分先不討論新加上的BOTTOM NAVIGATION部分,這部分感覺是另一位設(shè)計(jì)師整理的,與之前的命名風(fēng)格不太一致。
元件命名→除了元件群組名稱外,其余都是小寫、使用空格、使用縮寫
Symbol命名→單字的字首大寫、使用空格(此規(guī)則ic除外)
比較之下,我發(fā)現(xiàn)自己的實(shí)際操作習(xí)慣比較類似Google Material Design,所以命名邏輯會(huì)比較參考它。
-
我的命名方式:
元件命名→
只有元件群組名稱單字字首大寫:對(duì)應(yīng)檔案里分類名稱的呈現(xiàn)
使用空格:在不需出圖的情況下,覺得空格的顯示方式最干凈清楚
使用縮寫:節(jié)省顯示空間 -
Symbol命名→
全小寫并使用空格:個(gè)人習(xí)慣
利用斜線做分類:主要順序?yàn)樵Q/類別/大小或狀態(tài)
組成Symbol的元件用_element做分類
影響Symbol的視覺、狀態(tài),用_style做分類
簡(jiǎn)化一個(gè)例子:組成一個(gè)基本類型的Input 包含Label, Input box, Input box 的狀態(tài)以及Input box 里的提示字和輸入文字。所以分類就會(huì)是:
input/default
input/_element/input box
input/_element/label
input/_style/state/normal
input/_style/state/focus
input/_style/state/error
input/_style/state/disable
2. Symbol 建制與Overrides 命名調(diào)整
延續(xù)剛剛提到的例子,input/default 由input/_element/input box 與input/_element/label 組成,組成Symbol 后你可以在右邊的Overrides 看到各個(gè)Symbol layer 名稱,名稱太長(zhǎng)就會(huì)以點(diǎn)點(diǎn)點(diǎn)顯示,識(shí)別性低。所以接著要調(diào)整Symbol layer 命名,也就是左邊橘色框框的部分。
調(diào)整命名后是不是更清楚呢?由于連結(jié)性已經(jīng)建立,即便調(diào)整左邊Symbol layer 的命名,任何修改還是可以同步,也可以讓右邊Overrides 的顯示名稱更精簡(jiǎn),讓使用者一看就知道這個(gè)是控制哪個(gè)元件。
所以其實(shí)在命名這階段,可以依照?qǐng)F(tuán)隊(duì)需求或是個(gè)人習(xí)慣來制定,沒有一定要遵守的規(guī)范。不過還是有些小提醒或曾經(jīng)踩雷的經(jīng)驗(yàn)可以跟大家分享:
-
不要用太具體的名稱命名
例如不要用主色命名元件,因?yàn)橹魃珪?huì)因不同專案而有所改變。
舉例:如果是主要按鈕的話,取名叫Primary btn會(huì)比Blue btn適合。原因是若這份Design guideline使用在不同專案上時(shí),當(dāng)使用的主色有改變,元件也不需重新調(diào)整命名,修改彈性較大。 -
不要用在哪個(gè)裝置上使用來命名
例如Desktop modal/ Tablet modal。因?yàn)闀?huì)有使用在其他地方的可能,可以改用大小來命名,例如Default modal/ Small modal。
-
盡量不要修改Symbol folder名稱
如果改到Symbol的名稱,也就是左邊Symbol folder的名稱,目前Sketch不會(huì)自動(dòng)同步更新。當(dāng)你改了Symbol folder名稱后,要檢查這個(gè)Symbol是不是其他Symbol的子項(xiàng)目、或是這個(gè)Symbol有沒有使用在任何地方,如果有的話要一并修改命名,命名才不會(huì)錯(cuò)亂。 -
善用符號(hào)標(biāo)示從屬關(guān)系
-
Overrides中有的Layer是從屬關(guān)系,例如當(dāng)你關(guān)閉input/_element/input box時(shí),它的子項(xiàng)目:input box text與input/_style/state/normal也會(huì)消失,所以命名時(shí)可以在子項(xiàng)目名稱前加個(gè)符號(hào)(按下Control+Command+Space可以叫出Emoji)示意它是某個(gè)Symbol的子項(xiàng)目,當(dāng)使用者要調(diào)整某個(gè)Symbol狀態(tài)時(shí)也會(huì)更加直覺、方便。
3. 更加彈性化的元件設(shè)定
我們還可以利用Sketch的Resizing或Sketch plugin來做到更彈性的元件。
4. UI Demo Page 呈現(xiàn)
目前我們是用React storybook這個(gè)套件來呈現(xiàn)MCS Lite UI,它可以邊開發(fā)邊看到即時(shí)的UI呈現(xiàn)。如果有時(shí)間和人力的話,設(shè)計(jì)師也可以設(shè)計(jì)這個(gè)頁(yè)面。
初次開源
MCS Lite 是MediaTek Cloud Sandbox (MCS) 的離線版本,適合使用在固定網(wǎng)域范圍的場(chǎng)景,例如學(xué)校電腦教室的教學(xué)場(chǎng)景等等。您可以安裝MCS Lite 在自己的電腦中,輕松快速地建置自己的私有云,不需再受到網(wǎng)路環(huán)境的限制。除了電腦版之外也支援Mobile Website。
后記
雖然我們解決了跨專案共用元件的使用問題,但由于時(shí)程、人力上的因素,在前期我們并沒有辦法針對(duì)Design system的理念、視覺特色做完整的發(fā)想與提案,只能依據(jù)現(xiàn)有的風(fēng)格作延伸,這是我覺得比較可惜的地方。
不過我很享受這個(gè)過程,看了許多分享的文章不如自己卷起衣袖實(shí)際操作一次,確實(shí)從中得到許多寶貴的經(jīng)驗(yàn)。
至于這份設(shè)計(jì)檔在Symbol與Resizing化后,是否可以順利運(yùn)用在不同專案上并加快設(shè)計(jì)的速度,我想,又是下一次可以跟大家分享的題目了:D
作者:Abby Chiu
原文鏈接:https://medium.com/as-a-product-designer/design-system-practice-f460a60c5169