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