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
Yuya Harada
November 27, 2024
0
650
多言語対応アプリの負債返済 -文字列管理の見直しで得た学び-
文字列管理を改善するリファクタから得た学びをまとめました。小さなりファクタでも今後の開発で効果を生むことができます。
Yuya Harada
November 27, 2024
Tweet
Share
More Decks by Yuya Harada
See All by Yuya Harada
KMP導入後の運用で 見えてきた課題と次の一手 / KMP Ops Night
yuyah29
1
76
ウォンテッドリーのAI活用: 開発現場での取り組み
yuyah29
0
710
Xcode 26 の Coding Intelligence で感じた これからの自分に求められる変化
yuyah29
0
46
SwiftUIメインの開発者がUIKitの画面を実装するときに役立った3つの工夫
yuyah29
0
210
日々の振り返りで パフォーマンスを向上させる
yuyah29
0
170
Introduction to Kotlin Multiplatform
yuyah29
0
610
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
790
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
AI Search: Where Are We & What Can We Do About It?
aleyda
0
6.8k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
44
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
250
Designing Experiences People Love
moore
143
24k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
220
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.4k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Marketing to machines
jonoalderson
1
4.5k
Claude Code のすすめ
schroneko
67
210k
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