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
TOKIWANOMORI-20180901
Search
MzRyuKa
September 01, 2018
Programming
0
510
TOKIWANOMORI-20180901
トキワの森LT大会(2018/09/01)でLT発表した資料です。
MzRyuKa
September 01, 2018
Tweet
Share
More Decks by MzRyuKa
See All by MzRyuKa
EDI_LT_Elixir_books_story
mzryuka
0
640
インフラ勉強会LT資料:自分の本を宣伝するLT
mzryuka
1
130
Internet-Oldman-2_LT-today-no2
mzryuka
0
300
Ginza.js #1 LT_Draw_LineChart
mzryuka
1
510
「ドラクエに学ぶチームマネジメント」読書会第5章
mzryuka
1
250
WebEngineerMeetup10_cui_quiz
mzryuka
1
1.8k
pplog_5thbd_lt
mzryuka
0
250
aniben-20180823
mzryuka
1
1.3k
Other Decks in Programming
See All in Programming
Deep Dive into ~/.claude/projects
hiragram
11
2.3k
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
470
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
250
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
dbt民主化とLLMによる開発ブースト ~ AI Readyな分析サイクルを目指して ~
yoshyum
3
300
「Cursor/Devin全社導入の理想と現実」のその後
saitoryc
0
700
A2A プロトコルを試してみる
azukiazusa1
2
1.3k
Kotlin エンジニアへ送る:Swift 案件に参加させられる日に備えて~似てるけど色々違う Swift の仕様 / from Kotlin to Swift
lovee
1
260
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
童醫院敏捷轉型的實踐經驗
cclai999
0
210
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
1
2.1k
Hypervel - A Coroutine Framework for Laravel Artisans
albertcht
1
110
Featured
See All Featured
Making Projects Easy
brettharned
116
6.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
46
9.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
950
VelocityConf: Rendering Performance Case Studies
addyosmani
331
24k
A Tale of Four Properties
chriscoyier
160
23k
Navigating Team Friction
lara
187
15k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Optimizing for Happiness
mojombo
379
70k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.8k
Balancing Empowerment & Direction
lara
1
400
Transcript
RubyεΫϦϓτΛ Goݴޠʹஔ͖͑ͨΒ ॲཧ͕࣌ؒ̎̌ͷ̍ʹͳͬͨ 2018.09.01 τΩϫͷLTେձ @MzRyuKa
ຊ͍͑ͨ͜ͱ ͪΐͬͱͨ͠ॲཧͰGoͰॻ͘ͷ͓͢͢Ί
ࣗݾհ ΈͣΓΎ @MzRyuKa https://mzryuka.hatenablog.jp/ தখاۀͷSIer ࠷ۙɺࣗࣾͷࣾษ ڧձͰएखࣾһʹࠞͬ͡ ͯ৭ʑָ͠ΜͰ͍·͢ɻ
͖͔͚ͬ ผձ͕ࣾఏڙ͢Δ6000ݸͷcsvϑΝΠϧ͕Πϯϓοτɻ ͔͠͠ɺ͜Μͳ͕ଟൃͨ͠ɻ ϑΝΠϧ໊ͷ໋໊ϧʔϧʹ͋ͬͯͳ͍ɻ ϑΝΠϧͷσʔλܗ͕ࣜʮόΠφϦܗࣜʯʹͳ͍ͬͯͨɻ ϑΝΠϧதͷॻ͕ࣜؒҧ͍ͬͯͨɻ σʔλ߲ͷΧϯϚͷ͕ؒҧ͍ͬͯͨɻ ಛఆͷσʔλ߲ͷઃఆ͕ޡ͍ͬͯͨɻ
ରࡦͱͯ͠ɺ؆қతͳνΣοΫεΫϦϓτΛ bashͱrubyͰύύοͱ࡞ͨ͠ɻ ༁ɿ bash: ʮfileʯίϚϯυͰϑΝΠϧܗࣜΛνΣοΫɻ 1ͰνΣοΫྃ ruby: ϑΝΠϧܗࣜҎ֎ͷνΣοΫΛ࣮ࢪɻ ̏̌ͰνΣοΫྃ ݁Ռɺ1ճͷνΣοΫʹ̏̎ͷॲཧ࣌ؒɻ
ʢ݄̍ͷσʔλͷͨΊɺ̍͋ͨΓ1ͷॲཧʣ
ఔ͜ΕͰରԠ͍ͯͨ͠ɻ ͔͠͠ɺʹճ֬ೝ͢Δέʔε͕ग़͖ͯͨͷ Ͱɺͪΐͬͱ͕࣌ؒମແ͘ͳ͖ͬͯͨɻ ʮࣄʹ༨༟͕͋Δঢ়گͳͷͰɺͪΐͬ͘Β GoݴޠͰॻ͖ͯ͠ΈΔ͔ɻʯͱࢥཱ͍ͭɻ
GoݴޠͰͷॻ͖͑ ผݴޠͰͷ࣮ͩ̇ͱු͔Εͯͨ໘ɺrubyͷॻ͖ํʹ׳ Ε͍ͯͨͷͰɺׂͱΠϥͬͱ͠ͳ͕Βॻ͍͍ͯͨɻ ΠϥΠϥϙΠϯτɿ ར༻͍ͯ͠ͳ͍มύοέʔδͷએݴͰౖΒΕΔ ifจ͕̍ߦͰॻ͚ͳ͍ͨΊߦ͕૿͑Δ ໌ࣔతͳܕࢦఆΛ͢ΔͷͰɺؔͷฦ͢ܕͷௐ͕ࠪ໘
ϑΝΠϧͷܗࣜνΣοΫɺGoͰͲ͏͢Εྑ͍ ͔Θ͔Βͳ͔ͬͨͷͰɺ֎෦ίϚϯυͰʮfileʯΛ ࣮ߦ͢ΔΑ͏ʹͨ͠ɻ out, err := exec.Command(“file”,fullpath).Output() if err !=
nil { return false } outstr := fmt.Sprintf(“out: %s”, out) if strings.Index(outstr, “ASCII text”) == -1 { return false } return true
ϑΝΠϧͷ໋໊νΣοΫɺਖ਼نදݱΛར༻ɻ ಉ༷ʹɺͷॻࣜνΣοΫਖ਼نදݱɻ Goͷਖ਼نදݱ͍ͱฉ͍͍͕ͯͨɺ ଞʹྑ͍Ҋࢥ͍͔ͭͣɺ͜ΕͰ࣮ɻ var re := regex.MustCompile(`^2[0-1][0-9][0-9]ʢ~ུ~ʣ.csv$`) func checkFileName(filename
string) bool { return re.MatchString(filename) }
࣮ߦલ ͜Μͳײ͡Ͱॻ͍ͯɺͻͱ·ͣɻಛʹ ͤͣʹॻ͍ͨͷͰੑೳෆ͔҆͠ͳ͍ɻ ·͊ɺ͕࣌ؒʹͳΕɺ͏͚ͷɻ ͘ͳͬͯͨΒGoroutineͰฒྻ࣮ߦͰ͢ΔΑ͏ ʹมߋ͠Α͏͔ͳʙɺͱࢥ͍ͳ͕Β࣮ߦɻ
݁Ռ શνΣοΫͷ࣮ߦ࣌ؒʮ̍ʯͱͳͬͨɻ ʢtimeίϚϯυͰճܭଌʣ ɾɾ͋ΕɺbashͷνΣοΫ࣮ߦ࣌ؒͱ΄΅ಉ͡ʁ
݁Ռʢͦͷ̎ʣ ؾʹͳͬͯɺ ʮfileʯίϚϯυͷ࣮ߦ෦͚ͩͰ࣮ߦͨ͠Βɺ ࣮ߦ࣌ؒʮ1ʯͩͬͨɻ
݁Ռʢͦͷ̏ʣ ͞Βʹؾʹͳͬͯɺ ʮfileʯίϚϯυ෦Λআ͍࣮ͯߦ͢Δͱɺ ࣮ߦ࣌ؒʮ̍̍ඵʯͩͬͨɻ
“ॲཧ࣌ؒͷ୯Ґ͕มΘͬͨʂ” ϏόʂGolang!!
ॻ͖͑ͨՌ ୯७ʹGoݴޠͰॻ͖͚͑ͨͩͰɺॲཧ࣌ؒ ʮ̎̌ͷ1ʯ(32ˠ1)ͱͳͬͨɻ ʮfileʯίϚϯυͷݺͼग़͠෦࣮࣭తʹมΘͬ ͍ͯͳ͍ͷͰɺruby→golangʹมߋͨ͜͠ͱʹΑ ΔޮՌɺʮ̍̒̌ͷ̍ʯ(30ˠ11ඵ)ͱ ͳͬͨɻ
·ͱΊ Rubyͷಈతݴޠɺͬ͞ͱ࡞ΕΔ͓ख͕ܰ͋͞ Δ͕ॲཧ͕ؾʹͳͬͯ͘Δɻ GoͰॻ͍ͯΔͱଟগΠϥΠϥ͢Δ͜ͱ͋ͬͨɻ ͕ɺॲཧΛΈͯաڈͷ͜ͱਫʹྲྀͨ͠ɻ Ұ୴ಈతݴޠͰॻ͍ͯΈͯɺΠϝʔδΛ௫ΜͰ ͔ΒGoͰஔ͖͑Δͷ͋Γͩͱࢥ͍·͢ɻ