タグ

ブックマーク / engineering.mercari.com (123)

  • メルペイiOSチームのスナップショットテストを効率化した話 | メルカリエンジニアリング

    Unitテストはロジックを担保するために作成するもので、レイアウト確認には適していません。 UIテストやマニュアルテストでは、アプリを操作し画面を確認します。 ただし、アプリを操作するためのデータは実際のユーザーとほぼ同じ環境で作成しなければいけません。 メルペイでは@vvakameさんがMerpay Advent Calendar 2020 4日目に「テスト用お客さまデータ作りツール user-tkool の近況」で公開したように、テストに必要なお客さまデータを簡単に作成できる仕組みが整っています。 またテストの環境がクライアントに閉じず、通信状態やサーバーの状態に依存するといった不確実性を伴います。 スナップショットテストはコードからViewをレンダリングして画像に出力することで、アプリを起動しなくても画面の確認・比較をするテストです。 そのため、モックデータを差し込めるので、安定した

    メルペイiOSチームのスナップショットテストを効率化した話 | メルカリエンジニアリング
    invent
    invent 2024/02/05
  • JIRAで使えるQA用テスト管理ツール「Zephyr」と「TestFLO」を試してみた | メルカリエンジニアリング

    こんにちは。メルカリでQA-SETチームのマネージャ兼自動化エンジニアとして、スマホアプリのテスト自動化をぶりぶりしている@daipresentsです。 僕のチームには、QAエンジニアとSET(Software Engineer in Test)が所属していますが、メンバーの人数が増えてくるといろんな問題がでてきます。たとえば、QAエンジニアの場合は、 開発の流れがプロジェクトごとにばらばらで、プロジェクトをまたいで手伝うときに戸惑ってしまう テストケースが個人レベルで管理されてしまい、再利用も個人レベルで行われてしまい属人性の高い蛸壺ができてしまう 1については、JIRAを使う文化がメルカリにあるので、徐々にプロセスが整っていますが、2については、QAエンジニアチーム全体の課題として認識されており、スケールする組織を考える上で、今のうちに解決しておきたい課題でもあります。 今回は、2の解

    JIRAで使えるQA用テスト管理ツール「Zephyr」と「TestFLO」を試してみた | メルカリエンジニアリング
    invent
    invent 2023/04/21
  • モバイルアプリにおけるディープリンクとメルカリShopsでの実装 | メルカリエンジニアリング

    こんにちは!ソウゾウの Software Engineer の@gentleです。連載:メルカリShops 開発の裏側 Vol.2の10日目を担当させていただきます。 メルカリShopsはメルカリのアプリ内でサービスを提供しており、メルカリShopsの機能に直接アクセスするためのディープリンクを実装しています。この記事では主にiOSにおけるディープリンクの基礎的な解説と、メルカリShopsではどのようにディープリンクを使用しているかを解説していきます。 はじめに ディープリンクとは、モバイルアプリの特定の機能に直接アクセスできるURLのことです。なお、ディープリンクにはWebサイトのトップではなく特定のコンテンツのページに直接遷移するURLのことを指す意味もありますが、記事ではモバイルアプリにおけるディープリンクの話となります。 ディープリンクを使用すると、Webページからアプリを起動し

    モバイルアプリにおけるディープリンクとメルカリShopsでの実装 | メルカリエンジニアリング
    invent
    invent 2023/01/25
  • お客さま影響に基づく実践的なアラート方法 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2021の16日目の記事です。 こんにちは、メルペイSREチームのfoostanです。普段はキーボードのことばかり話していますが、業ではSREチームの一員としてソフトウェアエンジニアリングをしたりEM(Engineering Manager)をしています。 SREチームの重要な役割の一つはサービスの信頼性を高め、当たり前のようにメルペイを使えるようにすることです。信頼性を高めるためにはサービスが止まらないようなシステム構成にすることが重要ですが、サービスが異常な状態になったとき、関係者に状況を知らせるためのアラートを適切に上げることも重要です。そこで記事ではお客さま影響に基づく実践的なアラート方法についてご紹介します。 適切なアラートとはなにか まずはどのようにアラートを上げるのが適切か考えてみます。アラートを上げる目的のひとつ

    お客さま影響に基づく実践的なアラート方法 | メルカリエンジニアリング
    invent
    invent 2022/11/04
  • クライアント・サーバサイドに分散する計算ロジックのマイクロサービス化 | メルカリエンジニアリング

    この記事は「連載:技術基盤強化プロジェクト「RFS」の現在と未来」として書かれたものです。 こんにちは、メルカリの Transaction チームでバックエンドエンジニアをしている @oklahomer です。今回は、各種クライアントサイドとサーバサイドで実装している支払額計算のロジックを、新たなマイクロサービス実装へ移行する取り組みについて紹介します。 この連載では、既に Transaction チームから以下の 2 つの記事が公開されています。この記事の前提を把握いただくためにも、ぜひご一読ください。 関連記事:Understanding and Moderninzing a Legacy Codebase 関連記事:メルカリの取引ドメインにおけるモジュラーモノリス化の取り組み これらの記事の中では、創業当時から運用されているモノリシックな PHP アプリケーションに取引ドメインのロジ

    クライアント・サーバサイドに分散する計算ロジックのマイクロサービス化 | メルカリエンジニアリング
    invent
    invent 2022/10/07
  • Item2vecを用いた商品レコメンド精度改善の試み | メルカリエンジニアリング

    こんにちは、メルカリのレコメンドチームで ML Engineer をしている ML_Bear です。 普段はメルカリのホーム画面などに表示されるレコメンドパーツの改善を担当しています。今回はメルカリの莫大なユーザーログデータと、出品された商品に付与されているメタデータ(詳細後述)を活用したレコメンドロジック改善事例をご紹介します。 商品メタデータについて メルカリではユーザーの商品検索体験を向上させるため、出品された商品に対して様々なメタデータを付与しています。ファッションアイテムだと色や生地感、家電だと型番といった、主として商品の属性をあらわす様々なデータをメタデータと呼称しています。 今回、私はやマンガに紐づいているメタデータ (以下、タイトルデータと記載) に着目しました。 メルカリアプリ内では、やマンガに商品が属するシリーズを表現するメタデータが付与されています。例えば「キング

    Item2vecを用いた商品レコメンド精度改善の試み | メルカリエンジニアリング
    invent
    invent 2022/10/07
  • Maintain SLO 〜俺たちのSLOはこれからだ!〜 | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の14日目は、メルペイSREチームの@Tがお送りします。 記事では、メルペイSREチームのSLO運用状況について、紹介いたします。 メルペイリリース前 去年のAdventCalendar 2018で、メルカリのWeb MicroservicesにおけるSLI/SLOについて紹介がありました。 メルペイでは新規のMicroserviceをリリースする前に、各MicroserviceチームがSLOを定義し、品質保持の一指標を決めるルールがあります。 メルペイSREチームでは、Microserviceチームと一緒にSLOを考え、各MicroserviceにSLOを定義していますが、一からSLOを定義するのはとても難しいです。 幸いなことにGoogle社からSLOの説明や定義方法などSREに関する素晴らしい記事がたくさん共有されており、SL

    Maintain SLO 〜俺たちのSLOはこれからだ!〜 | メルカリエンジニアリング
    invent
    invent 2022/10/04
  • Slackへの通知をAttachmentsでわかりやすく… | メルカリエンジニアリング

    Site Reliability Engineering Teamの@cubicdaiyaです。今回はSlackのライトなお話です。 SlackのAttachments SlackにはIncoming WebhooksやWeb APIでメッセージを投稿する際、ペイロードにAttachementsと呼ばれる情報を含めることでメッセージを装飾できる仕組みがあります。 これを利用すると例えばメッセージにタイトルを付けたり、 用途に応じてカラーリングするといったことができます。(画像はイメージです。実際のアラートメッセージとは異なります。) 上記の場合、障害が発生したら赤、復旧したら黄緑で色分けしています。このようにAttachementsを利用することでSlackへ投稿するメッセージを分かりやすく装飾することができます。 メルカリでのAttachementsの利用例 メルカリでのAttachme

    Slackへの通知をAttachmentsでわかりやすく… | メルカリエンジニアリング
    invent
    invent 2022/05/27
  • 2つのアプリを書き直して見えてきたSwiftUIのよさとつらみポイント | メルカリエンジニアリング

    Mercari Advent Calendar 2020 の18日目は、メルカリ Client Architect チーム/iOS Engineer の kagemiku がお送りします!普段はiOSアプリを書きつつ、iOS開発に関する基盤を整えたり改善したりといったことをやっています💪 はじめに 突然ですが、みなさんはSwiftUIを触ったことってありますか? WWDC19にて突如SwiftUIが発表されてから1年半ほど。筆者はMercari Tech ConfアプリをSwiftUIで書き直したり、社内ハッカソンであるHackweekにて、MercariアプリをSwiftUIで書き直したりなどしてきました。また、業務でも実験的な意味合いの元少しだけ触っています。 Flutter製MTC2018アプリをSwiftUIでリライトした話 開発業務をストップしてエンジニアがやりたいことに向き合

    2つのアプリを書き直して見えてきたSwiftUIのよさとつらみポイント | メルカリエンジニアリング
    invent
    invent 2021/11/18
  • お手軽な検索API構築 | メルカリエンジニアリング

    こんにちは、メルペイソリューションチーム所属エンジニアの@orfeonです。 この記事は Merpay Tech Openness Month 2021 5日目の記事です。 メルペイソリューションチームでは、社内向けの技術コンサル技術研修、部門を跨いだ共通の問題を発見して解決するソリューションの提供などを行っています。 自分は主に社内のデータ周りの課題を解決するソリューションを提供しており、一部の成果はOSSとして公開しています。 この記事ではいろいろな場面で必要とされるものの、運用負荷などの問題から導入の敷居が高い検索機能を(条件付きで)簡易に提供するためのソリューションを紹介します。 基的なアイデア 全文検索や位置検索など、検索はいろいろな場面で必要とされる機能です。しかしいざ検索サーバを立てて運用するとなると、データの整合性やモニタリングなど考えないといけないことも多く、利用に二

    お手軽な検索API構築 | メルカリエンジニアリング
    invent
    invent 2021/09/07
  • メルカリShopsはマイクロサービスとどう向き合っているか | メルカリエンジニアリング

    こんにちは。ソウゾウのSoftware Engineerの@napoliです。連載:「メルカリShops」プレオープンまでの開発の裏側の3日目を担当させていただきます。 メルカリShopsではマイクロサービスアーキテクチャによる開発を採用しています。ここではメルカリShopsではどのようにマイクロサービスと向き合っているかを紹介させていただきます。 メルカリShopsのマイクロサービス群 メルカリShopsはざっくりと、図のような形でマイクロサービス群が構成されています。 Frontendがひとつ、Backend For Frontend(BFF)がひとつ、そして(執筆時点で)約40ほどのBackendサービスが、それぞれが独立した実行環境で稼働しています。 BackendはShop(ショップ)、Product(商品)、Order(注文)、Payment(決済)といったドメインごとに独立し

    メルカリShopsはマイクロサービスとどう向き合っているか | メルカリエンジニアリング
    invent
    invent 2021/08/12
  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer (CTO) の @suguru です。連載:「メルカリShops」プレオープンまでの開発の裏側の1日目を担当させていただきます。 7月末にメルカリShopsという新しいサービスが公開されました。メルカリShops は、2021年1月にメルカリのグループ会社として設立したソウゾウが新たに立ち上げたサービスです。 この記事では、メルカリShops を作るにあたり、どういった技術、アーキテクチャを選定したのか、その背景と意思決定をまとめて共有したいと思います。 monorepo まず最初にプロジェクトをスタートしたときに、サービスのリポジトリを作るのですが、迷わず monorepo による構成を選択しました。monorepo は、システムを構成する複数のコンポーネントの独立性を保ちつつ、全ての構成を1つのリポジトリで管理する手法です。今

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
    invent
    invent 2021/08/10
  • ぼくたちのQAJourney 〜 QAをScrumチームで実施する 〜 | メルカリエンジニアリング

    こんにちは。QA Engineerの @____rina____です。 メルカリのQAの形 メルカリでは長い間、プロジェクトチームにQAエンジニアをアサインし、専任としてQAに関する活動をおこなっていました。 tech.mercari.com 昨年よりプロジェクトスクラム開発へ移行していくことになり、スプリントを回していく中で、QAエンジニアだけがテストフェーズをおこなうと開発リズムがとりづらく、ボトルネックになっています。 その解決策のひとつとして、QAをスクラムチームのメンバーもおこなえるように移行中です。 移行するためには、今までQAエンジニアがおこなっていたプロセスやHowToなどを伝える必要があるため、 現在、さまざまな施策を実施中です。 今回は、私が所属するスクラムチームでおこなっているQAプロセス(とくにテスト戦略)についてご紹介します。 私の所属するスクラムチームは、お問

    ぼくたちのQAJourney 〜 QAをScrumチームで実施する 〜 | メルカリエンジニアリング
    invent
    invent 2021/02/19
  • Engineering Ladder | メルカリエンジニアリング

    エンジニアの成長段階ごとに期待される行動を明文化

    Engineering Ladder | メルカリエンジニアリング
    invent
    invent 2021/02/10
  • OAuth2の次に来ると言われる認可プロトコルGNAPとはなにか | メルカリエンジニアリング

    Merpay Advant Calendar 2020、23日目の記事は、趣味で認証認可をやっている @nerocrux が送りいたします。 最近 GNAP という認可プロトコルのワーキンググループドラフトが出ていて頑張って細かく読みましたので、(次回はいい加減に仕事でやってることについてお話しますが)今回はその GNAP について紹介させてください。 GNAP とはなにか? GNAP は Grant Negotiation and Authorization Protocol の略で、認可のプロトコルです。Justin Richerさんという方を中心に策定しています。作者によると、GNAP の発音は げなっぷ になります。 認可(Authorization)プロトコルと言えば、OAuth 2.0 (RFC6749) が広く知られ、運用されています。GNAP は OAuth 2 の後継とし

    OAuth2の次に来ると言われる認可プロトコルGNAPとはなにか | メルカリエンジニアリング
    invent
    invent 2020/12/23
  • 長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の15日目は、メルペイスマート払いの開発を担当しているCredit Designチーム/Backend Engineer の 柴田 がお届けします。 はじめに 私が1984年に社会人になった頃は、ソフトウェア開発を行うためには会社に行くしかありませんでした。当時は、共用のVAXマシンで4.2/4.3 BSD Unixを使って開発していました。その後は、コンピュータハードウェアの発達に伴い、開発者ごとにワークステーションを用いて開発するようになり、デスクトップPCを用いた開発、そして今日のMacBook ProといったノートPCによる開発と時代が変わってきています。 2000年代には、安価で高性能なコンピュータの恩恵により、テスト駆動開発が徐々に広まってきました。そして、継続的インテグレーション(Continuous Integrati

    長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング
    invent
    invent 2020/12/15
  • Webサービス上の画像変換とWebPの利用について | メルカリエンジニアリング

    Mercari Advent Calendar 2020の14日目は、Developer Productivity EngineeringのNetworkチーム所属の@catatsuyがお送りします。 今回のエントリーでは画像変換とGoogle社が開発した画像フォーマットであるWebPに関して紹介します。 適切なサムネイル画像のサイズと画質 現在ではiPhoneのRetinaディスプレイのように、実際に画面に表示されるサイズよりも大きなサイズの画像を要求する端末が一般的になりました。 現在のスマートフォンでは画面に表示されるサイズの2倍以上のサイズ(端末によっては3倍に対応しているものもある)の画像を用意しなければ綺麗に表示されません。サムネイル画像の綺麗さはUXに直結しますし、サービスによっては画像の綺麗さがクリック率や売り上げに貢献するケースもあるでしょう。 しかし大きなサイズの画像を

    Webサービス上の画像変換とWebPの利用について | メルカリエンジニアリング
    invent
    invent 2020/12/14
  • チームで運用と戦い、おいしい牛カツと出会った話 | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の 9 日目は、バックエンドエンジニアの @sou がお送りします。 今日は少し泥臭く、この一年チームを成長させながら運用と戦ってきた話を書こうと思います。 私の所属するチームは加盟店情報の管理を担っており、その性格から運用に伴う作業が数多く発生します。 どんなプロダクトにも運用はあると思いますが、このチームが直面した運用の負荷はそのボリュームと複雑さから、私のキャリアの中でも最大と言えるものでした。 その運用に私たちがどのように立ち向かい改善を行ってきたか、みなさまの参考になれば嬉しく思います。 なぜそんなしんどい運用を頑張っているのか、メルペイでのやりがいや楽しさ、頑張った結果の美味しい牛カツと日酒のお店に出会えた話も添えさせていただければと思います。 ここで言う運用とは、事業を進めていく上でさまざまな場面で発生する、自チーム以

    チームで運用と戦い、おいしい牛カツと出会った話 | メルカリエンジニアリング
    invent
    invent 2020/12/09
  • テスト用お客さまデータ作りツール user-tkool の近況 | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の4日目の記事です。 こんにちは!Merpay Solutions Teamの@vvakameです。 1年前のAdvent Calendarでメルペイ社内ツールのお話をしました。この記事では、1年経ってuser-tkoolががどう変わったか、今どのように使われているかをまたしても紹介したいと思います。 gchammerについてはsinmetalがDay 2に記事を書いているのでそちらを見てください。 というわけで、この記事ではテスト環境に任意の状態のお客さまデータを生成するツールである、user-tkoolの最近を紹介していきたいと思います! user-tkool とは メルカリ/メルペイには実に様々な状態のお客さまが存在しています。アカウントを作った直後の方、メルカリで売り買いを楽しんでいただいている方、人確認を済ませた方(いわゆ

    テスト用お客さまデータ作りツール user-tkool の近況 | メルカリエンジニアリング
    invent
    invent 2020/12/04
  • 料率計算における小数点数の扱いについて | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の3日目です。 メルペイでバックエンドエンジニアをしている iwata です。 メルペイスマート払いの開発をしている Credit Design というチームに所属しています。 私は2019年の入社以来、「メルペイスマート払い(定額払い)」(以下、定額払い)の開発を担当しており、今年の7月にようやくリリースすることができました。 この定額払いの手数料計算のために、「1万分の1を1とする単位」であるベーシスポイントを扱うGo言語のパッケージ go.mercari.io/go-bps を作成しました。 ちょうど1年前に、 mercari.go #12 で「料率計算における小数の扱いについて」として発表しましたが、当時はオープンソースとして公開していませんでした。 今回オープンソースとして公開しましたので、改めてパッケージを紹介します。 料

    料率計算における小数点数の扱いについて | メルカリエンジニアリング
    invent
    invent 2020/12/03