Mercari Engineering Blog

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

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

こんにちは。メルペイのiOSチームの@kenmazです。

メルペイのiOSチームでは Xcode11 で導入された Xcode Previews 機能を用いて、UIKitベースのプロジェクトの開発効率向上に取り組んでいます。Xcode PreviewsといえばSwiftUI用の開発支援機能、というイメージがありますが、実は従来のUIKitベースのプロジェクトに対しても使用が可能です。

Xcode Previews を使うことでiOS Simualtor等を起動することなく、様々な状態のビューをリアルタイムにプレビューできるため、開発効率が大幅に向上します。

またXcode Previewsが提供する強力なプレビュー機能を使うことで、Interface Builderの支援も不要となったため、従来のxib/Storyboardを用いたビューの実装から、コードによるビューの実装への移行を試みることにしました。

この記事では、メルペイ iOSチームで導入を開始したXcode Previewsを用いたUIKitベースのプロジェクトの開発方法の詳細と、それによって得られたメリットや知見を紹介します。

f:id:kenmaz:20191212130844p:plain

続きを読む

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

Mercari Advent Calendar 2019の13日目担当はメルカリSREチームの@catatsuyです。

社内ではGoを書いていることが多いので、今回はmercari/gaurunの事情を通して、GoのHTTP/2事情に関して紹介します。

忙しい人のためのまとめ

  • Goはhttp.TransportTLSClientConfigを上書きしている場合HTTP/2が使えません
  • HTTP/2を使いたい場合はGo1.12まではgolang.org/x/net/http2http2.ConfigureTransportを自分で呼び出す必要があります
  • Go1.13の新機能ForceAttemptHTTP2を使えば標準機能でHTTP/2を有効にできます
  • Go1.13の新機能を使うことでgaurunからgolang.org/x/net/の依存をなくすことができました
続きを読む

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

この記事は Engineering Manager vol.2 Advent Calendar 2019 の 4 日目の記事(代打)です。

はじめまして。メルペイでBackendのEngineering Manager(以下EM)をやっている@keigowです。

Merpay Advent Calendar 2019 の初日で行われた、メルペイ VPoE による2019年の振り返りを受けて、メルペイのEM目線でもエンジニア組織を振り返ってみようと思います。

  • はじめに
  • 振り返り
    • VPoEの入社(2018年4月〜)
    • PM/EM/TL体制の導入(2018年7月〜)
    • リリースに向けた開発(2018年10月〜)
    • メルペイ1stリリース(2019年1月〜)
    • 大型キャンペーンと組織体制の変更(2019年4月〜)
    • 技術負債の返済と採用(2019年7月〜)
    • 成長とクオリティの追求(2019年10月〜)
  • おわりに

はじめに

メルペイは2017年11月に設立されて、2018年5月にVPoEの@hidekが入社、7月からEMという職種ができ、2019年2月に初めてのリリースを経験しました。その間の開発組織の変遷と課題、どんな事をしてきたのかを出来るだけ具体的にまとめることで、これまでを振り返り、同じく開発組織をつくろうとしている方々に少しでも参考になるような情報が残せればと思っています。

続きを読む

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

Merpay Advent Calendar 2019 の 13 日目は、メルペイフロントエンドチーム の @tanakaworld がお送りします。

メルペイの管理画面は 2019 年 2 月のサービスローンチに先立ち、2018 年 11 月にリリースされました。私は 2018 年 8 月に入社してから一貫して管理画面開発に関わり、様々な機能開発・運用を行ってきました。その中でフロントエンドエンジニアとして関わったいくつかのプロジェクトをピックアップしてご紹介します。

目次

  • はじめに
    • メルペイのフロントエンドチーム
    • メルペイの社内向け管理画面
  • プロジェクトの振り返り
    • 審査業務効率化プロジェクト
    • マイクロサービス分割プロジェクト
      • 課題感
      • 分割の方針
      • 分割後のアーキテクチャ
    • Component v2.0 リニューアルプロジェクト
      • 課題感
      • デザインポリシー
      • 開発フロー
  • 社内向け管理画面で今後注力したいこと
    • オペレーションの効率化
    • E2E Testing / Visual Regression Testing
    • Developer Experience の向上

はじめに

まずはじめに前提となるメルペイのフロントエンドチームと管理画面の構成について述べます。

メルペイのフロントエンドチーム

メルペイで実現しようとしていることは多岐に渡ります。プロジェクト単位でわかれており、それぞれの Web 開発にフロントエンドチームで取り組んでいます。メルペイのお客さま向けプロダクト、加盟店さま向け、社内オペレータ向けと使用するユーザーも様々です。

f:id:tanakaworld:20191212154248p:plain
メルペイフロントエンドのプロダクト

フロントエンドチームでは 加盟店さまが使用する管理画面の開発も行っていますが、今回は社内オペレータ向けの管理画面に絞ってお話します。

続きを読む

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 test cases with an internal understanding of how the code works, resulting in lesser test coverage.

However, ideal test cases are expected to be pure code that express only the test cases and their necessary aspects. To define such a flow in which intention is validated, we can use Specification frameworks like Spek combined with Unit Testing frameworks to test our apps.

続きを読む