Slide 1

Slide 1 text

CloudSearch nanapiͷࣄྫ঺հ גࣜձࣾnanapiɹՃլ୩ ༞ฏ

Slide 2

Slide 2 text

ࣗݾ঺հ • Ճլ୩ ༞ฏɹ • גࣜձࣾnanapi • nanapi.jpνʔϜɹαʔόαΠυΤϯδχΞ • Vim͕޷͖ violetyk @yuhei_kagaya

Slide 3

Slide 3 text

αʔϏε঺հɹnanapi • ੜ׆ͷ஌ܙ͕ू·ΔαΠτ • http://nanapi.jp • ༷ʑͳϋ΢πʔΛఏڙ͢Δ αʔϏε • ݄ؒ2500ສUU • 10ສهࣄ

Slide 4

Slide 4 text

αʔϏε঺հɹnanapiϫʔΫε • ʮnanapiʯϥΠλʔͷҝ ͷϥΠςΟϯάελδΦ • https://works.nanapi.jp

Slide 5

Slide 5 text

αʔϏε঺հɹanswer • ଈϨείϛϡχέʔγϣϯΞ ϓϦ • http://answer.jp • 5෼Ҏ಺ͷίϝϯτ͕84%Ҏ্ • 1೔40ສίϝϯτ • iOS൛ 2013೥12݄ϦϦʔε • Android൛2014೥5݄ϦϦʔε

Slide 6

Slide 6 text

αʔϏε঺հɹIGNITION • ίϯηϓτ͸ʮ೔ຊͱੈ քΛܨ͙ʯϝσΟΞ • http://ignition.co • ೔ຊͷάϩʔόϧԽΛՃ ଎͢ΔͨΊʹɺ೔ຊͷ৘ ใΛӳޠͰੈքʹൃ৴ • Χϧνϟʔ͔ΒϏδωε ·Ͱ෯޿͘঺հ

Slide 7

Slide 7 text

nanapiͰ CloudSearchΛ࢖͍ͬͯ·͢

Slide 8

Slide 8 text

ࠓ೔࿩͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δ΋ͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ

Slide 9

Slide 9 text

ࠓ೔࿩͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δ΋ͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ

Slide 10

Slide 10 text

AWS΁ͷҠߦ • 2014೥7݄຤ɹΠϯϑϥΛAWS΁શͯҠߦ • ը૾ΦϦδϯαʔόɹˠɹS3 • MemcacheɺRedis ɹˠɹElastiCache • MySQLɹɹɹɹɹ ɹˠɹRDS • શจݕࡧɹɹɹɹ ɹˠɹCloudSearch

Slide 11

Slide 11 text

nanapiͷݕࡧγεςϜ Senna ↓ mroonga ↓ CloudSearch

Slide 12

Slide 12 text

CloudSearchͷӡ༻ • 100,000 υΩϡϝϯτ • 1υϝΠϯ • search.m1.small

Slide 13

Slide 13 text

ࠓ೔࿩͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δ΋ͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ

Slide 14

Slide 14 text

nanapiͷهࣄݕࡧ

Slide 15

Slide 15 text

ʮӡಈձʯ×ʮྉཧϨγϐʯ

Slide 16

Slide 16 text

ʮӡಈձʯ×ʮΧϝϥɾࣸਅʯ

Slide 17

Slide 17 text

ʮӡಈձʯ×ʮεϙʔπɾΞ΢τυΞʯ

Slide 18

Slide 18 text

ͱͯ΋͍͍ײ͡ʂ

Slide 19

Slide 19 text

ࠓ೔࿩͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δ΋ͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ

Slide 20

Slide 20 text

CloudSearch΁ೖΕΔσʔλ • ݕࡧ༻ • ιʔτ༻ • දࣔ༻

Slide 21

Slide 21 text

ݕࡧ༻ • هࣄͷλΠτϧɺຊจ • ΧςΰϦ໊ͷ֊૚ߏ଄

Slide 22

Slide 22 text

ιʔτ༻ • PV • هࣄͷࣥච೔࣌

Slide 23

Slide 23 text

දࣔ༻ • هࣄͷΞ΢τϥΠϯ • ஶऀ৘ใ • هࣄͷΩϟονը૾ͷURL

Slide 24

Slide 24 text

σʔλͷܕ

Slide 25

Slide 25 text

֤ςʔϒϧߋ৽࣌ʹίʔϧόοΫ هࣄ ஶऀ ΧςΰϦ ݕࡧσʔλ afterSave()

Slide 26

Slide 26 text

CloudSearch΁อଘ هࣄ ஶऀ ΧςΰϦ ݕࡧσʔλ afterSave() CloudSearch

Slide 27

Slide 27 text

ࠓ೔࿩͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δ΋ͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ

Slide 28

Slide 28 text

CakePHP + CloudSearch • CakePHP͔ΒCloudSearchΛૢ࡞͢ΔϓϥάΠϯ • https://github.com/nanapi/cakephp-cloud-search • AWS SDK for PHPΛϥοϓͨ͠Datasource • CakePHPͷModelͱͯ͠ѻ͏͜ͱ͕Ͱ͖Δ • Modelͱಉ͡ϝιουɺfind() / save()

Slide 29

Slide 29 text

อଘ // save $save_data = $this->MyModel->create(); $save_data = [ 'id' => '123', 'fields' => [ 'subject' => 'ژ౎Ͱͷ͓͢͢Ίͷ͓౔࢈' 'outline' => ['ژ౎ͷ͓౔࢈', '࣮ࡍʹങͬͨ͜ͱͷ͋Δ͓౔࢈', 'ژ౎ͷ͓౔࢈ʹ͍ͭͯ ͷΞυόΠε'] ] ]; $this->MyModel->save($save_data);

Slide 30

Slide 30 text

೔෇ܕ͸UTC ! CakeTime::i18nFormat($created, "%FT%TZ", false, new DateTimeZone('UTC'));

Slide 31

Slide 31 text

ݕࡧ // find $result = $this->MyModel->find('all', [ 'conditions' => [ 'query' => 'ژ౎' ], 'fields' => [ 'id', 'subject', '_score' ] ]);

Slide 32

Slide 32 text

࡟আ // delete $this->MyModel->delete(123); ! $this->MyModel->deleteAll([ 'MyModel.id' => ['111', '222', '333'], ]);

Slide 33

Slide 33 text

؆୯ɺγϯϓϧʂ

Slide 34

Slide 34 text

ࠓ೔࿩͢͜ͱ ̍ɽCloudSearchಋೖͷ͖͔͚ͬ ̎ɽݕࡧ͍ͯ͠Δ΋ͷ ̏ɽݕࡧσʔλͷͭ͘Γ͔ͨ ̐ɽݕࡧͷ͔ͨ͠ ̑ɽCloudSearchͷϝϦοτ

Slide 35

Slide 35 text

CloudSearchͷϝϦοτ • σϑΥϧτͷ··Ͱ͍͍ײ͡ʹݕࡧͰ͖Δ • ؆୯ʹ೔ຊޠશจݕࡧγεςϜΛ࡞ΕΔ • ͱʹָ͔͘

Slide 36

Slide 36 text

CloudSearchͰΒ͘Β͘ݕࡧʂ

Slide 37

Slide 37 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠