Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
GISとして活用するElasticsearch
Takashi Funato
November 18, 2014
Technology
6
7.3k
GISとして活用するElasticsearch
Takashi Funato
November 18, 2014
Tweet
Share
More Decks by Takashi Funato
See All by Takashi Funato
tfunato
0
47
tfunato
0
150
tfunato
1
110
Other Decks in Technology
See All in Technology
ihcomega56
2
140
hmatsu47
2
130
kataokatsuki
2
240
finengine
0
210
kema1015
0
560
supership
0
150
chipstar_light
0
460
kazeburo
1
120
nghialv
2
250
aizurage
0
100
recruitengineers
0
230
oztick139
0
700
Featured
See All Featured
bkeepers
PRO
54
4.3k
jcasabona
8
590
62gerente
586
200k
maltzj
502
36k
addyosmani
312
21k
shpigford
165
19k
hannesfritz
28
970
brettharned
93
3.1k
erikaheidi
14
4.5k
matthewcrist
73
7.5k
keathley
20
760
danielanewman
2
550
Transcript
GISͱͯ͠׆༻͢Δ Elasticsearch @tfunato ધށɹོ ୈ7ճelasticsearchษڧձ 2014/11/18
Who am I ? • @tfunato ધށɹོ • ࣄɿJavaͰWebɻ࠷ۙHadoopͱ͔ •
ϨίϝϯυΤϯδϯΆ͍ͷ࡞ͬͨΓ • جຊԿͰ • ઃܭɺ։ൃɺηοτΞοϓɺӡ༻ • Java-ja͔Βདྷ·ͨ͠
ElasticsearchͱҐஔใ • Ϛοϐϯά • geo point type • ҢܦͷΠϯσΫγϯά •
geohash • geo shape type • ଟ֯ܗͳͲͷܗΛΠϯσΫγϯά
ElasticsearchͱҐஔใ • ϑΟϧλʔ • geo distance filter • Ңܦใ͔Βͷڑ •
geo polygonfilter • ଟ֯ܗʹؚ·ΕΔϙΠϯτͷϑΟϧλ
ElasticsearchͱҐஔใ • ͦͷଞExperimentalͳػೳ • ଞɺ·ͩษڧதͰ͢
ͳʹ͔ ࡞Εͳ͍͔ʁ
Ґஔใ ͱ͍͑
Ingress
Ґஔใ ͱ͍͑
Ingress
IngressͷͤͭΊ͍ Ingress(ΠϯάϨε)GoogleͷࣾελʔτΞοϓʮφΠΞϯςΟοΫϥϘʯʢNiantic Labsʣ͕։ൃɾӡӦ͢ΔɺεϚʔτϑΥϯʹରԠͨ͠ɺ֦ுݱ࣮ٕज़Λར༻ͨ͠ΦϯϥΠϯήʔϜɾҐஔใήʔϜɻ201211݄ʹট੍Ͱϕʔλ൛ͷӡ༻͕։࢝͞Εɺ201310݄ʹͩΕͰࢀՃՄೳͷ ΦʔϓϯϕʔλʹҠߦ͠ɺ201312݄15ʹਖ਼ࣜӡ༻͕։࢝͞ΕͨɻॳAndroidઐ༻Ͱ͕͋ͬͨɺ20147݄23ΑΓiOSʹରԠͨ͠ɻϓϨΠ͢ΔͨΊͷΞϓϦέʔγϣϯGoogle Play͓ΑͼApp StoreͰແྉͰఏڙ͞Ε͓ͯΓɺΞΠςϜ՝ۚଘࡏ͠ͳ͍ɻGoogleͷαʔϏεͰ͋Δͨ ΊɺϓϨΠʹGmailΞΧϯτ͕ඞཁɻ·ͨGoogle+ͷࢀՃ͕ਪ͞Ε͍ͯΔɻΩϟονίϐʔThe world around you
is not what it seems.ʢ͋ͳͨͷपΓͷੈքɺݟͨ··ͷͷͱݶΒͳ͍ʣͰ͋ΔɻήʔϜͷίϯηϓτਞऔΓήʔϜͰ͋ΔɻϓϨΠϠʔ2ͭͷྗͷ͏ͪͷͲͪ Β͔ʹଐ͢Δɻੈք֤ʹଘࡏ͢ΔʮϙʔλϧʯΛࣗྗͷॴ༗ͱ͠ɺϙʔλϧಉ࢜ΛʮϦϯΫʯͯ͠ࡾ֯ܗΛඳ͘ͱɺͦͷଆ͕ʮίϯτϩʔϧϑΟʔϧυʯͱݺΕΔࣗਞʹͳΔɻͦͷ໘ੵͷେ͖͞Λڝ͏ɻ࠷େͷಛɺήʔϜϑΟʔϧυ͕ੈքͦͷͷɺݱ࣮ͷGoogle ϚοϓʹΑΔਤ ͦͷͷͩͱ͍͏͜ͱͰ͋Δɻϙʔλϧશͯݱ࣮ੈքʹଘࡏ͢ΔݐͳͲʹׂΓͯΒΕ͓ͯΓɺήʔϜதͰϙʔλϧΛ֬อ͢ΔͨΊʹɺ࣮ࡍʹͦͷॴ·Ͱߦ͔ͳ͚Ε͍͚ͳ͍ɻͦͷͨΊεϚʔτϑΥϯ্ͰGPSػೳΛ༗ޮʹ͢Δ͜ͱ͕ϓϨΠͷલఏͱͳ͍ͬͯΔɻεϚʔτϑΥϯͰΠ ϯλʔωοτଓͱGPSड৴͕Ͱ͖ΕੈքதͲ͜Ͱ͜ͷήʔϜΛϓϨΠ͢Δ͜ͱ͕Ͱ͖ΔɻήʔϜͷഎܠͱͳΔετʔϦʔ͕ઃఆ͞Ε͓ͯΓɺಈըͳͲͷܗࣜͰগͣͭ͠ެ։͞Ε͍ͯΔɻ͜ͷετʔϦʔʹج͍ͮͨେنΠϕϯτ͕ൃੜ͢Δ͜ͱ͋ΓɺΠϕϯτͰͷ྆ਞӦͷ݁Ռετʔ ϦʔʹӨڹΛٴ΅͢ɻݱ࣮ੈքͰల։͞ΕΔͱ͍͏ήʔϜͷಛੑ্ɺಛఆͷҬͷϓϨΠϠʔ͕ίϛϡχςΟΛ࡞ͨ͠ΓɺΦϑϥΠϯϛʔςΟϯάΛߦͬͨΓ͢Δػձ͕ଟ͍ɻ·ͨɺؠखݝͷΑ͏ʹIngressΛ؍ޫৼڵʹ׆༻͢Δ࣏ࣗମग़ݱͨ͠ɻήʔϜ՝ۚΞΠςϜଘࡏ͠ͳ͍ͷ ͷɺεϚʔτϑΥϯ༻ϞόΠϧόοςϦʔҠಈඅͳͲͷIngressʹؔ͢Δग़අϢʔβͷؒͰ௨শʮϦΞϧ՝ۚʯͱݺΕΔɻΤʔδΣϯτ[ฤू] ϓϨΠϠʔʮΤϯϥΠςϯυʯ͔ʮϨδελϯεʯɺͲͪΒͷྗʢFactionʣͷΤʔδΣϯτʹͳΔ͔ΛબΜͰήʔϜΛ։࢝͢Δɻ ίʔυωʔϜʢϓϨΠϠʔ໊ʣ͓Αͼॴଐྗݪଇͱͯ͠ม͑Δ͜ͱͰ͖ͳ͍ɻ·ͨɺҐஔใ͔Βੜ׆ൣғ͕͔Δ߹͋ΔͨΊɺίʔυωʔϜଞͷ׆ಈͱؔͳ͍ಗ໊ੑͷߴ͍ͷ͕ਪ͞Ε͍ͯΔ[7]ɻ ίʔυωʔϜޡͬͯຊ໊Λೖྗͯ͠͠·ͬͨ߹ͳͲͷΈมߋՄೳͰ͋Δ͕ɺGoogleͷ৹ࠪΛܦΔඞཁ͕͋Δ[8]ɻ ྗΛมߋ͢Δ߹ਃ͕ඞཁͰ͋ΔɻڐՄ͞ΕΔͷ1ϓϨʔϠʔʹ͖ͭ1ճͰɺมߋޙΞΠςϜɾܦݧͳͲ͕શͯॳظԽ͞ΕΔ[8]ɻ ήʔϜதͰΤϯϥΠςϯυɺϨδελϯε੨ɺதཱനͰද͞ΕΔɻ ϙʔλϧɾϨκωʔλʔ จԽతɾܳज़తɾफڭతʹॏཁͳॴ͕ϙʔλϧͱͳ͍ͬͯΔɻ ۩ମతʹ࢙ɺه೦ൾɺூ૾ɺύϒϦοΫΞʔτɺਤॻؗɺ༣ศہɺӺɺڭձɺਆࣾͳͲ[9][10]ɻ ͨͩ͠ɺେֶΛআֶ͘ߍɺফॺපӃɺܯॺͷΑ͏ͳڌɺݸਓͷɺةݥͳॴɺܠ؍ɺӬٱతͰͳ͍ͷʹ͍ͭͯঝೝ͞Εͳ͍Մೳੑ͕ߴ͍ͱ͞ΕΔɻ ͦͷҬͰϙʔλϧʹద͢ΔͱࢥΘΕΔॴ͕͋ΕɺήʔϜ্͔Β৽نϙʔλϧͷީิͱͯ͠ਃ͢Δ͜ͱ͕Ͱ͖ΔɻӡӦʹͯ৹ࠪ͠ೝΊΒΕΕ৽ͨʹϙʔλϧ͕૿͑Δɻ ϙʔλϧͷ৹ࠪʹཁ͢Δظؒ3ʙ4िؒͱ͞Ε͍ͯΔɻ ϙʔλϧ͔Β40ϝʔτϧҎʹ͖ۙͮɺϙʔλϧΛʮϋοΫʯ͢Δͱ֤छΞΠςϜ͕खʹೖΔɻ ग़ݱ͢ΔΞΠςϜͷϨϕϧϙʔλϧ͓ΑͼϓϨΠϠʔͷϨϕϧʹґଘ͢Δɻ ఢྗͷϙʔλϧΛϋοΫ͢ΔͱΞΠςϜʹՃ͑ͯAPʢܦݧʣ͕खʹೖΔ͕ɺϙʔλϧ͔ΒͷܸͰࣗΒͷXM͕ݮগ͢Δɻ ϙʔλϧʹʮϨκωʔλʯ(Resonator)Λઃஔ͢Δͱͦͷϙʔλϧ͕ࣗྗͷͷͱͳΔɻ ఢྗͷϙʔλϧʹରͯ͠ɺʮXMPόʔελʔʯʢXMP Bursterʣͱ͍͏ΞΠςϜͰશͯͷϨκωʔλΛഁյ͠ɺ͍ͬͨΜதཱʹ͔ͯ͠ΒϨκωʔλΛઃஔ͢ΔͱࣗྗͷͷͱͳΔɻ ϙʔλϧʹMODͱΑΕΔΞΠςϜΛઃஔ͢Δ͜ͱ͕ՄೳɻΞΠςϜʹΑͬͯޙड़ͷϦϯΫՄೳͳڑ͕৳ͼͨΓɺ߈ܸͷੑ্͕ͨ͠Γ͢Δɻ ϦϯΫͱίϯτϩʔϧϑΟʔϧυ ϙʔλϧʹϨκωʔλΛ8ຊઃஔ͢Δͱͦͷϙʔλϧ͔ΒଞͷࣗྗͷϙʔλϧΛʮϦϯΫʯ͢Δ͜ͱ͕Ͱ͖Δɻ ϙʔλϧಉ࢜ΛϦϯΫ͢ΔʹɺϦϯΫઌϙʔλϧͷʮϙʔλϧΩʔʯ͕ඞཁʹͳΔɻϙʔλϧΩʔϋοΫͰಘΔ͜ͱ͕Ͱ͖ΔΞΠςϜͷҰछͰ͋Δɻ ϙʔλϧͷϨϕϧʹΑͬͯϦϯΫՄೳͳڑมԽ͢Δ[12]ɻ࠷ߴϨϕϧʢϨϕϧ8ʣͷϙʔλϧͰ655kmɺߋʹMOD(Very Rare Link Amp)Λซ༻͢Ε࠷6877kmͷڑͰϦϯΫ͕ՄೳͱͳΔɻ 3ͭͷϙʔλϧΛࡾ֯ܗΛඳ͘Α͏ʹϦϯΫ͢Δͱɺਤ্ͷͦͷ෦͕ࣗྗͷʮίϯτϩʔϧϑΟʔϧυʯ(Control Field, CF)ͱͳΔɻίϯτϩʔϧϑΟʔϧυΛ࡞͢Δͱɺͦͷ໘ੵͱਓޱີʹԠͨ͡ʮϚΠϯυϢχοτʯ(MU)ͱݺΕΔಘ͕खʹೖΔɻ ਓޱີ͕Өڹ͢ΔͨΊɺಉ͡໘ੵͷίϯτϩʔϧϑΟʔϧυͳΒํΑΓࢢ෦ͷํ͕MUͷ͕େ͖͘ͳΔ[12]ɻ ٯʹɺఢྗͷίϯτϩʔϧϑΟʔϧυΛߏ͍ͯ͠ΔϙʔλϧͷϨκωʔλΛഁյ͠தཱʹ͢ͱɺϦϯΫ͓ΑͼίϯτϩʔϧϑΟʔϧυഁյ͞ΕɺͦͷͷMUΛݮগͤ͞Δ͜ͱ͕Ͱ͖Δɻ ྆ྗͰMUͷ͕ଟ͍΄͏͕༏ͱͳΔɻ ٿද໘Λ24,576ׂ֤ͨ͠ηϧʢҬʣͰɺ175࣌ؒαΠΫϧ͝ͱʹଘ͍ͯ͠ΔίϯτϩʔϧϑΟʔϧυͷMU͕ूܭ͞Εͯউഊ͕ܾ·Γɺ͞ΒʹશҬͷMU͕߹ࢉ͞ΕੈքϨϕϧͰͷউഊ͕ܾ·Δɻ Ϩϕϧ ΤʔδΣϯτɺϙʔλϧɺΞΠςϜʢϨκωʔλXMPόʔελʔʣʹͯ͢ʮϨϕϧʯ͕͋ΔɻΞΠςϜͷϨϕϧ1͔Β8·ͰͰ͋Δ͕ɺΤʔδΣϯτͷϨϕϧ9Ҏ্ઃఆ͞Ε͍ͯΔɻ ΤʔδΣϯτͷϨϕϧAPʢAccess PointsʣͱݺΕΔܦݧΛੵΉ͜ͱͰ্͕͍ͬͯ͘ɻϨϕϧ8·ͰAPͷΈͰୡͰ͖Δ͕ɺϨϕϧ9Ҏ্APʹՃ͑ͯϝμϧͱݺΕΔ࣮Ұఆ֫ಘ͢Δඞཁ͕͋Δɻ ༻Ͱ͖ΔΞΠςϜΤʔδΣϯτͷϨϕϧʹґଘ͢Δɻྫ͑ɺϨϕϧ1ͷΤʔδΣϯτϨϕϧ2Ҏ্ͷΞΠςϜΛ༻Ͱ͖ͳ͍ɻ લड़ͷͱ͓ΓɺΞΠςϜͷϨϕϧ8·ͰͰ͋ΔͨΊɺΤʔδΣϯτͷϨϕϧ͕8ʹͳΕଘࡏ͢ΔΞΠςϜ͕શͯ༻Ͱ͖Δɻ ϙʔλϧͷϨϕϧΞΠςϜͷ1ͭͰ͋ΔϨκωʔλʹґଘ͢ΔͨΊɺߴϨϕϧͷϙʔλϧΛ࡞ΔʹߴϨϕϧͷΤʔδΣϯτ͕ඞཁͱͳΔɻϨκωʔλͷഁյಉ༷Ͱ͋Δɻ 7JB8JLJQFEJB
ཁ੨ͱʹ͔Εͯ ਤ্ʹϚοϓ͞Εͨ ڌΛऔΓ߹͏ήʔϜ
IngressͰ݁ߏେࣄͳ͜ͱ •ఢͷߦಈཤྺ •ग़ॴ •ߦಈ࣌ؒ ͱରࡦʂ
Ingressͷެࣜπʔϧͷ IntelMapΛ༻͢Δͱ ͍ͭͲ͜Ͱ୭͕ԿΛ͍ͯͨ͠ ͷ͔Θ͔Δʂ
None
APIΛϋοΫͯ͠ ElasticsearchʹͿͬ͜Ή
Έ IntelMapͷAjax௨৴ΛRubyͰِͯ͠ɺ ௨৴σʔλΛܗͯ͠ElasticsearchʹͿͬ ͜Έ·͢ɻͦΕΛɺKibanaͰදࣔɻ
σϞ
·ͱΊ •ElasticsearchͱҐஔใ૬ੑ͕͍͍ •Ingress΄Ͳ΄Ͳʹ •Ingress੨৭͕͓קΊͰ͢
Θ͕RegistanceͰ ຊͷΤʔδΣϯτΛืू͓ͯ͠Γ·͢ ·ͨɺIngress Resistance Tokyo, Japan ͱ͍͏G+ίϛϡχςΟͰ͓ޓ͍࿈ܞΛ औΓͳ͕Β׆ಈΛߦ͍ͬͯ·͢ͷͰ ͪ͜ΒΑΓɺࢀՃΛ͓͓ͪͯ͠Γ·͢ http://join.resist.tokyo
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠