iOSアプリ開発の現場で訊いてみた！メルカリ編

突撃隣の六本木ヒルズ！@yimajoです。

iOSアプリ開発者に最近の開発スタイルを訊いてまわる「iOSアプリ開発の現場で訊いてみた」待望の7社目に行ってきました。

今回はフリマアプリの[メルカリ社](http://mercari.jp/)。

![eye.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/e285127b-e1a8-6022-1bb2-2c3a204f7223.jpeg "eye.JPG")

最近六本木ヒルズにオフィスを移転したとのことで広くて新しいオフィスでした。



# 訊いてきたこと

インタビューに応じてくださったのはメルカリ社のiOSアプリ担当の[@ooba](https://twitter.com/ooba)、 [@yam86](http://qiita.com/yam86)、Androidアプリ担当の[@operandoOS](http://qiita.com/operandoOS)でした。

インタビュアーは過去インタビューに応じてくださった@kishikawakatsumiにも同席お願いしました。


執務室に入る前のエントランスはこんな感じ

![玄関あたり_.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/0abcebb4-e066-b637-5acb-1688315bb59e.jpeg "玄関あたり_.JPG")


古いテレビがあったり...

![玄関あたり_テレビ.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/d823195b-fbec-e8b4-a66e-ed9076c2c4ca.jpeg "玄関あたり_テレビ.JPG")

緑の自転車...?

![玄関あたり_デンドロビウム.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/164d5bf2-591d-aa26-889a-985b7de00683.jpeg "玄関あたり_デンドロビウム.JPG")

執務室にはいるとバーン！とカフェっぽい

![執務室_入ったところ.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/4747a99c-baab-b3ec-12ca-a96a35dbd5ba.jpeg "執務室_入ったところ.JPG")


## Q.メルカリ社に入った経緯を教えてもらえますか?

- [@ooba](https://twitter.com/ooba)
	- もともと仕事としてはWindowsアプリを作ったり
		- 個人でiOSアプリを作ってた
	- メルカリ社の社長山田さんがFacebookでiOSアプリエンジニアを募集してたので声をかけたのがきっかけ
- [@yam86](http://qiita.com/yam86)
	- Wantedlyで応募したのがきっかけ
- [@operandoOS](http://qiita.com/operandoOS)
	- 勉強会で山田さんと話したのがきっかけ
	- もともとは携帯電話メーカーでQAっぽいことをやってた

![開発陣.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/c5f598c3-0c9b-29b9-8eef-134ffef638bf.jpeg "開発陣.JPG")

## Q.メルカリのアプリ名の由来は何ですか？

- ラテン語で"商い"という意味がある

## Q.メンバー構成を教えて下さい

- エンジニア全員で20数人くらい
- iOSは3人
- Android3人
	- インターンとして参加していた学生が入社してプロデューサになった
	- 経営陣がエンジニアなので社員が今エンジニアであってもプロデューサにならないかという話が出る
- インフラ
	- 4人
- サーバー
	- 残り全員
		- コアの部分はphp
			- フレームワークは[DietCake](http://dietcake.github.io/)
		- PUSH通知はgoを使っていて[オープンソースにしてある](https://github.com/mercari/gaurun)

他にはデザイナさんが一人

- アプリもWebも印刷物も全部一人で担当
- 自分の趣味をあまり出さず求められるテイストのデザインができるかなり凄腕な女性、とのこと

以下はデザイナさんのデスク周り。スタンディングデスクを使っていつもの仕事風景を撮影させていただきました！

![デザイナ_タコ用意.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/574ae4b6-f73e-5bc7-9062-666d4c9e95c3.jpeg "デザイナ_タコ用意.JPG")

![デザイナ_グソクムシ準備.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/36fc687e-cc11-0d03-b39d-ad223204032b.jpeg "デザイナ_グソクムシ準備.JPG")

![デザイナ_仕事中.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/8c6168db-9ddc-e969-e6f9-8ce90aaa9d93.jpeg "デザイナ_仕事中.JPG")

（なぜか仕事風景としてのPhotshopを起動する前にタコとダイオウグソクムシのぬいぐるみを用意してくれました）


## Q.バージョン管理システムは何を使ってますか？

- GitHubを使ってる

## Q.コードレビューはどのように行ってますか？

- まず流れとしては仕様などが決められるとRedmineでチケットが作られ
	- そのチケットに対して1対1でブランチを作る
	- Pull Requestを出してマージする際にコードレビューを行っている

## Q.ブランチの運用について更に詳しく教えて下さい

- iOSチームはgit flowではなくGitHub flowにしている
	- masterからトピックブランチを作って
	- リリースブランチは作る
		- もちろんhotfix的なものを作ることもある
- Web APIチームはチケット単位でリリース
	- Googleカレンダーに登録するとbotがAPIをリリースされる
		- 最初は佐々木さんが手動でやっていた（佐々木電子版）
			- SlackやRedmineを見てルールを守りつつAPIのリリースをやっていたがGoogleカレンダーに登録することでリリースする仕組みに変えた

## Q.アプリ仕様の共有はどのようにしてますか？

- プロデューサが要求レベルで決める
- Redmineのチケットに仕様を書き
- より細かいレベルでQiita:Teamに書いている
- Slackに機能ベースのチャンネルを作って議論する

![黒ひげ.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/f2c0eb49-8f9f-8f16-e2db-1d418974f9fb.jpeg "黒ひげ.JPG")


## Q.機能に対する工数の見積はどのようにやってますか？

- iOS、Androidチームの両リーダーがざっくり決める
- あとはメンバーと相談したり
- そもそもキャンペーンや時期の関係ですでにリリースするスケジュールが既に決まっている

## Q.開発環境の改善とかコミュニケーション改善で自慢したいところは？

- iOSアプリ側はReactiveCocoaを使うようになった
   - MVVMを積極的に使うようになった
- Androidチームは[@operandoOS](http://qiita.com/operandoOS)が入るまでテストコードがなかったので書いた
	- 最近はメンバーがロジック周りのテストコードを少しづつ書いてくれるようになった
- Androidアプリ開発にEclipseを使っていたのでAndroidStudioにした

## Q.現状の開発に関する不満点やさらに改善したい点などある？


- 新しく人が入った人がすぐに機能実装できるようにしていきたい（[@ooba](https://twitter.com/ooba)）
- ViewControllerの実装が厚くなっているので薄くしたい（[@yam86](http://qiita.com/yam86)）
- 設計がメンバーによってバラバラなので揃えたい（[@operandoOS](http://qiita.com/operandoOS)）

## Q.どういう人と働きたい？

- 適切なタイミングで相談してくれるような人だと嬉しい
- アプリを使う人の事を考えて作れる人
- 開発手法や設計について議論できる人

# 社内風景

QAの方がデスク写真撮影のために片付けてくれてる...

![くにお_0.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/4db8aede-5d33-8990-6cf3-e91e124d3ece.jpeg "くにお_0.JPG")


![社内風景_1.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/377b910f-2145-1483-7278-ee6223b5e0bb.jpeg "社内風景_1.JPG")

![社内風景_2.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/0ba22d19-39a6-d187-b9d0-d84790306e48.jpeg "社内風景_2.JPG")

まだまだ、人が増やせるスペースがありますね

![社内風景_3.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/29859963-0cfb-46a8-ee4f-3c89310b8c1e.jpeg "社内風景_3.JPG")

![センスの有る移転祝い.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/30f16ba5-d6a4-1b0c-0d58-6edd5f4212af.jpeg "センスの有る移転祝い.JPG")

デンドロビウムの箱がある...

![デンドロビウム.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/f174e45c-08aa-c474-a13f-3ee052af5e98.jpeg "デンドロビウム.JPG")


![社内風景_4.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/467a57e9-c4ad-dfe9-425f-a174b4c83aea.jpeg "社内風景_4.JPG")

立って打ち合わせしたり立ったまま作業するような机もありますね

![社内風景_5.jpeg](https://qiita-image-store.s3.amazonaws.com/0/16400/7debec86-d9d9-5909-5cb1-89fce0d79ce0.jpeg "社内風景_5.jpeg")


# さいごに。オレはこう思ったっす

私が生まれた田舎では、自分のものを売る体験というのは限られていて、一つはファミコンのカセットを中古のゲームショップに売るというものと、もう一つはゲームショップに自分のカセットに値段をつけて置かせてもらい、誰かに購入されれば連絡がありショップに行きその金額をもらうというものでした。

後者は単純にショップに買い取ってもらうわけではなく、より多くの利益を得つつ売れそうな値段を自分で付ける行動それ自体が、相場を観察し実証するゲームのような楽しさだったのを覚えています（得た利益でまた違うカセットが買える！）。

話を戻すと、スマートフォンで簡単に売買ができるフリマアプリというのは、もしかしたらそのような楽しさもあるのかもしれないし、住んでいる地域を選ばない良さもあるのかもしれないですね。ということで、[興味のある人は聞きに行ってみるといいかもしれません](https://www.wantedly.com/companies/mercariapp-com/projects)。

（カセットを置かせてもらったショップ、法律的にどうなのか今になって不思議なのですが、記憶の片隅にあるショップ名で検索しても見つからず、もう潰れてしまっているのか、そもそもそういう体験があったと自分が思い込んでいるだけの妄想かもしれません...）

# 読者プレゼント！！ 

メルカリステッカーをいただきました！このネタ記事をストックして@yimajoに会ったときに「ステッカー欲しい」と言って下さい。数に限りは有りますが、6月一杯まではステッカーをカバンに入れて持ち歩きます！

![プレゼント.JPG](https://qiita-image-store.s3.amazonaws.com/0/16400/1d04c1c6-d2da-dce1-0fb2-b3e24f6a6efd.jpeg "プレゼント.JPG")

さーて次はどこへ行っちゃおうかなー？

# 関連のインタビュー

- [新インタビューシリーズ - Stargzr（スターゲイザー）](https://stargzr.net/interviews/)
- [旧「iOSアプリ開発の現場で訊いてみた」タグの付けられたシリーズ](http://qiita.com/tags/iOS%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%81%AE%E7%8F%BE%E5%A0%B4%E3%81%A7%E8%A8%8A%E3%81%84%E3%81%A6%E3%81%BF%E3%81%9F)