Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

メルペイ Android のアーキテクチャとテスト

こんにちは。Merpay Advent Calendar 2019 の18日目を担当する、メルペイ Android チームの @KeithYokoma です。 前回の記事ではマルチモジュール構成なプロジェクトにおける画面遷移の実装について、簡単な設計の方針から解説しました。 今回の記事では、メ…

メルペイエキスパートチームの取り組み〜人類Gopher化計画の進捗報告〜

Merpay Advent Calendar 2019 の17日目は、メルペイ エキスパートチームの @tenntenn がお送りします。 筆者が所属するエキスパートチームでは「アウトプットをするところに技術は集まる」という考えのもと、工数の50%以上を技術コミュニティへの貢献に充て…

リモートのデータ取得のためのフックライブラリの SWR を使ってみる

こんにちは。Mercari Advent Calendar 2019 の 17 日目は Web UX Team 所属の @lightnet328 がお送りします。 どのようにリモートのデータを取得して管理するかは SPA 構成の Web フロントエンドにおいて大きなテーマの 1 つだと思います。最近では Apollo C…

Shaping Mercari's Engineering Culture

Hi, the 15th day's post of Mercari Advent Calendar 2019 is brought to you by @tuttiq from the Engineering Office team at Mercari. Our Engineering Office is not a traditional product development team. In fact, we are nothing like a product …

Mercari x Merpay Frontend Tech Talk vol.3を開催しました

はじめに Merpay のフロントエンドエンジニアの @tokuda109 です。 11月26日に Frontend Tech Talk vol.3 が開催されましたので、当日の発表の様子を簡単に紹介します。 create own CMS from scratch まず最初の発表は Merpay の @sottar_ による「create ow…

Swiftにおける末尾再帰とCompilerによる最適化を探る

初めに この記事はMercari Advent Calendar 2019の16日目の記事です。 こんにちは、iOSエンジニアの@kagemikuです。MercariのiOSアプリ開発をしています。 突然ですが、皆さんは普段、再帰関数を書いていますか? リスト探索や木探索を行うアルゴリズムを、…

メルペイ iOS にスナップショットテストを導入した話

Merpay Advent Calendar 2019 の16日目は、メルペイ iOS チームの @akifumi がお送りします。 メルペイ iOS の品質向上を目的に、スナップショットを用いたテストを行うことができる iOSSnapshotTestCase を導入した話について記載します。 目次 iOSSnapshot…

Rate Limiting Bank Transfers

The 15th day’s post of Merpay Advent Calendar 2019 is brought to you by Robert, a Backend Engineer @ Merpay. Hi, I already talked a little bit about how we have different challenges facing us in my previous post. tech.mercari.com Apart fro…

商品通報対応をgRPCとGraphQLとReactでリプレースしてみた

こんにちは。Mercari Advent Calendar 2019 14日目は、CSTool Domainチームの @Peranikov がお送りします。 メルカリではお客さまに安心して取引を楽しんでいただくため「あんしん・あんぜん宣言」に取り組んでおり、プロダクトの開発と同じレベルの課題感で…

Maintain SLO 〜俺たちのSLOはこれからだ!〜

Merpay Advent Calendar 2019 の14日目は、メルペイSREチームの@Tがお送りします。 本記事では、メルペイSREチームのSLO運用状況について、紹介いたします。 メルペイリリース前 去年のAdventCalendar 2018で、メルカリのWeb MicroservicesにおけるSLI/SLOに…

Xcode Previewsを用いたUIKitベースのプロジェクトの開発効率化

こんにちは。メルペイのiOSチームの@kenmazです。 メルペイのiOSチームでは Xcode11 で導入された Xcode Previews 機能を用いて、UIKitベースのプロジェクトの開発効率向上に取り組んでいます。Xcode PreviewsといえばSwiftUI用の開発支援機能、というイメー…

gaurunとGoのHTTP/2事情について

Mercari Advent Calendar 2019の13日目担当はメルカリSREチームの@catatsuyです。 社内ではGoを書いていることが多いので、今回はmercari/gaurunの事情を通して、GoのHTTP/2事情に関して紹介します。 忙しい人のためのまとめ Goはhttp.TransportのTLSClientC…

メルペイのエンジニア組織をEMとして振り返ってみた

この記事は Engineering Manager vol.2 Advent Calendar 2019 の 4 日目の記事(代打)です。 はじめまして。メルペイでBackendのEngineering Manager(以下EM)をやっている@keigowです。 Merpay Advent Calendar 2019 の初日で行われた、メルペイ VPoE に…

メルペイの社内向け管理画面を振り返る

Merpay Advent Calendar 2019 の 13 日目は、メルペイフロントエンドチーム の @tanakaworld がお送りします。 メルペイの管理画面は 2019 年 2 月のサービスローンチに先立ち、2018 年 11 月にリリースされました。私は 2018 年 8 月に入社してから一貫して…

Specifying Kotlin tests with Spek

The 12th day’s post of Mercari Advent Calendar 2019 is brought to you by @kinnerapriyap from the US@Tokyo Android team. Writing unit tests usually means having to suffer through a lot of boilerplate code. I’m guilty of sometimes writing te…

メルペイのQRコードスキャン機能(QRScanner)を、OSSにしました

Merpay Advent Calendar 2019 の12日目は、 Merpay iOS チームの @hitsu がお送りします。 目次 QRScannerとは OSS開発の背景 QRScannerの特徴 使い方 基本な使い方 カメラのアクセスを許可 QRScannerの導入方法 CocoaPodsを使う場合 Carthageを使う場合 カ…

メルカリ・メルペイの社内勉強会についての簡単なご紹介

こんにちは、syumaiです。 本記事は Merpay Advent Calendar 2019 11日目の記事です。 今回は、私自身の日常として参加しているいくつかのメルカリ・メルペイの社内勉強会について簡単に紹介させていただこうと思います。 自己紹介 2016年に新卒でスタートア…

SwiftUI + Redux = ❤️

The 11th day’s post of Mercari Advent Calendar 2019 is brought to you by @damianpasko from the iOS team. State is a very important word for both SwiftUI and Redux. In this case, it’s not only a buzzword, but it’s also a thing that connects…

mercari.go #12を開催しました

はじめに こんにちは、mercari.go オーガナイザーの@morikuniです。 12月06日にメルカリ主催のGo勉強会 mercari.go #12 を開催しました。 この記事では、当日の各発表を簡単に紹介します!

全く知らない人のためのSign in with Apple

Mercari Advent Calendar 2019 の10日目担当は メルカリ iOS チームの @HideakiTouhara です。 はじめに 2019年のWWDCで新しいSign in, Sign up方法であるSign in with Appleが発表されました。 今回は主にクライアントの実装を起点に、その流れを説明してい…

TensorFlow のモデルを Graph Transform Tool で最適化してサービングする

こんにちは。メルカリアドベントカレンダー 9日目は JP AI Engieering Team 所属の @KosukeArase がお送りします。 機械学習技術をサービスに適用するにあたって、機械学習モデルによる推論を API として提供(サービング)したいという場面は多いと思います…

メルペイのキャンペーンを支えるサンタの秘密

Merpay Advent Calendar 2019 の10日目は、 メルペイ サンタチームのバックエンドエンジニアの @execjosh がお送りします。 弊社のキャンペーンを支えるサンタの仕組みについて少しご紹介します。 背景 サンタのアーキテクチャ 他マイクロサービスから受信し…

Datadog Dashboard at Scale w/ Terraform

こんにちは。株式会社メルペイSREチームの@kekeです。 Merpay Advent Calendar の9日目の記事です。 本記事ではスケーラブルなDatadogモニタリングシステムをTerraformによって実現した方法を紹介します。 はじめに すでに多くの発表があるのでご存知の方も…

PHPWebのTemplateEngineをWebAssemblyに置き換えてみる

こんにちはメルカリアドベントカレンダー 8日目はWebPlatform所属のmkazutaka(twitter: _mkazutaka)がお送りします。 みなさんWebAssembly(Wasm)についてどれくらい知っておられるでしょうか。「名前は聞いたことある」「ブラウザ上で実行可能なバリナリファ…

バッチコマンドをテストしやすいようにリファクタリングする

Merpay Advent Calendar 2019 の8日目は、メルペイ backend payment platform チーム の @knsh14 がお送りします。 はじめに 私はメルペイでお客様の残高を管理しているマイクロサービス(以下Balance Service)の開発を担当しています。 Balance Serviceは次…

Flutter製MTC2018アプリをSwiftUIでリライトした話

こんにちは。メルカリアドベントカレンダー 2019 7日目担当は、メルカリ Engineering Office @jollyjoester とゆかいな仲間たちがお届けします。 2019年6月に開催されたWWDC2019にて、AppleのプラットフォームのUIを構築するための新しい手法 SwiftUIが発表…

Write Your Own Go Linters with Parser Package

This is the seventh post of Merpay Advent Calendar 2019 from Adler, Backend Engineer in Payment Platform team at Merpay. What's a Linter? Why Do I Need One? Linters are tools that help to improve code readability, consistency, and maintain…

Data Is Not The New Oil

The sixth day’s post of Mercari Advent Calendar 2019 is brought to you by Darren. Hi! I'm Darren, a software engineer at Mercari. As a member of the Data Platform Team, I have the privilege of working with all levels of our technical stack…

CDNで生き永らえる古い画像のキャッシュを消すCloud Functionsの話

こんにちは。Mercari Advent Calendar 2019 5日目は、SREの @cookie-s がお送りします。 メルカリでは様々な用途でCDNを使っています。特に静的ファイルについてはCDNにキャッシュをもたせ、効率的な配信をするように努めています。 しかしながら、配信済み…

メルペイQAの今と未来と私の日常

Merpay Advent Calendar 2019 の6日目は、QAエンジニアチームの @miisan がお送りします。 メルペイは2019年2月にサービスを開始しましたが、これまでメルペイの品質保証(= Quality Assurance. 以下、QA)の話を公に発信したことはほとんどなく秘密結社のよ…