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
680
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.1k
CloudFront + S3環境から Cloudflare R2 + Workers環境に移行した話
teckl
3
2.5k
20210827-it-kaidan-4
teckl
0
590
レガシーサービスのMySQLバージョンアップ(5.1 -> 5.7)とRDS化
teckl
0
80
20200824-it-kaidan-3
teckl
0
710
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
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
ゼロから創る横断SREチーム 挑戦と進化の軌跡
rvirus0817
2
260
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
NW-JAWS #14 re:Invent 2024(予選落ち含)で 発表された推しアップデートについて
nagisa53
0
250
なぜCodeceptJSを選んだか
goataka
0
150
AWS re:Invent 2024 ふりかえり
kongmingstrap
0
130
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
8
3.1k
UI State設計とテスト方針
rmakiyama
2
260
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.2k
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
250
社内イベント管理システムを1週間でAKSからACAに移行した話し
shingo_kawahara
0
180
AIのコンプラは何故しんどい?
shujisado
1
190
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Testing 201, or: Great Expectations
jmmastey
40
7.1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
The Invisible Side of Design
smashingmag
298
50k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.3k
How to train your dragon (web standard)
notwaldorf
88
5.7k
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Λָ͠ΜͰ ߦ͖·͠ΐ͏ʂ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠☺