タグ

ブックマーク / techblog.zozo.com (169)

  • 大公開!バッチアプリケーションの品質を高めるZOZOの『バッチ開発ガイドライン』 - ZOZO TECH BLOG

    こんにちは。MA部の田島です。 弊社では開発ガイドラインというものを用いて、システムの品質を担保しています。今回私がテックリードを務めているということもあり、バッチアプリケーションを開発するためのガイドラインを作成しました。記事では「開発ガイドライン」と「バッチ開発ガイドライン」を紹介します。 バッチアプリケーション開発に限定したTipsはまとまっているものが多くないため参考にしていただければと思います。 開発ガイドラインについての紹介 冒頭でも紹介した通り弊社では、開発ガイドラインというものを用いてシステムの品質を担保しています。バッチ開発ガイドラインを紹介する前に、まず開発ガイドラインを紹介します。 開発ガイドラインの種類 開発ガイドラインは現在、以下の種類が存在します。 共通 Android iOS Frontend Backend Infra API Batch DB(Datab

    大公開!バッチアプリケーションの品質を高めるZOZOの『バッチ開発ガイドライン』 - ZOZO TECH BLOG
  • Software Design 2024年5月号 連載「レガシーシステム攻略のプロセス」第1回 ZOZOTOWNリプレイスプロジェクトの全体アーキテクチャと組織設計 - ZOZO TECH BLOG

    はじめに 技術評論社様より発刊されているSoftware Designの2024年5月号より「レガシーシステム攻略のプロセス」と題した全8回の連載が始まりました。 連載では、ZOZOTOWNリプレイスプロジェクトについて紹介します。2017年に始まったリプレイスプロジェクトにおいて、ZOZO がどのような意図で、どのように取り組んできたのか、読者のみなさんに有益な情報をお伝えしていければと思いますので、ご期待ください。第1回目のテーマは、「ZOZOTOWNリプレイスプロジェクトの全体アーキテクチャと組織設計」です。 目次 はじめに 目次 ZOZOTOWNリプレイスの背景、目的 背景 目的 柔軟なシステム 開発生産性 技術のモダン化 採用強化 ZOZOTOWNリプレイスの歴史とアーキテクチャの変遷 アーキテクチャの変遷 2004年〜2017年:オンプレミス(リプレイス前) 2017年〜20

    Software Design 2024年5月号 連載「レガシーシステム攻略のプロセス」第1回 ZOZOTOWNリプレイスプロジェクトの全体アーキテクチャと組織設計 - ZOZO TECH BLOG
  • GoでSQLの複雑なクエリのテストを書いてみた - ZOZO TECH BLOG

    はじめに こんにちは。ブランドソリューション開発部FAANSバックエンドブロックの佐野です。普段はサーバーサイドエンジニアとして、FAANSのバックエンドシステムを開発しています。 FAANSとは、弊社が2022年8月に正式ローンチした、アパレル店舗で働くショップスタッフの販売サポートツールです。例えば、コーディネート投稿機能や成果確認機能などを備えています。投稿されたコーディネートはZOZOTOWNやWEAR、Yahoo!ショッピング、ブランド様のECサイトへの連携が可能です。成果確認機能では、投稿されたコーディネート経由のEC売上やコーディネート閲覧数などの成果を可視化しています。 記事では、成果データの集計処理におけるBigQueryのクエリ実行処理のユニットテストをGoで実装した取り組みと、その際の工夫についてご紹介します。 目次 はじめに 目次 成果データの集計処理とは 抱え

    GoでSQLの複雑なクエリのテストを書いてみた - ZOZO TECH BLOG
  • GitHub Copilotの全社導入とその効果 - ZOZO TECH BLOG

    はじめに こんにちは、CTO/DevRelブロックの堀江(@Horie1024)です。ZOZOではGitHub Copilotを全社へ導入しました。投稿では、GitHub Copilotの導入に際して検討した課題とその課題の解決策としてどのようなアプローチを取ったのかを紹介します。 目次 はじめに 目次 GitHub Copilotとは何か? GitHub Copilot導入の背景と目的 導入する上での課題 セキュリティ上の懸念 ライセンス侵害のリスク GitHub Copilot for Businessの利用 導入による費用対効果 試験導入による費用対効果の見積もり 試験導入の実施 対象者の選出 アンケートの設計 試験導入の実施 アンケート結果の集計 アンケート結果の考察 費用対効果の見積もり 全社導入の判断 導入決定後のGitHub Copilot利用環境の整備 社内LT会 おまけ

    GitHub Copilotの全社導入とその効果 - ZOZO TECH BLOG
  • リアルタイムマーケティングシステムにおける行動ログの活用方法とログ収集機能を移行した話 - ZOZO TECH BLOG

    こんにちは、MA部MA開発1ブロックの齋藤(@kyoppii13)です。 ZOZOTOWNではユーザ行動に基づくキャンペーン配信を実施しています。この配信はリアルタイムマーケティングシステム(以降、RTM)と呼ばれるシステムによって実現しており、RTMでは配信トリガーや配信タイミングの最適化等にユーザの行動ログを利用しています。 この行動ログは、ユーザがZOZOTOWNのページへアクセスした際に、HTTPリクエストをRTMが直接受信する形で収集していました。しかし、RTMの既存のログ収集機能はシステム要件や運用などの課題を抱えていました。また、その一方で全社的にログを収集・蓄積する基盤も並行して運用されており、RTMはこのログ基盤を活用できていませんでした。そのため、RTMでもこの全社ログ収集基盤を利用することで既存の課題を解決しました。 記事では、RTMにおける行動ログの活用方法と、全

    リアルタイムマーケティングシステムにおける行動ログの活用方法とログ収集機能を移行した話 - ZOZO TECH BLOG
  • スクラムを導入してチーム状態を可視化し持続可能なチームを目指す - ZOZO TECH BLOG

    こんにちは、計測プラットフォーム開発部システム部SREブロックの市橋です。2021年4月に新たに発足したチームで未経験ながらリーダーを任され、気づけば約2年が経過していました。これまでを振り返ってみると、まっさらな状態から安定したチームができてきたと感じています。今回は新米リーダーとして試行錯誤する中で、チーム状態を可視化して健全なチーム運営を目指した話を紹介します。 チーム状態の可視化を考えたきっかけ リーダーを任された当初、チーム運営上の課題が色々あるのは認識していましたが、どこから手をつけるべきかが自分の中で判然としませんでした。メンバーの時に一個人として感じていた課題も、チーム全体を俯瞰して見た時にどれから優先的に取り組むべきか自信を持って判断できませんでした。まるで大海原のど真ん中にいきなり放り出された感覚でした。 そんな悩みを抱えていた時、全社に導入されているWevoxのアン

    スクラムを導入してチーム状態を可視化し持続可能なチームを目指す - ZOZO TECH BLOG
  • ZOZOFIT iOSアプリ開発の全貌 - ZOZO TECH BLOG

    はじめに こんにちは、計測プラットフォーム開発部アプリ部の中岡、永井、東原です。私たちのチームではZOZOMAT、ZOZOGLASSといった既存の計測機能の改善と、新規計測アプリの研究開発を担当しています。 その新規計測アプリとして、ZOZOFITというボディーマネジメントサービスを2022年の夏に米国でローンチしました。この記事では、ZOZOFITのiOSアプリを新規開発するにあたって、どのような技術要素を取り入れたかについてご紹介します。 目次 はじめに 目次 ZOZOFITとは 計測機能とその実装・統合 計測機能について 計測機能の実装・統合について iOSアプリの技術要素 使用技術 対応OS UIフレームワーク CI/CD パッケージ管理 その他ツール アーキテクチャ プロジェクト構成 今後の課題 おわりに ZOZOFITとは ZOZOFITは、ZOZOグループのZOZO App

    ZOZOFIT iOSアプリ開発の全貌 - ZOZO TECH BLOG
  • Cloud FirestoreからPostgreSQLへ移行したお話 - ZOZO TECH BLOG

    はじめに こんにちは。ブランドソリューション開発部FAANSバックエンドブロックの田村です。普段はサーバサイドエンジニアとしてFAANSのバックエンドシステムの開発をしています。 FAANSとは、弊社が2022年8月に正式ローンチした、アパレル店舗のショップスタッフの販売サポートツールです。FAANSでは、データベースとしてGCPのサーバレスでドキュメント指向のNoSQLデータベースであるCloud Firestoreを当初採用していました。Cloud Firestoreはサーバレスなので運用負荷が掛からず、また安価でスケーラビリティにも優れたハイパフォーマンスなデータベースです。 しかし、Cloud Firestoreを使用して開発・運用していく中で直面した様々な課題からGCPのフルマネージドのリレーショナルデータベースであるCloud SQLのPostgreSQLにデータベースのリプ

    Cloud FirestoreからPostgreSQLへ移行したお話 - ZOZO TECH BLOG
  • 【イベントレポート】AWSコスト削減事例祭りを開催しました【Autify x ZOZO x dip】 - ZOZO TECH BLOG

    はじめまして。ZOZO DevRelブロックの@wirohaです。2月1日に入社し技術広報などを担当していくことなりました。皆さまどうぞよろしくお願いいたします。 はじめに 2/22にAWSコスト削減事例祭りをAutifyさん、dipさんと共催しました。AWSを活用する3社が集まりAWSコスト削減についての事例を発表するオンラインイベントです。皆さまの関心が高いテーマのようで、約400名ものお申込をいただきました! zozotech-inc.connpass.com 素敵な配信会場はAutifyさんにご提供いただきました。ありがとうございました。 モデレータはZOZOの笹沢とdipの石川さん ※登壇者及び運営者は感染症予防をした上で、登壇時のみマスクを着用せずお話ししています 登壇内容まとめ 各社から合わせて次の4名が登壇しました。 塵も積もれば山となるコスト削減の話(Autify 松浦)

    【イベントレポート】AWSコスト削減事例祭りを開催しました【Autify x ZOZO x dip】 - ZOZO TECH BLOG
  • 推薦システムの実績をLookerでモニタリングする - ZOZO TECH BLOG

    はじめに こんにちは。ML・データ部/推薦基盤ブロックの佐藤(@rayuron)です。私たちは、ZOZOTOWNのパーソナライズを実現する機械学習を用いた推薦システムを開発・運用しています。また、推薦システムの実績を定常的に確認するためのシステムも開発しています。記事では、Lookerを用いて推薦システムの実績をモニタリングするシステムの改善に取り組んだ件についてご紹介します。 はじめに 改善の背景と課題 背景 課題 課題解決のために 要件1. 指標異常時の自動アラート 要件2. サマリの定期配信 要件3. 上記2つをSlack通知できること ダッシュボードの候補の比較 要件を満たすための設計 要件の実現方法 開発環境と番環境 実装 ディレクトリ構成 ダッシュボード ダッシュボード構築の流れ 配信実績に関して 推薦結果に関して GitHub Actions 1. 指標異常時の自動アラー

    推薦システムの実績をLookerでモニタリングする - ZOZO TECH BLOG
  • ZOZOTOWNの検索サジェスト機能改善の取り組み紹介 - ZOZO TECH BLOG

    こんにちは。検索基盤部の倉澤です。 ZOZOTOWNには、ユーザーが検索クエリを入力した際に、入力の続きを補完したキーワードを提示するサジェスト機能があります。この機能は一般に「Query Auto Completion」と呼ばれ、素早くユーザーの検索を完了させることを目的としています。 検索基盤部では、ZOZOTOWNの商品検索だけではなくサジェスト機能の改善にも取り組んでいます。今回は近年実施したサジェスト機能の改善事例を紹介します。2年程前にまとめたサジェスト改善事例の記事も併せてご覧ください。 techblog.zozo.com 目次 目次 システム概要 インデキシングフェーズ 検索フェーズ 改善事例 ユーザーインタフェース サジェスト候補のハイライト サジェスト機能の視覚的な奥行き サジェスト候補のキーワード ブランド名やショップ名の表記揺れ 検索クエリの読み仮名と異なるサジェス

    ZOZOTOWNの検索サジェスト機能改善の取り組み紹介 - ZOZO TECH BLOG
  • Cloud Composerにデータマート集計基盤を移行しました - ZOZO TECH BLOG

    こんにちは、MLデータ部データ基盤ブロックの奥山(@pokoyakazan)です。趣味の範疇ですが、「ぽこやかざん」という名前でラジオ投稿や大喜利の大会に出たり、「下町モルモット」というコンビで週末に漫才をしたりしています。私は普段、全社データ基盤の開発・運用を担当しており、このデータ基盤はGCPのBigQuery上に構築されています。そして、データ基盤内の各テーブルは、大きく分けて以下の2種類に分類されます。 システムDBのデータやログデータなどが、特に加工されることなく連携されている一次テーブル 一次テーブルから必要なデータを使いやすい形に集計したデータマート 記事では、後者のデータマートを集計するジョブを制御するワークフローエンジンを、DigdagからCloud Composerに移行した事例について紹介します。Cloud Composerとは、GCPにてApache Airflo

    Cloud Composerにデータマート集計基盤を移行しました - ZOZO TECH BLOG
  • ZOZOTOWN検索の精度改善の取り組み紹介 - ZOZO TECH BLOG

    こんにちは。検索基盤部の山﨑です。検索基盤部では、検索基盤の速度改善やシステム改善だけではなく検索の精度改善にも力を入れて取り組んでいます。 検索システム改善についての過去の取り組み事例は、こちらのリンクをご参照ください。 techblog.zozo.com また、ZOZOTOWNの検索ではElasticsearchを活用しています。Elasticsearchに関する取り組み事例はこちらのリンクをご参照ください。 techblog.zozo.com 記事では、ZOZOTOWNで近年実施した検索の精度改善の取り組み事例を紹介します。 目次 目次 はじめに ZOZOTOWN検索の処理フロー ZOZOTOWN検索改善の方針について 商品のリランキングロジックについて 商品のリランキングロジックの概要 特徴量ロギングの導入について 今後のZOZOTOWN検索の展望 おわりに はじめに ZOZOT

    ZOZOTOWN検索の精度改善の取り組み紹介 - ZOZO TECH BLOG
  • ElasticOn Tokyo 2022参加レポート〜エンジニア登壇とセッション紹介〜 - ZOZO TECH BLOG

    こんにちは。検索基盤部 検索基盤ブロックの佐藤(@satto_sann)です。 11月30日にElasticOn Tokyo 2022が行われました。今回弊社からは検索システムに関わるメンバー10名で参加して、そのうち2名が登壇しました。記事では弊社エンジニアによる登壇の様子や気になったセッションについて紹介していきます。 目次 目次 ElasticOn Tokyoについて プログラム 全体聴講 ユーザ分科会 テクニカル分科会 ZOZOエンジニアが2名登壇しました 参加メンバーによるセッション紹介 ベクトルサーチによる関連性の追求 ベクトル入門、類似性について Elasticsearchでのベクトル検索について サーバレスアーキテクチャへの道 闇の魔術から身を守る。スピードが肝心 | Elasticでスピードを加速させるには? 最後に 番外編:会場の様子をお届け ElasticOn To

    ElasticOn Tokyo 2022参加レポート〜エンジニア登壇とセッション紹介〜 - ZOZO TECH BLOG
  • RubyKaigi 2022参加レポート 〜エンジニアによるセッション紹介〜 - ZOZO TECH BLOG

    こんにちは!バックエンドチームマネージャーの@tsuwatchです! 2022/9/8〜10に三重県にて開催されたRubyKaigi 2022でプラチナスポンサーとして協賛し、スポンサーブースを出展しました。 technote.zozo.com technote.zozo.com 弊社からはWEARを開発するバックエンドエンジニア、SRE、PdMなど合計10名ほどが現地で参加しました。 我々が運営しているファッションコーディネートアプリ「WEAR」のバックエンドはRuby on Railsで開発しています。2013年にVBScriptで作られたシステムですが、2020年くらいからVBScriptのシステムをコードフリーズし、リプレイスをはじめました。現在もリプレイスを進めながら、新規の機能もRubyでどんどん開発しています。 また弊社ではRubyコミッタのsonotsさんがいたり、顧問とし

    RubyKaigi 2022参加レポート 〜エンジニアによるセッション紹介〜 - ZOZO TECH BLOG
  • ZOZOMO開発チームのユニットテスト戦略とテスト駆動開発 - ZOZO TECH BLOG

    はじめに ZOZOMO部プロダクト開発ブロックの木目沢です。 ZOZOMOで提供しているZOZOTOWN上での「ブランド実店舗の在庫確認・在庫取り置き」APIの開発に携わっています。 今回は、開発当初から現在に至るまでのユニットテスト戦略についてお話しします。 意識してテストを書いていたのにカバレッジが低い問題 2021年11月にリリースされたブランド実店舗の在庫確認・在庫取り置きの機能ですが、開発当初のユニットテスト方針は以下のようなものでした。 モデルのユニットテストは必ず書く モデル以外の箇所は可能な範囲でユニットテストを書く 当時は実装のコードよりテストコードを先に書くといった文化はなく、レビューでテストの有無や内容を指摘する程度のものでした。 カバレッジも取っており、GitHub上では見える化していたものの、いつの間にか確認する機会も失われていきました。 もちろん、リリース前には

    ZOZOMO開発チームのユニットテスト戦略とテスト駆動開発 - ZOZO TECH BLOG
  • BigQueryでのデータ追記処理における冪等化の取り組み - ZOZO TECH BLOG

    こんにちは、MA基盤チームの田島です。私達のチームではMAIL、LINE、PUSH通知といったユーザへの配信をしています。その中でもマス・セグメント配信という一斉に行う配信では、配信対象者のセグメント抽出にBigQueryを利用しています。また、配信前に必要なデータをBigQueryに連携しデータマートの集計をしたり、配信後には配信実績の登録などの更新処理をしています。 そのような処理を定期的に行っているため、ネットワークの問題やサーバーの不調などにより処理が途中で失敗することがあります。そこで、リトライを容易にするため、すべての処理を冪等にしました。今回その中でも、BigQueryの追記処理に絞ってどのように冪等化したのかについて紹介します。 目次 目次 マス・セグメント配信基盤の紹介 課題 冪等化 BigQuery追記処理に関する冪等化の取り組み 冪等にならないケース INSERT 初

    BigQueryでのデータ追記処理における冪等化の取り組み - ZOZO TECH BLOG
  • Datadogの活用ノウハウを一挙に公開・それを支える全社管理者の工夫とは #datadog_japan_meetup - ZOZO TECH BLOG

    こんにちは。ECプラットフォーム基盤SREブロックの高塚と巣立(@tmrekk_)です。 ZOZOTOWNはクラウド化・マイクロサービス化を進める中で、監視SaaSのDatadogを採用しました。この数年で多くの知見が蓄積され、今では様々なシーンでDatadogを活用しています。この記事ではそのノウハウを惜しみなく公開します。 ※記事は、先日開催されたDatadog Japan Meetup 2022 Summerにて発表した内容を書き起こして再構成したものです。 当日の発表資料 speakerdeck.com 目次 当日の発表資料 目次 はじめに マイクロサービス基盤に必要な監視の要件 第1部 ZOZOTOWNにおけるDatadogの活用 1. どこで障害が起こっているのか分からない → APM 2. アラートやダッシュボードや外形監視が欲しい → Monitors, Dashboar

    Datadogの活用ノウハウを一挙に公開・それを支える全社管理者の工夫とは #datadog_japan_meetup - ZOZO TECH BLOG
  • コードレビューを通じたチームパフォーマンス向上のための取り組み - ZOZO TECH BLOG

    こんにちは。ECプラットフォームサービスSREチームリーダーの川崎(@yokawasa)です。記事では、コードレビューを通じたチームのパフォーマンス向上のための取り組みについてご紹介します。なお、コードレビューそのもののテクニックに関する話はしないので、あらかじめご了承ください。 目次 目次 はじめに コードレビューはチーム全体のパフォーマンス向上のため 複数ユニット、複数チームで行う 活動状況を定量的に評価する コードレビュー体験を向上させる レビュアーの負担を減らす 同期・非同期コミュニケーションを使い分ける 参加しやすい雰囲気を作る 1. 心理的な安全性を高める 2. チームの共通目標にする さいごに はじめに まずはじめに、我々はGitHubのPull Request(以下、PR)機能を活用してコードレビューをしています。下記の記事でも書いているようにIaCとCI/CDを基ルー

    コードレビューを通じたチームパフォーマンス向上のための取り組み - ZOZO TECH BLOG
  • Vertex AI Pipelinesによる機械学習ワークフローの自動化 - ZOZO TECH BLOG

    はじめに こんにちは。検索基盤部の倉澤です。 私たちは、ZOZOTOWNの検索機能の改善に取り組んでいます。ZOZOTOWNのおすすめ順検索ではランキング学習を用いた検索機能の改善に取り組んでおり、A/Bテストにて効果を測定しています。 ランキング学習やElasticsearch Learning to Rankプラグインについては過去の記事で紹介していますので、併せてご覧ください。 techblog.zozo.com techblog.zozo.com 私たちは、機械学習モデルの開発からデプロイまでの一連の処理を実行するワークフローの構築にGoogle Cloud PlatformGCP)のVertex AI Pipelinesを利用しています。 記事では、Vertex AI Pipelines採用前の運用とその課題点について説明し、次にVertex AI Pipelinesで構築し

    Vertex AI Pipelinesによる機械学習ワークフローの自動化 - ZOZO TECH BLOG