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
550
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
680
インフラ勉強会LT資料:自分の本を宣伝するLT
mzryuka
1
160
Internet-Oldman-2_LT-today-no2
mzryuka
0
330
Ginza.js #1 LT_Draw_LineChart
mzryuka
1
540
「ドラクエに学ぶチームマネジメント」読書会第5章
mzryuka
1
270
WebEngineerMeetup10_cui_quiz
mzryuka
1
1.9k
pplog_5thbd_lt
mzryuka
0
280
aniben-20180823
mzryuka
1
1.4k
Other Decks in Programming
See All in Programming
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.4k
2026年 エンジニアリング自己学習法
yumechi
0
140
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
AgentCoreとHuman in the Loop
har1101
5
240
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
2.5k
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
1
2.6k
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
190
今から始めるClaude Code超入門
448jp
8
8.9k
Package Management Learnings from Homebrew
mikemcquaid
0
230
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
750
AIによる開発の民主化を支える コンテキスト管理のこれまでとこれから
mulyu
3
370
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
200
Featured
See All Featured
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
220
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
250
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.6k
Exploring anti-patterns in Rails
aemeredith
2
250
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
450
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Crafting Experiences
bethany
1
49
Designing Experiences People Love
moore
144
24k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.7k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
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Ͱஔ͖͑Δͷ͋Γͩͱࢥ͍·͢ɻ