本文首发于 越狱指南 ,原作者  ,少数派经由原作者授权转载此文,仅对文章标题及正文版式、用词略有改动,点此 查看原文。


为什么我们要「折腾」效率应用

Larry Wall 说程序员(黑客)有三大美德:

懒惰、傲慢、缺乏耐性。

这里的懒惰说的是「为了让事情变得轻松一点而不辞辛苦」,原文是:

驱使你极力努力以减少精力的总的消耗的美德。

这话这么说可能看起来怪,但中文也有含义差不多的谚语——「磨刀不误砍柴工」。

使用电脑和手机这样的「智能」设备,想实现某个结果都有一定的流程,很多时候这些流程里的某些步骤是重复的。重复就会有两个弊端:第一是浪费时间,试想如果你能把某个常用的流程缩短了几步,那么每一次用这个流程你都省了一点儿时间,长久累积起来你能节省的时间就很可观了;第二个弊端是增加干扰,从锁屏就能看到的通知开始,智能设备里一切元素都是为了吸引你的注意力,步骤越多你受到的干扰就越多被打断的可能就越高,很多时候你想到一件事需要用手机完成,但是你拿出手机划了一会就忘了你当初为什么要拿出手机了。

所以在智能设备上我们需要那些能够缩短我们流程的应用,能够帮我们直击任务,从而让我们保持注意力并且节省时间。

试想你看到一个网页上有部分设计不错要分享给同事,在 iOS 上,它的流程就是这样:

截图 → 打开一个编辑图片的应用 → 选择刚才的截图 → 圈出你认为设计好的部分 → 保存到相机胶卷 → 分享给朋友 → 删除截图

这里面有许多多余的干扰,比如你会想「我用哪个图片编辑应用好?」打开图片编辑应用后有的可能还会让你登录;不同的编辑应用取图的逻辑不一样,有的是按从新到旧排有的是从旧到新排序,所以你需要找一下你刚截的那张图;然后修改完保存完分享的时候又要找一下刚保存的截图,而且注意你现在有两张截图了,一张是改过的,一张是原始截图;最后你要把两张图都删除掉。

通过 Workflow,这整个过程就会化简很多:它会自动地获取你刚截的那张图片,通过 Workflow 内置的 Aviary SDK,你获取了刚刚的截图就可以直接开始编辑图片,编辑完毕以后自动弹出 iOS 内置的分享选项(你也可以设定某个具体应用、某个具体联系人,这样每次就会直接通过你惯用的应用发给固定的同事),最后删除刚才的截图。由于图片修改并未保存到相机胶卷所以被修改的截图本来就不存在。

这样的操作,首先目前只有 Workflow 才能做到不说,关键在于 Workflow 使用的图形操作模式,让整个流程变得可见所以容易

有的人不看好这样的应用,因为在目前的 iOS 平台上它们看起来「实用性」不大,跳来跳去的,折腾半天可能也成功不了。说它们是效率应用还不如说它们是爱折腾那帮人的「玩具」。这让我想到凯文•凯利的话:

在1800年,200年前的时候,当时的高科技就是帆船,就是能够远航的船,非常的复杂,非常的高科技。它也是在全世界运输产品的好方式,这些运营公司都是全球性的公司,他们都是当时世界上最大的工作。当出现第一艘蒸汽船的时候,大家都嘲笑这些蒸汽船,说很可笑,很滑稽,很没有效率。他们经常出故障,然后成本也很高。大家把它们称作玩具,他们的确是玩具,因为他们没有用。但是他们做了一件事情是那些帆船做不了的,那就是他们能够往上游走。人类数千年来总是从上游到下游,但是你无法从下游到上游,这些蒸汽船就可以往上游走。然后,他们把这个小小的发明,这种小玩具的发明一直不断地持续,年复一年,日复一日,直到有一天在1875年的时候,基本上没有一家帆船运输公司留下来,他们都破产了。

Workflow 是一款让所有人开心的效率应用

能够缩短我们日常操作流程的效率应用 iOS 上已经出来了不少,Launch Center Pro、Drafts、Editorial、Pythonista 等应用各有所长,可以说各自坐稳了自己的江山,看起来这块领域已然无肉可分。但越狱开发者出身1Ari Weinstein 却在这种市场环境下做出了 Workflow ,不仅一炮而红,而且获得了几乎整个 iOS 生态圈的认可:从小白到 Power User,再到应用开发者一片赞誉;苹果在 Workflow 发布当天就将其置为 Editor's Choice;而越狱相关的开发者们也都向以前的同行道喜祝贺。

小白能喜欢说明它简单——在 Launch Center Pro 里很多行「天书」的动作,在 Workflow 里只要拖几个动作块过来排排队就行了;Power User 喜欢说明它坑深——对于 Power User 来说,一个工具如果一折腾就到底就没意思了,这个工具的能力必须大于 Power User 的脑洞,才能被 Power User 认可;上面提到的那些效率应用的开发者之所以无一不称赞 Workflow,不仅因为 Workflow 本身优秀,还因为 Workflow 与这些应用之间的配合相得益彰。Workflow 开售后甚至带动了 Launch Center Pro 的销量2;Workflow 这次在分享菜单里弄这么大的动静苹果都给了 Editor's Choice ,回想起 Launcher 的境遇,觉得有点看明白苹果的意思了:通知中心就是来看的,想办事就用分享插件,随你折腾;插件开发者的祝贺是理所应当的——不仅因为作者曾是越狱开发团队 Chronic Dev Team 的一员,还因为插件开发本身就是为了拓展 iOS 设备的能力,所以 Workflow 这样的「Pushing the boundaries of automation on iOS.」的应用自然会被他们承认。

Workflow 的操作逻辑

当你第一次进入 Workflow,这款应用会引导你做一个「Make GIF」的动作来让你了解整个应用的操作逻辑。基本来说,它就是拖拽和排列,只要你能想清楚整个流程发展的顺序,你就能成功地制作一个 Workflow。

就拿 GIF 这个来说,你当然必须先拍照,再合成 GIF。Workflow 的工作流程是从上到下的,所以你必须把拍照放在合成 GIF 之上,然后你要想分享这张 GIF,就得把分享放在 GIF 之下。整个逻辑很自然。

第一版 Workflow 给了你 超过150个内置的动作,在此之上作者还可以直接向应用加入动作而无需通过苹果审核,通过这些内置的任务理论上你可以做的事情非常多。所以它给了你足够的发展空间,就看你能不能根据自己的需求和能力制作出好用的 Workflow 了。

Workflow 的优势

前面提到 iOS 上的效率应用的格局似乎已经写定,但 Workflow 却能够在这样的格局下一鸣惊人,没有自身的优势是做不到的。

直观所以简单

易于摸索

对于效率应用新手来说,Workflow 的优势就是直观——「看得见」很重要。你知道你在干什么,你知道下一步将会发生什么,如果运行失败你也比较容易查出来问题出现在哪。让一个 Workflow 新手弄出来「将一张图片同时分享到微博和 Twitter 并配上想说的话」这样的动作很容易的,而在 Launch Center Pro 里通过 URL Schemes 来完成同样的话,恐怕就不是一个新手能够做到的。Workflow 门槛很低,会不会你都可以根据自己的需求把几个方块来回摆弄摆弄运行运行试试,先从两三个方块儿那种做起,慢慢把积木搭起来。

易于分享

做成一个 Workflow ,想分享给别人是非常容易的,只要点击 Workflow 界面右上角的齿轮就可以看到分享的选项。Workflow 的分享机制只要是生成一个链接,然后将链接通过你选择的分享渠道分享出去。任何人只要点这个链接就可以看到你的 Workflow 的大概内容,然后点按下载就可以直接下载到自己的 Workflow 里。下载了的 Workflow 可以直接查看具体的内容和编辑,所以这非常利于学习和交流。

易于学习

同时由于它直观,你不仅容易摸索,而且容易学习。学习有很多种,学校教授的内容由于系统性是很强的,所以我们一般要从头学起,从基础学起,那样的弊端就是漫长且枯燥。Workflow 不一样,Workflow 不一样,打开应用,你就可以看到顶部状态栏有个 Gallery:

Gallery 里内置了不少作者已经编写好的 Workflow 供你使用参考学习。你可以直接下载别人的 Workflow,看看他是怎么弄的。这样的应用实用目的很强,你有什么目标,你就参考什么方面的 Workflow,然后自己再结合自己的情况修改,就能做成一个为你所用的 Workflow。

哪哪都能用

大多数效率应用执行动作的时候最大的问题是「离不开自己」,每一次想启动某个特别的动作都需要进入特定的应用才能进行。Launcher 想到了从通知中心激活这些动作,然后就 被苹果封印了。Workflow 则是运用了 iOS 8 的 Extension,分享插件是 iOS 上覆盖度仅次于通知中心的操作界面,这就让 Workflow 在不越线的情况下超越了「一个应用」而遍布于 iOS 的各个角落。

结合 Workflow 支持 URL Schemes,它就能充当很多应用临时的分享插件,比如 Command-C、Instagram、Editorial 等等。

而且 Workflow 也可以在 Safari 里大显身手。比如下载某个视频网页中正在播放的这个视频;又比如在网页里选择了某一句话,把它按照「出处,引用文本,日期」的格式保存到 Evernote 等等。

独特的内置动作

Workflow 与大多数效率类应用最不同的一点是,它的主要内置动作不在于串联第三方应用的配合(当然和第三方配合得也很好),而是挖掘 iOS 内置功能。通过应用内部的引导你已经知道了 Workflow 可以调用相机,并且可以设定拍一定数量的照片后启动下一个动作。其它的内置功能还有获取联系人信息、查询日历中某一天的事件等等。在 Workflow 里,如果你使用 Apple 的地图应用的话,当你要计算到某地的事件的时候,它甚至可以让你先选步行还是坐车。

除此之外 Workflow 里有许多功能型3的内置动作是效率应用里独有的,比如把文件压缩、把结果制作成一张 PDF、把内容保存到 iCloud 等等。

而对于第三方应用它也有很多独特之处,比如你一定没有用过任何一款应用在分享照片到 instagram 的时候,是可以自动帮你把你想要加上的那句话给填好的。Workflow 就可以,而且仅是一个内置的动作。

复杂动作

Workflow 可以通过「Variable(变量)」、「If(条件匹配)」、「Repeat(重复)」、「List(列表)」、「Menu(菜单)」之间的配合来制作相对来说较为复杂的动作,这些是你不需要具备编程知识,只要思路清晰就能摸索出来的。

变量

举例来说,你要在 Day One 里记一篇模式化的日记4,里面要写上你今天读了什么书,做了什么有意义的事,吃到了什么特别的东西等等,最后可能还要附上今天拍到的一张好照片。这些内容在 Dayone 你打算用表格来呈现,所以会用 Markdown 来制作表格:

我们来看这个表格,「书名」「菜名」「事件」都是变量,它们是变化的,但表格左边那一栏的内容是每次都一样的,所以你不应该每次都制作这个表格,而应该让某个应用帮你把表格制好,你就直接填空就行了。这个活交给 Workflow 干非常合适,因为你可以通过「Ask for input」在 Workflow 里自制对话框:

按照图里的填好的话,每次你的 Workflow 运行到这个「Ask for input」,就会出现一个对话框,来提示你填写什么内容:

然后它你可以把你临时输入的内容设为变量,这些变量最后会全部进入表格结构里,一起发送到 Dayone。

变量是 Workflow 的神髓之一,变量让你整个 Workflow 变得更加灵活。比如你做一个兑换汇率的 Workflow ,你把两种货币如果定死(比如说是 USD 跟 CHY),那这个 Workflow 的功能就很局限,只能转换你设定的这两种汇率。但如果你把两种货币设为你临时填写(或通过列表选择)的变量,这个 Workflow 就能应付多种货币间的汇率转换了。掌握好变量你就可以通过 Workflow 做到很多其它效率应用做不到的事情。

条件

我们所说的条件就是「当'什么什么'满足的时候,就会发生'什么什么'。」这个「当」是假设,英文就是 If。

Workflow 提供了 If 语法,你把它拖到你的 Workflow 里就会看到:

If 框里有一个「String Contains」,它的意思是「字符串包含」,后面空余的部分是要你来填写包含的内容。这个动作的原理是从上一步的结果中匹配需要的字符,来精简选项(理想的话可以精简到一项),让整个 Workflow 更智能。

比如说搜索歌词,我在播客5里说这可能是上手 Workflow 以后的人玩的最多的一个东西了。但是大家一般做的都是「获取名称」——google.com/search?=||input||。这样做出来的 Workflow 还不如你直接从 Spotlight 搜呢对吧。我们用 Workflow 起码要让它直接打开正在播放的歌曲的歌词网页才过得去吧。这就需要用 If 来匹配内容,比如在 Google 搜索英文歌词,一般「Azlyrics」这个歌词站的内容都会出现在最前排,那么你就可以使用 If 来进行条件匹配,在「String Contains」后面输入「azlyrics」。这样的话你就能直接打开你搜索的歌词在 Azlyrics 这个网站的页面。

重复

玩手机的人都知道自己的手机里会经常留下很多屏幕截屏,这些截屏你要么是发给朋友看一下,要么是在社交网站上晒一下,要么是写测评要用到。无论什么用途,一部分截图在一次使用以后就没有保留的意义了。但是大多数人应该不会用完就删,所以低头看你手机相册你大概会发现很多截图。怎么一次性地选择所有截图,然后有选择的消灭掉这些截图?

用了 Workflow 的话你就会知道,它可以帮你读取截图,也可以一次性帮你都删了。但如果你想自己决定删哪张不删哪张,就需要用到重复。在 Workflow 里要用的是「Repeat With Each」这个动作。

Repeat 和 If 经常会搭配起来用,用于匹配内容会很有帮助。

Web 相关的动作

Workflow 这个应用目前能力的上限,应该就是它与 Web 编程相关的能力。如果你具备 JSON、正则表达式的匹配语法等知识,你就可以直接从开放了 API 的网站获取其实时的消息。

内置的 Gallery 里就有个 Workflow 是匹配正则表达式来获取二维码中的 html 链接:

比如你可以通过 Google Exchange Rate API 获得实时的汇率,你可以通过 Yahoo Weather API 获得实时的天气数据等等。然后你可以把它们作为你 Workflow 的一部分,设定变量,最后在 Workflow 里写出一个个汇率程序或者天气程序。

结语

一般这样的应用都要回答「适合我吗」这样的问题,但这样的问题其实只有了解自己使用情境的你才能回答。如果你担心你不会用,这问题不大,因为我接下来还会出教程,而且这个应用小白是很容易上手的。很多人包括折腾老手上手这个应用的困难在于不知道怎么用,不知道思维怎么从 Launch Center Pro 这样的应用逻辑里跳出来,结果就做了类似于「百度搜索」这样的谁都能干而且不能体现这款应用价值的 Workflow。在这点上,效率应用新手可能要比老手有优势,因为没有思维桎梏。

文章里影影绰绰地提到了一些 Workflow 的逻辑和用法,但是没有给出链接。这是因为这篇不是教大家怎么具体制作 Workflow 的文章,而只是简述 Workflow 是个什么应用。在之后的教程里,我会给把文章提到的 Workflow 还有我制作和搜集到的 Workflow (的链接)分享给大家,并且分析讲解值得学习的 Workflow。如果你很有欲望获得一些现成的 Workflow 并自己开始学习或者折腾,那么你可以看看 Reddit 的 Workflow 区(Workflow 的作者偶尔会出现在这里),或者人们分享到 Twitter 里的 Workflow 动作

Workflow 目前并不是个成熟的应用。硬伤方面就有中文支持不佳6、某一步运行失败就有可能闪退(或者有时竟然可以继续运行下去,但当然已经毫无意义)、偶尔会挂起(应用一直处于登录界面)、其他应用中打开 Workflow 时有时无、在其他应用运行 Workflow 后不消失……除此之外,使用体验方面的考量也非常一般,比如你做一个比较长的 Workflow 的话,每一次拖动作到你的 Workflow 里都得从最上面拖到最下面,应用本身要是特别稳定还好,拖到一半儿就闪退可真受不了。

就目前的使用体验来说,我想说它是爱折腾的人的玩具更为合适,但是 Workflow 的团队并不是一个只顾利益的态度高冷的商业团队,Workflow 的团队是一堆热血的年轻人,他们还在 Twitter 上招募那些乐于助人又想挣点外快的人作为 Workflow 的客服人员,所以我想他们是能够听进用户意见并能积极地进行修改的。

最后,如在播客里所说,我觉得这款应用的未来将会是一片光明。


  1. From Jailbreaks To App Store Awards, Developers Grow Up iPhone

  2. 见 Contrast 创始人 David Barnard 在 Twitter 上公布的数据

  3. 功能型动作就是它本身是一个完整的功能,而不是参数匹配之类的中继型动作。

  4. 模式化日记可以参看格志这款应用的思路,对于想写日记但不知道写什么的人来说,模式化日记是个很好的开端。

  5. TalkJB 第46期:关于 Workflow 的头脑风暴

一些 URL 里包含中文就会必然闪退,向上文提到的发送中文日记到 Day One 就会导致闪退。


Workflow 系列文章