検索サービス開発が絶対におもしろいと思う理由【2018 改訂版】

##はじめに

[Supership Advent Calendar 2018](https://qiita.com/advent-calendar/2018/supership) の７ 日目の記事です。

データソリューションスタジオという開発組織の長をしております。
本日12/7 は私の誕生日です、**祝ってください！**

[昨年builderscon tokyo 2017 にて同テーマを題材に登壇したのですが](https://www.wantedly.com/companies/Supership/post_articles/72641)
現在[新サービス](https://supership.jp/news/2018/11/28/3005/)を発表したり
時間の経過と共に面白いと感じる部分にアップデートがかかりましたので
【2018 改訂版】としてこの場を借りて発表する事にしました。

##概要
###スマートフォンの登場によるパラダイムシフト
私は10 年以上ポータルサービスにおけるウェブ検索に携わっているのですが
スマホシフトによってこれまで蓄積した検索クエリデータを元に
以下のような状態遷移を知る事ができました。
<img width="789" alt="spshift.png" src="https://qiita-image-store.s3.amazonaws.com/0/49130/5eee0559-1e9f-298e-11c7-765a11afa91a.png">
スマホを普段何気なく利用されている方も無意識的に*ひらがな*でググったりしませんか？
そしてその後とあるサイト内で同じように*ひらがな*で検索して``検索結果が0 件``になってしまい違和感を感じた事はないでしょうか？
この記事を読まれている層の方々は
*きっと[表記ゆれ](https://ja.wikipedia.org/wiki/%E8%A1%A8%E8%A8%98%E3%82%86%E3%82%8C#%E6%97%A5%E6%9C%AC%E8%AA%9E)の対応がされていないんだろうな〜*
と想定すると思いますが
一般の利用者にとってはただただ検索体験を損ね、**検索する**という行為を諦めてしまい
情報と出会える機会を損失してしまいます。
そういった状況においてこの課題を解決するため
検索機能の開発者がまず最初に行う事は*Normalize* や *Tokenize* の処理を
*Analyzer* を通して適切に処理する事が思い浮かぶでしょう。
いわゆる自然言語処理の系です。
マッチングアルゴリズムの構築は検索機能を開発するに辺り
最も重要な要素の１つですが今回はスコープ外とし
またQiita やはてなブログに数多くマッチングアルゴリズムについて投稿されておりますので割愛します。
[こちらの方の記事](https://qiita.com/Hironsan/items/2466fe0f344115aff177)がとても分かり易くかつ詳細に書かれていらっしゃいますので興味のある方は是非参照してください。

###我々が考える検索サービス開発を成す構成要素とは
自然言語処理のみならず以下に記した９つの要素で構成され
それぞれの積み上げから検索機能を実装しています。
<img width="671" alt="param.png" src="https://qiita-image-store.s3.amazonaws.com/0/49130/d671eba0-b1c6-010f-861d-e529394652d9.png">
[高速文字列解析における過去の取り組みはこちら](https://qiita.com/ShingoOKAWA/items/3e2e195a923e08a47388)

###そもそもインターネット上で展開する検索サービスとは何か？
1. 星の数ほどある情報の中から
2. 正規化した利用者の入力データを元に
3. 適合した情報を複数抽出し
3. **恣意的に操作した並び順で**
4. 利用者に最適化した検索結果を出力する

という所謂レコメンデーションロジックの集合体である、と考えています。
Apple Inc. CEO Tim Cook に [“I think their search engine is the best.” ](https://9to5mac.com/2018/11/18/tim-cook-hbo-interview/)と言わしめるGoogle の凄さは[W3C](https://ja.wikipedia.org/wiki/World_Wide_Web_Consortium) のような標準化団体でもない
一営利企業でありながら恣意的に操作した並び順で検索結果を表示しているにも関わらず
全世界に存在する膨大な利用者はその検索結果に対し何の疑いも持たず
それこそWeb における標準のように扱われ
利用者の心理に多大なる影響を及ぼし続けている所にあるのではないでしょうか。

###絶対に面白いと思う理由
前置きが大変長くなりましたが個人的に検索サービス開発で面白いと思う点は
ここまでの話の流れから
検索結果を恣意的ではあるが利用者に違和感を感じさせないような並び順を
実現するためのランキングアルゴリズムの設計にあります。
####ランキングアルゴリズムの設計
ニュースサイトにおける記事検索を例に
検索結果の並び順についての考え方を述べます。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/49130/ff82657a-922a-7fff-5eb8-4eec36320dce.png)
ググってみるとニュースとは

- *新しい*
- *珍しい*

という二つの素性によって構成された情報を知らせる事のようです。
検索対象とするニュース記事群に行う機械的なスコア計算は下記のように表現できます。

`ランキングスコア = 基礎（マッチング）スコア + 記事の鮮度 + 注目度`

- 記事の鮮度

[指数関数的減退](https://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E9%96%A2%E6%95%B0%E7%9A%84%E6%B8%9B%E8%A1%B0)モデルで表現可能です。
ある事件がニュース記事となり、時間の経過に比例して記事の新鮮さは失われていきますよね。
2018 FIFAワールドカップ ロシア大会で3位になった代表チームを覚えていますか？

- 注目度

`記事のPV` や　`SNS でのシェア数、コメント数` などが指標として活用できそうです。

上記の指標をElasticsearch であれば[Decay functions](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-decay), [Script score function](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-script-score)を利用する事でコストをかけずに実装ができます。
その他記事タイトルによるスコアの[重みづけ](https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html#function-field-value-factor)などでスコアリングを[DCG](https://qiita.com/nnahito/items/af4a677bee4e3f5d66d4) などの評価を微調整と改善を行う事になるでしょう。
<img width="335" alt="decay.png" src="https://qiita-image-store.s3.amazonaws.com/0/49130/2fce1206-98e3-bdee-0140-ece2bc5fd07c.png">
このような状態遷移を想像してもらえると理解が深まると思います。

いかがでしょうか、ニュースの記事検索を例にランキングアルゴリズムの設計についての考え方と
抽象的に素性を捉える事で比較的容易に実装が可能となる環境をOSS プロジェクトによって
我々は獲得しているのです。（OSS プロジェクトには本当に感謝）

####第5世代移動通信システム（5G）における検索サービス
[第5世代移動通信システムに関する公開ヒアリング](http://www.soumu.go.jp/menu_news/s-news/02kiban14_04000617.html)にて各通信キャリアの取り纏め資料が公開されています。
5G 時代がもうすぐ到来するに辺り弊社は[KDDI グループ企業](http://www.kddi.com/corporate/group/#CAT4)として
*来るべき時に求められる次世代の検索サービスとは何か？*
と言う事を常に考えながら新たな価値提供を創出できるよう
実証実験に取りかかる事を考えるととてもワクワクしますね。

##まとめ

以上私が面白いと感じる検索サービス開発の要素についてお伝えしましたが
その他にもサービス成立のためやるべき事が山ほど存在し、
その要素１つ１つがとても奥深いものばかりです。
また**検索**という機能はアプリケーションであり、サービスであり、ソリューションであり、メディアでもありビジネスに直結する稀有な存在です。

- *世の中に存在する検索機能を便利にしたい*
- *その想いと共に取り組む事で自他共に様々な種類の利益を享受できるようになりたい*
- *興味がある*

という方がおられましたら是非弊社採用情報をご一読ください。

[Supershipでは一緒に働く仲間を募集しています](https://supership.jp/recruit/)

##おまけ
Supership では**アニバーサリー休暇**という社員又はその家族の記念日を届け出ると
特別有給休暇一日の付与とお祝い金を年に一度支給してくれる
社員にとってはとても嬉しい制度が存在します！

今日はその制度を利用しお休みしているので
本記事は自動投稿によってお届けしています:-)