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
さよならRecompose, こんにちはReact Hooks!
Search
Takuya Fujimoto
December 20, 2018
Programming
0
420
さよならRecompose, こんにちはReact Hooks!
- Mix Leap
- React
- React Hooks
- Recompose
Takuya Fujimoto
December 20, 2018
Tweet
Share
More Decks by Takuya Fujimoto
See All by Takuya Fujimoto
React + GraphQLで社内の負債を解決した話
tfrcm
0
570
AppSyncで負債を解決した話
tfrcm
1
470
なぜ社内でGoを採用したのか
tfrcm
0
78
Facebookに行ってきたの秋
tfrcm
0
73
ReactNativeでモバイル開発を始めよう!
tfrcm
0
70
My favorite Morisawa's fonts
tfrcm
0
62
React勉強会② ハンズオン編
tfrcm
0
100
ReactNativeの開発環境を5分で作る
tfrcm
1
360
さぁ!Reactを始めよう!
tfrcm
0
160
Other Decks in Programming
See All in Programming
[初登壇@jAZUG]アプリ開発者が気になるGoogleCloud/Azure+wasm/wasi
asaringo
0
120
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
1
100
コード書くの好きな人向けAIコーディング活用tips #orestudy
77web
3
300
Webからモバイルへ Vue.js × Capacitor 活用事例
naokihaba
0
530
技術懸念に立ち向かい 法改正を穏便に乗り切った話
pop_cashew
0
1.3k
実はすごいスピードで進化しているCSS
hayato_yokoyama
0
110
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
110
Julia という言語について (FP in Julia « SIDE: F ») for 関数型まつり2025
antimon2
3
910
Gleamという選択肢
comamoca
6
690
2度もゼロから書き直して、やっとブラウザでぬるぬる動くAIに辿り着いた話
tomoino
0
150
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
100
💎 My RubyKaigi Effect in 2025: Top Ruby Companies 🌐
yasulab
PRO
1
130
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
16
910
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Mobile First: as difficult as doing things right
swwweet
223
9.6k
Writing Fast Ruby
sferik
628
61k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Typedesign – Prime Four
hannesfritz
42
2.7k
Practical Orchestrator
shlominoach
188
11k
Raft: Consensus for Rubyists
vanstee
139
7k
Statistics for Hackers
jakevdp
799
220k
The World Runs on Bad Software
bkeepers
PRO
68
11k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
228
22k
Transcript
.JY-FBQ4UVEZ8FCϑϩϯτΤϯυฏ࠷ޙͷౙͷਞ ͞ΑͳΒ3FDPNQPTF ͜Μʹͪ3FBDU)PPLT
ϓϩϑΟʔϧ
ΞδΣϯμ wձࣾհ w3FBDU)PPLTͱ w3FDPNQPTFͷ։ൃ͕ऴΘΔ w3FBDU)PPLTͷ"1* w3FBDU)PPLT2" w·ͱΊ ͋͐͡Μͩ
ΞδΣϯμ wձࣾհ w3FBDU)PPLTͱ w3FDPNQPTFͷ։ൃ͕ऴΘΔ w3FBDU)PPLTͷ"1* w3FBDU)PPLT2" w·ͱΊ ͋͐͡Μͩ ͋͐͡Μͩ
(FNDPPL *OD
͐͡Ή͓
ԿΛͬͯΔձ͔ࣾ wΤϯδχΞ͕ू·ͬͯϓϩάϥϜͰϞϊΛ࡞ͬͯΔձࣾ wΫϥΠΞϯτͷΞϓϦɾγεςϜͷ։ൃ wཁ݅ͷώΞϦϯά͔ΒɺσβΠϯɾ։ൃɾӡ༻ɾอक·ͰࣗࣾͷΈͰରԠ wࣗࣾͷαʔϏε։ൃ wϖοτؔ࿈ͷΞϓϦΛ։ൃதɾɾɾ
(FNDPPLͷΤϯδχΞ
(FNDPPLͷΤϯδχΞ ͨͪΤϯδχΞͳͷͰɺ ใͷΠϯϓοτΞτϓοτΛపఈ͍ͯ͠·͢
(FNDPPLͰ͍ͬͯΔٕज़ Πϯϓοτ ϑϩϯτΤϯυ όοΫΤϯυ Πϯϑϥ
044ͷ։ൃ Ξτϓοτ OQNͰ3FBDU༻ͷϥΠϒϥϦΛݸެ։த
.JY-FBQͰษڧձ Ξτϓοτ ࠓ͕(FNDPPLͷࠓճͷ.JY-FBQ
ࠓ.JY-FBQΛ௨ͯ͡ɺ وॏͳମݧ͕͍ͬͺ͍Ͱ͖ͨ
ΤϯδχΞืूͯ͠·͢ IUUQTXXXXBOUFEMZDPNQSPKFDUT 3FBDUɾ7VFɾ(PͰ։ൃ͍ͨ͠ ΤϯδχΞืूதͰ͢ʂ
ΞδΣϯμ wձࣾհ w3FBDU)PPLTͱ wSFDPNQPTFͷ։ൃ͕ऴΘΔ w3FBDU)PPLTͷ"1* w3FBDU)PPLT2" w·ͱΊ ͋͐͡Μͩ
ৄࡉͳઆ໌ʹೖΔલʹ 3FBDU)PPLTͷ֓ཁ͔Β͠·͢
3FBDU)PPLTͱ w݄ʹΞϝϦΧͷωμόभͰ։࠵͞Εͨ3FBDU$POGͰൃද͞Εͨ৽ػೳ w$MBTT$PNQPOFOUΛॻ͔ͣʹɺ'VODUJPO$PNQPOFOUͰTUBUFϥΠϑαΠΫϧͷ༷ͳ ෭࡞༻ͳػೳ͕͑Δ༷ʹͳΔ"1*܈ w4'$͕'$ʹͳΔ wݱࡏWBMQIBʹ࣮͞Ε͍ͯΔ w)P$ͷସ͑ͱͯ͠૽͕Ε͍ͯΔ
3FBDU)PPLT ͷܹΞπͳχϡʔεͷͭ
Կ͕ܹΞπ͔ʁ
3FBDU)PPLTͱ w݄ʹΞϝϦΧͷωμόभͰ։࠵͞Εͨ3FBDU$POGͰൃද͞Εͨ৽ػೳ w$MBTT$PNQPOFOUΛॻ͔ͣʹɺ'VODUJPO$PNQPOFOUͰTUBUFϥΠϑαΠΫϧͷ༷ͳ෭࡞ ༻ͳػೳ͕͑Δ༷ʹͳΔ"1*܈ w4'$͕'$ʹͳΔ wݱࡏWBMQIBʹ࣮͞Ε͍ͯΔ w)P$ͷସ͑ͱͯ͠૽͕Ε͍ͯΔ
ͦΕͷԿ͕Ξπ͔͔ͬͨΛཧղ͢Δҝʹ $PNQPOFOUఆٛͷ͓͞Β͍
छྨͷίϯϙʔωϯτఆٛ w$MBTT$PNQPOFOU w'VODUJPO$PNQPOFOU
$MBTT$PNQPOFOU 'VODUJPO$PNQPOFOU
ݟͨશ͘ಉ͡6*
͡Ό͋ɺԿ͕ҧ͏ͷʁ
྆ऀͷܾఆతͳҧ͍ w$MBTT$PNQPOFOUϥΠϑαΠΫϧΛఆٛͰ͖Δ w$MBTT$PNQPOFOU4UBUFΛఆٛͰ͖Δ
͡Ό͋ɺ'VODUJPO$PNQPOFOUͷԿ͕͍͍ͷʁ
'VODUJPO$PNQPOFOU͍Βͳ͘ͳ͍ʁ
ͦΜͳࣄͳ͍ʂ
'VODUJPO$PNQPOFOUͷૉఢͳॴ w$MBTT$PNQPOFOUʹൺͯจͰ͢Ή ίʔυྔ͕DMBTTΑΓ࠷େݮ wίϯύΠϧޙͷίʔυྔ͕খ͍͞ wϐϡΞͳؔͳͷͰςετ͕͍͢͠ wϐϡΞͳؔͳͷͰɺ6*ͱϩδοΫΛ͍͢͠ wࠓޙͷ3FBDUͷόʔδϣϯͰύϑΥʔϚϯε্͕͢ΔՄೳੑ͕͋Δ wΉΈͨΒͳ෭࡞༻͕ͳ͍ͷͰɺ࠶ར༻ੑ͕ߴ·Δ
ྫ͑#BCFMͰτϥϯείϯύΠϧͨ࣌͠
$MBTT$PNQPOFOUͷϏϧυޙͷίʔυ
'VODUJPO$PNQPOFOUͷϏϧυޙͷίʔυ
ίʔυྔ͕શવҧ͏ʂʂʂʂ
'VODUJPO$PNQPOFOUૉΒ͍͠ ՄೳͳݶΓ'VODUJPO$PNQPOFOUΛ͏͖
ͨͩ'VODUJPO$PNQPOFOUΛ։ൃ͍ͯ͠Δ ్தͰىͬͯ͜͠·͏ࣄ͕͋Γ·͢
'VODUJPO$PNQPOFOUͰॻ͍͚ͨͲɺ ͬͺΓTUBUF͍͍ͨ ͬͺΓϥΠϑαΠΫϧ͍͍ͨFUDʜ
ͦΕΛ͑ͯ͘ΕΔͷ͕ ࠓͷͷl3FBDU)PPLTzͰ͢
ਖ਼ɺ3FBDUքͰ ֵ໋ϨϕϧͷΞοϓσʔτͰ͢
ΞδΣϯμ wձࣾհ w3FBDU)PPLTͱ w3FDPNQPTFͷ։ൃ͕ऴΘΔ w3FBDU)PPLTͷ"1* w3FBDU)PPLT2" w·ͱΊ ͋͐͡Μͩ
͡Ό͋ɺ)PPLT͕ొ͢Δ·Ͱ 'VODUJPO$PNQPOFOUʹTUBUFఘΊͯͨͷ͔ʁ
'VODUJPOͰॻ͍ͯͯɺ్தͰϥΠϑαΠΫϧ͍Δͬ ͯͳͬͨΒ$MBTTʹؤுͬͯॻ͖͑ͯͨͷ͔ʁ
ͦΜͳ࣌)P$ͷϢʔςΟϦςΟϥΠϒϥϦͰ͋Δ l3FDPNQPTFzΛ͍ͬͯ·ͨ͠
ͪ͜Βͷલʹࣝͷ͓͞Β͍
3FBDU։ൃ࣌ʹ͑Δ ͜ΜͳςΫχοΫ͕͋Γ·͢
)P$ )JHIFSPSEFS$PNQPOFOUT wίϯϙʔωϯτΛҾʹͱΓɺՃՁͷ͍ͨίϯϙʔωϯτΛฦؔ͢ wίϯϙʔωϯτʹؚ·ΕΔϩδοΫΛڞ༗ͨ͠Γɺ3FBDUͷ4UBUF1SPQT ΛॊೈʹѻͬͨΓͰ͖Δ w3FBDUͷ࣮Ͱසग़
طʹ3FBDUͰ։ൃͯ͠Δਓʹͱͬͯ ΊͪΌͪ͘ΌΑ͘͏ςΫχοΫͰ͢Ͷ
ͦΜͳ)P$ͷศརͳϥΠϒϥϦ͕ l3FDPNQPTFzͰ͢
3FDPNQPTFͱʁ w)P$Λͬͯɺ'VODUJPO$PNQPOFOUʹTUBUFϥΠϑαΠΫϧΛ࣋ͨͤΔࣄ͕Ͱ͖Δ wSFEVYSFEVYGPSNɾSPVUFSͳͲଞͷ)P$Λఏڙ͍ͯ͠ΔϥΠϒϥϦͱಉډՄೳ wෳͷ)P$ͷॏͶֻ͚ͷՄಡੑ্
3FDPNQPTFͷ։ൃऀʁ "OESFXࢯ
3FDPNQPTFͷਓؾʁ
)P$͕؆୯ʹॻ͚ΔͷͰɺ(FNDPPL Ͱॏๅ͍ͯͨ͠ϥΠϒϥϦ
ཁ3FDPNQPTFґଘ͠·͘Γ
3FBDUΤϯδχΞୡ Ѫ༻͍ͯ͠Δਓ͕͔ͳΓଟ͔ͬͨͱࢥ͍·͢
ͦΜͳதɾɾɾ
ࠓ݄ͷ3FBDU$POGͰͷ%BOࢯͷηογϣϯ 3FEVYɾDSFBUFSFBDUBQQͷ։ൃऀͷ%BOࢯ
͜Μʹͪɺ3FBDU)PPLTʂʂʂʂ
Γ͍ͨࣄ͕3FDPNQPTFʹࣅͯΔͳʔ ͱ͍͏ॴײͰͨ͠
ͳΜ͔ݏͳ͍͢Δͳʔ
Ұํ3FDPNQPTFͷϦϙδτϦͰɾɾɾ
3FDPNQPTFͷ։ൃΊΔΑʂ ࠓޙ3FBDU)PPLTͬͯͶʂ
͓ɺ͓͏
ͳͥ։ൃ͕ࢭ·Δ͔ɺ ͦͷཧ༝͕ͪ͜Β
None
ʮࢲ'BDFCPPL͔Βͷਃ͠ग़Λड͚ೖΕ·ͨ͠ʂ ࠷ߴʹͤͰ͢ʂ͜Εݱ࣮Ͱ͔͢ʁʯ ʮΑ͏ͦ͜ὑʯ
"OESFXࢯɺલʹ'#ʹδϣΠϯͯ͠Δɻস ͔͍ͬͤͦ͢͠͝͏ɻস
3FDPNQPTFͷ։ൃΛΊΔܦҢ w3FDPNQPTFͷ"OESFXࢯ͕'BDFCPPLʹδϣΠϯ wຊՈ3FBDUͰ3FDPNQPTFతͳػೳΛҾ͖ଓ͖։ൃ wˢ3FBDU)PPLT w໋໊ɾ༻ײඃͬͯΔ wSFDPNQPTFXJUI4UBUF w3FBDU)PPLTVTF4UBUF
ͦΓΌ։ൃࢭ·ΔͬͯͰ͢Ͷ
͞ΑͳΒɺ3FDPNQPTFɾɾɾ ͜Μʹͪɺ3FBDU)PPLT ܅ͱྑ͘ͳΔ
ҙ 3FBDUք۾Ͱ3FDPNQPTFͷ։ൃετοϓͷΠϯύΫτ͕ڧ͍ ҹͰ͕͢ɺ3FBDU)PPLT୯७ͳ3FDPNQPTFͷସ͑Ͱ ͋Γ·ͤΜɻ 3FBDU)PPLTͷ"1*Λ͑ɺ3FDPNQPTFతͳࣄͰ͖Δͱ͍ ͏ࣄͰ͢ɻ
ΞδΣϯμ wձࣾհ w3FBDU)PPLTͱ wSFDPNQPTFͷ։ൃ͕ऴΘΔ w3FBDU)PPLTͷ"1* w3FBDU)PPLT2" w·ͱΊ ͋͐͡Μͩ
ओͳ)PPLT"1*܈ wVTF4UBUFɾɾɾTUBUFͷఆ͕ٛͰ͖Δ"1* wVTF&⒎FDUɾɾɾϥΠϑαΠΫϧͬΆ͍ͷ࠶ݱͰ͖Δ"1* wVTF$POUFYUɾɾɾ3FBDU$POUFYUΛ͏"1* wVTF3FEVDFSɾɾɾεςʔτϑϧͳঢ়ଶཧΛ͢Δ"1* wVTF$BMMCBDLɾɾɾ࠶ϨϯμϦϯάͰؔͷ࠶ੜΛ͙"1* ύϑΥʔϚϯε wVTF.FNPɾɾɾ࠶ϨϯμϦϯάͰؔͷ࠶ධՁΛ͙"1*
ύϑΥʔϚϯε wVTF3FGɾɾɾ%0.ʹΞΫηεͰ͖ΔΑ͏ʹ͢Δ"1*
VTF4UBUF wVTF4UBUFͰʮݱࡏͷঢ়ଶʯͱʮঢ়ଶΛߋ৽͢ΔؔʯͷͭΛಘΔ͜ͱ͕ग़དྷΔ wVTF4UBUFͷҾʹJOJUJBM4UBUF ॳظ Λ͢ w͍উखSFDPNQPTFͷXJUI4UBUF ͱ·ΔͰಉ͡
VTF&⒎FDU wVTF&⒎FDUDPNQPOFOU%JE.PVOU DPNQPOFOU%JE6QEBUF DPNQPOFOU8JMM6ONPVOU ͕Έ߹Θͬͨ͞Πϝʔδ
VTF&⒎FDU wDPNQPOFOU%JE.PVOUΛ࠶ݱ͢Δʹɺ͜Μͳײ͡ wୈҾʹ͔ΒͷྻΛ͢
VTF&⒎FDU wJOQVUʹೖྗ͢Δͨͼʹίϯιʔϧϩάʹग़࣮͢ wୈҾʹࢹ͍ͨ͠ͷΛྻʹೖΕͯ͢
VTF$POUFYU w VTF$POUFYU3FBDU$POUFYU"1*ͷ $POTVNFSͷׂΛ͢Δ
VTF3FEVDFS wVTF3FEVDFSͰɺୈҾʹͲͷ࣌Ͳͷ༷ʹΛߋ৽͢Δ͔Λఆٛͨؔ͠ͱୈҾ ʹॳظεςʔτΛҾʹ͢ɻ wεςʔτϑϧͳϩδοΫΛ࠶ར༻͍ͨ͠ͱ͖ʹ͏ɻ SFEVDFSΛผϑΝΠϧʹهड़
VTF3FEVDFS
VTF.FNP w࠶ϨϯμϦϯάʹΑ͋͘Δɺແବͳॲཧ͕Βͳ͍Α͏ʹͳΔ wୈҾʹࢹ͍ͨ͠ͷΛྻʹೖΕͯ͢
VTF$BMMCBDL w࠶ϨϯμϦϯάʹΑ͋͘Δɺແବͳؔ࠶ੜΛ͠ͳ͍Α͏ʹͳΔ wৄ͘͠ʮ3FBDUΠϯϥΠϯؔʯͰݕࡧ
VTF3FG wSFGΛ͏ͨΊͷઃఆ͜Ε͚ͩ wࠓ·ͰͰҰ൪γϯϓϧʹ͑Δ͔͠Εͳ͍
)PPLTͰ࡞ͬͨ5PEPͷαϯϓϧ IUUQTHJUIVCDPNUGSDNIPPLTUSFFIPPLTPOMZ ϒϥϯνຖʹ)PPLTͷΈͩͬͨΓɺ )PPLT 3FVEYͰ͋ͬͨΓɺ )PPLT $POUFYUͩͬͨΓɺ ৭ʑͳαϯϓϧύλʔϯΛ࣮͠Α͏ͱࢥͬͯ·͢
ΞδΣϯμ wձࣾհ w3FBDU)PPLTͱ wSFDPNQPTFͷ։ൃ͕ऴΘΔ w3FBDU)PPLTͷ"1* w3FBDU)PPLT2" w·ͱΊ ͋͐͡Μͩ
2ࠓ͙͢ʹ)PPLTΛ࠾༻͖͢ʁ
"ݱࡏЋ൛ͳͷͰɺ 1SPEVDUJPOڥͰར༻Λආ͚ͨํ͕ྑ͍ɻ
2͍ͭ͑Δ༷ʹͳΔͷʁ
IUUQTSFBDUKTPSHCMPHSFBDUSPBENBQIUNM
2)PPLTͰ3FEVY͕ͳ͘ͳΔʁ
"3FEVY͕ٸʹແ͘ͳΔͱ͔ແ͍Ͱ͢ɻ ແͦ͘͏ͱࢥ͑ɺແͤ͘Δ͕)PPLT͚ͩͰͳ͘$POUFYU"1*ؔΘΓ·͢ɻ VTF$POUFYUͱVTF3FEVDFSΛ͑ɺΕͳ͍ࣄͳ͍͕ɺϧʔϧܾΊ͕େม ௐͯΒ͏ͱ͔Δ͕ɺݱঢ়৭Μͳҙݟ͕ඈͼަ͍ͬͯΔɻ ݱঢ়ฐࣾͰஅવ3FEVYΛ͍ଓ͚Δɻ )PPLTЋͰ͢͠
23FEVYͱ͔3PVUFSͱ͔ )P$Ͱఏڙ͞ΕͯΔϥΠϒϥϦͲ͏͏ʁ
"ී௨ʹ)P$Ͱ͑Δ͠ɺকདྷతʹ֤ϥΠϒϥϦͰରԠ͢Δ͔͠Εͳ͍ɻ ૣ͍͍ͨ͘ͳΒࣗͰ։ൃ͢Δ͔ɺ୭͔͕࡞ͬͨͷΛͬͨΒ͍͍ɻ
23FBDU)PPLTͷ࣮ΛͱΓ͋͑ͣ ݟ͍͕ͨࢀߟ͕͋Δ͔ʁ
wBXTPNFSFBDUIPPLT w3FBDU)PPLTͷҝʹ։ൃ͞ΕͨϥΠϒϥϦୡ͕ ·ͱΊΒΕ͍ͯΔ wlVTFSFEVYzzSFBDUVTFNJEEMFXBSFzͳͲ໊લ ͔Βͯ͑ͦ͠͏ͳϥΠϒϥϦୡ͕ू͍݁ͯ͠Δ wͪΌΜͱಈ࡞͢Δ͔֤ਓͰ͓͔֬ΊԼ͍͞ IUUQTHJUIVCDPNSFIPPLTBXFTPNFSFBDUIPPLT
ͪͳΈʹ
ެࣜʹ'"2͋Γ·͢ɻ Ћͳͷʹطʹஸೡʹ࡞ΒΕ͍ͯͯɺ'#ͷ)PPLTΛਖ਼ͬͯ͘͠ཉ͍͠ ͱ͍͏ؾ͕࣋ͪΘΓ·͢ɻ
ΞδΣϯμ wձࣾհ w3FBDU)PPLTͱ wSFDPNQPTFͷ։ൃ͕ऴΘΔ w3FBDU)PPLTͷ"1* w3FBDU)PPLT2" w·ͱΊ ͋͐͡Μͩ
·ͱΊ w3FBDU)PPLT'$ʹTUBUFϥΠϑαΠΫϧͳͲͷ෭࡞༻Λ࣋ͨ͢ࣄ͕Ͱ͖Δ"1*܈ w3FDPNQPTFͷ"OESFX͞Μ͕'BDFCPPLʹδϣΠϯͯ͠ɺຊՈ3FBDUͰϦϦʔεͨ͠ w༗໊ϥΠϒϥϦʹΑͬͯ)P$Ͱఏڙ͞Ε͍ͯΔؔͨͪɺ͍͔ͭΧελϜϑο ΫͰొ͢Δ༧ఆ wݱࡏЋ൛Ͱʮ͜Εͩʂʯͱ͍͏͍ํ͕ܾ·ͬͨͷ͕ͳ͍͠ɺഁյతมߋશ વݟࠐΊΔͷͰɺຊ൪ڥͰͷར༻ආ͚ͨ΄͏͕ྑ͍
͓·͚ ࡢͷࠒɺ೦ͷҝ3FBDUͷ ࠷৽όʔδϣϯΛௐΔͱɺ ఆ௨ΓͷʮWʯͰͨ͠ɻ
͓·͚ ࠓͷࠒɺ5XJUUFSΛ ݟ͍ͯΔͱɾɾɾ
͓·͚
͓·͚ W͕ϦϦʔε͞Εͯ·ͨ͠ɻ ͨͩ)PPLTೖͬͯͳͯ͘ɺ )PPLTϦϦʔεʮ͙͢ʹʯΒ͍͠Ͱ͢ɻ IUUQTSFBDUKTPSHCMPHSFBDUWIUNM
w 3FBDU)PPLTपΓͷ w Ξοϓσʔτָ͕͘͢͝͠ΈͰ͢Ͷʂ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠