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を使った10年の個人開発でやってきたこと
Search
Koji Shimba
June 28, 2025
1
2.3k
Rubyを使った10年の個人開発でやってきたこと
関西Ruby会議08での発表資料です
https://regional.rubykaigi.org/kansai08/
Koji Shimba
June 28, 2025
Tweet
Share
More Decks by Koji Shimba
See All by Koji Shimba
AnnictにFastlyを導入した話
shimbaco
4
2.4k
Annictの運用で開発以外にやっていること
shimbaco
4
2.9k
ぼくのRailsアップグレード体験記 ~前編~
shimbaco
0
960
React Native入門
shimbaco
0
1.6k
使った気になるFastly入門
shimbaco
1
880
DeploybotとSlackで作るデプロイ環境
shimbaco
4
1.8k
Featured
See All Featured
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Building a Scalable Design System with Sketch
lauravandoore
462
33k
The Language of Interfaces
destraynor
158
25k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
The World Runs on Bad Software
bkeepers
PRO
70
11k
A Modern Web Designer's Workflow
chriscoyier
695
190k
Agile that works and the tools we love
rasmusluckow
329
21k
Making the Leap to Tech Lead
cromwellryan
134
9.5k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
Transcript
,PKJ4IJNCB !TIJNCBDP ؔ3VCZձٞ 3VCZΛͬͨͷ ݸਓ։ൃͰ͖ͬͯͨ ͜ͱ
ࣗݾհ ,PKJ4IJNCB (JU)VC "OOJDU .FXTU 8JLJOP!TIJNCBDP
"OOJDU .FXTU 8JLJOP ͕࡞͍ͬͯΔ8FCαʔϏεͰ͢
ຊ͓͢͠Δ͜ͱ "OOJDU ΞχΫτ ͷ͜ͱ .FXTU ϛϡʔετ ͷ͜ͱ 8JLJOP ΟΩϊ ͷ͜ͱ
ٕज़తͳ w࠷ۙक͍ͬͯΔ3BJMTΞϓϦͷΫϥεઃܭ
Annict (ΞχΫτ) ͷ͜ͱ
"OOJDU ΞχΫτ ͱʁ BOOJDUDPN ݟͨΞχϝ͕هͰ͖Δ8FCαʔϏε ݄ʹެ։ ιʔείʔυHJUIVCDPNBOOJDUBOOJDU
Ξχϝʹରͯ͠ ࢹௌεςʔλε͕ઃఆͰ͖Δ ͲͷΤϐιʔυΛݟ͔ͨ ײͱҰॹʹهͰ͖Δ "OOJDUͷಛ
ͳͥ"OOJDUΛ࡞͔ͬͨʁ Ҏલ͔ΒݟͨΞχϝΛεϓϨουγʔτͰه͍ͯͨ͠ wొ࡞ۀ͕ࡶͩͬͨ ଞͷαʔϏεར༻͍ͯͨ͠ wࣗͷϢʔεέʔεʹશʹ߹͏αʔϏε͕ͳ͔ͬͨ ࣗͷཉ͍͠ػೳΛશͯຬͨ͢αʔϏεΛ࡞Δ͜ͱʹͨ͠
"OOJDUͷࠓޙ ΞχϝσʔλͷΠϯϑϥʹͳΓ͍ͨ ΞχϝσʔλΛͬͱཧ͍ͨ͘͢͠͠ w"OOJDU%#ͷվળɺσʔλมͷޮԽͳͲ 8FC"1*ͰͰ͖Δ͜ͱΛ૿͍ͨ͠
Mewst (ϛϡʔετ) ͷ͜ͱ
.FXTU ϛϡʔετ ͱʁ NFXTUDPN ϚΠΫϩϒϩάαʔϏε ݄ʹެ։ ιʔείʔυHJUIVCDPNNFXTUDPNNFXTU
λΠϜϥΠϯ࣌ܥྻͷΈ ϙετͷԠʮελϯϓʯͷΈ wϦϓϥΠϦϙετͳ͍ wѱ͍ʹʮ͍͍Ͷʯগ͠ԡͮ͠Β͍ ελϯϓͷࣈެ։͞Εͳ͍ ϑΥϩϫʔͳͲͷใެ։͞Εͳ͍ .FXTUͷಛ
ͳͥ.FXTUΛ࡞͔ͬͨʁ ϗοͱͰ͖Δډॴ͕ཉ͔ͬͨ͠ .FXTUʮιʔγϟϧϝσΟΞʯͰͳ͘ʮϚΠΫϩϒϩάʯ wଞͷਓͷ׆ಈͨ·ͨ·ݟΒΕΔ͘Β͍ͷڑײ
.FXTUͷࠓޙ ϗοͱ͢ΔϚΠΫϩϒϩάʹͳΓ͍ͨ ਓͱͷڑײ͕ۙ͘ͳΓ͗͢ͳ͍༷Λҡ࣋͢Δ ϒϩάͱͯ͠ศརͳػೳΛՃ͍ͨ͠ w݄ผʹࣗͷϙετ͕ݟΒΕͨΓࣗͷϙετ͕ݕࡧͰ͖ͨΓ ৭Μͳ.FXTUΫϥΠΞϯτ͕ੜ·ΕΔΑ͏ʹ8FC"1*Λఏڙ͍ͨ͠
Wikino (ΟΩϊ) ͷ͜ͱ
8JLJOP ΟΩϊ ͱʁ XJLJOPBQQ 8JLJͷΞϓϦ ݄ʹެ։ ιʔείʔυHJUIVCDPNXJLJOPBQQXJLJOP
.BSLEPXOΛϓϨʔϯςΩετͰ ฤूͰ͖Δ ؔ࿈ϖʔδϦετ͔ΒϦϯΫΛ ḷͬͯϖʔδ͕୳ͤΔ ϒϩάͷΑ͏ʹΠϯλʔωοτ্ ʹެ։Ͱ͖Δ ඇެ։Մ 8JLJOPͷಛ
ͳͥ8JLJOPΛ࡞͔ͬͨʁ .BSLEPXOͰॻ͚Δ$PTFOTF چ4DSBQCPY ͷΑ͏ͳͷ͕ཉ͔ͬͨ͠ $PTFOTFͷه๏ॻ͖͖ͯ͘͢ʜ͚ͩͲ wυΩϡϝϯτͷϙʔλϏϦςΟΛߟ͑Δͱ.BSLEPXOͷ΄͏͕Έ w.BSLEPXO֤αʔϏε͕ରԠ͍ͯ͠ΔͨΊ ࣗαʔϏεͷϔϧϓϖʔδΛ8FCϒϥβ͔Β؆୯ʹཧ͍ͨ͠
8JLJOPͷࠓޙ υΩϡϝϯτքͷ(JU)VCʹͳΓ͍ͨ wͨͩ͠ઐࣝ (JUͳͲ ෆཁ wυΩϡϝϯτʹରͯ͠ฤूϦΫΤετΛૹͬͨΓ wෳਓͰυΩϡϝϯτΛཧͨ͠Γ .$1Ͱ--.ͱ࿈ܞͯ͠ฤूϦΫΤετΛ࡞ͬͯΒ͏ wΈ͍ͨͳྲྀΕ͕Ͱ͖ͨΒͦ͏
ͷݸਓ։ൃͰಘͨݟ ͕ࣗཉ͍͠ͷΛ࡞ͬͯҙ֎ͱͬͯΒ͑Δ wͳͷͰ͕ࣗཉ͍͠ͷΛ࡞Δͱྑ͍ wར༻ऀ͕͚ࣗͩͰ͕ࣗศརʹ͑Δ͔Βྑ͍ ଓ͚ΔͨΊʹɺແཧΛ͠ͳ͍ w೩͑ਚ͖ͳ͍Α͏ʹٳΉ ٕज़తͳ࣮ݧ͕ࣗ༝ʹͰ͖Δ
ٕज़తͳ
3BJMTΞϓϦͷΦϨΦϨΫϥεઃܭ աڈʹ৭ʑ͖ͬͯͨ wBQQEFDPSBUPST wBQQFOUJUJFT wBQQRVFSJFT wFUD
ΦϨΦϨΫϥεઃܭ͕ͬ͘͠Γ͜ͳ͍ ͦͷͱ͖ʮྑ͍ύλʔϯͩʂʯͱࢥͬͨΫϥεΛఆٛ͢Δ ΛॏͶΔ ͨͩෳࡶʹͳ͚ͬͨͩͷΑ͏ʹײͯ͡͠·͏ʜ
ͳͥͬ͘͠Γ͜ͳ͔͔ͬͨʁ ύλʔϯΛར༻͢Δత͕യવͱ͍ͯͨ͠ ύλʔϯͷද໘తͳ෦͚ͩΛऔΓೖΕ͍ͯͨ ݁Ռͱͯ͠ϝϯςφϯείετ্͚͕͕ͩͬͨ
ࣗԿΛղܾ͍ͨ͠ͷ͔ʁ τϥϯβΫγϣϯΛுΔॴΛ·ͱΊ͍ͨ wτϥϯβΫγϣϯ͕ೖΕࢠʹͳΔͷΛ͍͗ͨ .PEFMͰίʔϧόοΫΛར༻͢ΔͷΛආ͚͍ͨ wಛʹ෭࡞༻͕͋ΔλΠϓՄಡੑςελϏϦςΟ͕Լ͕Γ͕ͪ 7JFXͰσʔλϕʔεʹΞΫηε͢ΔͷΛආ͚͍ͨ w/ ͷղܾ͕͘͠ͳΓ͕ͪ
ͬͨ͜ͱ ΫϥεఆٛΛߟ͑ͨ͠ ΫϥεؒͷґଘؔΛ໌֬ʹఆٛͨ͠
࠷ۙͷΫϥεఆٛ Ұ෦ൈਮ 7JFX $PNQPOFOU 'PSN .PEFM 3FDPSE 3FQPTJUPSZ 4FSWJDF
7JFX $PNQPOFOU 7JFX wҰൠతͳ3BJMTΞϓϦͷ7JFXͱಉׂ͡ $PNQPOFOU w6*ͷ෦Λίϯϙʔωϯτ୯ҐͰ࡞Γ͘͢͢ΔͨΊʹఆٛ ͲͪΒ7JFX$PNQPOFOUHFNΛ༻͍ͯ͠Δ w$POUSPMMFS͔Β͞ΕΔσʔλΛ໌֬ʹ͢ΔͨΊ
Ϋϥεఆٛ ςϯϓϨʔτ 4PSCFUʹΑΔܕ͚ ड͚औͬͨσʔλ͕ΑΓ໌֬ʹͳΔ 7JFXͷίʔυྫ $PNQPOFOUಉ͡Α͏ʹఆ͍ٛͯ͠Δ
'PSN ۀΤϥʔͷνΣοΫΛߦ͏ wۀΤϥʔʜϢʔβʔ͕ࣗྗͰ෮ؼͰ͖ΔΤϥʔ "DUJWF.PEFM.PEFMͱ"DUJWF.PEFM"UUSJCVUFTΛJODMVEF͍ͯ͠Δ
"QQMJDBUJPO'PSNͷதͰ "DUJWF.PEFM.PEFMͳͲΛJODMVEF͍ͯ͠Δ ۀΤϥʔͷνΣοΫ͜͜Ͱߦ͏ 'PSNͷίʔυྫ
.PEFM Ұൠతͳ3BJMTΞϓϦͷ.PEFMͱগ͠ҟͳΔ ߏମ1030 1MBJO0ME3VCZ0CKFDU ͚͕ͩ֨ೲ͞Ε͍ͯΔ .PEFM͔ΒσʔλϕʔεʹΞΫηε͢Δ͜ͱͳ͍ .PEFMΛ7JFXʹ͢͜ͱͰɺ7JFX͔Βͷσʔλϕʔεࢀর͕͛Δ
54USVDU4PSCFU͕ఏڙ͢Δ ܕ͖ͷߏମ .PEFMͷίʔυྫ
3FDPSE σʔλϕʔεʹΞΫηε͢ΔΫϥε "QQMJDBUJPO3FDPSEΛܧঝ͍ͯ͠Δ
جຊతʹҰൠతͳ3BJMTͷϞσϧͱಉ͡ 3FDPSEͷίʔυྫ
3FQPTJUPSZ 3FDPSEΛ.PEFMʹม͢ΔΫϥε .PEFM͕3FDPSEʹґଘ͠ͳ͍Α͏ʹ͢ΔͨΊɺத͕ؒඞཁͩͬͨ w.PEFMGSPN@SFDPSE SFDPSE ͱ͍ͬͨϝιουఆٛ͠ͳ͍ جຊతʹ.PEFM͝ͱʹͭͷ3FQPTJUPSZΛఆ͍ٛͯ͠Δ
UP@NPEFMͷதͰ ϞσϧΦϒδΣΫτΛੜ͍ͯ͠Δ 3FQPTJUPSZͷίʔυྫ
4FSWJDF σʔλͷӬଓԽΛߦ͏ τϥϯβΫγϣϯ͜ͷதͰ։࢝͢Δ ϏδωεϩδοΫॻ͔ͳ͍ w3FDPSE.PEFMʹॻ͘Α͏ʹ͢Δ
ݺͼग़͠ݩʹඞཁͳ σʔλΛ֨ೲ͢Δߏମ τϥϯβΫγϣϯΛ։࢝͢Δ τϥϯβΫγϣϯऴྃޙʹ ࣮ߦ͍ͨ͠ॲཧΛॻ͘ ίʔϧόοΫར༻͠ͳ͍ 4FSWJDFͷίʔυྫ
Ϋϥεؒͷґଘؔ ҹͷํ͕ґଘઌʹͳΔ 4FSWJDF4FSWJDFʹґଘ͠ͳ͍ τϥϯβΫγϣϯͷೖΕࢠΛ͙ͨΊ .BJMFS͔Β7JFXͷґଘڐ༰͢Δ ᘳΛࢦ͞ͳ͍ 3FDPSE৭ΜͳΫϥε͕ґଘͯ͠ྑ͍ ͨͩ͠7JFXͱ$PNQPOFOUμϝ ͭͷʹ͚͍ͯΔ
ಠࣗΫϥεઃܭͷੋඇ Ұਓ͔ͩΒͦࣗ͜༝ʹઃܭΛࢼͤΔ ΫϥεઃܭਓʹΑ༷ͬͯʑͳՁ؍͕͋Δ νʔϜ։ൃͰՁ؍ͷҧ͍͔Βઃܭ͕ෳࡶԽ͕ͪ͠ wෳࡶԽΛආ͚ΔͨΊʹඪ४తͳ3BJMTͷߏ .7$ ΛकΔͷྑ͍ͱࢥ͏
·ͱΊ ؒͷݸਓ։ൃͰ࡞ͬͨͷ w"OOJDU .FXTU🆕 8JLJOP🆕 ಠࣗͷΫϥεઃܭ wղܾ͍ͨ͠Λ໌֬ʹ͢Δ͜ͱ͕େࣄ wνʔϜ։ൃͰ౷͕͘͠ɺඪ४ߏΛकͬͨ΄͏͕ྑ͍͜ͱ͋Δ ݸਓ։ൃΛଓ͚Δίπ w͕ࣗཉ͍͠ͷΛ࡞Δ
wແཧΛ͠ͳ͍
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠