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
20230227-engineer-type-talk.pdf
Search
Naoya Ito
November 16, 2023
Programming
82
37k
20230227-engineer-type-talk.pdf
Naoya Ito
November 16, 2023
Tweet
Share
More Decks by Naoya Ito
See All by Naoya Ito
Functional TypeScript
naoya
11
5.1k
TypeScript 関数型スタイルでバックエンド開発のリアル
naoya
58
26k
シェルの履歴とイクンリメンタル検索を使う
naoya
7
2.9k
関数型プログラミングと型システムのメンタルモデル
naoya
57
69k
TypeScript による GraphQL バックエンド開発
naoya
27
27k
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
naoya
66
23k
「問題から目を背けず取り組む」 一休の開発チームが6年間で学んだこと
naoya
142
57k
一休の現在と、ここまでの道のり
naoya
89
40k
技術的負債と向き合う
naoya
251
76k
Other Decks in Programming
See All in Programming
型付きで行うVSCode拡張機能開発 / VSCode Meetup #31
mazrean
0
240
What is TDD?
urakawa_jinsei
1
220
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
10
1.5k
ポケモンで考えるコミュニケーション / Communication Lessons from Pokémon
mackey0225
4
170
データマイグレーションの成功戦略~サービスリニューアルで失敗しないための実践ガイド~
tkzwtks
8
720
もう実家に手頃な情シス娘は不要!Bedrockでもう一人の娘を作る
komakichi
0
110
ROS 2のZenoh対応とZenohのROS 2対応
takasehideki
2
310
Modern Functional Fluent CFML REST by Luis Majano
ortus24
0
140
"Swarming" をコンセプトに掲げるアジャイルチームのベストプラクティス
boykush
2
250
Integrating AI in Your Enterprise Java Applications
ivargrimstad
0
230
ACES Meet におけるリリース作業改善の取り組み
fukucheee
0
130
WEBアプリケーションにおけるAWS Lambdaを用いた大規模な非同期処理の実践
delhi09
PRO
7
4.3k
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1365
200k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
664
120k
A Philosophy of Restraint
colly
203
16k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
7
590
What the flash - Photography Introduction
edds
67
11k
Typedesign – Prime Four
hannesfritz
39
2.3k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The World Runs on Bad Software
bkeepers
PRO
65
11k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
228
52k
Music & Morning Musume
bryan
46
6.1k
Making the Leap to Tech Lead
cromwellryan
131
8.9k
What's new in Ruby 2.0
geeforr
341
31k
Transcript
͘׆༂Ͱ͖ΔΤϯδχΞʹͳΔͨΊʹʁ ٕज़ऀͱͯ͠େʹ͍ͨ͜͠ͱ גࣜձࣾ Ұٳ ҏ౻
ҏ౻ • גࣜձࣾҰٳ ࣥߦһ $50 ݄ʙ • ۙ͘
8FC։ൃΛத৺ʹ͖ͬͯ·ͨ͠ – Ϛωδϝϯτɺ։ൃͱͲ – ࣄͰ 5ZQF4DSJQU όοΫΤϯυ झຯͰ )BTLFMMΛΑ͘ॻ͖·͢
2ʮ͘׆༂Ͱ͖ΔΤϯδχΞʹͳΔͨΊʹ ʯ • ສਓʹޮ͘ॲํᝦɺΘ͔Γ·ͤΜɻ͝ΊΜͳ͍͞ • ʮ͜͏͢Ε͍͍ʯΘ͔Βͳ͍ • ࣗͷաڈͷࣦഊɺ͔ͦ͜Βͷলͷڞ༗Ͱ͖ΔͷͰɺͦ͏͍͏ΤϐιʔυΛ͠·͢
ΤϐιʔυҰཡ • FQରॲྍ๏͔ΓͰɺٕज़త͕ͪͬͱղܾ͠ͳ͔ͬͨ • FQͪΌΜͱֶ΅͏ͱࢥͬͨΒখதֶੜͷษڧ͔ΒΓ͕͠ඞཁͩͬͨ • FQΘ͔ͬͨɺͱࢥ͕࣮ͬͨફͯ͠ΈͨΒશવͰ͖ͳ͔ͬͨ • FQաڈͷܦݧΛͱʹ࡞ͬͨΒɺ͍ͮΒ͍ϓϩμΫτʹͳͬͯ͠·ͬͨ •
FQϚωδϝϯτʹϑΥʔΧεͨ݁͠Ռɺେ͖ͳ՝͕શ͘ղফͰ͖͍ͯͳ͔ͬͨ • FQۤखྖҬΛਓʹ͍ͤͯͨΒɺࢧԉ͕ޙखʹճͬͯ͠·ͬͨ
FQେྔͷτϥϑΟοΫΛࡹ͔ͶͳΒͳ͍ • ͝Ζɺ࣌୲͍ͯͨ͠γεςϜ͕աෛՙʹͳΓαʔόʔμϯ͕සൃ • ·ͩϏοτͰɺΫϥυαʔϏεͰͳ͍࣌ • ৽ଔ͔Β͑ͯ͘Β͍Ͱͷग़དྷࣄ
ରॲྍ๏Λ܁Γฦͨ͠ • ҋӢʹ͍σΟεΫʹͯ͠ΈͨΓʜ • )551αʔόʔσʔλϕʔεͷઃఆΛνϡʔχϯάͯ͠ΈͨΓʜ • αʔόʔΛ૿ઃͯ͠ΈͨΓʜ
ঢ়گશ͘ྑ͘ͳΒͳ͍ • ͕ͯ͢ରྍ๏ • ͨ·ͨ·ͦͷ࣌ى͖͍ͯΔݱʹɺྍ๏͕߹͍ͬͯΕվળ͢Δ͕ʜ ʮ͜͏͢Εɺ͜͏ͳΔʯͱ͍͏ύλʔϯ͚ͩͰ͕ղܾͰ͖ͳ͍ ʜബʑΘ͔͍͕ͬͯͨͦͷ͕࣌དྷͯ͠·ͬͨ
ͨ·ͨ·खʹऔͬͨҰͷຊ
-JOVYΧʔωϧͷιʔείʔυ$16ΞʔΩςΫνϟͷຊΛಡΈړΔ
None
None
جૅ͕ࣝΓ͍ͯͳ͔ͬͨ • ෛՙରࡦʹɺϋʔυΣΞ04ͰԿ͕ى͖͍ͯΔ͔ΛѲ͢Δ͜ͱ͕ॏཁ • ʮղܾࡦʯͰͳ͘ʮͷݟۃΊํʯ • ࣌ͷࣗʹΛݟۃΊΔͨΊͷجૅ͕ࣝෆ͍ͯͨ͠ – ϩʔυΞϕϨʔδɺ$16༻ɺϝϞϦར༻ঢ়گɻશͯงғؾͰଊ͍͑ͯͨ –
Χʔωϧ෦ͰԿʹج͍ͮͯɺͲ͏ܭଌ͞Ε͍ͯΔ͔ɻࣈԿ͕ى͖͍ͯΔ͜ͱΛ͍ࣔͯ͠Δ͔ ʮ͋͋͢Ε͜͏ಈ͘ʯΛ֮͑Δ͚ͩͰղܾͰ͖ͳ͍ྖҬ͕͋Δ͜ͱΛ௧ײ
FQجૅେࣄͩͳɺͱࢥͬͯษڧͯ͠Έͨͷͷʜ • ίϯϐϡʔλαΠΤϯεͷجૅࣝΛֶश͠Α͏ͱࢥͬͨ – $4ઐ߈Ͱͳ͔ͬͨ ͱ͍͏͔େֶ༡ͼโ͚͍ͯͨͷͰʜ • ΞϧΰϦζϜͱσʔλߏɺใݕࡧɺਪનٕज़ͳͲ
ֶΘ͔Βͳ͍
͕ࣜग़ͯ͘Δͱख͕ࢭ·ΔɻֶΛΓ͢ • େֶͷઢܗͷษڧΛ͢Δ ˠશવΘ͔Βͳ͍ ʮ΄΅Ε͍ͯΔͳʜʯ • ߴߍֶʹḪΔ ˠ डݧษڧͰࢄʑͬͨ͠ɺΘ͔Δͣʜ ͑ɺΘ͔Βͳ͍
• தֶੜͷֶ·ͰḪΔ ˠ Θ͔ͬͨͱݴ͑ͳ͍ ͦͦɺࣗதֶɾߴߍɾେֶͱͰֶΛʮΘ͔ͬͯʯ͍ͨΜͩΖ͏͔ʜ ҼղɺϕΫτϧɺඍੵɺݻ༗ʜܭࢉͰ͖͍͕ͯͨʜ
ʮΕͨʯͰͳ͘ʮΘ͔͍ͬͯͳ͔ͬͨʯ ͕ࣗԿΛΘ͔Βͳ͍͔ɺͱ͍͏͜ͱ͔ΒΛഎ͚͍ͯͨ͜ͱ͕Θ͔ͬͨ ͭΒ͍
Ͱɺ৺ΛંΔΑ͏ͳ͜ͱͰͳ͍ • ʰ͕ࣗࢥ͍ͬͯͨ΄Ͳ಄͕Α͘ͳ͔ͬͨʱ – IUUQTCMPHDPNFOUSZQ – ΊͪΌͪ͘Όྑ͍ΤοηΠɻԿಡΈฦ͍ͯ͠Δ l͏·͘Δֶੜͦ͏͍͏ࠔʹͿ͔ͭͬͨͱ͖ɺࣗͷྗෆͱഅࣛ͞Ճݮʹ໓ೖΔ ؾ࣋ͪͱಆ͍ɺࢁͷ;ͱͰখ͞ͳาΈΛ࢝Ί·͢ɻ൴ΒɺϓϥΠυʹই͕ͭ͘͜ͱ ɺࢁ͔Βͷܠ৭ΛோΊΔͨΊͰ͋ΕऔΔʹΒͳ͍ͱ͍͏͜ͱΛ͍ͬͯΔͷͰ
͢ɻz
͜ͷΤϐιʔυʹ͏গ͠ଓ͖͕͋Δ • ֶݏ͍Λࠀ͠ɺ.*5ͷڭՊॻʹͳͬͨΞϧΰϦζϜͷຊͳͲͨ͘͞ΜಡΜͩ • ܭࢉྔͷഽײ͕֮ʹ͖ͭɺେنใݕࡧγεςϜΛߏͰ͖ΔΑ͏ʹͳͬͨ • ΞϧΰϦζϜͷֶతੑ࣭͍͘Β͔Θ͔ΔΑ͏ʹͳͬͨ • ࣗ৴͕͍ͭͯ͘Δʜ
None
͋Δͱ͖ɺڝٕϓϩάϥϛϯάʹखΛग़ͯ͠ΈΔ • ΞϧΰϦζϜ৭ʑ͔ͬͨΒ͍͚ΔͰ͠ΐ͏ʂ • ݁ՌɺҰղ͚·ͤΜͰͨ͠
ʮࣝʯ͕͋Ε͕ղ͚Δͱ͍͏ࢥ͍ࠐΈ • هԱ͞·͟·ͳଞͷهԱମݧͱͷ૬ޓ࡞༻ͰʮࣝʯʹͳΔ • ϓϩάϥϛϯάɺ࣮ʮମԽʯ͠ͳ͍ͱॻ͚ΔΑ͏ʹͳΒͳ͍
FQεϚʔτϑΥϯͷ͕࣌དྷ͔ͨΞϓϦ࡞ͬͨ͜ͱ͕ͳ͍ • ʹͳΔͱ J1IPOF "OESPJE͕ٸʹγΣΞΛ৳࢝͠ΊΔ • νʔϜͰεϚʔτϑΥϯ͚ͷΞϓϦΛ࡞Δ͜ͱʹͳͬͨ • 6*Ͳ͏͠Α͏ʜ 8FC։ൃͷܦݧͦͦ͜͜ੵΜͩࢲʮಉ͡εΫϦʔϯͷΠϯλϑΣʔεͩ
͔Βɺ8FCͷܦݧ͕׆͔ͤΔͰ͠ΐ͏ʯ – ܦݧͷ͋ΔਓͳΒΘ͔Δ௨Γɺ͜Ε ͱͯ ྑ͘ͳ͍ํͰ͢
݁Ռɺ͍ͮΒ͍ 6*͕Ͱ͖ͯ͠·ͬͨ • ޙ J04ΞϓϦΛࣗͷखͰ࡞ͬͯΈͯɺϛεδϟοδͩͬͨͷ͕Α͘Θ͔ͬͨ – J04ʹ J04ͷ 6*ΨΠυϥΠϯ͕͋ΓɺͦͷΨΠυϥΠϯʹԊͬͯ࡞Δͷकഁͷक –
6*,JUͲΜͳ 6*ͳΒࣗવʹ࣮ݱͰ͖ͯɺͲ͏͍͏͜ͱແཧ͠ͳ͍ͱͰ͖ͳ͍ͷ͔ ຊΘ͔͍ͬͯͳ͍͜ͱͳͷʹɺྨࣅͷܦݧΛͯΊͯ ࣗ͋ΔఔΘ͔͍ͬͯΔͱࡨ֮ͯ͠͠·͍ͬͯͨ
FQ৭ʑͳܦݧΛܦͯ$50ि ʜҰٳͷ $50ʹ • ͋Δఔख़ͨ͠اۀʹ $50ͱͯ͠ೖࣾ • Ϛωδϝϯτͷ͕ʹ͖͍ͭ͢ – ٕज़తͳ՝ͩͱօࢥ͍ͬͯΔ͕ɺ࣮ࡍʹਓͷ՝Ͱ͋Δ͜ͱ͕ଟ͍
– ʰϐʔϓϧΣΞʱʹͦΜͳ͜ͱ͕ॻ͍ͯ͋Δ
ϚωδϝϯτͰɺେখ͞·͟·Λղܾ͢Δ • ৭ʑͳ͜ͱ͕վળ͞Ε͍ͯͬͨ • ͜ͷؒɺϚωδϝϯτʹ࣌ؒΛ͍ͬͯͨͷͰ΄ͱΜͲ։ൃͰ͖͍ͯͳ͍
ͱ͜Ζ͕पล͔Γ͕ղܾ͞Ε͍ͯͯɺҰ൪େ͖ͳ͕ղܾ͞Ε͍ͯͳ͍ 技術的負債 ϨΨγʔ ΞʔΩςΫνϟ (JU)VC σϓϩΠ ࣗಈԽ ϩάͷՄࢹ Խ
4MBDL ใڞ༗ ϏϧυύΠ ϓϥΠϯ ΫϥυҠ ߦ
Ұ൪հͰେ͖ͳ͕Կ͔Θ͔͍ͬͯͨͷʹʜ • ʮϚωδϝϯτͰ৫Λ׆ੑԽ͍͚͍͔ͯͭ͠վળʹܨ͕Δͣʯ – ͜Ε࣮ࡍʹઓज़Ͱͳ͘ɺͨͩͷئͰ͔͠ͳͬͨ
ೖ͙ࣾͯ͢͠ʹϚωδϝϯτʹຉ͠ɺ։ൃΛ͍ͯ͠ͳ͔ͬͨ • ։ൃͰ͖͍ͯͳ͍͕ނʹɺຊؙʹඈͼࠐΉͷ͕ා͍ • ݁Ռɺ։ൃ͠ͳ͍ͷͰ͍ͭ·Ͱܦͬͯຊؙͷ՝ʹର͢Δղ૾্͕͕Βͳ͔ͬͨ ʮϘτϧωοΫϚωδϝϯτʯʮٕज़ͷ՝Ͱͳ͘ਓͷ՝ʯ ͳͲͱݴͬͯϓϩμΫτٕज़త՝ʹਖ਼໘͔Β͖߹͑ͳ͍ࣗΛޡຐԽ͍ͯͨ͠
ʜͱ͍͏Θ͚ͰࣗΒ։ൃΛઌಋ͢ΔΑ͏ʹͨ͠ • େ͖͗͢ΔɺͦΕΛͩͱࢥͬͯղܾͰ͖ͳ͍͔Βɺ͕ͯ୭ͦ͏͍͏͕ ͋Δೝࣝ͢Β࣋ͨͳ͘ͳΔ • ͜͏͍͏ঢ়گτοϓμϯͰΓࠐΉ͜ͱ͕Ͱ͖ΔͳΒɺͦΕ͕Ұ൪͍
FQόοΫΤϯυ։ൃʹूதɺϑϩϯτΤϯυಘҙͳਓʹͤͯʜ • ࣗΒ։ൃΛઌಋ͢ΔɺͱݴͬͯશͯΛ͕ࣗϦʔυ͢Δͷ͍͠ • όοΫΤϯυࢲ͕ɺϑϩϯτΤϯυಘҙͳςοΫϦʔυʹ͓ͤͨ͠
ޙʹԿ͕ى͖͔ͨ • 8FC։ൃͷؔ৺͝ͱ͕ϑϩϯτΤϯυଆʹҠ͍ͬͯͬͨ • ϑϩϯτΤϯυ։ൃͷਐาʹେͳΞϓϩʔν͕ඞཁʹͳ͍ͬͯͬͨ – 41"ͷશҠߦɺσβΠϯγεςϜͷߏஙɺϑϩϯτΤϯυͷΠϯϑϥετϥΫνϟඋʜ • ͔͠͠ɺࠓࢥ͑ेͳମ੍తࢧԉ͕Ͱ͖͍ͯͳ͔ͬͨ ϑϩϯτΤϯυྖҬଞͷਓʹͤΑ͏ͱͯؔ͠৺·Ͱ͛ͯ͠·͍
Ϛωδϝϯτͱͯ͠ࢧԉΛ͖࣌͢ʹɺͦΕʹؾͮ͘͜ͱ͕Ͱ͖ͳ͔ͬͨ
ࠓ͓ͨ͠͠Τϐιʔυ • FQରॲྍ๏͔ΓͰɺٕज़త͕ͪͬͱղܾ͠ͳ͔ͬͨ • FQͪΌΜͱֶ΅͏ͱࢥͬͨΒখதֶੜ͔ΒΓ͕͠ඞཁͩͬͨ • FQΘ͔ͬͨɺͱࢥ͕࣮ͬͨફͯ͠ΈͨΒશવͰ͖ͳ͔ͬͨ • FQաڈͷܦݧΛͱʹΛ࡞ͬͨΒɺ͍ͮΒ͍ϓϩμΫτʹͳͬͯ͠·ͬͨ •
FQϚωδϝϯτʹϑΥʔΧεͨ݁͠Ռɺେ͖ͳٕज़՝͕શ͘ղফͰ͖͍ͯͳ͔ͬͨ • FQۤखྖҬΛਓʹ͍ͤͯͨΒɺࢧԉ͕ޙखʹճͬͯ͠·ͬͨ
ʮ͜͏͢Εɺ͜͏ͳΔʯͱ͍͏ύλʔϯͰ͕ղܾͰ͖ͳ͍ ʜബʑΘ͔͍͕ͬͯͨͦͷ͕࣌དྷͯ͠·ͬͨ ͕ࣗԿΛΘ͔Βͳ͍͔ɺͱ͍͏͜ͱ͔ΒΛഎ͚͍ͯͨ͜ͱ͕Θ͔ͬͨ ͭΒ͍ ຊΘ͔͍ͬͯͳ͍͜ͱͳͷʹɺྨࣅͷܦݧΛͯΊͯ ࣗ͋ΔఔΘ͔͍ͬͯΔͱࡨ֮ͯ͠͠·͍ͬͯͨ ʮϘτϧωοΫϚωδϝϯτʯʮٕज़ͷ՝Ͱͳ͘ਓͷ՝ʯ ͳͲͱݴͬͯϓϩμΫτٕज़త՝ʹਖ਼໘͔Β͖߹͑ͳ͍ࣗΛޡຐԽ͍ͯͨ͠ ϑϩϯτΤϯυྖҬଞͷਓʹͤΑ͏ͱͯؔ͠৺·Ͱ͛ͯ͠·͍ Ϛωδϝϯτͱͯ͠ࢧԉΛ͖࣌͢ʹɺͦΕʹؾͮ͘͜ͱ͕Ͱ͖ͳ͔ͬͨ
ࢹڱࡥͱղ૾Լͷ܁Γฦ͠ • Կ͔ʹूத͢Δͱࢹ͕ڱ͘ͳͬͯɺͦΕҎ֎͕Θ͔Βͳ͘ͳΔ • ࢹΛ͘͢Δͱղ૾͕Լ͕ͬͯɺࡉ෦͕Θ͔Βͳ͘ͳΔ • Θ͔Βͳ͘ͳ͍ͬͯΔͷʹʮ·ͩΘ͔͍ͬͯΔʯͱࢥ͍ࠐΜͩΓɺʮશવΘ͔ΒΜʯͱΛ ᛉΔͱ͕ى͖Δ
ࣗͷόά͍ͬͯΔ • Θ͔͍ͬͯͳ͍͜ͱΛΘ͔͍ͬͯΔͱࡨ֮͢Δ • Δ͖͜ͱΛ͍ͬͯͳ͍ͷʹɺ͍ͬͯΔͱࢥ͍ࠐΜͩΓ͢Δ
͜ͷόά͔ΒಀΕ͍ͨ • Θ͔͍ͬͯͳ͜ͱɺΘ͔Δ͔͠ͳ͍ • ͞·͟·ͳٕज़ྖҬʹ͍ͭͯɺͰ͖Δ͚ͩߴ͍ղ૾Ͱཧղ͍ͯ͠Δঢ়گΛҡ͍࣋ͨ͠ બΓΈΛͤͣʹֶशΛܧଓ͢ΔɻखΛࢭΊͳ͍ɺͱ͍͏γϯϓϧͳํ๏Ҏ֎ʹ ͋·Γྑ͍ղܾࡦࠓͷͱ͜Ζࢥ͍͍͍ͭͯͳ͍
ۙگ • ϓϩάϥϛϯάݴޠΛͪΌΜͱཧղ͍ͨ͠ͱࢥͬͯɺझຯͰ )BTLFMMΛϝΠϯͷݴޠʹ͠ ͯຖॻ͍͍ͯΔ – ܧଓ͍ͯͬͯ͠Δͱɺൃݟ͕ͨ͘͞Μ͋Δ ʜڝϓϩΛҰղ͚ͳ͔ͬͨͷͳ͔ͥΘ͔ͬͨ – ʮͬͱૣ͘Δ͖ͩͬͨʯ
·ͨͦΕ͔ɺԿͩ – ʮ3VTUΒͳ͖Όͳʔʯ Ϡόͦ͏ɻϑϥάͰʜ
݁ͼ • Ͳ͏Βࣗͷ৺ͱͯऑ͍ɻԿ͔ͱࣗࣗʹݴ͍༁Λͯ͠͠·͏ • ͜ͷࣗʹର͢Δݴ͍༁͔ΒಀΕ͍ͨɻਓੜޙͬͱࣗΛߠఆͯ͠ੜ͖͍͖͍ͯͨ – Δ͖͜ͱΛ͍ͬͯΔࣗͳΒߠఆͰ͖ͦ͏ – ݴ͍༁͔ΒಀΕΔʹɺֶशΛଓ͚ΔҎ֎ʹํ๏ͳͦ͞͏ –
ܧଓͷ౮Λফ͞ͳ͍Α͏ஸೡʹଓ͚͍͖͍ͯͨͱࢥ͍ͬͯΔ ʮٕज़ऀͱͯ͠େʹ͍ͨ͜͠ͱʯͷࠓͷճ ݁Ռʮྑ͍ιϑτΣΞٕज़ऀʯʹҰาͰ͚ۙͮͨΒྑ͍ͱࢥ͏
l͏·͘Δֶੜͦ͏͍͏ࠔʹͿ͔ͭͬͨͱ͖ɺࣗͷྗෆͱഅࣛ͞Ճݮʹ໓ೖΔ ؾ࣋ͪͱಆ͍ɺࢁͷ;ͱͰখ͞ͳาΈΛ࢝Ί·͢ɻ൴ΒɺϓϥΠυʹই͕ͭ͘͜ͱ ɺࢁ͔Βͷܠ৭ΛோΊΔͨΊͰ͋ΕऔΔʹΒͳ͍ͱ͍͏͜ͱΛ͍ͬͯΔͷͰ ͢ɻz