2015年12月10日

Yahoo!ニュース

Yahoo!ニュースってどんなサービス?

  • このエントリーをはてなブックマークに追加

Yahoo! JAPAN Tech Advent Calendar 2015の10日目の記事です。一覧はこちら

こんにちは、Yahoo!ニュースでトピックスプロジェクトのTL(Technical Leader)を務めております、エンジニアの池田 (@ikenyal) です。

今日と明日、Yahoo!ニュースのスタッフが連載でお送りします。本日の記事では、Yahoo!ニュースがどんなサービスなのか、どんな改善を行っているかをお送りします。

Yahoo!ニュースってどんなサービス?

Yahoo!ニュース
Yahoo!ニュース は、月間100億PVを超え、老若男女幅広いユーザーにご利用いただいているサービスです。そのため、特定のジャンルや思想に偏った内容ではなく、公共性を重視し、今読むべきニュースをお届けできるよう心がけております。一方、パーソナライズ機能を提供することにより、ユーザーの趣味嗜好に合ったニュースへの接触機会も増やしています。

関連記事

24時間365日稼働

ニュースは夜中や祝日、年末年始も関係なく発生します。そのため、Yahoo!ニュースは24時間365日ニュースを更新し続けてサービスを提供しています。ニュース提供社から入稿される記事は、自動的にYahoo!ニュース上で記事ページが生成されます。

深夜のオフィスの様子
深夜のオフィスの様子

一方、Yahoo! JAPANトップページ等に表示されている13文字の見出しがつけられた「トピックス」は、編集部が手動で更新を行っています。1日約4000本配信されてくる記事の中から、トピックスとして掲載すべき記事を選択し、それに見出しをつけ、関連リンクを追加してトピックスを完成させます。そのため、編集部はシフト制で24時間365日更新作業を続けており、上の写真のように深夜でも誰かが更新作業を行っています。ワールドカップや選挙等の大きなイベントが発生する際には、エンジニアや企画職等も深夜体制・シフト制を組み、ユーザーのみなさまに確実に情報を届けられるような体制を整えています。

関連記事

何が起きてもサービスを止めない

Yahoo!ニュースは地震や事故等の、重要かつ速報性が求められる情報もお伝えしています。そのため、どんな事が起きてもサービスを止めるわけにはいきません。必要な情報がユーザーに届けられず、その影響で人命や財産に関わってくる可能性もあります。

しかし、データセンターやネットワークの障害、または災害によって東京が壊滅的なダメージを受ける可能性も捨てきれません。そのような事態でもニュースを継続して更新できるよう、Yahoo!ニュースではシステム的にも人的にも対策をしています。BCP(Business Continuity Plan; 事業継続計画)対策と呼ばれるものです。

ある地方で災害が起こって、その地方のデータセンターが壊滅、そしてその拠点の社員は仕事をすることができない、という状態になっても、システムや社員を複数拠点に分散させておくことにより、継続して業務を続けられる体制を整えています。データセンターはもちろん、編集拠点、開発拠点も複数カ所に配置しています。日々の業務では、テレビ会議によって常に各拠点同士がつながっているため、問題なく業務を進めることができます。

そのために、エンジニアがシステム設計をする際にシステムダウンのリスクをできるだけ少なくできるBCP構成を考えたり、災害訓練をしたり、Yahoo!ニュースでは常にBCPを意識する文化が根付いています。下の写真は今年実施された防災訓練の様子です。複数のサービス・職種・拠点が協力し、合同で訓練を実施しました。

防災訓練の様子
防災訓練の様子

関連記事

Yahoo!ニュースの改善施策

このように、常にサービスを守らないといけないYahoo!ニュースですが、保守運用だけではなく、日々改善も行っています。そこでは、A/Bテストを使って色々な画面・機能で様々な部分の改善が行われています。

A/Bテストとは

A/Bテストのイメージ
A/Bテストのイメージ

A/Bテストとは、Webサービス上で複数のパターンを実際に一部ユーザーに公開して、その効果をチェックする手法のことです。

上の図はそのイメージを示しています。この場合は、既存パターンAと、改善案Bをテストする状態です。AとBをそれぞれ5%ずつのユーザーに実際に使ってもらいます。残りの90%のユーザーはテスト対象には該当せず、通常通りのサービス提供となります。このように、同じ期間に比較したい対象のパターンを実際に使ってもらった結果を数値化して比較します。

A/Bテストのメリット

A/Bテストのおかげで、季節・時間によるユーザー行動の違いや、地震や重大ニュース・イベント等の突発的に数値が上がった場合の影響を考えなくて済みます。もし、「今週はAをリリースして、来週はBをリリースし、その数値を比べてみよう」とした場合を考えてみます。このやり方では、Aの期間に大きな地震が発生した場合、その数値は通常時とは異なる結果になってしまいます。その状態で翌週のBの数値と比較しても、前述のような時期的・突発的要因による数値の差なのか、改善案にパターンを変えたことによる効果なのかが判断できず、間違った判断をしてしまうリスクが発生します。

つまり、A/Bテストには以下のようなメリットがあると言えます。

  • 定量的に判断できる
  • 同時期に複数のパターンを比較できる
  • 判断ミスによるリスクを減らす事ができる

そのため、サービスの改善にはA/Bテストは欠かせない仕組みであり、Yahoo!ニュースでもこの手法を用いてサービス改善を日々行っています。

A/Bテストに関しては、大学で講義も行いました。その際のレポートにA/Bテストについて記載しているので、こちらの記事 もご覧ください。

リアルタイムA/Bテスト

ここまでに触れてきたA/Bテストは1週間ほどテストを実施し、テストが終了したらそのデータを確認・分析するものです。しかし、トピックスの見出しを最適なものに改善したいと考えた場合、後日の分析で結果が分かったとしても、その見出しを考えている時に最適な見出しを提供することができなければ、結果としてユーザーに分かりやすい最適な見出しの提供はできません。つまり、見出しに関してはリアルタイムにA/Bテストを実施し、その結果をリアルタイムに反映させていくことで真の効果を発揮することができると言えます。

そこで、Yahoo!ニュースでは、トピックスの見出しを最適なものにできるよう、リアルタイムに結果が分かるA/Bテストの仕組みも開発して利用しています。

見出しの候補が複数ある場合、今までは編集部内で議論して最終的に一つに決めていたのですが、この仕組みがあれば実施にユーザーがどの見出しの時に一番読んでもらえるのかを確認できます。その際に、単にクリックされれば良い、という訳ではなく、いわゆる釣り見出しになっていないかは編集部によって当然ながら確認しています。

見出し候補が決まったら、ツールからテスト見出しを入力するだけで、A/Bテストが始まります。対象ユーザーの絞り込みや割合の調整はシステムが自動で行います。現在は複数の見出しを、PC・スマホそれぞれでテストが可能です。テストを実施し数分~10分程度すると統計的に判断できるサンプル数に達します。そして、統計的に有意差が認められた見出しが見つかれば、そのトピックスの見出しをテスト結果から得た最適な見出しに差し替えます。これにより、ユーザーに一番伝わる見出しを提供できる事になります。

Yahoo! JAPANのデータ分析環境

ここで、Yahoo! JAPANのデータ分析に関わるプラットフォームをご紹介します。ここまでに触れてきた、(リアルタイムではない)A/Bテストの仕組みは、テスト実施に必要なライブラリから、データ収集後の分析ツールまで整備されており、それぞれのサービスが比較的簡単にA/Bテストを導入できるようになっています。

また、アクセスログ等から集めたデータを集計・加工するために、Hadoop環境も用意されています。Hadoopを使う際には、バッチ処理で集計しなくてもWebUIのツール上から集計をすることができます。そのため、多くのエンジニア以外の社員もデータ分析に利用しています。

そして、リアルタイムにデータを取得するストリーム処理の仕組みも、Kafka・Stormを利用して提供されています。今回の見出しのリアルタイムA/Bテストも、この仕組みを利用してデータを収集し、データの蓄積・有意差検定・ツールでの可視化等を行いました。

また、サービスで独自に数値を取りたい場合に、必要に応じてはfluentd等を使って収集したりもしています。

リアルタイム見出しA/Bテストの結果

見出しA/Bテストの例
上のグラフは、リアルタイム見出しA/Bテストの仕組みを使ってテストした実際の結果の一例です。横軸が時間、縦軸がCTRを示しています。
同じニュースを伝える見出しであっても、表現の違いによってユーザーの行動に差が出ることが分かります。他にもいくつか事例を紹介していますので、興味を持たれた方は、ぜひ関連記事もご覧ください。

編集部ではこのような見出しのテストを日々繰り返すことにより、見出しを作る際のノウハウを蓄えています。

関連記事

おわりに

Yahoo!ニュースは、何が起きてもサービスを止めることができない使命を持っています。そのような守りの姿勢と、日々改善を行ってユーザーのみなさまに満足していただけるよう、攻めの姿勢も持っています。そして、編集部による「編集」とエンジニアによる「技術」を持ち備えています。そのような「編集×テクノロジー」が我々の強みでもあります。この組み合わせにより、Yahoo!ニュースにしかできないサービスを提供できるよう、日々精進してまいりますので、今後ともYahoo!ニュースをよろしくお願いします。

また、今回紹介した内容や、サービスの裏側を、Yahoo!ニュース スタッフブログ で配信しています。こちらも合わせてご覧ください。

そして、一緒にYahoo!ニュースを磨き上げていくエンジニアも募集中です。詳しくは こちらのお知らせ をご覧ください。
エンジニア採用

明日もYahoo!ニュースのエンジニアによる記事が続きます。冒頭に出てきたTLとは何なのか、Yahoo!ニュースはどんな体制で運営されているのかをご紹介しますので、お楽しみに!

Yahoo! JAPANでは情報技術を駆使して人々や社会の課題を一緒に解決していける方を募集しています。詳しくは採用情報をご覧ください。

  • このエントリーをはてなブックマークに追加