PHPカンファレンス2014 講演01 メルカリの超高速開発を支えるPHP
数日は、PHPカンファレンス2014の講演について、書いていきます。
フリマアプリ「メルカリ」の超高速開発を支える PHP
メルカリについて
CMでおなじみの「メルカリ」
CtoCのフリマアプリで、ものすごくのびているサービスですね。
フリマの今の状況
- 「Frill」(41.6%)
- 「メルカリ」(36.5%)
- 「LINE MALL」(26.9%)
ちなみに、Frillだけ聞いたこと無くて、検索したら、18禁エロゲーらしきものが、一番上に出てくるので、気をつけてくださいbw
一瞬、ん???ってなりました。
話は戻りまして、
メルカリは今や、日本で一番急成長しているとも言われているようです。
- 設立:2013年2月1日(1年半)
- 資本金:17億5,026万円(3/31 14億5000万調達)
- アプリダウンロード数:500万ダウンロード
- 流通総額:数十億円/月
1年半?嘘でしょ?
- 流通総額:数十億円/月
だと、おおよそで単純に考えても、10月から手数料が販売額の10%らしいので、
10億の10%だとしても、1億/月。
ECと違ってそこまで、コストかかっていないだろうか儲かっているだろうな。
10月からの手数料10%が、どこまで受け入れられるかなんだろうけど。
メルカリのシステムについて
とまぁー会社に関しては、そこそこにして、
メルカリがすごい会社だというのは、お分かり頂けたと思います。
では、言語は何を使っているのでしょうか?
は、当たり前ですが、バック(API)側に関しては、PHPを使っているみたいです。
※もしかしたら、webViewなのかな。
結構意外ですよね。
昨今スタートアップは、LL言語でも、rubyやpythonが多いけれど、あえてPHPを選択したみたいです。
PHPを選択した理由
答えは簡単で、
- 開発リソースの確保 ☆
- 役員4人全員がPHPを書けた
からだそうです。
役員が全員システム作成に関わったことがある。ということも注目したいのですが、
なにより、☆のついている、開発リソースの確保は、なるほど。と思いました。
ビジネス観点からすると、スピードというのは、とても大事で、
なぜか?というと
①ある程度のシステムというのは、簡単にまねされてしまう。
つまり、まねされるより速く作成する必要がある。
②多くのユーザを確保するため
同じようなサービスだった場合、はじめに登録した方を使い続けることが多い。
③たくさんの経験をするため
未知の領域も多いので、PDCAなどのサイクルを、高速で回す必要がある。
の3点かな?
なので、特にサービスの立ち上がりは、とてもスピードが大事なのです。
簡単にいうと、差別化が難しい時点でのどんぐりの背比べで勝つには、スピードが重要!ということなんですかね。
また、facebookでも
done is butter than prefect.
「 完璧を目指すより、まず終わらせろ 」
という習慣があるみたいです。
100点より、早めの80点ってのと同じ理由ですね。
そして、スピードを重視するには、開発リソースが必須になる訳です。
つまり、開発者がたくさんいれば、速く作れるよね。という考えです。
しかし、これはある意味、人海戦術中心的な考えなので、エンジニア界隈ではあまり好かれない方式だといます。
なので、リソースは少ないが、生産性の高いrubyやpythonが選ばれるのだと思います。
これは、とても難しい問題なのですが、メルカリさんは、ある言葉を付け加えたら、
すんなり解決しました。
それは...
「 スピードのために全てを捨ててはいけない 」
つまり、
「 テストの自動化は、必ずやるべき 」
とのことです。
Unitテスト
全てやるのではなく、未来のエンジニアを何人救えるか。という視点。
E2Eテスト
I/Oのテストなので、コードに左右されず、費用対効果が高いので、テスト自動化のメイン。
技術とビジネス両方の視点をしっかりと持っている優秀な会社だな〜。という感想でした。
システム選定の仕方(まとめ)
つまり、導入する言語の判断基準は人は、
- 開発リソースの状況
- 生産性
- Unitテストの導入は簡易か
- E2Eテストの導入は簡易か
が、大きいのかもしれないですね。
創業者で信頼できるエンジニアがいれば、生産性重視で良いかもしれませんが、
いないのであれば、PHPなど開発リソースが確保しやすい方がいいのかも知れないですね。
生産性重視でやってきて、いきなり、要の人がいなくなると、正直きついので。。。
逆にいうと、PHPはある程度つぶしが効くので、怖いっちゃ怖いですが。
でも、どの言語も常に改善されていて、生産性を高めることは、おおいに出来ると思うので、
問題は修復不可能なレガシーなシステムにしない。ということ。
そのためにも自動テストは必須項目なのかもしれないですね。
今回のネタは、以前の技術負債の話とも関連するので、良ければぜひ!