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
逆向きUIの世界 〜iOSアプリのRTL言語対応〜
Search
akatsuki174
September 20, 2025
Design
630
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
逆向きUIの世界 〜iOSアプリのRTL言語対応〜
逆向きUIの世界 〜iOSアプリのRTL言語対応〜
2025/09/21 iOSDC Japan day2
akatsuki174
September 20, 2025
More Decks by akatsuki174
See All by akatsuki174
逆向きUIの世界〜AndroidアプリのRTL言語対応〜
akatsuki174
1
1.1k
私が変えてきたこと、変えなかったこと
akatsuki174
2
1k
最近読んでいる本-読書シェア会vol.1
akatsuki174
2
280
SwiftUI、UIKitでキャプチャを撮ろう!
akatsuki174
1
150
Appleにおけるプライバシーの全容を把握する
akatsuki174
0
6.3k
近年のAppleにおける位置情報とプライバシー
akatsuki174
3
520
オフライン勉強会ぼっち対策
akatsuki174
1
720
Xcode 15の新機能
akatsuki174
0
2.9k
AndroidにもSelect Photosがやってきた
akatsuki174
0
1.4k
Other Decks in Design
See All in Design
Of Ordination and Rebellion exploration sketches
rezaline
0
120
図面資産×AI 眠れる資産を起こす挑戦
aonomasahiro
0
150
root COMPANY DECK / We are hiring!
root_recruit
3
29k
AI時代に必要な アイデアの形
uxman
0
200
デザインとフロントエンドの境界が融ける Claude Code × Figma
littlebusters
1
3k
CULTURE DECK/Marketing Director
mhand01
0
1.3k
TUNAG BOOK 2024
stmn
PRO
0
1.6k
From the Visible Crossroads: Turning Outputs into Outcomes
takaikanako
2
1.4k
怖くないアクセシビリティ -カウンターカルチャーとしてのアッカン東京-
securecat
1
190
2026_01_07_3DプリントはじめましたLT.pdf
hideakitakechi
0
210
2026年、デザイナーはなにに賭ける?
0b1tk
0
570
Rethinking IFUs: What Board Game Rulebooks Contribute to IFU Usability
deadlinepoet
0
310
Featured
See All Featured
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Odyssey Design
rkendrick25
PRO
2
690
Building the Perfect Custom Keyboard
takai
2
790
Chasing Engaging Ingredients in Design
codingconduct
0
220
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
330
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
Rails Girls Zürich Keynote
gr2m
96
14k
Transcript
ٯ͖UIͷੈք ʙiOSΞϓϦͷRTLݴޠରԠʙ iOSDC Japan 2025 09/21 @akatsuki174
ࣗݾհ
• @akatsuki174 • Android/iOS/FlutterΤϯδχΞ • גࣜձࣾΏΊΈॴଐ • Android/FlutterνʔϜ • ࠓͷࣄAndroid/iOS
• 2ࣇͷ
ࠓͷ
None
͢ର • SwiftUI͕ϝΠϯ • iOS͕ϝΠϯ • ʙiOS 18ܥɺXcode 16ܥ
None
RTLݴޠରԠͱ
RTLݴޠͱ • จࣈUIͷஔ͕ʮӈ͔Βࠨʯʹ͔ͬͯਐΉݴޠɹɹɹ ʢRight to Leftݴޠʣ • දతͳRTLݴޠ • ΞϥϏΞޠ
• ϔϒϥΠޠ • ϧυΡʔޠ etc…
RTLݴޠରԠ͞Εͨঢ়ଶͱ ༁͕ೖ͍ͬͯΔ͜ͱʹՃ͑ͯ… • ϨΠΞτ͕ࠨӈస͍ͯ͠Δ • ํੑΛ࣋ͭΞΠίϯ͕ࠨӈస͍ͯ͠Δ • RTLݴޠɺLTRݴޠ͕ࠞࡏ͍ͯͯ͠ਖ਼͍͠ฒͼʹͳ͍ͬͯΔ etc…
None
None
None
RTLݴޠରԠͷඞཁੑ • RTLݴޠͰ͋ΔΞϥϏΞจࣈͷ༻ਓޱ6ԯ6ઍສਓ • ΞϧϑΝϕοτͱதࠃจࣈʹ͍࣍ͰੈքͰ3൪ʹଟ͘ॻ͔Εͯ ͍Δݴޠ • RTLݴޠϢʔβʔʹͱͬͯɺLTRϨΠΞτҧײ͕͋Δ
ͳΜ͔େมͦ͏͡ΌͶʁ • ͍͍ͩͨOSɺϑϨʔϜϫʔΫଆ͕ࣗಈͰରԠͯ͘͠ΕΔ • ͕ɺ։ൃऀ͕खಈରԠ͖͢ͱ͜Ζ͋Δ
લఏɿԿ͠ͳ͍ͱRTLϨΠΞτʹͳΒͳ͍ • ʮͱΓ͋͑ͣγεςϜݴޠΛΞϥϏΞޠʹͯ͠ϨΠΞτ่Ε͕ ͳ͍͔֬ೝͯ͠ΈΔ͔ʯͱࢥͬͯɺͦͷ··ͩͱLTRϨΠΞ τͷ·· • طଘݴޠͷίϐϖͰ͍͍͔Β༁ϑΝΠϧΛೖΕΔ͔ɺޙड़͢Δ σόοά༻ͷઃఆͰڧ੍RTLϨΠΞτʹ͢Δ
ɿҰ֓ʹʮRTLݴޠʯͱׅΕͳ͍ • ྫɿϔϒϥΠޠجຊRTLݴޠͰ͋Δ͕ɺͳͲLTRʹͳΔ • ରԠ͢Δݴޠʹ͓͍ͯԿ͕ਖ਼͍͔͠ࣄલʹௐ͓͖ͯ͘
RTLݴޠରԠʹؔ͢Δ ެࣜใ
ެࣜใ • ͍ΖΜͳͱ͜ΖʹRTLʹؔ͢Δެࣜใ͕͋Δ • WWDCͷಈը • Human Interface Guidelines etc…
Human Interface Guidelines • ʮRight to leftʯͱ͍͏ষ͕͋Δ • RTLϨΠΞτશൠΛͬ͘͟Γཏ͍ͯ͠Δ •
σβΠφʔ͞Μʹ·͔ͣ͜͜ΒݟͯΒ͏ͷ͕ྑͦ͞͏
Design for Arabic / WWDC22 • Human Interface GuidelinesΑΓৄࡉͳใ͕ࡌ͍ͬͯΔ •
σβΠφʔ͞Μʹ2൪ʹݟͯΒ͏ͳΒ͜Ε͔͠Εͳ͍
Get it right (to left) / WWDC22 • ։ൃऀ͚ͷRLTݴޠରԠಈը •
۩ମతʹͲ͏࣮ͨ͠Β͍͍͔͕հ͞Ε͍ͯΔ
ʮࣗಈͰʯ͞ΕΔ RTLݴޠରԠ
ӳޠڥ ΞϥϏΞޠڥ
RTLݴޠରԠΫΠζ
͜ͷΫΠζͷҙٛ • શ෦OSɺϑϨʔϜϫʔΫଆ͕ରԠͯ͘͠ΕΔΘ͚Ͱͳ͍ • ػցతʹʮਖ਼͍͠RTLσβΠϯʹͳ͍ͬͯΔ͔ʁʯΛςετ͢Δ ͷ͍͠ʢޙड़ʣ • ࣗͷײ֮Λཆ͏ඞཁ͕͋Δ
Q1. ͜ͷΞΠίϯRTL༻ʁ
A1. 🙆 • εϐʔΧʔ෦Իͷग़ΔํΛࣔ͢ͷͰసͤ͞Δ • ࣼઢ෦ແޮɺېࢭΛද͕͢ʗͰʘͰҙຯมΘΒͳ͍Β͍͠ • AppleʘͰ౷Ұ͍ͯ͠ΔΒ͍͠
ຊޠڥ ΞϥϏΞޠڥ J04 "OESPJE
Q2. ͜ͷΞΠίϯRTL༻ʁ
A2. 🙆 • ͜ͷϖϯ͕ӈʹ͍͍ͯΔͷӈར͖ͷਓ͕ଟ͍͔Β
Q3. ͜ͷঢ়ଶRTLରԠ͕͞Ε͍ͯΔʁ
A3. 🙅 • Human Interface GuidelinesʹΑΔͱɺஈམʢ3ߦҎ্ͷςΩετͰఆ ٛ͞ΕΔʣͷஔஈམͷݴޠͱҰகͤ͞ΔΑ͏ʹͱॻ͔Ε͍ͯΔ
Q4. ͜ͷঢ়ଶRTLରԠ͕͞Ε͍ͯΔʁ
A4. 🙆 • ࣌ܭදݱRTLݴޠݍͰʮ࣌ܭճΓʯ • ProgressViewͷCircularProgressViewStyleRTLݴޠͰʮ࣌ܭճΓʯ
ʮखಈͰʯΔ RTLݴޠରԠ
ϨΠΞτ
left/rightͰॻ͍͍ͯΔͱ͜Ζ • leading/trailingݴޠʹΑͬͯҧ͏͕ɺleft/rightڞ௨ • left/rightͰॻ͍͍ͯͨΒͪΖΜϨΠΞτ͕ݻఆ͞Εͯ͠·͏
None
ӳޠڥ ΞϥϏΞޠڥ
None
ӳޠڥ ΞϥϏΞޠڥ
None
Ұ෦ͷϨΠΞτ • Կ͔͠Βͷཧ༝ͰRTLͱLTRͰϨΠΞτΛผʹ͍ͨ͠߹ɺ ͷϨΠΞτํΛผ͔ͯ͠Β݅ذͰUIΛग़͚͠Δ
None
None
ํΛݻఆ͍ͨ͠߹ • RTLͰLTRͰಉ͡ϨΠΞτʹ͢Δ͜ͱ͕Ͱ͖Δ • UIKitͱSwiftUI྆ํͷํ๏Λհ
None
ΞϥϏΞޠڥʢରԠલʣ ΞϥϏΞޠڥʢରԠޙʣ
None
None
RTL,LTRݴޠࠞ߹ͷςΩετ • جຊతʹ͍͍͔Μ͡ʹͬͯ͘ΕΔ • ͕ɺྫ͑ύϥϝʔλ͖ͭURLΛͻͱ͖ͭͮͷLTRͱղऍͰ͖ͣ ʹόϥόϥʹฒΒΕͯ͠·͏͜ͱ͕͋Δ
LRM,RLMͰڬΉ • LRM (Left-to-Right Mark) • Unicode: \u{200E} • ςΩετͷྲྀΕΛࠨˠӈʹڧ੍͍ͨ͠ͱ͖ʹ͏੍ޚจࣈ
• RLM (Right-to-Left Mark) • Unicode: \u{200F} • ςΩετͷྲྀΕΛӈˠࠨʹڧ੍͍ͨ͠ͱ͖ʹ͏੍ޚจࣈ
˞͜ͷίʔυखΛՃ͑ͳͯ͘ਖ਼͍͠ޠॱͰදࣔ͞Ε·͢
ը૾
Ұ෦ͷը૾ • RTLͱLTRͰҟͳΔͷΛද͍ࣔͨ͠߹ɺAsset Catalogʹ྆ ํͷը૾ΛೖΕΔ
None
None
None
ͲΜͳը૾Λసͤ͞Δ͖͔ • ʮํੑͷ͋ΔͷʯͱݴΘΕͯ… • SF SymbolsΛࢀߟʹ͢Δͷ͕ྑͦ͞͏
None
None
None
ࣈ
ࣈ͕ೖͬͨςΩετ • ಉ͡ݴޠݍͰɺҬʹΑͬͯͲΜͳࣈදه͕Ұൠతͳͷ͔͕ ҟͳΔ • ྆ํͰද่ࣔΕ͕ͳ͍͔֬ೝͨ͠ํ͕͍͍ • ࣈϩʔΧϥΠζ͞ΕΔঢ়ଶʹͳ͍ͬͯΔ͔֬ೝ͢Δ
None
None
None
None
ه߸͖ࣈ • ʮ%ʯʮ-ʯͳͲͷه߸͕ࣈʹͭ͘߹͕͋Δ • ಉ͡RTLݴޠͰɺࣈͷલʹͭ͘߹͋ΕޙΖʹͭ͘߹ ͋Δ • ࣗͰه߸Λ༩͢ΔͷͰͳ͘ɺformatterΛ͏͜ͱ
88%$(FUJUSJHIU UPMFGU IUUQTEFWFMPQFSBQQMFDPNXXED
None
None
ͦͷଞ
WebViewͦͷଞ֎෦࿈ܞ • WebViewͷத͕ະରԠʹͳΒͳ͍Α͏ʹ • ͦͷଞݴޠίʔυࠃίʔυΛSDKͳͲʹ͍ͯ͠ΔՕॴ͕͋ͬ ͨΒҙ
ʮӈʯʮࠨʯͷςΩετ • ʮࠨʹεϫΠϓͯ͠আ͍ͯͩ͘͠͞ʯͳͲͷจݴ࣮ࡍͷಈ࡞ ͱҟͳΔ͔
ݻఆαΠζͷϨΠΞτ • ҰൠతʹΞϥϏΞޠͷํ͕͍ͷͰɺݻఆαΠζͷUIͩͱ่ΕΔ ͱ͜Ζ͕͋Δ͔ • ՄมϨΠΞτʹͨ͠Γɺ߹ʹΑͬͯ༁Λௐͨ͠Γ͢Δ
(option)ϑΥϯτͷมߋ • ҰൠతʹΞϥϏΞޠͷํ͕খ͘͞ݟ͑Δ • ΞϥϏΞޠͷϑΥϯτΛ10%େ͖͘͢ΔͱಡΈ͘͢ͳΔ 88%$%FTJHOGPS"SBCJD IUUQTEFWFMPQFSBQQMFDPNKQWJEFPTQMBZXXED
88%$%FTJHOGPS"SBCJD IUUQTEFWFMPQFSBQQMFDPNKQWJEFPTQMBZXXED (option)ߴ͞ͷௐ • ൃԻه߸ɺࣝผه߸ͳͲ͕͋ΔͱΞϧϑΝϕοτΑΓΞϥϏΞจ ࣈͷํ͕ߴ͘ͳΔ • ্Լ͕Χοτ͞Εͳ͍Α͏ʹؾΛ͚Δ
ͲͷΑ͏ʹςετ͢Δ͔
લఏ • ػցతʹશ෦ʮRTLσβΠϯରԠͰ͖͍ͯΔ͔ʁʯΛςετ͢Δ ͷʢͨͿΜʣແཧ • ಠࣗΞΠίϯΛ͍ͬͯͨΒʮ͜Εస͖͢ͳͷ͔ʁʯ ਓ͕ؒஅ͢Δ͔͠ͳ͍ • ςετͱݴ͏ͷͷɺ࠷ॳʹ͜ΕΛͬͯײΛѲͨ͠ํ ͕͍͍ͱࢥ͏
ओͳνΣοΫϙΠϯτ • ϨΠΞτɺը૾ɺΞχϝʔγϣϯ͕ਖ਼͍͖͠ʹͳ͍ͬͯΔ͔ • RTLݴޠɺLTRݴޠ͕ࠞࡏ͍ͯͯ͠ਖ਼͍͠ฒͼʹͳ͍ͬͯΔ͔ etc…
༏ઌ͢ΔݴޠΛมߋͯ͠ࢹ • Ұ൪ຊʹ࣮ۙͯ֬͘ͳํ๏ • νΣοΫϙΠϯτʹैͬͯɺ͓͔͍͠ͱ͜Ζ͕ͳ͍͔Λ֬ೝ͢Δ • ͨͩ͠ɺRTLݴޠͷ༁ϑΝΠϧ͕ೖͬͯͳ͍ͱస͠ͳ͍
None
౾ࣝ • ʮRTLݴޠʹͨ͠ΒઃఆΞϓϦ͕ಡΊͳ͘ͳͬͯݩʹͤͳ͍ʯ ͱͳͬͨ߹ผͰGoogleϨϯζΛ͏ͱศར • ΞϓϦ͕ʮ༏ઌ͢ΔݴޠʯʹରԠ͍ͯ͠ΔͳΒͦͬͪΛͬͯ
εΩʔϜΤσΟλΛฤू • εΩʔϜΤσΟλʹApp Language͕͋ΓɺRTLݴޠʹͨ͠Γɺ PseudolanguageʢՍۭݴޠʣʹͰ͖Δ • ࣮ߦϑΝΠϧʹRTLݴޠ͕ೖͬͯͳͯ͘ςετͰ͖ͯศར
None
None
Right-to-Left Pseudolanguage • UI ϨΠΞτͷํ͚ͩΛRTLʹ͢Δ • จࣈྻͦͷ·· • ϨΠΞτ͕ਖ਼͘͠RTLݴޠରԠͰ͖͍ͯΔ͔Λ֬ೝͰ͖Δ
௨ৗϏϧυ 3JHIUUP-FGU1TFVEPMBOHVBHFࢦఆ
SwiftUIͷϓϨϏϡʔͰࢹ • SwiftUIͷϓϨϏϡʔͰRTL༻LTR༻ϓϨϏϡʔΛ࡞͢Δ • StoryboardͩͱͰ͖ͳͦ͏
None
࠷ޙʹ
ࠓͷ·ͱΊ • RTLݴޠΛ͍ͬͯΔਓ͔ͳΓଟ͍ͷͰରԠͨ͠ํ͕͍͍Α • OSɺϑϨʔϜϫʔΫଆ͕উखʹ͍͍͔Μ͡ʹͯ͘͠ΕΔ͜ͱ͕ଟ ͍Α • ͰࣗಈͰରԠ͞Εͳ͍ͱ͜Ζ͋Δ͔ΒؤுͬͯରԠ͠Α͏Ͷ
ݸਓతͳײ • σβΠφʔ͞Μͱ૬ஊͭͭ͠ɺͰ͖Δ͚ͩඪ४UIίϯϙʔωϯτ ͰσβΠϯΛ࡞Δͷ͕ྑͦ͞͏ • ຯʹେมͳͷͰଟΊʹऔͬͨํ͕ྑͦ͞͏ • ωΠςΟϒͷਓʹνΣοΫͯ͠Β͏ͷ͕Ұ൪҆৺…
͓ΘΓ