ZOZO TECH BLOG
https://techblog.zozo.com/
ZOZO TECH BLOG
フィード

ZOZOTOWNフロントエンドのPR自動レビュー ── AIへの指示が守られない前提で、強制と指示を分ける設計
55
ZOZO TECH BLOG
はじめに こんにちは。ZOZOTOWN開発本部フロントエンドの菊地(@hiro0218)です。普段はZOZOTOWNのフロントエンドを開発するチームで、機能開発や技術課題の解決に取り組んでいます。 ZOZOTOWNのフロントエンド組織では、Pull Request(PR)を自動でレビューする仕組みを独自に構築しています。Claude Code GitHub Actionsを使った構成です。 PRでは、型チェックやlint、VRT(Visual Regression Test)のような機械的に確かめられることはCIで実施しています。一方で変更の意図と実装が合っているかといった機械的に確かめられな…
2日前

ZOZOTOWNのSwift 6対応、頑張りすぎない「はじめの一歩」
2
ZOZO TECH BLOG
はじめに こんにちは、プラットフォームエンジニアリング部ネイティブブロックのとしです。普段はZOZOTOWN iOSアプリの基盤開発を担当しています。今回は現在取り組んでいるZOZOTOWN iOSアプリのSwift 6移行の進め方と方針について紹介します。 Swift 6移行について最初に自分が着手した時「難しそう」「よくわからない」「本当にここまで大きく変えるのか」と思い、正直かなり腰が重かったです。ただ、実際にはSwift 6で何を達成したいのかという背景を深掘りしながら進めていくことで、ぼんやりと輪郭が見えてきた気がします。Swift 6移行は、完璧を求めて対応しようとするとかなり大変…
5日前

開発・検証環境のPR承認と負荷試験をAIに任せる ── SRE待ちを減らす線引きとハーネス
ZOZO TECH BLOG
はじめに こんにちは、SRE部 検索基盤SREブロックの花房と富田です。普段は、ZOZOTOWNの検索基盤における信頼性向上やコスト改善、インフラ運用を担当しています。 検索基盤の開発案件では、開発者とSREが役割を分担して本番リリースまでの作業を実施しています。その中で、インフラリポジトリのPull Request(PR)レビューと、リリース前の負荷試験はSREの作業待ちになることがありました。背景には、AI活用によるPRの増加や案件が集中する時期のSREチームのリソース不足があります。 そこで、SREの作業待ちを減らすため、PRレビューと負荷試験の中でも本番環境へ影響を与えない作業をAIへ…
9日前

歴史から紐解く、開発から9年が経過したサーバーレスサービスの「変化への追従」
ZOZO TECH BLOG
はじめに こんにちは、ZOZOMO部FBZブロックの杉田です。普段はFulfillment by ZOZO(以下、FBZ)が提供するAPIシステムを開発・運用しています。昨年からは、社内における開発者向けAI支援ツールの推進を担う専門チームも兼務しています。 FBZ APIは2017年にServerless Frameworkで構築を開始し、現在はAWS Lambda(以下、Lambda)の関数500本超、40個以上のスタックで稼働しています。サーバーレス自体の運用負荷は低い一方、9年間でツールの有償化やプラグインの保守停止、ランタイムのEOL、リソース上限といった「周辺環境の変化」への追従を…
16日前

GitHub ActionsとAIによる月次分析 ── Google Playストアレビューの考察レポートを自動生成
ZOZO TECH BLOG
はじめに こんにちは、グローバルプロダクト開発本部ZOZOFIT USブロックの平川です。普段はZOZOFITの身体計測に関するデータを分析しています。 ZOZOFITは、スマートフォンで身体を3D計測し、体型の変化を記録・管理できるボディマネジメントアプリです。アメリカを中心に海外へ展開しています。 今回ZOZOFIT開発チームでは、Google PlayストアのレビューをAIで分析し、リリース情報も加味した考察レポートを自動生成する仕組みを構築しました。本記事では、この仕組みの設計と運用について紹介します。
19日前

Everpure FlashArrayで実現するランサムウェア対策 ── 基幹データベースの不変スナップショット運用
ZOZO TECH BLOG
はじめに こんにちは。EC基盤開発本部 SRE部 カート決済SREの遠藤です。 普段はカート決済に関連する機能のリプレイスや保守運用をメインに、ZOZOTOWNのDBREとして活動しています。 近年、ランサムウェア攻撃が世界中で猛威を振るっており、企業のデータ保護は喫緊の課題となっています。特にデータベースは企業活動の根幹を支える重要な資産であり、万が一の攻撃に備えた対策が不可欠です。 本記事では、Everpure社(旧Pure Storage社)のストレージ製品「FlashArray」を活用したランサムウェア対策をご紹介します。対象はZOZOTOWNの基幹データベースであるMicrosoft…
23日前

Digdag on GKEからManaged Service for Apache Airflowへの移行と監視の紹介
ZOZO TECH BLOG
はじめに こんにちは、MA部のMA基盤開発ブロックの@gachi-muchi-engineerと松岡(@pine0619)です。 MA部では、メール、LINE、プッシュ通知などを配信しています。配信に必要なデータの生成や夜間の集計など、複数のワークフローを運用しています。これまで、これらのワークフローはGKE上に構築したDigdagで実行していました。Digdagの構成や運用については、以下のテックブログで紹介しています。 techblog.zozo.com Digdagは、ワークフローを定義して実行するための便利なツールでした。一方で、近年は開発が活発ではなく、利用中に発生した問題や機能不足…
25日前

増え続けるGoのテストに対応するGitHub Actionsのテストシャーディングと高速化
ZOZO TECH BLOG
はじめに こんにちは、ECプラットフォーム部の権守です。普段はZOZOTOWNの会員基盤の開発に携わっています。 会員基盤では機能追加やリプレイスを継続しており、それに伴ってテストコードも増え続けています。テストが増えること自体は品質を維持する上で必要ですが、GitHub Actions上のテストにかかる時間も徐々に長くなっていました。具体的には、ワークフロー開始から完了までの実経過時間(以下、wall-clock)は13分前後となることが多い状態でした。 そこで、wall-clockを短縮するとともに、今後のテスト数の増加にも対応できるよう、テストのシャーディングを中心に実行方式を見直しまし…
25日前

embeddingベースの推薦システムでA/Bテストを高速に回すための配信基盤REP
ZOZO TECH BLOG
はじめに こんにちは、データシステム部推薦研究ブロックの寺崎(@f6wbl6)です。 ZOZOTOWNでは、ユーザーと商品を同じベクトル空間で表現するembeddingをTwo-Towerモデルで学習しています。このembeddingを複数の推薦施策で共有できるEmbedding基盤を運用しており、過去のテックブログで紹介しました。 techblog.zozo.com このEmbedding基盤を活用することで、新しい推薦施策の立ち上げ時に新たなモデル構築やモデルのためのインフラ整備等をゼロから行う必要がなくなり、立ち上げ期間を大きく短縮できました。この基盤を使った汎用推薦システムの構築事例も…
1ヶ月前

アラート対応のAI自動化で考える、思考フローの再現とハーネスによる安全設計
ZOZO TECH BLOG
はじめに こんにちは。データシステム部・MA推薦ブロックの伊藤(@rabbit_x86)です。私たちのチームでは、ユーザーに最適な配信を届けるために、LINE・Push通知・メールなどのマーケティングオートメーション(MA)に関する推薦システムを開発・運用しています。 本記事では、推薦システムの運用で発生するアラート対応をAIで自動化した取り組みを紹介します。人間の対応フローを「障害分析・対応の考案・敵対的レビュー・実行」の4つのタスクに分解してAIで再現し、対応にかかる工数とコンテキストスイッチを減らすことを狙います。本番環境で安全に動かすため、AIの権限と実行できる操作を段階的に絞り込むハ…
1ヶ月前

モジュール単位で進めるFAANSのNavigation Compose移行
ZOZO TECH BLOG
はじめに こんにちは、ブランドソリューション開発本部FAANS部の田中です。ショップスタッフの販売サポートツール「FAANS」のAndroidアプリを担当しています。本記事では、FAANSアプリでFragmentベースのナビゲーションからNavigation Composeへの移行を、機能開発と並行してモジュール単位で進めた取り組みを紹介します。 約半年で、8つの機能モジュールのうち5つの移行が完了しました。ゴールは、画面遷移の管理をActivityに1つ置いたNavHost(Navigation Composeで画面遷移を管理するComposable)へ集約することです。ただし機能開発とリリ…
1ヶ月前

DatastreamのBigQueryコストを92%削減できた取り組み
ZOZO TECH BLOG
データシステム部データ基盤ブロックの小泉です。データ基盤ブロックでは、社内のさまざまな業務領域のリレーショナルデータベースを、DatastreamでBigQueryへリアルタイム連携しています。この基盤は各部門が分析やダッシュボード等で活用しており、私たちが横断的に管理しています。多くのチームが参照する基盤はクエリ費用がかさみやすく、かつ各テーブルの更新頻度を利用者側で一元的に把握することも難しいという課題がありました。 本記事では、staleness limit(データの更新頻度)の見直しによるクエリ費用削減の取り組みを紹介します。あわせて、その設定を一度きりで終わらせず、CI/CDによる自…
1ヶ月前

AIエージェントに影響調査と概算見積もりの一次請けを任せる ── 精度ではなく「見落とし」を潰す
ZOZO TECH BLOG
はじめに こんにちは、ZOZOTOWNのカート・決済・注文作成を担うバックエンドエンジニアの斉藤です。普段は開発に加えて、チームのマネジメントを担当しています。 影響調査そのものは、どのチームでも日常的に発生します。私たちの場合に問題だったのは、待たせる相手がいることでした。何か手を入れようとするたびに、影響範囲の洗い出し・実現可能性の判断・概算見積もりが必要です。これに毎回まとまった時間がかかります。その間、問い合わせ元である他部門は次に進めません。私たちの調査速度が、そのまま他部門の意思決定の速さを決めていました。 本記事で紹介するのは、この一次調査をAIエージェントのDevinに一次請け…
1ヶ月前

AWS ChatbotからArgo Eventsへ ── 認可・承認を備えたSlack ChatOps基盤の再構築
ZOZO TECH BLOG
はじめに こんにちは、EC基盤開発本部SRE部カート決済SREブロックの金田です。テックリードとして、ZOZOTOWNのカート決済機能のリプレイスや運用を担当しています。 カート決済SREブロックでは、Slackを起点としたChatOpsで運用作業の自動化に取り組んでいます。以前の記事で紹介したAWS Chatbotベースの基盤を約2年運用する中で、アクセス制御とツール追加コストの課題が見えてきました。本記事ではその課題と、Argo Eventsを軸にChatOps基盤を再構築した取り組みを紹介します。
1ヶ月前

対応工数を半減、リードタイムを6日から1日に ── Dify・Claude Code・Devinを束ねたSlack問い合わせ自動化
ZOZO TECH BLOG
はじめに こんにちは。検索基盤ブロックのXEIです。私たちのチームには、ZOZOTOWNの検索に関する問い合わせが社内から日々寄せられます。 本記事では、この問い合わせ対応を複数のAIエージェントの組み合わせでどう効率化したかを紹介します。読み終わる頃には、役割を分けたAIエージェントをどう組み合わせ、人間の関与をどこに残すと問い合わせの件数を維持したまま対応の負荷を下げられるのか、その設計の勘所を持ち帰っていただけるはずです。なお、本記事は「問い合わせに回答する」部分に絞り、管理・運用の自動化は扱いません。
1ヶ月前

ZOZOの基幹システムをステートレス化 ── 段階的なフロントエンドリプレイスに向けたセッションオフロード
ZOZO TECH BLOG
はじめに こんにちは、EC基盤開発本部SRE部でテックリードを務めている杉山です。 ZOZOでは、長年運用してきた基幹システムを新しいアーキテクチャへリプレイスする取り組みを進めています。新システムではAPIにJava、フロントエンド+BFFにReact(TypeScript / Node.js)を採用し、インフラはKubernetes上に構築しています。 2025年11月に開催されたファインディ株式会社主催の「アーキテクチャConference 2025」では、「巨大モノリスのリプレイス──機能整理とハイブリッドアーキテクチャで挑んだ再構築戦略」と題して発表しました。基幹システムの課題と、ア…
1ヶ月前

ZOZOTOWN Androidのリリース準備を自動化 ── Jira AutomationとGitHub Actionsで手作業を減らす
ZOZO TECH BLOG
はじめに こんにちは、ZOZOTOWN開発2部Androidブロックの小林(@kako_351)です。普段はZOZOTOWN Androidアプリの開発を担当しています。ZOZOTOWN Androidでは、チーム内の運用でさまざまな作業を自動化しています。最近はリリース準備を、Jira AutomationとGitHub Actionsの組み合わせで自動化しました。本記事では、その仕組みと実装を紹介します。
1ヶ月前

ZOZOTOWN Androidのマルチモジュール構成を段階的に整理する
ZOZO TECH BLOG
はじめに こんにちは、ZOZOTOWN開発2部Androidブロックの大江です。普段はZOZOTOWN Androidの開発を担当しています。 ZOZOTOWN Androidは10年以上にわたって開発されています。機能追加を重ねる中で、特定のモジュールが肥大化したり、モジュール構成が複雑になったりしたため、改善に取り組んでいます。 本記事では、こうしたモジュール構成について、課題とその解決に向けて段階的に進めてきた取り組みを中心に紹介します。
1ヶ月前

Claude Codeとの会話を、チームの記憶にする ── 開発の文脈をメモリに残して共有する仕組み
ZOZO TECH BLOG
はじめに こんにちは、ZOZOTOWN開発本部Webバックエンドブロックの和氣です。普段はZOZOTOWNのバックエンドを担当しています。 日々の開発にClaude Codeを使っています。使ううちに、仕様や経緯を毎回プロンプトで説明し直していることに気づきました。そこで、Claude Codeとの会話をMarkdownで残し、作業に合わせたコンテキストをClaude Code自身が組み上げるようにしました。以降、残したMarkdownを「メモリ」と呼びます(Claude Code標準のメモリ機能とは別物です。違いは後述します)。 現在、メモリは個人に閉じず、職種を跨いで十数人で共有しています…
1ヶ月前

既存システムのAI分析ワークフローを作り直す ── レビュー負担を減らす3つの改善
ZOZO TECH BLOG
はじめに こんにちは、ZOZOTOWN開発2部Webバックエンドブロックのぐらです。普段はZOZOTOWNのバックエンド開発を担当しています。ZOZOTOWNのリプレイスでは、既存システムの仕様を正確に把握することが欠かせません。私たちはこの分析にAIを活用してきました。しかし、人間による追加調査がまだまだ必要という課題を抱えていました。本記事では、AIによる既存システムの分析ワークフローを作り直した過程と、そこで得られた知見を紹介します。
2ヶ月前

「みんなのもの」の在庫は、1つのドメインとして成立するのか ── 20年もののモノリスから境界と責務を決めるまで
ZOZO TECH BLOG
はじめに こんにちは、ECプラットフォーム部マイクロサービス戦略ブロックの半澤です。普段は、システムアーキテクチャの全体最適化など、モノリスからマイクロサービスへシステムをリプレイスする過程で生じる、複数チーム間の課題解決を主に担当しています。 本記事では、ZOZOの基幹システムリプレイスにおいてモノリスからマイクロサービスへ移行するために、イベントストーミングを起点にドメイン間の境界と責務の決定をどのように進めたかを紹介します。あわせて、既存コードの解析と付箋への変換に使ったClaude CodeのAgent Skillsの設計を、付録で共有します。なお、イベントストーミング(業務で起きる出…
2ヶ月前

Girls Meet STEM 2026夏「ZOZOTOWN・WEARを支える技術と働き方を知ろう!」を開催しました!
ZOZO TECH BLOG
はじめに こんにちは。Developer Engagementブロックの@wirohaです。8月21日(金)に、ZOZOにて中高生女子を対象とした体験イベント「ZOZOTOWN・WEARを支える技術と働き方を知ろう!」を開催しました。 これは公益財団法人山田進太郎D&I財団が実施する「Girls Meet STEM」プログラムの一環です。中高生女子がSTEM(科学・技術・工学・数学)分野で働く人やSTEM分野で学ぶ学生、実際の現場に触れることで、将来の可能性を広げる機会を提供することを目的としています。ZOZOではこの活動の意義に共感し2024年より参画しており、今回は4度目の開催です。 今回…
2ヶ月前

AI Engineer World's Fair 2026参加レポート ── Software FactoriesとAgentic Commerce
ZOZO TECH BLOG
はじめに こんにちは、検索基盤部 検索グロースブロックの朝原です。普段はZOZOTOWNの検索体験の改善を担当しています。2026年6月29日から7月2日までサンフランシスコで開催されたAI Engineer World's Fair 2026に現地参加しました。本記事では、現地の様子に加えて、特に気になったセッションをSoftware FactoriesとAgentic Commerceの2つのテーマに分けて紹介します。
2ヶ月前

AIエージェント向けコーディングルールをArchUnitで機械的に検証する運用
ZOZO TECH BLOG
はじめに こんにちは。商品基盤部の藤本です。 私たちのチームでは、生成AIコーディングエージェント(以下、AIエージェント。主にClaude Code)を使って開発に取り組んでいます。以前からAIエージェントに一貫した実装をしてもらうため、ルールを書いて指示する運用を続けてきました。しかし、ルール同士の矛盾やレビューだけでは遵守を保証できないといった課題がありました。本記事ではこの課題と、ArchUnitによる機械的な検証へ落とし込むまでの取り組みを紹介します。
2ヶ月前

日本語CLIPを活用した検索ランキング学習の精度改善検証
ZOZO TECH BLOG
はじめに こんにちは、検索基盤部の検索グロースブロックに所属するしゅがーです。普段はZOZOTOWNの検索体験を改善する施策の企画と開発を担当しています。 近年、CLIPをはじめとするマルチモーダルモデルの登場によって、画像とテキストを同じ特徴空間で比較できるようになりました。一方で、検索結果の並び順を学習するランキング学習(LTR: Learning to Rank)では、行動実績やテキストに基づく特徴量を使うことが一般的です。画像の情報をどう取り込むかには、まだ検討の余地があります。 本記事では、日本語CLIPモデルで算出した商品画像と検索クエリの類似度をランキング学習モデルの特徴量として…
2ヶ月前

チームの人数が減っても仕事を回す ── AIとGitHub Actionsによる開発ワークフロー改善
ZOZO TECH BLOG
はじめに こんにちは、WEAR開発部Webブロックの吉田です。普段はWEARの新機能開発や運用改善を担当しています。 Webブロックでは、異動によりメンバーが減ったことで、開発ワークフローのさまざまな工程で効率化が求められていました。本記事では、AIエージェントとGitHub Actionsによるワークフローの改善を取り入れ、アイデア出しやプルリクエストレビュー、エラー監視、KPTを改善した取り組みを紹介します。
2ヶ月前

Thompson Samplingのコールドスタート対策 ── 過去の実績データを事前分布に活かす
ZOZO TECH BLOG
はじめに こんにちは、検索基盤部 検索グロースブロックの広渡です。検索グロースブロックでは、ZOZOTOWNのある施策において、ユーザーに表示するコンテンツを複数の候補の中から選んで配信しています。どの候補がユーザーの反応(クリックなどのエンゲージメント)を最も得られるかは事前にわかりません。そこで、配信結果から学習しながら最適な候補に配信を寄せていくMulti-Armed Bandit(MAB)、なかでもThompson Samplingの活用を検討・検証しています。 MABは、広告配信のクリエイティブ選択・検索結果ページに差し込むレコメンドモジュールの出し分け・アプリのホーム画面のコンテン…
2ヶ月前

26卒エンジニアがAI時代に日本CTO協会の「新卒エンジニア合同研修」で学んだこと
ZOZO TECH BLOG
はじめに こんにちは。技術戦略部CTOブロックのikkouです。ZOZOでは毎年、独自の新卒研修を実施しています。さらに昨年からは、日本CTO協会の新卒エンジニア合同研修にも参加しています。参加は任意として、興味を持つ研修を自身で選択できるようにしました。本年度は2名の新卒エンジニアが参加しました。本記事では参加者によるレポートをお伝えします。 目次 はじめに 目次 日本CTO協会の新卒エンジニア合同研修とは 第1回:関係の質を上げるファシリテーション 第2回:Google Cloudで実現するクラウドネイティブ・アーキテクチャ 第3回:エンジニアの働き方とキャリア論 第4回:Codexを使っ…
2ヶ月前

GoogleドライブからBoxへの大量データ移行 ── Box Shuttleと現場の協力で乗り越えた移行の壁
ZOZO TECH BLOG
はじめに こんにちは、コーポレートエンジニアリング部のてぃーです。普段はGoogle WorkspaceやBox、SlackといったSaaS製品のアカウント管理や運用改善を担当しています。 当社では、Googleドライブを運用する中で生じていたセキュリティ面・ガバナンス面の課題や、利用者からのMicrosoft系ファイルの機能要望を解決するため、Boxを導入しました。 しかし、ただBoxを導入しても、業務データがBox上になければ課題は解決できません。そこで私の所属する部署では2024年5月より、GoogleドライブからBoxへのデータ移行に取り組んでいます。 一般的に、異なるシステム間のデー…
2ヶ月前

DBの性能検証を人の判断に委ねない ── ストアド改修の実行計画をCIで取得しLLMがレビューする仕組み
ZOZO TECH BLOG
はじめに こんにちは、SRE部カート決済SREブロックの伊藤(@_itito_)です。普段はZOZOTOWNのカート決済機能のリプレイス・運用・保守に携わっています。また、データベース(以下DB)領域でのテックリードを務めており、DBREとしてDB周りの運用・保守・構築に関わっています。 ZOZOTOWNでは以前からリプレイスを進めており、SQL Serverを中心としていたDB構成も、マイクロサービス化に伴ってAurora MySQLなどへ分割されてきました。 かつてはビジネスロジックの多くを、SQL Serverのストアドプロシージャ(以下、ストアド)が担っていました。データの近くで処理す…
2ヶ月前