Mercari Engineering Blog

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

"High 意識 Android Team" のチームワーク - その 1

Mercari Android チームの @tsuyogoro です。US 版 Mercari Android アプリの開発を担当しています。

今年 1 月に弊社で開催した Mercari Day 2017 において、我々 Android チームは 「High 意識 Android」というお話をしました。

これから数回に分け “High 意識な開発” の実例を紹介していこうと思います。

本シリーズ第一回目では、"ベースにしている考え方" と “東京とサンフランシスコで one source 開発を行った話” を紹介します。

続きを読む

「Be Professional Day」でちょっと便利なQAテストツールを作った話

f:id:daipresents2:20170403193758p:plain:w400



こんにちは。メルカリのテストエンジニアとして、スマホアプリのテスト自動化をぶりぶりしている@daipresentsです。

先月のおわりに、Be Professional Day (BPD)というイベントが開催されました。BPDとは以下のような取り組みです。

この先、人やコンポーネントが増えて複雑になる中で、プロダクト開発と既存コードのメンテナンスなどのバランスを取っていく必要があります。 短期的にはプロダクトの利益にならないことも、中長期的に開発効率やクオリティに影響することがありますので、そうしたものを少しずつでもやる機会を作りたい、というエンジニアリング的な背景が、最初の主目的です。 転じて、プロデューサ、Product Development Coordinator、QA、デザイナーなどプロダクト開発に関わるすべての人が、Be Professional なことをやる日、として定義します。

このイベントに、テスト自動化チームとQAチームで参加しました。今日は、BPDにQAエンジニアと自動化エンジニアで、普段なかなか手を付けられない課題に取り組んだときのお話です。

続きを読む

Appiumの新しいGUIツール、appium-desktopがよくなってきてるぞう

f:id:tadashi-nemoto0713:20170405102425p:plain:w400


こんにちは! メルカリのテストエンジニアとして、モバイルアプリのテストをぶりぶり自動化している@tadashi0713です。

メルカリでは、モバイルアプリのテスト自動化のために、一部、Appiumを使用しています。

今回は、現在ベータ版で公開されているGUIツール「appium-desktop」について、簡単な紹介と個人的に感じる魅力についてお伝えしたいと思います!

appium-desktopとは

Appiumは、開発用にGUIツールを提供しており、公式ページからダウンロードできます。

Appium: Mobile App Automation Made Awesome.

Mac版のGitHubリポジトリはこちら(appium-dot-app)です。

こちらを使うことによって、Appiumのインストール、Appiumサーバー起動、インスペクターを利用してアプリ画面内の要素の確認やその操作を簡単に行うことができます。

しかし、上記のツールは現在メンテナンスがほぼ行われておらず、Electronをベースにした新しいGUIツールの開発がすすめられています。

それが今回紹介するappium-desktopです。

github.com

2017/02/11よりベータ版が配布されており、現在v1.0.0-beta.6です。

続きを読む

Gitのステージング領域の正体を探る

ソフトウェアエンジニアの @DQNEO です。こんにちは。

Gitの内部構造を深掘りするシリーズ3回目です。

前回までのお話はこちら

今日はみんなだいすき「ステージング領域」の中身について解説してみます。

ステージング領域とは何か?

簡単に説明すると「次にコミットしたときにコンテンツとして登録されるもの」リストです。(別名「インデックス」ともいいます。) このリストは、 git addgit rmしたときに書き換わります。 (古くはcacheと呼ばれていました。内部実装やgit diff --cachedに今もその名残があります。)

git addのマニュアルに説明があります。

Git - git-add Documentation

The “index” holds a snapshot of the content of the working tree, and it is this snapshot that is taken as the contents of the next commit.

(訳) 「インデックス」は、ワーキングツリーの内容のスナップショットを保持する。次回コミットしたときにコンテンツとして保存されるのがこのスナップショットである。

スナップショットとはもともと写真用語で「ある瞬間を切り取ったもの」という意味です。 コミット行為を「写真を撮る」行為にたとえると、ステージングするとは「物を撮影台(stage)の上に載せる」ようなイメージです。

差分ではなくスナップショット

「スナップショット」という言葉に違和感を覚えた人がいるかもしれません。 git diff --cachedgit add -p などステージングを扱うコマンドは差分を見せるものが多いので、「ステージング=差分」という感覚を持ってしまうのはある意味当然ではあります。 ですがステージング領域に登録されているのは実は差分ではなく、(差分適用後の)コンテンツそのものです。

ステージング領域をのぞいてみよう

では実際に、git add するとどこにどういう形で保存されるのかを見てみましょう。

例として弊社のOSSである Dietcube というレポジトリをとりあげます。(レポジトリは何でもよいです)

$ git clone https://github.com/mercari/dietcube /tmp/dietcube
$ cd /tmp/dietcube
$ git tag
1.0.0
1.0.1
1.0.2
1.0.3
$ git checkout 1.0.0

ここで、README.md ファイルに蛇足のようなHello Worldをつけたして、git add してみましょう。

$ echo '蛇足のようなHello World' >> README.md
$ git add README.md

差分を確認します。

$ git diff --cached
diff --git a/README.md b/README.md
index c5162f0..99040e7 100644
--- a/README.md
+++ b/README.md
@@ -42,3 +42,4 @@ Authors
 * @YuiSakamoto
 * @kajiken
 * @DQNEO
+蛇足のようなHello World

さて、この1行追記された README.md はどこにどのように格納されているでしょうか?

続きを読む

プログラマーの三大美徳 その2

SREチームの@shmorimoです。今日はプログラマーの三大美徳の続きのお話しです。

プログラマーの三大美徳 その2

みなさんはプログラマーの三大美徳ってご存知ですか? プログラミング言語Perlの作者である Larry Wall が
http://www.perl.com/pub/1998/08/show/onion.html
で述べたのが最初とされています。

三大美徳として

  • 怠惰(laziness)
  • 短気(impatience)
  • 傲慢(hubris)

があげられています。

怠惰(laziness)については、以前にこちらの記事でお話しました。

tech.mercari.com

今回は 短気(impatience) についてです。

短気(impatience)

優秀なプログラマーが持っている怠惰という美徳は素晴らしいのですが、その反面というか怠惰さゆえに腰が重いときがあります。
そこで短気な面をうまく刺激することでプロジェクトを円滑に進めることが可能です。

メルカリでの例

みなさんもCIにてテストを動かしていると思いますが、まれにmaster branchのテストが落ちてしまうことはありませんか?
直前にマージした人などは反応してくれるのですが、もっとみんなに反応してもらいたいと思いました。
そこで CI のメッセージを変更してみました。

f:id:shmorimo001:20170329153935p:plain

短気なフレンズが反応してくれました。 すごーい。
このようなメッセージを出すことでプログラマーをイラっとさせ、すみやかに落ちたテストに対応してもらえます。

ちなみに以前は以下のメッセージでしたが、新鮮味が薄れたのでフレンズなメッセージにしてみたのです。

f:id:shmorimo001:20170329153940p:plain

フレンズなメッセージはイラっとしすぎるとの意見があったので、数日前から下のメッセージに変更しております。
こちらもなかなかの反応ぐあいです。

f:id:shmorimo001:20170329153931p:plain

メルカリでは イラっとする英語考えるスキル高いエンジニアを募集中です。

www.mercari.com