[Metro App] Metro App 起手式
Windows 8 即將到來,Metro App 相信也會成為程式設計人員關注的焦點,雖然現在的 Visual Studio 11 還在 Beta 階段,未來在細節上可能會稍有更動,而且我的所學也還非常地粗淺,但想先來和大家分享一些最近寫 Metro App 的小小經驗。
和 Windows Phone 7 App 一樣,Metro App 也有一些在使用者經驗 (UX) 上面的設計原則,這些原則會不會影響到未來 Metro App 的審核我並不知道 (因為Metro 的軟體市集也還沒開,所以完全沒經驗),但是這些原則可以讓我們所撰寫的 Metro App 建立具備更佳使用者經驗的應用程式。
在我們要進入 Metro App 開發之前,必須先知道有一個很重要的網站 [Windows 開發人員中心 - Metro 樣式應用程式],在市面上的書籍或其它文章還沒大量產出以前,這個網站是關於 Metro App 開發的資訊最重要的來源。當然,因為大家都還在 Beta,再次強調未來這些內容可能都會有某些更動,但我相信大原則應該是不致於有太大的變動。在這個網站中,有幾個頁面是一開始我們要特別注意並閱讀的。
這份文件談到了設計的五大原則,細部請點選連結,以下則為我個人的看法:
(1) 展現技巧:
(1-1) 第一件事情基本上就是應用程式必須是穩定的,要能夠適當地處理例外狀況。
(1-2) 任何牽涉到隱私的問題都必須明確提示,不可有任何暗地收集使用者資訊的情況。以上這兩點也就是安全與信賴。
(1-3) 畫面的配置必須講求對齊、平衡與留白等等讓使用者能夠有舒適感,並且能減低其介面操作學習時間。如果你設計的 App 是一堆東西全擠在一起 (我還真的在手機的 App 上看過這種現象,感覺有點是以前 Desktop Application 的餘毒未清),就完全不符合這個原則。
(1-4) 由於 Windows 8 會支援多種螢幕解析度,利用 Grid 來做內容配置將會是設計畫面的一個重要技巧。
(2) 快速流暢:
(2-1) 講求互動性,當使用者點選有作用的控制項或內容時,最佳的方式是必須要以視覺的方式回應使用者的行為,比方會凹下去、變色或轉一圈之類的。
(2-2) 轉場的流暢度也必須考慮,當你由 A頁面轉向另一個 B頁面時,原則性是儘量快速地讓 B頁面呈現;如果很不幸地 B頁面需要比較長時的運算才能顯現,你必須在中間加上一個轉場的畫面,讓使用者瞭解到應用程式還在運行中。最糟糕地莫過於在轉向之前整個頁面還呆呆地停留在 A頁面,這很容易讓使用者誤以為他的動作沒有成功或是應用程式已經當掉。
(2-3) 我們將會大量運用非同步的技巧,比方如果一個 App 需要從網路上下載一千張圖片,如果設計成下載完一千張才呈現是不可以的;必須要設計成可以邊下載邊呈現的形式。如果你已經開始試著寫 Windows 8 Metro App,你就會發現一堆方法都被改成非同步,這些恐怕都是為了流暢性的原則產生的( 實際上其實這個道理在 Windows Phone 7 就已經出現了,只是個人覺得 Metro App 又發揮地更淋漓盡致)。
(2-4) 千萬不要自己亂發明一些奇怪的操控方式,比方什麼要放八隻手指還從不同方向亂動的手勢;或是啥 Crtl + Alt + F 再上上下下左左右右轉兩圈那種快速鍵之類的。所有的操控都應該簡單且具備一致性。
(3) 真正數位化
(3-1) 善用雲端與通訊,讓使用者與使用者間的互動增加,這在經濟學上有一個名詞叫做『邊際效用遞增』(你沒看錯是遞增,不是遞減)。舉個例子來說好了,如果全世界只有你家有電話,那電話的效用是零,因為沒人可以接到你的電話;當擁有電話的人越來越多,電話對你的效用就會越來越大,所以是邊際效用遞增。App 也是一樣的道理,如果 App 具備良好的人際互動功能,隨著使用者人數的增加,效用就會不斷增加,於是願意使用這個 App 的人口也會增加,許多社群網站或是軟體都是這麼一回事。當然在這個重點是,你所使用的通訊平台必須是穩定且能承受大量流量的,上過董大偉老師課的人都知道,Windows Azure 將會是你最好的選擇。
(3-2) 手勢我不是很熟,但使用手勢一定要遵循 Metro App 的標準手勢規範就是了;而且不要亂更動手勢原有的意義,所有 Metro App 使用的手勢必須保持一致性。
(3-3) 內容的呈現必須具備鮮明的意義,而且要符合美感,雖然這有點玄啦,但如果你的朋友看到你設計的畫面覺得醜得不得了,或是他不好意思地掩著嘴一直笑,那大概就是不怎麼有美感了 (WP7 上的丁丁跑馬燈第一個 UI 就是因為被 91 笑了我才狂改,所以有一些誠實的朋友是不錯的)。所以請朋友先看一下給個誠實的建議是有必要的。
(4) 以最小的努力取得最大的成果
(4-1) 這邊非常重要的一點是『將內容擺在控制項之前』,我們以前寫瀏覽式的應用程式 (就是下一頁/上一頁那種形式) 習慣上會將設定擺在前面,而內容(也就是結果) 擺在後面;在 Metro App 的設計概念中我們必須把這個想法倒過來,當使用者一開啟應用程式時,除了 Splash Screen 外,第一個頁面就是應該是要呈現給使用者的內容,而非一堆 Button、Combox 或是 TextBox 組成的設定畫面。
(4-2) 專注在單一的目的上,避免過度複雜的應用程式,應用程式 的設計要能讓使用者很快地瞭解主要使用方式與其目的,使其能快速上手。
(5) 統籌運用,爭取成功
(5-1) 這段標題聽起來很玄妙,不過它最大的重點我認為是『透過參與應用程式合約的方式,使用其他應用程式來完成案例』,這個『應用程式合約』是 Windows 8 Metro App 引進的一個新觀念 (詳見 App contracts and extensions ),簡單的說在不同的 Metro App 之間可以透過應用程式合約達成協同合作的功能。『應用程式合約』將會是 Windows 8 Metro App 程式設計非常重要的角色,如果你有興趣投入此應用軟體開發,這一定是學習重點中的重點。
(5-2) 為什麼要這麼做?這段文的開宗明義寫著『融入 UI 模型』與『減少 UI 重複 』,我以 Setting Contract 來說好了,使用這個 Contract 就會使得應用程式的設定採用一致性的設定模型。這有一個大大的好處,在傳統的應用程式中我們幾乎都是自行開發設定畫面,有的軟體的功能表在上面、有的在左右邊、有的甚至要用神奇的組合快速鍵才會跑出來,這些不一致的情況對於使用者的學習來講是非常不利的,因為每個應用程式的設定都不一樣。而採用 Setting Contract 就會產生學習曲線效應,使用者可以在最短的時間內就學習到設定的選項會在哪裡;等你用過了 Search Contract 和 Share Contract ,就會更瞭解這兩句話的意義了。所以『融入 UI 模型』就是與 Windows 8 Metro 的 UI模型相互為用,其所達成的結果就是『減少 UI 重複 』。
這大概是我這陣子的小小感想,真的只是一些淺見,只能待未來繼續努力瞭解更多細節。