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
3
960
アプリの翻訳管理を楽にする
kosako
February 23, 2018
Tweet
Share
More Decks by kosako
See All by kosako
組織の崩壊と再生、その中で何を考え、感じたのか。 そして本当に必要だったもの
kosako
11
7.9k
その乗り換え、ちゃんと理由を説明できますか?
kosako
1
350
SREへの挑戦と失敗
kosako
0
440
Rettyにおけるエンジニア組織の歴史
kosako
0
510
組織を変えるためには何が必要なのか?
kosako
0
660
レジュメで何を見てもらえると思っていますか?
kosako
1
1.3k
オンボーディングの理想と現実
kosako
3
5.6k
組織と向き合うようになるまでの話、そして一年後
kosako
3
3.3k
MicroservicesのCache戦略
kosako
0
1.1k
Other Decks in Technology
See All in Technology
.mdc駆動ナレッジマネジメント/.mdc-driven knowledge management
yodakeisuke
24
12k
クォータ監視、AWS Organizations環境でも楽勝です✌️
iwamot
PRO
1
270
試験は暗記より理解 〜効果的な試験勉強とその後への活かし方〜
fukazawashun
0
370
バックオフィス向け toB SaaS バクラクにおけるレコメンド技術活用 / recommender-systems-in-layerx-bakuraku
yuya4
5
500
DETR手法の変遷と最新動向(CVPR2025)
tenten0727
2
1.3k
20250408 AI Agent workshop
sakana_ai
PRO
15
3.8k
似たような課題が何度も蘇ってくるゾンビふりかえりを撲滅するため、ふりかえりのテーマをフォーカスしてもらった話 / focusing on the theme
naitosatoshi
0
440
OpenSearchでレガシーな検索処理の大幅改善をやってやろう
dznbk
2
170
AI AgentOps LT大会(2025/04/16) Algomatic伊藤発表資料
kosukeito
0
130
Running JavaScript within Ruby
hmsk
1
180
AWSLambdaMCPServerを使ってツールとMCPサーバを分離する
tkikuchi
1
2.9k
Devinで模索する AIファースト開発〜ゼロベースから始めるDevOpsの進化〜
potix2
PRO
7
3.2k
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1030
460k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
KATA
mclloyd
29
14k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
390
Git: the NoSQL Database
bkeepers
PRO
430
65k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
13
1.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
227
22k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Gamification - CAS2011
davidbonilla
81
5.2k
Code Reviewing Like a Champion
maltzj
522
40k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
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 ͬͱ͘Θ͘͠