メソッド屋のブログ

米マイクロソフト Software Development Engineer 牛尾の日記です。ソフトウェア開発の上手なやり方を追求するのがライフワーク。本ブログは、個人の意見であり、所属会社とは関係がありません。

MVP(Minimum Viable Product)の作り方

MVPの事をちょっと調べたくなったので、GROUP.PSの設立者であり、チーフアーキテクトのEmre Sokulluさんの書いた記事を調査がてら読んでみる事にしました。Tech Crunchさんの記事なので勝手に翻訳するとまずそうなので、概要をまとめてみました。もし、著作権的に問題があれば、削除しますのでお知らせください。6年前にGROU.PSPHPで作って、LoveBucksをnode.jsで作ったとのことです。



MVP (Minimum viable Product)



MVP(Minimum Viable Product)は、プロダクトと自身やプロダクトの機能を素早くマーケットテストするための作戦です。デプロイに足るだけの機能を備えています。プロダクトは、一部の顧客にフォーカスされて開発されます。例えばアーリアダプターです。アーリアダプターは、フィードバックをくれやすいですし、多少しょぼくても彼らにとってサービスが便利であれば使ってくれます。顧客の求めない機能を作り込まない為に、最小限の努力で、支払ったお金に対して最も顧客から学べるような情報を得る事ができる事に注力するのがポイントです。



まとめの元記事はこれです。↓
How To Create A Minimum Viable Product | TechCrunch


MVPづくりのポイント


この記事は、2012年の記事なので若干古い箇所もあるかもしれませんが、本質はあまり変わらないかもしれません。彼の記事を書いた動機はMVP(Minimum Viable Product)の記事は多いけど、実際どうやってやったらええの?という問いに答える事です。


1. Facebookプラットーフォームで作ろう


 スクラッチでメンバーシップスタックを作るより、Facebook Connectにお任せしよう。ユーザーにとっていいただけではなく、大量の時間を節約してくれる。中国市場にフォーカスしたものでなければ、Facebook Connectを使わない理由が見つからない。Facebookを使っていない人はきっとあなたのターゲット層ではない。(そういう人はレイトマジョリティとかだから)


2. bootstrap.jsを使おう


 あなたのプロダクトがwebでスタートしたなら一朝一夕でMobileプラットフォームの経験を得る事はできない。しかしbootstrap.jsを使うと、MobileとDisktopの両方のプラットフォームをシームレスに提供できる。お金をかけずにモバイル環境に対応し、CSSを作るような時間のかかる作業を節約できる



3. クラウドやスケールアウトを使おう


 クラウドは簡単で安上がりだ。git + heroku + mongoHQ/riak のホストサービスは大量のお金と時間を節約してくれる。利用料を払うだけで、スケーリングはずっと簡単になる。 mysqlを(mongoDBに)置き換えたり、memcacheのレイヤーを追加したり、シャーディングにしたり、こういった作業は本当に大変だった。
 スケールアウトするなら、クラウドの利点は低下する。クラウドでスケールすることの辞め時をしって、物理でハードを用意して必要以上にトラフィックが来たときだけクラウドでさばこう(Zyngaがやっている)
 この観点でいうと、あなたがAmazon S3のクライアントだとすると、いくらお金を払っているかを考えてみるといい。1ペタバイト/月以上プッシュすると、$50K必要だ。コレは多分、instagramAmazonに払っているお金だと思われる。


4. jQueryはいいよね


 jQueryは事実上のデファクトで、Bootstrap.jsが使っているという事以外でもとても有効だ。


5. 基本機能に集中しよう


 GROU.PSをやってきて、一番の失敗は、初めたてのフェーズで、必要以上に機能を実装したことだ。振り返ってみると、本当はブログ同士の連携のサービスとブログと同期したE-Mailのリストに集中するべきだった。この2つはGROU.PSにとって、差別化のポイントになる機能だ(Unique Value Proposition)。そうするかわりに、私はリンクやwikiなどを追加してしまった。必要以上の機能のせいで、不安定でユーザエクスペリエンスに乏しくなってしまった。もっとも今は違うと思うけど。
 DropboxGoogleの始めの頃はとってもシンプルなプロダクトで、UIも長い間かわらなかったことを思い出そう。


 他のポイントとしては、機能がないリンクをつくっておこう。もし誰かがクリックすると、この機能は開発中です。と表示する。そしてページのカウンターがページビューを計る。そうすると、その新機能にあなたが投資すべきかどうかを判別することができる。


6. SaaSはどもだち


  SaaSの一番いいところは、事前に沢山お金を払わなくてもいいこと、そしてメインテナンスとかの手間がかからないことだ。これもリソースの節約になる。多分みんなが使いたくなるサービスはこんなのだろう。


・支払いに Chargify, Spreedly, Recurly, CheddarGetter
・カスタマーサポートのチャットに LiveChat, olark, Zopim, LivePerson, SnapEngage
・ユーザの情報を集めたい時、Wufoo, Google Apps
・分析基盤 Kissmetrics, mixpanel
 (昔はHadoopベースのを使っていたが今はもっと簡単)
カスタマーサービスソフトゥエア ZenDesk, desk.com
・いろんなサービスを統合したデータ分析 GoodData, RJ Metrics


7. ペイパーワークをこなすのにScribdを使おう


これはあまり重要じゃないけど、Webサイトを文章にしないといけないときとかはScribdを使おう。


8. 動画は1,000,000,000語より価値がある


 あなたのプロダクトを紹介するのにWebページや、ツアーサイトや、重いjavascriptのデモは使わないようにしよう。メッセージを考えてから、動画を作ろう。もし、あなたに予算がないなら、自分でやってもいいが、プロにお願いするのをオススメする。Grumo Media, Epipheo Studios, wdysdなどだ。$3,000〜$40,000位だ。Quoraを見れば動画作成の会社の一覧が見える。
 


9. 時間とお金を節約したいって?InternetExplorerをスコープ外にしよう。


Internet Explorerをサポートするのに多大な時間を使うのはやめよう。少なくともInternet Explorerはアーリアダプタ向けではない。



10. 時間をかけて広げよう


 機能によっては、初日から必要ないモノもある。プランの変更とか、キャンセルとか支払い情報の追加とか。これらは、サービスを使い始めて必要になるサービスだ。それよりも、速くリリースしよう。you@gmail.comとかのリンクをつけておけば手動で対応できる。必要になったら作るようにしよう。



まとめ



最初のバージョンのGROU.PSは、つくるのに1.5ヶ月必要でした。LoveBucksは2週間でした。データベースは既に1GB以上で、0人からはじめて45,000人/日まで成長した。私たちは、クラウドを使うって、上記のようなMVPのベストプラクティスをつかって実現できるようになりました。


node.jsについて(新しい技術に気をつけよう。特にインフラには)


 一つだけ避けなければいけないことがある。あなたのインフラに関しては、いつも新しくてヒップなテクノロジーを使うのは辞めよう。Lovebucksでは、イベントドリブンで、ノンブロッキングな性質が必要だったのでnode.jsを使った。フロントエンドもバックエンドも同じ言語を使えるエレガントさにもひかれた。

 しかし、それは、とても安定しない物になった。マルチコアプロセッサのサポートはつい最近だし、APIはしょっちゅう壊れたし、一番わるいのはライブラリが安定しないことだ。新しい言語を採用すれば新しい人を採用しないといけない。GROU.PSでは、しばらくチームをスケールさせるのが難しかった。なぜなら
トルコの技術者だけが、Microsoft関連技術とJavaに強くてPHPには強くなかった。それはGROU.PSが作られた言語なんだけど。