关于「幕后」

我们每天会接触大量的软件、硬件,但是多数时间下,都只是以固有的「使用者」视觉去体验和评判,快节奏的模式让我们没时间体会太多背后的理念。「幕后」栏目 因此而生,我们会不定期邀请一些制作者,讲述他们在产品开发 / 制作过程中的点滴。


作为截图管理工具 LightScreen 的开发者,匡俊宇(Jonny)在 2015 年推出过一款叫做 Dictionary 的词典应用,它解决了大部分词典应用操作繁琐、启动速度慢以及颜值过低的问题,达到「舒服」的目标,全新推出的 极光词典 作为 Dictionary 的二代产品,不仅改头换面,拥有了全新的图标和名称,也在前作的基础上进一步打磨了细节。

在 2016 少数派年度盘点 中, 极光词典入选了「2016 年最值得关注的独立应用」 榜单,我们借此机会采访到了开发者 Jonny,让他来和我们一起谈谈开发背后的故事以及参加 WWDC 的经历。

π:介绍一下你自己。

Hello,我是 Jonny,匡俊宇,一名 iOS 独立开发者。我目前在 App Store 上架的应用有 极光词典LightScreenGoodPoint

π:市面上优秀的电子词典那么多的情况下,怎么想到要再做一款极光词典?

由于我自己常会使用 iPhone 和 iPad 查英文资料、刷 Twitter,词典应用我每天都会用到。但是我一直没有找到一款词典应用能让我用得顺心又顺手。

我理想中的词典应用的使用流程很简单:1. 输入词句;2. 查看释义;3. 查下一个(如果有)。但是,市面上的词典应用被我用了个遍后,我就发现,能把这个流程做到流畅的几乎没有,仅有的一两个又没有足够美观的界面。于是我就为我自己打造了极光词典。

现在,我有了畅快的查词典体验:一打开极光词典,虚拟键盘就会自动弹出来,我可以马上开始输入。输入完成后,按下回车,释义即刻呈现。要开始查下一个词句,直接输入就好:虚拟键盘仍然处于激活状态,之前的查询内容在新词句开始输入时自动清除。

π:相比与其他词典,你认为极光词典的优势是什么?它解决了怎样的需求?

优势在于简洁和高效,让你有效率地查词典。

极光词典新加入的 Spotlight 单词查询和第一代就有的 iPad 剪贴板自动探测功能,让你可以在很短的时间内完成词句查询并返回到之前的阅读中。

iPhone 上,我会在屏幕顶部下拉调出 Spotlight 系统搜索界面来查词。通常,查询到释义后我会直接按 Home 键返回。当我对一个单词感兴趣,希望进一步学习时,我会点按 Spotlight 条目来打开极光词典,以查看详细释义、了解关联词和将词条加入收藏等。


在 Spotlight 系统搜索界面查词

iPad 上,低频率查词时(比如刷 Twitter),我通过 Slide Over 快速调出极光词典来查词;高频率查词时(比如阅读长篇英语文章),我通过 Split View 将极光词典固定在屏幕一侧,当需要查词时,长按词句并拷贝,释义内容会自动显示在极光词典中,无需操作即可继续阅读。

iPad Slide Over 查词

iPad Split View 自动查询剪贴板内容

π:作为 Dictionary 第二代产品的极光词典,相比第一代,最大的变化在哪里?

变化有很多,套用 iPhone 广告语就是:The only thing that's changed is everything.

不过,要说最大的变化,我认为是新的释义界面。使用 iOS 内置词典数据的本地词典界面有了焕然一新的设计,支持暗色模式,而且加载速度更快。

全新的本地词典释义界面

π:在开发极光词典(Dictionary)的过程中,你遇到的最大困难是什么?

最大困难是构建 iCloud 历史记录备份和同步功能。

这个功能让极光词典可以在重新安装后自动恢复先前的查词历史记录,也让历史记录可以在登录相同 Apple ID 的设备之间自动同步。它是自动运行的,因此你无需在应用中做任何设置,it just works。

要实现 it just works 的魔法,需要克服很多难点。不过这些难点大都属于技术难点,在此就不做探讨了。

难点一一攻克后,最终得到的就是一个完全自动化的,稳定又快速的 iCloud 同步功能。实际效果就如视频中的这样,在一台设备上删除一些查词记录,并将另外几条记录加入收藏列表,短短几秒后另一台设备上的极光词典就会自动刷新到最新状态。 

iCloud 历史记录同步

π:你是怎样踏上独立开发的道路的?说说独立开发的乐趣和苦闷吧。

WWDC 2014 召开时,Swift 编程语言面世了,我被深深地吸引住了。我从此开始自学 iOS 开发。

由于我是软件专业的学生,已经有了 C 和 Objective-C 语言的基础,倒也只用了不到一个星期就入门了 Swift。很快,我就像很多 iOS 开发新人一样,学习 Stanford University 的 iOS 课程。

时间往后推进两个月,我开始做一些简单的应用来探索新内容和解决自己的需求。久而久之,掌握的知识变得丰富了,并且自己也爱上了用代码 create new things 的感觉,于是我便开始独自开发功能较多的大型项目。至此,我踏上了独立开发的道路。

再之后,就有了 LightScreen 这个截图管理应用。LightScreen 1.0 基于 iOS 8 最新的照片框架开发,并完全使用 Swift 编写,于 2015 年 2 月 18 日通过审核并上架 App Store。这是我上架的第一个应用。

独立开发中,我的最大乐趣是创造的乐趣。创意完全由自己来实现,应用完全按自己想要的样子来打造。亲手将一个应用从初步成型打造成功能俱全,不仅乐趣无穷,成就感也无限量。

还有探索的乐趣。每年的 WWDC 会推出大量仅限新系统使用的功能和 API(应用编程接口),探索这些新内容,就如同玩角色扮演游戏时探索新世界或新副本,其乐无穷。当然,抢在其它人前面探索的乐趣也就不言而喻了。

要说苦闷,我的独立开发倒也没什么苦闷(可能是因为我比较乐观 😂)。不过有一条,确实是够苦够闷的,那就是绕过系统 bug。iOS 不是完美的,系统中会存在一些 bug,我作为第三方开发者开发应用时没办法去修复这些系统 bug,当遇到时,只有想方设法绕过去,避免由于触发系统 bug 而带来麻烦(或者灾难)

π:你所开发的产品大多都是解决了一些小众需求,这些通常都是从自身出发还是通过观察这部份人群的需求?

多数是基于我自己的需求来做的。有些需求可能很小众,但因为那是我自己的需求,做出来的产品我自己也会经常使用,所以我都会反复「打磨」并做到出色,以避免强迫症发作。

我也会根据用户的使用反馈来适当调整现有功能和加入新功能,让产品能满足更多人的需求。

π:能不能讲一下你做一款产品,从有想法到落地大致是怎样的流程,你在其中都做了哪些工作?

在正式开发一款产品之前,我使用官方的 Reminders(提醒事项)应用管理产品创意。

我的 Reminders 中有一个「创意」列表。每当我有一个新需求,或想到一个新创意,我就会在这个列表中创建一条新 todo 并记录下来。

记录下来后,或有空闲时间时,我会通过 Google 和 App Store 寻找现成的解决方案。如果有并且能做的很好,我可能就会使用那款产品,并把创意 todo 标记为完成。如果没有,我则会考虑自己来实现。

当确定要自己来实现一项创意并取得一定进展时,我会在 Reminders 中将那项创意 todo 标记为完成,并创建一个新列表。我会使用新列表来记录待学习的相关知识、待实现的功能、待修复的 bug 等一切与这个创意项目相关的 todo。

π:有没有统计过自己的产品在海内外的销量情况,都是哪些人在使用你的产品?

作为主打英汉汉英的词典应用,极光词典的销量绝大多数都来自中国。LightScreenGoodPoint 的海外销量占比则维持在 30% - 40%。至于具体有什么类型的用户,Apple 不提供,我自己也没做调研,因此不是很了解。

π:你连续两年获得了 WWDC 奖学金(15 年和 16 年),和我们分享一下这两次都是如何申请的?

Apple 会在每年宣布 WWDC 会议时间的同时开放奖学金的申请通道。申请人必须是在校学生,申请时提交的内容必须全英文(WWDC 奖学金申请网页)。

2015 年,申请者需要提交一款使用 Swift 语言编写的应用,这个应用的核心功能必须是「介绍你自己(Introduce Yourself)」。在我为申请奖学金而专门开发的应用中,我列出了四个栏目,分别介绍了由我开发的应用 LightScreen、我的教育背景、专业技能和兴趣爱好。我在应用中使用了很多当时最新的系统特性,还加了几个彩蛋。

2016 年,申请者需要提交一款自己开发的应用并回答几个关于应用开发的问题。问题包括:应用选择使用某些功能和技术的原因,实现这些功能和技术的过程中遇到的最大的技术挑战和解决的方法,如果提供更多时间还会增加或提升的功能。这一次我提交的应用是 LightScreen 2

如果被选上了,会陆续收到 Apple 的祝贺信和电子门票。 

祝贺信

门票

π:参加 WWDC 是一种怎样的体验?

在现场观看 Apple 最新产品的发布会和众多精彩会议。最让我印象深刻的是 UICollectionView 的新特性这个会议。两位演讲者风趣十足,全场笑点不断,他们通过几个有趣的例子分析了导致视图滚动时掉帧的原因,和 iOS 10 为解决此问题引入的新特性。LightScreen 在充分适配了新特性后,应用主界面的滚动流畅度有了显著提升。


Craig 正在演示 macOS Sierra 上的 Siri

会议:UICollectionView 的新特性

参加各种各样的实验室活动,与 Apple 工程师探讨技术问题。我在 HealthKit 实验室找到了 Apple 工程师,反映了几个我在使用 HealthKit 时遇到的系统 bug。一位工程师看了我的代码后,告诉我他们已经在 iOS 10 中修复了这些问题,不过其中一种使用情况并没有测试过,希望我能在测试版上再试试,如果我发现问题依然存在,可以在提交 bug report 的时候注明已在 WWDC 与工程师联系过,这样他们会优先处理。同行的一个小伙伴则在 MapKit 实验室反馈了一个内存泄漏的 bug,工程师索性当场调出 MapKit 源代码来查找 bug 的起源。

 
 漫威:在真实世界中创造不同

 
 WWDC Bash 是星期四晚上的狂欢活动,Apple 会请来乐队,和可以吃到各具特色的美食。

 

除此之外,WWDC 还有很多经典和好听的歌曲,在现场我通过 Shazam 识别了许多歌曲,并将其整理成了歌单。如果你感兴趣, 可以在 网易云音乐 来收听:

π:现在有越来越多的在校学生会想要尝试独立开发做一些东西出来,对此你有何建议以及经验分享?

  1. 这是好事。但是,如果下定决心,就要持之以恒。
  2. 做你真正想做的产品,做你自己也需要使用、也乐于使用的产品。
  3. 英语太重要了!英语让你在获取新知识和搜索解决方案时事半功倍。遇到生词时,可以查极光词典。

(文末栏目图来自 Business vector designed by Akdesign


阅读更多「幕后」故事 >