2007年9月20日

[轉貼]滿街都是iPod跟iPhone‧漫談UI界的逆向工程

出處:HandyUI.com
作者:陳文剛


逆向工程(Reversed Engineering)普遍存在於各個領域,尤其在台灣,各行各業的高手們,更是樂此不疲。大廚師喜歡到處吃吃喝喝,用舌頭跟鼻子去破解各地美食的料理秘方;電影工作者喜歡把經典橋段拿來重複播放、快轉倒轉、慢動作格放,反覆地推敲每一個走位跟運鏡。就連裕隆老總嚴凱泰都曾發生過類似的趣事,他在正式代理Armani前,就曾經把Armani西裝丟給港台一流的打版師傅拆解研究,直到怎麼組都組不回原樣時,他才心甘情願地放棄自行生產,專心做代理銷售。

每個人看到好東西時,心裡自然都會想著:「媽阿,這是怎麼辦到的?」也因此,人們都會渴望把美好的東西拆解,把它的外表一層一層地撥開,直到搞清楚這是怎麼一回事為止。這個過程就像拆禮物一樣,一層一層的包裝被打開,外觀越來越接近物品本身應有的大小跟重量,最後露出禮物的一瞬間,謎底終於揭曉,這可是相當迷人的經驗。「喔,原來是這樣做的阿!」這樣的讚嘆聲,就在最終破解的那一刻,發自內心地冒了出來。人類最原始,那種窺探、追根究底、搞懂怎麼做的本能渴望,就在這樣的過程中,一次又一次地被徹底滿足。


##CONTINUE##
就像上面所提到的,逆向工程的過程裡,充滿了驚喜與刺激,既知性,又充滿挑戰性。不過,從 UI Design的角度來看,搞懂怎麼做(know-how),跟知道為什麼要這樣做(know-why),其實是天差地遠的兩件事。

在UI界,逆向工程這檔子事也是常常在發生,每天都在做,只是抄得多抄得少,或是依賴程度高低的差別而已。設計手機介面的時候,拿起Nokia或是Sony Ericsson玩看看,參考一下人家輸入法是怎樣做的;或是設計相機時,拿起 Canon或Nikon,看看人家的人臉對焦框是方的還是圓的,合焦時會不會變色?久而久之,所有類似產品的介面都長得很像,用起來都一樣,沒有特別好,也不會特別差。由於這種狀況每天都在發生,所以部分的介面設計師,很可能已經習慣於大量地參考別人,然後小幅地改善自己。



從模仿中學習,其實是個必經的歷程

從現有案例中學習,其實是件好事,也或許可以當作是蹲馬步般的基本功。舉個例來說,要一個沒吃過義大利菜的人,做出好吃的義大利式燉飯 (Risotto),或是要一個沒玩過遊戲軟體的人,憑空設計出一款多人線上角色扮演遊戲 (MMORPG),那都是相當困難,甚至天方夜譚的事。

介面設計師在開始著手設計前,當然要對該產品,或是同一領域的其他產品,有清楚的認識。在介面設計流程裡,這個知己知彼的過程與方法,就叫做競爭者分析 (Competitor Study)。通常在做產品定位,或是進行設計前,都會先跑過一次分析,搞清楚現有產品的優勢劣勢,以及自家產品的機會點。

在做介面設計的競爭者分析時,最簡單的方法是,找來各家產品,快速比較一下設計風格、資訊架構、互動效果等,一個表格或是幾張slide大概就可以搞定。另一種比較嚴謹的做法則是,把整個介面設計的元素全部拆解開來,重製出一份UI flow,並且將layout跟icon全部攤開,把各種互動設計都分門別類,一個一個做比較分析。後者的做法,跟所謂的逆向工程,其實沒什麼兩樣。

經過上述的拆解與分析之後,簡單如iPod,複雜如iPhone,內部的操作流程跟介面設計元素,都可以攤開來一覽無遺。這時候要抄要改,幾乎都像扒滷肉飯一樣輕鬆 (其實也沒這樣輕鬆,苦工夫一堆,又會被告,千萬別傻傻地去做)。至於要參考哪個部分,如何轉化成自己的設計,則完全看設計師自己的功力與經驗。

就像前面舉做燉飯,或是研發線上遊戲的例子一樣,做介面設計時,要是不做點競爭者分析的功課,就很可能會閉門造車,搞出類似重新發明輪胎的糗事 (歷史上,輪胎的外型曾經被重新發明很多次,方型的,雪橇型的都有,但是弄到最後,事實證明還是圓的最有效率)。透過逆向工程的手段,去快速學習、了解競爭者特性,是非常有效率且必要的做法。莫內、梵谷、畢卡索,哪一個沒有畫過靜物素描,沒有揣摩過大批翻製的石膏像?從模仿中學習,是人類進步的重要技能,在科技快速發展的今天,更是得不停地模仿,不停地踩在別人既有的基礎上,追求實質的進步。



掌握關鍵本質,才能夠舉一反三

只不過,模仿應該只是手段,而不是最終目的;知道如何做得一模一樣,跟了解背後的原理原則,真的是天差地遠的兩件事。

舉個實際的例子來說,有時候我們常會看到許多四不像的產品規格,去找PM討論時,總會聽到:「XX大廠就是這樣設計的,我想他們這樣做,一定有他的原因跟道理,我們照著這樣做比較安全。」 更厲害的PM則會融會貫通、旁徵援引,說出一套道理來:「我會想拿掉電源開關,是因為iPod也沒有電源開關;至於這裡要長按兩秒鐘,是因為PDA也都是長按兩秒鐘;而且我還加了閃七下的燈號提示,這是我們自己發明的,非常friendly,跟Canon的印表機有異曲同工之妙。」

這樣噴飯的對話常常出現,每回聽到這些謬論,除了心裡苦笑之外,也很懶得去反駁。老實說,我不太能夠接受「XX大廠這樣設計,一定有他的原因跟道理」這種說法,太籠統,而且也太馬虎行事。在搞不清楚別人為什麼這樣設計之前,就一股腦地抄,抄到最後就像拼裝車一樣,東拼西湊,重看不重用。

好的介面設計師不只懂得欣賞好產品,具有一眼就看出關鍵概念的鑑賞力,而且更懂得將這些精采地設計概念消化吸收,重新轉化成新的設計,比過去看過的更精練,更貼近使用者需求。夠水準的介面設計師,絕對不會只從Apple, Nokia等公司產品找靈感,更大一部分的啟發來自於日常生活,來自於人類歷史當中所有的經典設計。

舉個例來說,在思考手寫輸入介面的可能性時,我們會去參考Windows Mobile、漢王、蒙恬,或是甚至是iPhone的觸控螢幕鍵盤。但是在此同時,我們更關注的是,手、筆跟紙的關係。我們觀察人們長久以來怎麼樣用筆紀錄,如何在紙張上頭註記,如何塗改,如何銷毀。漸漸地會發現到,現有的手寫輸入介面都不夠好,連市面上最棒的產品也頂多在及格邊緣,離感動人心還差的遠。這時候,精采的就來了。從競爭者分析中看到現況,找到機會,然後透過設計師的經驗與巧思,就有可能設計出一套全新的手寫輸入介面,一舉超越現下的所有產品,或者你要說是,有史以來的所有產品也可以。

這就是具備鑑賞力、觀察力,並且掌握關鍵本質的奇妙功效。同樣是做競爭者分析,同樣是逆向工程,不明就裡地抄,跟了解原理原則後的全新設計,很可能就是地獄與天堂的差別。在這一點上,台灣廠商的逆向工程技術確實很先進,但是少了創意,少了理想與堅持,最後很可能開發出的全是一堆me too,或甚至比me too還差的產品,真的是很可惜。

2007年9月19日

XXX7600 : Fix Calibration

  • 讀取Registry儲存值:
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("HARDWARE\\DEVICEMAP\\TOUCH"), 0, KEY_QUERY_VALUE, &hkey) != ERROR_SUCCESS)
return 0;

dwSize = sizeof(str);
lResult = RegQueryValueEx(hkey, _T("CalibrationData"), NULL, &dwType, (LPBYTE)str, &dwSize); //query registry value


##CONTINUE##
  • 分割字串,並計算與預設值的差值總和(每一點座標相減)
pStr = wcstok(str, seps);

for (i=0; pStr != NULL; i++)
{
wcscpy(token[i], pStr);
tokennum[i]=_wtoi(token[i]);
pStr = wcstok(NULL, seps);
}

for(i=0;i<10;i++) sum =" sum"> 50)
bMAXVal = true;
}
if(sum > 400)
{
lResult = RegSetValueEx(hkey, _T("CalibrationData"), NULL, REG_SZ, (LPBYTE)defaultval, dwSize);
RegCloseKey(hkey);
bMAXVal = true;
}
else
RegCloseKey(hkey);

  • 若差值總和過大或其中一點差值大於40則在進入系統後重新做校正。

2007年9月8日

時間管理軟體試用:iGTD


iGTD是由bartek bargiel發展出來的mac上時間管理軟體,GTD(Getting Things Done)則是由David Allen發展出來的時間管理系統,主張事情應該利用工具來紀錄,而不應該記在腦中!


##CONTINUE##
有關GTD可參考:



Getting Things Done

作者︰David Allen






搞定! 2分鐘輕鬆管理工作與生活




相關網站:
GTD的概念在於把可以同時處理的事情集合在一起,可以利用場合的概念,把我們有的雜事加以分類,例如電話、電腦前處理、Mail等,這樣就可以批次來處理!

在twhsi的網站上提供了幾個實用場合參考:
  • 電話聯絡
  • 電腦相關
  • 閱讀及寫作
  • 規劃思考
  • 當面聯絡
  • 自己動手
  • waitting
  • someday/maybe
iGTD也是以此概念來處理,在iGTD中Context可以視為各種的場合,而每個待辦的事項則稱為task!每個task都可以設定其輕重等級!


iGTD也提供了同步的功能,可以與iCal同步,若再搭配iCalViewer,則可以將事情列在桌面上,隨著事情的輕重等級,會以不同顏色區分!


另外,iGTD也提供了tag的功能,可以為task加上tag,再透過smart folder的功能,就可以將所有與此tag有關的task列出,這項功能就可以用在案子的管理上,看看目前還有那些task尚未解決!