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
1
240
逆向きUIの世界 〜iOSアプリのRTL言語対応〜
逆向きUIの世界 〜iOSアプリのRTL言語対応〜
2025/09/21 iOSDC Japan day2
akatsuki174
September 20, 2025
Tweet
Share
More Decks by akatsuki174
See All by akatsuki174
逆向きUIの世界〜AndroidアプリのRTL言語対応〜
akatsuki174
1
480
私が変えてきたこと、変えなかったこと
akatsuki174
2
880
最近読んでいる本-読書シェア会vol.1
akatsuki174
2
210
SwiftUI、UIKitでキャプチャを撮ろう!
akatsuki174
1
110
Appleにおけるプライバシーの全容を把握する
akatsuki174
0
5.8k
近年のAppleにおける位置情報とプライバシー
akatsuki174
3
470
オフライン勉強会ぼっち対策
akatsuki174
1
670
Xcode 15の新機能
akatsuki174
0
2.8k
AndroidにもSelect Photosがやってきた
akatsuki174
0
1.4k
Other Decks in Design
See All in Design
The Spectacular Lies of Maps
axbom
PRO
1
300
【MIXI MEETUP!ー TECH & DESIGN DAYー】新たなSNS「mixi2」の “0→1”開発の舞台裏:デザイナーが語るプロダクト誕生秘話
mixi_design
PRO
0
140
組織で取り組むアクセシビリティのはじめ方
masakiohsumi
0
190
CMS管理画面のアクセシビリティ
magi1125
8
2.5k
ユーザー像を「みてね」らしく可視化する 家族アルバムみてねUXリサーチチームの取り組み
mixi_design
PRO
1
210
新しいデザインの難しさ(公開版) / Difficulties in the New Design (public ver.)
usagimaru
1
910
役立つシステムを作るためのAI活用
kanzaki
0
100
Yahoo!フリマ:生成AI利用機能ならではのインターフェース設計について / Yahoo! JAPAN Flea Market: Interface Design Specific to Generative AI Utilization Features
lycorptech_jp
PRO
0
500
【最新】マズロー安達の弟子実績(1期-4期の26人分)
maslow_akkun
0
2.8k
BPStudy#213〜ビジネスアナリシスとDDD(ドメイン駆動設計)パネルディスカッション資料 / BPStudy213-panel
haru860
0
490
Liquid GlassとApp Intents
touyou
0
390
一次体験を起点にしたUX改善の取り組み / Direct Experience Driven UX Improvements
bitkey
PRO
0
200
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
890
Product Roadmaps are Hard
iamctodd
PRO
54
11k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
Side Projects
sachag
455
43k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
970
4 Signs Your Business is Dying
shpigford
185
22k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Agile that works and the tools we love
rasmusluckow
331
21k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Faster Mobile Websites
deanohume
310
31k
Being A Developer After 40
akosma
91
590k
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ίϯϙʔωϯτ ͰσβΠϯΛ࡞Δͷ͕ྑͦ͞͏ • ຯʹେมͳͷͰଟΊʹऔͬͨํ͕ྑͦ͞͏ • ωΠςΟϒͷਓʹνΣοΫͯ͠Β͏ͷ͕Ұ൪҆৺…
͓ΘΓ