只要一個 iPad,手把手教你給 iPhone 開發(fā)應(yīng)用(ipad如何開發(fā)ios軟件)
科技是一種人文素養(yǎng),我認(rèn)為 Swift Playgrounds App 的核心定位正是如此。
未來世界創(chuàng)新、創(chuàng)業(yè)、創(chuàng)造的大門,需要我們用一種有著人文溫度的方式去開啟。
我自己從初中開始看硅谷三大春晚——Apple WWDC 開發(fā)者大會、谷歌I/O 大會、微軟Build 大會;在高中的時候,雖然身為文科生,但是開始了裝「黑蘋果」、自學(xué)編程的神秘?zé)捊鹦g(shù)之旅。swift 因此成了我的計算機語言母語,而大學(xué)時期也很幸運地入選了 WWDC18 獎學(xué)金計劃,能夠帶著我們團隊自己開發(fā)的 App 見到了庫克。我們后來休學(xué)創(chuàng)業(yè),拿了幾輪融資,至今還在這個波詭云譎卻充滿魔力的創(chuàng)業(yè)場拼搏。
這些過去的經(jīng)歷,都成了喬布斯所說的「connecting the dots」的一部分。我和一家做少兒素質(zhì)與編程教育的機構(gòu)也有著不少的合作,也帶過幾支天才少年隊伍,看著他們忘我地投入,看著他們迸發(fā)著顛覆性創(chuàng)造力的光芒。
由 Apple 推出的編程工具 Swift Playgrounds 近期推出了 4.0 大版本,我使用它開發(fā)了一個簡單的疫情數(shù)據(jù)看板 App,并以此作為一次簡單的體驗,將過程中的思考和體悟和大家分享。
我們?yōu)楹螌W(xué)習(xí)編程、如何學(xué)習(xí)創(chuàng)造,Apple 給了我們他們的思考。雖然 Swift Playgrounds 現(xiàn)在還充滿了各種瑕疵,但我們也看到了全新的可能:AR、AI、傳感器、多維交互、物聯(lián)網(wǎng),這些前沿的技術(shù),以及伴隨其中的人文主義光輝,都能夠在這個小小的設(shè)備中,經(jīng)由每一個開發(fā)者的研磨,如同坩堝一般,煉就出自己的結(jié)晶。
讓我們開始吧。
本文概要
- Swift Playgrounds 更新了4.0大版本,可以在 iPad 中實現(xiàn) App 的開發(fā)并發(fā)布到 App Store。
- 我嘗試著在上面寫了一個疫情數(shù)據(jù)實時看板 App,并將代碼開源在了 GitHub。
- 開發(fā)體驗充滿了驚喜與迷思。雖然 SwiftUI 很好用,Swift Playgrounds 也簡化了 Xcode 開發(fā) App 的信息量,但相比 Xcode,前者現(xiàn)在的體驗并不能說很好,一些必要的功能依然有缺失或需要優(yōu)化。
- 但是我非??春闷湮磥淼臐摿εc戰(zhàn)略意義,我相信長遠來講,Swift Playgrounds 離Everyone Can Code 更近了一步。
- 我相信 iPadOS 是比 macOS 離計算機的終極形態(tài)「通用智能」更進一步的形態(tài)。
- 這是 Apple 版本「元宇宙」生態(tài)的重要一步。
注:本文中所有新冠疫情數(shù)據(jù)來自 騰訊開放平臺數(shù)據(jù)接口,僅用作產(chǎn)品功能效果演示,不具有任何防疫相關(guān)參考價值,新冠疫情準(zhǔn)確數(shù)據(jù),請查閱官方數(shù)據(jù)平臺。
Swift Playgrounds 開發(fā) App 的上手體驗
在 Swift Playgrounds 中寫一個疫情數(shù)據(jù) App,整個體驗充滿了驚喜與迷思,總之情緒如同一杯馥郁的咖啡,濃烈而復(fù)雜。
我一直在用一臺 2017 年的 10.5 英寸玫瑰金 iPad Pro,它伴隨了我的整個大學(xué)到現(xiàn)在創(chuàng)業(yè)的時光。它曾陪伴著我去過 WWDC18 面對面見過庫克(沒錯)。然而自從升級 iOS 14 以來,我開始對其體驗心生不滿,尤其是 Swift Playgrounds 在更新 4.0 大版本前的頻頻閃退和卡頓問題著實讓我頭大。
雖然我從朋友那里搞來了一臺 12.9 英寸的全面屏 iPad Pro,但由于種種原因沒有升級到 Swift Playgrounds 開發(fā) App 所需的 iPadOS 15.2 的環(huán)境,于是最終還是投奔到了自己的陳年舊相識的懷抱。
好在 Swift Playgrounds 4.0 對系統(tǒng)兼容性與性能的優(yōu)化,讓我瞬間覺得「爺青回」。我嘗試了直接在 iPad 上觸屏、觸屏 鍵盤、觸屏 鍵盤 Magic Trackpad 的體驗,確實覺得如果沒有一套像樣的鍵鼠方案做配合,效率依然會大打折扣。
由于 macOS Monterey 12.1 依然沒有開放 Universal Control 通用控制功能,我最終選擇將 iPad 畫面投屏到 Mac 的顯示器上。
作為一個簡單的嘗試,我打算寫一個實時展示疫情數(shù)據(jù)的看板 App。
SwiftUI、預(yù)覽與調(diào)試
SwiftUI 配合 iPad 的屏幕操作邏輯,可以說很大程度降低了 UI 部分開發(fā)的復(fù)雜度,右側(cè)的 App 預(yù)覽響應(yīng)迅速,提供了所見即所得的及時反饋。
左側(cè)的代碼窗口也新增了 Xcode 樣式的自動補全,在多數(shù)情況運轉(zhuǎn)良好,然而也會在不少場合耍個脾氣,考一考你「默寫」代碼的能力。當(dāng)然我期待這些問題能夠盡快在后續(xù)版本中得到改善。
我們也可以直接編譯代碼,Swift Playgrounds 則會開啟一個新窗口來運行應(yīng)用,日志則均可通過自帶的控制臺輸出。
使用第三方 Swift Package 資源
Swift Playgrounds 可以像在 Xcode 編輯 .plist 文件一樣,為應(yīng)用增加系統(tǒng)級能力支持。而同時,Swift Playgrounds 也允許開發(fā)者使用 Swift 包管理器來在線獲取第三方模塊的支持。
發(fā)布至 App Store
App 可以選擇自帶的占位符或者自定義圖片作為圖標(biāo),并且打包編譯,發(fā)布到 App Store。Swift Playgrounds 自帶的手繪風(fēng)格圖標(biāo)頗有「Everyone Can Code」的質(zhì)感。
寫完的 App 也可以直接發(fā)布 App Store 審核。
.swiftpm 工程文件
iPadOS 上 Swift Playgrounds 開發(fā) App 的 .swiftpm 工程無法在 macOS 上的 Swift Playgrounds 中打開(或許還需坐等 macOS Swift Playgrounds App 更新),但是可以在 Xcode 的 Swift Playgrounds 模塊運行。
我們現(xiàn)在能夠看到 macOS 上 Xcode App 中的 Swift Playgrounds 功能模塊、macOS 獨立的 Swift Playgrounds App 與 iPadOS 上的 Swift Playgrounds App 三者并存且互相有所不兼容的情況。對于初學(xué)者而言,若不加了解,這確實是一條令人有些困惑的產(chǎn)品線。當(dāng)然我相信 Apple 會在后續(xù)解決這一問題。
不足之處
此次體驗下來,我認(rèn)為新版的 Swift Playgrounds 也還存在以下不足:
- 欠缺必要的文檔說明?,F(xiàn)有的不少 API 接口和類型格式都缺少必要的內(nèi)容提示。
- 交互?,F(xiàn)有的鍵鼠交互還是明顯遜色于 Mac,在代碼編輯頁面觸屏幾乎毫無用武之地。類型的查詢需要 control 鼠標(biāo)選中對應(yīng)的內(nèi)容,再在提示的標(biāo)簽中選擇「查詢」后才能看到。我不認(rèn)為 iPad 的操作一定需要模擬鍵鼠,但我認(rèn)為現(xiàn)有的交互邏輯在效率、易用等層面依然還有不少優(yōu)化空間。
- 穩(wěn)定性。自動補全、類型提示、錯誤修正和編譯檢查依然有不少 Bug,而開發(fā)過程中,我也遇到了一些迷之閃退的問題。
新手上路建議
對于想通過 Swift Playgrounds 入門編程的新手,我也在這里提出一些個人建議。
首先是設(shè)備,我手中的 2017 年款 iPad Pro(A10X 處理器)運行 Swift Playgrounds 4.0 沒有出現(xiàn)明顯的性能瓶頸,因此我姑且認(rèn)為往后的新機型應(yīng)該都有著不錯的性能表現(xiàn)。
配件
- 物理鍵盤:必要。擁有一個Smart Keyboard / Magic Keyboard,或是任何兼容的物理鍵盤,是讓 Swift Playgrounds 開發(fā) App 的編程體驗達到及格線的必備條件。如果只依賴觸屏操作,我認(rèn)為當(dāng)前的體驗是無法接受的。
- 觸控板 / 鼠標(biāo):建議。一個更接近桌面級操作的指針能夠讓你更精確地選中、復(fù)制、定位代碼內(nèi)容。全面屏 iPad 官方推出的 Magic Keyboard 配備的觸控板,或是第二代的 Magic Trackpad 都可以與 iPad 搭配使用。
- 外部顯示器:看各自喜好。Typc-C 接口的 iPad 能夠直接將畫面無延遲地直輸外部顯示器,且保證更高的分辨率。而目前通過 AirPlay 協(xié)議投屏畫面帶來的延遲與畫質(zhì)的壓縮,還是會讓 Swift Playgrounds 編程體驗大打折扣。
學(xué)習(xí)資料
文檔:前文說到,現(xiàn)有的 Swift Playgrounds 4.0 如果要以 IDE 的要求來看,還缺少必要的類型提示和文檔內(nèi)容的說明。這時候我們也可以選擇手動查閱開發(fā)者文檔,這是 Apple 對各類系統(tǒng)框架事無巨細的說明。在 Swift Playgrounds 更早版本的更新中,Apple 已經(jīng)將大部分的開發(fā)者文檔內(nèi)置到了 Swift Playgrounds 中,我們可以在工具中找到文檔的查詢?nèi)肟??;蛘撸覀兛梢允褂脼g覽器訪問 Apple Developer 開發(fā)者網(wǎng)站 查詢文檔。
Swift 語法入門:Swift Playgrounds 在更早版本中,已經(jīng)提供了游戲化 Swift 語言學(xué)習(xí)的各種模塊,如果你是 Swift 語言的新手,可以通過學(xué)習(xí)官方提供的學(xué)習(xí)編程 1、2、3 和其他一系列的學(xué)習(xí)模塊來探索 Swift 語言。
SwiftUI 入門:SwiftUI 是 Apple 發(fā)布于 2019 年 WWDC 大會的基于 Swift 的UI框架,結(jié)合了代碼 UI 編輯和 Storyboard 圖形化 UI 繪制的優(yōu)點。因此 Swift Playgrounds 默認(rèn)將 SwiftUI 作為創(chuàng)建一個空白 .swiftpm 工程后的初始界面模板。
如果你對 SwiftUI 還不熟悉,網(wǎng)上有不少優(yōu)秀的教程內(nèi)容可以學(xué)習(xí),你可以在 Swift Playgrounds 跟著教程一起學(xué)習(xí)。當(dāng)然,有時候自動補全功能的失效會給學(xué)習(xí)者帶來一點點困惑,我希望這個 Bug(但愿不是一個 feature)能夠被盡早修復(fù)。當(dāng)然,你也可以使用 UIKit 來實現(xiàn)界面,不過我認(rèn)為現(xiàn)有的工作流更為 SwiftUI 量身打造。
嘗試 AR 體驗:如果你想在 Swift Playgrounds 開發(fā)的 App 中體驗一下 AR,Apple 的 AR Quick Look 頁面提供了不少開放的模型。我們可以通過創(chuàng)建 ARQuickLookPreview 來加載各類 USDZ 文件。
社群:現(xiàn)在基于 Swift Playgrounds 開發(fā) App 的愛好者社群還在萌芽階段,因此找一個有 iOS 等生態(tài)開發(fā)經(jīng)驗的朋友能夠極大提高你的學(xué)習(xí)速度。當(dāng)然,你也可以創(chuàng)建一個社群讓好朋友們一起交流討論。比如少數(shù)派本身便是這樣一個不錯的社群,期待各位能在其中共同學(xué)習(xí),各顯神通。
驚喜與迷思
當(dāng)然,瑕不掩瑜,我依然為這一次 Swift Playgrounds 的重大升級深感高興。在 iPad 上進行「真正」地開發(fā) App 的呼聲從 iPad 推出之日起便此起彼伏。我在初中擁有第一臺 iPad 2 的時候,就千方百計地嘗試用它來開發(fā)點什么,而這一次的 Swift Playgrounds 升級則真正地表明了 Apple 的立場。
我一直不很在意關(guān)于 iPad 生產(chǎn)力的爭論。然而,我和身邊不少用戶切身體會到的,確實是 iPad 作為一個科技產(chǎn)品,給人源源不斷帶來的幸福感。書桌旁、畫架上、被窩里常常有著它和我形影不離。因此,和 Mac 相比,我一直覺得 iPad 是一個讓人更少異化、更多自由的產(chǎn)品形態(tài)。
因此 Swift Playgrounds 正如其名稱一般,也是一個大家能夠在代碼、多媒體內(nèi)容與知識的探索與交互中自如玩耍的地方。在未來,并不會人人都做程序員,但 Everyone Can Code 能夠真正讓科技作為一種人文素養(yǎng),讓每個人都徜徉其間,用開放包容和智慧的心態(tài),面向與人類走向共融共生的通用智能。
Apple 版的「元宇宙」布局
庫克表示他不說元宇宙一詞,Apple 看好 AR。
AR、VR、AI、物聯(lián)網(wǎng)、區(qū)塊鏈、數(shù)字孿生、量子計算、Web3、元宇宙…… 各種詞匯總是在不經(jīng)意間成為資本的寵兒,卻又在悄無聲息中急流勇退,大浪淘沙留下一波真正做事的人。
AR 作為在 iPad 先行的驗證,并被著力主推的技術(shù)能力,或許不久就會以全新的硬件形態(tài)與大家見面。運行在 iPadOS 之上的 Swift Playgrounds,結(jié)合 Apple 軟件全家桶的一系列應(yīng)用,將進一步將多媒體的創(chuàng)造能力帶給每一個人,而這次會將 3D 沉浸空間體驗的創(chuàng)造也逐步納入進來,Swift Playgrounds 4.0 正是起點。
往后,Swift Playgrounds 結(jié)合 Reality Composer App 和大幅升級改造的「地圖」應(yīng)用,使用 USDZ 格式文件,配合或?qū)⑼瞥龅拇┐魇接布O(shè)備,有可能能夠拓展成為一個「3D 沉浸式體驗編輯器」。它的潛力,可以是下一個時代的「Word」。當(dāng)然,我們要看 Apple 將如何打這一套組合拳。
最重要的是,機遇永遠不在一家公司手中。創(chuàng)新、創(chuàng)業(yè)、創(chuàng)造將是每個人的全新可能,而這正是 Swift Playgrounds 作為這樣一個賦能人的工具,在根本上的意義:Give people wonderful tools, and they'll do wonderful things.
凡是過去,皆為序章。