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
AIスライド生成を進化させるMDファイル
kenichiota0711
1
1.2k
デザインを信じていますか
sekiguchiy
1
1.2k
AIスライドデザインを生成する仕組みを社内共有する
kenichiota0711
7
5.6k
「使いやすさ」だけでは、「勝てる」サービスにはならない。〜KPIとUXの分断を埋める、サービス戦略という「指針」〜
nbkouhou
2
400
絵や写真から学ぶ、要素がもたらす副作用
kspace
0
370
Frontier
rwang05
0
160
Spacemarket Brand Guide
spacemarket
2
920
「親切なオンボーディング」 が招く罠 ー AI時代のUXデザイン
godlingkogami
0
130
公開スライド)熊本市様-電子申請中級編
garyuten
0
1.3k
Mandalyn_DT5001_FinalAssignment.pdf
lynteo
0
230
富山デザイン勉強会_デザイントレンド2026.pdf
keita_yoshikawa
3
230
20260309_3月ICTデザイン勉強会_地域創生2.0
a2k
0
130
Featured
See All Featured
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
Designing Experiences People Love
moore
143
24k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Unsuck your backbone
ammeep
672
58k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
The Limits of Empathy - UXLibs8
cassininazir
1
350
Building AI with AI
inesmontani
PRO
1
1.1k
Being A Developer After 40
akosma
91
590k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
160
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
830
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ίϯϙʔωϯτ ͰσβΠϯΛ࡞Δͷ͕ྑͦ͞͏ • ຯʹେมͳͷͰଟΊʹऔͬͨํ͕ྑͦ͞͏ • ωΠςΟϒͷਓʹνΣοΫͯ͠Β͏ͷ͕Ұ൪҆৺…
͓ΘΓ