php grpc-client in phpcon2018
by
shmurakami
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
1)1ͰͷH31$ΫϥΠΞϯτ࡞ͱ Ϣʔεέʔε 1)1$POGFSFODF
Slide 2
Slide 2 text
© Chatwork ࣗݾհ ˔ଜ্ढ़հ ˔$IBUXPSLגࣜձࣾ ˔ೖࣾ ˔1)1ΤϯδχΞ ˔*46$0/ͷຊઓʹ1)1Ͱग़ͨ͠Αʂ
Slide 3
Slide 3 text
© Chatwork $IBUXPSLʹ͍ͭͯ ˔ϏδωενϟοταʔϏε ˓άϧʔϓνϟοτ λεΫཧ ϑΝΠϧڞ༗ ϏσΦԻ௨ ˔ಋೖاۀ ࣾҎ্ ݱࡏ
Slide 4
Slide 4 text
© Chatwork 5PQJDT ˔ಋೖ ˔H31$ʹ͍ͭͯ ˔1)1ͰͷH31$ΫϥΠΞϯτ࣮ ˔$IBUXPSLͷH31$Ϣʔεέʔε
Slide 5
Slide 5 text
© Chatwork
Slide 6
Slide 6 text
© Chatwork (3085) ˔αʔϏε͕(SPXUIͨ͠ͱ͖ʹͲ͏͢Δ͔ʁ ˔ڊେͳϞϊϦεͷγεςϜେମπϥ͍ ˓ಡΈղ͚ͳ͍εύήοςΟίʔυ ˓ྺ࢙తܦҢɺ҉ ˓ؔͳ͍ͣͷมߋ͕ͨΒ͢όά
Slide 7
Slide 7 text
© Chatwork (3085) ˔ҙຯͷ͋Δ୯ҐͰׂ͍ͨ͠ ˓ίϯϙʔωϯτΛ"1*ͰΓऔΓ͢ΔέʔεΑ͋͘Δ ˙มߋͷӨڹΛখ͘͢͞Δ ˙վળΛ༰қʹ ˔㱠.JDSPTFSWJDFT
Slide 8
Slide 8 text
© Chatwork (3085) ˔+40/Ͱ௨৴͢Δ)551ϕʔεͷ"1* ˓"1*ͷϑΥʔϚοτΛڞ༗͢Δͷେม ˓௨৴ʹΑΔύϑΥʔϚϯεͷӨڹ͕খ͘͞ͳ͍ ˔ϋΠύϑΥʔϚϯεɺ։ൃ༰қੑ ˓H31$ΛͬͯղܾͰ͖Δ͔͠Εͳ͍
Slide 9
Slide 9 text
© Chatwork 1)1ΞϓϦέʔγϣϯͷจ຺Ͱߟ͑Δͱ ˔1)1ϞϊϦε͔ΒίϯϙʔωϯτΛΓग़͢λΠϛϯάͰ ผݴޠΛબ͢Δέʔε ˓ΞʔΩςΫνϟɺύϑΥʔϚϯε্ͷཧ༝ͱ͔ ˓ 1)1πϥ͍ͱ͔υϠΕΔݴޠΛ͍͍ͨͱ͔ ˔H31$ͷ্༷ύϑΥʔϚϯε͕༏Ε͍ͯΔ ˓1)1ΛH31$ΫϥΠΞϯτͱͯ͠Քಇ͍ͤͨ͞
Slide 10
Slide 10 text
© Chatwork gRPCʹ͍ͭͯ
Slide 11
Slide 11 text
© Chatwork H31$ ˔(PPHMF͕։ൃͨ͠ϓϩτίϧ ˔)UUQϕʔεͰߴͳ௨৴͕Մೳ ˓4USFBNJOH ˔3FRVFTU3FTQPOTF4FSJBMJ[BUJPO ˔ৄࡉͳυΩϡϝϯτ ˓IUUQTHSQDJP ˓IUUQTHJUIVCDPNHSQDHSQDUSFFNBTUFSEPD ˙HSQDJPݹ͍ͱ͜Ζ͕͋ΔͷͰ(JU)VCݟͨํ͕͍͍
Slide 12
Slide 12 text
© Chatwork 1SPUPDPM#VGGFST ˔ߏσʔλͷγϦΞϥΠζϝΧχζϜ ˓3FRVFTU3FTQPOTFͷ4FSJBMJ[FSͱͯ͠H31$ͷσϑΥϧ τʹͳ͍ͬͯΔ ˔*%- *OUFSGBDF%FGJOJUJPO-BOHVBHF ˓3FRVFTU3FTQPOTFΛఆٛ͢Δ%4- QSPUP ˓αʔόʔΫϥΠΞϯτ͕ڞ௨Ͱ༻͢Δ"1*ϑΥʔϚοτ Λ౷ҰͰ͖Δ
Slide 13
Slide 13 text
© Chatwork 1SPUPDPM#VGGFSTTBNQMF syntax = “proto3"; message Person { string name = 1; string email = 2; enum PhoneType { MOBILE = 0; HOME = 1; } message PhoneNumber { string number = 1; PhoneType type = 2; } } service GreetingService { rpc greet (Person) returns (stream PersonResponse); }
Slide 14
Slide 14 text
© Chatwork QSPUPD ˔1SPUPDPM#VGGFST$PNQJMFS ˔1SPUPDPM#VGGFSTͷҰ෦ ˓ϏϧυࡁΈͷ࣮ߦϑΝΠϧ͕(JU)VCʹ্͕͍ͬͯΔ ˓CSFXͳͲͷύοέʔδϚωʔδϟʔͰऔಘՄೳ ˔QSPUPϑΝΠϧΛίϯύΠϧͯ͠ίʔυΛੜ
Slide 15
Slide 15 text
© Chatwork QSPUPDίϚϯυαϯϓϧ $ protoc \ --proto_path=./proto \ --php_out=./dest \ --grpc_out=./dest \ --plugin=protoc-gen-grpc=./grpc/bins/opt/grpc_php_plugin \ ./proto/sample.proto
Slide 16
Slide 16 text
© Chatwork ੜϑΝΠϧ $ tree dest ├── GPBMetadata │ └── Sample.php ├── GreetingServiceClient.php ├── Person │ ├── PhoneNumber.php │ └── PhoneType.php ├── Person.php proto └── sample.proto syntax = “proto3"; message Person { string name = 1; string email = 2; enum PhoneType { MOBILE = 0; HOME = 1; } message PhoneNumber { string number = 1; PhoneType type = 2; } } service GreetingService { rpc greet (Person) returns (stream PersonResponse); }
Slide 17
Slide 17 text
© Chatwork ੜϑΝΠϧ name; } public function setName($var) { /*...*/ } public function getEmail() { return $this->email; } public function setEmail($var) { /*...*/ } }
Slide 18
Slide 18 text
© Chatwork ੜϑΝΠϧ _serverStreamRequest('/GreetingService/greet', $argument, ['\PersonResponse', 'decode'], $metadata, $options); } }
Slide 19
Slide 19 text
© Chatwork H31$1SPUPDPM#VGGFST ˔1)1Ҏ্ɹͦͦ1)1Ͱ&0-Ͱ͢Αʂ ˔$Ҏ্ʹରԠͨ͠HDD ˔$FOU04ͩͱHDDͷόʔδϣϯ͕͗ͯ͢Ϗϧυ͕େม ˓ηοτΞοϓ͕ຯʹΊΜͲ͍͘͞ ˓ίϯύΠϧ͢ΔEPDLFSΠϝʔδΛ࡞ͬͯ͠·͏ͱָ ˔1)1͕ରԠ͍ͯ͠ΔͷQSPUP͔ΒͳͷͰɺQSPUPΛͬͯ ͍Δ߹ʹ্͛Δඞཁ͕͋Δ
Slide 20
Slide 20 text
© Chatwork %PDLFSGJMFྫ FROM amazonlinux:2018.03 RUN yum update -y && \ yum install -y \ # grpc dependencies git gcc gcc48-c++ autoconf automake libtool unzip which wget # download protoc RUN mkdir /opt/protoc && \ wget -O /opt/protoc/protoc.zip https://github.com/protocolbuffers/protobuf/ releases/download/v3.5.1/protoc-3.5.1-linux-x86_64.zip \ && unzip -d /opt/protoc /opt/protoc/protoc.zip \ && rm /opt/protoc/protoc.zip # build grpc_php_plugin RUN git clone https://github.com/grpc/grpc /opt/grpc \ && cd /opt/grpc \ && git submodule update --init \ && cd /opt/grpc/third_party/protobuf \ && sh autogen.sh \ && cd /opt/grpc \ && make grpc_php_plugin
Slide 21
Slide 21 text
© Chatwork ೦ͳ͓Βͤ ˔1)1ͰͷH31$αʔόʔͰ͖ͳ͍ ˔H31$αʔόʔΛ࡞Δͱ͖ผݴޠΛ͏ ˔$IBUXPSLͰ4DBMBΛ࠾༻͍ͯ͠·͢ ˓4DBMBΛ࠾༻ͨ͠ܦҢͪ͜Β IUUQDOPUFDIBUXPSLDPNQPTUEFWDBNQ
Slide 22
Slide 22 text
© Chatwork 1)1ͰͷH31$αʔόʔͳ͍͔ͥ͠ ˔NPE@QIQQIQGQNͳͲΛհ͢ͱHSQD௨৴ͷ؊Ͱ͋ΔίωΫγϣ ϯͷ4USFBN௨৴͕͑ͳ͘ͳΔ ˔"QBDIFOHJOYΛΘͳ͍ͱ1)1୯ମͰ)551ͷϋϯυϦϯά͕Ͱ ͖ͳ͍ ˓1)1୯ମͰEBFNPOJ[FͰ͖ͳ͍ ˓NBY@FYFDVUJPO@UJNFͱ͔͋Δ͠ ˓.JDSPTFSWJDFTͰ1)1͕͋·ΓΘΕͳ͍͜ͱͱࣅͯΔ ˙1)1Λ͓͏ͱ͢Δͱϑϩϯτ8FCαʔό͕ඞਢʹͳΔ
Slide 23
Slide 23 text
© Chatwork 1)1ͰͷH31$αʔόʔͳ͍͔ͥ͠ ˔3PBE3VOOFSͱ͍͏1)1"QQMJDBUJPO4FSWFS (P Λ ͏ͱ(P͕)UUQΛϋϯυϦϯά͢ΔͷͰ͑ΔΒ͍͠ ˓IUUQTHJUIVCDPNTQJSBMSPBESVOOFS ˓ී௨ͷ1)1Ͱͳ͍͕ʜʜ
Slide 24
Slide 24 text
© Chatwork PHPͰͷgRPCΫϥΠΞϯτ࣮
Slide 25
Slide 25 text
© Chatwork PHPͰͷgRPCΫϥΠΞϯτ࣮ ˔ඞཁʹͳΔίϯϙʔωϯτ ˓H31$௨৴ ˓3FRVFTU3FTQPOTF4FSJBMJ[FS
Slide 26
Slide 26 text
© Chatwork H31$௨৴ ˔H31$௨৴ॲཧͷ࣮ମ ˓H31$FYUFOTJPO$Ͱ࡞ΒΕ͓ͯΓ1)1֦ுΛΠϯε τʔϧ͢Δ ˓1&$-Ͱ͞Ε͍ͯΔ HSQD ˔HSQDϥΠϒϥϦ ˓HSQD֦ுΛૢ࡞͢ΔͨΊͷϥΠϒϥϦ ˓$PNQPTFSͰ͞Ε͍ͯΔ HSQDHSQD
Slide 27
Slide 27 text
© Chatwork 3FRVFTU3FTQPOTF4FSJBMJ[FS ˔1SPUPDPM#VGGFSTͷ1)1֦ு QSPUPCVG ͕ͦΕ ˓1&$- QSPUPCVG ͘͠ ˓$PNQPTFS HPPHMFQSPUPCVG Ͱఏڙ͞Ε͍ͯΔ ˓֦ுͷํ͕$PNQPTFSΑΓύϑΥʔϚϯε͕༏Ε͍ͯΔ ˙֦ுΛ͏Α͏ʹ͢Δͱ1IQ4UPSNͰίʔυิ͕ ޮ͔ͳ͍ͷͰSFRVJSFEFWͰೖΕ͍ͯΔ
Slide 28
Slide 28 text
© Chatwork QSPUPCVG ˔֦ுͱ$PNQPTFSͷൺֱ 1)1 ˓͋ΔσʔληοτΛQSPUPCVGͷΫϥεʹηοτͯ͠γ ϦΞϥΠζ͢Δ 1&$- $PNQPTFS ॴཁ࣌ؒ NT NT ˔ഒҎ্͍
Slide 29
Slide 29 text
© Chatwork ϦϙδτϦઃܭ ˔QSPUP͔Βੜ͞ΕΔίʔυΛઐ༻ͷϦϙδτϦͰཧ ˔$PNQPTFSܦ༝Ͱࢀর ˓QSPUP͔ΒͷੜΞϓϦέʔγϣϯͷຊ࣭ͱҟͳ Δͷ ˓ґଘΛڧͨ͘͘͠ͳ͍ͷͰผϦϙδτϦʹΓ͍ͨ͠
Slide 30
Slide 30 text
© Chatwork ϋϚΓͲ͜Ζ ˔1&$-ͰͷΠϯετʔϧ ˔ґଘίϯϙʔωϯτͷόʔδϣϯ
Slide 31
Slide 31 text
© Chatwork 1&$-ͰͷΠϯετʔϧ ˔1&$-ͰͷΠϯετʔϧ࣌ʹίϯύΠϧ͕࣮ߦ͞ΕΔ ˓$FOU04ͷΑ͏ͳHDDͷόʔδϣϯ͕ݹ͍ڥͩͱί ϯύΠϧ͕Ͱ͖ͳ͍ ˓EFWUPPMTFUͱ͔ͬͯແཧΓೖΕΔ͔͠ͳ͍
Slide 32
Slide 32 text
© Chatwork ґଘίϯϙʔωϯτͷόʔδϣϯ ˔HSQD QSPUPCVG QSPUPDͷόʔδϣϯޓੑΛอͭඞཁ͕͋Δ ˓ͦΕͧΕͷೖखܦ࿏͕ҧ͏ ˓1&$- $PNQPTFS (JU)VCSFMFBTFQBHF ˓1)1࣮ߦ࣌ͰͷΤϥʔ·Ͱʹؾͮ͘λΠϛϯά͕ແ͍ ˙ΤϥʔʹͳͬͯϥΠϒϥϦͷத·ͰίʔυΛݟʹߦ ͔ͳ͍ͱԿ͕͓͔͍͔͔͠Βͳ͍
Slide 33
Slide 33 text
© Chatwork ґଘίϯϙʔωϯτͷόʔδϣϯ ˔ޓੑ͕͔ΓͮΒ͍ ˓ެࣜυΩϡϝϯτ͕ߋ৽͞Εͳ͍ ˔࠷৽൛ ࣌ ˓HSQD ˓QSPUPCVG ˔3FMFBTFT/PUFTΛݟͯؤுΔʜ grpc.io github
Slide 34
Slide 34 text
© Chatwork 1)1H31$DMJFOU·ͱΊ ˔H31$ͷ$֦ு$PNQPTFSίʔυ͕ඞཁ ˔QSPUPCVGͷ1&$-൛cc$PNQPTFS൛͕ඞཁ ˓ݹ͍αʔόʔͩͱେม ˔ίϯϙʔωϯτͷόʔδϣϯޓੑ͕ແ͍߹ͷ࣮ߦ࣌Τ ϥʔσόοά͕େม͔ͩΒؾΛ͚ͭΔ
Slide 35
Slide 35 text
© Chatwork ChatworkͰͷgRPCϢʔεέʔε
Slide 36
Slide 36 text
© Chatwork Ϣʔεέʔε ˔$IBUXPSLͷςΩετͷ༷ύʔε͕πϥ͍ [info][title]PHPCon2018:)[/title]PHPͰgRPCಈ͔͍ͨ͠Ͱ͢Ͷ(bow)[/info] ˔ΫϥΠΞϯταΠυͰύʔε͍͍ͯ͠ײ͡ͷݟͨʹ͢Δ ˓πϥ͍
Slide 37
Slide 37 text
© Chatwork Ϣʔεέʔε [info][title]PHPCon2018:)[/title]PHPͰgRPCಈ͔͍ͨ͠Ͱ͢Ͷ (bow)[/info] {“tokens":[ {“info”:{"title":[{"text":"PHPCon2018"},{"emoticonSmile":{}}], “message":[ {“text":"PHPͰgRPCಈ͔͍ͨ͠Ͱ͢Ͷ"},{"emoticonBow":{}} ]}} ]} ASTԽ ˔ৄࡉϒϩά͕ޙॻ͔Ε·͢ʂ ˓IUUQTDSFBUPSTOPUFDIBUXPSLDPN
Slide 38
Slide 38 text
© Chatwork Ϣʔεέʔε ˔νϟοτ ˔෦֓ཁ ˔λεΫ ộ
Slide 39
Slide 39 text
© Chatwork Ϣʔεέʔε ˔ద༻ൣғ͕͍ ˔$IBUXPSLͷϦΫΤετྔͰͪΐͬͱͨ͠ϨεϙϯελΠ Ϝͷ૿Ճக໋త ˓͔ͳΓͷߴεϧʔϓοτ͕ٻΊΒΕΔ
Slide 40
Slide 40 text
© Chatwork Ϣʔεέʔε
Slide 41
Slide 41 text
© Chatwork ύϑΥʔϚϯε ˔H31$ͷॲཧΛೖΕΔલޙͰͷฏۉϨεϙϯελΠϜͷൺֱ ˓"84ಉҰ71$ͷ&$ؒ௨৴ LTܦ༝ ˙ҎԼࢀߟͱͯ͠ϩʔΧϧڥͷൺֱ ಋೖલ H31$͋Γ ฏۉ NT ˔ϩʔΧϧͰେମNTఔͷ૿Ճ ˓+40/4USJOHΛฦ͚ͩ͢ͷ"1*͕OHJOYܦ༝ͰNT
Slide 42
Slide 42 text
© Chatwork ύϑΥʔϚϯε ϦϦʔε͕ؒʹ߹Θͣ ϓϩμΫγϣϯڥͰͷݕূ݁Ռ͕ग़ͤ·ͤΜͰͨ͠ ϦϦʔεޙʹϓϩμΫγϣϯڥͰൺֱͯ͠ߋ৽͢Δ༧ఆͰ͢
Slide 43
Slide 43 text
© Chatwork ·ͱΊ ˔1)1ͰͷΫϥΠΞϯτ࣮ϋϚΓͲ͜Ζগͳ͘؆୯ ˓ࣗಈੜ͞Εͨίʔυ͕͑ΔͷͰैདྷΑΓָ͔ ˔ߴεϧʔϓοτͷڥͰ͑ͦ͏ ˓αʔϏε͕(SPXUIͨ͠ͱ͖ͷࢪࡦͷͭͱͯ͠༗ྗ ˓ଞݴޠͰH31$αʔόʔΛ࣮Ͱ͖Δਓ͕͍Εɾɾɾ ˔1)1ͰH31$αʔόʔΛ࣮ݱ͢Δະདྷ͕དྷΔͱ͍͍Ͱ͢Ͷ
Slide 44
Slide 44 text
© Chatwork 8F$IBUXPSLBSFIJSJOH IUUQTDPSQDIBUXPSLDPNKBSFDSVJUFOHJOFFS
Slide 45
Slide 45 text
© Chatwork ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠