Slide 1

Slide 1 text

J04ʷ(SBQI2-ͷخ͠Έͱπϥϛ J04%$ !@NPHBNJOH

Slide 2

Slide 2 text

w 5XJUUFS!@NPHBNJOH w %F/"ͰখઆܥαʔϏεͷ։ൃ୲౰ J04"OESPJE"QQ w #''΍"1*ͷ։ൃ΋͍ͯ͠·͢ "CPVU.F

Slide 3

Slide 3 text

(SBQI2-"1*ΫϥΠΞϯτฤ (SBQI2-"1*αʔόʔฤ (SBQI2-"1*J04͔Βୟ͘ฤ (SBQI2-ͷخ͠Έͱπϥϛ #''Λ׆༻ͯ͠πϥϛʹཱͪ޲͔ͬͯΈͨ࿩ ࠓ೔࿩͢͜ͱ

Slide 4

Slide 4 text

w "1*αʔόʔʹऔΓೖΕΔ͜ͱͷͰ͖ΔΫΤϦݴޠ 'BDFCPPL࡞IUUQTHSBQIRMPSH w 3&45GVM΍H31$ͱ͸શ͘ҧ͏ࢥ૝ͰͰ͖͍ͯΔ 3&45GVM"1*㱻(SBQI2-"1*㱻H31$ w 42-ϥΠΫʹ"1*ʹ໰͍߹ΘͤͯσʔλΛऔಘ͢Δ (SBQI2-ͱ͸

Slide 5

Slide 5 text

ૣ଎(SBQI2-"1*Λୟ͍ͯΈΑ͏ʂ ࠓ͔Β(JUIVCͷ(SBQI2-"1*Λ୊ࡐʹͯ͠ ࣮ࡍʹ"1*Λୟ͘࿩Λ͍͖ͯ͠·͢ IUUQTEFWFMPQFSHJUIVCDPNWFYQMPSFS

Slide 6

Slide 6 text

ͱʜͦͷલʹ গ͚ͩ͠ݴ༿ͷઆ໌"

Slide 7

Slide 7 text

w 2VFSZ 3&45Ͱ͍͏ͱ(&5 w .VUBUJPO3&45Ͱ͍͏ͱ1045 165 %&-&5& ϦΫΤετͷछྨ (SBQI2-ͷಛ௃͸2VFSZʹूத͍ͯ͠ΔͨΊ2VFSZͷ࿩Λ͠·͢

Slide 8

Slide 8 text

ૣ଎(SBQI2-"1*Λୟ͍ͯΈΑ͏ʂ ࠓ͔Β(JUIVCͷ(SBQI2-"1*Λ୊ࡐʹͯ͠ ࣮ࡍʹ"1*Λୟ͘࿩Λ͍͖ͯ͠·͢ IUUQTEFWFMPQFSHJUIVCDPNWFYQMPSFS

Slide 9

Slide 9 text

։͍ͯΈΔͱ͜Μͳײ͡ ͳΜ͔ΤσΟλΈ͍ͨͳͷ͕։͘ʜφχίϨʁ

Slide 10

Slide 10 text

w (SBQIJ2-͸ϒϥ΢βͰݟΕΔ(SBQI2-*%& w ܕ2VFSZ.VUBUJPO͕ҰཡͰ͖Δ w 2VFSZ.VUBUJPOΛॻ͍࣮ͯߦͰ͖Δ w ೖྗิ׬͕ޮ͘ w ಋೖ͸ͱͬͯ΋؆୯ (SBQIJ2-ʢ͙Β;͌͘Δʁ͙Β;͔͌Δʁʣ IUUQTHJUIVCDPNHSBQIRMHSBQIJRM

Slide 11

Slide 11 text

(SBQIJ2-ͷ࢖͍ํ ͜͜ʹॻ͘ 36/ ͜͜ʹ݁Ռ͕ग़Δ %PDVNFOU͕ݟΕΔ KTPOͰม਺ఆٛ

Slide 12

Slide 12 text

࣮ࡍʹऔಘͯ͠ΈΑ͏ʂ 6TFSͷ৘ใΛऔಘ 2VFSZ ͯ͠ΈΔ

Slide 13

Slide 13 text

%PDVNFOU͔Β6TFSΛऔಘ͢Δ2VFSZΛ୳͢ ͜͜Λԡ͢

Slide 14

Slide 14 text

VTFSΛऔಘͯ͠ΈΔ 2VFSZΛબ୒ 2VFSZҰཡ VTFSΛݕࡧ

Slide 15

Slide 15 text

VTFSΛऔಘͯ͠ΈΔ VTFSRVFSZͷઆ໌ 6TFS5ZQF͔ΒऔΕΔ'JFMET ฦ͞ΕΔܕ 2VFSZͷҾ਺ ͜ΕΛऔͬͯΈΔ

Slide 16

Slide 16 text

42-ϥΠΫʹ͔͚Δ ඞཁͳσʔλ͚ͩΛճͰऔಘͰ͖Δ JOUFSGBDFʹܕ͕͋Δ 1BHJOBUJPOͷ࢓༷͕ܾΊΒΕ͍ͯΔ ϥΠϒϥϦʹΑͬͯ͸࣮૷͞Ε͍ͯͳ͜ͱ΋͋Δ (SBQI2-"1*ͷಛ௃

Slide 17

Slide 17 text

VTFSΛऔಘͯ͠ΈΔ 4&-&$5CJP'30.VTFS 8)&3&MPHJObNPHBNJOH` Έ͍ͨͳΠϝʔδ

Slide 18

Slide 18 text

VTFSΛऔಘͯ͠ΈΔ औಘͰ͖ͨ

Slide 19

Slide 19 text

42-ϥΠΫʹ͔͚Δ ඞཁͳσʔλ͚ͩΛճͰऔಘͰ͖Δ JOUFSGBDFʹܕ͕͋Δ 1BHJOBUJPOͷ࢓༷͕ܾΊΒΕ͍ͯΔ ϥΠϒϥϦʹΑͬͯ͸࣮૷͞Ε͍ͯͳ͜ͱ΋͋Δ (SBQI2-"1*ͷಛ௃

Slide 20

Slide 20 text

ඞཁͳpFME͚ͩऔಘ͢Δ BWBUFS6SM΋௥ՃͰऔಘ͢Δ

Slide 21

Slide 21 text

ෳ਺ͷ2VFSZΛಉ࣌ʹ౤͛Δ GBDFCPPLHSBQIRMϦϙδτϦ΋औಘͯ͠ΈΔ

Slide 22

Slide 22 text

ෳ਺"1*ʹ(&5ϦΫΤετΛૹΓ͕ͪͳ 5PQը໘ͱ͔Ͱ׆༻Ͱ͖ͦ͏ ෳ਺ͷ2VFSZΛಉ࣌ʹ౤͛Δ

Slide 23

Slide 23 text

42-ϥΠΫʹ͔͚Δ ඞཁͳσʔλ͚ͩΛճͰऔಘͰ͖Δ JOUFSGBDFʹܕ͕͋Δ 1BHJOBUJPOͷ࢓༷͕ܾΊΒΕ͍ͯΔ ϥΠϒϥϦʹΑͬͯ͸࣮૷͞Ε͍ͯͳ͜ͱ΋͋Δ (SBQI2-"1*ͷಛ௃

Slide 24

Slide 24 text

ܕ͕͔ͬ͠Γ͋Δ/VMMBCJMJUZ /VMMBCJMJUZ͕ͰΘ͔Δ

Slide 25

Slide 25 text

1FSNJTTJPOͱͯ͠ฦͬͯ͘Δ ஋͕&OVNͱͯ͠ఆٛ͞Ε͍ͯΔ ܕ͕͔ͬ͠Γ͋Δ&OVN ϦϙδτϦʹର͢Δ 1FSNJTTJPOͷpFME

Slide 26

Slide 26 text

ܕ͕͔ͬ͠Γ͋Δ ࣮ମͱͯ͠͸4USJOH͕ฦͬͯ͘Δ

Slide 27

Slide 27 text

w ͋ΒΏΔpFMEʹܕΛ෇͚ΒΕΔ w ܕʹద߹Ͱ͖͍ͯͳ͍৔߹͸ܕγεςϜ͕ΤϥʔΛฦ͢ ܕ͕͔ͬ͠Γ͋Δ

Slide 28

Slide 28 text

42-ϥΠΫʹ͔͚Δ ඞཁͳσʔλ͚ͩΛճͰऔಘͰ͖Δ JOUFSGBDFʹܕ͕͋Δ 1BHJOBUJPOͷ࢓༷͕ܾΊΒΕ͍ͯΔ ϥΠϒϥϦʹΑͬͯ͸࣮૷͞Ε͍ͯͳ͜ͱ΋͋Δ (SBQI2-"1*ͷಛ௃

Slide 29

Slide 29 text

w ྫɿϢʔβʔ͕ελʔ͍ͯ͠ΔϦϙδτϦΛऔಘ͢Δ w ͨ͘͞Μ͋Δ͔΋͠Εͳ͍ͷͰશ݅औಘ͸ΩϏγΠ w ͦ͏͍͏৔߹ͷͨΊͷ$POOFDUJPOͱ͍͏ܕ ࠓճͷ৔߹ͩͱ4UBSSFE3FQPTJUPSZ$POOFDUJPO 1BHJOBUJPO

Slide 30

Slide 30 text

$POOFDUJPO5ZQF"SHVNFOUT औಘ͍ͨ݅͠਺Λࢦఆ͢ΔͨΊʹ BSHVNFOUTͱͯ͠pSTU·ͨ͸MBTUΛඞͣ౉͢ඞཁ͕͋Δ ࠷ॳͷOݸ ࠷ޙͷOݸ

Slide 31

Slide 31 text

$POOFDUJPO5ZQF3FUVSO5ZQF ݁Ռ͸FEHFTOPEFʹೖ͖ͬͯͯ OPEFͷҐஔ͸DVSTPSͰ؅ཧ͞ΕΔ ^ Α͘࢖͏Ͱ͋Ζ͏৘ใ͕ 1BHF*OGPͱͯ͠༻ҙ͞Ε͍ͯΔ ^

Slide 32

Slide 32 text

$POOFDUJPO5ZQFTUBSSFE3FQPTJUPSZΛऔಘ TUBSSFE3FQPTJUPSZΛऔͬͯΈΔ⭐ ࠷ॳͷ݅औಘ QBHFͷ৘ใ΋ͱ͓ͬͯ͘

Slide 33

Slide 33 text

$POOFDUJPO5ZQFTUBSSFE3FQPTJUPSZΛऔಘ ͚݅ͩऔಘͰ͖ͨ ͜ͷҐஔΛࢦ͍ͯ͠Δ

Slide 34

Slide 34 text

$POOFDUJPO5ZQF$VSTPS DVSTPSΛBGUFS΍CFGPSFʹ౉ͤ͹ ͦ͜Λج४ʹͯ͠pSTUMBTUΛ࢖͏͜ͱ͕Ͱ͖Δ1BHJOBUJPO

Slide 35

Slide 35 text

$POOFDUJPO5ZQF$VSTPSΛࢦఆ͢Δ ઌఔͷFOE$VSTPSΛBGUFSʹ౉ͯ͠ΈΔ

Slide 36

Slide 36 text

Ͱ͖ͯΔ $POOFDUJPO5ZQF$VSTPSΛࢦఆ͢Δ

Slide 37

Slide 37 text

42-ϥΠΫʹ͔͚Δ ඞཁͳσʔλ͚ͩΛճͰऔಘͰ͖Δ JOUFSGBDFʹܕ͕͋Δ 1BHJOBUJPOͷ࢓༷͕ܾΊΒΕ͍ͯΔ ϥΠϒϥϦʹΑͬͯ͸࣮૷͞Ε͍ͯͳ͜ͱ΋͋Δ (SBQI2-"1*ͷಛ௃ ͭͷಛ௃ͱͲ͏΍ͬͯ(SBQI2-"1*Λ ୟ͘ͷ͔Λ͝ཧղ͍͚ͨͩͨͰ͠ΐ͏͔ʁ

Slide 38

Slide 38 text

(SBQI2-αʔόʔαΠυฤ (SBQI2-"1*αʔόʔ͸ͲͷΑ͏ʹ ࣮૷͢Ε͹Α͍ͷ͔ʁ

Slide 39

Slide 39 text

(SBQI2-αʔόʔαΠυࢹ఺ HSBQIRMSVCZ ͷ৔߹Ͱ͓࿩͍͖ͤͯͨͩ͞·͢

Slide 40

Slide 40 text

6TFS5ZQFͷఆٛ 6TFS5ZQF ฦ͞ΕΔܕ

Slide 41

Slide 41 text

6TFS5ZQFͷఆٛ $POOFDUJPO5ZQFʹ౉͞Εͨ Ҿ਺ʹԠͯ͡উखʹ-*.*5ͱ 0''4&5Λ͚ͭͯ͘ΕΔ ఆٛ ͱ 3FTPMWFS pFME໊ ܕ આ໌ OVMMBCJMJUZΛએݴ͍ͯ͘͠

Slide 42

Slide 42 text

(SBQI2-αʔόʔαΠυࢹ఺ $POOFDUJPO5ZQFΛฦ͢ͱ͖ʹ ΄ͱΜͲͦΕΛҙࣝ͢Δඞཁ͕ͳͯ͘ૉ੖Β͍͠

Slide 43

Slide 43 text

6TFSRVFSZͷఆٛ VTFSRVFSZ

Slide 44

Slide 44 text

VTFSRVFSZͷ࣮૷ ฦ͢ܕ VTFSRVFSZͷҾ਺ ͜ͷRVFSZͰฦ͢ॲཧ 2VFSZ໊ʢ6TFSVTFSʹͳΔʣ

Slide 45

Slide 45 text

(SBQI2-αʔόʔαΠυࢹ఺ ͨͬͨ͜Ε͚ͩͰVTFSRVFSZ͕׬੒ ૝૾Ҏ্ʹ؆୯Ͱ͢ΑͶ☺ʁ

Slide 46

Slide 46 text

J04͔Β͸Ͳ͏ୟ͘ʁ J04͔Βୟ͘ͱ͖͸Ͳ͏͢Δͷ͔ʁ

Slide 47

Slide 47 text

J04͔Β͸Ͳ͏ୟ͘ʁ 1045Ͱ3FRVFTU#PEZʹԼهΛ౉͚ͩ͢

Slide 48

Slide 48 text

ੜ63-4FTTJPOͰؤுΔ

Slide 49

Slide 49 text

ੜ63-4FTTJPOͰؤுΔ ͜Ε͸πϥ͍

Slide 50

Slide 50 text

ͭΒ͍ͷͰ ϥΠϒϥϦͷྗΛआΓ͍ͨ

Slide 51

Slide 51 text

(SBQI2-ΫϥΠΞϯτϥΠϒϥϦ "QPMMPJ04 IUUQTHJUIVCDPNBQPMMPHSBQIRMBQPMMPJPT

Slide 52

Slide 52 text

"QPMMPJ04Λ࢖͏ɿԼ४උ "QPMMPJ04Λ࢖͏ͨΊʹ͸४උ͕ඞཁͰ͢

Slide 53

Slide 53 text

"QPMMPJ04Λ࢖͏ɿԼ४උ ίʔυੜ੒Λ͠·͢

Slide 54

Slide 54 text

"QPMMPJ04Λ࢖͏Լ४උ schema.json of Github GraphQL ͢΂ͯͷܕ2VFSZ.VUBUJPOT ৘ใ͕ॻ͔Ε͍ͯΔ findUser.gql (SBQIJ2-Ͱॻ͍ͨ 2VFSZΛϑΝΠϧͱͯ͠༻ҙ Apollo CLI Swift Code (FOFSBUF$PEF

Slide 55

Slide 55 text

"QPMMPJ04Λ࢖͏HRMϑΝΠϧ 2VFSZʹ໊લΛ͚ͭΔ

Slide 56

Slide 56 text

"QPMMPJ04Λ࢖͏ ܕͷ͋Δੈքʂ

Slide 57

Slide 57 text

J04͔Β(SBQI2-"1*Λୟ͘ "QPMMPJ04ͷྗΛआΓΕ͹ 5ZQF4BGFʹ(SBQI2-"1*Λୟ͘͜ͱ͕Ͱ͖Δ

Slide 58

Slide 58 text

42-ϥΠΫʹ͔͚Δ ඞཁͳσʔλ͚ͩΛճͰऔಘͰ͖Δ JOUFSGBDFʹܕ͕͋Δ 1BHJOBUJPOͷ࢓༷͕ܾΊΒΕ͍ͯΔ (SBQI2-"1*ͷಛ௃(SBQI2-ͷັྗ ͜ΕΒ͕ͦͷ··(SBQI2-ͷັྗʹͳΔ

Slide 59

Slide 59 text

w JOUFSGBDFʹܕ͕͋Δ w (SBQIJ2-͕࠷ߴ ৗʹ࠷৽ͷυΩϡϝϯτʹͳ͍ͬͯΔ ͍ͭͰ΋ࢼ͠ʹ"1*ୟ͚Δ͠ΫΤϦ࡞ΕΔ J04ΞϓϦΤϯδχΞత(SBQI2-ͷخ͠Έ

Slide 60

Slide 60 text

w ⭕ΫϥΠΞϯτຖʹ"1*࡞ΓΘ͚ͳͯ͘ྑָͯ͘ w ❌ը૾౳ͷϑΝΠϧΛσϑΥϧτͰ͸ѻ͑ͳ͍ ϑΝΠϧΛѻ͏Օॴ͚ͩ͸3&45GVMʹͯ͠ରॲ͍ͯ͠Δ ʢϥΠϒϥϦΛೖΕΕ͹ѻ͑ͳ͘͸ͳ͍ʣ w ❌/໰୊͕ൃੜ͠΍ͯ͘͢େม w ❌ΤϯυϙΠϯτ͕୯ҰʢBQJHSBQIRMʣͷͨΊ$BDIF೉͍͠ ͍··Ͱͷ஌ݟ͕͋·Γ࢖͑ͳ͍ αʔόʔαΠυࢹ఺Ͱ͸

Slide 61

Slide 61 text

(SBQI2-ͷπϥϛ ͯ͞ʜʜπϥϛͷ࿩Λ͠·͢

Slide 62

Slide 62 text

(SBQI2-ͷπϥϛ ΤϥʔϋϯυϦϯά͕೉͍͠

Slide 63

Slide 63 text

Τϥʔ͸Ͳ͏དྷΔͷ͔ Τϥʔ͸͜Μͳײ͡ͰདྷΔ

Slide 64

Slide 64 text

w ෳ਺ͷ2VFSZ.VUBUJPOΛಉ࣌ʹୟ͘ͱҰ෦੒ޭͯ͠
 Ұ෦ࣦഊͱ͔͕ى͜Γ͏Δ w ͲΕ͕ΫϦςΟΧϧͳ΋ͷͳͷ͔ͷ൑அ͕ඞཁ (SBQI2-ͷπϥϛɿΤϥʔϋϯυϦϯά ͍ͭ΋Ͳ͓Γؤுͬͯߟ͑ͯ΍Δ͔͠ͳ͍

Slide 65

Slide 65 text

(SBQI2-ͷπϥϛ TUBUVT$PEF͕جຊͰฦͬͯ͘Δ

Slide 66

Slide 66 text

w TUBUVT$PEF͸جຊͰฦͬͯ͘Δ w (SBQI2-͸ϦΫΤετ͕௨Ε͹ w BQPMMPJPT͔Β͸TUBUVT$PEF͕ݟ͑ͳ͘ͳ͍ͬͯΔ w .VUBUJPOʢߋ৽ܥʣ͕ಛʹπϥ͍ (SBQI2-ͷπϥϛɿTUBUVT$PEF

Slide 67

Slide 67 text

w (SBQI2-͸2VFSZ͕ͱͯ΋ັྗత͕ͩ.VUBUJPO͸ͦΕ΄Ͳ w ߋ৽ܥ͸(SBQI2-Ͱ͋Δ͋Γ͕ͨΈ͕΄ͱΜͲͳ͍ .VUBUJPOʹର͢Δ௒ݸਓతݟղ

Slide 68

Slide 68 text

͜ͷπϥϛΛͳΜͱ͔ղܾͰ͖ͳ͍͔ͳ…ʁ (SBQI2-ͷπϥϛ

Slide 69

Slide 69 text

TUBUVT$PEF͕໰୊ ·ͣ(SBQI2-"1*ଆͰΤϥʔͷ಺༰Λ֦ு͢Δ

Slide 70

Slide 70 text

"1*ଆͰΤϥʔΛ֦ு͢Δ (SBQI2-"1*ଆͰΤϥʔΛ֦ுͯ͠ TUBUVT$PEFΛϨεϙϯεʹ෇༩͢Δ

Slide 71

Slide 71 text

ΞϓϦଆͰTUBUVT$PEFΛࢀর͢Δ TUBUVT$PEFΛऔΓग़͢

Slide 72

Slide 72 text

ͳΜͱ͔ͳͬͯΔؾ͕͢Δʜʁ TUBUVT$PEF͕໰୊

Slide 73

Slide 73 text

͔͠͠ϫΠ͸ࢥͬͨ ʮ͍΍ϫΠ͸ɺ.VUBUJPOͷ݁Ռ͸ ී௨ʹ4UBUVT$PEFͰϋϯυϦϯά͍ͨ͠Μ͡Όʔʯ

Slide 74

Slide 74 text

͔͠͠ϫΠ͸ࢥͬͨ ͳ͔ͥͱ͍͏ͱ

Slide 75

Slide 75 text

#BDLFOET'PS'SPOUFOET Payment Image/Movie Notification Core Domain (SBQI2- BFF iOS App ฐαʔϏε͸.JDSPTFSWJDFTߏ੒ 3&45GVM 3&45GVM 3&45GVM ͦ΋ͦ΋3&45GVM"1*΋ୟ͔ͳ͍ͱ͍͚ͳ͍͜ͱ͕͋Δ

Slide 76

Slide 76 text

#''Λ༻͍ͨࠇຐज़ J04͔ΒΈͯ.VUBUJPOʢߋ৽ܥʣ͚ͩ3&45ͬΆ͘ ৼΔ෣ΘͤΔ͜ͱ΋Ͱ͖·͢

Slide 77

Slide 77 text

GraphQL API BFF iOS App ᶄ (SBQI2-ͷ .VUBUJPOʹ Ϛοϐϯά ᶆ “errors”: [{ “statusCode”: 400 }] ᶇ FSSPSTpSTUTUBUVT$PEFΛ )5514UBUVT$PEFͱ͢Δ ᶈ )5514UBUVT$PEF ͰϋϯυϦϯά ᶃ 63-4FTTJPO౳Ͱ 1045BQJDSFBUF/PWFM #''Λ༻͍ͨࠇຐज़ ᶅ Mutation createNovel()

Slide 78

Slide 78 text

#''Λ༻͍ͨࠇຐज़ Ͱ͖·ͨ͠☺

Slide 79

Slide 79 text

#''Λ༻͍ͨࠇຐज़ ͜͏͍͏;͏ʹ΋Ͱ͖ΔΑ͍ͬͯ͏͚ͩͳͷͰ Φεεϝ͸͠·ͤΜ2 ΋͔ͨ͠͠Β͜Ε͕ΠΠͬͯͳΔ͜ͱ΋͋Δ͔΋ʜʁ

Slide 80

Slide 80 text

w (SBQI2-͸ͳ͔ͳ͔͍͍ͧ JOUFSGBDFʹܕ͕͋Δͷ࠷ߴ (SBQIJ2-࠷ߴ w (SBQI2-͸ΤϥʔϋϯυϦϯά͕݁ߏΉ͔͍ͣͧ͠ #FTU1SBDUJDF͕͋·Γͳ͘ͱͯ΋೰·͍͠ ·ͱΊ ࠙਌ձ΍ฐࣾ%F/"ϒʔεͰ΋͍ͭͰ΋͓੠͕͚͍ͩ͘͞ʂ

Slide 81

Slide 81 text

ࢀߟࢿྉ

Slide 82

Slide 82 text

w BQPMMPΛOQNJOTUBMM OQNJHBQPMMP w BQPMMPΛ࢖ͬͯ(JUIVC(SBQI2-"1*ͷTDIFNBΛऔಘ BQPMMPTDIFNBEPXOMPBEFOEQPJOUIUUQTBQJHJUIVCDPNHSBQIRIFBEFS"VUIPSJ[BUJPO#FBSFSUPLFO TDIFNBKTPO w (SBQIJ2-Ͱॻ͍ͨRVFSZʹ໊લ͚ͭͯHRMϑΝΠϧͱͯ͠อଘ w TDIFNBͱHRM͔ΒBQPMMPΛ࢖ͬͯίʔυੜ੒ BQPMMPDPEFHFOHFOFSBUFRVFSJFTpOE6TFSHRMTDIFNBTDIFNBKTPO"1*TXJGU "QPMMPJ04Λ࢖͏Լ४උʢৄࡉʣ