こんにちは。ヤフー検索の高林@出張中です。
先日、ヤフー検索では、13サービスの検索サービスに対してアップデートを行いました。 今回は、アップデートを行ったサービスの裏側についてご紹介します。
お客様がどのサービスで検索しても同じような検索体験ができるように以下のアップデートを行いました。
■検索結果ページデザイン改定
→ ウェブ検索のページ仕様(各種機能のレイアウトやデザインなど)に準拠し、使い勝手の統一や向上を図りました。
■各種機能の追加・改善
→ ウェブ検索で培われたキーワード入力補助/関連検索ワード/スペルチェックなどを各サービスに導入しました。
■関連リンク機能
→ 検索キーワードに対して、関連した他の検索結果(サービス)を提案する機能を搭載しました。検索結果下部に表示されます。
■検索結果ページのドメインをsearch.yahoo.co.jpへ統一
→ 検索結果ページを一つのドメインに統一しました。たとえば、知恵袋の検索結果は"chiebukuro.search.yahoo.co.jp"となります。
今回、検索サービス全体のシステムアップデートにあたって、13サービスで開発体制を統一させるために、フレームワークの統一が必要となりました。 フレームワークといっても、symfonyやCakePHPの用に大規模なフレームワークではなく、Yahoo!Inc.でも採用されているフロントエンドに必要な部分の実装に特化した、軽量のフレームワークをベースに1つの新しいフレームワークを開発しました。 このフレームワークのコードネームを社内では、"Maldives(モルディブ)"と呼んでいます。 "Maldives"の名前の由来は、今回のフレームワークを開発したメンバーの中に、本リリース後に"Maldives"に新婚旅行を計画しているというエンジニアがおり、ちょうどコードネーム的にも適していたため、今回のフレームワークのコードネームとして名付けることにしました。
"Maldives"の代表的な機能を以下に挙げてみました。
■テンプレート管理システム
Yahoo!Incで利用されている Rosettaと呼ばれるテンプレート管理システムを導入したことで、新規サービスを容易に追加できるようにしました。
■フェデレーション・サーチ
検索処理に必要な各種ワークフローを並列に問い合わせる機能です。設定ファイルにワークフローを定義するだけでシンプルに動作します。
■テスト機能
限定したお客様に対して、通常とは異なる画面を表示し、結果をフィードバックする機能を実装しました。
■ロギング機能のリッチ化
ウェブ検索で実験的に導入されていた、お客様の細やかなデータを取得する機能を、フレームワークレイヤで実装しました。
■クエリ処理の共通化
ウェブ検索の開発で培われたノウハウを活かし、クエリの正規化処理を共通化・最適化することで、検索精度を全体的に向上させています。
■パフォーマンスの向上
上と同じく、ウェブ検索の開発で培われたノウハウを活かし、パフォーマンス向上のための各施策をフレームワーク上で実装しています。
■Yahoo!Inc製モジュールとの互換性
Yahoo!Incのフレームワークをベースとして開発したものであるため、Yahoo!Inc製モジュールとの互換性が大幅に向上しています。
今回のフレームワークの機能につきましては、テックブログの記事「『続・ハイパフォーマンスWebサイト』イベントに参加しました」で紹介したトークイベントでもお話させていただいた内容(Yahoo!検索のパフォーマンス向上策全て見せます)がありますのでこちらも一緒にご覧ください。
私は、引き続きフレームワークにおける中間サーバ改良を進めていくために、モジュールをどのような構成で実装して行くかを検討するため、現在、Yahoo!incに出張しております。こちらの方も決まり次第テックブログでご紹介したいと思います。
最後に、Maldivesに新婚旅行へいってきたエンジニアのお気に入りの写真を一枚。
今後も、Yahoo!検索をよろしくお願いします。
こちらの記事のご感想を聞かせください。
- 学びがある
- わかりやすい
- 新しい視点
ご感想ありがとうございました