Forkwell Press

エンジニアの生き様をウォッチするメディア

爆速でリリースし続ける「マイクロサービス指向の開発」はどのように生まれたのか

国内だけでユーザー数1,000万超となった情報キュレーションアプリ「グノシー」を運営し、2015年4月には東証マザーズ市場に上場も果たした株式会社Gunosy。サービス開始から3年半、創業から2年半というスピードで、プロダクト開発とビジネス構築のいずれも達成し、今も成長し続けるテクノロジー企業は、世界的に見てもまれといえる。

そんなGunosyのプロダクト開発の基礎となる開発ポリシーを、執行役員 開発本部 松本勇気氏に聞いた。松本氏はGunosyの創業3ヶ月後にジョインし、iOSアプリ、Androidアプリ、サーバーサイド、インフラなど開発全般を担当してきた。特にiOS版グノシーは2014年までデザイナーと松本氏のほぼ2人で開発。

そんな確かな実績があるからか、松本氏には会う人を圧倒するオーラがある。26歳とは思えない落ち着いた物腰、明瞭で論理的な話し方。彼はどうやってGunosyを作ってきたのか、そしてさらなる成長のために今何をやっているのか。(以下敬称略)

5,000万人が集まるプラットフォームを目指す Gunosy が、Web版を開発する Railsエンジニアを募集!

前提となるのは数字の共有。可視化の仕組みにはRailsを採用

Gunosyの開発部門は3つのチームで構成されている。数値解析チーム、広告配信チーム、そして松本が統括するプロダクトチームだ。プロダクトチームでは、iOSアプリ、Androidアプリ、Webアプリ、APIの開発やインフラ運用までをカバーする。

大学時代から「すごい時間割」を開発するなど実績があった松本。創業メンバー3人に誘われてGunosyを選んだのは「情報を届けられるユーザー数が多いこと」だった。

Gunosyでは、創業当時からの組織文化として、全社員が数値を意識している。数値を共有し、その上ではじめて議論がはじまる。松本に言わせれば「仮説をひたすら数字で証明していくので楽」なのだそうだ。社員全員で数値を共有するための仕組み、つまり可視化も徹底している。

「売上やDAU、リテンションデータ、滞在時間などは、ダッシュボードで確認できるようになっていますし、チャットでも重要な数値が1日ごと、ものによっては1時間ごとに流れるようになっています」

創業者3人の専門がデータ解析、データマイニングだったことも大きいという。

「仮説と評価をくりかえす。そのための数値を可視化することを徹底しています。可視化しないと誰も見なくなりますからね」

実はこの仕組みにはRailsが活躍している。Gunosyでは数値共有のポイントとなる管理画面でRailsを採用。周辺ライブラリが充実しており、設計哲学(DRYやCoC)により開発効率が良いのがその理由だ。

数字の背景を読み解き施策を全社員で考える。

数値そのものの分析をした上で、数値の背景にまで考えを巡らせることが必要だともいう。

「ある数値が増加傾向だとします。その数値は他の数値とどのように関連して動いているのか、別の数値の動きの結果なのか、比率にすると何が見えてくるか。表面的な数値だけでなく、その背景を読み解くことが大事です。Gunosyではそれを、すべてのメンバーが意識できていると思います」

Gunosyでは社員全員が施策の立案もする。プロダクトの改善につながるのであれば、チームを超えての提案も受け入れる。プロダクトの長期的な方向性にマッチするかどうかは重視するが、基本的には「やらないよりやってみる」。挑戦した結果ならば、失敗することで責任を問われることは無い。

施策の効果を見るうえで重要なのはA/Bテストの繰り返しだ。ネイティブアプリは頻繁にアップデートしづらいので、膨大な数のA/Bテストをあらかじめ仕込んでおき、サーバー側でA/Bテストを切り替えられる仕組みにしている。

数値だけでなく、ユーザーからのフィードバックも社員全員で共有する。プロダクトに関するお問い合わせはZendeskに集約され、クリティカルなものはカスタマーサポート担当者がプロダクト開発担当者に連絡する。必要な情報をHipChatに自動配信するボットが複数動いており、アプリレビューのコメントもHipChatに自動的に配信され、バグなどの不具合にもすぐ気づくことができる。サーバー監視、ユーザー動向でも異常値をアラートする仕組みにしている。

急成長ゆえのつまづきから学んだマイクロサービス指向の開発ポリシー

急成長を続けるゆえのつまずきもあった。

「早い時期に処理性能の壁にぶつかりました。iOSアプリをリリースした時、当時のユーザー数に見合わない急激な負荷がかかってAPIの応答がかなり遅くなったんです。プッシュ通知を配信した直後に一斉にアプリが起動されることで、短時間リクエストがサーバーに殺到し、さばききれなくなっていたことが原因でした。その時のAPIはRailsとUnicornを使っていましたが、Unicornは1プロセス1リクエストしかこなせないので、ピーク帯に想定以上のレイテンシを出してしまいました。

当初、フレームワークをRailsからSinatraに移行することで性能をある程度改善したのですが、テレビCMによるユーザー増を考えると性能が不足しており、あらためて対応することになりました。nginx-luaやNode.js、Haskellなどいろいろな技術を試した結果、最終的にGoで落ち着きました。当時、Goを実運用で使っている事例が少なかったのですが、導入段階で小さなサーバーで試して安定して十分な性能を担保できることも確認でき、本格運用を始めました」

また、この頃から、小さい単位で作り、リバースプロキシでビジネスドメインごとに順次切り替えていくという、マイクロサービス指向の開発を採用するようになった。小さく作ることで捨てやすくなるというメリットもある。使わなくなったAPIはメンテナンスせずにスッパリと捨ててしまい、エンドポイントへのアクセスは404を返すなどの対応を行っている。

「サーバークラスタを小さなものは2台程度から大きなものだと数十台ほどで構成し、ビジネスドメインごとに分離しています。もし新しい技術を導入して一部サーバーの反応が遅くなったとしても、メインのAPIの動作が担保できていればクライアントサイドは動作し続ける作りにしています」

Railsエンジニアを積極採用中!マイクロサービス指向での開発に興味があるなら Gunosy の求人票もチェック!

「必要なものはすぐ作る」Gunosyの働き方

「主張するだけの人よりも、作ってきた人がえらいという文化があるので、可視化のためのダッシュボードやチャットボットなどは誰かがすぐに作ります。実行してダメだったら外せばいいだけですし、失敗しても実行したことは評価します。まずは実行です」

必要なものはすぐ作る。こんな文化が実現できるのは、Gunosyでのメリハリのきいた働き方にも関係がある。

「長時間働くよりも、長期間働ける環境を作るというのを会社のポリシーにしています。残業せず18時半の定時には帰るようにしており、ふだんは20時には、ほとんどだれも残っていません」

一方で、朝は全員が定時に揃う。遅刻しない習慣は働き方全般にメリハリを生み、生産性が高まるので、より多くのことに挑戦し、失敗もできるのだ。

また、残業しない生活は、社員の成長と、より積極的な開発姿勢につながっている。自由になった就業後の時間で、自分の作りたいものを作れるし、勉強もできる。昼の時間にランチハックというイベントもある。「自分が作りたいものを宣言して作るだけですが、自由に作りたいものを作るという文化が浸透しています」という。

技術選定の柔軟さとスピード感ある開発

現在GunosyではWebサービスと管理画面はRuby on Rails、同時アクセスが多いAPIではGoを採用。Railsはチーム開発がしやすく、効率よく画面を作りやすい。一方でGoは軽くてマイクロサービス指向の開発に向いている。それぞれの言語やフレームワークの特性によって使い分けている。

また、フロントエンドのリアルタイムチャット機能にはReactを採用。コンポーネントの使い回しがしやすいと、デザイナーからの提案で採用に至った。「AngularJSはフロントエンドには大きすぎる。Reactは自分も使ってみてよいフレームワークだと思いましたし、実績もあるので導入しました」と松本は経緯を語る。

スピード感ある開発ができる理由の一つには、課題に対してどう解決していくか、手段や方法の選定がエンジニアに任されていることもある。会社として致命的なエラーを防ぐ体制をつくり、社員が提案する新しい技術は積極的に導入する。

「使いたい人が提案して開発する。サーバー要素なら僕やインフラ担当、各チームリーダーなどがレビューし、問題があったときにすぐに切り戻しができることがわかれば即導入です。最近だとErlangを使ったRuby風の言語Elixirが社内で盛り上がっています。複数サーバーでの分散並列処理が得意なのでどこかで使いたいと話しています」

新しい技術は情報がそろっていないことが多いが、ソースコードを読み自分で学ぶ。Goを導入したときも標準パッケージのコードリーディングで仕様を理解した。

今の課題は、次の成長ステージに向けての盤石な組織作り。

Gunosyでは現在エンジニアを募集中だ。1つの領域にとどまらずに複数の技術をキャッチアップできる、様々なバックグラウンドの人材を求めている。さらに、次の成長ステージに向かうGunosyのエンジニアに求められるのは、技術力だけでなく、なによりも「コミュニケーション力」。

「プロダクトを改善するためのアイデアを自分の言葉で説明でき、言語や技術、施策など、新しいことにどんどん挑戦したいと望んでいる優秀なエンジニアに、ぜひGunosyの仲間になってもらいたいと思っています」

「Gunosy 5,000万人都市構想」として、スマホ時代の情報プラットフォームをめざし、さらなる成長に向かおうとしているGunosy。新しい技術に貪欲で優秀なエンジニアには楽しい環境だ。

取材・執筆:深谷 歩 [株式会社 深谷歩事務所]

Gunosyの転職情報