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
20190126_YAPC_TOKYO.pdf
Search
Shigeki SUGAI
January 26, 2019
Technology
0
690
20190126_YAPC_TOKYO.pdf
Shigeki SUGAI
January 26, 2019
Tweet
Share
More Decks by Shigeki SUGAI
See All by Shigeki SUGAI
Cloudflare Workers + R2で低コストで画像配信を移行した話/cloudflare_workers_r2_migration
teckl
3
7.3k
CloudFront + S3環境から Cloudflare R2 + Workers環境に移行した話
teckl
3
2.6k
20210827-it-kaidan-4
teckl
0
600
レガシーサービスのMySQLバージョンアップ(5.1 -> 5.7)とRDS化
teckl
0
84
20200824-it-kaidan-3
teckl
0
720
20190808_IT_kaidan_2.pdf
teckl
0
1.1k
ほんとにあったITエンジニアの怖い話
teckl
0
1.9k
Perlを中心としたワンライナーあれこれ
teckl
2
2.9k
Other Decks in Technology
See All in Technology
技術負債の「予兆検知」と「状況異変」のススメ / Technology Dept
i35_267
1
1.1k
室長と気ままに学ぶマイクロソフトのビジネスアプリケーションとビジネスプロセス
ryoheig0405
0
360
自動テストの世界に、この5年間で起きたこと
autifyhq
10
8.4k
ハッキングの世界に迫る~攻撃者の思考で考えるセキュリティ~
nomizone
13
5.1k
Developer Summit 2025 [14-D-1] Yuki Hattori
yuhattor
19
6.1k
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
biwashi
6
790
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
57k
速くて安いWebサイトを作る
nishiharatsubasa
10
12k
あれは良かった、あれは苦労したB2B2C型SaaSの新規開発におけるCloud Spanner
hirohito1108
2
500
ホワイトボードチャレンジ 説明&実行資料
ichimichi
0
130
人はなぜISUCONに夢中になるのか
kakehashi
PRO
6
1.6k
転生CISOサバイバル・ガイド / CISO Career Transition Survival Guide
kanny
3
960
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.6k
Done Done
chrislema
182
16k
A Philosophy of Restraint
colly
203
16k
Building a Scalable Design System with Sketch
lauravandoore
461
33k
Become a Pro
speakerdeck
PRO
26
5.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
12
960
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
320
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Transcript
ϨΨγʔ1FSMͱ 1FSMͷ͜Ε͔Β !UFDLM :"1$5PLZP
:"1$
5PLZP
ΊͰ͍ͨ✨✨✨
ͯ͞
ฏωοτ࢙ʢԾʣ օ༷͝ཡͳΒΕ·ͨ͠Ͱ͠ΐ͏͔ʁ
ࠓ ओʹ ͪΐͬͱҰੲͷ1FSMΛ ަ͑ͨΛ͠·͢ Πϯλʔωοτਓձ͚ ίʔυ΄ͱΜͲग़ͳ͍ͷͰؾָʹௌ͍͍ͯͩ͘͞X
ࣗݾհ w 4IJHFLJ4VHBJʢ!UFDLMʣ w γʔαʔגࣜձࣾ w αʔόαΠυΤϯδχΞʢӡ༻ϝΠϯʣ w ΒʔΊΜ w
*OHSFTTɺ1PLÉNPO(0
ձࣾհ w 4FFTBB#MPH w 4FFTBB8JLJ w #PPN"QQ(BNFT w ΄ͱΜͲ1FSMͰಈ͍ͯ·͢ʂʂʂ̍ w
ͦͷଞ##։ൃɺεϚϗΞϓϦडୗ։ൃͳͲ
͓͠ͳ͕͖ w ࢲͱ1FSMͱͷग़ձ͍ w 8&#࣌ w Ψϥέʔ࣌ w 65'࣌ w
$(*NPE@QFSM1MBDL w ϨΨγʔڥͱ1FSM w %PDLFSͷొ w ͜Ε͔Βͷ1FSM w ςΩετॲཧݴޠͱͯ͠ͷ1FSM
ࢲͱ1FSMͱͷग़ձ͍ w ֶੜ࣌ɺࣗϓϩάϥϛϯάͱશ͘ແԑͷੜ׆Ͱ ͨ͠ w ຖͻͨ͢ΒDIʜΠϯλʔωοτΛ͢Δຖ w ࠇྺ࢙ͷʮϗʔϜϖʔδʯΛ࡞ͬͯɺ,&/58&#Ͱआ Γͷ$(*εΫϦϓτʢ1FSMʣͷܝࣔ൘ΛҙຯΘ͔Β ͣઃஔͯ͠༡ΜͰ͍ͨ
ࢲͱ1FSMͱͷग़ձ͍ w ͦͷޙɺ4*FSʹब৬͢Δɺ w ද͖+BWBͷΦʔϓϯܥͷҊ݅ w ͔͠͠ʑΤΫηϧ͍͡Γௐࠪ༻్ͳͲͰ͋ͬͯ ΠϯλʔωοτͳͲ͑ͳ͍ڥͩͬͨΓɺࣗ ͷ͖ͳΠϯλʔωοτͱԕ͍ࣄͷʑ
ࢲͱ1FSMͱͷग़ձ͍ w ͦΜͳ࣌ɺझຯͰݸਓతʹϒϩά Λॻ͍͍ͯͨͱ͜Ζ͕ۮવ༑ਓͩͬ ͨͷ͕͖͔͚ͬͰ 1FSMͷ ϒϩά ͷձࣾʹߦ͘͜ͱʹ w ࣌ʮϒϩάʯͰͳ͘ɺ·ͩ
ʮΣϒϩάʯͱ͍͏ݺশͷํ͕ ϝδϟʔͩͬͨ
ࢲͱ1FSMͱͷग़ձ͍ w ೖ͙ࣾͯ͢͠ʹ1FSMͷҊ ݅Λख͏͜ͱʹ w ͍͖ͳΓϥΫμຊΛ͞ ΕͯʮಡΜͲ͍ͯʯ w ༁͔ΒͣɺݟΑ͏ݟ ·ͶͰࣸܦ͍ͯ͘͠ʜ
࣌ͷڥ w ੈͷதͷΣϒܥاۀͱ͍͑-".1େྲྀߦ͍ͯͨ͠
࣌ͷڥ w ฐࣾయܕతͳ-".1ڥͰͨ͠ w -JOVY $FOU04 w "QBDIF w
.Z42- w 1FSM w NPE@QFSM w 4MFEHF w )5.-5FNQMBUF5FNQMBUF5PPMLJU
8&#࣌ ʢࠒʙʣ
8&#શظ IUUQTKBXJLJQFEJBPSHXJLJ8FC@ΑΓ
8&#࣌ w ʹʮΣϒਐԽʯ͕ొ w ϚογϡΞοϓ w "KBY w ϩϯάςʔϧ w
ϢʔβࢀՃܕͷίϯςϯπ͕ʹ
8&#࣌ͷ1FSM w ࣌8FCαʔϏεΛ1FSM͕େ͖ ͘ࢧ͍͑ͯͨ w ·ͩ8FC"1*͔ͬͨ࣌͠ w "KBYͷొʹΑΓ+40/͕ঃʑʹΘ Ε࢝ΊΔ
8&#࣌ͷ1FSM w NJZBHBXB͞Μͷ1MBHHFS͕Ұେ ϒʔϜʹ w ʮͦΕ1MBHHFSͰͰ͖ΔΑʯ w ʮͦΕ1MBʯ w ࣌DQBONͳͲ·ͩແ͘ɺૉ
ͷ$1"/ͩͬͨͷͰڥߏஙͷ ͕͓ࣝ΅͔ͭͳ͍ঢ়ଶͰΠϯε τʔϧ͢Δ͚ͩͰେมʜ
8&#࣌ͷ1FSM w 8FC4DSBQFS w ݸਓతʹͱͯͬͨ͞Ϟ δϡʔϧ w ͦΕ·Ͱ-81888 ͳͲͰؤு͍ͬͯͨͷ͕ɺ
91BUIͱ$44ηϨΫλ͚ͩͰ αΫοͱऔͬͯ͜ΕΔͷͱ ͯັྗతͰͨ͠✨
Ψϥέʔ࣌
Ψϥέʔ࣌ w 5XJUUFS͕ࠒ͔ΒঃʑʹຊͰྲྀߦ͠͡ΊΔ w ΠϯλʔωοτΛͬͨίϛϡχέʔγϣϯͱ͍͏ͷ ͕ɺ͋ΒΏΔʹ·ͬͨ w ͔͠͠ɺ࣌εϚϗͳͲͳ͘ɺΈΜͳΨϥέʔͰνΣο Ϋ͍ͯͨ͠
Ψϥέʔ࣌ͷ։ൃ w $PPLJF +BWB4DSJQUͳͲॳҰ͑ͣ w 3'$ҧͷΩϟϦΞϝʔϧΞυϨε w 44-5-4ରԠʹূ໌ॻͷറΓͳͲ͕͋ͬͨ w Ψϥέʔʹ࣮͞Ε͍ͯΔϑϧϒϥβͷṖͷڍಈ
Ψϥέʔ࣌ͷ։ൃ w )551.PCJMF"HFOUͰΩϟϦΞɺΛผͯ͠ग़ྗ ༰ʢը૾αΠζʣΛม͑ͨΓɺ$PPLJFαϙʔτ͕͋Δ ͔Ͳ͏͔Λఆͨ͠ w ϖʔδ͋ͨΓͷ༰ྔ੍ݶʹΑΓɺϖʔδϯάαΠζ ͕ϢʔβʹΑͬͯେ͖͘มΘͬͯ͠·͍ͬͯͨ w $PPLJFΛαϙʔτ͍ͯ͠ͳ͍͚ʹ
)5.-4UJDLZ2VFSZΛͬͯηογϣϯ*%Λ63-ʹຒ ΊࠐΜͰηογϣϯҡ࣋ͤͨ͞
Ψϥέʔ࣌ͷจࣈίʔυ w ͍͍ͩͨͷΨϥέʔ4IJGU@+*4ɺ͔͠͠-JOVY&6$+1 ͩͬͨͷͰɺ࣌จࣈίʔυॲཧ͕ࡶͩͬͨ w ιʔείʔυ&6$+1 w %#&6$+1 w Ϣʔβͷදࣔ4IJGU@+*4
w ϝʔϧɿ+*4 *40+1
ঃʑʹ65'ʹ ࠒd
1FSM65'Խͷ͕ w Ψϥέʔঃʑʹ65'͕දࣔՄೳʹͳ͖ͬͯͨ w طʹ͜ͷ࣌-JOVY65'͕σϑΥϧτ w 65'ʹڥΛد͍ͤͯ͘ͱΘ͍͠ॲཧ͔Β։์͞Ε ͯͤʹͳΕΔΒ͍͠ w +DPEFQN͔Β&ODPEFQNͷసظ
1FSM65'Խͷ͕ w ιʔείʔυ%#65'ʹҠߦ͢Δ͜ͱʹ w ࠷ॳVTFVUGΛͻͨ͢ΒೖΕ͍ͯ͘࡞ۀ w ॳ65'ϑϥάपลͷݟ͘͠ɺࢼߦࡨޡ͠ ͳ͕ΒԿ͔͢ΔຖʹจࣈԽ͚ͱͷઓ͍ w খखઌͰJT@VUGͯ͠FODPEF
EFDPEFΛ܁Γฦ͢ͱ ͍͏ͱͯݫ͍͠ࣄʹʜ
1FSM65'Խͷ͕ ͜Ε͕શͯͩͱؾ͍ͮͨͷ͋Δఔ࡞ۀ͕ਐΜͰ͔Βͩͬͨ lೖΓޱͰEFDPEFͯ͠ɼ෦Ͱͯ͢qBHHFEVUG Ͱѻ͍ɼग़ޱͰFODPEF͢Δɽ͜Ε͕ͯ͢Ͱ͢ʂͱʹ͔ ͘͜ͷجຊํΛ·͍ͬͯΕͤʹͳΕ·͢ɽz Perl Ͱ utf8 Խ͚ͨ͠ͱ͖ʹͲ͏ͨ͠Β͍͍͔ -
TokuLog
14(*1MBDL࣌ ʢʙʣ
14(*1MBDL࣌ w ʹ14(*1MBDL͕ੜ w 8FCϑϨʔϜϫʔΫͱ8FCαʔ όΛͭͳ͙ڞ௨ΠϯλϑΣʔε IUUQTHJIZPKQEFWTFSJBMQFSM IBDLFSTIVC
14(*1MBDL࣌ w ࣌NPE@QFSM͕ओྲྀɺ࠷ॳڪΔڪΔॻ͖͑ w $(*QNͱͷผΕ ͦͷޙ1FSMͰίΞϞδϡʔϧ͔ Βআ w ৄ͘͠!YUFUTVKJ͞ΜʹΑΔ<1FSMΣϒ։ൃͷதੈʙ
$(*ͱ1MBDLͷؒʙ> IUUQTXXXTMJEFTIBSFOFU YUFUTVKJQFSMDHJQMBDL Λࢀর
ϨΨγʔڥͱ1FSMʢʙʣ
ϨΨγʔڥͱ1FSM w ੈͷத͍͠ͷͰɺ༷ʑͳཁҼʢύοέʔδཧ͕ෆ ेͩͬͨɺίϯύΠϧͷൿͷλϨʣͰ؆୯ʹ1FSM ͷόʔδϣϯɺ04ͷόʔδϣϯΛ্͛ΒΕͳ͍ͱ͍͏ ͕ग़͖ͯͨ w ࣮ͷมߋɺಈ࡞֬ೝͳͲͷ͕ʑͷαʔϏεӡ༻ Ͱͳ͔ͳ͔औΓͮΒ͘ͳ͖ͬͯͨ
ϨΨγʔڥͱ1FSM w ʮৗʹ࠷৽Λ͏͖ʯͱݴ͏ͷ؆୯ͰͨΓલͷࣄ ͕ͩ w ੈͷதʹͳ͔ͳ͔ͦ͏͍͔ͳ͍ঢ়گʜ w ݱঢ়ͳ͘ಈ͍ͯΔ͠ʜ w ͦΕͬͨͱͯ͠ɺϢʔβʹϝϦοτ͋Δͷʁ
w ࠷ऴతʹɺޙճ͠ͷ࿈ଓʹʜ
ϨΨγʔڥ w ༷ʑͳཧ༝͋ΔʹͤΑɺʮελʔτΞοϓͷ࣌ʯΛɺͦͷ ··์ஔ͓ͯ͘͠ͱ༷ʑͳ΄͜Ζͼ͕ग़͖ͯ·͢ w ༷ॻͳͲແ͍ʜ w લऀ͕ډͳ͍ʜ w ੬ऑੑ͕ग़ͯ04Ξοϓσʔτ͍͠ʜ
w ։ൃڥͱ༻ڥͷϞδϡʔϧͷόʔδϣϯ͕ҧͬͯΔʜ w ͜ͷϑΝΠϧͱͬ͘ʹͬͯແ͍Μ͡Όʜʁ
%PDLFSͷొ
%PDLFS࣌ w ϨΨγʔͳڥΛ͍ͭͯ͘͠Δͱɺݟͯͳ͍ϑϦΛ ͍ͯ͠Δ͏ͪʹڊେͳෛ࠴ʹͳ͍ͬͯͨʜ w ؾ͕ͭ͘ͱ։ൃڥΛ༻ҙ͢Δ͚ͩͰঃʑʹίετ͕ ͔͔ΔΑ͏ʹͳͬͯདྷͯ͠·͍ͬͯͨ w 04ɺϥΠϒϥϦ͕ݹ͍͜ͱʹΑΓ༷ʑͳฐ͕ൃੜ w
ݹͷαʔϏε%PDLFSԽʹΑͬͯԆ໋͢Δ͜ͱʹ
%PDLFS࣌ w NPE@QFSM͔࣌Β14(*Խग़དྷͳ͔ͬͨ೦ͳαʔϏεΛ %PDLFSԽͰԆ໋ w ੲʮγεςϜ1FSMʯʹஸೡʹೖΕ͍ͯͨ$1"/Ϟδϡʔϧɺ ؾ͕ͭ͘ͱؾܰʹ$BSUPOόʔδϣϯݻఆՄೳʹͳ͍ͬͯͨ w ੲঊ͕୮೦ʹߏங͍ͯͨ͠ڥɺ୭ͰڥΛ࡞Δ͜ͱ ͕Ͱ͖ΔΑ͏ʹ
w %PDLFSԽʹΑΓɺ͜Ε·ͰͷηοτΞοϓํ๏͕7BSHSBOU Ҏ্ʹ؆୯ʹͳͬͨ
%PDLFS࣌ w ैདྷڞ༻ͷ։ൃ7.ͳͲΛ༻͍ͯ։ൃΛ͖͕ͬͯͨɺ֤ ࣗઐ༻ͷڥΛαΫοͱ༻ҙग़དྷΔΑ͏ʹ w ڞ༻ڥͰى͖͍ͯͨτϥϒϧͳ͘ͳͬͨ w ։ൃεϐʔυ͕͕͋Δ͜ͱͰɺϨΨγʔڥͷߋ৽࡞ۀɺ νʔϜͰऔΓΉ͜ͱ͕Ͱ͖ΔΑ͏ʹ
%PDLFSͰ1FSMΛখ͘͞͏ w Θ͟Θ͟1FSMͰΒͳͯ͘ɺͱ͍͏ͷ͋ΕͲɺͬ ͺΓ1FSMΛ͍͍ͨ w ͦΕ͕%PDLFSʹΑͬͯ͞Βʹݱ࣮తʹͳͬͨ
%PDLFSͰ1FSMΛখ͘͞͏ w %PDLFSԽʹΑΓڥΛશʹग़དྷΔΑ͏ʹͳͬͨͨ Ίͪΐͬͱͨ͠8FCΞϓϦͳͲΛͲ͜Ͱ࣋ͪӡΔΑ ͏ʹ w 8FCIPPLΛड͚Δͪΐͬͱͨ͠$IBUCPU w *'555Ͱख͕ಧ͔ͳ͍Α͏ͳݸਓతͳεΫϨΠϐϯά w
͍ࣺͯʹ͍ۙΑ͏ͳతͷ8FCΞϓϦέʔγϣϯͱ͔ Λྔ࢈ͯ͠ڥΛԚ͞ͳ͘ͳͬͨ
ͦͯ͠ɺ͜Ε͔Β
ੲͱൺΔͱʜ w ΨϥέʔɺεϚϗͷ಄ʹΑͬͯߟྀ͠ͳͯ͘ྑ͘ ͳ͖ͬͯͨ w 14(*ԽʹΑΓಛఆͷ8&#αʔόʹϩοΫΠϯ͞ΕΔ͜ ͱͳ͘ͳ͖ͬͯͨ w DQBON $BSUPOͷొʹΑͬͯόʔδϣϯΞοϓ༰қ
ʹ w %PDLFSԽʹΑΓݹ͍04͔Β٫Ͱ͖ΔΑ͏ʹ
ࢲ͕ߟ͑Δ͜Ε͔Βͷ 1FSMʹٻΊΒΕΔ͜ͱ
͜Ε͔Βͷ1FSM w ͘Β͍લͱ8&#։ൃΛऔΓר͘ঢ়گมΘΓɺ ޙ͔Βग़དྷͨݴޠଓʑͱ૿͖͍͑ͯͯ·͢ɻ w ޙൃͷݴޠ͕ྑ͍ͱ͜ΖΛ͍࣋ͬͯΔͷવ w ͜Ε͔Β৽نͰαʔϏεΛ࡞Δࡍʹ1FSM͕બΕΔࣄ ࣮֬ʹগͳ͘ͳ͖͍ͬͯͯΔҹ͕͋Γ·͢ɻ
͜Ε͔Βͷ1FSM w ͘ଓ͍ͨαʔϏεɺͲ͏ͯ͠΄͜Ζͼ͕ग़ͯ͘Δ w ࠓޙαʔϏε͕ଓ͘ݶΓอक͠ଓ͚͍ͯ͘ࣄඞཁ w ރΕٕͨज़ʢ1FSMʣͰ͋ͬͯɺదࡐదॴʹ༻͍Εɺ ͍ଓ͚Δ͜ͱ͕Ͱ͖Δ w աڈͱݱࡏɺະདྷܨ͕͍ͬͯΔ
͜Ε͔Βͷ1FSM w 1FSMʹҎԼͷϝϦοτ͕͋Γ·͢ɻ w େͳ$1"/ࢿ࢈ w ڧྗͳޙํޓੑ w ଞͷݴޠͱḮ৭ͷͳ͍8"'ϥΠϒϥϦ w
࠷ߴͷςΩετॲཧڥ w :"1$ɺҬ1.ͳͲͷૉΒ͍͠ίϛϡχςΟ
1FSMͷݪ ςΩετॲཧݴޠͱͯ͠ͷ1FSM
ςΩετॲཧݴޠͱͯ͠ͷ1FSM w ڈͷຊQNʹͯ!UPLVIJSPN͞ΜʹΑΔൃද͕͋ Γ·ͨ͠ɻ w 1FSMɺςΩετॲཧ࣌$(*࣌NPE@QFSM࣌ 1MBDL࣌Λܦͯɺ·ͨςΩετॲཧͷ࣌ʹճ ؼ͍ͯ͠ΔɺͱకΊΒΕ͍ͯ·ͨ͠ɻ w ʜ͕ͦΕ͜ͷޙͷΩʔϊʔτͰฉ͚Δ͔͠Ε·ͤ
ΜͷͰɺৄͦͪ͘͠ΒʹৡΖ͏ͱࢥ͍·͢
ςΩετॲཧݴޠͱͯ͠ͷ1FSM w 1FSMͱͱैདྷͷBXL TFEͱฒͿς ΩετॲཧݴޠͷͨΊͷݴޠ͔Β࢝·ͬͨ w ϫϯϥΠφʔͳͲʹද͞ΕΔΑ͏ʹɺ͜ Ε͔ΒςΩετΛѻ͏Α͏ͳॲཧͣͬ ͱ͍ͬͯ͘ w
6/*9ͷֶ͕Ҏ্ܦաͯ͠ະͩʹ ͍ଓ͚ΒΕΔΑ͏ʹɺ1FSM͜ͷઌς ΩετॲཧͷੈքͰͣͬͱ͍ଓ͚ΒΕ ΔʢͪΖΜ8FC։ൃͷੈքͰʣ
ςΩετॲཧݴޠͱͯ͠ͷ1FSM w ॊೈͰɺ͘ॻ͘͜ͱ͕Ͱ͖ɺԿΑΓૣ͘ॻ͚Δ w ޙํޓੑ͕͋ΓɺҎ্҆ఆͯ͠Քಇ͢Δ w ڧྗͳਖ਼نදݱ w ଟ͘ͷڥͰಈ࡞ w
ඇϓϩάϥϚͷํͰɺ༵େͷΑ͏ͳझຯతͳͱ͜ΖͰ w ීஈଞͷݴޠ͕ϝΠϯͰ͋ͬͯɺBXL TFEͷΑ͏ʹҰͭ ͷಓ۩ͱ͍͚͍͍ͯͬͯ͠
͜Ε͔Β1FSMΛָ͠ΜͰ ߦ͖·͠ΐ͏ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠☺