Swift Playgrounds 4 娛樂還是生產力

語言: CN / TW / HK

趕在 2021 年底,蘋果終於發佈了 Swift Playgrounds 4,作為近年來最具革命性意義的版本,Swift Playgrounds 4 提供了在 iPad 上開發可發行 app 的能力。本文將對 Swift Playgrounds 4 的新功能做以介紹,並探討將其作為開發工具的可行性。

本文中的 Swift Playgrounds 4 特指 iPad 版本。MacOS 下的 Swift Playgrounds 4 目前仍採用 3.x 引擎。

關於 Swift Playgrounds

在 Swift 語言發佈的兩年後,蘋果於 WWDC 2016 上推出了 iPad 版本的 Swift Playgrounds。

Swift Playgrounds 提倡以一種有趣的方式學習嚴肅的代碼,它不要求用户具備編程知識,非常適合初學者。採用互動式的教學模式,蘋果提供了一系列的課件,以滿足 4-15 歲人羣的需求。

上圖中的課件內容,核心邏輯同幾十年前的 Logo 語言十分類似,非常適合低幼人羣。

或許受了“中國古拳法”的“人人有功練”影響,蘋果提出了“人人能編程(Everyone Can Code)”計劃。通過向美國的公立學校和教師提供大量的 iPad 和 Mac,希望在教育系統中大力推廣 Swift 語言。該計劃經過幾年的運行,取得了一定的成績,但效果並沒有完全達到預期。

與此同時,智能玩具廠商也發現了 Swift Playgrounds 的潛力,推出了與之配合的課件,讓 Swift Playgrounds 成為了教育玩具領域的重要工具。

Swift Playgrounds 是典型的寓教於樂型產品,最初的設計目標並不涉及專業開發所需的生產力方面需求。

從 3.x 版本開始,Swift Playgrounds 逐漸添加了一些適合專業開發者的功能,例如:

  • 類似於 Xcode Playground 的共享 Swift 文件
  • 更好的鍵鼠支持(隨着 iPadOS 的鍵鼠能力的增強)
  • 可以在控制枱中顯示 print() 語句的輸出等

一些 Swift 開發者逐漸嘗試使用 Swift Playgrounds 進行一些小規模的開發工作。

隨着 iPad 性能的不斷提升,尤其當蘋果為 iPad Pro 推出了“你的下一台電腦,何必是電腦”的廣告語後,不少 Swift 開發者呼籲蘋果應該提供一款 iPad 版本的 Xcode。

當蘋果在 WWDC 2021 上提出要在 iPad 上提供一款可以像 Xcode 一樣開發 app 的應用時,人們都十分震驚並期待其儘早面世。

最終,在 2021 年底,蘋果將 WWDC 2021 上展示的功能集成到了 Swift Playground 中,推出 Swift Playground 4.0 版本。

健康筆記 是我開發的一個iOS app,主要服務於有長期健康管理需求的人士。健康筆記提供了強大的自定義數據類型功能,可以滿足記錄生活中絕大多數的健康項目數據的需要。你可以為每個家庭成員創建各自的健康數據記錄筆記,或者針對某個特定項目、特定時期創建對應的筆記。

推廣

Swift Playgrounds 4 的新功能

增加了對 Xcode Playground 文件格式的支持

儘管 Swift Playgrounds 的名稱明顯受到了 Xcode Playground 的影響,但長久以來,它的文件格式並不與 Xcode Playground 兼容。

Swift Playgrounds 採用了一種名為 playgroundbook 的包來管理課件以及開發者自創的代碼。開發者很難將其它資源注入其中,限制了在 Swift Playgrounds 中編寫代碼的靈活性。通過提供 playground 包支持,讓開發者以更加熟悉的方式進行工作,彙集並測試靈感,並隨時可在 Mac 和 iPad 之間切換。

事實上,在 Swift Playgrounds 的 Playground 模式下,除了無法指定代碼的結束位置外,使用體驗與 Xcode Playground 已經十分接近。

或許由於 iPad 下最多隻能分兩屏的原因,使用 Swift Playgrounds 的 playground 模式調試代碼,我獲得了比 Mac 上更好的專注度。

在 iPad 上開發可上線發行的 iOS 應用程序

Swift Playground 4 中最亮眼的新功能就是提供了直接在 iPad 上通過 Swift Playgrounds 構建應用程序的能力(需要 iPadOS 15.2)。項目採用了與 SPM 結構完全一致的 swiftpm 包。可以在 Xcode 上打開,並進一步編輯。

應用被限定使用 SwiftUI life cycle,提供了響應迅速的預覽以及全屏運行模式,支持添加第三方 SPM 庫。

開發者可以使用類似 Xcode +Capablility 的選項來添加應用程序允許調用的系統功能。

在有開發者賬户的情況下,可以直接將應用程序提交到 App Store 接受審核。

理論上來説,開發者可以不使用 Mac,僅在 Swift Playgrounds 中即可完成一個上線併發行的 iOS 應用程序。

更好的代碼補全和幫助

在 4.0 版之前,Swift Playgrounds 採用了一種適合觸摸屏方式的代碼補全機制:

此種方式並不適用於習慣了專業 IDE 補全機制的開發者。在 4.0 版本中,Swift Playgrounds 在 playground 和 app 模式下,提供了同 Xcode 非常接近的代碼補全和提示功能,極大地提高了代碼的編寫效率。

對於系統文檔以及用户創建的 Markdown 註釋均提供了良好的支持。

Swift DocC 的全面支持

蘋果為 Swift Playgrounds 4 提供了不少新的課件,主要集中於如何創建 app,如何使用 SwiftUI。蘋果放棄了之前慣用的通過 PlaygroundBookTemplate 創建的課件方式,而是利用 Swift DocC 來組織教學內容。

Swift DocC 相較於 PlaygroundBookTemplate 編寫更加容易,也更適合高階的語言教學。另外,只需創建一套 Swift DocC 課件便可同時支持 iPad 和 Mac 兩個平台。有鑑於此,相信不久的將來,會有更多官方和第三方的優秀課件湧現。

Swift Playgrounds 4 的適用人羣或場景

既然 Swift Playgrounds 4 已經提供瞭如此多針對專業開發需求的功能,是否可以將其作為嚴肅的生產力工具來對待呢?

經過幾天來不間斷地使用,我認為蘋果並沒有為了取悦專業開發者而徹底改變 Swift Playgrounds 的定位,現階段 Swift Playgrounds 仍着重於教育用途,但提供了部分適合專業開發者使用的功能。

Swift Playgrounds 至今已經發展了 5 年,它的大量使用者應該已經掌握了足夠的 Swift 編程基本技能,4.0 版本為他們提供了進一步提高的途徑和手段。通過更專業的 playground 和 app 模式,將這些原本以娛樂的心態來使用 Swift Playgrounds 的學生轉換為更專業的開發人員。

Swift Playgounds 4 在專業開發用途上的一些主要的功能缺失:

  • playground 模式下無法導入 SPM(Xcode 下可以通過 project 或 workspace 來導入),目前只能將源碼導入 Source 目錄來實現對部分 SPM 進行測試
  • app 模式下不提供調試功能
  • app 模式下,系統功能選項不足,尤其不提供任何與 iCloud 服務相關的功能
  • 無法單獨開發與 CoreData、SpriteKit、SceneKit 等等有關的項目,類似的項目均需要在 Mac 上做大量的工作
  • App Store 提交內容選項明顯不足,當前演示的意味更濃(不排除將來蘋果推出某種特別類型(例如針對學生)的開發者賬户,更便宜、有限的應用定價機制、有限的發行範圍)
  • 不提供資源管理,不提供本地化資源設置等等

考慮到 Swift Playgrounds 的定位,我認為蘋果只會在將來的版本中彌補少量的專業缺失功能。或許在合適的時機,蘋果會為專業開發者提供 Xcode 的 iPad 版本(個人認為可能性不大)。

當前的 Swift Playgrounds 適用於如下的人羣或場景:

  • 對編程感興趣的孩子和學生(傳統優勢領域)
  • 對智能玩具有編程需要的人
  • 掌握了基本的 Swift 編程技巧需要進一步提高的使用者
  • 想接觸 iOS 及 Swift 編程,但沒有 Mac 機的開發者或編程愛好者,通過 Swift Playgrounds 可以用極低的成本進入 iOS 的開發生態(Swift Playgrounds 即使在數年前的 iPad 上也運行的相當流暢)
  • 專業的 Swift 開發者用 playground 模式來實現靈感,測試想法(在生產力方面最接近 Mac 下的體驗)
  • 專業的 Swift 開發者在只有 iPad 的情況下,在 Swift Playgrounds 上繼續進行 Mac 上尚未完成的部分工作(需將項目轉換成 Swift Playgrounds App 模式)。

總結

馬上就要寒假了,或許可以讓你的孩子在使用 iPad 娛樂之餘,通過 Swift Playgrounds 學習一下編程,當將自己開發的 app 共享給其他的同學時,一定可以獲得相當的自豪和滿足。

專業的 Swift 開發者也不應錯過 Swift Playgrounds 這個優秀的工具,更多地挖掘 iPad 的潛力。

Swift Playgrounds 在保留了快樂教育的功能前提下,滿足了部分場景下的生產力需求。

希望本文能夠對你有所幫助。