//Build/ 2016 開發大會第一天主題演講:更聰明的個人化運算

//Build/ 是微軟一年一度針對開發人員所辦的大型研討會,在這個活動中微軟會向開發人員展示最新的微軟平台、關發技術、願景等,今年 //Build/ 2016 的主題演講分成兩天進行,第一天的內容著重在智慧(intelligence)以及個人化運算(personal computing),而第二天則是在雲端平台(cloud platform)以及資料科學(data science)來作介紹。

第一天的影片可以由此觀看

開場

今年依然是由微軟的 CEO, Satya Nadella, 來為 //Build/ 2016 開場,當然在開場時再次強調開發人員對於微軟的重要性,然後重申我們公司的核心目標:Empower every person and every organization on the planet to achieve more,而微軟從三個方向來達到這樣的目標:創造更多個人化運算重塑生產力以及商業流程、以及建立智慧雲端平台。

不過圍繞這三個方向最重要的是——人們是怎麼樣使用這些平台的呢?在個人電腦上我們可以用鍵盤滑鼠、在手機平板上用觸控甚至是語音、更有可能在其它的裝置上使用手勢或是身體動作與這些平台互動,也許我們不該想得那麼複雜,應該把這些與機器、與平台的互動看作是一種 「對話」(Conversation) 的形式,基於對話這個平台(Conversation as a Platform) 來開發應用程式,是否能更容易運用這些平台完成更多工作(achieve more)呢?

Conversation as a Platform

接著就以個人化運算做為這一天主題演講的主軸。

個人化運算

對應這個目標的產品(或平台)就是 Windows 了,而 Windows 團隊的老闆 Terry Myerson 首先介紹目前在 Windows 10 發佈九個多月來的使用、升級情形,而從這些數據上來看,目前全球已經有超過 2 億 7 千多萬(270M+) 個活躍用戶、操作 Windows 10 超過 750 億(75B)個小時的時間、以及從 Windows 10 正式上市(2015 年 7 月 29 日)以來,全世界已經有超過 500 種全新為 Windows 10 而設計的裝置,這些事實造就了 Windows 10 成為史上成長最快速的 Windows 作業系統。

Windows 10 Adoption

而 Windows 10 也繼續秉持著「Windows as a Service」的概念,將會在今年夏天再次釋出一次重大更新,這個重大更新有人會以它的代碼「Red Stone」稱呼它,而這次 //Build/ 大會則是定調這次更新為「Windows 10 的週年更新(anniversary update)」,屆時也會提供給所有的 Windows 10 用戶免費升級

如果您迫不及待想嚐試這些 Windows 10 的新更新,可以考慮加入 Windows Insiders 計劃,以更快取得新的 Windows 10 版本。

Windows 10 的週年更新(Anniversary Update)

Microsoft Edge 加入擴充套件,以及結合 Windows Hello

在這次週年更新中(更精確地說,在 Build 14291 之後),Microsoft Edge 終於可以安裝擴充套件,而開發人員也可以使用 HTML/CSS/JavaScript 的技術來開發擴充套件

從 Windows 10 開始,除了傳統的帳號密碼、PIN 碼身份驗證之外,只要裝置有支援就可以使用像是虹膜、指紋等生物識別技術來作身份驗證,這個功能稱作「Windows Hello」,而 Windows Hello 也有提供 API 讓 Windows 10 的應用程式(包括 UWP app)來使用,在這次更新中,Microsoft Edge 也會提供這個結合這個 API 的 JavaScript 界面(已提交 W3C Web Authentication WG 制定標準)讓網站也能選擇使用這個先進安全的身份驗證技術。

Microsoft Edge with Windows Hello

加強觸控筆的操作體驗

而在這次週年更新中,加強了許多對於觸控筆操作的部份,首先是在桌面環境中加入了「Ink workspace」的空間,讓你可以編排使用觸控筆操作時的一些捷徑。

Windows Ink Workspace

另外還有一些強化像是辨識手寫筆跡的文字與 Cortana 結合、或是在應用程式中多出一個觸控筆工具列,透過這個工具列還能叫出「尺」,不僅可以拿來畫直線,還能用來對齊物件:

Windows 10 Ink Ruler InkingExp2

其它的部份還有像是在地圖 app 中自動將筆跡轉為路徑然後算出實際距離、在 Word 等 Office 的文字處理上面,也可以自動辨識標齊螢光筆的效果等等,透過這些觸控筆操作效果的強化,其實就是「提高使用觸控筆的生產力」的動機,呼應 achieve more 的動機。

Universal Windows Platform

自從 Windows 10 發表之後,隨著而來的 Universal Windows Platform (UWP) 的概念也一併向開發人員宣傳,UWP 的願景即是希望所有的 Windows (10) 裝置都有通用的應用程式執行環境,如此一來,應用程式開發人員只要按著 UWP 的方式撰寫應用程式,就能寫一份程式碼、包裝成單一個應用套件、然後在所有的 Windows 裝置(有 UWP 的)上執行。所以在這樣的概念下,要開發像是 Xbox One、Microsoft HoloLens 這些非典型手機、平板或 PC 的應用程式,也就變得相對簡單容易許多。

UWP Apps

而 UWP 也與 Facebook Audience Network 合作,在 UWP 中加入 Facebook 的 SDK 顯示廣告,使得全世界 3 百多萬個 Facebook 廣告主都能透過你的應用程式接觸到客戶,這當然會提升應用程式開發人員的獲利機會!

BOEING Case
波音公司的案例,使用 UWP 應用程式讓機組員不必再帶著厚重的文件上機,可以讓工作更有效率

Keynote 的這個部份介紹了 UWP 開發工具的持續改良,而前面看到 Windows 10 的週年更新中全新的觸控筆操作體驗,也很容易就能把這些功能加到應用程式中,還有加入更豐富的視覺效果等超過 1,000 個功能修正,讓開發人員能在 UWP 上有更多發揮。

另外就是示範了如何能很簡單地將網站立刻轉成 UWP 的應用程式,讓原本就擁有網頁的企業,能夠快速擁有 UWP 應用程式,藉此接觸更多的使用者,甚至還能因為有這樣的轉換,讓 web 呼叫到 UWP 的 API 來使用到 Windows 10、UWP 平台上的特有功能。而且,已經有不少知名的網站已經把網站轉成 UWP 應用程式了。

Hosted Web App

而這些開發工具的參考資料如下:

Windows is Home for Every Developers

當然,原本在 Windows 上的開發人員就有像是 Visual Studio 這樣很好的開發工具,不過我們並不以此滿足,如果我們立志要讓 Windows 成為開發人員的「家」(家是最舒適的,我們希望開發人員在 Windows 上開發就像在家裡一樣舒適),就必須整合更多開發人員在乎、喜歡的功能。所以我們與 Canonical 公司(提供並維護 Ubuntu Linux 的公司)合作,讓未來的 Windows 10 上有原生的 bash (其實是一個 Ubuntu Linux 的子系統)可以使用。

Bash coming to Windows

從操作人員的展示中,我們看到他開啟了 Windows 上原生的 bash.exe,然後在其中使用一些 GNU 工具,也開啟了 emacs 編輯器來編輯檔案,整套工作流程就像在一個 Linux 下的 bash 一樣,我們希望透過這樣的工具能讓開發人員有更多的武器,至少在需要一個 bash 環境(或是一個 Linux user space)時不必再另外煩惱要用虛擬機器還是遠端連線到工作站等。

Bash on Windows

這部份的技術概觀大概可以參考下圖的示意,這次的整合並不是虛擬機器,或是像過去 cygwin 專案這樣把所有的 Linux system call 集中在 cygwin.dll 下,透過直接把 Linux system call 的轉譯做在 Windows 作業系統核心層,可以換來更好的執行效率以及相容性。

Ubuntu on Windows
Bash on Windows 是如何完成的。圖片來源:https://msdn.microsoft.com/commandline/wsl/about

更多詳細的介紹可以參考這些資料:

傳統桌面應用程式的現代化

既然 Windows 10 希望大家都能朝著 UWP 的路線前進,連 Web 都可以輕易地轉成 UWP 的應用程式,那麼,原本使用 Win32 或 .NET Framework 所撰寫的傳統應用程式呢?當然還是可以繼續用相同的方式開發,但是如果透過由之前 Project Centennial 所衍生出來的 Desktop App Converter,就可以很快將這些以 Win32/.NET 寫成的傳統桌面應用程式變成 UWP 的應用程式,而且如果修改原始碼,加入 UWP 的 SDK,甚至還能呼叫或使用到 Windows 10/UWP 上獨有的新功能(如:動態磚、筆跡、訊息中心等等)。

UWP Desktop App Converter

跨平台應用程式開發

當然,程式開發人員不僅會為 Windows 10/UWP 撰寫應用程式,當然也有可能為其它的平台撰寫應用程式,這樣才稱得上是所有開發人員的家,而微軟的回應也很明確 —— 在 Windows 上寫 UWP、而在 Android/iOS 開發上採用 Xamarin 的技術,如此一來便能將與平台或操作介面無關的部份做成共享的函式庫,讓開發人員能減輕跨平台開發的負擔。

Windows XPlat Dev

在第二天的主題演講中,宣佈了 Xamarin 的技術會免費提供給 Visual Studio 的開發人員。

遊戲開發

既然提到了 UWP 的通用概念,當然不得不也來介紹一下 Xbox,過去要在 Xbox 上開發遊戲或是應用程式,都需要取得特殊的開發機、以及需要特別審核的開發帳號,這次我們直接把這些開發的門檻降低,首先,只要你有一台 Xbox One,即便它是一般市售的機種,都可以透過程式將它開啟開發模式,這樣一來,你就能像開發 UWP 應用程式般地開發 Xbox One 上的應用程式或遊戲——使用 Visual Studio 開發然後透過網路遠端佈署上 Xbox One 執行與測試。

Dev on Xbox

如此一來,不僅僅是應用程式,遊戲開發商很快就能推出 Windows 10 (PC) 以及 Xbox One 版本的遊戲,而且因為是 UWP 的版本,都能直接透過 Windows 市集來銷售與管理。

UWP Games over Devices

HoloLens & Holographics

而去年發表後轟動的 VR/AR 裝置 —— Microsoft HoloLens,在今年的大會前後終於有更進一步的消息,除了開發團隊與商業開發團隊可以申請購買之外,這次大會也首次亮相即刻開始出貨的盒裝樣式。

HoloLens Start Shipping

除了繼續透過 AR 的火力展示之外,這次 HoloLens 的展示更多了可能性,像是讓不在身旁的人也能一同加入討論或是聊天,彷彿這個遠端加入的夥伴就在身邊一樣。

HoloLens Group Chat

這次大會也開始公佈更多開發的細節,同時也開放了模擬器以及應用程式範本下載,基本上的開發也是走 UWP 的方式,除了使用一般 UWP 的開發方式之外,也可以使用 Unity 遊戲引擎來製作運行在 HoloLens 上的應用程式或遊戲。

想要瞭解更多訊息可以參考:

Conversation as a Platform

介紹完了關於 Windows 10 的進展,以及相關裝置端的平台開發技術後,主題演講再度拉回「對話即平台」(Conversation as a Platform)的議題上,既然我們已經有了這麼好的平台,那接下來的問題就是,要怎麼讓這個平台更容易親近?而「對話」又是什麼?所以我們定義出:

Conversation as a Platform

  • 人類語言是一種新的操作介面(UI, user interface)
  • 機器人(bot)是一種新的應用程式,而數位助理則是描述這些應用程式的應用程式(meta app)
  • 任何的互動都需要加上智慧能力

所以接下來介紹微軟提供了什麼樣的「對話平台」而開發人員又能怎麼基於這些平台來做應用程式開發。

Cortana 開發平台

在 //Build/ 2014 大會上公佈的數位語音助理 Cortana,一直是具備智能以及學習能力,它能根據用戶所提供的資料來瞭解用戶的狀況,進而提出解答(例如:根據你的狀況回答各種問題)或是主動提出建議(例如:根據交通狀況以及您的習慣提醒是否該提早出門),但它不僅僅是一個數位語音助理,對開發人員來說,它更是一個可以擴充、與其它應用程式互動的平台,讓開發人員能直接利用到 Cortana 的語音處理以及智能學習的能力,讓用戶能夠用說話的方式在應用程式中完成許多工作。

Cortana with Office

而現在微軟已經將 Cortana 推上了 Windows, Android 以及 iOS 平台,所以不論你是哪一個平台的開發人員,都能開發與 Cortana 「對話」的互動功能。如果想要瞭解更多訊息,可以參考:

Bot

除了 Cortana 這樣的數位語音助理之外,其實還有很多平台,尤其是通訊平台,是絕佳的對話平台,也已經有許多開發人員已經開發了形形色色的 bot。

Conversation Canvases

而微軟在這件事上做了三件事:將 Skype 打造一個容易開發 bot 的平台、提供 Bot Framework 讓開發人員可以更簡單寫出 bot 注入到各平台、提供智能服務 APIs 讓應用程式或 bot 更加聰明。

Skype Bot Platform

如果您也想開發一個 Skype Bot,那現在也可以參考 Skype 開發中心的網頁,瞭解如何開始建置自己的 Skype Bot。演講中展示了許多在 Skype 上面透過與 bot 對話完成工作或是取得資訊,或是像下圖所示完成旅館的訂房工作。

Skype Bot

Microsoft Bot Framework

做平台與開發工具一直是微軟的強項,如果我們認為「所有的開發人員都會創造機器人」(Every developer will build a bot),那微軟的使命就是讓開發人員能夠更輕鬆開發出 bot,所以順勢推出了 Microsoft Bot Framework

MS Bot Framework

上圖是演講時所展示,用 Microsoft Bot Framework 寫出來的一個訂 Pizza 的 bot,Bot Framework 提供了以人類語言為基礎的文法引擎,這可以減少開發人員在處理語言解析上的麻煩,而且因為是使用 Bot Framework 開發,所以你可以在開發完成後,選擇讓它運作的平台,而不必每一個平台都開發一個 bot,為開發人員大大減少了開發各平台 bot 的成本。

Microsoft Cognitive Services

既然我們認為,讓應用程式、Bot 擁有智慧是很重要的事,而 Microsoft Cognitive Services (前身為 Project Oxford)就是提供各種人工智慧的 API 服務,開發人員能夠利用這些服務來做到像是臉部追蹤、圖片特徵、語音判斷等等許多功能,只是一個簡單的 API 呼叫就能為應用程式加入智慧。下圖的展示就是由 Cognitive 所提供的 API 來判斷一張圖片中有哪些特徵。

Cognitive Service

而在展示中也同步推出了一個線上小玩具 -- Caption Bot,你可以試著上傳照片,看看這個 Caption Bot 會為這張照片下什麼樣的標題。

Caption Bot

關於 Microsoft Cognitive Services 的開發文件,可以直接在這裡找到文件、範例或是測試環境。

謝幕

第一天主題演講在要結尾的橋段,是微軟如何透過以上的這些技術,為自家一位盲人工程師打造了一個全新感受這個世界的服務:Seeing AI,透過 Microsoft Cognitive Services 讓他的輔助眼鏡能告訴他更多眼前是怎樣的世界,這不就是為「創造個人化運算」做一個畫龍點睛的真實案例嗎?我們可以實際來看這段影片: