Slide 1

Slide 1 text

The Search Experience Tomoharu Ito (26th July 2019, AAJUG OKINAWA Meetup)

Slide 2

Slide 2 text

Who am I? Alexa 野郎。(一応AlexaChampion) 日本人です。 AAJUG 運営。(やってみたいかたは気軽にメンションください) 実はどちらかというとスキルよりデバイスのほうが好き

Slide 3

Slide 3 text

この資料で持って帰ってほしいこと - カスタムスキルに 検索機能 をつけるときの考慮事項
 
 - Algolia Voice Search を知る


Slide 4

Slide 4 text

カスタムスキルに検索機能をつけるときの考慮事項 1. Alexaで検索 2. シチュエーショナルデザイン 3. ローカライズ 4. パーソナライズ 5. パフォーマンス

Slide 5

Slide 5 text

Alexa で 検索 { "intents": [ { "name": "SearchIntent", "slots": [ { "name": "Query", "type": "AMAZON.SearchQuery" }, ], "samples": [ "最寄りの{Query}を探して", "{Query}を見つけて", "{Query}を検索して", ] } ] } Amazon.SearchQuery - 適当なフレーズを入れられる - 特定の「キャリアフレーズ」を含める - 検索して - 探して - 見つけて

Slide 6

Slide 6 text

シチュエーショナルデザイン Situational Design Guide - VUI の DesignPrincipal - シチュエーションに合う言葉選び - 記憶の実装 - パーソナライズした会話 - スクリーンデバイスごとに最適化 https://build.amazonalexadev.com/vui-vs-gui-guide- ww.html

Slide 7

Slide 7 text

ローカライズ スコープの定義 - デバイスの位置情報 - Alexa Geolocation - 言語、国 https://developer.amazon.com/ja/docs/custom-skills /location-services-for-alexa-skills.html

Slide 8

Slide 8 text

パーソナライズ Indexing - PersistenceAdapter - IndexをDynamoDBに保存 https://ask-sdk-for-nodejs.readthedocs.io/en/latest/ Managing-Attributes.html#persistenceadapter

Slide 9

Slide 9 text

パフォーマンス CDN活用 Lambdaのリージョンを個別に - Globalに提供するスキル - CDNを置くならHTTPSエンドポイン トを利用 - 利用する検索サービスがリージョナ ルであれば、どうしても遅延が発生 https://ask-sdk-for-nodejs.readthedocs.io/en/latest/ Managing-Attributes.html#persistenceadapter

Slide 10

Slide 10 text

カスタムスキルに検索機能をつけるときの考慮事項 1. Amazon Search Query (検索ワード) 2. シチュエーショナルデザイン(シーンに沿う検索を) 3. ローカライズ(国、言語を意識して) 4. パーソナライズ(ユーザー向けにカスタマイズ)      5. パフォーマンス(検索して帰ってこないのはNG) 検索をどのようにパーソナライズするか?( 自分で作るのは大変そうだ )

Slide 11

Slide 11 text

Algolia Voice Search 1. Algolia とは? 2. Algolia Voice Search とは? 3. DatasetsとIndexing 4. Alexa Skill で Algolia Voice Search を使う 5. Algolia Voice Search のメリットとデメリット

Slide 12

Slide 12 text

Algolia とは? - Globalな検索サービスを提供 - API - Analytics - A/B Testing - GeoLocation Search - etc. - 16の自社リージョンを持ち高速な検索 を実現 - 外部サービスと簡単に連携

Slide 13

Slide 13 text

Voice Summitでも話題のやつ https://www.bloomberg.com/press-releases/2019-07-11/algolia-to-showcase-importance-of-voice-search-at-voice-summit-2019

Slide 14

Slide 14 text

Algolia Voice Search って? - 声による検索クエリを柔軟にカスタマ イズ - 検索結果はAlgoliaでIndexing - Algolia側でパーソナライズを柔軟に 設定

Slide 15

Slide 15 text

Datasets & Indexes Datasets - 検索のもとになるソース - 検索のベースになる Datasetsを選択 - キーとデータの集合体 https://github.com/algolia/datasets https://aws.amazon.com/datasets/ Index - 指定したキーで作られる索引 [ { "name": "Hartsfield Jackson Atlanta Intl", "city": "Atlanta", "country": "United States", "iata_code": "ATL", "_geoloc": { "lat": 33.636719, "lng": -84.428067 }, "links_count": 1826,

Slide 16

Slide 16 text

Alexa Skill で Algolia Voice Searchを使う(1) Algolia の設定 - Datasets - Index - 検索クエリ

Slide 17

Slide 17 text

Alexa Skill で Algolia Voice Searchを使う(1-1) Datasets の インポート Dashboard => Indicies => add records

Slide 18

Slide 18 text

Alexa Skill で Algolia Voice Searchを使う(1-2) Index を設定 Dashboard => Indicies => configuration

Slide 19

Slide 19 text

Alexa Skill で Algolia Voice Searchを使う(1-3) 検索クエリをカスタマイズ Dashboard => Indicies => Query Rules ※ 右画像は、 キー: {coloer}が含まれるデータを抽出する設定

Slide 20

Slide 20 text

Alexa Skill に組み込み const algolia = algoliasearch(APP_ID, SECRET) const index = algolia.initIndex(‘index-name’) const searchIntentHandler = { : async handle(handlerInput) { const query = handlerInput.requestEnvelope.request.intent.slots.query.value const response = await index.search( query, removeStepWords: true, ignorePlurals: true, optionalWords: query) } const hits = response.hits; const item = hits[0] : const speacText = `This is response ${item}` return handlerInput.responseBuilder.speak(speachText).getResponse()` }

Slide 21

Slide 21 text

Algolia を使うメリットとデメリット メリット - 検索結果をパーソナライズ - SearchQueryの歪みを吸収 デメリット - Query Rulesは有料プランのみ (Startarは月額29ユーロから)

Slide 22

Slide 22 text

補足)話していないこと Algoliaでは、検索頻度のランキングによっても、検索結果を最適化することが可能です。 興味のあるかたは調べてみてください。

Slide 23

Slide 23 text

ありがとうございました enjoy alexa!, enjoy VUI!