体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 2次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。