現今的行動物聯網路建設即將進入下一個里程碑,國內各電信商的第五代行動通訊(5G)頻譜已競標完畢,並開始鋪設新世代網路的基礎建設,整合舊有4G長程演進計畫(LTE)、窄頻物聯網(NB-IoT)、LTE-M等不同通訊技術,建立國內和跨境的連線管理平台,以提供一般民眾服務以及商業和工業等各式終端設備,包括智慧穿戴、智慧三表,甚至在車聯網和綠能管理等各領域,新世代的通訊科技都提供了不同的應用服務。
新一代網路的延遲時間與網路速率等方面都有顯著的進步,相關業者的配套措施、商品和平台服務也愈趨完整,更催生了許多新的科技應用誕生,如雲端遊戲、即時視訊、遠端手術、超高畫質影片、虛擬實境(VR)應用等,行動網路即將進入下一個世代,並利用新的通訊科技、超低的延遲時間、更大頻寬的網路為基礎,建構新一代的應用程式(App)。
為了更快速地建構和開發新一代的應用程式,並因應新的通訊和技術架構,須要花費額外的時間和心力來與時俱進。在通訊基礎科技迭代的同時,軟體技術也不斷發展,新的軟體技術可以幫助更快速建構新的應用程式,使用新的程式語言、套件、跨平台框架,或是不同的程式撰寫概念,都可以減少花費在程式建構和開發上的時間(圖1)。
跨平台一次性開發 手機App加快上市時程
手機應用程式已經普遍地深入人們的生活,為了減少同時在Android和iOS跨平台開發所需花費的時間和人力資源,各大公司和技術先驅者持續為此創造開發幾種不同的跨平台框架,並投入許多心血在這些框架的開發上。在手機應用程式開發領域中,比較知名的跨平台框架分別為臉書(Facebook)開發的React Native、Airbnb的MvRX與Google開發的Flutter。
React Native
這三個框架中,React Native是發展最久也最知名的一個。React Native是由臉書研發的開放源碼應用程式架構,讓開發者可以利用JavaScript和React.js的宣告式編程(Declarative Programming)開發多平台上的應用程式。React Native在GitHub上有超過2,100位貢獻者和8.8萬顆星星,因為發展時間較久,也是目前是手機上資源最多的框架,使用者包括臉書、騰訊、微軟(Microsoft)、特斯拉(Tesla)、彭博(Bloomberg),知名租房服務公司Airbnb在2018年6月前也曾經使用React Native。
Flutter
Flutter是較新的框架,由Google Flutter Team直接支援,使用Dart語言編寫,並利用了該語言的許多進階功能。Flutter的引擎主要使用C++開發,透過Google的Skia圖形庫提供底層渲染(Render)支援,有接近原生的效能,提供Android和iOS等平台相關軟體開發套件(SDK),並含有各種Widget的基礎庫,實現被稱作Material Design的組件。因為擁有自己的渲染引擎Skia,得以控制不同平台、不同螢幕的顯示效果,Flutter可以跨平台一次性開發,擁有原生應用程式等級的效能的程式。
MvRX
MvRX是Airbnb自行開發的框架,2018年Airbnb放棄使用React Native後(當時有一個為什麼放棄使用的白皮書,有興趣可以搜尋一下,這邊不多提),重新開發並開源的框架,MvRX企圖揉合新語言Kotlin、Android原生架構元件、RxJava、React的概念(元件與宣告式)和自行開發的Epoxy(可選),幫助工程師簡易地建構複雜的,並在快速迭代的過程中擁有較好的開發者體驗(Developer Experience),為在原生程式開發和框架額外的複雜度之間取得一個平衡(圖2)。
這些框架為了適應更快速的開發進程、更好的開發者體驗、縮短作業時間做出了許多努力,混合使用宣告式程式設計(Declarative Programming)、物件導向程式設計(Object Oriented Programming)和函數式程式設計(Functional Programming)等各種方法,試圖最大化開發者的生產力。
不論最終是使用原生的方法或者使用跨平台框架的解決方案,在解決Android和iOS這兩個不同平台的跨平台問題中,會發現比起iOS陣營,在Android陣營的問題稍微更複雜一點。因為Android是Google開源的Mobile OS,各大手機製造廠會嘗試客製化自己的使用者介面(UI)、特殊功能到這個開源系統中,所以各家廠牌推出的手機在系統方面有些微的不同處。另外,不同手機的硬體設備也有所不同,從外觀最明顯的就是螢幕尺寸、螢幕解析度,而這兩個因素都會影響開發應用程式的排版畫面。
走向大螢幕高解析 相容性顯示問題待解
手機產品本身目前的製造設計發展趨勢,也是傾向讓螢幕也越來越大、解析度也越來越高。從智慧型手機開始發展以來,從剛開始3.7吋觸控螢幕,到現在已有6.9吋甚至更大螢幕的手機,所以App的設計需要同時兼容大小不同的螢幕,除了手機外,如果要同時相容平板,從7吋到接近13吋的螢幕,解析度從800×480到4K解析度。對於不同尺寸、需要配合不同解析度的螢幕,iOS陣營還算相對單純,但在Android領域的硬體組合就相對複雜許多,硬體相容性也大幅增加開發時的複雜度。
在Android系統中,由於主線程就是UI線程,在主線程進行耗時工作時畫面將停滯,因此Android系統並不允許資料寫入讀取、網路等耗時的功能在主線程運作,但同時又必須在主線程更新UI畫面,所以在程式撰寫中程式碼中會有許多需要切換線程的作業,日前Google宣布支援Kotlin為First-class Language後,使用Kotlin協程(Coroutines)來處理線程切換或許是不引用第三方函式庫(Third Party Library)的最佳解法,在協程出來之前大多人的選擇是使用RxJava這個第三方函式庫來解決,RxJava的概念是使用著名的觀察者模式(Observer Pattern)處理資料流,訂閱者和被訂閱者可以很簡單地切換不同的線程來處理資料,解決回呼地獄(Callback Hell)的問題,提高程式碼的可閱讀性和可維護性。
RxJava是響應式編程(Reactive Programming)概念的實現(圖3),利用函數式編程(Functional Programming)的概念達成可組合(Composable)、有彈性(Flexible)、可讀性佳(Easy to Read)的程式碼,擅長同步處理(Synchronization)同時發生的(Concurrent)非阻塞式處理資料接收與發送(Non-blocking I/O),並可實現在各種不同的語言中,Java、JavaScript、.NET、Scala、Swift等等各種不同語言都有Reactive這種模式的實現。
雲端運算和網路的發展,讓人們可以實現過往不可實現的應用,根據研究在2025年時會有超過15%的設備使用5G,預測會有超過14億個設備使用5G網路,新的網路平台和App將會提供更快速、更個人化的使用者體驗。5G的速度比現有無線網路快約十倍,並有更低延遲和更高的連線密度,5G的發展可更容易整合使用擴增實境(AR)/虛擬實境等技術來發揮最大功能,可透過蜂巢式的網路來下載遊戲、透過雲端運算的輔助來運行需要高效能硬體的遊戲,這意味著不必下載遊戲,或是擁有強大的硬體,就能利用雲端運算運行遊戲,甚至能夠利用網路實行遠端手術。
利用超聲波觸覺反饋 虛擬螢幕觸控有亮點
新應用發展的同時,為搭配新的應用程式,虛擬螢幕或許有機會興起並為大眾所接受。現在的VR/AR大多是由手把控制,觸感並不夠真實,想實現在鋼鐵人電影中觸控的虛擬螢幕效果(圖4)還有點距離。Ultrahaptics這間美國公司所開發的輔助硬體,擁有超聲波觸覺反饋技術,使用可穿透螢幕的40kHz超聲波,能讓人的皮膚感覺觸摸到了物體。在2017年CES上,博世(Bosch)便將其技術應用到新概念汽車上。2019年該公司收購Leap Motion這個子公司,擁有相當精準的手勢感測器,只要將其插入電腦,即可用手指操縱電腦、瀏覽網頁、閱讀文章、播放音樂、繪畫、塗鴉,甚至雕刻、拉伸、彎曲以及建構三維(3D)圖像,要在現實中實現電影中的操縱效果只差一步。
操作介面的進步可以期待,現實中的鋼鐵人、特斯拉的執行長伊隆·馬斯克(Elon Musk)表示,Neuralink將於第三季提供最新進展的更新訊息。Neuralink是開發腦機介面(Brain-Computer Interface, BCI)的公司,目的是協助人類跟上人工智慧(AI)的腳步,在2019年7月曾透露在小鼠和猿猴身上成功進行自家技術的測試。期待新的網路通訊技術可以促進新的人機操作介面的創造。
新的網路通訊技術越來越普遍,期待新的應用發展,並且希望能看到融合了新的網路特點、新的軟體應用、新的周邊硬體,開發出一個不同於現今的網路應用生態系。目前有已經準備好的遊戲娛樂平台、已經開發出來的AR/VR技術,可以實用的手勢感測和觸覺模擬技術,甚至未來可能的腦機介面,各種相關技術已經相對成熟,可以期待未來新的應用程式與不同的平台會如何改變一般人的生活。
(本文由台灣資通產業標準協會提供,作者皆任職於大同公司智慧能源事業部)