你終於能在 iPad 上「真正」地開發應用了:新版 Swift Playgrounds 體驗

語言: CN / TW / HK

科技是一種人文素養,我認為 Swift Playgrounds App 的核心定位正是如此。

未來世界創新、創業、創造的大門,需要我們用一種有着人文温度的方式去開啟。

我自己從初中開始看硅谷三大春晚——Apple WWDC 開發者大會、谷歌I/O 大會、微軟Build 大會;在高中的時候,雖然身為文科生,但是開始了裝「黑蘋果」、自學編程的神祕鍊金術之旅。Swift 因此成了我的計算機語言母語,而大學時期也很幸運地入選了 WWDC18 獎學金計劃,能夠帶着我們團隊自己開發的 App 見到了庫克。我們後來休學創業,拿了幾輪融資,至今還在這個波詭雲譎卻充滿魔力的創業場拼搏。

這些過去的經歷,都成了喬布斯所説的「connecting the dots」的一部分。我和一家做少兒素質與編程教育的機構也有着不少的合作,也帶過幾支天才少年隊伍,看着他們忘我地投入,看着他們迸發着顛覆性創造力的光芒。

由 Apple 推出的編程工具 Swift Playgrounds 近期推出了 4.0 大版本,我使用它開發了一個簡單的疫情數據看板 App,並以此作為一次簡單的體驗,將過程中的思考和體悟和大家分享。

我們為何學習編程、如何學習創造,Apple 給了我們他們的思考。雖然 Swift Playgrounds 現在還充滿了各種瑕疵,但我們也看到了全新的可能:AR、AI、傳感器、多維交互、物聯網,這些前沿的技術,以及伴隨其中的人文主義光輝,都能夠在這個小小的設備中,經由每一個開發者的研磨,如同坩堝一般,煉就出自己的結晶。

讓我們開始吧。

本文概要

  • Swift Playgrounds 更新了4.0大版本,可以在 iPad 中實現 App 的開發併發布到 App Store。
  • 我嘗試着在上面寫了一個疫情數據實時看板 App,並將代碼開源在了 GitHub
  • 開發體驗充滿了驚喜與迷思。雖然 SwiftUI 很好用,Swift Playgrounds 也簡化了 Xcode 開發 App 的信息量,但相比 Xcode,前者現在的體驗並不能説很好,一些必要的功能依然有缺失或需要優化。
  • 但是我非常看好其未來的潛力與戰略意義,我相信長遠來講,Swift Playgrounds 離Everyone Can Code 更近了一步。
  • 我相信 iPadOS 是比 macOS 離計算機的終極形態「通用智能」更進一步的形態。
  • 這是 Apple 版本「元宇宙」生態的重要一步。

注:本文中所有新冠疫情數據來自 騰訊開放平台數據接口 ,僅用作產品功能效果演示,不具有任何防疫相關參考價值,新冠疫情準確數據,請查閲官方數據平台。

Swift Playgrounds 開發 App 的上手體驗

在 Swift Playgrounds 中寫一個疫情數據 App,整個體驗充滿了驚喜與迷思,總之情緒如同一杯馥郁的咖啡,濃烈而複雜。

我一直在用一台 2017 年的 10.5 英寸玫瑰金 iPad Pro,它伴隨了我的整個大學到現在創業的時光。它曾陪伴着我去過 WWDC18 面對面見過庫克(沒錯)。然而自從升級 iOS 14 以來,我開始對其體驗心生不滿,尤其是 Swift Playgrounds 在更新 4.0 大版本前的頻頻閃退和卡頓問題着實讓我頭大。

雖然我從朋友那裏搞來了一台 12.9 英寸的全面屏 iPad Pro,但由於種種原因沒有升級到 Swift Playgrounds 開發 App 所需的 iPadOS 15.2 的環境,於是最終還是投奔到了自己的陳年舊相識的懷抱。

好在 Swift Playgrounds 4.0 對系統兼容性與性能的優化,讓我瞬間覺得「爺青回」。我嘗試了直接在 iPad 上觸屏、觸屏 + 鍵盤、觸屏 + 鍵盤 + Magic Trackpad 的體驗,確實覺得如果沒有一套像樣的鍵鼠方案做配合,效率依然會大打折扣。

由於 macOS Monterey 12.1 依然沒有開放 Universal Control 通用控制功能,我最終選擇將 iPad 畫面投屏到 Mac 的顯示器上。

作為一個簡單的嘗試,我打算寫一個實時展示疫情數據的看板 App。

SwiftUI、預覽與調試

SwiftUI 配合 iPad 的屏幕操作邏輯,可以説很大程度降低了 UI 部分開發的複雜度,右側的 App 預覽響應迅速,提供了所見即所得的及時反饋。

左側的代碼窗口也新增了 Xcode 樣式的自動補全,在多數情況運轉良好,然而也會在不少場合耍個脾氣,考一考你「默寫」代碼的能力。當然我期待這些問題能夠儘快在後續版本中得到改善。

我們也可以直接編譯代碼,Swift Playgrounds 則會開啟一個新窗口來運行應用,日誌則均可通過自帶的控制枱輸出。

使用第三方 Swift Package 資源

Swift Playgrounds 可以像在 Xcode 編輯 .plist 文件一樣,為應用增加系統級能力支持。而同時,Swift Playgrounds 也允許開發者使用 Swift 包管理器來在線獲取第三方模塊的支持。

發佈至 App Store

App 可以選擇自帶的佔位符或者自定義圖片作為圖標,並且打包編譯,發佈到 App Store。Swift Playgrounds 自帶的手繪風格圖標頗有「Everyone Can Code」的質感。

寫完的 App 也可以直接發佈 App Store 審核。

.swiftpm 工程文件

iPadOS 上 Swift Playgrounds 開發 App 的 .swiftpm 工程無法在 macOS 上的 Swift Playgrounds 中打開(或許還需坐等 macOS Swift Playgrounds App 更新),但是可以在 Xcode 的 Swift Playgrounds 模塊運行。

我們現在能夠看到 macOS 上 Xcode App 中的 Swift Playgrounds 功能模塊、macOS 獨立的 Swift Playgrounds App 與 iPadOS 上的 Swift Playgrounds App 三者並存且互相有所不兼容的情況。對於初學者而言,若不加了解,這確實是一條令人有些困惑的產品線。當然我相信 Apple 會在後續解決這一問題。

不足之處

此次體驗下來,我認為新版的 Swift Playgrounds 也還存在以下不足:

  • 欠缺必要的文檔説明。現有的不少 API 接口和類型格式都缺少必要的內容提示。
  • 交互。現有的鍵鼠交互還是明顯遜色於 Mac,在代碼編輯頁面觸屏幾乎毫無用武之地。類型的查詢需要 control + 鼠標選中對應的內容,再在提示的標籤中選擇「查詢」後才能看到。我不認為 iPad 的操作一定需要模擬鍵鼠,但我認為現有的交互邏輯在效率、易用等層面依然還有不少優化空間。
  • 穩定性。自動補全、類型提示、錯誤修正和編譯檢查依然有不少 Bug,而開發過程中,我也遇到了一些迷之閃退的問題。

新手上路建議

對於想通過 Swift Playgrounds 入門編程的新手,我也在這裏提出一些個人建議。

首先是設備,我手中的 2017 年款 iPad Pro(A10X 處理器)運行 Swift Playgrounds 4.0 沒有出現明顯的性能瓶頸,因此我姑且認為往後的新機型應該都有着不錯的性能表現。

配件

  • 物理鍵盤:必要。擁有一個Smart Keyboard / Magic Keyboard,或是任何兼容的物理鍵盤,是讓 Swift Playgrounds 開發 App 的編程體驗達到及格線的必備條件。如果只依賴觸屏操作,我認為當前的體驗是無法接受的。
  • 觸控板 / 鼠標:建議。一個更接近桌面級操作的指針能夠讓你更精確地選中、複製、定位代碼內容。全面屏 iPad 官方推出的 Magic Keyboard 配備的觸控板,或是第二代的 Magic Trackpad 都可以與 iPad 搭配使用。
  • 外部顯示器:看各自喜好。Typc-C 接口的 iPad 能夠直接將畫面無延遲地直輸外部顯示器,且保證更高的分辨率。而目前通過 AirPlay 協議投屏畫面帶來的延遲與畫質的壓縮,還是會讓 Swift Playgrounds 編程體驗大打折扣。

學習資料

文檔:前文説到,現有的 Swift Playgrounds 4.0 如果要以 IDE 的要求來看,還缺少必要的類型提示和文檔內容的説明。這時候我們也可以選擇手動查閲開發者文檔,這是 Apple 對各類系統框架事無鉅細的説明。在 Swift Playgrounds 更早版本的更新中,Apple 已經將大部分的開發者文檔內置到了 Swift Playgrounds 中,我們可以在工具中找到文檔的查詢入口。或者,我們可以使用瀏覽器訪問 Apple D eveloper 開發者網站 查詢文檔。

Swift 語法入門:Swift Playgrounds 在更早版本中,已經提供了遊戲化 Swift 語言學習的各種模塊,如果你是 Swift 語言的新手,可以通過學習官方提供的學習編程 1、2、3 和其他一系列的學習模塊來探索 Swift 語言。

SwiftUI 入門:SwiftUI 是 Apple 發佈於 2019 年 WWDC 大會的基於 Swift 的UI框架,結合了代碼 UI 編輯和 Storyboard 圖形化 UI 繪製的優點。因此 Swift Playgrounds 默認將 SwiftUI 作為創建一個空白 .swiftpm 工程後的初始界面模板。

如果你對 SwiftUI 還不熟悉,網上有不少優秀的教程內容可以學習,你可以在 Swift Playgrounds 跟着教程一起學習。當然,有時候自動補全功能的失效會給學習者帶來一點點困惑,我希望這個 Bug(但願不是一個 feature)能夠被儘早修復。當然,你也可以使用 UIKit 來實現界面,不過我認為現有的工作流更為 SwiftUI 量身打造。

嘗試 AR 體驗:如果你想在 Swift Playgrounds 開發的 App 中體驗一下 AR,Apple 的 AR Quick Look 頁面提供了不少開放的模型。我們可以通過創建 ARQuickLookPreview 來加載各類 USDZ 文件。

社羣:現在基於 Swift Playgrounds 開發 App 的愛好者社羣還在萌芽階段,因此找一個有 iOS 等生態開發經驗的朋友能夠極大提高你的學習速度。當然,你也可以創建一個社羣讓好朋友們一起交流討論。比如少數派本身便是這樣一個不錯的社羣,期待各位能在其中共同學習,各顯神通。

驚喜與迷思

當然,瑕不掩瑜,我依然為這一次 Swift Playgrounds 的重大升級深感高興。在 iPad 上進行「真正」地開發 App 的呼聲從 iPad 推出之日起便此起彼伏。我在初中擁有第一台 iPad 2 的時候,就千方百計地嘗試用它來開發點什麼,而這一次的 Swift Playgrounds 升級則真正地表明瞭 Apple 的立場。

我一直不很在意關於 iPad 生產力的爭論。然而,我和身邊不少用户切身體會到的,確實是 iPad 作為一個科技產品,給人源源不斷帶來的幸福感。書桌旁、畫架上、被窩裏常常有着它和我形影不離。因此,和 Mac 相比,我一直覺得 iPad 是一個讓人更少異化、更多自由的產品形態。

因此 Swift Playgrounds 正如其名稱一般,也是一個大家能夠在代碼、多媒體內容與知識的探索與交互中自如玩耍的地方。在未來,並不會人人都做程序員,但 Everyone Can Code 能夠真正讓科技作為一種人文素養,讓每個人都徜徉其間,用開放包容和智慧的心態,面向與人類走向共融共生的通用智能。

Apple 版的「元宇宙」佈局

庫克表示他不説元宇宙一詞,Apple 看好 AR。

AR、VR、AI、物聯網、區塊鏈、數字孿生、量子計算、Web3、元宇宙…… 各種詞彙總是在不經意間成為資本的寵兒,卻又在悄無聲息中急流勇退,大浪淘沙留下一波真正做事的人。

AR 作為在 iPad 先行的驗證,並被着力主推的技術能力,或許不久就會以全新的硬件形態與大家見面。運行在 iPadOS 之上的 Swift Playgrounds,結合 Apple 軟件全家桶的一系列應用,將進一步將多媒體的創造能力帶給每一個人,而這次會將 3D 沉浸空間體驗的創造也逐步納入進來,Swift Playgrounds 4.0 正是起點。

往後,Swift Playgrounds 結合 Reality Composer App 和大幅升級改造的「地圖」應用,使用 USDZ 格式文件,配合或將推出的穿戴式硬件設備,有可能能夠拓展成為一個「3D 沉浸式體驗編輯器」。它的潛力,可以是下一個時代的「Word」。當然,我們要看 Apple 將如何打這一套組合拳。

最重要的是,機遇永遠不在一家公司手中。創新、創業、創造將是每個人的全新可能,而這正是 Swift Playgrounds 作為這樣一個賦能人的工具,在根本上的意義:Give people wonderful tools, and they'll do wonderful things.

凡是過去,皆為序章。

> 下載少數派客户端、關注少數派公眾號,發現更多實用 App :iphone:

> 實用、好用的正版軟件,少數派為你呈現 :rocket: