跳转至

Apple 平台应用开发和 CCCC 参赛经历回顾

230305 预计要做经验分享/接受采访而准备的材料

Apple 平台开发起因、Swift / SwiftUI 学习过程、学习环境

我是电子工程系的同学,大一整个学年学了 C/C++ 之后,那个暑假有一个程序设计的课程大作业,就是做一个小应用。我记得当时用的是 Qt,使用 C++ 语言开发。因为我个人有记账的习惯,一直用 Excel 记很不方便,于是就想尝试开发一个记账的应用。学习 Qt 的开发方式,虽然最后完成的作品在我现在看来很简单,但是当时的成就感巨大。

往后我越来越觉得开发应用贴近实际的生活,因为现在每个人也都有了手机,获取应用也就是在应用商店点一下下载按钮,而生活中的各种计算需求数不胜数,开发趁手的应用感觉是最能便利人们生活的事情。然后我就开始尝试开发一些工具性的小软件。

大概是大二,我的主要目标放在开发 macOS 应用上,因为我使用的电脑是 Mac,也是这时学了 Swift 编程语言。Swift 语言可以说是很现代的高级语言,很多语法、API 都给人一种人性化的感觉,也很容易上手。我入门 Swift 主要是从官方的文档入手的,里面的案例都很有趣;我当时还看了 B站 https://www.bilibili.com/video/BV144411C7Gg/ 这个视频,有 C/C++ 基础看这个视频入门会很容易。

我印象中我是从 MIT 的 CS193p 入门的 iOS 开发,当时是 Apple 刚刚推出 SwiftUI,CS193p 也是第一次使用 SwiftUI 作为教学的框架。SwiftUI 确实很 swift,极大降低了开发的成本,让开发者可以把更多的时间花在思考、设计、打磨应用上面。

从大二我开始加入 THU iOS Club,也认识了很多做 Apple 平台应用开发的同学,有的同学作为独立开发者,在 App Store 上有好几个应用,在参加比赛期间,我也有几个开发上的具体问题和他进行了探讨。我还在社团里面做过几次讲座,提高同学们的开发能力,这也提高了我的表达能力。在每年六月,我也会关注 WWDC,在 Developer.app 中查看 Apple 的新 API、新的设计准则,这对提高我的设计能力有很大的帮助。

往后就是以赛促学了。大二的暑假参加比赛,第一次使用数据库、第一次调用 Apple AI 相关的 API;大三的暑假则是第一次编写复杂的 SwiftUI 界面、数据交互也有着全新的挑战。除了技术上的进步,我也逐渐对应用开发有了更多的理解,更能从用户的需求出发去思考应用存在的意义。

除了自己学习,一些移动应用创新赛官方组织的讲座也让我大开眼界,我印象最深刻的一场讲座是 Apple 的王恒进老师提到的 Good apps are ...,讲了优质应用所呈现的特点,一场讲座的内容都是精华。在参加比赛的过程中,与其他团队的交流也倍显珍贵。第二次参赛时决赛能线下举办,我也认识了不少有趣的朋友。

比赛灵感、解决的社会问题

浣熊财记

团队三人都有记账的习惯,尽管市面上的记账软件已经相当多了,但是我们都觉得现有的记账软件有不足,用起来不顺手;而且很多记账软件感觉用一段时间就不想用了,不够有吸引力,但是记账一旦停止,就是功亏一篑。考虑到很多大学生刚从高中进入大学、进入社会,对自己的开销没有一个准确的认知,我们就将目标定为创造一款青年爱用好用坚持用的记账软件。

我们最先做的事情是考虑让用户持续记账,有时产生了一笔花销,当时打开应用做记录确实很难,之后又有可能忘记。我们针对这一点推出了语音记账,打开应用,长按说话即可自动生成条目。我们还添加了截图导入,微信账单一键就可以导入浣熊财记。这些都大大降低了记账的门槛。

我们还做了一些记账习惯的调研,收集了不少记账数据,对这些内容做分析,最终确定了记账的条目:需要有标签让使用者关注某一笔特定的花销、需要有评级和故事让使用者回忆花销的意义。没有二级分类、所有条目可有可无,怎么自由怎么来,降低了记账门槛、提高了记账体验。

Audioc

Audioc 的主要目的是提高音频剪辑的效率。我们的队长姜依依是播客的创作者,很多时候播客录制简单、但是后期要做很多修剪,比如删掉口辟词和无关紧要的片段;对单轨、多轨片段进行调序。音频剪辑远没有视频直观,如果一遍一遍听判断需要处理的位置,那么将非常花时间。

我们针对这一点,结合语音转问题的技术,创造了 Audioc,成功将音频剪辑转为了文字编辑,删除复制粘贴都可以轻松在 iPad 上通过手势操作实现。以往需要反复播放的音频,现在直接通过文字全部呈现,播客制作效率极大提升。

Apple 科技

Apple 给出了很多可以便捷调用的 API,在浣熊财记中,我们的截图导入功能使用的 OCR 技术就是直接调用了 Apple 的 API、语音快捷记账也是调用了 Apple 的语音识别 API。Apple 作为全球数一数二的技术公司,每当学术界、产业界有新的技术出现时,Apple 往往也会以最快的速度提供方便易用的 API 供开发者使用。这一点确实可以让开发者接入最新的技术,让用户获得更好更新颖的体验。

上架、盈利

浣熊财记在决赛前顺利上架,现在在 App Store 搜索即可下载使用。Audioc 并没有上架,目前很多功能还不够完善。这里我也有一点关于创新赛的思考,其实很多应用在比赛结束之后都没有持续发展的动力,同学往往要专注课程,没有时间再维护项目;应用上架商店之后,也很难找到盈利模式。浣熊财记我们最初是想通过买皮肤/主题盈利的,但后来项目也就不维护了,过了几个月就开源了,成为其他同学学习的资料;Audioc 应该是最容易商业化的项目,队长姜依依也有过创业的想法,但是学生确实没有这个精力;这次比赛结束,姜依依到美国留学、我忙于找工作、保研和毕设,赵沐恩结婚举办婚礼,三人也都没有闲暇的时间,项目也只好搁置。

不过对于学生来说,盈利不是最关键的事情,参加比赛本身的经历已经有很多收获了,上架应用的过程也是一种体验,通过移动应用创新赛让大家认识了我们开发的应用、了解了我们努力的过程,其实这就已经很足够了。

难忘的经历

浣熊财记

一位女老师在复赛评审我们的项目时说,我们的配色有些灰沉。我们主要使用了棕色啊灰色啊这样的色调,我们三个男生的团队觉得这样的配色很符合浣熊的风格,但是老师一提醒,我们发现确实不够可爱。之后做设计的同学也去了解了颜色的搭配,修改了界面 UI 的对比度,决赛时呈现的作品直观上来看好看了不少。

这次经历很难忘,是因为这次经历让我认识到,一款好的应用不是开发者一个团队努力做出来的,而是通过用户的反馈不断进行迭代而提升的。一款好的应用应该不断将用户的体验放在第一位,这也就要求开发者必须要重视用户的反馈。

Audioc

最难忘的经历是在决赛现场。当时我们每个小组都在展厅展示自己的作品,很多同学都来到我们的桌前,我在 iPad 上一遍又一遍的演示 Audioc 的使用方法,一直在大声讲解,都有些口干舌燥。同学们也都呈现出很高的热情,聊了很多东西,也给了不少建议。这段经历难忘,主要是因为在疫情期间,这一种充分的交流其实很难出现;线下举办的决赛直接拉进了各个团队之间的距离,这一种机会实在是非常难得。

参加移动创新赛的意义

对于我,一名清华电子工程系的学生来说,移动应用创新赛让我明白设计的意义。信息院系的同学,拿到一个题目往往会直接开始求解、拿到一个需求就直接开始写代码。但参加过比赛之后,我认为把事情想清楚之后再动手开发是更正确的方式。开发应用的第一步是收集用户需求、做市场调研,看看这款应用有没有必要开发;确定需求之后,需要明确数据结构、需要有设计稿;然后才是后端开发和前端开发;最后是迭代优化。这种对应用开发的整体把握,是只有完整参加过移动应用创新赛之后才能有的思考。

未来

大三暑期我有一段时间在找工作,考虑过应用开发相关的工作岗位,我认为这个方向和用户很贴近,我倾向于用技术服务用户,感觉移动应用开发很合适。

我现在大四,前一段时间老师邀请我做校内移动应用开发课程的助教,我现在正在帮助准备相关的的授课内容。移动应用创新赛的经历让我对移动开发和设计有着很深入的理解,我相信我能做好这一份工作。

再往后我要去浙江大学计算机系读人工智能方向的直博,我想移动应用开发更会作为我的一项重要的技能,陪伴我在将来更好的呈现科研结果。