Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
新サービス・JOURNAL(ジャーナル)開発秘話
Search
pipopotamasu
November 26, 2018
2
210
新サービス・JOURNAL(ジャーナル)開発秘話
pipopotamasu
November 26, 2018
Tweet
Share
More Decks by pipopotamasu
See All by pipopotamasu
How JS Works
pipopotamasu
0
170
vue-function-tester
pipopotamasu
2
1.1k
Dive into vue-test-utils ~~Road of 1.0.0~~
pipopotamasu
0
88
medpacker_introduction_20190523
pipopotamasu
0
480
Introduction of medpacker: RoR Frontend Boilerplate
pipopotamasu
0
4.7k
メドピアにおけるライブラリアップデート_MedBeer_20180912.pdf
pipopotamasu
0
12k
MedPeer_JapaxTaxi_MeetUp_Actioncable
pipopotamasu
0
490
MedPeer X みんなのウェディング合同勉強会
pipopotamasu
0
1k
UXBridge_vol3_pipopotamasu
pipopotamasu
2
860
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
11
920
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Music & Morning Musume
bryan
46
6.3k
Producing Creativity
orderedlist
PRO
343
39k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Building an army of robots
kneath
302
45k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Adopting Sorbet at Scale
ufuk
74
9.2k
Transcript
৽αʔϏεɾJOURNAL(δϟʔφϧ) ։ൃൿ ϝυϐΞגࣜձࣾ ϑϩϯτΤϯυΤϯδχΞ ଜ্ େ(@pipopotamasu3) MedBeer 2018/11/21
self_introduce.json { “name”: “ଜ্େ”, “age”: 26, “github”: “pipopotamasu”, “company”: “ϝυϐΞגࣜձࣾ”,
“tech”: [“Ruby”, “PHP”, “Vue.js”, “React”], “hobby”: [“ٿ”], }
https://jp.vuejs.org/v2/cookbook/ creating-custom-scroll-directives.html
Agenda 1. JOURNAL is Կ? 2. JOURNALͷγεςϜߏ 3. ্࣮ͷ՝ͱղܾͷͨΊͷΞϓϩʔν 4.
ऴΘΓʹ
Agenda 1. JOURNAL is Կ? 2. JOURNALͷγεςϜߏ 3. ্࣮ͷ՝ͱղܾͷͨΊͷΞϓϩʔν 4.
ऴΘΓʹ
None
ҩֶจͷ༁ɺڞ༗αʔϏε
՝ ඞཁͳใબఆͷࠔ͞ ɾҩྍใେͰʑߋ৽͞Εͯ ͍ΔɻҩࢣʹͱͬͯඞཁͳใΛબ ఆ͢ΔʹςΫχοΫͱ͕࣌ؒඞ ཁɻ ӳޠจ͕ಡΈͮΒ͍ ɾҩֶจӳޠ͔ͭʮจޠʯͰ ॻ͔Ε͍ͯΔͨΊɺจΛಡΈཧղ ͢Δͷʹ͕͔͔࣌ؒΔ
จΛಡΉश׳͚ͮͷ͠͞ ɾ্هͷ՝ͰɺӳޠจΛಡΉͷ ʹଟେͳ࿑ྗ͕͔͔Γश׳Խ͕͠ ͍ɻ
՝ ղܾͷͨΊͷΞϓϩʔν ඞཁͳใબఆͷࠔ͞ ɾҩྍใେͰʑߋ৽͞Εͯ ͍ΔɻҩࢣʹͱͬͯඞཁͳใΛબ ఆ͢ΔʹςΫχοΫͱ͕࣌ؒඞ ཁɻ ඞཁͳใͷϨίϝϯυ ɾҩࢣຊਓͷઐྖҬؔ৺ྖҬͰ ݕࡧɾϑΟϧλϦϯάɺจࣗମͷ
ධՁใͷͰॏΈ͚ͮɻ ӳޠจ͕ಡΈͮΒ͍ ɾҩֶจӳޠ͔ͭʮจޠʯͰ ඳ͔Ε͍ͯΔͨΊɺจΛಡΈཧղ ͢Δͷʹ͕͔͔࣌ؒΔ ӳޠจΛಡΈ͘͢ ɾҩֶจΛຊޠ༁ͯ͠ఏڙ͢ Δ͜ͱͰɺཧղ͢Δ࣌ؒΛॖɻ จΛಡΉश׳͚ͮͷ͠͞ ɾ্هͷ՝ͰɺӳޠจΛಡΉͷ ʹଟେͳ࿑ྗ͕͔͔Γश׳Խ͕͠ ͍ɻ จΛಡΉश׳͚ͮͷαϙʔτ ɾ্هͷ՝ͷղܾٴͼɺؔ৺ͷ͋ Δʹඥ͍ͨใͷ164)Ͱश ׳Խͷखॿ͚ɻ
None
Agenda 1. JOURNAL is Կ? 2. JOURNALͷγεςϜߏ 3. ্࣮ͷ՝ͱղܾͷͨΊͷΞϓϩʔν 4.
ऴΘΓʹ
None
ɾ1700ສ݅ͷӳޠจ σʔλΛϩʔϯνલʹऔಘ ɾϩʔϯνޙ࣌ͰՃɺ ߋ৽͞ΕΔσʔλΛऔಘ
Translate Service Providers ɾ1700ສ݅ͷӳޠจ σʔλͷҰ෦Λຊޠ༁ ɾϩʔϯνޙ࣌ or ΦϯσϚϯυͰ༁
Translate Service Providers Elasticsearch ɾจσʔλΛ Elasticsearchʹಉظ
Translate Service Providers Elasticsearch ɾҩࢣͷଐੑจͷධՁɺ ʹ߹Θͤͯจσʔλ Λදࣔ ɾຊޠͰจσʔλΛݕࡧ (ͪΖΜӳޠͰ)
Agenda 1. JOURNAL is Կ? 2. JOURNALͷγεςϜߏ 3. ্࣮ͷ՝ͱղܾͷͨΊͷΞϓϩʔν 4.
ऴΘΓʹ
্࣮ͷ՝ͱղܾͷͨΊͷ Ξϓϩʔν 1. ༁ 2. ຊޠݕࡧ 3. ίϝϯτ
্࣮ͷ՝ͱղܾͷͨΊͷ Ξϓϩʔν 1. ༁ 2. ຊޠݕࡧ 3. ίϝϯτ
Translate Service Providers ɾ1700ສ݅ͷӳޠจ σʔλͷҰ෦Λຊޠ༁ ɾϩʔϯνޙ࣌ or ΦϯσϚϯυͰ༁
શ෦͢ΕΑ͘Ͷ?
[ӳޠจ] 1700ສ݅ [ฏۉจࣈ] 1300จࣈ(λΠτϧ100จࣈ, ུ֓1200จࣈ) [߹ܭจࣈ] 221ԯจࣈ(1700ສ * 1300)
[༁ۚ] 100ສจࣈ͋ͨΓ20υϧ [߹ܭֹۚ] (221ԯจࣈ/100ສจࣈ) * 20 = ?
5000ສԁ
None
None
5000ສԁ / 8200ສԁ = 61%
ʘ(^o^)ʗ
͕ۚͳ͍ orz
Translate Service Providers ɾ1700ສ݅ͷӳޠจ σʔλͷҰ෦Λຊޠ༁ ɾϩʔϯνޙ࣌ or ΦϯσϚϯυͰ༁
ΦϯσϚϯυ༁ͷ࣮ԋ
ݟΒΕΔ͚ͩ༁͠ɺ͓ۚΛઅ
5000ສԁ ↓ 400 + α ສԁ
ݟΒΕΔ͚ͩ༁͠ɺ͓ۚΛઅ ↓ Ϣʔβͷ༁͕ͪ࣌ؒൃੜ
ʹ Translate Service Providers ༁ϑϩʔ
ʹ Translate Service Providers ᶃ HTML, CSS, JS, ը૾ͷ Ξηοτऔಘ
ʹ Translate Service Providers ᶄ Active JobͰඇಉظʹ༁
ʹ Translate Service Providers ᶅ ༁݁ՌऔಘͷͨΊ ϙʔϦϯά
ʹ Translate Service Providers ᶆ ༁ྃ
ʹ Translate Service Providers ᶇ ༁݁ՌΛϢʔβʹදࣔ
ʹ Translate Service Providers ͪ࣌ؒ
Ͳ͏ͪ࣌ؒΛݮΒ͔͢
ʹ Translate Service Providers վળͰ͖ͳ͍ͪ࣌ؒ
ʹ Translate Service Providers վળͰ͖Δͪ࣌ؒ
ϙʔϦϯά • ༁ྃࡁΈ͔Ͳ͏͔Λఆظతʹ͍߹ΘͤΔ
ϙʔϦϯά • ༁ྃࡁΈ͔Ͳ͏͔Λఆظతʹ͍߹ΘͤΔ • ༁ྃͱϙʔϦϯάͷఆظ͍߹ΘͤͰ࣌ ͕ۭؒ͘Մೳੑ͕͋Δ
ϙʔϦϯά • ༁ྃࡁΈ͔Ͳ͏͔Λఆظతʹ͍߹ΘͤΔ • ༁ྃͱϙʔϦϯάͷఆظ͍߹ΘͤͰ࣌ ͕ۭؒ͘Մೳੑ͕͋Δ • ͍߹ΘִͤؒΛ٧Ί͗͢ΔͱɺηϧϑDoS߈ ܸʹͳΔ
Ͳ͏͢Ε༁ྃͱϢʔβը໘ͷදࣔ ͷΦʔόʔϔουΛݮͰ͖Δ͔?
WebSocket
WebSocket • αʔόͱΫϥΠΞϯτͷํ௨৴Λ࣮ݱ͢Δ ͨΊͷن
WebSocket • αʔόͱΫϥΠΞϯτͷํ௨৴Λ࣮ݱ͢Δ ͨΊͷن • ϦΞϧλΠϜੑͷߴ͍ΞϓϦέʔγϣϯ (νϟοτΞϓϦ)ͰΑ͘༻͞ΕΔ
WebSocket • αʔόͱΫϥΠΞϯτͷํ௨৴Λ࣮ݱ͢Δ ͨΊͷن • ϦΞϧλΠϜੑͷߴ͍ΞϓϦέʔγϣϯ (νϟοτΞϓϦ)ͰΑ͘༻͞ΕΔ • ࠓճͷ՝ʹԠ༻Ͱ͖ΔͷͰ?
ʹ Translate Service Providers ᶃ HTML, CSS, JS, ը૾ͷ Ξηοτऔಘ
ʹ Translate Service Providers ᶄ Active JobͰඇಉظʹ༁
ʹ Translate Service Providers ᶅ ༁݁ՌऔಘͷͨΊ ϙʔϦϯά
ʹ Translate Service Providers ᶅ ༁݁ՌऔಘͷͨΊ ϙʔϦϯά
ʹ Translate Service Providers ᶅ WebSocketίωΫγϣϯཱ֬ 8FC4PDLFU$POOFDUJPO
ʹ Translate Service Providers 8FC4PDLFU$POOFDUJPO ᶆ ༁ྃ
ʹ Translate Service Providers 8FC4PDLFU$POOFDUJPO ᶇ ༁݁ՌΛϢʔβʹදࣔ
ʹ Translate Service Providers վળͰ͖Δͪ࣌ؒ
ϙʔϦϯάͷ࣌ؒॖ
্࣮ͷ՝ͱղܾͷͨΊͷ Ξϓϩʔν 1. ༁ • ΦϯσϚϯυ༁ • WebSocketʹΑΔ࣌ؒॖ 2. ຊޠݕࡧ
3. ίϝϯτ
্࣮ͷ՝ͱղܾͷͨΊͷ Ξϓϩʔν 1. ༁ 2. ຊޠݕࡧ 3. ίϝϯτ
Translate Service Providers ɾ1700ສ݅ͷӳޠจ σʔλͷҰ෦Λຊޠ༁ ɾϩʔϯνޙ࣌ or ΦϯσϚϯυͰ༁ ଟ͘ͷ෦͕ະ༁ ˠӳޠ
՝ ղܾͷͨΊͷΞϓϩʔν ඞཁͳใબఆͷࠔ͞ ɾҩྍใେͰʑߋ৽͞Εͯ ͍ΔɻҩࢣʹͱͬͯඞཁͳใΛબ ఆ͢ΔʹςΫχοΫͱ͕࣌ؒඞ ཁɻ ඞཁͳใͷϨίϝϯυ ɾҩࢣຊਓͷઐྖҬؔ৺ྖҬͰ ݕࡧɾϑΟϧλϦϯάɺจࣗମͷ
ධՁใͷͰॏΈ͚ͮɻ ӳޠจ͕ಡΈͮΒ͍ ɾҩֶจӳޠ͔ͭʮจޠʯͰ ඳ͔Ε͍ͯΔͨΊɺจΛಡΈཧղ ͢Δͷʹ͕͔͔࣌ؒΔ ӳޠจΛಡΈ͘͢ ɾҩֶจΛຊޠ༁ͯ͠ఏڙ͢ Δ͜ͱͰɺཧղ͢Δ࣌ؒΛॖɻ จΛಡΉश׳͚ͮͷ͠͞ ɾ্هͷ՝ͰɺӳޠจΛಡΉͷ ʹଟେͳ࿑ྗ͕͔͔Γश׳Խ͕͠ ͍ɻ จΛಡΉश׳͚ͮͷαϙʔτ ɾ্هͷ՝ͷղܾٴͼɺؔ৺ͷ͋ Δʹඥ͍ͨใͷ164)Ͱश ׳Խͷखॿ͚ɻ
՝ ղܾͷͨΊͷΞϓϩʔν ඞཁͳใબఆͷࠔ͞ ɾҩྍใେͰʑߋ৽͞Εͯ ͍ΔɻҩࢣʹͱͬͯඞཁͳใΛબ ఆ͢ΔʹςΫχοΫͱ͕࣌ؒඞ ཁɻ ඞཁͳใͷϨίϝϯυ ɾҩࢣຊਓͷઐྖҬؔ৺ྖҬͰ ݕࡧɾϑΟϧλϦϯάɺจࣗମͷ
ධՁใͷͰॏΈ͚ͮɻ ӳޠจ͕ಡΈͮΒ͍ ɾҩֶจӳޠ͔ͭʮจޠʯͰ ඳ͔Ε͍ͯΔͨΊɺจΛಡΈཧղ ͢Δͷʹ͕͔͔࣌ؒΔ ӳޠจΛಡΈ͘͢ ɾҩֶจΛຊޠ༁ͯ͠ఏڙ͢ Δ͜ͱͰɺཧղ͢Δ࣌ؒΛॖɻ จΛಡΉश׳͚ͮͷ͠͞ ɾ্هͷ՝ͰɺӳޠจΛಡΉͷ ʹଟେͳ࿑ྗ͕͔͔Γश׳Խ͕͠ ͍ɻ จΛಡΉश׳͚ͮͷαϙʔτ ɾ্هͷ՝ͷղܾٴͼɺؔ৺ͷ͋ Δʹඥ͍ͨใͷ164)Ͱश ׳Խͷखॿ͚ɻ
None
ະ༁ͷ෦͕ຊޠͷݕࡧʹ Ҿ͔͔ͬΒͳ͍
Ͳ͏ະ༁ͷ෦Λ ຊޠݕࡧͰ͖ΔΑ͏ʹ͢Δ͔
Elasticsearch Synonym Token Filter https://www.elastic.co/guide/en/elasticsearch/reference/ current/analysis-synonym-tokenfilter.html
Synonym Token Filter ಉҙޠྨٛޠΛઃఆͰ͖Δػೳ Ex) i-pod, i pod => ipod
ͱ͍͏ఆٛͰ͋Ε(expand: trueͷ߹) ʮi-podʯͰݕࡧ → ʮi podʯʮipodʯʹώοτ ʮi podʯͰݕࡧ → ʮi-podʯʮipodʯʹώοτ
Synonym Token Filter ಉҙޠྨٛޠΛઃఆͰ͖Δػೳ ͜ΕΛ͍ɺຊޠ/ӳޠΛؔ࿈͚Δ ߴ݂ѹ => hypertension ΠϯϑϧΤϯβ =>
influenza
Synonym Token Filter ಉҙޠྨٛޠΛઃఆͰ͖Δػೳ
େͳͷSynonymΛࣗલͰ ఆٛ͢Δͷࠔ(ಛʹҩֶ༻ޠ)
༁ձ༷ࣾΑΓҩྍʹಛԽͨࣙ͠ॻΛߪೖ
༁ձ༷ࣾΑΓҩྍʹಛԽͨࣙ͠ॻΛߪೖ ↓ ܗͯ͠ɺElasticsearchͰಡΈࠐΊΔΑ͏ ʹରԠ
None
্࣮ͷ՝ͱղܾͷͨΊͷ Ξϓϩʔν 1. ༁ • ΦϯσϚϯυ༁ • WebSocketʹΑΔ࣌ؒॖ 2. ຊޠݕࡧ
• Synonym token filterʹΑΔˠӳݕࡧ 3. ίϝϯτ
্࣮ͷ՝ͱղܾͷͨΊͷ Ξϓϩʔν 1. ༁ 2. ຊޠݕࡧ 3. ίϝϯτ
None
None
None
্࣮ͷ՝ͱղܾͷͨΊͷ Ξϓϩʔν 1. ༁ 2. ຊޠݕࡧ 3. ίϝϯτ • JQuery
→ Vue.js, Vuex
͕࣌ؒͳ͍ͷͰলུ
Agenda 1. JOURNAL is Կ? 2. JOURNALͷγεςϜߏ 3. ্࣮ͷ՝ͱղܾͷͨΊͷΞϓϩʔν 4.
ऴΘΓʹ
ੈͷதɺΧωͰղܾͰ͖Δ
͕ͩ…
͕ۚͳ͍͔Βͦ͜ɺ ͷ༨͕ੜ·ΕΔ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠