Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
逆向きUIの世界 〜iOSアプリのRTL言語対応〜
Search
akatsuki174
September 20, 2025
Design
1
350
逆向き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
670
私が変えてきたこと、変えなかったこと
akatsuki174
2
940
最近読んでいる本-読書シェア会vol.1
akatsuki174
2
230
SwiftUI、UIKitでキャプチャを撮ろう!
akatsuki174
1
120
Appleにおけるプライバシーの全容を把握する
akatsuki174
0
5.9k
近年のAppleにおける位置情報とプライバシー
akatsuki174
3
480
オフライン勉強会ぼっち対策
akatsuki174
1
680
Xcode 15の新機能
akatsuki174
0
2.8k
AndroidにもSelect Photosがやってきた
akatsuki174
0
1.4k
Other Decks in Design
See All in Design
地理院地図をもっと楽しく!れきちず新機能のご紹介
hjmkth
1
250
「UXとUIの違い」v2
shirasu3
0
310
新しいデザインの難しさ(公開版) / Difficulties in the New Design (public ver.)
usagimaru
2
980
アイデアを加速させる!Firefly ボードで発想の幅を広げよう
connecre
1
200
アプリ360onWeb使い方と裏ワザ?紹介!
ikejun360
1
400
組織はみんなでつくる。デザイナーが仕掛ける急拡大する組織のカルチャーづくり
mkasumi
0
980
Figmaレクチャー会Part1 基本のき編@千株式会社 社内勉強会
designer_no_pon
0
160
組織の右腕として共創する ー デザインと経営の二つの視点から見えた、新しい支援のかたち/ Designship2025_Nishimura
root_recruit
0
230
企業にデザインが融けたとき、デザイナーにできること。事業会社12年間の探究と葛藤 / Designship2025
visional_engineering_and_design
0
1.2k
【Designship 2025|10.11】デザイン組織と事業貢献、その挑戦と結果。
payatsusan213
1
830
Installing and Running decksh/pdfdeck
ajstarks
1
900
そのUIコンポーネント、これから先も使えますか?―Headless UI,Open UI,グローバルデザインシステム
sakito
2
2.3k
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
9.3k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
Become a Pro
speakerdeck
PRO
31
5.7k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
GraphQLとの向き合い方2022年版
quramy
50
14k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Context Engineering - Making Every Token Count
addyosmani
9
490
The World Runs on Bad Software
bkeepers
PRO
72
12k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
KATA
mclloyd
PRO
32
15k
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ίϯϙʔωϯτ ͰσβΠϯΛ࡞Δͷ͕ྑͦ͞͏ • ຯʹେมͳͷͰଟΊʹऔͬͨํ͕ྑͦ͞͏ • ωΠςΟϒͷਓʹνΣοΫͯ͠Β͏ͷ͕Ұ൪҆৺…
͓ΘΓ