Cookpad株式会社におけるJSON Schemaの活用事例
挑战
Cookpad Mart 是 Cookpad 株式会社重点投入的新业务之一。这是一个以生鲜食品为主的电商平台,街头的食材专卖店和地区的生产者都以销售商的身份参与 Cookpad Mart。便利店、药店、车站、公寓等各种场所都安装了专用的冰箱,作为用户的取货点。用户可以通过应用程序进行订购,并从冰箱中领取生鲜食品。
Cookpad Mart 正在开发面向销售商的管理后台,该后台提供商品注册、日常出货等功能。
Cookpad Mart 开发工程师盐出先生说:“商品种类和状态不同,需要输入不同类型的數據,但从列出所有项目的表格中,每次都选择合适项目进行输入非常困难。”需要根据商品种类和状态,提供不同的表格。
此外,仅在前端控制表格显示并不能完全防止错误数据注册。公司内部的运营人员会在商品上市前进行审核,但为了减轻商品审核的负担并避免错误,最好在后台进行验证后注册商品。
解决方案
开发团队也考虑过使用自己的代码生成复杂的表格,但他们对前端和后端的验证一致性感到担忧。因此,他们选择 JSON Schema 作为创建通用定义的机制。“我们决定采用 JSON Schema 作为能够验证复杂表格的机制。”盐出先生说道。
结果
JSON Schema 改善了商品注册时的准确性和体验,并大幅减轻了商品审核的运营负担。
此外,使用 JSON Schema 可以灵活应对需求变更。“即使将来出现新的需求,也只需更新 JSON Schema 的定义即可解决问题,轻松地在前端添加/更新表格显示控制逻辑、在后端添加/更新验证。”盐出先生说道。
主要成果
盐出先生表示:“主要成果是,以前新注册商品约有 10% 存在质量保证项目输入错误,但通过引入 JSON Schema,质量保证项目的输入错误几乎为零。”
关于 Cookpad 株式会社
Cookpad 是 Cookpad 株式会社在全球范围内运营的菜谱投稿和搜索服务。该服务在全球 76 个国家拥有平均每月 1 亿用户,支持 34 种语言,在日本拥有 550 万个以上共享菜谱,是日本最大的菜谱服务。
作为一家科技公司,Cookpad 株式会社致力于实现“让每个人都享受烹饪”的使命。我们认为烹饪是给人们、社区和地球带来幸福和健康的重要活动。Cookpad Mart 旨在让用户能够轻松获得新鲜优质的食材,从而提升烹饪体验。
“新鲜美味,现吃现买”是 Cookpad Mart 的指导原则之一,旨在更直接地连接用户和生产者。我们向用户提供新鲜食材、推荐特集、菜谱等魅力十足的提案。其中代表性的商品介绍写道:“爽脆的弹性和溢出的奶香,是新鲜马苏里拉独有的魅力。”
Cookpad Mart 目前仅在部分地区提供服务,但除了为用户提供获取新鲜食材的机制外,为了扩大业务规模,减少每个商品的审核和审批的运营成本也很重要。
开发优势
“我们需要在后端和前端应用程序中使用相同的逻辑。起初,我们考虑过创建自己的 JSON 格式,但我们想要避免这种情况,因为这会导致我们自己创建大量if
语句。”
开发人员经常会听到 DRY(Don't repeat yourself,不要重复自己)这个词。“我可以专注于构建 JSON Schema 的定义。之后,JSON Schema 支持的库会自动生成几乎所有内容。太棒了!”盐出先生说道。减少逻辑重复可以降低前端和后端实现不一致的可能性。
AI 通常与大量的if
语句进行比较,但经验丰富的应用程序开发人员通常会尽量降低复杂度和风险。通过删除大量的条件语句块来降低复杂度,简化了代码审查,并对持续维护任务产生了积极影响。“许多工程师都希望将if
语句降到最低限度。”盐出先生说道。
我们看到的许多 JSON Schema 都非常简单,但它们赋予了阅读文档的人强大的力量。“我对 JSON Schema 语法的种类感到非常惊讶。除了类型和字符串长度等简单的约束之外,还有oneOf
和If-Then-Else
等复杂的东西。”盐出先生补充道。
JSON Schema 已经存在相当长一段时间了,但条件验证是一个新功能。当您能够理解为了定义特定数据结构的约束而存在的多种方法时,JSON Schema 就会变得更加强大。“当我发现 JSON Schema 的丰富表现力时,我充满了自信地使用 JSON Schema。这太棒了!”盐出先生,你说得没错!
感谢工程师盐出先生和 Cookpad 株式会社帮助我们分享 JSON Schema 的使用案例。
注:本案例介绍的部分内容引用了 Cookpad 株式会社开发人员博客中的内容,经授权引用,链接为 https://techlife.cookpad.com/entry/mart-json-schema