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
iOSアプリを安全にローカライズする
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Yuya Hirayama
February 21, 2023
Technology
520
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSアプリを安全にローカライズする
potatotips #81
Yuya Hirayama
February 21, 2023
More Decks by Yuya Hirayama
See All by Yuya Hirayama
VRTと真面目に向き合う
hiragram
1
790
Claudeをクラウド型エージェントのように使う
hiragram
0
250
わいわいClaude Code アイスブレイクLT iOSDC2025 Day2 アンカンファレンス
hiragram
0
190
LLMエージェント時代に適応した開発フロー
hiragram
2
850
Deep Dive into ~/.claude/projects
hiragram
14
34k
iOSアプリ開発もLLMで自動運転する
hiragram
7
3k
iOSアプリの定期リリースとその自動化@potatotips#90
hiragram
1
540
Xcode Cloud事例紹介
hiragram
1
580
iPhoneXのTrueDepthカメラでVRMを動かす
hiragram
2
14k
Other Decks in Technology
See All in Technology
Oracle Exadata Database Service on Cloud@Customer X11M (ExaDB-C@C) サービス概要
oracle4engineer
PRO
2
8.4k
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
270
実装だけじゃない! CCA-F取得エンジニアが教えるClaude Code開発プロセス活用術
diggymo
2
650
はじめてのWDM
miyukichi_ospf
1
140
kintone の AI コワーカーを、 Anthropic にエージェントを"ホストさせて"作った話 #devkinmeetup
sugimomoto
0
100
End-to-Endで考える信頼性 —LINEアプリにおけるクライアント開発×SRE連携の実践
maruloop
4
4.1k
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
5k
プロダクトだけじゃない、社内プロセスにおける自動化・省力化ノススメ
kakehashi
PRO
1
3.6k
AIレビューはどこまで任せられるのか?自動化と人が背負うレビューの境界
sansantech
PRO
2
730
AICoEでAIネイティブ組織への進化
yukiogawa
0
160
SRE依存からの脱却 運用を開 発チームへ移す、 フルサイ クル開 発体制の実践
joooee0000
0
2.7k
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3k
Featured
See All Featured
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Bash Introduction
62gerente
615
220k
HDC tutorial
michielstock
2
740
The Invisible Side of Design
smashingmag
301
52k
Thoughts on Productivity
jonyablonski
76
5.2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Test your architecture with Archunit
thirion
1
2.3k
Transcript
安全にローカライズする @hiragram 2023-02-21 potatotips #81
iOSアプリのローカライズは難しい
iOSアプリのローカライズは何が難しい? • Localizable.strings ってやつをメンテするのが難しい ◦ typo耐性が低い ◦ 抜け漏れ耐性が低い ◦ 目視に優しくない
縦に遠くて見 づらい typoの チェック機構がな い 抜け漏れの チェック機構がな い
iOSアプリのローカライズは何が難しい? • Localizable.strings ってやつをメンテするのが難しい ◦ typo耐性が低い ◦ 抜け漏れ耐性が低い ◦ 目視に優しくない
• 呼び出す側をいい感じにするのが難しい ◦ typo耐性が低い ◦ パラメータ渡すのが難しい
LocalizedStringKey の typo 引数の順番間違い
もっと安全にやりたい
既存のソリューション: R.swift Localizable.strings を元 にコードを生成して、静的 解析できるようにする。 Localizable.strings その ものの管理は自分でやる ことになる
🤔
課題を解決する仕組みを作りました
ローカライズ便利ツール Honya - https://github.com/nana-music/Honya - とりあえずプロダクトから切り出して置いただけなので、参考程度に - ymlでローカライズの定義をして、それを元にLocalizable.string と静的に扱える コードを生成するツール
- 人間が管理するにはだるいファイルを ymlから生成するというのは、 XcodeGenから影響をうけたア イデア
• ローカライズ対象の言語を指定する。 • ローカライズ項目を記述する。 • 上述の対象言語はすべて書かれている 必要があり、足りないとツール実行時に エラーになる。 抜け漏れ耐性が 高まった
yml enumの定義 + Localizable.strings
typo耐性が 高まった typoすると コンパイルエラー
• 外から引数として受け取れるパラメータ を定義する。型はCVarArg準拠型の み。 • 変数を埋め込むことができる 引数を渡せるようにする
引数を渡せるようにする 引数を間違え にくくなった
おさらい
iOSアプリのローカライズは何が難しい? • Localizable.strings ってやつをメンテするのが難しい ◦ typo耐性が低い ▪ Localizable.strings を人間が直接触る必要が無くなり、解決 ◦
抜け漏れ耐性が低い ▪ ymlからの生成時に、すべての言語が揃っているかチェックされるようになり、解決 ◦ 目視に優しくない ▪ 定義が1つのymlにまとまったことで、目視もレビューもしやすくなり、解決 • 呼び出す側をいい感じにするのが難しい ◦ typo耐性が低い ▪ enumとして定義することで、コンパイル時にチェックできるようになり、解決 ◦ パラメータ渡すのが難しい ▪ assoc value付きのcaseにすることで、ラベルと型がついて間違えにくくなり、解決
• @hiragram / 平山裕也 • 株式会社nana music / iOS lead
/ PdM / 色々 • 10周年を迎えた音楽SNSアプリnanaをゼロから作り直しています • 1000万ユーザーを抱えるサービスを生まれ変わらせる仕事に興味ある人いたらぜ ひ声かけてください。TwitterDMでもいいです。iOS/Android問わず。 自己紹介と宣伝 このへんの話もで きます