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
200
新サービス・JOURNAL(ジャーナル)開発秘話
pipopotamasu
November 26, 2018
Tweet
Share
More Decks by pipopotamasu
See All by pipopotamasu
How JS Works
pipopotamasu
0
160
vue-function-tester
pipopotamasu
2
1.1k
Dive into vue-test-utils ~~Road of 1.0.0~~
pipopotamasu
0
87
medpacker_introduction_20190523
pipopotamasu
0
470
Introduction of medpacker: RoR Frontend Boilerplate
pipopotamasu
0
4.6k
メドピアにおけるライブラリアップデート_MedBeer_20180912.pdf
pipopotamasu
0
12k
MedPeer_JapaxTaxi_MeetUp_Actioncable
pipopotamasu
0
450
MedPeer X みんなのウェディング合同勉強会
pipopotamasu
0
1k
UXBridge_vol3_pipopotamasu
pipopotamasu
2
850
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
65
4.4k
Become a Pro
speakerdeck
PRO
25
5k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Making Projects Easy
brettharned
115
5.9k
Building Applications with DynamoDB
mza
90
6.1k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
191
16k
Designing for Performance
lara
604
68k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Statistics for Hackers
jakevdp
796
220k
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.
ऴΘΓʹ
ੈͷதɺΧωͰղܾͰ͖Δ
͕ͩ…
͕ۚͳ͍͔Βͦ͜ɺ ͷ༨͕ੜ·ΕΔ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠