論壇文章
淺談手機應用程式開發原則
這麼多手機應用中顯然不是每款都是經典之作,如果在產品設計與開發時能夠注意的一些基本原則,你的手機應用將比較不會進入最多人移除的應用程式之列。

今年六月的蘋果全球開發者大會(WWDC 10)上,蘋果的執行長Steve Jobs發表了該公司最新一代的智慧型手機iPhone 4,距離Apple在2007年一月發表的第一支iPhone 經過了三年半。這三年半之間整個行動通訊產業歷經了相當劇烈的變化。Apple總是搶在潮流的前端(要說它帶動潮流可能也不為過),Google一手養大的Android平台試圖靠開放原始碼的力量與iPhone的封閉環境對抗,微軟雖然腳步慢了一點,也準備在年底推出改頭換面全新打造的Windows Phone 7。BlackBerry靠著Push Mail服務在美國稱霸,過去PDA界的龍頭Palm公司開發出了Web OS,被HP收購後不知道下一步將如何。Nokia痛失智慧型手機寶座之後力圖振作,大力支援新的行動作業平台MeeGo,能不能成氣候還是未知數。兩三年以前,智慧型手機的平台多數是採用Nokia主推的Symbian作業系統或是微軟公司的Win CE/ Windows Mobile。Symbian其實相當優秀,它是專門為了手機等行動裝置而設計的OS,擅長應付有限的硬體資源並且幾乎不會當機。

但直接在Symbian作業系統上開發應用程式的門檻相當的高,不僅開發難度高,相關的認證機制收費也很嚇人,因此多數開發者選擇採用J2ME/Java ME環境來開發手機應用程式。雖然大家對Java的印象是『Write Once, Run Anywhere』,很可惜這句話在Java ME身上並不完全適用。事實上手機的規格相當複雜,Java ME對應的各種規格亦然,加上一款手機的生命周期有限,開發手機JVM的廠商往往不可能有足夠的時間與成本把每一台手機的移植(Porting)工作做到盡善盡美。

因此你會發現當年所謂智慧型手機上的J2ME應用程式百分之九十以上都是手機小遊戲,顧客購買智慧型手機的理由也很少是為了使用上面的第三方應用程式。

Windows Mobile的情形又不大一樣,它被認為是微軟企圖把PC上的使用經驗完全複製到行動裝置上的嘗試,但實際上手機的操作環境跟PC差異太大,多數使用者的反應都是操作不易,這個結果導致Windows系統的手機客戶大多是商務人士,他們為了滿足能在手機上使用Office的需求而購買微軟作業系統的智慧型手機。到了2010年的現在,硬體技術大幅進步,我們可以看到被拿來跟瞳孔比較的觸控式螢幕、更大的電池容量、CPU不但要快還要省電、五百萬像素還被嫌的Web Cam鏡頭、更有便宜到嚇死人的記憶體。智慧型手機從3C敗家狂的玩具和商務人士的高級配備變成『認為手機就是拿來打電話,月租費辦最低的就好』的一般人如筆者我也準備入手的實用資訊產品了。除了硬體之外,目前在蘋果的App Store上有將近23萬的第三方應用程式一共被下載過五十億次,Android Market上也有大約三萬支應用程式。為什麼和從前的情況差這麼多?蘋果成功的拆帳模式是當然一個原因,而更重要的原因是開發者現在有比過去完善得多的開發環境以及更寬廣的發揮空間。這麼多手機應用中顯然不是每款都是經典之作,如果在產品設計與開發時能夠注意的一些基本原則,你的手機應用將比較不會進入最多人移除的應用程式之列。尤其是原本開發PC應用程式或Web應用程式的設計師和工程師,很容易陷入過去的習慣而忽略了手機平台的特性。

手機的運算能力與記憶體大小有限

儘管現在的手機已經和當年不可同日而語,但仍然還沒有強大到不需考慮資源運用的程度。這點在開發Web based的手機應用程式時尤其明顯,你會發現在PC上的瀏覽器看起來很炫的JavaScript特效動畫,用手機的瀏覽器看會比較不順。

此外盡可能不要在手機上執行太過複雜的運算,如果本來就會花上一段時間的行為例如由網路取得資料,應該要另開執行緒處理,避免前景發生無回應的狀況。儲存空間使用方面,雖然現在的手機平台沒有像以前J2ME時代會限制單一應用程式的大小不得超過512K之類的規定,但Android的應用程式在Android 2.2版之前是不能安裝在SD卡上的。手機的內建記憶體大小通常是256 MB至512 MB,你的應用程式如果太過肥大,當使用者空間不足時可能會首先遭到移除的命運。

請愛惜使用者的電池

前面提到不要執行太複雜的運算,除了花時間之外,另一個問題就是很耗電力。iPhone不能更換電池一直是許多愛好者心中的痛,即使Android平台的手機可以換電池,相信也不會有使用者覺得搭個高鐵從台北到高雄就沒電是合理的。畢竟手機最基本的功能是要接打電話阿!iPhone OS之前一直不開放多工的藉口就是,第三方應用程式很喜歡過度貼心的在背景常駐,一會兒提醒你該吃飯,一會兒提醒你我們有新版本了。筆者剛拿到Android Phone的第一天,看到甚麼想測試的應用程式就裝裝看,玩到夜深了,於是調好手機上的鬧鐘就寢。第二天早上鬧鐘沒有響,原來這一覺之間手機直接從電力滿滿用到乾。重開機後使用工作管理軟體一看不得了,一大堆跑在背景的貼心服務,立刻使用Task Killer殺光它們並且移除用不到的程式。這件事情告訴我們,請多為使用者的電池著想,不然下場還是被殺。Web應用的情形也是相同,過多不必要的特效只會讓使用者從此不再上你的網站。

確實相當多購買智慧型手機的用戶都會搭配3G吃到飽的方案,但是有更多理由讓你不應該假設使用者總是在連線狀態。首先接續上面提到的耗電問題,使用者在購入手機後會漸漸學聰明,在不需要的時候把網路關閉以求省電。此外3G網路有訊號問題,在基地台爆滿或者捷運高鐵在地下的路段也可能因為收訊不佳而斷線。你的應用程式如果能提供離線模式,等到連線時再一併處理,相信受歡迎度會大增。這也是為什麼智慧型手機的瀏覽器都比PC還早開始支援HTML5的理由之一,因為離線功能是非常重要的。一定要避免的情形是,不但沒有照顧使用者忽然斷線的狀況,還因為斷線或忽然有電話打進來而讓使用者遺失正在處理中的工作。通常現代手機平台如Android都有支援中斷暫存的機制,只要善用系統提供的API就可以避免最壞的情況。

讓使用者能在短時間內完成工作

手機是行動裝置,表示使用者會在行動的時候使用它,也表示工作隨時會中斷。例如在捷運上使用時,通常下車就會暫停或關閉程式。除了妥善處理中斷情形之外,如果能讓使用者是在工作處理完畢的狀態下離開應用程式,相信使用者會更安心。簡單與快速永遠是行動應用的不二法則。

減少使用者輸入文字的必要

手機上的軟體輸入鍵盤通常提供了一些輔助功能來幫助你按的比較準確,中文手寫的辨識率也還不錯,通常還搭配了相當準確度的聯想詞句,但不得不說在手機上輸入文字仍然比在電腦前面打字麻煩得多,因此應用程式的設計上應該要盡量做到避免讓使用者輸入文字。新版的Android系統開始支援語音轉文字的功能,但由於需要利用Google的資料庫進行語音辨識,這個功能必須要連上網路時才能使用,因此不能夠完全依賴它。

觸控螢幕UI設計是門大學問

iPhone與多數Android Phone都是使用手指觸控的操作方式。對Web應用程式來說,首先要注意到的就是某些JavaScript的事件如Mouse Over是無效的。衷心的建議,最好不要認為手機應用程式是PC的縮小版。它不僅是畫面變小而已,手指觸控的操作方式會讓你無法按到太小的元件,而少了精確性換來的是讓你能夠使用手勢、長按、多點觸控,等等輕鬆做出許多滑鼠可能做不到的動作。雖然開發者可以提供各式各樣創新的操作方式,但是請記得要為基本的功能提供簡單醒目的操作,最好是能在畫面上直接點選,否則使用者打開應用程式後可能完全不知道下一步該做什麼,就會直接離開。當然適當的小提示絕對是有幫助的,但是要避免過度騷擾使用者。

善用各種感應器

目前的智慧型手機幾乎都有相機鏡頭、GPS跟加速規。iPhone上已經有無數的遊戲利用這些感應器讓使用者搖頭晃腦邊運動邊遊戲,使用GPS定位的美食玩樂地圖和導航系統也經常排在下載排行榜前幾名,掃描條碼的應用程式更是每支手機必裝的基本款。到底能玩出甚麼名堂就看各位的創意了。

叡揚的第一個手機應用PlzHelp

上面談到的這些開發原則,其實也是筆者在開發過程中的一點點心得。PlzHelp是叡揚資訊初探行動應用領域的第一步。開發平台是Android,第一版支援Android 1.5以上的手機。PlzHelp是一個手機交辦軟體,它可以結合叡揚的teamKube,成為這個協同工作平台的一部分;同時它也可以單純做為個人使用,幫助你發出訊息請你的親朋好友幫幫忙。

基於前面提到的原則,我們在設計軟體時的思考,就是專注於如何讓使用者能夠最快速最簡單的交辦或請求幫忙。最直接的交辦方式就是用說的,也就是錄音交辦。為了結合錄音以及其他手機功能比如拍照和GPS記錄地點等等,我們選擇原生應用程式的開發方式,而非Web應用。

一個簡單的錄音交辦流程示範(如下圖):標題和到期日都已經幫使用者帶入了預設值,也可以利用常用句、罐頭語等功能快速設定標題,減少使用者打字的困擾。直接選擇附件,就可以開始錄音了。試聽之後不滿意可以直接重來,錄音之外也可以拍照。例如請先生幫忙買奶粉時,可以把家中的奶粉罐拍下來帶到超市去比對,就不用擔心買錯了。最後從通訊錄中指定想要拜託的對象,交辦就完成了。

如果只是簡單的文字交辦,可以選擇使用簡訊送出,錄音交辦的話將會幫您透過WiFi或3G網路使用Email傳送。是不是感覺相當簡單呢?其他比較複雜強大的功能我們會放在選單之中,希望能提供使用者更多選擇。這款手機應用將配合teamKube的最新模組一起發表,未來計畫發佈在Android Market上。