こんにちは!メルカリでサーバーサイドエンジニアをしている @bravewood と申します。
メルカリでは2017年10月7日に行われた PHPカンファレンスにおいて、ゴールドスポンサーをさせていただきました。当日はスポンサーブースに出展を行い、そこで、缶バッジやシールなどのノベルティーをお配りするとともに、訪問された方々といろいろお話をさせていただきました。本記事では、その際にお伺いした質問と回答をまとめさせていただきました。
組織・開発に関すること
メンター・メンティーの割り当てはどうなっていますか?
新卒など技術的なキャッチアップが必要な人には、技術力の高い人を割り当てたりとかするのですか?
現状は明確にメンターは固定されておらず、入社される方に対してタスクやチームがまず決まり、その後チーム内で空いている人や教えるのが上手そうな人がメンターに任命され、通常1ヶ月間つきます。
さらに、技術メンター制度というものがあり、プリンシパルエンジニアなど技術的バックグラウンドが確立しているメンターが1ヶ月から半年の間、「開発スピードを維持するために、変更に強くてしなやかな設計/きれいなコードを書ける人を増やす」という目的でメンティーを丁寧に教える制度もあります。
エンジニア何人ぐらいいるんですか?
エンジニア全体で120名弱、サーバーサイドエンジニアに絞ると50人強います。
※新規サービス開発を行う子会社のSouzohにもかなりの開発者が在籍していますが、上記には含めておりません。
エンジニアどのくらい増えているんですか?
2年前は25名ほどでしたからざっくり5倍くらいには増えております。
3拠点の時差はどうやっているんですか?
ほぼ時差が8時間間隔あるので、どこかの拠点に合わせるようにしています。
現状日本にいる開発メンバーのタスクはざっくり分けると、アメリカのメルカリを担当する人と、日本のメルカリを担当する人がおり、それぞれで数チームずつ開発チームが存在します。
またイギリス拠点はサービスの立ち上げ期ということで、ほぼ現地のエンジニアだけで時差なく開発しています。
入社時にすでに規模が大きかったと思うのですが、入社する人たちは大規模系のバックグラウンドがある人が多いのですか?
あることは望ましいと思いますが、全員がそうではないです。
また、@kazeburo をはじめとするSREチームのレビューやメンター制度などを通してエンジニアが大規模系サービスの開発経験を積むのをサポートする体制があります。
(現職で)基盤系の構築と開発の両方をやっていて、他の人が協力してくれなくて辛いのですが、そういうことを専門にやる人たちがいていいですね!
メルカリでは、SET(Software Engineer in Test)やBackend System エンジニアなど基盤系の構築を主なタスクとして勤務するメンバーが複数人おり、APIエンジニアが主担当であるAPIの開発業務に注力できる環境が整っているので、非常に助かっています。
例えば、メルカリのほぼ全機能をDocker上に再現した個人向け開発環境であるMercari miniを構築しているのはSETチームですし、マイクロサービスの基盤や各種ミドルウェアはBackend System エンジニア/SREチームが担当しています。
プロデューサーは具体的に何している?
メルカリでは主に企画やチームの運営をする人たちのことをまとめて「プロデューサー」職と呼称しております。他社ではディレクターと呼ばれることも多いかと思います。
仕事内容は下記のとおりです。
エンジニアとプロデューサーの比率は?
比率はチームによって異なりますが、おおよそプロデューサーが1に対してエンジニアが2~3程度になっています。
プロデューサーはコードを書くのか?
基本的にコードは書きません。
プロデューサーにはエンジニアのバックグラウンドがない人も多いですが、各自がSQLを書いてデータを分析したりすることはあります。
開発言語に関すること
PHPとGoの組み合わせいいですよねー
はい。
どちらも習得の容易性や開発のしやすさが高く、メルカリではPHPで出来た既存のAPIエンドポイントをGoで構築した新たなエンドポイントから叩く構成にすることが多いのですが、Goのレイヤーが増えてもほとんどレスポンスタイムの低下が気にならないくらいGoが速いため、今後も積極的にGoを使っていく予定です。
PHPとGoがメイン?
既存コードはめっちゃPHPで、新しく実装する際はGoが選ばれるシーンが非常に多いです。
PHPのバージョンは7.1で、割とモダンなコードで書かれていると思います。
余談ですが、PHP 7.1化によってレスポンスタイムが全体的に数パーセント、効果の高い箇所だと数十パーセント改善したほか、アプリケーションサーバのCPU使用率が半分近く下がりました。
メルカリってPHPなんですか?
めっちゃPHPです!
意外と知られていなかったのでもう一度言いますが、メルカリのAPIにおけるメイン開発言語はPHPです!!!!
Rubyを使っているのは知らなかったです
SETの一部で使ってたりします。
またRubyだけではなく、PythonやPerl、Goなど幅広い言語を使っています。
PHPエンジニア募集してますか?
下記の通りめっちゃ募集しています!!
是非宜しくお願いします!
PHPフレームワークは何を使っていますか?
DietCakeとDietcubeをメインで使っています。
基本的にフレームワークは薄いやつを使ってレスポンスタイムをなるべく小さくするように保っています。
PHPフレームワークのリプレイスはやったことありますか?
メルカリ本体のAPIについてはやったことはありません。現在、メルカリAPIは大きなコードベースになっており、一部にはレガシーと思われるようなコードが残ってはいますが、フレームワークが起因となる速度の低下や開発のしづらさが問題になったことはなく、リプレイスする必要性があまり感じられなかったからです。
また、会社の方針として新しいサービスなどは積極的にマイクロサービス化を行うことになっており、その際はサービスごとにフレームワークなどは別途選定しています。
一方で、社内Webツールの一つであるカスタマーサポートツールはフレームワークをDietCakeからDietcubeへリプレイスした経緯があります。この動機としては、独自のJavaScriptフレームワークを使ったSPA(Single Page Application)からサーバーサイドレンダリングに変更し、メンテナンス性やテスタビリティを向上したかったこと、TwigやRoutingの自由さ、PimpleでのDIなどのメリットを受けられるDietcubeを使いたかったからです。
その他
DQNEOさんにGitの本を監修してもらいました!
社内に技術本の著者がたくさんいるのも良いところの一つで、例えばGoなど新しい言語を勉強する際には社内で勉強会を開催してもらうなどメリットを享受できます。
「わかばちゃんと学ぶ Git使い方入門〈GitHub、Bitbucket、SourceTree〉」
メルカリ主催で勉強会とか、外部の人呼んでやってたりするんですか?
メルカリとしての勉強会はあまりやっていませんが、在籍者が主催する勉強会などは多くあり、会場を提供させていただくこともあります。
直近ではGo Conference 2017 Autumnの会場提供や社員がスタッフをさせていただきます。
PHPまわりですと、PHPBLTというライトニングトーク大会をよく弊社を会場/スタッフとして開催させていただいています。
メルカリ主催という意味では、勉強会ではないですが、技術発表会として最近Mercari Tech Conferenceを開催させていただきました。
メルカリを利用しようと思うんですけど、発送がめんどくさくて、なかなかね・・・
らくらくメルカリ便やゆうゆうメルカリ便などがあります。
これらを使うと匿名での配送やコンビニ/郵便局からの発送もできますし、集荷サービスもあります。
ぜひお使いください!
とはいえ、配送まわりが分かりづらいとか、使いづらいなどの問題は認識しており、ぜひ改善したい項目の一つです。
配送周りを一緒に担当してくれる方も絶賛募集中です!!
まとめ
メルカリはPHPをメインで使っておりPHPエンジニアを募集しています!
PHP以外の言語をバックグラウンドにもつ方も多く在籍しています!
メルカリは既にほとんど開発が終わったサービスであるというお話も聞くのですが、全然そんなことはなく、最近ではメルカリチャンネルやメルカリボックスといった新しいサービス開発も積極的に行っており、またメルカリ自体についても上記の例のように沢山改善したいポイントがあります。
少しでも興味を持たれた方がいれば、ご飯を食べながらお話をさせていただくこともできます。
下記に募集中の職種一覧を掲載しておりますので、是非ご覧いただきご連絡をください!