SlackͷશจݕࡧαʔϏεΛ࡞ͬͨ
View Slide
Slackͷ՝• ϑϦʔϓϥϯͷSlackʹ৭ʑ੍ݶ͕͋Δ• App(bot) 10ݸ·Ͱ• ετϨʔδ༰ྔͷ੍ݶ• ۙ1ສ݅ΑΓݹ͍ϝοηʔδࢀরෆՄೳ• ͜ΕΒͷ੍ݶେֶͷ෦׆Ͱʹͳ͍ͬͯͨ• ༗ྉϓϥϯΞΫςΟϒϢʔβ1ਓʹ͖ͭຖ݄1000ԁ• ֶੜϓϥϯΛద༻ׂͯ͠ߴ• SlackͷϩάΛશจݕࡧ͢ΔαʔϏε• SlackͷϩάadminͳΒzipͰμϯϩʔυՄೳ
γεςϜͷ֓ཁશจݕࡧόοΫΤϯυϢʔβͷtokenཧϑϩϯτΤϯυOAuthೝূ
ϑϩϯτΤϯυ• nuxt.js• φΫετ ͱಡΉ• vue.jsΛ༻͍ͨwebΞϓϦΛ։ൃ͢ΔͨΊͷϑϨʔϜϫʔΫ• ΠέΠέ• vue.js• ԾDOMΛ༻͍ͨߴͳHTMLੜ• ίϯϙʔωϯτࢦ• element-ui• vue.jsͷίϯϙʔωϯτϥΠϒϥϦ
όοΫΤϯυ• Flask• PythonͷwebϑϨʔϜϫʔΫ• DjangoΑΓѻ͍͍͢ϑϨʔϜϫʔΫ• ࣮ࡍ؆୯
ϛυϧΣΞ• ElasticSearch• JavaͷશจݕࡧΤϯδϯ• ܗଶૉղੳ kuromoji• ࣙॻ neologd• ώʔϓαΠζ 512MB• ະࢦఆͰىಈͨ͠ΒMac͕ϑϦʔζ͔͚ͨ͠…• PostgreSQL• ϊϦͰબΜͩ• Python͔ΒSQLalchemyͱ͍ϥΠϒϥϦͰୟ͍ͨ
Πϯϑϥ• Docker• ίϯςφܕԾԽ• docker-compose• ෳͷίϯςφΛ·ͱΊͯѻ͑Δͭ• docker-compose up Λ࣮ߦ͢ΕαʔϏε͕ಈ͘
γεςϜͷ֓ཁ ϢʔβೝূOAuthϦΫΤετίʔϧόοΫtokenൃߦ(Json Web Token)
γεςϜͷ֓ཁ ݕࡧtoken+ݕࡧϫʔυݕࡧΫΤϦલͬͯzip͔ΒσʔλΛΠϯϙʔτࡁΈϢʔβͷ֬ೝ
σϞ
ࠓޙͷ՝• ແݶϦϩʔυͷ࣮• element-uiʹόά͕͋Γ࣮ͷݟ௨͠ͳ͠• ElasticSearchͷνϡʔχϯά• ݱঢ়ετοϓϫʔυʹϚον͢Δ• ෦һޠΛkuromojiͷࣙॻʹొ• Sudachi͕͍͍ͱฉ͘ͷͰࢼ͍ͨ͠• ը૾ͷදࣔ• ϝοηʔδதʹը૾URL͕͋ΕͦΕΛදࣔ• ֆจࣈͷදࣔ• Slack RTM API͔ΒݕࡧIndexߏங• όοΫΤϯυΛrailsͰॻ͖͍ͨ