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
560
0
Share
TOKIWANOMORI-20180901
トキワの森LT大会(2018/09/01)でLT発表した資料です。
MzRyuKa
September 01, 2018
More Decks by MzRyuKa
See All by MzRyuKa
EDI_LT_Elixir_books_story
mzryuka
0
690
インフラ勉強会LT資料:自分の本を宣伝するLT
mzryuka
1
160
Internet-Oldman-2_LT-today-no2
mzryuka
0
330
Ginza.js #1 LT_Draw_LineChart
mzryuka
1
550
「ドラクエに学ぶチームマネジメント」読書会第5章
mzryuka
1
270
WebEngineerMeetup10_cui_quiz
mzryuka
1
2k
pplog_5thbd_lt
mzryuka
0
290
aniben-20180823
mzryuka
1
1.4k
Other Decks in Programming
See All in Programming
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.9k
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
270
2026-03-27 #terminalnight 変数展開とコマンド展開でターミナル作業をスマートにする方法
masasuzu
0
330
ルールルルルルRubyの中身の予備知識 ── RubyKaigiの前に予習しなイカ?
ydah
1
180
10年分の技術的負債、完済へ ― Claude Code主導のAI駆動開発でスポーツブルを丸ごとリプレイスした話
takuya_houshima
0
2.5k
JAWS-UG横浜 #100 祝・第100回スペシャルAWS は VPC レスの時代へ
maroon1st
0
130
VueエンジニアがReactを触って感じた_設計の違い
koukimiura
0
170
2026_04_15_量子計算をパズルとして解く
hideakitakechi
0
100
iOS機能開発のAI環境と起きた変化
ryunakayama
0
180
Laravel Nightwatchの裏側 - Laravel公式Observabilityツールを支える設計と実装
avosalmon
1
330
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
490
AIベース静的検査器の偽陽性率を抑える工夫3選
orgachem
PRO
2
120
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
250
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
250
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.2k
Design in an AI World
tapps
0
190
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
How to Talk to Developers About Accessibility
jct
2
180
A better future with KSS
kneath
240
18k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
170
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
170
A designer walks into a library…
pauljervisheath
211
24k
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Ͱஔ͖͑Δͷ͋Γͩͱࢥ͍·͢ɻ