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
多言語対応アプリの負債返済 -文字列管理の見直しで得た学び-
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yuya Harada
November 27, 2024
850
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
多言語対応アプリの負債返済 -文字列管理の見直しで得た学び-
文字列管理を改善するリファクタから得た学びをまとめました。小さなりファクタでも今後の開発で効果を生むことができます。
Yuya Harada
November 27, 2024
More Decks by Yuya Harada
See All by Yuya Harada
KMP導入後の運用で 見えてきた課題と次の一手 / KMP Ops Night
yuyah29
1
200
ウォンテッドリーのAI活用: 開発現場での取り組み
yuyah29
0
1k
Xcode 26 の Coding Intelligence で感じた これからの自分に求められる変化
yuyah29
0
150
SwiftUIメインの開発者がUIKitの画面を実装するときに役立った3つの工夫
yuyah29
0
290
日々の振り返りで パフォーマンスを向上させる
yuyah29
0
220
Introduction to Kotlin Multiplatform
yuyah29
0
740
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
300
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
540
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
Embracing the Ebb and Flow
colly
88
5.1k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
250
エンジニアに許された特別な時間の終わり
watany
108
250k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
240
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
370
Fireside Chat
paigeccino
42
4k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Transcript
© 2024 Wantedly, Inc. 文字列管理の見直しで得た学び 多言語対応アプリの負債返済 Nov. 27 2024 -
Yuya Harada
© 2024 Wantedly, Inc. 名前 Wantedly 入社 ポジション 趣味 :
原田 祐也 : 2024 7月 : iOS エンジニア : バドミントン
© 2024 Wantedly, Inc. 本⽇の内容について 内容 • 負債返済日の取り組みでの学び ◦ 文字列の管理方法を改善するためのリファクタを行った
伝えたいこと • 小さな改善でも今後の開発で効果を生むこと
© 2024 Wantedly, Inc. Wantedly Visit (iOS) のオンボーディングフロー
© 2024 Wantedly, Inc. 各画⾯のタイトル部分をリファクタした話
© 2024 Wantedly, Inc. オンボーディングのタイトル部分の仕様 日本語と英語に対応する 1. テキストの一箇所にグラデーションをかける 2.
© 2024 Wantedly, Inc. どう文字列が管理されていた?
© 2024 Wantedly, Inc. SwiftGenのLocalizable.stringsでの⽂字列管理⽅法
© 2024 Wantedly, Inc. SwiftGenのLocalizable.stringsでの⽂字列管理⽅法
© 2024 Wantedly, Inc. SwiftUIでの実装 グラデーションの位置が変わるため、Localeで切り分けてViewを実装
© 2024 Wantedly, Inc. 補⾜: なぜそのような実装になっていたか? 初期 • オンボーディング画面が今ほど多くなかった •
デザインを実現する上でミニマムな実装を行っていた 以降 • オンボーディング画面が 1画面ずつ増えていった • 同じ実装を行っていき、負債となっていった
© 2024 Wantedly, Inc. 何が課題だったか? 文字列の管理方法が複雑だった • ユーザーの設定言語によって、不必要な文字列が出てきてしまう • リファクタの理想
◦ 全体(あなたの居住地を教えてください)とグラデーション部分(居住地)の 2つを それぞれの言語で管理する 1. Localeで分岐させてViewを実装していた • 各言語用のViewを毎回用意する必要がある • リファクタの理想 ◦ ユーザーの設定言語に関わらず、 Viewを一つにまとめたい 2.
© 2024 Wantedly, Inc. ⽂字列管理のリファクタ ✅ タイトル部分とグラデーション部分の文字列を作成
© 2024 Wantedly, Inc. View側のリファクタは試行錯誤…
© 2024 Wantedly, Inc. Localeで分岐させることなく、テキスト部分を⼀つのViewにするリファクタ 💡 アイディア1: グラデーションテキスト部分をうまいこと配置する あなたの 居住地
を 教えてください • Textを2つ用意する ◦ グラデーションさせた「居住地」 ◦ グラデーション部分を透明化した 「あなたの居住地を教えてください」 • 「居住地」部分のテキスト位置を調整
© 2024 Wantedly, Inc. Localeで分岐させることなく、テキスト部分を⼀つのViewにするリファクタ ❌ グラデーション部分のoffsetの指定が難しく断念
© 2024 Wantedly, Inc. offsetを使わずに同じ文字を重ねてみるか🤔
© 2024 Wantedly, Inc. Localeで分岐させることなく、テキスト部分を⼀つのViewにするリファクタ 💡 アイディア2: 同じテキストを重ね合わせる • Textを2つ用意する
◦ グラデーション部分を透明化させた 「あなたの居住地を教えてください」 ◦ グラデーションをかけた 「あなたの居住地を教えてください」 • 2つのテキストを重ね合わせる
© 2024 Wantedly, Inc. Localeで分岐させることなく、テキスト部分を⼀つのViewにするリファクタ ❌ 正しいグラデーションがかけられず断念 正しいグラデーション 誤ったグラデーション ※
あなたの〜ください全体にグラデーションがかかっている
© 2024 Wantedly, Inc. 特定位置にだけグラデーションをかけたい…😖
© 2024 Wantedly, Inc. Localeで分岐させることなく、テキスト部分を⼀つのViewにするリファクタ 💡 アイディア3: グラデーション部分以外を透明化する • Textを2つ用意する
◦ グラデーション部分以外を透明化させた 「あなたの居住地を教えてください」 ◦ グラデーション部分を透明化させた 「あなたの居住地を教えてください」
© 2024 Wantedly, Inc. Localeで分岐させることなく、テキスト部分を⼀つのViewにするリファクタ 💡 アイディア3: グラデーション部分以外を透明化する • Textを2つ用意する
◦ グラデーション部分以外を透明化させた 「あなたの居住地を教えてください」 ▪ 居住地の部分にグラデーションをかける ◦ グラデーション部分を透明化させた 「あなたの居住地を教えてください」 • 2つのテキストを重ね合わせる
© 2024 Wantedly, Inc. Localeで分岐させることなく、テキスト部分を⼀つのViewにするリファクタ 😳 うまくいった… (透明化した部分にはグラデーションがかからなかった)
© 2024 Wantedly, Inc. 最終結果 ✅ タイトル部分とグラデーション部分の文字列のみを管理
© 2024 Wantedly, Inc. 最終結果 ✅ Localeの分岐をなくし、各画面で一つのコンポーネントを呼ぶ
© 2024 Wantedly, Inc. 無事にマージされ、リファクタ完了 🎉🎉🎉 最終結果 ※ 補足 •
今回の実装はグラデーションが一箇所のみの場合に有効 • OSバージョンの制限がなければiOS17+のforegroundStyleを使って実装可能
© 2024 Wantedly, Inc. 今後オンボーディングで画⾯が追加される場合… 文字列は2つだけ用意する • テキスト全体 • グラデーションさせたいテキスト
タイトルテキストのViewはコンポーネントを呼び出す • Localeでの分岐は必要ない
© 2024 Wantedly, Inc. 本⽇の内容について 内容 • 負債返済日の取り組みでの学び ◦ 文字列の管理方法を改善するためのリファクタを行った
伝えたいこと • 小さな改善でも今後の開発で効果を生むこと
© 2024 Wantedly, Inc. 😊ご清聴ありがとうございました😊 : @yuya_h_x : @yuya-h-29 X
GitHub