リクルートテクノロジーズ 宮川 
リクルートにおけるソリューション開拓と実装展開 〜elasticsearchによる検索基盤と新ソリューションの開拓
2 
宮川 典久 リクルートテクノロジーズ APソリューショングループ 
自己紹介 
Twitter 
@m_nori 
出身地 
東京 
趣味 
ロードバイク 
ゲーム(最近はMH4G) 
折り紙
3 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
アジェンダ 
1.はじめに 
2.次世代検索基盤について 
3.サイト展開へ向けての取り組み 
4.まとめ
1.はじめに 
4
旅行 
IT/トレンド 
生活/地域情報 
グルメ・美容 
ライフスタイル領域 
ライフイベント領域 
進学 
就職 
結婚 
転職 
住宅購入 
車購入 
出産/育児 
「選択・意思決定」を支援する情報サービスの提供 
→「まだ、ここにない、出会い。」の実現へ 
リクルートとは 
5
リクルートキャリア 
リクルートジョブズ 
リクルートスタッフィング 
リクルート住まいカンパニー 
リクルートライフスタイル 
リクルートマーケティングパートナーズ 
スタッフサービス・ホールディングス 
リクルートアドミニストレーション 
リクルートコミュニケーションズ 
事業会社 
機能会社 
インフラ部門 
大規模プロジェクト推進部門 
UI設計/SEO部門 
ビッグデータ機能部門 
テクノロジーR&D部門 
事業・社内IT推進部門 
リクルート 
ホールディングス 
リクルートとは、 
主要7事業会社+3機能会社 
で構成されるグループ企業群 
6 
リクルートテクノロジーズとは
リクルートテクノロジーズの役割 
7 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
開拓 
実装、展開 
運用 
テクノロジー 
ライフサイクル 
≪テクノロジーへの考え方≫ 
「開拓」「実装・展開」を経た「運用」でリクルートへの利益貢献を行う。
リクルートテクノロジーズの役割 
8 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
広範囲のビジネスに装 着し、効果を最大化さ せるための改善を行い、 事業貢献利益を追究 
Rグループのビジネスに 短・中期的に実活用の可能 性がある技術をリサーチ 
対象技術における事業化 への検証を行い、評価・選 定する 
開拓(実活用研究) 
実際に事業へ適用 し、より広範囲に 利用するための型 化やスキームを構 築 
実装・展開 
運用 
実施内容 
リクルートテクノロジーズ(短・中期的視野) 
利益を目的としない中長期的な 視点に立ち、新技術や新手法の 研究/発明を行い、論文発表す ることを目指す 
要素基礎技術の研究 
社外(中・長期的視野) 
技術数の 
推移イメージ 
年間約200の技術をリサーチし、 約30の技術を評価・選定 
年間数個〜10個の 
技術を展開 
運用フェーズまで 
移行された技術が蓄積 
無数の新技術を研究/発明
•サイト横断でのアーキテクト領域を担当し、 サイトに役立つソリューションを展開する グループ 
•社内フレームワークや性能チューニング等 をソリューション化し運用している。 
•運用だけでなく、技術ベースでサイトに貢 献するため、ソリューションの開拓や実 装・展開も担う 
ASGとATL 
9 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
•新しい技術の開拓や次のトレンドを察知し、 未来のサービスに活かせるソリューション を生み出すグループ 
•先端技術をベースとしたソリューションを 作り、サイト内でフィジビリティを行う。 
どちらもリクルートテクノロジーズ内でアプリケーションの開発を担当する組織
ASGとATL 
10 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
技術数の 推移イメージ 
ATL 
ASG 
開拓(実活用研究) 
実装・展開 
運用 
テーマによっては最初か ら協同する
リクルートにおけるJavaへの取り組み 
11 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
多くのサイトでR2FrameworkというJava製の社内フレームワークを使っているた め、リクルートはJava非常にお世話になっています! 
✖
2.次世代検索基盤について 
12
次世代検索基盤とは 
13 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
Query Analyze Search System 
リクルート内のサイトに対して 
•検索品質 
•フィードバック 
•検索機能追加 
•メトリクス など提供する次世代検索基盤
アーキテクチャ 
14 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
✖ 
殆どの機能をelasticsearchのプラグインとして実装
elasticsearchとは 
15 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
オープンソースの全文検索エンジン 【特徴】 
•Apache Luceneがベース 
•リアルタイム性 
•スキーマレス 
•分散環境 
•RESTful API 
•楽観的バージョン制御 最近はKibanaと組み合わせたログモニタリングによく使われている。 
elasticsearch自体については18時からの@johtaniの セッションで詳細に話してくれると思います
体制と役割 
16 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
Qass 
サイト提供I/F 
検索基本機能 
機械学習 
インフラ 
Qass利用サイト 
Hadoop開発 
インフラ構築 
elasticsearch プラグイン開発 
導入支援 
タスク 
組織 
ASG 
ATL 
BDG 
ISG
提供する機能 
17 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
Qass 
サイト提供I/F 
検索基本機能 
機械学習 
インフラ 
•Suggest 
•Results Blending 
•Query A/B Test 
•Custom Tokenizer 
•Query Boosting 
•Speller 
機能 
•User Feed Back 
•Dictionary
ユーザーフィードバック 
18 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
ビーコンサーバ 
Hadoop基盤
Hadoopによる機械学習の活用 
19 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
機械学習辞書 
ビーコンデータ 
・入力中のキーイベントを収集 
「牛角」の読みが「ぎゅうかく」で あることを学習! 
牛角 
翌日「ぎゅうかく」で検索してみると・・・ 
※入力途中で「牛角」を入力候補に表示! 
検索 
※「牛角」に漢字変換してから検索 
特殊な読み仮名は通常手動で辞書登録しないと仮名検索ができない 例)「ぎゅうかく」と入力 
検索ログ
3.サイト展開へ向けての取り組み 
20
Suggest+Beacon サーバ 
各サイト 
Qassのシステム構成 
21 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
APサーバ 
Batchサーバ 
QassPlugin 
Qass Analizer 
コンテンツ インデックス 
シノニム 
機械学習辞書 
マッピング 
HDFS 
収集データ 
クエリーログ 
ビーコンログ 
コンテンツ データ 
運用管理 
Batchサーバ 
Qass Analizer 
サジェスト 
インデックス 
集計結果 
シノニム 
機械学習辞書 
マッピング 
サジェスト データ
Suggest+Beacon サーバ 
各サイト 
通常の検索 
22 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
APサーバ 
Batchサーバ 
QassPlugin 
Qass Analizer 
コンテンツ インデックス 
シノニム 
機械学習辞書 
マッピング 
HDFS 
収集データ 
クエリーログ 
ビーコンログ 
コンテンツ データ 
運用管理 
Batchサーバ 
Qass Analizer 
サジェスト インデックス 
ユーザ操作は全て Beaconサーバに送信
Suggest+Beacon 
サーバ 
各サイト 
サジェスト 
23 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
APサーバ 
Batchサーバ 
QassPlugin 
Qass Analizer 
コンテンツ インデックス 
シノニム 
機械学習辞書 
マッピング 
HDFS 
収集データ 
クエリーログ 
ビーコンログ 
コンテンツ データ 
運用管理 
Batchサーバ 
Qass Analizer 
サジェスト 
インデックス
Suggest+Beacon サーバ 
各サイト 
サジェスト 
24 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
APサーバ 
Batchサーバ 
QassPlugin 
Qass Analizer 
コンテンツ インデックス 
シノニム 
機械学習辞書 
マッピング 
HDFS 
収集データ 
クエリーログ 
ビーコンログ 
コンテンツ データ 
運用管理 
Batchサーバ 
Qass Analizer 
サジェスト 
インデックス
Suggest+Beacon 
サーバ 
各サイト 
機械学習 
25 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
APサーバ 
Batchサーバ 
QassPlugin 
Qass Analizer 
コンテンツ 
インデックス 
シノニム 
機械学習辞書 
マッピング 
HDFS 
収集データ 
集計結果 
シノニム 
機械学習辞書 
マッピング 
Map/Reduce 
サジェスト データ 
クエリーログ 
ビーコンログ 
コンテンツ 
データ 
運用管理 
Batchサーバ 
Qass Analizer 
サジェスト インデックス
更新面の管理 
26 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
プラットフォームとして提供しているため、サイトによってインデックス更新の方 針やタイミングが異なるのを実現できるようにする必要がある。 
サイトA 
日時で差分更新のみ 
サイトB 
日次の差分更新 
+ 
月次で全件更新→翌日反映 
サイトC 週次で全件更新→月曜朝8時に反映
更新面の管理 
27 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
QassPlugin 
ItemIndex001 
SearchIndex(Alias) 
検索 
更新 
UpdateIndex(Alias) 
インデックスを直接参照するのではなくelasticsearchのAlias機能を活用すること で、検索面と更新面を間接的に参照。 
ItemIndex002
更新面の管理 
28 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
QassPlugin 
ItemIndex001 
SearchIndex(Alias) 
検索 
更新 
UpdateIndex(Alias) 
検索面を表に出すタイミングでAliasの切り替えを実施。 インデックス毎に連番でバージョン番号を付けて管理を行う。 
ItemIndex002 
ItemIndex003 
一定期間経過後に削除
辞書更新への対応 
29 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
シノニム 
機械学習辞書 
マッピング 
Qass Analizer 
途中から異なる辞書を使うと不整合が発生するため、辞書を反映させるのはインデ ックスを作り直したタイミングにする必要がある。 
焼肉→焼き肉 
◯◯焼き肉 
△△焼肉 
◯◯焼き肉 
△△焼き肉 
シノニム 
機械学習辞書 
マッピング 
Qass Analizer 
焼き肉→焼肉 
◯◯焼き肉 
△△焼き肉 
辞書を更 新 
□□焼き肉 
□□焼肉
辞書更新への対応 
30 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
ItemIndex001 
ItemIndex002 
ItemIndex003 
シノニム 
機械学習辞書 
マッピング 
シノニム 
機械学習辞書 
マッピング 
シノニム 
機械学習辞書 
マッピング 
Dictionary001 
Dictionary002 
Dictionary003 
Qass Analizer 
QassPlugin 
SearchIndex(Alias) 
UpdateIndex(Alias) 
検索 
更新 
Indexバージョンごとに辞書セットを作成。 各インデックスを使う際にどの辞書を使うかをプラグインにて管理。
Solrからの移行 
31 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
サイト側アプリケーションサーバ 
検索 (http) 
検索 (http) 
Solr 
検索式 
Solr 検索式 
現状多くのサイトで全文検索エンジンとしてSolrを利用している。 そのため、プラグイン内でSolrクエリーを解釈することでサイト側は手を入れずに 導入を行えるように対応。 
SolrとのA/Bテストにも活用!
4.まとめ 
32
Java8への対応 
33 
(C) Recruit Technologies Co.,Ltd. All rights reserved. 
社内フレームワークのJava8化も行い、各サイトのJava8化に向けて推進していま す! ASGでもATLとも連携し、ライブラリのOSS化も積極的に行っていく予定です!

JJUG CCC リクルートの Java に対する取り組み

  • 1.
  • 2.
    2 宮川 典久リクルートテクノロジーズ APソリューショングループ 自己紹介 Twitter @m_nori 出身地 東京 趣味 ロードバイク ゲーム(最近はMH4G) 折り紙
  • 3.
    3 (C) RecruitTechnologies Co.,Ltd. All rights reserved. アジェンダ 1.はじめに 2.次世代検索基盤について 3.サイト展開へ向けての取り組み 4.まとめ
  • 4.
  • 5.
    旅行 IT/トレンド 生活/地域情報 グルメ・美容 ライフスタイル領域 ライフイベント領域 進学 就職 結婚 転職 住宅購入 車購入 出産/育児 「選択・意思決定」を支援する情報サービスの提供 →「まだ、ここにない、出会い。」の実現へ リクルートとは 5
  • 6.
    リクルートキャリア リクルートジョブズ リクルートスタッフィング リクルート住まいカンパニー リクルートライフスタイル リクルートマーケティングパートナーズ スタッフサービス・ホールディングス リクルートアドミニストレーション リクルートコミュニケーションズ 事業会社 機能会社 インフラ部門 大規模プロジェクト推進部門 UI設計/SEO部門 ビッグデータ機能部門 テクノロジーR&D部門 事業・社内IT推進部門 リクルート ホールディングス リクルートとは、 主要7事業会社+3機能会社 で構成されるグループ企業群 6 リクルートテクノロジーズとは
  • 7.
    リクルートテクノロジーズの役割 7 (C)Recruit Technologies Co.,Ltd. All rights reserved. 開拓 実装、展開 運用 テクノロジー ライフサイクル ≪テクノロジーへの考え方≫ 「開拓」「実装・展開」を経た「運用」でリクルートへの利益貢献を行う。
  • 8.
    リクルートテクノロジーズの役割 8 (C)Recruit Technologies Co.,Ltd. All rights reserved. 広範囲のビジネスに装 着し、効果を最大化さ せるための改善を行い、 事業貢献利益を追究 Rグループのビジネスに 短・中期的に実活用の可能 性がある技術をリサーチ 対象技術における事業化 への検証を行い、評価・選 定する 開拓(実活用研究) 実際に事業へ適用 し、より広範囲に 利用するための型 化やスキームを構 築 実装・展開 運用 実施内容 リクルートテクノロジーズ(短・中期的視野) 利益を目的としない中長期的な 視点に立ち、新技術や新手法の 研究/発明を行い、論文発表す ることを目指す 要素基礎技術の研究 社外(中・長期的視野) 技術数の 推移イメージ 年間約200の技術をリサーチし、 約30の技術を評価・選定 年間数個〜10個の 技術を展開 運用フェーズまで 移行された技術が蓄積 無数の新技術を研究/発明
  • 9.
    •サイト横断でのアーキテクト領域を担当し、 サイトに役立つソリューションを展開する グループ •社内フレームワークや性能チューニング等 をソリューション化し運用している。 •運用だけでなく、技術ベースでサイトに貢 献するため、ソリューションの開拓や実 装・展開も担う ASGとATL 9 (C) Recruit Technologies Co.,Ltd. All rights reserved. •新しい技術の開拓や次のトレンドを察知し、 未来のサービスに活かせるソリューション を生み出すグループ •先端技術をベースとしたソリューションを 作り、サイト内でフィジビリティを行う。 どちらもリクルートテクノロジーズ内でアプリケーションの開発を担当する組織
  • 10.
    ASGとATL 10 (C)Recruit Technologies Co.,Ltd. All rights reserved. 技術数の 推移イメージ ATL ASG 開拓(実活用研究) 実装・展開 運用 テーマによっては最初か ら協同する
  • 11.
    リクルートにおけるJavaへの取り組み 11 (C)Recruit Technologies Co.,Ltd. All rights reserved. 多くのサイトでR2FrameworkというJava製の社内フレームワークを使っているた め、リクルートはJava非常にお世話になっています! ✖
  • 12.
  • 13.
    次世代検索基盤とは 13 (C)Recruit Technologies Co.,Ltd. All rights reserved. Query Analyze Search System リクルート内のサイトに対して •検索品質 •フィードバック •検索機能追加 •メトリクス など提供する次世代検索基盤
  • 14.
    アーキテクチャ 14 (C)Recruit Technologies Co.,Ltd. All rights reserved. ✖ 殆どの機能をelasticsearchのプラグインとして実装
  • 15.
    elasticsearchとは 15 (C)Recruit Technologies Co.,Ltd. All rights reserved. オープンソースの全文検索エンジン 【特徴】 •Apache Luceneがベース •リアルタイム性 •スキーマレス •分散環境 •RESTful API •楽観的バージョン制御 最近はKibanaと組み合わせたログモニタリングによく使われている。 elasticsearch自体については18時からの@johtaniの セッションで詳細に話してくれると思います
  • 16.
    体制と役割 16 (C)Recruit Technologies Co.,Ltd. All rights reserved. Qass サイト提供I/F 検索基本機能 機械学習 インフラ Qass利用サイト Hadoop開発 インフラ構築 elasticsearch プラグイン開発 導入支援 タスク 組織 ASG ATL BDG ISG
  • 17.
    提供する機能 17 (C)Recruit Technologies Co.,Ltd. All rights reserved. Qass サイト提供I/F 検索基本機能 機械学習 インフラ •Suggest •Results Blending •Query A/B Test •Custom Tokenizer •Query Boosting •Speller 機能 •User Feed Back •Dictionary
  • 18.
    ユーザーフィードバック 18 (C)Recruit Technologies Co.,Ltd. All rights reserved. ビーコンサーバ Hadoop基盤
  • 19.
    Hadoopによる機械学習の活用 19 (C)Recruit Technologies Co.,Ltd. All rights reserved. 機械学習辞書 ビーコンデータ ・入力中のキーイベントを収集 「牛角」の読みが「ぎゅうかく」で あることを学習! 牛角 翌日「ぎゅうかく」で検索してみると・・・ ※入力途中で「牛角」を入力候補に表示! 検索 ※「牛角」に漢字変換してから検索 特殊な読み仮名は通常手動で辞書登録しないと仮名検索ができない 例)「ぎゅうかく」と入力 検索ログ
  • 20.
  • 21.
    Suggest+Beacon サーバ 各サイト Qassのシステム構成 21 (C) Recruit Technologies Co.,Ltd. All rights reserved. APサーバ Batchサーバ QassPlugin Qass Analizer コンテンツ インデックス シノニム 機械学習辞書 マッピング HDFS 収集データ クエリーログ ビーコンログ コンテンツ データ 運用管理 Batchサーバ Qass Analizer サジェスト インデックス 集計結果 シノニム 機械学習辞書 マッピング サジェスト データ
  • 22.
    Suggest+Beacon サーバ 各サイト 通常の検索 22 (C) Recruit Technologies Co.,Ltd. All rights reserved. APサーバ Batchサーバ QassPlugin Qass Analizer コンテンツ インデックス シノニム 機械学習辞書 マッピング HDFS 収集データ クエリーログ ビーコンログ コンテンツ データ 運用管理 Batchサーバ Qass Analizer サジェスト インデックス ユーザ操作は全て Beaconサーバに送信
  • 23.
    Suggest+Beacon サーバ 各サイト サジェスト 23 (C) Recruit Technologies Co.,Ltd. All rights reserved. APサーバ Batchサーバ QassPlugin Qass Analizer コンテンツ インデックス シノニム 機械学習辞書 マッピング HDFS 収集データ クエリーログ ビーコンログ コンテンツ データ 運用管理 Batchサーバ Qass Analizer サジェスト インデックス
  • 24.
    Suggest+Beacon サーバ 各サイト サジェスト 24 (C) Recruit Technologies Co.,Ltd. All rights reserved. APサーバ Batchサーバ QassPlugin Qass Analizer コンテンツ インデックス シノニム 機械学習辞書 マッピング HDFS 収集データ クエリーログ ビーコンログ コンテンツ データ 運用管理 Batchサーバ Qass Analizer サジェスト インデックス
  • 25.
    Suggest+Beacon サーバ 各サイト 機械学習 25 (C) Recruit Technologies Co.,Ltd. All rights reserved. APサーバ Batchサーバ QassPlugin Qass Analizer コンテンツ インデックス シノニム 機械学習辞書 マッピング HDFS 収集データ 集計結果 シノニム 機械学習辞書 マッピング Map/Reduce サジェスト データ クエリーログ ビーコンログ コンテンツ データ 運用管理 Batchサーバ Qass Analizer サジェスト インデックス
  • 26.
    更新面の管理 26 (C)Recruit Technologies Co.,Ltd. All rights reserved. プラットフォームとして提供しているため、サイトによってインデックス更新の方 針やタイミングが異なるのを実現できるようにする必要がある。 サイトA 日時で差分更新のみ サイトB 日次の差分更新 + 月次で全件更新→翌日反映 サイトC 週次で全件更新→月曜朝8時に反映
  • 27.
    更新面の管理 27 (C)Recruit Technologies Co.,Ltd. All rights reserved. QassPlugin ItemIndex001 SearchIndex(Alias) 検索 更新 UpdateIndex(Alias) インデックスを直接参照するのではなくelasticsearchのAlias機能を活用すること で、検索面と更新面を間接的に参照。 ItemIndex002
  • 28.
    更新面の管理 28 (C)Recruit Technologies Co.,Ltd. All rights reserved. QassPlugin ItemIndex001 SearchIndex(Alias) 検索 更新 UpdateIndex(Alias) 検索面を表に出すタイミングでAliasの切り替えを実施。 インデックス毎に連番でバージョン番号を付けて管理を行う。 ItemIndex002 ItemIndex003 一定期間経過後に削除
  • 29.
    辞書更新への対応 29 (C)Recruit Technologies Co.,Ltd. All rights reserved. シノニム 機械学習辞書 マッピング Qass Analizer 途中から異なる辞書を使うと不整合が発生するため、辞書を反映させるのはインデ ックスを作り直したタイミングにする必要がある。 焼肉→焼き肉 ◯◯焼き肉 △△焼肉 ◯◯焼き肉 △△焼き肉 シノニム 機械学習辞書 マッピング Qass Analizer 焼き肉→焼肉 ◯◯焼き肉 △△焼き肉 辞書を更 新 □□焼き肉 □□焼肉
  • 30.
    辞書更新への対応 30 (C)Recruit Technologies Co.,Ltd. All rights reserved. ItemIndex001 ItemIndex002 ItemIndex003 シノニム 機械学習辞書 マッピング シノニム 機械学習辞書 マッピング シノニム 機械学習辞書 マッピング Dictionary001 Dictionary002 Dictionary003 Qass Analizer QassPlugin SearchIndex(Alias) UpdateIndex(Alias) 検索 更新 Indexバージョンごとに辞書セットを作成。 各インデックスを使う際にどの辞書を使うかをプラグインにて管理。
  • 31.
    Solrからの移行 31 (C)Recruit Technologies Co.,Ltd. All rights reserved. サイト側アプリケーションサーバ 検索 (http) 検索 (http) Solr 検索式 Solr 検索式 現状多くのサイトで全文検索エンジンとしてSolrを利用している。 そのため、プラグイン内でSolrクエリーを解釈することでサイト側は手を入れずに 導入を行えるように対応。 SolrとのA/Bテストにも活用!
  • 32.
  • 33.
    Java8への対応 33 (C)Recruit Technologies Co.,Ltd. All rights reserved. 社内フレームワークのJava8化も行い、各サイトのJava8化に向けて推進していま す! ASGでもATLとも連携し、ライブラリのOSS化も積極的に行っていく予定です!