技術陣が振り返る「Yahoo!知恵袋」開発の難所

2005/11/15

 「基本的には技術的に難しいことはやっていない。ただ、Yahoo! JAPANのサービスとしてふさわしいサービスレベルは維持しないといけないと考えた」。ヤフーが11月7日に正式版を公開したQ&Aサイト「Yahoo!知恵袋」の開発者、ヤフー リスティング事業部 技術 門川百合子氏は1年7カ月におよんだベータ開発期間をこう振り返った。

 知恵袋のサービスは韓国のYahoo! Koreaがベース。ヤフーのリスティング事業部 検索企画室 Yahoo!知恵袋プロジェクトリーダー 岡本真氏によると、約2年前に知恵袋をYahoo! JAPANに移植することが決まった。「ベータ期間の初期は、ほとんどの機能が韓国版のローカライズだった。そのままもらったという感じだったが、開発スピードを優先した」(門川氏)。

左からヤフーのリスティング事業部 検索企画室 Yahoo!知恵袋プロジェクトリーダー 岡本真氏、リスティング事業部 技術 門川百合子氏、申健翔氏

 ただ、韓国版知恵袋も技術的に“枯れている”とはいいがたく、「ブラックボックスの部分がたくさんあり、手探りでベータ公開した。当初はバグだらけだった」と門川氏は振り返る。そんな状況でもベータ版を公開したのはユーザーからのフィードバックを得たかったからだ。ユーザーからの電子メールに基づいて改善を加える。また、週に1度はヤフーのカスタマサポートからフィードバックの資料をもらい、改善を検討する。新機能の追加などは主に知恵袋の企画担当が検討するが、「最終決定には必ず技術がからむようにする」(門川氏)ことで、開発に無理が出ないようにする。

 新機能の追加と同時に知恵袋の技術陣が重視したのは、“ヤフーにふさわしいサービスレベルを維持すること”。1年7カ月のベータ期間中だけで約647万件の質問があり、解決した質問(ベストアンサー)は約314万。総回答数は約2437万件に上った。ベータ期間の当初と比較してページビューは2倍に膨らんだ。ベータ期間中の2004年10月から12月にかけては知恵袋のパフォーマンスが低下。質問をカテゴリ別にたどっていく操作のレスポンスが落ちて、1つの操作に2分程度の時間がかかるようになってしまった。このようなパフォーマンス低下はヤフーが考えるサービスレベルを満たしていないのは明らかだった。

 パフォーマンスの低下の場合、「まず疑うのはデータベース」(門川氏)。カテゴリ操作のケースでは、カテゴリに関連する質問の履歴を表示する作業がボトルネックになり、全体の処理を遅らせていた。門川氏らはクエリで一番遅い処理をしていた作業を見つけ出し、パフォーマンス低下の原因を特定。MySQLが生成する質問履歴のキャッシュを少なくすることで、ボトルネックをなくした。改善前はカテゴリに関連するすべての質問の履歴をキャッシュとして生成していたが、すべての質問履歴が見られることはないと判断し、最初の1〜2ページだけをキャッシュとして生成するようにした。

 パフォーマンスを向上させるためのデータベースのチューニングは日常作業だった。インデックスのサイズや、質問と回答のデータ量が予想を超えて増大することもあり、サービスレベルの維持には気を使った。正規版ではYahoo! JAPAN IDを使って、知恵袋とYahoo! JAPANのほかのサービスが連携を取れるようにするため、パフォーマンスの予測が難しくなる。門川氏は「ほかに比較できるサービスがないため難しい。他国のYahoo!のサービスを参考にしている」と述べた。

(@IT 垣内郁栄)

[関連リンク]
Yahoo!知恵袋

[関連記事]
Yahoo!知恵袋が正式版に、女性と初心者に愛される理由は? (@ITNews)
Web 2.0時代のYahoo!とは、検索リニューアルで端緒つかむ (@ITNews)
ヤフー社長に聞く「エンジニアにとってヤフーは働きやすい?」 (@ITNews)
新サービスを相次ぎ投入、ヤフーが検索技術に注力する理由 (@ITNews)

情報をお寄せください:



@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)