科技是一种人文素养,我认为 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 StoreApp 可以选择自带的占位符或者自定义图片作为图标,并且打包编译,发布到 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 Developer 开发者网站 查询文档。
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.
凡是过去,皆为序章。
,