2022 年 1 月 17 日 星期一 ·11分鐘閱讀

クックパッド株式会社におけるJSON Schemaの活用事例

挑戰

クックパッドマート是クックパッド株式会社正積極投入的新事業之一。它是一個以生鮮食品為主的電子商務平台,城市食材專賣店和地區生產者都以銷售者的身分加入クックパッドマート。在便利商店、藥妝店、車站、公寓等各種場所,都設置了專用冰箱,作為用戶的取貨地點。用戶可以透過應用程式訂購,並從冰箱取出生鮮食品。

在クックパッドマート,他們正在開發一個銷售者管理畫面,提供銷售者登錄商品、進行每日出貨作業等功能。

「雖然需要根據商品種類和狀態輸入不同類型的數據,但要從列出所有項目的表單中每次都輸入適當的項目是非常困難的。」參與クックパッドマート開發的工程師塩出先生說。他們需要一種機制,可以根據商品的種類和狀態區分顯示適當的表單。

此外,僅在前端控制表單的區分顯示,並不能完全防止不正確的數據註冊。公司內部的營運成員會在商品開始銷售前進行審查,但為了避免商品審查的負擔和錯誤,最好是在後端進行驗證後再註冊商品。

解決方案

開發團隊也曾考慮使用自己的程式碼來產生複雜的表單,但他們擔心前端和後端驗證的一致性。因此,為了創建一個通用的定義,他們選擇了 JSON Schema 作為機制。「我們決定導入 JSON Schema 作為一種可以驗證複雜表單的機制。」塩出先生說。

結果

透過 JSON Schema,商品註冊時的準確性和體驗都得到了改善,並且大幅減輕了商品審查的營運負擔。

此外,透過使用 JSON Schema,他們能夠靈活應對需求的變更。「即使未來有新的需求增加,只需更新 JSON Schema 的定義即可解決,並且可以輕鬆地添加或更新前端的表單區分顯示控制邏輯和後端的驗證。」塩出先生說。

主要成果

"品質保證相關的輸入錯誤從 10% 降至 0%"

主要成果之一是,「過去,約有 10% 的新註冊商品在品質保證項目中存在輸入錯誤,但透過導入 JSON Schema,品質保證項目的輸入錯誤幾乎為零。」塩出先生說。

關於クックパッド株式会社

クックパッド是由クックパッド株式会社在全球營運的料理食譜投稿和搜尋服務。在全球 76 個國家,每月平均用戶數超過 1 億,支援 34 種語言,在日本擁有超過 550 萬個共享食譜,是日本最大的食譜服務平台。

クックパッドマート的冰箱
クックパッド株式会社的辦公室

作為一家科技公司,クックパッド株式会社致力於實現「讓每天的料理變得快樂」的使命。他們認為料理是為人類、地區社會和地球帶來幸福和健康的重要事物。クックパッドマート認為,透過讓用戶輕鬆取得新鮮且高品質的食材,可以讓料理變得更美好的體驗。

「在新鮮時享用美味」是クックパッドマート的指導方針之一,旨在更直接地將用戶和生產者連結起來。他們向用戶提供新鮮食材、推薦的特輯和食譜等有吸引力的提案。其中一個代表性商品的描述是:「緊實彈牙的口感和滴落的牛奶感,是新鮮莫札瑞拉起司特有的醍醐味。」

クックパッドマート目前僅在有限的地區提供服務,但除了讓用戶能夠取得新鮮食材的機制外,為了擴大業務規模,降低商品逐一審查和批准的營運成本也很重要。

開發優勢

「我們需要在後端和前端應用程式中使用相同的邏輯。最初我們考慮創建自己的 JSON 格式,但這樣就需要我們自己創建大量的 if 語句,所以我們想避免這樣做。」

"「多虧了 JSON Schema,我們能夠非常輕鬆地實現後端的驗證和前端的表單生成。這真是太棒了!」塩出先生說。他們估計使用 JSON Schema 後,驗證和表單實作的時間減少了一半以上。"

開發人員經常聽到 DRY「Don't repeat yourself(不要重複自己)」這句話。「我們只需要專注於構建 JSON Schema 的定義。之後,幾乎所有事情都由支援 JSON Schema 的函式庫自動產生。那真是最棒的時刻!」塩出先生說。透過減少邏輯的重複,可以減少前端和後端之間實作不一致的情況。

AI 經常被拿來與大量的 if 語句進行比較,但經驗豐富的應用程式開發人員通常會嘗試降低複雜性並減少風險。透過刪除許多條件區塊來降低複雜性,可以讓程式碼審查變得更簡單,並對持續的維護任務產生積極的影響。「許多工程師都想盡可能地減少 if 語句吧。」塩出先生說。

我們看到的許多 JSON Schema 都非常簡單,但它們為閱讀文件的人提供了巨大的力量。「我對 JSON Schema 的語法種類感到非常驚訝。除了類型和字串長度等簡單約束之外,還有 oneOfIf-Then-Else 等複雜的東西。」塩出先生繼續說道。

JSON Schema 已經存在相當長一段時間,但條件式驗證仍然是相對較新的東西。一旦理解了存在多種方法來定義資料結構的約束,JSON Schema 就會變得更加強大。「當我發現 JSON Schema 的豐富表現力時,我就可以自信地使用 JSON Schema 了。這真是太棒了!」塩出先生,您說得太對了!

我們衷心感謝工程師塩出先生和クックパッド株式会社協助介紹 JSON Schema 的應用案例。

註:本案例介紹部分內容已獲得クックパッド株式会社的許可,引用自其開發者部落格:https://techlife.cookpad.com/entry/mart-json-schema