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
STYLE
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Koichi ITO
November 21, 2025
Programming
2.2k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
STYLE
北陸Ruby会議01 (
https://regional.rubykaigi.org/hokuriku01
)
Koichi ITO
November 21, 2025
More Decks by Koichi ITO
See All by Koichi ITO
Reframing the Agile Manifesto
koic
5
2.7k
The NotImplementedError Problem in Ruby
koic
1
1.6k
Exploring RuboCop with MCP
koic
0
6.6k
Ruby and LLM Ecosystem 2nd
koic
1
2.2k
Ruby and LLM Ecosystem
koic
3
13k
Write Code Every Day
koic
1
2.7k
Bliki (ja), and the Cathedral, and the Bazaar
koic
7
3.2k
Welcome to the LLM Club
koic
0
420
RuboCop: Modularity and AST Insights
koic
3
5.8k
Other Decks in Programming
See All in Programming
型も通る、synthも通る、それでも危ない 〜AIのCDKの権限とコストを機械で検証する〜 / It Passes Type Checks, It Passes Synth Checks, but It’s Still Risky — Automatically Verifying Permissions and Costs in AI’s CDK —
seike460
PRO
1
540
PHP Application における Kubernetes 内 gRPC 通信
ganchiku
0
590
freee が目指す データ マネジメント戦略 AI-Ready 時代を支える 攻めのガバナンスとは
freee
PRO
0
300
Apache Hive: Toward a Cloud Native Lakehouse
okumin
0
180
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
200
Cloudflare is Agents
chimame
0
150
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
180
【やさしく解説 設計編・中級 #4】ルールの寿命と、システムの年輪
panda728
PRO
2
180
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
600
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
220
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
1
260
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
The Limits of Empathy - UXLibs8
cassininazir
1
600
The Cost Of JavaScript in 2023
addyosmani
55
10k
Scaling GitHub
holman
464
140k
A Soul's Torment
seathinner
6
3.4k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
Transcript
45:-& ,PJDIJ*50&4. *OD 3VCZձٞ ੴݝཱਤॻؗ
w044ϓϩάϥϚʔ w3VCP$PQίΞνʔϜίϛολʔ w.$1TUFFSJOHHSPVQϝϯόʔ</&8> wגࣜձࣾӬγεςϜϚωδϝϯτ &4. *OD ΤϯδχΞϦϯάϚωʔδϟʔ σΟεςΟϯάΠογϡυɾΤϯδχΞ @koic
w 3VCZ,BJHJ দࢁ w 4DSVN'FTU0TBLB େࡕ w ͳ͕Β3VCZձٞ
ذෞ w 3VCZ8PSME$POGFSFODF দߐ w 3VCZձٞ ۚ &4.ೖࣾपπΞʔϑΝΠφϧ
None
3VCZձٞͷӬϝϯόʔ 4 Q FBLFS -5 4 Q FBLFS !LPJD !ZPTIJOP
!UBJKV !GVHBLLCO !KVOL !OTHD !NBJNVYY !LBTVNJQPO !XBJEPJ !IBNDBQ 4 Q POTPS 5BML 4 Q FBLFS !N@QJYZ " UUFOEFF " UUFOEFF " UUFOEFF " UUFOEFF " UUFOEFF " UUFOEFF " UUFOEFF
wਓੜͷঢ়گʹ͋Θͤͨ ϥΠϑελΠϧΛଚॏ͢Δ wؔ౦ݍɺҪɺ࣎լɺژ Վࢁɺౡࠜɺٶ࡚͔Βͷ ϦϞʔτϫʔΫ 🗾 ಇ͖ํͷଟ༷Խͱ࠾༻ํ ઈࢍɺશࠃ࠾༻தʂݱࢀՃϝϯόʔ·Ͱ͓ؾܰʹֻ͓͚͍ͩ͘͞ʂ
w มԽͷ͍--.पลٕज़ʹ͍ͭͯͷ w ༧ࢉͷ͍ͭͨ෦׆ಈ w Ӭࣾ4MBDLͷMMNDMVCνϟϯωϧ w ઈࢍ෦һืूத w ೖࣾ͢Δ͚ͩͰɺΕͳ͘ೖ෦Ͱ͖·͢
େنݴޠϞσϧ --. ݚڀ෦
ࠓͷ
IUUQTSFHJPOBMSVCZLBJHJPSHIPLVSJLV
None
IUUQTSBJMTIPTUJOHDPNXIJDISVCZHFNTEPZPVMPWF
IUUQTSBJMTIPTUJOHDPNXIJDISVCZHFNTGSVTUSBUFZPVUIFNPTU
3VCP$PQ
45:-& ࠓܺؒͷ͋ΔΛ͖࣋ͬͯ·ͨ͠
͋ͳͨͷ Έʁ
จࣈྻϦςϥϧ require 'csv' γϯάϧΫΥʔτ μϒϧΫΥʔτ require "csv" w ॻ͘ͱ͖͍͚Λ ߟ͑ͳͯ͘ྑ͍
w JOTQFDUͷ݁Ռ μϒϧΫΥʔτ͔ͩΒ w ࣜల։ಛघจࣈ͕ ͳ͍͜ͱ͕໌֬ʹͳ Δ
)BTIϦςϥϧͷׅހͷۭന {key: value} ۭനͳ͠ ۭന͋Γ { key: value } w
Α͘ݟ͖ͯͨίʔυ ͕ͦ͏͔ͩΒ w ۭന͋Γͷ1SPDͱ ҟͳΔͷ͔ͩΒ w ྻϦςϥϧͱಉ༷ ʹۭനͳ͠
ྻϦςϥϧͷׅހͷۭന [first, second, third] ۭനͳ͠ ۭന͋Γ [ first, second, third
] w )BTIϦςϥϧͰ ۭന͋Γ͔ͩΒ SVCPDPQSBJMTPNBLBTF w )BTIϦςϥϧͰ ۭനͳ͔ͩ͠Β w Α͘ݟ͖ͯͨίʔυ ͕ͦ͏͔ͩΒ
ϒϩοΫͷ\^ͱEPFOE expression { foo } ηϚϯςΟοΫ ߦΧϯτ w ࣜ\^ͰจEPFOEͱ͍͚ w
EPFOEDIBJOFOE͍ͯ͠ͳ͍ w େߐށ3VCZձٞͰEPFOEͷ ՃΛੴ௩ܡथ͞Μ͕ޠΔ expression do foo end w ୯Ұߦͷͱ͖\^Ͱෳߦͷͱ͖ EPFOE w Α͘ݟ͖ͯͨίʔυ͕ͦ͏͔ͩΒ w ॳ৺ऀʹ͍͚͍ͩ͢͠Ζ͏ ͑ʔ statement do foo end ࣜ จ ෳߦ
ϒϩοΫ͖ϝιουνΣʔϯͷվߦ foo { bar } .baz .qux ߦ಄ ߦ w
৽ͨͳϝιουνΣʔϯΛ૿ ͢ͱ͖EJ ff ͕࠷খʹͳΓ͏Δ w υοτ͕ἧ͏ foo { bar }. baz. qux w ߦ͕ଓ͘͜ͱ͕ͦͷ ߦͰΘ͔Δ
ϒϩοΫ͖ϝιουνΣʔϯͷվߦ foo { bar }.baz.qux ϒϩοΫͰվߦ w ͦͦυοτͰվߦ͠ͳ ͍ w
Πϯσϯτͷσσϯτ
)BTIϦςϥϧͷඌΧϯϚ { foo: one, bar: two } ͳ͠ ͋Γ w
ࢹ֮తɺ࣮࣭తʹ ΤϯτϦ͕ଓ͘Θ͚ Ͱͳ͍ͷͰෆཁ w ࠷ޙͷཁૉͷޙΖ ΤϯτϦՃ࣌ʹEJ f ͕࠷খʹͳΔ { foo: one, bar: two, }
45:-& Έ
ଟ༷ੑ
ʮԶୡΑ͘ʰۂ͕όϥ όϥͩͶʱͱݴΘΕΔ͚ ͲɺԿͰόϥόϥͩͱ͍ ͚ͳ͍ͷ͔ɻ͔ͩΒൽ ʹʰόϥόϥͳͷ͕Զ ୡͷελΠϧͰ͢ʱͱݴ ͑ͨΒͱࢥͬͨʯ + ʮ45:-&ʯͷઌഐʹֶͿ IUUQTKBXJLJQFEJBPSHXJLJ45:-&@
-6/"@4&"ͷΞϧόϜ -6/"4&"ʮ45:-&ʯ
ͭ·ΓΦϨ ͨͪͰʁ
3VCP$PQͷ ͍ͮΒ͞୳Δ
Λ౿·͑ͨެֶࣜ IUUQTEPDTSVCPDPQPSHSVCPDPQJOEFYIUNMQIJMPTPQIZ
w 3VCP$PQ3VCZ4UZMF(VJEFͷϥϯλΠϜ࣮ w ॳظʹࢦͨ͠ͷHPGNUతͳେ౷ҰϑΥϚολʔ w 3VCZίϛϡχςΟʹڝ߹͢ΔελΠϧΈ͕͋Δ͜ ͱʹؾͮ͘ FHμϒϧΫΥʔτɺγϯάϧΫΥʔτ w
ҰൠతͳελΠϧΛߏՄೳʹ͢ΔΑ͏ʹͳΔ w ελΠϧΨΠυΛσϑΥϧτͱͭͭ͠ɺΈͷҧ͍Λड ͚ೖΕΔͱ͍͏ֶʹجͮ͘Α͏ʹͳΔ 3VCP$PQͷֶαϚϦʔ
w ࣮͍ͮΒ͍ͷϓϩδΣΫτ͝ͱʹى͖ ΔελΠϧͷҧ͍͕ຊ࣭Ͱͳ͍ͷͰʁ w ࠷SVCPDPQEJTBCMFͰແޮԽ͢ΔDPQΛ ߟ͑ͯΈΑ͏ w ࢥ͍ු͔ͼ·͔ͨ͠ʁ ελΠϧͷҧ͍Λड͚ೖΕΔલఏͱ͢Δ
.FUSJDT"CD4J[F
w .FUSJDT"CD4J[F3VCP$PQࣗઃఆͰ σϑΥϧτ͔ΒᮢΛ্͍͛ͯΔ w .FUSJDTܥͷDPQ༑ୡͷ.FUSJDTܥDPQΛ ࿈Εͯͬͯ͘Δ w .FUSJDTͷ"CD4J[F 1FSDFJWFE$PNQMFYJUZ
$ZDMPNBUJD$PNQMFYJUZͷίϯϏωʔγϣϯ .FUSJDTͷσϑΥϧτݫ͗͢͠Δ
# .rubocop.yml Metrics: Enabled: false ઈରతͳઃఆͱ͍͏Θ͚Ͱͳ͘ɺखૣ͍͍ͮΒ͞؇ͷͨΊͷҰྫͰ͢
*BNUIFUSJHHFS 8PSET(PE0OMZ,OPXT XPOUXPSLGPSNF -6/"4&"ʮ.05)&3ʯ
#VUTUJMMTFBSDIGPSMJHIU IUUQTHJUIVCDPNSVCPDPQSVCPDPQJTTVFTJTTVFDPNNFOU
l ίϛϡχςΟͱ୭͔ɻͪΖΜɺ͋ ͳͨͷ͜ͱͩɻ͋ͳ͕ͨίϛϡχςΟ Ͱ͋ΓɺͦΕҎ֎ʹίϛϡχςΟ ͍ͳ͍ɻ͋ͳͨͷΑ͏ͳਓʑͷू·Γ ΛɺίϛϡχςΟͱݺͿͷͩɻ IUUQTNBHB[JOFSVCZJTUOFUBSUJDMFT'PSF8PSEIUNM