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
Rubyを説明するのは難しい(仮) / ruby is difficult
Search
sugamasao
June 29, 2019
Technology
5
9.4k
Rubyを説明するのは難しい(仮) / ruby is difficult
http://regional.rubykaigi.org/tochigi08/
とちぎRuby会議08での資料です
sugamasao
June 29, 2019
Tweet
Share
More Decks by sugamasao
See All by sugamasao
EMConf JP 2025 懇親会LT / EMConf JP 2025 social gathering
sugamasao
2
230
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
630
開発生産性、上から見るか 下から見るか / development productivity and cognitive science
sugamasao
12
8.8k
開発の安定性・スループットを定量的に見る #とは / Quantitative view of development
sugamasao
1
1k
SaaS.tech #1 / SmartHR
sugamasao
2
5.9k
Ruby history of my life
sugamasao
2
11k
Perfect Ruby on Rails v2
sugamasao
0
20k
Ruby on Rails 6.0 New Feature
sugamasao
1
12k
書籍執筆ツールRe:VIEWのご紹介 / yapc8oji
sugamasao
0
440
Other Decks in Technology
See All in Technology
書籍『入門 OpenTelemetry』 / Intro of OpenTelemetry book
ymotongpoo
10
660
俯瞰と個別の⼆つの視点で紡ぐ スクラムマスターの成⻑と協働 / Dual Views Weaving Scrum Master Growth
toma_sm
1
120
テクスチャ画像付きのメッシュモデルを3次元点群へ変換する
kentaitakura
1
350
Oracle Cloud Infrastructure IaaS 新機能アップデート 2024/12 - 2025/02
oracle4engineer
PRO
0
150
最近のラズピッピいじり / 20250308-rpijam-13th-birthday
akkiesoft
0
300
neoAI_千葉講演資料_250311_配布用.pdf
iotcomjpadmin
0
180
越境するプロダクトエンジニアリング
liaoziyang
0
110
エンジニアの健康管理術 / Engineer Health Management Techniques
y_sone
8
7.1k
なぜ「Event Sourcing」を選択したのか〜事実に基づくことの重要性〜/Why did we choose "Event Sourcing"?
bitkey
0
210
AI活用の壁を超える! 開発組織への普及の秘訣
kouryou
0
140
MLflowはどのようにLLMOpsの課題を解決するのか
taka_aki
0
190
# Azure Cosmos DB パフォーマンス最適化入門 - 設計・開発・運用の実践テクニック
shibayan
0
160
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.6k
GitHub's CSS Performance
jonrohan
1030
460k
Facilitating Awesome Meetings
lara
53
6.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Docker and Python
trallard
44
3.3k
GraphQLの誤解/rethinking-graphql
sonatard
69
10k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Bash Introduction
62gerente
611
210k
VelocityConf: Rendering Performance Case Studies
addyosmani
328
24k
Adopting Sorbet at Scale
ufuk
75
9.3k
How to Ace a Technical Interview
jacobian
276
23k
Transcript
RubyΛઆ໌͢Δͷ ͍͠ʢԾʣ ͱͪ͗Rubyձٞ08(2019/6/29)
[email protected]
RubyΛઆ໌͢Δͷ ͍͠ ͱͪ͗Rubyձٞ08(2019/6/29)
[email protected]
ʢϓϩάϥϜΛڭ͑Δ࣌ʹʣ
ͱ͜ΖͰͩΕʁ • HN sugamasao • PN ͕͢ΘΒ·͞ͷΓ • Rubyྺ 13͘Β͍(…!!)
• RailsͦΜͳʹಘҙͰͳ͍ • Rubyʹؔ͢ΔΛ͍͔ͭ͘✍͠·ͨ͠
ࣥචྺ 2013 ύʔϑΣΫτRuby(ڞஶ) 2014 WebΞϓϦΤϯδχΞཆಡຊ(ڞஶ) 2014 ύʔϑΣΫτRuby on Rails(ڞஶ) 2017
վఆ2൛ ύʔϑΣΫτRuby(ڞஶ) 2018 ͔ΜͨΜRuby(୯ஶ) 2019 ???
͔ΜͨΜRubyࣥචͷࡍʹ͠ ͍ͳʙͱࢥͬͨ෦ͱɺ࠷ऴత ʹͲ͏͍͏આ໌ʹͳ͔ͬͨΛղ આͯ͠ɺօ͞Μͷࠓޙͷࢀߟʹ ͳΔͱྑ͍ͳͱࢥ͍·͢ ͜͏͍͏આ໌Ͱ͏·͍ͬͨ͘Αʂͱ͍͏͓ Λ͓࣋ͪͷํ৭ʑڭ͍͑ͯͩ͘͞
͔ΜͨΜRuby ͱʁ
͔ΜͨΜRuby lຊॻɼʮ͘ɾਖ਼͘͠ɾ৽͘͠ʯΛ ίϯηϓτʹ3VCZͰϓϩάϥϛϯάΛ ͡ΊΔʹͨͬͯجຊతͳ͜ͱ͢ ֶͯशͰ͖Δ༰ͱͳ͍ͬͯ·͢ɻ ʢҎԼུʣz https://gihyo.jp/book/2018/978-4-7741- 9861-3 “͔ΜͨΜγϦʔζ”ͷRuby൛
͍ΘΏΔ ೖॻ
ࣥචςʔϚ • ଞͷݴޠͷ͕ࣝͳͯ͘Rubyͷجຊ͕Θ͔Δ • RubyͷϦϑΝϨϯεϚχϡΞϧΛಡΊΔΑ͏ʹͳΔ • ࣮ࡍʹΘΕΔίʔυ͕Rubyͷίʔυͱͯ͠ಡΊΔ ʢ͋Δ͍ௐΒΕΔʣΑ͏ʹͳΔ
ଞͷݴޠͷ͕ࣝͳͯ͘ Rubyͷجຊ͕Θ͔Δ
ଞͷݴޠͷ͕ࣝͳͯ͘Rubyͷجຊ͕Θ͔Δ ·͋ೖॻͳͷͰɾɾɾ hogeݴޠͷ֓೦RubyͰݴ͏ͱ͜͏ͩΑʂ Ͱͳ͘ɺϓϩάϥϛϯάͱͯ͠ͷجຊΛ͑ ΒΕΔΑ͏ʹ : https://magazine.rubyist.net/articles/0001/0001-Hotlinks.html
RubyͷϦϑΝϨϯεϚχϡΞϧ ΛಡΊΔΑ͏ʹͳΔ
RubyͷϦϑΝϨϯεϚχϡΞϧΛಡΊΔΑ͏ʹͳΔ ͜ͷҟৗʹͩ͜Θ͍ͬͯͯɺຊॻͰ ղઆ͢Δͱ͖ϦϑΝϨϯεϚχϡΞϧͷ ϦϯΫΛ͚͍ͭͯΔ ʢϦϑΝϨϯεϚχϡΞϧͷಡΈํ͔Βղઆ͕͋Δκʣ ʢΈࠐΈϥΠϒϥϦͱඪ४ఴϥΠϒϥϦͱ͔͍ܰॳݟࡴ͠ ͩ͠……ʣ : ࡞ͬͯΈ͍ͨͷ͕ࢥ͍͍ͭͯௐํ͕Θ͔Βͳ͍ͱͲ͏ʹͳΒ ͳ͍ͷͰɺ࠷ॏཁͳͩͱߟ͍͑ͯ·͢
࣮ࡍʹΘΕΔίʔυ͕ಡΊΔ
࣮ࡍʹΘΕΔίʔυ͕ಡΊΔ ૉͳղઆʹऴ࢝ͯ͠͠·͏ͱɺ%ه๏ͷΑ͏ͳ આ໌༏ઌͱ͍ͯ͠ʢ͋Ε͜Εͱઆ໌͢Δͱ͕ൃࢄ͠ ͪΌ͏ͷͰʣ͚Ͳ࣮ίʔυͰ;ͭ͏ʹग़ͯ͘ΔɺΈͨ ͍ͳͷͲ͏ʹ͔ͯ͠ղઆ͍ͯ͋͛ͨ͠ ຊΛಡΜͰ͍Δ࣌Ͱ͖ͪΜͱཧղͰ͖ͳͯ͘ ʮͬͯʯ͍ΕʮௐʯΒΕΔͣͳͷͰ
ͱ͜ΖͰ
ೖॻͱݴͬͯ ରಡऀϨϕϧʹΑͬͯ ΓޱҟͳΓ·͢
https://speakerdeck.com/igaiga/dive-into-code-rails-ruby-books?slide=10 @igaiga555͞ΜʹΑΔ࠷ۙͷॻ੶ͷྨ
͔ΜͨΜRuby ʮଞݴޠܦݧ͋Γʯ ͷதͰϏΪφʔ͚
……ͱ͍͏Ϩϕϧײʹ͍ͭͯ ղઆΛ࡞͍ͬͯͨͷͰ͕͢ɺ ΑΓత֬ͳจষʹग़ձͬͨͷ ͰҾ༻͠·͢Ͷ
Matz͞ΜʹΑΔΦεεϝ https://jp.quora.com/ Ruby%E8%A8%80%E8%AA%9E%E3%82%92%E5%AD%A6%E3%81%B3%E5%A7%8B%E3%82%81%E3%82%8 B%E3%81%AE%E6%99%82%E3%81%AB%E4%B8%80%E7%95%AA%E3%82%AA%E3%82%B9%E3%82%B9% E3%83%A1%E3%81%AE%E6%9B%B8%E7%B1%8D%E3%81%AF%E3%81%A9%E3%82%8C ͍͢͝త֬!!!
ʢಥʣ RubyΛଞͷਓʹ ڭ͑Δͷͬͯ ͘͠ͳ͍Ͱ͔͢ʁ
ϜζΧγΠφʔͱ ࢥͬͨ͜ͱ͕͋Δਓ ʢ͍͕ࡶ͗͢·͢Ͷʣ
ͳΔ΄Ͳʙ
ຊ
࣍ͷίʔυΛݟͯ ࡞ऀͷؾ࣋ͪΛ ߟ͑Α ※కΊΓͷϓϨογϟʔࣥච͕πϥ͍ͳͲৗ࣌ ൃಈ͍ͯ͠ΔͷͰɺ͜͜Ͱߟ͑ͳ͍ͷͱ͢Δ
Hello, world!ͷαϯϓϧίʔυΛ ղઆ͍ͨ͠ puts "Hello, world!"
࡞ऀͷߟ͑ hogeݴޠʹൺͯγϯϓϧʹॻ͚ΔΑʢͱݴ͍ ͍͕ͨΠϚυΩͦΕΛϝϦοτͱ͢Δ͔ʁʣ putsϝιουΛͬͯจࣈྻΛग़ྗ͢ΔΑ Kernelʹఆ͍ٛͯ͠Δϝιουͩؔ͠෩ϝ ιουͬͯݴͬͨํ͕ྑ͔ͬͨΓ͢Δͷ͔ͳ ͦͦϨγʔόͷͳ͍ϝιουӠʑͷઆ໌Α ͍͍ɺͦͦputsϝιουͬͯԿͩΑ w w
w w ࠓͷஈ֊Ͱͦ͜·Ͱݴ͏ඞཁͳ͍ɺৄࡉΛઆ໌ ͤͣʹ͑ͳ͍ͱͩ
ຊॻͷ͑ ͜͏ͳΔ P24
ຊॻΛॻ্͘Ͱ ߟ͍͑ͯͨॏཁ ͳϙΠϯτ✅
ղઆΛ͢Δ্Ͱ ՄೳͳݶΓ Ұͭͷ͜ͱΛઆ໌ ͍ͨ͠
͔͠͠ɺલఏࣝ ͷੵΈॏͶι ͷͳ͍γϯϓϧͳ આ໌Λ͢Δͷ ͱͯ·͍͠
ྫ͑
Rubyʹؔ͢Δઆ໌Λ؆୯ͳ ༰͔Βॱংཱͯઆ໌͢Δ ͷ͍͠
Rubyʹؔ͢Δઆ໌Λॱংཱͯߟ͑Δ • ΠϯτϩμΫγϣϯ • จࣈྻʹ͍ͭͯͷղઆ • ੍ޚߏจʹ͍ͭͯ • ྻʹ͍ͭͯ :
• ΠϯτϩμΫγϣϯ • จࣈྻʹ͍ͭͯͷղઆ • ੍ޚߏจʹ͍ͭͯ • ྻʹ͍ͭͯ : Rubyʹؔ͢Δઆ໌Λॱংཱͯߟ͑Δ
puts "Hello, world!" puts 1 + 1 puts "#{10 *
2}" ͜͜Βลฏ
puts "Hello, world!".upcase 3.times do |n| puts “=> #{n}” end
్ʹݫ͘͠ͳΔ
puts "Hello, world!".upcase 3.times do |n| puts “=> #{n}” end
్ʹݫ͘͠ͳΔ !? !? !? !?
• ϝιου • ʹΫϥεͷઆ໌͕ඞཁ • ϒϩοΫ • ϒϩοΫҾ ్ʹݫ͘͠ͳΔ
͜ΕΒͷػೳΛ จࣈྻͷ͍ͭͰʹ આ໌͢ΔΘ͚ʹ͍͔ͳ͍
ಥવ͜ΕΒͷઆ໌Λ࢝ΊͨΒ “ύϧεͷϑΝϧγͷ ϧγ͕ίΫʔϯͰύʔδ” Έ͍ͨʹͳΔ
ͰͲ͏͢Δ͔
……
……
None
ʢૂ͍ͱͯ͠ʣΦϒδΣΫτࢦʹ ͍ͭͯղઆ͢Δͱ͍͏ΑΓ ”ΦϒδΣΫτ””ϝιου”ͳͲͷ ֓೦͕͋Δ͜ͱΛ͍ͬͯͯ΄͍͠
ʰ͜ͷੈքʱͰͦʔ͍͏ͷ ͩͱʰཧղʱͯ͠Β͏
Rubyʹؔ͢Δઆ໌Λ؆୯ͳ ༰͔Βॱংཱͯઆ໌͢Δ ͷ͍͠ ऴΘΓ
ϓϩάϥϜతͳҙຯͰΫϥε ͷઆ໌͕͍͠
ࣗͰΫϥεΛఆٛ͢Δ·Ͱ ૉͳੈք ϩʔΧϧมΛ͍ɺΈࠐΈϥΠϒϥϦͱ ༡ΜͰΒ͍͚ͯ͠Δ
Ϋϥεͷఆٛํ๏ΛΔͱಥવ ੈք͕։͚͗͢Δ
• Πϯελϯεม • Ϋϥεม • ϩʔΧϧม ʢࠓ·ͰԿؾͳ͍ͬͯͨ͘มͷਖ਼ମʣ • self Ξοϓ࢝͠ΊΔมͨͪ
• ΠϯελϯεԽ • Πϯελϯε/Ϋϥεϝιου • ϝιουͷՄࢹੑ • ΞΫηοαϝιου • ܧঝ
• Etc Ϋϥεʹ·ͭΘΔػೳͨͪ
ͪΐͬͱઆ໌͢Δ͜ͱଟ͗͢ ͠ͳ͍͔Ͷʁ
Ͳ͏ͬͯઆ໌͢Δ͔ɺɺɺ
ɺɺɺ
ؤுͬͯઆ໌͢Δ͔͠ͳ͍
“ʮҰ൪ͷۙಓԕճΓͩͬͨʯ ʮԕճΓ͕ͦ͜Զͷ࠷ͷಓͩͬͨʯ” -δϟΠϩɾπΣϖϦ-
None
Ͳ͏ݟͯ͜ͷষ͚ͩେมͳϘ ϦϡʔϜͰ͢ɻຊʹ͋Γ͕ͱ ͏͍͟͝·ͨ͠
ϓϩάϥϜతͳҙຯͰΫϥεͷઆ ໌͕͍͠ ऴΘΓ
;ͭʔʹઆ໌͢ΔͱऄͬΆ͘ͳ Δ͚ͲͲ͏ͯ͠આ໌͍ͨ͠ ʢͷͰઆ໌ͨ͠ʣػೳ/Έ ͦͷଞ
จࣈίʔυ ࠓͷRubyσϑΥϧτΤϯίʔσΟϯά UTF-8ͷ࣌ͳͷͰ;ͭ͏ʹ͏ʹࠔΒͳ͍ ͔͠͠ɺCSV<->Excelͷѻ͍ૉʹ࡞ΒΕͨ Windows࢈ςΩετϑΝΠϧͳͲɺ༉அ͢Δͱ UTF-8Ҏ֎ͷͷʹग़ձ͏͜ͱ͋Δ
จࣈίʔυ
array.map(&:upcase)ͷΞϨ ϒϩοΫΛলུͯ͠&:methodΛ͢ʔͭ ਖ਼ɺೖॻͷϨϕϧײͱͯͪ͠ΌΜͱͨ͠ આ໌Λ͢Δʹ͍͠ʢ͍͜͠ʣ͚Ͳɺ ࣮ίʔυͰ;ͭ͏ʹΘΕΔͷͳͷͰ આ໌͠ͳ͍Θ͚ʹ͍͘·͍
array.map(&:upcase)ͷΞϨ
;ͭ͏ʹࠔͬͨ
γϯϘϧͷઆ໌ Ή͔ͣ͗͢͠Ο!!
จࣈྻΈ͍͚ͨͩͲจࣈྻ͡Ό ͳͯࣝ͘ผࢠʢࣝผࢠͱʣ తʹ͏ΜͩΑɺΈ͍ͨͷΛͳ Μͱͳ͘Θ͔ͬͨؾʹͳΔΑ͏ ͳઆ໌Λ͠ͳ͍͚ͯ͘ͳ͍ͩ ͱʁʁʁ
ΨνͰࠔ͍ͬͯΔͷͰࡓ͑ͨઆ໌ ͷํ͕͋Εڭ͍͑ͯͩ͘͞!!1
͓͠Ζ͔ͬͨΒ ྑ͍δϟϯʂͯ͠Ͷʂʢʁʁʁʣ ࠷ޙʹ ʮೖॻΛॻ͘ͷɺͲ͏ʹ͔ͳΔΖʯͱܰ͘ ߟ͍͑ͯͨΒࢮ͵΄ͲେมͰͨ͠ օ͞ΜղઆͰۤ࿑͍ͨͯ͠͠Δ͕ ͋Εͥͻڭ͍͑ͯͩ͘͞☺
ࢀߟจݙ • ͔ΜͨΜRuby • https://gihyo.jp/book/2018/978-4-7741-9861-3 • θϩ͔ΒΘ͔Δ Ruby ೖ •
https://gihyo.jp/book/2018/978-4-297-10123-7 • Ruby͓ΑͼRailsॻ੶ͷྨͱҰߟ • https://speakerdeck.com/igaiga/dive-into-code-rails-ruby-books • Rubyist Hotlinks ʲୈ 1 ճʳ ·ͭͱΏ͖ͻΖ͞Μ • https://magazine.rubyist.net/articles/0001/0001-Hotlinks.html • RubyϦϑΝϨϯεϚχϡΞϧ • https://docs.ruby-lang.org/ja/latest/doc/index.html
͕࣌ؒ༨ͬͨ༻ ॻ੶Λࣥච͢Δͱɺվϖʔδͷ߹Ͱ༨ന͕ଟ ͘ͳͬͯ͠·͏߹͕͋Γ·͢ ͜ͷΑ͏ͳ࣌ɺίϥϜͰຒΊͯ͘ΕʙͱݴΘΕ ΔͷͰίϥϜΛॻ͘ͷͰ͕͢ɺׂͱ͖উख͔ ָ͚͍ͯ͠Ͱ͢ ίϥϜͷதͰ͍͔͓ͭ͘ؾʹೖΓΛհ͠·͢
None
None
None
͍ͬͯ͏͔ϓϩάϥϛ ϯάࣗମ͕Ή͔͍ͣ͠