リーン・スタートアップを試し中

エリック・リース著「リーン・スタートアップ」が面白い。

色んな所で紹介されてるメソッドなので繰り返すのも野暮だが、要は「科学実験のように仮説検証のループを回すことで新規ビジネスを無駄なく効率的に創り出す」というもの。

リーンスタートアップ」という言葉自体は起業する前から知っていたけれど、最近本を読み返してみて無茶苦茶腑に落ちたので実際に試してみたところ、以下のような経緯を経て約1週間ほどでサービスのデモ版(EPubShot)をローンチすることができた。

もともと、Pocket というWebページをローカルに取っておいて後でオフラインでも読めるようにするというアメリカでヒットしているスマホアプリがあり、それをEPub電子書籍デファクトスタンダードと目されているフォーマット)で提供したらどうか、というアイディアを2月上旬から考えていた。(弊社では電子書籍向けのコンテンツマッチ広告サーバを製品として提供しており、電子書籍向け広告ビジネスが主力事業の一つとなっている。)

Androidアプリでの開発を週一日のペースで少しずつ進めていたが、リリースまでには2ヶ月ほど掛かりそうな状況であり、リーンスタートアップ的には「MVP」を早く出すことが重要ということで、Webサービスを先に出してみようと思い立ったのが3/1(金)の夜。

以下、次のようなプロセスを経た。

  • 3/2(土)まず指定されたWebページをスクレイピングしてEPub化する方式を検討、実装に着手。
    • Pocketと差別化するため、対象Webページのルック&フィールを再現するためCSSファイルもEPub内に取り込んでアンカータグを差し替える仕組みにした。
    • (Pocketは本文のテキストと画像ファイルを取り込んで独自の形式でレイアウトし直す仕様)
  • 3/3(日)夕方、実装がほぼ完了。いくつかのWebサイトで試してみたが、再現性があまり良くないことが判明。ボツにした。ソースはこちら
  • 別の実装方式について検討。以下の有力な案を2つ思いつく。
    • CSSの再現をあきらめて、Pocketと同様に予め用意したCSSに当てはまるようマークアップ変換をする。
    • PhantomJSのようなheadless browserを使ってそもそもWebサイト自体を画像として取り込んでそれを切り抜いてレイアウトし直すことでEPub化する。
  • マークアップ変換についてオフィスメンバーと話をしてみるも、私自身がCSSにあまり詳しくなく、PhantomJSであれば利用経験があるためまずは画像キャプチャ方式を試すことにした。
  • 翌3/4(月)画像キャプチャ後に記事を切り抜くアルゴリズムについて検討。TwitterやFBにもアイディア募集の投稿してみる。
  • するとFBで知り合いの方が、CasperJSを使う方法を教えてくれた。CasperJSのAPIを使うと画像処理を余りしなくても済むことが判明。
    • Webページ全体から記事本体を切り抜くところまではCaperJSで出来る。
  • CasperJSでキャプチャした画像を、EPubに取り込む方法をまずは手動で試してみたところ、かなり綺麗にWebページがそのままの見た目で電子書籍に変換出来る事が分かった。
  • 3/5(火)さらに記事を切り刻むアルゴリズムについて検討。いくつかの試行錯誤の末に大体うまく行く実装が完成。
  • 3/6(水)Webキャプチャから画像処理、EPub化までの一連の流れを自動化するプログラムを書いた。さらに、それをWeb化する実装に着手。
  • 3/7(木)Webサービスの実装。
  • 3/8(金)Webサービスが大体出来上がる。EPub化のちょっとした詳細オプションの指定を実装。
  • 3/9(土)EPub変換中の進捗状況をajaxで表示する機能を実装。簡単なテストとバグ取り。

とりあえず、ここまででリーンスタートアップでいうところの「MVP」が出来たことになる。しかし今振り返るとたどったプロセスには以下の問題点があることが分かる。

  • 最初に試したCSSを取り込む方式は、プログラムを作る前に手動で試すことが出来たにも関わらずそれをせずに実装を始めてしまった。(次の画像キャプチャ方式では事前に手動で試したのでそこは改善された)
  • 「再現性が高いほど電子書籍として価値が高い」や「EPub化の詳細オプションは少しくらいはあったほうが良い」はあまり考えずにとりあえず実装してしまっている。
    • 「実装が簡単だからとりあえず作ってしまう」のはリーンスタートアップ的には良くない。たとえ実装コストがゼロだとしても、「機能は負債」として後々のメンテナンスコストを発生させるかもしれないから。

ただ、短期間でMVPを出すと決めたことで、pythonでの画像処理、node.jsでの子プロセス管理やredisとの連携、node+express+jqueryを使ったWebサービス開発などの未経験の部分をやりながら学べた点は良かった。

これから見込み客とのアポと営業という段階なので、まだ「顧客開発」のフェーズに過ぎないのだが、「Webページをそのまま電子書籍化したい」というニーズに対して迅速にサービスを立ち上げられたのは大きい。

また、リーンスタートアップを実践するにあたって本に書いてない重要なことを実感しているのでそれは明日また書きたいと思う。

EPubShot、便利です。ぜひお試し下さい。