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
kosako
February 23, 2018
Technology
1k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
アプリの翻訳管理を楽にする
kosako
February 23, 2018
More Decks by kosako
See All by kosako
組織の崩壊と再生、その中で何を考え、感じたのか。 そして本当に必要だったもの
kosako
11
8.4k
その乗り換え、ちゃんと理由を説明できますか?
kosako
1
430
SREへの挑戦と失敗
kosako
0
530
Rettyにおけるエンジニア組織の歴史
kosako
0
600
組織を変えるためには何が必要なのか?
kosako
0
740
レジュメで何を見てもらえると思っていますか?
kosako
1
1.5k
オンボーディングの理想と現実
kosako
3
6k
組織と向き合うようになるまでの話、そして一年後
kosako
3
3.7k
MicroservicesのCache戦略
kosako
0
1.2k
Other Decks in Technology
See All in Technology
LLMリーダーボードアップデートに向けたAgentic Math_SWEのトレースについて
nejumi
0
210
[MIRU26] To What Extent Does MLLM-as-a-Judge Exhibit Cross-Model Preference Bias?
keio_smilab
PRO
0
210
事業価値と Engineering 2026年度版
recruitengineers
PRO
34
17k
SmartHR Engineering Team Deck
smarthr
0
190
AI ネイティブな組織に Gemini Enterprise Agent Platform がなぜ必要なのか
asei
1
170
モバイルアプリ開発概論2026
recruitengineers
PRO
1
330
変化の早いClaude Codeを 書籍に落とし込む
oikon48
6
1.3k
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
0
280
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
16
5.8k
ウォーターフォール開発案件のPMとしてAI活用を模索している話
hatahata021
3
310
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
4
1.2k
AIエージェントを前提としたプラットフォーム エンジニアリング:GKEで作るAgent-Ready Golden Path
legalontechnologies
PRO
1
200
Featured
See All Featured
The Invisible Side of Design
smashingmag
301
52k
Prompt Engineering for Job Search
mfonobong
0
390
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Evolving SEO for Evolving Search Engines
ryanjones
0
250
The untapped power of vector embeddings
frankvandijk
2
1.8k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.8k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
232
55k
Speed Design
sergeychernyshev
33
2k
Design in an AI World
tapps
1
270
The Limits of Empathy - UXLibs8
cassininazir
1
590
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Transcript
ΞϓϦͷ༁ཧΛָʹ͢Δ QPUBUPUJQT "LJIJSP,PTBLP
ࠃ/P໊࣮άϧϝαʔϏε3FUUZͷӡӦ ݄ؒສ66 ຊɾ߳ߓɾλΠͰαʔϏεఏڙ
ɾ"LJIJSP,PTBLP ɾΤϯδχΞϦϯάϚωʔδϟʔ ɾͬͯΔ͜ͱ J04 1)1 "84 About Me
w ݄ϑϧϦχϡʔΞϧ w 0CKFDUJWF$4XJGU w 8FC7JFXϕʔε/BUJWF 3FBDU/BUJWF Ұ෦ w
3FEVY w 42-JUF3FBMN w 'JSFCBTF ੳ RettyͷiOSΞϓϦʹ͍ͭͯ
w ຊɾ߳ߓɾλΠͰαʔϏεఏڙ w ຊޠɾӳޠɾ౦ޠɾλΠޠ͕͑·͢ w ͷݴޠઃఆͰͳ͘ɺΞϓϦͰݴޠࢦఆ͢Δ RettyͷiOSΞϓϦʹ͍ͭͯ
ҰൠతͳݴޠϦιʔεཧ
w ༁ͷϚελʔΛεϓϨουγʔτΤΫηϧͰ༻ҙ͢Δ w ͦΕͧΕͷݴޠ͝ͱʹ-PDBMJ[BCMFTUSJOHTΛ༻ҙ͢Δ த ,FZ7BMVFͳײ͡ͷςΩετσʔλ w ίʔυதʹ/4-PDBMJ[FE4USJOH LFZ
DPNNFOU ͷΑ͏ͳܗͰຒΊࠐΜͰ͍͘ w TUPSZCPBSEͰݴޠϦιʔεΛ༻ҙ͢Ε༁Λద༻͢ Δ͜ͱ͕Մೳ ͍ͨͩ͠উखΑ͘ͳ͍ w Ϗϧυͯ͠༁͕ө͞Ε͍ͯΔ͔֬ೝ͢Δ ҰൠతͳݴޠϦιʔεཧ
ΊΜͲ͍͘͞
w ༁Օॴͷίʔυ͕ w ໊લܾΊΔͷ͕ΊΜͲ͍͘͞ w ө͢Δͷʹ͍͍ͪͪ࡞ۀ͕ൃੜ͢Δ w λΠϙͱ͔ϛεى͖͍͢ w ϚελʔͱTUSJOHϑΝΠϧ͕ผ
Ͳ͕͜ΊΜͲ͍͘͞?
Ͳ͏ʹ͔ͯ͠ΈΔ
w (PPHMF4QSFBETIFFUΛ͏ w (PPHMF"QQT4DSJQUͰTQSFBETIFFU͔ΒΞϓϦ༻ͷ ϦιʔεϑΝΠϧΛੜ͢Δ w (PPHMFͷόοΫΞοϓͱಉظΛͬͯϩʔΧϧʹࣗಈ%- w ϑΥϧμࢹΛߦ͍ɺมߋ͕͋ͬͨ߹ʹϓϩδΣΫτϑΝ Πϧʹࣗಈಉظͤ͞Δ
ํ
w NBTUFS keyΛ࡞ΔͨΊͷmaster large,middle,smallͷ3֊ʹͯ͠ɺlargeͱmiddlemasterʹొ͞ΕͨͷΛඞͣ༻͢Δ smallΑ͘͏ͷ͚ͩmasterʹొͯ͠ɺجຊతʹͦͷͰϢχʔΫͳͷΛ࠾༻ w 3FBE.F ͬͯΒ͏্Ͱɺޙ͔Βೖ͖ͬͯͨਓͷͨΊͩͬͨΓΤϯδχΞҎ֎͏͜ͱΛߟྀͯ͠Read MeΛ༻ҙ ্༷ͷҙϦιʔεϑΝΠϧΛੜ͢ΔͨΊͷϘλϯͳͲΛ͓͍͍ͯ·͢
࠷ॳϚελʔϑΝΠϧ͕มߋ͞ΕΔͨͼʹॻ͖ग़͠Λߦ͍ͬͯͨͷͰ͕͢ɺ࡞ۀதͷͷ͕ॻ͖ग़͞Εͯ͠·͏ ͋Γɺ໌ࣔతʹॻ͖ग़͠Λ࣮ߦ͢ΔΑ͏ʹ͠·ͨ͠ w MPDBMJ[F ࣮ࡍͷ༁σʔλ IDͷॏෳνΣοΫ༁͞Εͨจݴ͕શͯಉ͡߹alert͕͕͋ΔΑ͏ʹ͍ͯ͠·͢ Google Spreadsheet
None
w (PPHMF%SJWFʹอଘ༻ͷϑΥϧμΛ࡞ͬͯ*%ΛϝϞ͢Δ w ("4ͰอଘઌͷυϥΠϒʹTUSJOHϑΝΠϧΛॻ͖ग़͢ Google Apps ScriptͰσʔλΛॻ͖ग़͢
None
w εΫϦϓτΛ࣮ߦ w ࢦఆͨ͠ϑΥϧμʹ֤ݴޠ༻ͷTUSJOHTϑΝΠϧͱFOVN ͕ఆٛ͞ΕͨTXJGUϑΝΠϧ͕ੜ Google Apps ScriptͰσʔλΛॻ͖ग़͢
w ϑΝΠϧΛΫϥΠΞϯτ1$ʹಉظͤ͞Δ w ࣗಈతʹϓϩδΣΫτϑΝΠϧʹө͞ΕΔΑ͏ʹ͢Δ ੜͨ͠ϑΝΠϧΛϓϩδΣΫτʹө
w (PPHMF%SJWF·ͱΊͯμϯϩʔυ͠Α͏ͱ͢Δͱ <KBTUSJOHTUYU>Έ͍ͨʹUYU֦ுࢠ͕͍ͭͯ͠·͏ w (PPHMF%SJWFͷόοΫΞοϓͱಉظΛΠϯετʔϧ IUUQTXXXHPPHMFDPNJOUMKB@"--ESJWFEPXOMPBE w (PPHMF%SJWF͔Βઌ΄ͲݴޠϑΝΠϧ͕ೖͬͨϑΥϧμ Λಉظ͢Δ ϑΝΠϧΛΫϥΠΞϯτPCʹಉظ
w GTXBUDIΛ༻ w GTXBUDIS<NBDͷHPPHMFESJWFͷQBUI>cYBSHT O*\^DQ\^<өઌϑΥϧμͷQBUI> w ݴޠϦιʔε͕มߋ͞ΕΔͱࣗಈతʹϓϩδΣΫτʹө ͞ΕΔΑ͏ʹͳΔ ࣗಈతʹϓϩδΣΫτϑΝΠϧʹө
w 3FUUZͰ/4-PDBMJ[FE4USJOH༻͍ͯ͠ͳ͍ w 4USJOHʹMPDBMJ[FEͱ͍͏FYUFOTJPOΛੜͯ͠ରԠ w IPHFIPHFMPDBMJ[FE w ΞϓϦͷબݴޠΛݟͯରԠ͢ΔݴޠϦιʔεΛදࣔ ద༻͢Δ
w lIPHFIPHFͷ෦ίϐϖͰೖΕΔඞཁ͋Γ w λΠϙͨ࣌͠ͳͲରԠ͢ΔݴޠϦιʔε͕ͳ͍߹LFZ໊ ͕ͦͷ··ग़ͯ͠·͏ w ؾܰʹLFZ໊Λม͑Δ͜ͱΓʹ͍͘ ՝
͏ͪΐͬͱָʹ͍ͨ͠
enum Localize: String { case generalLabelCancel = "general.label.cancel" case generalLabelDelete
= "general.label.delete" case generalLabelBrowsingHistory = "general.label.browsing_history" func localized() -> String { return self.rawValue.localized() } } enumΛ͏
w FOVN("4͔Βࣗಈੜ w FOVNલlIPHFIPHFzMPDBMJ[FE w FOVNޙ-PDBMJ[FIPHFIPHFMPDBMJ[FE w FOVNʹॻ͖ग़͢͜ͱʹΑΓαδΣετޮ͘
w ϖʔδ໊7JFX$POUSPMMFS໊͔Β୳ͤΔ w λΠϙݴޠϦιʔεͷ༰͕ؒҧ͍ͬͯͨΓSFOBNF͞ Εͨ߹ϏϧυΤϥʔʹͳΔ enumΛ͏
w 2JJUBʹΑΓৄࡉ͕͋Γ·͢ w IUUQTRJJUBDPNBLJJUFNT FFBGF ͬͱ͘Θ͘͠