Slackの全文検索 サービスを作った話 / slack-search

00766b8e1f9c2665cf7fd29f9cf558df?s=47 odanado
February 24, 2018

Slackの全文検索 サービスを作った話 / slack-search

00766b8e1f9c2665cf7fd29f9cf558df?s=128

odanado

February 24, 2018
Tweet

Transcript

  1. Slackͷશจݕࡧ αʔϏεΛ࡞ͬͨ࿩

  2. Slackͷ՝୊ • ϑϦʔϓϥϯͷSlackʹ͸৭ʑ੍ݶ͕͋Δ • App(bot) ͸10ݸ·Ͱ • ετϨʔδ༰ྔͷ੍ݶ • ௚ۙ1ສ݅ΑΓݹ͍ϝοηʔδ͸ࢀরෆՄೳ

    • ͜ΕΒͷ੍ݶ͸େֶͷ෦׆Ͱ໰୊ʹͳ͍ͬͯͨ • ༗ྉϓϥϯ͸ΞΫςΟϒϢʔβ1ਓʹ͖ͭຖ݄ 1000ԁ • ֶੜϓϥϯΛద༻ͯ͠΋ׂߴ • SlackͷϩάΛશจݕࡧ͢ΔαʔϏε • Slackͷϩά͸adminͳΒzipͰμ΢ϯϩʔυՄೳ
  3. γεςϜͷ֓ཁ શจݕࡧ όοΫΤϯυ Ϣʔβͷtoken؅ཧ ϑϩϯτΤϯυ OAuthೝূ

  4. ϑϩϯτΤϯυ • nuxt.js • φΫετ ͱಡΉ • vue.jsΛ༻͍ͨwebΞϓϦΛ ։ൃ͢ΔͨΊͷϑϨʔϜϫʔΫ •

    ΠέΠέ • vue.js • Ծ૝DOMΛ༻͍ͨߴ଎ͳHTMLੜ੒ • ίϯϙʔωϯτࢦ޲ • element-ui • vue.js੡ͷίϯϙʔωϯτϥΠϒϥϦ
  5. όοΫΤϯυ • Flask • Python੡ͷwebϑϨʔϜϫʔΫ • DjangoΑΓѻ͍΍͍͢ϑϨʔϜϫʔΫ • ࣮ࡍ؆୯

  6. ϛυϧ΢ΣΞ • ElasticSearch • Java੡ͷશจݕࡧΤϯδϯ • ܗଶૉղੳ kuromoji • ࣙॻ

    neologd • ώʔϓαΠζ 512MB • ະࢦఆͰىಈͨ͠ΒMac͕ϑϦʔζ͔͚ͨ͠… • PostgreSQL • ϊϦͰબΜͩ • Python͔ΒSQLalchemyͱ͍ϥΠϒϥϦͰୟ͍ͨ
  7. Πϯϑϥ • Docker • ίϯςφܕԾ૝Խ • docker-compose • ෳ਺ͷίϯςφΛ·ͱΊͯѻ͑Δ΍ͭ •

    docker-compose up Λ࣮ߦ͢Ε͹ αʔϏε͕ಈ͘
  8. γεςϜͷ֓ཁ Ϣʔβೝূ OAuthϦΫΤετ ίʔϧόοΫ tokenൃߦ (Json Web Token)

  9. γεςϜͷ֓ཁ ݕࡧ token+ݕࡧϫʔυ ݕࡧΫΤϦ લ΋ͬͯzip͔Β σʔλΛ ΠϯϙʔτࡁΈ Ϣʔβͷ֬ೝ

  10. σϞ

  11. ࠓޙͷ՝୊ • ແݶϦϩʔυͷ࣮૷ • element-uiʹόά͕͋Γ࣮૷ͷݟ௨͠ͳ͠ • ElasticSearchͷνϡʔχϯά • ݱঢ়ετοϓϫʔυʹ΋Ϛον͢Δ •

    ෦һޠ࿥Λkuromojiͷࣙॻʹొ࿥ • Sudachi͕͍͍ͱฉ͘ͷͰࢼ͍ͨ͠ • ը૾ͷදࣔ • ϝοηʔδதʹը૾URL͕͋Ε͹ͦΕΛදࣔ • ֆจࣈͷදࣔ • Slack RTM API͔ΒݕࡧIndexߏங • όοΫΤϯυΛrailsͰॻ͖͍ͨ