物聯(lián)網(wǎng)概念下的程序設(shè)計
各種生活中看似尋常的對象,正被嘗試賦予連網(wǎng)的能力,而能和外在環(huán)境互動,提供許多有趣的應(yīng)用可能性,然而,要建構(gòu)出各種應(yīng)用、落實在生活中,還是得倚靠軟件。
物聯(lián)網(wǎng)(Internet of Things)」是最近另一火紅的名詞。在市場上,有愈來愈多的裝置、設(shè)備,打著物聯(lián)網(wǎng)的名號,紛紛快速推出。什么是物聯(lián)網(wǎng)呢?簡單來說,傳統(tǒng)的互聯(lián)網(wǎng),連上網(wǎng)的都是計算機(jī),不論是大型還是小型,通通都是計算機(jī),所以基本上是個計算機(jī)網(wǎng)絡(luò)。
隨著技術(shù)進(jìn)步,大家都知道連移動電話也都具備上網(wǎng)能力了,這是因為現(xiàn)在的智能電話,里子其實也都是計算機(jī),這都是拜計算機(jī)技術(shù)進(jìn)步之賜。之后,連電視也上網(wǎng),所以我們有了智能電視這個名詞,而本質(zhì)上,智能電視也是計算機(jī)。
透過各種裝置連網(wǎng)的機(jī)會,已經(jīng)大幅提升
即使這些外觀上不是計算機(jī)的連網(wǎng)裝置本質(zhì)上都是計算機(jī),也因此得到了連網(wǎng)的能力,但是在普遍的認(rèn)知上,他們還是我們所熟悉的生活中的常見對象。透過一些對象漸漸獲得了連網(wǎng)能力后,只有計算機(jī)才能連網(wǎng)的概念及界線逐漸變得模糊。
而接下來,幾乎可以預(yù)測的是,會有更多更多在我們生活中的對象或裝置,都會被賦予連網(wǎng)的能力,而且透過連網(wǎng)的能力,可以因此創(chuàng)造出更多有潛力的生活應(yīng)用。
舉例來說,在醫(yī)院中做一些基本的健康檢查,會需要量測身高、體重、血壓、……等等數(shù)據(jù)。傳統(tǒng)的方式,由護(hù)理人員量測后,記錄于紙本之上。但是試著想象一下,當(dāng)這些量測儀器都具備連網(wǎng)、連網(wǎng)傳送數(shù)據(jù)的能力之后,當(dāng)受檢者完成檢驗的同時,這些數(shù)據(jù)已經(jīng)自動傳送至中央數(shù)據(jù)庫中,并且和受檢者的身份關(guān)聯(lián)在一起。少去了人工操作,不但整個程序更快速、也不容易出錯。
各種在我們生活中現(xiàn)在看似尋常的對象,像是電燈、電器開關(guān),在獲得了連網(wǎng)能力,并且足以和外在環(huán)境互動時,的確極有可能提供許多有趣的應(yīng)用可能性。也因此,在「物聯(lián)網(wǎng)」口號喊的震天價響的同時,也正有各種不同型態(tài)的對象,正被嘗試賦予連網(wǎng)的能力,同時構(gòu)思進(jìn)階的應(yīng)用。
物聯(lián)網(wǎng)的大方向看起來是確切了,在過去的幾年里,連網(wǎng)手持裝置數(shù)量的大幅提升,讓在消費(fèi)市場中為主的個人計算機(jī),在消費(fèi)者生活中逐漸的不再居于中心的位置。許多人除非工作,否則已經(jīng)不太使用個人計算機(jī),因為,他們的需求,絕大多數(shù)都可以被平板計算機(jī)或是手機(jī)所滿足。這是使得平板計算機(jī)及手機(jī)銷售數(shù)量持續(xù)提升的原因。
在過去,個人計算機(jī)是我們接觸信息、操作所有設(shè)備的中心點(diǎn),漸漸的,這個角色已經(jīng)被手持連網(wǎng)裝置所取代。
例如,假設(shè)你家里有 Apple TV,過去你的音樂檔案可能儲存在計算機(jī)里,然后想要播放時,再從計算機(jī)連至 Applet TV 播放出去。但現(xiàn)在,很有可能你常聽的音樂都在手機(jī)上了,你會想直接從手機(jī)送至 Apple TV 播放,而不會再想打開計算機(jī)。
除了手持裝置的數(shù)量大幅提升、而且愈來愈重要之外,另一個可以看到的變化是,連網(wǎng)裝置的數(shù)量也會開始持續(xù)增加。伴隨著個人計算機(jī)數(shù)量成長的消退,手持裝置會成為用戶要操作這些連網(wǎng)裝置時的主要接口之一。
物聯(lián)網(wǎng)對于軟件應(yīng)用架構(gòu)的沖擊
物聯(lián)網(wǎng)的重心僅在硬件裝置嗎?其實,在物聯(lián)網(wǎng)的應(yīng)用里軟件也很重要。雖然,物聯(lián)網(wǎng)實體上必須倚靠諸般硬件裝置部署到使用端去,但要建構(gòu)出各種應(yīng)用、落實在生活中,還是得倚靠軟件。而在物聯(lián)網(wǎng)的應(yīng)用架構(gòu)下,對于軟件開發(fā)的生態(tài),又會有什么樣的改變呢?我想這是身為程序設(shè)計者會關(guān)心的議題。
首先,在連網(wǎng)的對象端,我想,初期許多小型的對象都不會擁有實際連上 Internet 的能力,而是透過另一個網(wǎng)關(guān)(gateway)裝置來連網(wǎng),這些小型對象并不直接連上 Internet,因為要連上Internet 所需的計算資源太過沉重了,所以真正連接 Internet 的能力,會被放在網(wǎng)關(guān)裝置里,而諸般小型物件,則以一個更輕量級的通訊協(xié)議(例如,在藍(lán)牙之上,再建構(gòu)的應(yīng)用層級協(xié)議),來和網(wǎng)關(guān)裝置相互連接,并且透過網(wǎng)關(guān)裝置對外連網(wǎng)。
在這種架構(gòu)之下,一個網(wǎng)關(guān)裝置可以對應(yīng)多個小型對象,除了具備管理這些對象的能力之外,同時也提供了這些小型對象對外連網(wǎng)通訊的能力。
這個網(wǎng)關(guān)裝置會是個運(yùn)行典型操作系統(tǒng)的裝置,我想實務(wù)上這幾年可以看到的,會是以嵌入式 Linux 為主。接下來的短期內(nèi),網(wǎng)關(guān)裝置應(yīng)該還是會有重要的角色,因此,在建構(gòu)一個物聯(lián)網(wǎng)的應(yīng)用里,在網(wǎng)關(guān)裝置上開發(fā)軟件,會是一個必要的工作。而這一塊,就會和傳統(tǒng)上開發(fā)嵌入式 Linux 軟件差不多。
除了網(wǎng)關(guān)裝置之外,一些比較「重量級」的裝置、也就是具備較高階計算資源裝置,就不需要網(wǎng)關(guān)裝置的輔助,自身即具有連網(wǎng)及計算的能力,像是機(jī)頂盒、智能電視、……等等,其操作系統(tǒng)除了 Linux 之外,也有可能是 Android 。
裝置與云端上的軟件應(yīng)用,影響力大增
在物聯(lián)網(wǎng)的軟件組成里,還有一個重心是在手持裝置端。
物聯(lián)網(wǎng)中的對象,大多可能都不具備顯示的接口,甚至也沒太多輸入的控制途徑。那么,要怎么和它們互動,像是取得信息、以及做控制呢?手持裝置會是最重要的途徑,因為,手機(jī)或平板會成為使用者面對物聯(lián)網(wǎng)中裝置的最主要終端,個人計算機(jī)反倒不是。
因此,當(dāng)我們在建構(gòu)一個物聯(lián)網(wǎng)的應(yīng)用時,終端的界面應(yīng)該都會先以手持裝置上的 App 為主,個人計算機(jī)上的軟件反而可有可無,即使是有,優(yōu)先級可能也會比較低。
實際上,手持裝置上的 App 凌駕于個人計算機(jī)應(yīng)用軟件的這個趨勢,會是一個很重要的變化。之后和使用者互動的終端,勢必以手持裝置上的 App 為主流了。
在個人計算機(jī)上,不論是傳統(tǒng)操作系統(tǒng)上的原生應(yīng)用軟件,或是網(wǎng)頁型態(tài)的服務(wù),都會因為個人計算機(jī)角色的弱化,而將部份重要性移轉(zhuǎn)至手持裝置上的 App。
除了手持裝置 App 的重要性會再持續(xù)提升之外,云端上軟件的重要性,在物聯(lián)網(wǎng)的體系下,也只會顯得更關(guān)鍵。
原因就在于,物聯(lián)網(wǎng)中的對象,除了讓用戶透過手持裝置和其互動之外,更多的時候,這些對象之所以要連網(wǎng)的原因,不單只是為了讓用戶透過手持裝置與其聯(lián)系,而且更重要的是,它們得以和云端上的服務(wù)交互運(yùn)用。像是將它們所收集到的信息,上傳到云端的「數(shù)據(jù)庫」里,或者是從云端的服務(wù)取得它們被設(shè)置的組態(tài),因而得以依據(jù)這些組態(tài),控制它們自身的行為反應(yīng),以符合組態(tài)設(shè)定。
另一方面,即使物聯(lián)網(wǎng)中的裝置擁有連網(wǎng)的能力,但不意謂著他們必然擁有高階的計算能力──在整個架構(gòu)里,真正有計算能力的,是在云端服務(wù)這一層。
舉例來說,若是有一套連網(wǎng)的人臉辨識門禁管理記錄系統(tǒng),在拍攝裝置欲進(jìn)入者的臉部圖像后,拍攝裝置可能即將圖傳傳送至云端,由云端上的辨識系統(tǒng)從云端上允許進(jìn)入的人臉數(shù)據(jù)庫中進(jìn)行比對,并且計算是否相符,最后,響應(yīng)門禁裝置是否授權(quán)進(jìn)入。
從上述的例子就可以說明,云端的服務(wù)在對象網(wǎng)的架構(gòu)中有多重要,因為,云端才是擁有大多數(shù)計算資源、提供大多數(shù)計算服務(wù)的所在。而手持裝置也會透過云端的服務(wù),得以和對象相連接,以進(jìn)行狀態(tài)取得及相關(guān)的控制。因此,整個云端,才是物聯(lián)網(wǎng)的中心。
整體而言,物聯(lián)網(wǎng)應(yīng)用下的程序開發(fā),手持裝置的應(yīng)用程序,以及云端服務(wù)的開發(fā)會扮演關(guān)鍵的角色。對于程序開發(fā)人員,若有志于此,更可把方向往此設(shè)定。