スタートアップで 働くことを考えているエンジニアが知っておくべきアレコレ!
ネイルブックでのWEB高速化の取り組み
3人目の登壇者は、株式会社スピカの代表取締役、國府田勲さんです。
國府田勲(こうだ・いさお)/株式会社スピカ 代表取締役。1973年生まれ。横浜国立大学大学院修了後、1998年にNTTへ入社。その後、ベンチャーで事業部長、取締役などを経験し2014年にスピカを設立。サッカー観戦好き。
スピカが運営する「ネイルブック」は、毎月100万人もの女性が利用する国内最大のネイル情報サービス。ネイルの写真を見て、サロンを検索し、オンラインで予約ができます。アプリとウェブの両方から展開を行っていますが、現在11人のメンバーのうち、半分がエンジニアです。今回は「ネイルブック」における「ウェブ高速化」の取り組みを中心にお話しします。
「ネイルブック」は初期リリースから5年以上が経過しており、技術的負債がたまっている状況にありました。そこで國府田さんは、ページを開くロード時間の短縮を図ります。これにより、ユーザがサイトから離脱する可能性を減らすことができ、ページの回遊に繋がるのでコンバージョン(=サロンのオンライン予約)を高めることできました。このように、「高速化はエンジニアだけでサービスの成長に大きく貢献できる部分だ」と國府田さんは続けて成果を紹介します。
高速化により1年間でレスポンスタイムが167msから90msに、ブラウザにおいては全ロード時間に5秒かかっていたのが現在は3秒以下に短縮できました。サーバーコストも2/3にまで圧縮。性能を向上させながらコスト削減を達成しているのです。
では、國府田さんはどのように高速化を実現したのでしょうか? 4つの事例を紹介します。
まずは「機能のスリム化」。当初は「ネイルブック」の機能がまとまっていなかったため、ビジネス側と調整して重要度の低い機能を廃止しました。使わなくなったテーブルを整理し、4000ほどあったファイル数も半数に。テーブル数も163から94に削減しました。この結果、リファクタリングの効率を上げることにもつながっています。
次に、エンジニアのモチベーションとシステム性能の向上を図るために「フレームワーク最新化」にも着手します。「Python」は2.6から最新の3.5に、「Django」は1.2から1.10にバージョンを段階にあげました。
さらに、各アプリケーションで時間がかかる処理を最適化するために「検索エンジン」を全面導入。「Elasticsearch」を採用しています。同時に「Elasticsearch」を「AWS」のマネージドに載せ替えます。これらの結果、レスポンスタイムを向上させ、インフラコストの削減にも繋げることができました。
そして、「ネイルブック」では画像配信を行うため、「静的リソース最適化」についても様々な取り組みを行いました。そのひとつは、ブラウザキャッシュの活用。Googleは7日以上キャッシュさせるのが望ましいとしていますが、それでは静的リソースの変更時にクライアントに反映されない可能性があります。そのため、自動で静的リソースのファイル名にバージョン番号を差し込むフィルタを用意して解決しました。
これらの他にも、複数の画像を1枚の画像に合成して配信を行う「CSSスプライト化」や「アイコンWEBのフォント化」「インフラ最適化」「非同期処理化」などで様々な取り組みを國府田さんは共有しました。
最後に、國府田さんはおまけとして「あなたにあったスタートアップ診断」と題し、スタートアップの成長ステージにごとに求められるエンジニア像を紹介しました。それぞれ次の通りです。
・シード
状況:立ち上げの準備段階。
プロダクト:具体的なものはなく、企画くらい。
収益:「儲かる」という夢だけが膨らんでいる。
組織:ない。
エンジニア:つくるものがないのでやることない。
・アーリー
状況:プロダクトをリリースして、ユーザ定着に尽力する時期。
プロダクト:アーリーアダプターだけが使い始めている段階。
収益:まだまだマネタイズできないので大きく赤字。
組織:社長、エンジニア含めて2、3人程度。スピード感がある。
エンジニア:開発は全部任されるので、ひとりで進められる。幅広いスキルつく。しかし、誰かに聞けないという悩みがある。
・ミドル
状況:プロダクトの売上が順調に伸び、さらにグロースしていく時期。
プロダクト:ユーザグロースの取り組みを始める。
収益:マネタイズモデルの検証を始める。
組織:複数チームができつつある。
エンジニア:開発はチーム複数人で構成。周りの人とコミュニケーションをとって進められる能力が重要。企業としてはまだ成長重視の段階なので、エンジニアにはこだわりよりも、スピードが求められる。悩みは、時間がなく開発にこだわりが発揮できないこと。
・レイター
状況:収益モデルが完成。
プロダクト:ユーザ目線から顧客目線に。
収益:単月黒字、累損解消。
組織:組織が確立、分業体制に。
エンジニア:与えられた役割をこなすことや効率化、標準化が得意であることを求められる。担当領域において深掘りができる。悩みは担当が決まっているため新しいことにチャレンジできなく、営業からの意見も入ってきて新しい技術が導入しづらくなる。
こうした状況を踏まえ、「リスクを覚悟して一山当てたい人」はアーリーステージ、「急激な成長の勢いを感じたい人」はミドルステージ、「誰もが知っているサービスに関わりたい人」はレイターステージのスタートアップが適していると國府田さんはまとめました。
次のページ :
WealthNavi