如何在一周内开发一款Shopify应用

在一周内开发一个Shopify应用程序:2016年

在成为顾问的这些年里,我从客户那里看到过一些奇怪的开发请求。其中最有趣的一封邮件来自一位客户,他想要一台与Windows 100%兼容的Windows XP复制品。哦,他们有200美元的预算。

谢天谢地,这不是针对我的。

玩笑归玩笑,并不是每个奇怪的客户要求都是幻想。有些要求听起来很奇怪,但却是基于客户的实际痛苦。

也许,只是也许,他们的组织在工作方式上是独一无二的。也许他们的疯狂想法真的会为他们创造大量的价值。我们不应该忽视那些听起来很“不切实际”的要求,尤其是当客户显然已经花了很多心思的时候。

我听到其他Shopify合作伙伴谈论他们收到的疯狂请求,客户想要为他们定制Shopify应用程序。虽然这对一些人来说可能听起来很疯狂,但这听起来就是我平常的周二。

今天,我想解决这个问题,并向你展示创建一个定制的Shopify应用程序并不是那么疯狂或困难。事实上,这对你的客户来说可能是最好的选择。

把圆钉塞进方孔

通常情况下,客户请求自定义应用是因为他们试图通过改变主题或使用数十个应用商店应用来解决问题,但都不起作用。

要么他们需要一些超出主题能力的东西,应用商店只提供了一个通用的解决方案,要么他们根本不具备实现它所需的技能。

有时他们的问题是如此痛苦,你可以从他们的声音和文字中听到。最近,我的一位领导对我说:

“我已经尝试了市面上所有的应用程序,为了找到结合应用程序/代码/方法以获得相同结果的方法,我已经把自己逼疯了。”

你可能还会喜欢:如何为你的Shopify应用获得评论

当你只有一个工具时,如何构建一个Shopify应用程序

我们有时会对奇怪的要求做出条件反射的原因之一是,我们会被困在自己的舒适区。如果你所做的只是创建Shopify主题,那就是你要解决客户问题的方法。任何超出这个范围的要求都会给你带来紧张和困难。

后端开发人员、前端开发人员以及任何获得专业知识的人都是如此。

我们的自然反应是使用我们惯用的工具来解决客户的问题。有时我们甚至没有意识到还有更好的工具。

软件开发不是很难吗?

但开发自定义应用并不容易,对吧?难道它们不需要一个开发团队和很长时间来构建吗?

我们都知道至少有一个人花了几个月或几年的时间在他们的应用程序创意上——一个他们计划在下个月发布的应用程序(尽管“下个月”在过去的10个月里每个月都在重新安排……)。

对于每一个技术娴熟的团队花费数月时间开发一款应用的例子,也有另一个独立开发者在几个晚上和周末快速开发并发布应用的例子。有时,甚至在短短一周内。

你可能还会喜欢:构建应用:让设计具有一致性和可扩展性的3件事

我从零开始创建Dripify的过程

我将概述我用来构建我的第一个公开Shopify应用程序Dripify的过程。

虽然Dripify是应用商店中列出的一款公共应用,但同样的过程也可以用于为客户端构建私有应用。使用这个公共应用程序作为例子的好处是,我可以对过程中的每一步都更加开放。

当我开始使用DripiOB欧宝娱乐APPfy的时候,我以前做过客户端应用程序,所以我对Shopify的api有一些了解。不同之处在于,所有这些应用程序都是现有的应用程序,而我正在改进或修复一个可用的代码库。

对于Dripify,我必须从头开始。OB欧宝娱乐APP我必须创建并拥有它的每一部分,从身份验证和支付到用户界面。

最重要的是,我给自己设定了一个挑战。我会花一周的时间来开发Dripify,让它在周五下午之前上线,完成功能,并准备好让商家安装。

规划阶段

在一周内构建Shopify应用程序:计划由于时间有限,我不想直接进入开发阶段。这很容易导致过度构建,迷失方向,使用新工具,最终出现在YouTube上,并且通常会浪费大量时间。

我需要集中精力——不仅仅是避免分心,而是只专注于应用程序真正需要的功能。

在我计划开发周的前几天,我坐下来规划了应用程序应该(和不应该)做什么。我创建了一个路地图,这只是我对软件开发路线图的花哨称呼。在这篇文章中,我回答了以下每个问题:

  • 这个应用程序的目的是什么?
  • 将包含哪些功能?
  • 这些功能的构建需要多长时间?时间表是怎样的?

用我的地图回答这些问题是至关重要的。只有5天的开发时间,任何能够减少开发时间的方法都是有益的。

1.确定这个应用程序的用途

最大的问题,也是你应该首先考虑的,是这个应用程序的目的是什么?你为什么要建立它?它将如何帮助商家或你的客户?

如果这款应用是为你的客户开发的,那么回答这个问题就很简单了(当然,你也不能简单地回答“他们让我开发的”)。

你问你的客户。

你需要确保你用后续问题来探究他们的回答。你想要尝试发现他们请求的潜在原因,并与应用程序背后的业务原因联系起来。你的客户对话可能是这样的:

客户:我们想要一个应用程序,添加自定义折扣到这些产品。
你:为什么是这些产品?
客户:这些是我们需要关闭的。
你:你为什么要停售那些产品?
客户:它们卖得不好,我们需要仓库空间来建造新的生产线。
你:一旦你有了一款定制折扣应用,你将如何推广它们或关注它们?
客户:嗯…它们会更便宜,所以人们会买。
你:即使有自定义折扣,这些产品仍然不会出现在你的产品目录中。为什么不有一个flash出售事件与一些定制的定价,我们大力促进每一个一天在哪里?这样你就可以在几天内把库存卖光。

    有时,就像上面的例子一样,当你发现潜在的原因时,你可能会发现他们想要的和他们需要的完全不同。这种需求成为应用程序的目的。

    如果你开发的应用不是针对客户,而是打算在Shopify app Store上公开销售,那么你就需要做一些市场调查,找出相同的需求和需求。ob欧宝娱乐app下载地址你可能需要和几十个商人交谈,或者收集他们过去写过的问题的笔记。

    无论来源是什么,精炼目的,直到你得到一些容易理解的东西。Dripify:

    “这个项目的目标是构建Shopify应用程序的MVP版本,允许Shopify商店轻松设置他们的Drip账户。”

    这个目的将成为您用于开发的过滤器。您只想处理直接支持该目的的特性,或者允许您构建这些特性的特性。其他任何事情都应该搁置或推迟。

    2.创建功能列表

    在你确定了应用程序的用途后,你需要头脑风暴构建什么功能。在这个阶段,用你能找到的所有资源写下你的每一个想法。不要限制自己,也不要担心你的日程安排。你想要尽可能多的想法,但不要关注它们的质量。

    一旦你有了一个功能列表,并且进行了头脑风暴,就该进行评估了。将每个想法与应用目的进行比较,只保留符合应用目的的想法。

    记住,你想要的是最小的东西。在第一个版本构建完成后,您可以随时回来扩展应用程序的功能列表。

    对于客户,我喜欢把它作为一个最小的阶段。第一个版本不会是完美的,但它会让客户现在就使用它,而不是在六个月内全部使用,从而更快地为客户提供一些价值。每次我这样做的时候,客户就会意识到许多“必须拥有”的功能被推到了第二阶段,实际上并不需要。

    3.缩短你的时间表

    计划的下一步是总结每个特征,并为每个特征创建一个粗略的估计。如果您对自己构建某个特性的能力没有信心,或者您担心其他事情,请确保您的评估反映了这一点。

    我喜欢做的是提供一个我很可能在的范围内的估计。我还包括一个自信百分比来表达我的感受。例如:

    • 特性:一到两天,90%的信心——这意味着很有可能需要一到两天的时间来形成。
    • 功能B:1到7天,50%的信心——这可能很容易(一天),但我也可能遇到困难(7天)。也很有可能需要超过7天的时间。

    通过Dripify的计划,我能够削减功能,并将我的总开发估计减少到3.75-4.75天——这完全在我一周的开发预算之内。一定要制定一个时间表,让自己跟上进度。一个谷歌日历扩展可以帮助把你的日历变成一个项目管理工具,以确保你在截止日期前完成任务。

    4.使用别人的工具

    完成路径地图后,我就可以开始开发了。OB欧宝娱乐APP

    周一早上,我启动了我的开发环境,打开一个空OB欧宝娱乐APP白代码文件,开始以最快的速度打字……

    事实上,没有。我没有。

    由于时间有限,我不想完全从头开始编写所有内容。相反,我开始寻找一些现OB欧宝娱乐APP成的工具和库来让事情变得更快。

    Shopify本身提供了许多集成库,因为我是用Ruby on Rails开发的,所以我能够充分利用它们的优点shopify_app图书馆。这个库与Ruby on Rails集成,为您提供了一个应用程序框架,并为您处理了许多集成。

    在开始开发之前,甚至早OB欧宝娱乐APP在计划阶段,尝试将一些工具和资源集中在一起,以进一步减少工作量。不要在使用未知库的情况下计划您的开发工作流,相反,如果它们成功了,就把它们看作是不错的奖励。

    你可能还会喜欢:合作:整合应用如何扩大用户基础

    开发阶段

    1.设置应用程序身份验证

    有了一些现成的工具,我就可以开始开发了。OB欧宝娱乐APP

    所有应用程序开发人员需要做的第一件事是与Shopify的认证和授权系统集成。的shopify_app库可以帮助实现这一点,但仍然需要进行相当多的配置和测试。

    有两种方法Shopify用于身份验证/授权:

    • OAuth或
    • 私有应用程序API密钥和密码

    OAuth被所有公共应用程序商店应用程序所使用,并为商家提供了一种安全可靠的方式来授权你的应用程序与Shopify,而无需将你的应用程序的用户名和密码提供给他们的商店。

    另一方面,每个商店都有能力创建私有应用程序,其中包括API密钥和密码。这些应用程序使用API密钥和密码,就像使用API的普通用户名和密码一样,并可以完全访问它们来自的商店。

    由于Dripify将成为一个公共应用程序,我不得不使用更复杂的OAuth。即使有shopify_app帮助,以及Shopify提供的所有文档,让正确的身份验证工作可能是一件苦差事。

    但是不要放弃让身份验证工作。尽管这是实际开发的第一步,但却是最困难的一步之一。一旦您弄清楚了它,开发的其余部分(相对而言)就容易了。

    如果你确实被卡住了,在Shopify论坛上搜索并在那里问问题。通常情况下,一个简单的修复程序就可以解决身份验证问题。

    2.不要创建私有应用

    如果你正在为客户端构建一个应用程序,你可能会想只创建一个私有应用程序。你可以跳过OAuth,你的应用程序将能够立即进行身份验证。

    出于几个原因,我不赞成这种做法。虽然它很容易设置,你的应用程序将受到限制:

    • 你不能将它嵌入Shopify管理面板
    • 要与多个应用商店共享应用,你必须自己创建所有代码或托管应用的多个副本
    • 该应用程序拥有对商店的完全读写权限,这可能是一个重大风险

    我建议你使用OAuth,创建一个像公共应用商店应用一样的应用,但不要列出它。我称之为未上市应用。

    然后你的客户端可以像安装其他应用程序一样安装应用程序。

    为了额外的保护,在应用程序安装过程中,你可以检查商店的url,如果它不是你的客户端的url之一,你可以拒绝安装过程。为shopify_app,把下面的代码放到你的sessions_controller.rb

    虽然考虑使用哪种身份验证模式很重要,但不必过于担心。稍后您可以在OAuth和私有应用程序身份验证之间切换。您需要迁移数据并进行一些谨慎的配置更改才能使其工作,但这并非不可能。

    说到url,了解更多关于什么规范的URL以及为什么它们如此重要。

    3.让OAuth开始工作

    在一周内创建Shopify应用程序:誓言在使用OAuth时,您希望正确的一个配置是作用域。作用域是Shopify用来允许您访问特定api的。例如,如果您需要处理订单,那么您将需要read_orders范围。要增加新客户,两者都需要read_customers而且write_customers范围。

    如果您没有选择正确的作用域,那么稍后在尝试访问它们时就会遇到问题。弄清楚为什么一个API不能工作并不有趣,特别是当您几天(或几周)前忘记为它添加作用域时。

    使用Dripify,我知道我只需要访问两个范围,就可以为我的客户安装Drip。一个作用域用于读取主题模板,另一个作用域用于写回这些模板。

    一旦我的OAuth配置设置好并开始工作,我就可以着手开发实际的应用程序功能了。

    4.谁需要用户帐户?

    在Trail Map中,我计划添加用户帐户和管理商店的方法。通过这种方式,商家可以让他们团队中的任何人访问Dripify。

    在使用OAuth之后,我意识到这个功能根本不会为商家增加价值。

    OAuth阻止了未经授权的用户访问应用程序。商店用户在访问应用程序之前必须访问Shopify Admin,这意味着他们已经在Shopify中拥有有效的帐户。因为我并不关心哪个用户将Drip片段安装到商店中,所以没有必要分离不同的用户帐户。

    最后,我完全取消了用户功能。这不仅为我节省了大约半天的开发时间,还减少了商家在应用程序中必须做的管理工作。现在应用程序的用户界面可以专注于安装Drip代码片段。

    专家提示:即使开发已经开始,如果能做出更好的应用,你也要保持改OB欧宝娱乐APP变计划的心态。更多地关注削减功能,而不是添加新功能。

    5.与Drip API集成

    有了这个新的关注点,我知道我需要简化代码段的安装。幸运的是,安装Drip是一个简单的过程(它只是一个添加到每个页面的JavaScript片段,类似于谷歌Analytics),尽管我确实需要在代码片段中包含Drip帐户ID。

    我可以要求商家登录Drip,找到他们的账户ID,并让他们将其复制到Dripify中。这样就行了,我的工作就简单多了。

    但这样做可能会出很多问题。此外,要求商家登录到另一个网站并手动复制数据并不友好。记住,这款应用的目的是让用户“轻松设置他们的Drip账户”。

    我决定坚持我的计划,试着自动完成。

    与Shopify一样,Drip也使用OAuth允许应用程序访问帐户信息。这意味着我可以设置Drip的OAuth,并为商家获得我需要的东西。

    不过还是有一些问题。

    你可能还会喜欢:Shopify应用命令行工具:更快地构建应用程序

    6.新api的麻烦

    首先,由于我已经在Shopify上使用OAuth,所以我需要将两者整合起来,以便它们能够共存。对于像OAuth这样复杂的东西,这是一个技术挑战。

    幸运的是,图书馆shopify_appuses for OAuth允许配置多个OAuth提供商,所以我可以在同一个应用程序中同时使用Shopify和Drip。它们有几个地方会交叉,我必须仔细跟踪每个地方,但大多数情况下它们都表现得很好。

    第二个问题是Drip的OAuth太新了,没有现成的库可以下载和使用——我必须自己编写。

    编写一个新的低级库并不是我真正想做的事情。当这样的技术问题发生时,有可能会对进度造成重大影响。这段代码并没有直接为我的用户增加价值,它只支持更高级别的功能。我在这里度过的每一段时间,都不会给商家带来直接的价值。

    值得庆幸的是,还有许多其他OAuth集成的例子,我可以从中获得灵感。通过其中的一个集成,我只能修改少量代码,并让它开始与Drip一起工作。OB欧宝娱乐APP

    我现在成功连接到Drip。

    不过,我的兴奋只持续了几分钟。

    与Drip集成的全部目的是为商家自动获取帐户ID。当时,Drip的API非常新,他们没有任何API方法来获取帐户信息。

    我拒绝被困住,联系了Drip的联合创始人,问我能做些什么。几个小时后,他回复了一个全新的账户API,我可以使用。成功!

    在这一切之后,我能够通过Drip验证我的商家,并获得我需要的片段帐户数据。

    一周内创建Shopify应用:Dripify尽管我浪费了大量时间,但我仍然有一个备选方案:最坏的情况下,我可以要求商家登录Drip并为我复制他们的帐户ID。这并不理想,而且会损害应用,但我仍然能够为商家提供一些价值。

    专家提示:当你在开发一款应用时,不要被突然出现的问题所蒙蔽。试着给自己一个备用方案、变通方案或其他解决问题的方法。任何开发通常都有不止一种方法。

    7.降低风险特性的风险

    在完成了Drip身份验证和帐户信息之后,剩下的就是将其添加到代码段,并将代码段安装到主题。

    这就导致了应用程序的第二个风险部分。

    由于Drip需要安装到每个页面,这意味着我必须将片段放入layout.liquid文件。这个文件几乎被Shopify商店中的每个页面使用。

    这意味着为了自动安装Drip,应用程序必须自动更新模板文件,而不会破坏网站上的所有内容。

    我知道我可以做三件事来降低风险:

    1. 在更改任何内容之前,应用程序会对模板进行备份,以防需要恢复
    2. 围绕这个替换代码进行的一系列单元测试将确保它能够处理许多不同的主题
    3. 围绕其他失败案例进行一些手动测试可以让我发现并处理任何其他问题

    最后,经过数十次自动和手动测试后,我确信代码段安装可以正常工作。我发现唯一的失败案例是多次安装代码片段,除了给网页增加一些额外的字节外,没有任何影响。

    通过围绕这个高风险特性进行自动化测试,我可以确保它在将来继续工作。

    一周够吗?

    随着代码段的安装工作,我在周四下午2:44完成了开发。这给了我一整天的时间来测试产品版本,并进行另一次详尽的代码审查。

    从开始到结束,Dripify的第一个版本花了25.5个小时开发和部署。这包括所有的开发、自动测试、手动测试、设置生产服务器和正式启动服务器。

    虽然我并没有将其算作一周开发的一部分,但在接下来的几周里,我又花了6个小时的时间去准备并将Dripify推向应用商店。其中大部分用于撰写销售文案、营销材料,以及与Shopify的应用团队合作,以获得Dripify的批准。ob欧宝娱乐app下载地址

    在一周内创建Shopify应用程序的经验教训

    在整个故事中,我一直试图阐明一些重要的观点,但现在我想重述一下,以便让大家更清楚地了解这些教训。

    Shopify应用程序开发只是另一种可学习的技能。如果你有开发经验或接触到它,构建一个Shopify应用程序并不是那么困难。就像任何软件开发项目一样,应用程序开发也有其难点,但这并不是一项你需要学习的全新技能。如果你能开发一个web应用程序并使用REST api,你就可以构建一个Shopify应用程序。

    构建一个小型、专注的Shopify应用程序只需要很少的时间。如果你有一个客户需要一个定制的应用程序,这也是真的,你可以与他们密切合作。根据他们的需要,您甚至可能发现您可以在比我使用Dripify更少的时间内创建他们需要的东西。我之前在两个小时内创建并测试了一个简单的私人Shopify应用程序。

    深入了解商家的实际需求。W海瑟,你是在为客户或应用商店开发,花时间去发现商家真正需要的是什么。不仅仅是表面的需求,还有实际的业务需求。你在这方面做得越好,你的应用就越有可能成功。

    制定一个计划,然后尽可能地削减。O一旦你发现了他们的需求,就花点时间计划如何去满足他们。将功能列表和评估放在一起。尽量删除或减少它们,同时仍然解决应用的核心问题。

    对于计划中有风险的部分,给自己一些选择,这样你就不会陷入困境。对于计划中任何有风险或高度不确定的部分,如果你的计划不完全像你想的那样进行,可以头脑风暴一下如何改变。如果您知道在需要时可以使用这些方法,那么您就可以灵活地处理可能出现的开发问题。

    如果你能更好地为用户服务,不要害怕改变你的计划。同理,你也要准备好完全抛弃那些不能让你更接近应用最终目标的部分计划。这可能意味着像我一样放弃一些功能,或者可能改变一个核心工作流程来让用户更容易。

    记住你的目标

    最重要的是,始终把最终用户放在心上。Shopify应用程序是为某个目的而构建的,通常以某种方式使商家受益为中心。如果你能对他们感同身受,总是从他们的角度看待你的应用,你的应用就会更受欢迎。

    为Shopify商家开发应用程序

    无论您是想为Shopify应用商店开发应用程序,提供私人应用程序开发服务,还是正在寻找扩大用户基础的方法,Shopify合作伙伴计划都将为您的成功奠定基础。免费加入并获得教育资源、开发人员预览环境和经常性收入分享机会。

    报名

    通过Shopify合作伙伴计划发展您的业务

    了解更多