『マイクロにしすぎた結果がこれだよ!』──Gunosyにその舞台裏を聞いてみた

GunosyがKDDIと共同で、2016年6月にリリースしたニュース配信アプリ「ニュースパス」。その開発を担った二人のエンジニアにマイクロサービス化などアーキテクチャ設計の話を聞いた。そこで得た開発ノウハウは、先日発表されたばかりの新アプリ「Bazzary」にも受け継がれている。

左から、株式会社Gunosy 榎本 悠介氏、加藤 慶一氏

グノシーの経験を引き継ぎつつ、コードはすべて書き直した

Gunosyは新たなニュース配信アプリ「ニュースパス」を、2016年6月からKDDI・沖縄セルラーと共同してサービスを開始した。

アプリはApp StoreやGoogle Playからダウンロードできるほか、KDDIのスマートフォン最新機種へのプリインストールなどの取り組みが徐々に始まっている。

配信されるニュース全文から、特定の有名人や地域などのキーワードを抽出する機能を備え、自分の好みに合ったニュースを自動的に一覧化できるなど、従来のニュースアプリにはない特色を備えている。

今回はニュースパスの開発に携わった2人のエンジニアに、マイクロサービスやサーバーレスアーキテクチャなどを中心に立ち上げの舞台裏を聞いた。

グノシーはリリースから3年を経て、1800万人規模のユーザーがダウンロードするアプリに成長した。傾向としては芸能ニュースやスポーツなどエンタテインメント性の強いメディアになっているが、「ニュースパス」はむしろ社会や政治といった時事ニュースに強みを発揮する。

こうした特色の違いはあるが、記事を配信する仕組みは共通している。グノシーの開発で培った知見は、「ニュースパス」開発でも有効で、一つのアドバンテージになっていることはたしかだ。

「グノシーでの経験を通して、ニュースアプリとはどういうもので、開発には何が必要か、何を優先すればよいのか、といったドメイン知識が社内に蓄積されていました。『ニュースパス』は2016年初頭から開発を始め、半年でリリースできましたが、そのスピードはドメイン知識が私たちにあったからだと思います。

とはいえ、アプリ側もサーバー側もコードは全く新たに書き直しています。Gunosyには“こうしなければよかった”という負の遺産がないわけではなく、それを避けるためには新たに書いたほうが早かったんです」と語るのは、ニュースパス開発部部長の加藤慶一氏だ。

株式会社Gunosy 開発本部ニュースパス開発部部長 加藤 慶一氏
大手ソーシャルゲーム企業でソーシャルゲーム運営全般、アドテクノロジー会社でデータエンジニアリングを担当し、2015年株式会社Gunosy入社。「ニュースパス」を新規開発した後、現在は開発のマネジメント全般を担当。早稲田大学基幹理工学研究科修了。

新たにコードを起こすにあたって、意識して導入したのがマイクロサービスの考え方だ。リソース単位でスタックが分かれ、スタックをまたぐ通信はすべてAPI経由で疎結合している。

また、データベース操作は同一スタック内のコンポーネントしかできないように設計されている。このあたりの構成については、「ニュースパス」のリリースまで開発に携わっていた榎本悠介氏が「マイクロにしすぎた結果がこれだよ!」というスライド資料で詳細に解説している。

株式会社Gunosy 新規事業開発室 榎本 悠介氏
株式会社ディー・エヌ・エーにてMobageプラットフォームのAPI開発や「ハッカドール」などのサービス立ち上げを経て、2015年株式会社Gunosy入社。ニュースパスの新規開発では、APIやクローラーを設計から開発まで担当し、現在は新規事業の立ち上げや既存プロダクトの設計を担当。東京大学工学部卒。

グノシーはその歴史の中でコンポーネント数が膨らんでおり、複数のコンポーネントが同一のDBをいじることができるため、「誰がそのデータを入れたのか、書き換えたのかがわかりにくく、データ周りがガチャガチャになるリスクがあった」(榎本氏)。

マイクロサービスにすれば、すべてAPI経由でDBを見ることになるので、データの責任者が明確になる。

サーバーはすべてAWSの設定管理サービスOpsWorksで管理されており、ボタン一つでデプロイやサーバー追加ができるようになっていたことも、マイクロサービスを導入しやすい土壌になっていた。

8,568通り、あなたはどのタイプ?

マイクロサービスは「銀の弾丸」ではない

しかしながら、マイクロサービスはけっして「銀の弾丸」ではなかった。

上記の体験レポートにもあるように、サービスの開発を進めていくと、ローカル上で30個ものコンポーネントが動作して相互に通信をする混乱状態が生まれた。

▲出典:「マイクロにしすぎた結果がこれだよ!」14Pより

これはいわばマイクロサービスの宿命でもあった。

全体として構成が複雑になりすぎ、障害時の調査範囲も広くなり、オーバーヘッドが大きくなるという「ディストピア」の前に、エンジニアは対応に追われた。

「もちろん、マイクロサービスには新たにチームにジョインしたメンバーが、サービスの全貌を把握しないでもすぐに開発に着手できる利点があります。あるいは、チームがAとBに分かれていて、それぞれがAとBという個別のコンポーネントを開発するのであれば、それぞれが互いのことを意識せずに作ることができる。これもメリットの一つです」と、榎本氏。

「しかし、チーム単位よりコンポーネントの数が細かくなると、とたんにAPIが乱立してしまうという、マイクロサービスのデメリットが表れてしまう。逆にいえば、マイクロサービスはそれを導入するプロジェクトの組織構造と同じ形でコンポーネントを分けることができればうまくいく。マイクロサービスは組織論であるとも言われる理由がよくわかりました。

いずれサービスがスケールすることを見越して、先行投資のように割り切ることができれば、マイクロサービス化は意味があると思います。しかしどんなプロジェクトにも適用できるというものではない。実際、『ニュースパス』の後、私がいま携わっている新規サービスではマイクロサービスは導入していません」

と榎本氏は、マイクロサービスのメリットとデメリットを把握する。

8,568通り、あなたはどのタイプ?

無駄なことはしたくないから、サーバーレスアーキテクチャもあり

もともと、榎本氏は「ニュースパス」の開発でマイクロサービスを導入することには消極的だったという。

しかし、「新しいアーキテクチャ設計を“やれるけれどやらない”のと、“やりたいけれどやれない”のとでは大きな違いがある。組織的に“やれる”という前例を作りたくて」導入に踏み切った。

こうした技術開発における“攻めの姿勢”は、Gunosy開発本部を貫くポリシーのようなものだ。

新しい技術やサービスを試すことについては、執行役員の松本勇気氏をはじめエンジニアチームのトップから、一人ひとりのエンジニアに至るまでけっして躊躇することがないのだという。

「スモールチームで開発しているので、何らかの方法で効率化しなければならない。それで開発が効率化するのであれば、使える技術、使えるサービスはトライしようとする姿勢は一貫していますね」と、加藤氏は指摘する。

「ニュースパス」では、ログの配送や認証・認可系のコンポーネント開発にAWSのKinesis、Cognitoを利用している。

また、Webサーバーを持たずにWebページの生成を可能にするためにAWS Lambdaを利用しているが、こうした新手の外部サービスを活用したサーバーレスアーキテクチャの採用も、ムダを省く姿勢の表れといえる。

率先して新しい技術やサービスを利用することで、その限界や課題を発見することもできる。

試さないでいるより、試してみて得られる知見のほうが、エンジニアにとっては重要なのは言うまでもない。

実際、Lambdaについても、現状での限界を見切ることができた。こうして得た新たな知見は、次の開発に必ず活かせるはずだ。

「一つひとつ管理しなくても、勝手にサーバーが起動して、処理が終われば消えてなくなるようなイミュータブルな構成になっているので、サービスのテストがしやすいという利点を感じました。

各コンポーネントの間のやりとりを吸収するような使い方では、安いし、速いんですが、大規模なオンラインサービスに向いているかというと、まだ不十分。すぐにスケールするサービスの場合は、自分たちでサーバーを立てたほうがいいかもしれません」(加藤氏)

新しい技術を自由に試せるGunosyの開発環境は、たしかにエンジニアにとっては天国かもしれない。しかし、「私たちはビジネスをしているのであって、けっして技術だけを優先しているのではない」と加藤氏は言う。

「あくまでも、自分たちのアプリをより便利により快適にユーザーに使ってもらうための開発。事業課題の解決が先にあって、技術はそれを実現するための手段にすぎないのです」 

これはエンジニア採用の要件にもつながる話だ。

「新しい技術にチャレンジする姿勢は評価しますが、必ずその意欲と事業課題を結び付けて考えてほしいんです。サービスを改善していくために自分で課題を発見し、解決していく。Gunosyでは『課題解決型エンジニア』と呼んでいますが、そんなエンジニアが理想です」(加藤氏)

軽々と役割を交換して、「Bazzary」を開発

「6時30分の定時にさっと帰れるエンジニアがいるのには驚きました。IT業界では珍しいでしょうね」という加藤氏。

Gunosyにはフレックスタイム制もリモートワーク制度もないが、少なくとも7時30分になるとほとんどの社員が帰宅するという。これもまた効率を重視する開発体制の賜物かもしれない。

技術についてのオープンな姿勢も特筆に値する。榎本氏がマイクロサービス導入の体験レポートを公表したように、エンジニアコミュニティにとって有益であると思えば、その知見を外部に発信することを妨げる人はいないのだ。

「私も『ニュースパス』については、サービスの構成とか、クローラーがどんなふうに動いているかとか、ここまで言っちゃっていいのかなというぐらいのことまで、喋っちゃってますからね(笑)」

そのオープネスな姿勢は「ある程度喋っても、それを真似するのはそう簡単なことじゃないという、私たちなりの技術に対する自負があるから」(榎本氏)でもある。

その榎本氏はいま「Bazzary(バザリー)」という新規サービスの開発で忙しい。メルカリ、フリルなどのフリーマーケット系アプリを横断的に検索できるアプリで、最安値の商品を簡単に探せるのが特徴だ。若い女性たちの検索行動を観察していて発想したものだという。

お目当ての服を探すときに、いくつかのフリマアプリを行ったり来たりしないで済むようになる。

「ニュースパス」では執行役員の松本勇気氏がアプリ側を、榎本氏がサーバーサイドを主に担当した。

「次は役割を交換しちゃおうと、『Bazzary』では私がアプリを、松本がサーバーを担当することになりました。私にとっては実はiOSアプリは初挑戦。わくわくしながらコードを書いています」

軽々と役割の境界を越境し、場合によっては交替してしまえる、そのエンジニア力は羨ましい限りだ。

Gunosyは「Bazzary」の他に2017年1月に「ビデレー」という動画配信キュレーションアプリをリリースした。これらの新サービス発表はGunosyの事業にとっても大きな意味をもつ。サービスの好調で会社の事業基盤はできたが、いつまでもそれだけに依存するわけにはいかない。

新しい事業の柱が必要とされていた。もとより、Gunosyはニュースアプリの開発会社ではなく、「情報を世界中の人に最適に届ける」ことを企業理念にする会社。

ユーザーがフリマでより賢い買い物ができるようにする「Bazzary」と、今後高い成長が見込まれる領域の動画を対象にした「ビデレー」は、情報の非対称性のある分野の課題解決を目指すGunosyの第2章の始まりを告げるものなのだ。

「私たちの提供する情報はクローラーのためにあるのではなく、あくまでもユーザーのためにあるもの。その初心を忘れることなく、これからもどんどん新しいサービスを提供していきます」と加藤氏と榎本氏は、次のステージへの意気込みを語るのだった。

執筆:広重隆樹 撮影:刑部友康

※本記事は「CodeIQ MAGAZINE」掲載の記事を転載しております。

PC_goodpoint_banner2

Pagetop