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
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
Search
Recruit Technologies
October 01, 2020
Technology
1
1.4k
ここ数年間のタウンワークiOSアプリのエンジニアのチャレンジ
2020/9/21_iOSDC Japan 2020での、石井&元の講演資料になります
Recruit Technologies
October 01, 2020
Tweet
Share
More Decks by Recruit Technologies
See All by Recruit Technologies
障害はチャンスだ! 障害を前向きに捉える
rtechkouhou
1
570
Flutter移行の苦労と、乗り越えた先に得られたもの
rtechkouhou
3
10k
大規模環境をAWS Transit Gatewayで設計/移行する前に考える3つのポイントと移行への挑戦
rtechkouhou
1
1.8k
【61期 新人BootCamp】TOC入門
rtechkouhou
3
40k
【RTC新人研修 】 TPS
rtechkouhou
1
39k
Android Boot Camp 2020
rtechkouhou
0
40k
HTML/CSS
rtechkouhou
10
48k
TypeScript Bootcamp 2020
rtechkouhou
9
44k
JavaScript Bootcamp 2020
rtechkouhou
1
41k
Other Decks in Technology
See All in Technology
Databricksを活用してDELISH KITCHENのレシピレコメンドを開発した話
furu8
0
250
社内勉強会運営のコツ
senoo
6
1.1k
Databricks:『生成AI World Cup』のご案内
databricksjapan
2
150
NgRx Signal Store
rainerhahnekamp
0
120
Data and AI Governance: Existing Challenges and Emerging Trends
scotthsieh825
0
160
TransitGatewayの基礎
toru_kubota
0
230
テストプロセスで大事にしていること #jasstnano
makky_tyuyan
0
130
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
320
日本におけるデータエンジニアリングのこれまでとこれから
foursue
11
2.4k
小さな開発会社がWebサービスを作る理由
polidog
PRO
1
160
2024/4/26 コンピュータ歴史博物館解説告知
toshi_atsumi
0
200
元インフラエンジニアに成る / Human Resources to Human Relations
bobtani
3
810
Featured
See All Featured
What's new in Ruby 2.0
geeforr
337
31k
Creatively Recalculating Your Daily Design Routine
revolveconf
209
11k
Why You Should Never Use an ORM
jnunemaker
PRO
50
8.6k
BBQ
matthewcrist
80
8.7k
A Modern Web Designer's Workflow
chriscoyier
688
190k
Designing on Purpose - Digital PM Summit 2013
jponch
110
6.4k
Writing Fast Ruby
sferik
620
60k
Build The Right Thing And Hit Your Dates
maggiecrowley
23
2k
The Pragmatic Product Professional
lauravandoore
24
5.8k
A better future with KSS
kneath
231
16k
Happy Clients
brianwarren
91
6.4k
Principles of Awesome APIs and How to Build Them.
keavy
120
16k
Transcript
ੴҪɹ५ ݩɹږप ؒ͜͜ͷ λϯϫʔΫJ04ΞϓϦͷΤϯδχΞͷνϟϨϯδ ʙݱͰͷ੍ͱͷઓ͍ʙ
հ ݩɹږप ΞϓϦ։ൃΧϨίϨ ࠷ۙ4XJGU6*ͱ+FUQBDL$PNQPTF͕େ͖ ͱΓ͋͑ͣʹͳΒͳ͍Α͏ʹؤுͬͯ·͢ ੴҪɹ५ ৽ଔೖࣾɺJ04ྺ ࠷ۙϨΨγʔγεςϜͷצॴ͕͔ͭΊ͖ͯͨʢͣʣ ೖࣾ࣌ͱൺͯମॏ͕LH૿͑ͨ ൃදऀ
Υϯώϣϯδϡ ΠγΠɹɹδϡϯ
࣍ ΤϯδχΞ͔ΒݟͨλϯϫʔΫΞϓϦͷಛ େنαʔϏεΏ͑ͷ։ൃݱͱͯ͠ͷ੍ νϟϨϯδʔ σόοάϞʔυ &&ςετπʔϧϨϯτήϯ Ϋϥογϡͷݮ
4XJGUԽ ίϯύΠϧͷվળ
ΤϯδχΞ͔Βݟͨ λϯϫʔΫΞϓϦͷಛ
ಛᶃɹ େنαʔϏεʢλϯϫʔΫʣ ͷΫϥΠΞϯτʢJ04ΞϓϦʣ
ͨ͏ΜΘʔ͘ʁ ʮϦϘϯϞσϧʯ ٻ ৬ ऀ ا ۀ ٻ৬ऀͱاۀͱΛϚονϯά͢ΔɺେنͳαʔϏε
େنαʔϏε ˞Լమͷ࿏ઢਤͰ͋Γ·ͤΜ https://speakerdeck.com/rtechkouhou/taunwaku90mo-yuan-gao-falsejie-zai-wozhi-eruregasibatutipahuomansutiyuningu-number-devsumi-number-devisumid
J04ΞϓϦͷείʔϓ https://speakerdeck.com/rtechkouhou/taunwaku90mo-yuan-gao-falsejie-zai-wozhi-eruregasibatutipahuomansutiyuningu-number-devsumi-number-devisumid ͕͜͜ΫϥΠΞϯτͷ είʔϓ ͜ͷJ04ͷͰ͢
ಛᶄɹ ΞϓϦγϯϓϧʁ
ΞϓϦͷ༷γϯϓϧ ݕࡧ Ұཡ ৄࡉ Ԡื
Ͱͳ͍ ը໘ɿɹɹɹɹɹɹɹɹը໘ શίʔυߦɿɹɹɹίʔυͷΈສߦ $PSF%BUBςʔϒϧɿɹɹɹݸ खಈςετ߲ɿɹ ߲ 6OJU5FTUʢ9$5FTUʣɿɹ έʔε
ಛᶅɹ ݹ͔͘Βͷ׆ൃͳ։ൃ
Γଓ͚͍ͯΔ ॳΊͯϦϦʔε͔ͯ͠Β ճܧଓతʹʢिճසʣҊ݅ΛΓࠐΜͰϦϦʔε ˞݄ج४
େنαʔϏεΏ͑ͷ ։ൃݱͱͯ͠ͷ੍
લఏͱͳΔ੍͕ೋͭ ̍ɽਐߦதͷҊ݅։ൃʹ2%ӨڹΛ༩͑ͨ͘ͳ͍ ɹɹɾෳνʔϜͰฒߦ։ൃ ɹɹɾ֤νʔϜ͕ͦΕͧΕͷ ɹɹɹϏδωε,1*ʹᬏਐ ̎ɽ։ൃޮԽେࣄ͕ͩɺ֎෦࣭͕࠷ॏཁ ɹɹɾٻ৬ऀاۀؒͷϚονϯά ɹɹɹͷͨΊͷ༷ΛकΔ ɹɹɾJ04ͱͯ͠ͷಈ࡞ج४ Ҋ͕݅
ৗ࣌ฒߦ ࢀߟɿେنϨΨγʔڥʹཱ͔ͪ͏༗ػతͳ։ൃϑΥʔϝʔγϣϯ
ϨΨγʔͳߏ͕ҡ࣋͞Εͯདྷͨ ਐߦதͷҊ݅։ൃͷ2%ʹӨڹϦεΫ͕͋ΔͨΊɺ ϦϑΝΫλϦϯάͰ͖ͳ͍ ݁Ռɺमਖ਼࣌ͷӨڹൣғ͕໌֬ʹΘ͔Βͳ͍ ɹɹɹ6OJU5FTUͰ୲อͮ͠Β͍ ܰ͘ ߦΛ͑Δ7$ͨͪ ݸΛ͑Δ$PSF%BUB&OUJUJFT ຆͲ͕.7ʢ1ʣ 0CKD4XJGU0CKDͱͦͷٯύλʔϯͷґଘؔ
·ͩಈ͘%FQSFDBUFE"1*ͳΒී௨ʹݱ 0CK$3VOUJNFͰحతʹಈ͍͍ͯΔܕͷϛεϚονॲཧ ΧΦεͷ··Ҋ݅։ൃଓ͘
݁Ռతʹςετ͕λΠϔϯ ཧతςετϐϥϛου ݱ࣮͜ͷΑ͏ͳΠϝʔδ *5 *5 && 65 *5 && ໌֬ͳςετείʔϓ
࠷ݶͷखಈςετ ΄ͱΜͲͷػೳΛखಈςετͰ୲อ͢Δ͔͠ͳ͍ 65 https://www.youtube.com/watch?v=VJi2vmaQe6w ᐆດͳςετείʔϓ *5ͱ&&ͷखಈςετ
࠷ѱͷεύΠϥϧ ςετʹ͕ୣΘΕΔ ։ൃ͕ѹഭ͞ΕΔ ϦϑΝΫλϦϯάઌૹΓ ϨΨγʔͷ··Ͱઃܭɾ࣮
੍ΛݟۃΊͯɺ νϟϨϯδͩʂ
͍͑ͨ͜ͱ վળͰେࣄͳ͜ͱ Ұൠతʹྑ͍ͱ͞ΕΔํ๏ΛҋӢʹऔΓೖΕΔ ͕ࣗͨͪ໘͍ͯ͠Δ੍Λਖ਼͘͠ཧղͯ͠ ࣗͨͪݻ༗ͷ՝ʹରͯ͠ޮՌతͳղܾࡦΛͱΔ ݁Ռɺখ͞ͳྗɾظؒͰ࠷େͷ݁Ռ͕ಘΒΕΔ
͜͜ͷ νϟϨϯδͷ͓ औΓΈͷ۩ମతͳ༰͕ؾʹͳΔํɺ Ξϯέʔτʹ࣭͝Λ͓ئ͍͠·͢
ᶃσόοάϞʔυͷ։ൃ
σόοάϞʔυͱ ήʔϜͰྫ͑Δͱࣗ༝ʹ-WΛʹͨ͠Γɺ Ӆ͞ΕͨΞΠςϜΛॴ࣋Ͱ͖ΔΑ͏ʹͨ͠Γ͢ΔӅ͞Εͨػೳͷ͜ͱ
ߟ͑ํ ςετ͕ͲΜͲΜΛѹഭ͍ͯ͠Δ ˣ ΄ͱΜͲखಈςετ ˣ ͱ͍͑ɺߏతʹࣗಈςετՄೳͳੈքߦ͘ʹ͍ಓͷΓ ˣ ˣ ˣ खಈςετޮԽͳΒɺɾظͰޮՌΛಘΒΕΔʂʂ
σϞ ΦϑγϣΞ։ൃ͚ͷࣗಈ༁
ଞʹͨ͘͞ΜͷػೳͰ खಈςετޮԽ ɾΞϓϦͷ͚ͩΛِʢຊମͦͷ··ʣ ɾखಈςετͷͨΊͷࣄલ݅ΛࣗಈͰੜ ɾը໘্Ͱ֬ೝͰ͖ͳ͍෦σʔλΛΞϓϦͷ7JFXʹදࣔ ِ σʔλੜ ϩάίϯιʔϧ "#ςετૢ࡞
खಈςετͷݮ *5 *5 && 65 σόοάϞʔυͰ ׂఔͷݮ खಈςετྖҬ ςετίʔυྖҬ खಈςετྖҬ
σόοάϞʔυେώοτʂ ࣮͕ೝΊΒΕɺԣల։͞Εͨ ɾ·ͣɺλϯϫʔΫ"OESPJE ɾ࣍ʹɺϦΫϧʔτδϣϒζͷ֤ϓϩμΫτ ςετఔͰσόοάϞʔυඞਢԽ ෦ίϯτϦϏϡʔλʔ૿Ճ ɾҊ݅։ൃ࣌ʹɺඞཁͳΒσόοάϞʔυΛ࣮ܰ͘͢Δ׳श λϯϫʔΫͷσόοάϞʔυͲΜͲΜਐԽதʂʂ
ᶄ&&ςετπʔϧͷ։ൃ dϨϯτήϯd
ͳΜͱ͔*5ͷίετݮΒ͚ͨ͠Ͳɾɾɾ *5 *5 && &&ςετ෦ߏΛม͑ͣͱࣗಈԽ͕Մೳͳͣ 65 ϨΨγʔߏͰΧόϨοδݶք ͦΕͰ͢Ͱʹ࣌έʔε σόοάϞʔυͰ ׂఔͷݮΒͨ͠ײ֮
खಈςετྖҬ ςετίʔυྖҬ खಈςετྖҬ ͜͜ΛࣗಈԽ͠Α͏ʂ
͔͠͠طଘͷ&&ςετπʔϧ՝͕͋ͬͨ ɾεΫϦϓτૢ࡞ͷޭՄ൱ͱɺ ɹεΫγϣಈըܗࣜͷΞτϓοτͰݕূΛߦ͏ͨΊɺ ɹݟͨҎ্ͷݕূෆՄೳ ɹɹྫʣ7JFXͷ֊6*ʹग़ͳ͍ଐੑͳͲ ɾ6*෦͝ͱͷݕূͷͨΊʹૢ࡞εΫϦϓτΛՃ͢Δ͔ɺ ɹBTTFSUจΛॻ͔ͳ͍ͱߦ͚ͳ͍ ͳ͚Ε࡞Εྑ͍ ৽͍͠Έͷ&&πʔϧʹνϟϨϯδʂ طଘ&&ςετࣗಈԽπʔϧͷ՝
ࣾ&&πʔϧʮϨϯτήϯʯΛ։ൃʂ ɾJ04ͷը໘7JFX$POUSPMMFS୯Ґ ɾ7JFX$POUSPMMFSͷ7JFX֊Խ͞Ε͍ͯΔ ɾը໘͕දࣔʢඳըʣ͞ΕͨΒ֊ʹԊͬͯݕূͰ͖Δͣ ։ൃͷ1PJOU 7JFX֊Λు͖ग़͠ɺࠩΛൺֱ͢Δ
ϨϯτήϯͷγεςϜߏ Ϩϯτήϯ4%, Ϩϯτήϯ"1* Ϩϯτήϯ8FC5PPM 7JFX֊ͷ +40/ ࣗಈૢ࡞
σϞ "QQJVNͰࣗಈૢ࡞
ཪͰ7JFX֊Λ%VNQ 7JFX֊Λͯ͢%VNQ
%VNQσʔλ+40/ʹม
+40/ʹมͨ͠σʔλΛαʔόʹੵ
+40/σʔλͳͷͰ ؆୯ʹࠩൺֱ͕Ͱ͖Δ جຊతʹ%VNQͨ͠HJUIBTI୯ҐͰ ಉ͡ૢ࡞εΫϦϓτͰൺֱΛߦ͏
ੵͨ͠ը໘σʔλΛ8FCͰ࠶ݱͰ͖Δ $BOWBTʹJ04ը໘σʔλΛඳը͢ΔϞδϡʔϧ։ൃ ը૾σʔλ#BTFԽͯ͋͠ΔͷͰ8FCͰඳըՄೳ
σϞ 8FC5PPMͰࠩͷ֬ೝ
Ϩϯτήϯ׆༻࣮ ఆظ࣮ࢪͷςετ ɾϦϦʔεલͷॏཁػೳͷਖ਼ৗܥςετ ϦϑΝΫλϦϯάͷςετ ɾ4XJGUԽͷςετ ɾґଘϥΠϒϥϦมߋޙͷςετ ϦϑΝΫλϦϯάܥͷςετͰ͜Ε͔Β׆༻໘ΛΊͯߦ͘༧ఆ ࠓ··ͰෆՄೳͩͬͨΞϓϦશମʹ Өڹ͢ΔΑ͏ͳվमɺ Մೳʹͳͬͨʂʂʂ
ᶅΫϥογϡͷݮ
࣭Λߟ͑Δͱ͖ʹɺ ΫϥογϡϨʔτॏཁ͕ͩʜ
Ͱ Ϋϥογϡ͕ഒҎ্ʹ
Ϋϥογϡ૿ՃͷݪҼʁ λϯϫʔΫΞϓϦͷ༷ଆ໘ λϯϫʔΫ࣭ج४ʹఆٛΞϦ ͜Ε͕ΞϓϦͷΫϥογϡ λϯϫʔΫ࣭ج४ʹఆٛφγ Ϋϥογϡʹؔͯ͠༏ઌ͕͔ͬͨ͜ͱ ੲ͔ΒλϯϫʔΫΞϓϦͰ࣭ج४͕ʮػೳʯͷΈͩͬͨ ͦͯ͠ΤϯδχΞओಋͰ ୲อ͢Δ͖ྖҬ "QQ$PSF2VBMJUZ(PPHMF
Ҿ༻IUUQTEFWFMPQFSBOESPJEDPNEPDTRVBMJUZHVJEFMJOFTDPSFBQQRVBMJUZ
্࣭ͷνϟϨϯδ ɾΫϥογϡϞχλϦϯάΛʑߦ͏ͨΊ$SBTIMZUJDTಋೖ ʢಋೖ͕͓ͦ͗ͨ͢ཧ༝ผͷࣾπʔϧʹґଘ͍ͯͨͨ͠Ίʣ ɾʑΫϥογϡʔΛѲ͢Δ ɾΫϥογϡʔ͝ͱͷൃੜ֬ɺ04ɺؔ࿈͢ΔॲཧΛੳ ɾۓٸॱΛܾΊͯJTTVFԽ͠ॗʑରԠ ɾରԠͨ͠όά࣍ͷϦϦʔεʹࠞͥࠐΉ ৗతʹΫϥογϡΛϞχλϦϯάɾվળ͢ΔΑ͏ ։ൃϓϩηεʹΈࠐΜͩ
େࣄͳͷখ͍͞ΞΫγϣϯΛॗʑΔ͜ͱ 1%$"αΠΫϧతͳ͜ͱͰ͢
ΫϥογϡϑϦʔϢʔβʔ͕ Ҏ্ʹճ෮ ͦͷޙɺλϯϫʔΫJ04$'6ͷΛҡ͍࣋ͯ͠·͢
ᶆ4XJGUԽ
0CKFDUJWF$ΑΓ4XJGU
ૣ͍λΠϛϯάͰ4XJGUΛಋೖ͚ͨ͠Ͳ λϯϫʔΫͰ݄͔Βঃʑʹ4XJGUΛಋೖ ํɿɹɾ৽نΫϥεΛ4XJGUͰ࣮ ɹɹɹɹɾہॴతͳ4XJGUԽճ࣮ࢪ ޙ ੍͕͋ΔͷͰ͔Β΄΅ಉ͡
ڞଘظ͕ؒ͘ͳͬͯ৭ʑ͕ൃੜ͍ͯͨ͠
0CK$ڞଘΛఆͨ͠Ϋϥεઃܭɾ࣮ίετ $MBTTͱ4USVDUઃܭ࣌ʹ0CK$ଆ͔Βͷར༻Λલఏʹ͢Δඞཁ͕͋Δ ઃܭɾ࣮ఔͷ࣌ؒͷ͏͕ͪ࣌ؒڞଘؔ࿈λεΫ
ΫϥογϡͷݪҼͷ΄ͱΜͲ 0CK$4XJGUڞଘՕॴ ίϯύΠϥʹΑΔOJMνΣοΫʹґଘͰ͖ͳ͍ͨΊϥϯλΠϜΤϥʔΛ ఆ࣮͕ͨ͠ඞཁʢOVMMBCMFطଘӨڹ͋ΓͷͨΊ֎ʣ ࣾݶ ࣌ͷ5PQΫϥογϡ͕ͯ͢ڞଘՕॴ
੍ΛݟۃΊͯɺ νϟϨϯδͩʂ ˞ಉ࣌ਐߦதෳҊ݅։ൃʹӨڹ͍͚ͯ͠ͳ͍
λϯϫʔΫྲྀ 4XJGUԽͷਐΊํ
Γͷ0CK$pMFΛͯ͢ϦετԽ pMFɺສߦʢશମͷׂ̑ʣ ΧςΰϦԽ ߦͰنײΛѲ ·ͣશରΛϦετԽ
։ൃঢ়گΛͯ͢Ѳͯ͠ύζϧܭը Ҋ݅։ൃͱ$POqJDUى͜͞ͳ͍ظؒɺ ߦ͔ΒͷنײͰ4XJGUԽରpMFΛબఆɻ ΄ͱΜͲ੍͕ݶ࣌ؒ 4XJGUԽͱฒߦͰෳҊ͕͍݅ͬͯΔ੍ʹϑΥʔΧε
՝ΛΦϑγϣΞ։ൃͰղܾ ͍σϦόϦʔ੍ͱΫΦϦςΟʔ୲อͷ͠͞Λ ɹຊΤϯδχΞʢ༗ࣝऀʣͱ ɹΦϑγϣΞ։ൃʢεέʔϥϒϧʣɹͰղܾ 0CKFDUJWF$4XJGUͷ࡞ۀ ର'JMFબఆ͓Αͼ ӨڹൣғѲ ίʔυϨϏϡʔ 65͓Αͼ*5 &&
ຊΤϯδχΞʢ༗ࣝऀʣ ΦϑγϣΞ։ൃʢεέʔϥϒϧʣ ࢀߟɿେنϨΨγʔڥʹཱ͔ͪ͏༗ػతͳ։ൃϑΥʔϝʔγϣϯ
΄΅͕̍ϚʔδαΠΫϧ બఆ࣌ʹӨڹൣғ͔ͬ͠ΓνΣοΫ͠ ͔ͯΒΦϑγϣΞ։ൃճ͢ 4XJGUԽ͔ΒίʔυϨϏϡʔ ΄΅Ͱྃ બఆ͔ͯ͠ΒཧΧϯόϯͰ
ຖॗʑ͍ͬͯ͘ ظ݄ؒd݄ʢʣ ਐͷ֬ೝ HJUIVCMJOHVJTUͰ͙͢ग़ͤΔ
ܭը௨ΓʹऴΘ͍ͬͯͨ ΓͷߏpMF pMFɺສߦ͕ظؒͰྃ ݄ྃ
ᶇϏϧυ࣌ؒͷվળ ɹ࠷ۙͬͯ·͢ʂ
Ϗϧυ͕࣌ؒ՝ େ͖͍ϓϩδΣΫτΏ͑ͷϏϧυ࣌ؒਂࠁͳ εΫϦϓτΛΈࠐΜͰϏϧυλΠϜΛܭଌ Ϝμʂʂ ։ൃऀਓ͋ͨΓʜ ɹϏϧυճճ݄ ɹϏϧυਓ݄ Ϗϧυ࣌ؒඵճ
ҰൠతͳղܾࡦͰɹޮՌແ͠ ɹɹɹɹɹɹɹɹɹɹ͙͢ޮՌΛಘΒΕͳ͍ ޮՌͳ͠ʜܕਪ࣌ؒͷվળɺϏϧυઃఆͷมߋͳͲ ͙͢ޮՌΛಘΒΕͳ͍ʜ'SBNFXPSLͷΓग़͠ͳͲɻӨڹ͕େ͖͕͔͔࣌ؒ͘ΔͨΊ ͦͦҰൠతͳঢ়ଶͰͳ͍ͨΊ λϯϫʔΫಠಛͳ͕ผͷͱ͜ΖͰ͋ͬͨ
ࠩϏϧυ͕શવޮ͍͍ͯͳ͍ʜ 3TXJGU͕΄΅શͯͷ7JFX7JFX$POUSPMMFSΛ ࢀর͍ͯͨ͜͠ͱ͕ݪҼͰɺ ͱͱෳࡶͳґଘ͕ؔ͞ΒʹෳࡶʹͳΓɺ ࠩϏϧυ͕΄ͱΜͲػೳ͠ͳ͔ͬͨ 3TXJGUΛআ٫ͯ͠ɺ ࠩϏϧυ͕ػೳ͢ΔΑ͏ʹͳͬͨɻ ݁ՌɺϏϧυ࣌ؒΛׂఔݮΒͨ͠
։ൃڥͷվળ ίΞҎ্ͷϚγϯʹ౷Ұ͠ɺ Ϗϧυ࣌ؒΛʙׂݮΒͨ͠ ͜ͷϓϩμΫτʹదͨ͠ϚγϯεϖοΫͷج४͕ແ͔ͬͨͨΊɺ εϖοΫͳϚγϯ͕ଟ͘ΘΕ͍ͯͨɻ ֤εϖοΫͷϚγϯͰϏϧυ࣌ؒΛܭଌɻඞਢϚγϯεϖοΫΛ͖ͭͱΊͨ
Ҿ͖ଓ͖৭ʑ͍ͬͯ·͢ʂ
Ҋࣄ߲
औΓΈͷ۩ମతͳ༰͕ؾʹͳΔํɺ ͪ͜Βʹ࣭͝Λ͓ئ͍͠·͢
None