Slide 1

Slide 1 text

@amatsuda Coming Soon...💎 @amatsuda

Slide 2

Slide 2 text

ಥવͰ͕͢ɺ

Slide 3

Slide 3 text

OSS΍Γ͍ͨʂ 🛤 Α͍͘ΖΜͳͱ͜ΖͰ૬ஊ͞ΕΔ

Slide 4

Slide 4 text

͍ΖΜͳͱ͜Ζ 🛤 Asakusa.rb 🛤 Ӭ࿨γεςϜϚωδϝϯτ͞ΜͷOSSύονձ 🛤 ͍ΖΜͳձࣾ 🛤 Πϯλʔωοτ

Slide 5

Slide 5 text

🤔

Slide 6

Slide 6 text

ʮ΍Γ͍ͨͳΒ΍Ε͹͍͍ͷ Ͱ͸ʁʯ 🛤 ʮύονΛॻ͘ʯҎ֎ʹ΍Δ΂͖͜ͱ͸ͳ͍ 🛤 ύονΛॻ͘ର৅ͷιϑτ΢ΣΞ͸ੈͷதʹແ਺ʹ ͋Δ

Slide 7

Slide 7 text

🔜

Slide 8

Slide 8 text

ͨͿΜࠓ͙͢ύονΛॻ͔ͳ͍ ཧ༝͸ٕज़ྗෆ଍ͱ͔Ͱ͸ͳ͍ 🛤 ࢓૊Έ 🛤 Ϟνϕʔγϣϯ 🛤 ετʔϦʔ 🛤 ͖͔͚ͬ

Slide 9

Slide 9 text

͖͔͚ͬ͸͞·͟· 🛤 ࠓ೔͸ɺ͍ΖΜͳϓϩμΫτΛ঺հ͠ͳ͕ΒɺͦΕ Λॻ͍͖͔͚ͨͬ΍ͦͷͱ͖ߟ͍͑ͯͨ͜ͱͳͲΛ ͝঺հ 🛤 OSS։ൃʹڵຯ͕͋Δ͚Ͳ࢝Ί͔͕ͨΘ͔Βͳ ͍ɺܧଓͰ͖ͳ͍ɺͱ͍͏ํͷࢀߟʹͳΕ͹

Slide 10

Slide 10 text

ͱ͍͏ײ͡Ͱɺࠓ೔͸ࣗຫΛ
 ͠ʹདྷ·ͨ͠ʂ 🛤 ࣗຫͱࣗըࣗࢍ 🛤 RubyKaigiͰ͍ͭ΋εϐʔΧʔͷօ͞Μʹ͓ئ͍
 ͯ͠Δ΍ͭ

Slide 11

Slide 11 text

self 🛤 name: Akira Matsuda 🛤 GitHub: @amatsuda 🛤 Twitter: @a_matsuda

Slide 12

Slide 12 text

ੈքతʹ༗໊ͳϓϩάϥϚʔ
 ͸͡Ί·ͨ͠

Slide 13

Slide 13 text

ոจॻ

Slide 14

Slide 14 text

https://jp.quora.com/ϓϩάϥϛϯάʹ͓͍ͯ- ੈքతʹ༗໊ͳ೔ຊਓ͸͍/answers/141576838

Slide 15

Slide 15 text

https://twitter.com/joker1007/ status/1157578882184183808

Slide 16

Slide 16 text

ͦΜͳ͜ͱͳ͍Ͱ͢ʼʻ 🛤 ݺ͹ΕΕ͹Ͳ͜Ͱ΋ߦ͘ؾຬʑͳͷʹࠃ಺͔Β͸
 ͥΜͥΜ੠͔͚ͯ΋Β͑ͳ͍͚ͩͳΜͰ

Slide 17

Slide 17 text

Rubyίϛολʔ

Slide 18

Slide 18 text

Railsίϛολʔ

Slide 19

Slide 19 text

͔ͤͬ͘ͷୈ1ճKaigi on RailsͳͷͰ ͪΐͬͱ͚ͩRailsͷ࿩

Slide 20

Slide 20 text

Railsͱࢲ

Slide 21

Slide 21 text

ݹגίϯτϦϏϡʔλʔ 🛤 https://contributors.rubyonrails.org/

Slide 22

Slide 22 text

https:// contributors.rubyonrails.org/

Slide 23

Slide 23 text

SinceͷཝΛݟΔͱΘ͔Δ

Slide 24

Slide 24 text

13೥໨

Slide 25

Slide 25 text

͜ͷதͰɺݱ໾Ͱίϛοτ
 ͯ͠Δਓ 🛤 ҾୀΛද໌ͨ͠΋͘͠͸3೥Ҏ্ίϛοτͯ͠ͳ͍ ਓΛফ͜͠ΜͰΈΔ

Slide 26

Slide 26 text

ݱ໾

Slide 27

Slide 27 text

Railsίϛολʔ͸ͲΜͲΜਓ͕
 ೖΕସΘ͍ͬͯΔ͜ͱ͕Θ͔Δ 🛤 ྺͷઙ͍ϝϯόʔ͕ͨͪ׆༂͍ͯ͠Δ

Slide 28

Slide 28 text

RailsϓϩδΣΫτ͸ɺ௕೥ଓ͍͍ͯΔΘΓ ʹɺ͔ͳΓ݈શʹӡӦ͞Ε͍ͯΔͷͰ͸ͳ͍͔

Slide 29

Slide 29 text

Ruby΍Railsͷपลͷ͍Ζ͍Ζ

Slide 30

Slide 30 text

Asakusa.rbओ࠵ͯ͠·͢

Slide 31

Slide 31 text

Asakusa.rbओ࠵ͯ͠·͢

Slide 32

Slide 32 text

ΦϯϥΠϯͰຖिՐ༵೔ʹ΍ͬͯΔ ͷͰ͓ؾܰʹ༡ͼʹདྷ͍ͯͩ͘͞

Slide 33

Slide 33 text

RubyKaigiͷ
 νʔϑΦʔΨφΠβʔ΍ͬͯ·͢

Slide 34

Slide 34 text

RubyKaigi Takeout 2020͝ࢀՃ ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

Slide 35

Slide 35 text

RubyKaigi 2021 🛤 https://rubykaigi.org/2021

Slide 36

Slide 36 text

Kaigi on Railsͱࢲ

Slide 37

Slide 37 text

ͳΜ͔RailsͷΠϕϯτ΍Γ͍ͨͬͯݴͬͯΔେ૔͞Μ Λogijun͞ΜʹҾ͖߹ΘͤͯKaigi on Railsͷ໊લΛ ݱ୅ʹોΒͤͨͷΦϨΦϨ 🛤 ͱ͍͏࿩͸ઌिͷۜ࠲RailsͰ΋͏΍ͬͨͷͰলུ

Slide 38

Slide 38 text

झຯͰΑ͘ύονΛ
 ॻ͍͍ͯ·͢

Slide 39

Slide 39 text

ࠓिɺͱ͋Δ͓࢓ࣄͷRailsΞϓϦ ͷϦϙδτϦͰूܭͯ͠Έͨ݁Ռ 🛤 Railsຊମ͓ΑͼrailsΦʔΨχθʔγϣϯͰϝϯς͍ͯ͠Δgemͨͪ (16ݸ) 🛤 ࣗ෼͕࡞ͬͨ΋ͷ (6ݸ) 🛤 ϝϯςφΛ΍ͬͯΔ(= ίϛοτݖΛ͍࣋ͬͯΔ)΋ͷ (4ݸ) 🛤 ্هҎ֎ͷ͏ͪɺաڈʹ1ͭҎ্Կ͔Λίϛοτͨ͜͠ͱ͕͋Δ΋ͷ (86ݸ) 🛤 ະίϛοτͷ΋ͷ (211ݸ)

Slide 40

Slide 40 text

ΞϓϦͰbundle͍ͯ͠Δgemͷ͏ͪ 112/323 ʹ͸Կ͔͠Βίϛοτͯͨ͠ 🛤 3෼ͷ1ڧ͙Β͍ 🛤 ͜Μͳײ͡Ͱɺͱʹ͔͍͘ΖΜͳgemΛಡΈॻ͖
 ͠·͘ΔελΠϧ

Slide 41

Slide 41 text

͍ΖΜͳਓ͕ॻ͍͍ͨΖΜͳίʔυΛ ಡΈॻ͖͢Δͷ͸ָ͍͠ͷͰ͓͢͢Ί

Slide 42

Slide 42 text

ͦͷͨΊʹ͸ɺ೔ࠒ͔Β͍ΖΜͳίʔυΛಡΈ ॻ͖͢Δ·ͰͷϋʔυϧΛԼ͓͛ͯ͘ͷ͕େࣄ 🛤 ಡΈ͍ͨɺͱࢥͬͨ࣍ͷॠؒʹ͸αοͱಡΈ࢝ΊΒ ΕΔΑ͏ʹ 🛤 ͦͷ৔Ͱ͙͢ʹύονΛॻ͖࢝ΊΒΕΔΑ͏ʹ

Slide 43

Slide 43 text

OSSϥΠϒϥϦͷίʔυΛಡΜͰ ύονΛॻ͘ϋʔυϧΛԼ͛Δʹ͸ 🛤 ·ͣ͸gem-src

Slide 44

Slide 44 text

💎 gem-src 🛤 ͍ΖΜͳgemͷιʔείʔυ͕ϞϦϞϦऩूͰ͖Δ ΍ͭ 🛤 gem installίϚϯυΛ֦ுͯ͠ɺΠϯετʔϧͷ ͍ͭͰʹgemͷιʔείʔυΛউखʹखݩʹclone ͯ͘͠ΕΔΑ͏ʹ͢Δ

Slide 45

Slide 45 text

ࠓேɺେ͖ͳػೳ௥ՃΛ
 ͠·ͨ͠

Slide 46

Slide 46 text

gem-src as a Bundler Plugin! % bundler plugin install gem-src

Slide 47

Slide 47 text

ࠓ೔·Ͱࠔ͍ͬͯͨ͜ͱ 🛤 ͠͹Β͘લͷBundlerͷ࢓༷มߋͷ͍ͤͰɺ Bundlerܦ༝ͰΠϯετʔϧ͞ΕͨgemͰ͸after- install hook͕૸Βͳ͘ͳ͍ͬͯͨ

Slide 48

Slide 48 text

BundlerϓϥάΠϯԽ͢Δ͜ͱͰɺBundlerܦ༝ͰΠϯ ετʔϧ͞Εͨgemʹ΋gem-src͕ޮ͘Α͏ʹͳͬͨ

Slide 49

Slide 49 text

RubyGemsϓϥάΠϯ݉
 rbenvϓϥάΠϯ݉BundlerϓϥάΠϯ 🛤 1ϦϙδτϦͰτϦϓϧϓϥάΠϯʂ 🛤 ͜ΜͳϓϩμΫτ͸ͨͿΜੈքॳͩͱࢥΘΕΔ 🛤 ͱ͍͏͔RubyGemsϓϥάΠϯ΋rbenvϓϥάΠϯ ΋BundlerϓϥάΠϯ΋ϚΠφʔ͗ͯ͢୭΋࡞ͬͯ ͳ͍

Slide 50

Slide 50 text

ࠓ೔͔Β͸ɺrbenvͱbundlerͷ྆ํ ͱ΋ʹ૊ΈࠐΜͰ͓͘ͷ͕ਪ঑ઃఆ % git clone https://github.com/amatsuda/gem-src.git "$(rbenv root)/plugins/gem-src" 
 % bundler plugin install gem-src

Slide 51

Slide 51 text

ར༻͍ͯ͠Δgemͷιʔείʔυ͸શͯखݩʹ
 ஔ͍͓͚ͯΔΑ͏ʹͳͬͯɺύονΛൃࣹ͢Δ·Ͱ ͷϦʔυλΠϜ͕ܶతʹॖ·Δ 🛤 ๻ͷखݩͰ͸ਪఆ2000ݸఔ౓͕cloneࡁΈͰɺ
 ͍ͭͰ΋ύον͕ॻ͚Δঢ়ଶʹͳ͍ͬͯΔ 🛤 ͜Ε͕ແ͍ͱOSS׆ಈ͕Ͱ͖ͳ͘ͳΔ͘Β͍ศར

Slide 52

Slide 52 text

͜ΕͰࠓ೔͔Βύον͕ૉૣ͘ ॻ͚ΔΑ͏ʹͳΔ͸ͣͰ͢

Slide 53

Slide 53 text

🔜

Slide 54

Slide 54 text

ࠓ೔͔ΒύονΛͨ͘͞Μ
 ॻ͍͍͖ͯ·͠ΐ͏

Slide 55

Slide 55 text

ͦΕ͔Βɺ๻ͷ৔߹ɺଞਓͷϓϩμΫτʹύονΛ ౤͛Δ͚ͩ͡Όͳͯ͘ɺझຯͰΑࣗ͘࡞ͷgemΛ ࡞͍ͬͯ·͢

Slide 56

Slide 56 text

࢓ࣄฑɺओʹʮRailsϓϥΪϯʯ

Slide 57

Slide 57 text

"Rails Plugin" 🛤 ࢮޠʁ 🛤 ࠷ۙͰ͸୯ʹ"gem"ͬͯݴΘΕͯΔʁ

Slide 58

Slide 58 text

gem != Rails Plugin

Slide 59

Slide 59 text

౰ͨΓલ͚ͩͲɺੈͷதʹ͸Railsͷ֦ ுҎ֎ͷgem΋͋Δ

Slide 60

Slide 60 text

💎 rfd

Slide 61

Slide 61 text

rfd 🛤 RubyͰ࡞ͬͨFD(ϑΝΠϥʔ)ͷΫϩʔϯ

Slide 62

Slide 62 text

ݟͲ͜Ζ 🛤 rfd/commands.rb 🛤 Կ͔Ωʔ͕ԡ͞ΕΔͱɺͱʹ͔ͦ͘ͷΩʔͷ໊લͷ ϝιου͕࣮ߦ͞ΕΔ

Slide 63

Slide 63 text

͖͔͚ͬ 🛤 ͜ͷcommands.rbͷ࢓૊ΈΛࢥ͍͍ͭͯ͠·ͬͨ ͷͰ࣮૷ͯ͠Έͨ͘ͳͬͯ࡞ͬͨ

Slide 64

Slide 64 text

ϝϯς 🛤 2ը໘ରԠͱ͔͍ͨ͠ͱࢥ͍ଓ͚ͯ਺೥ؒ์ஔத…… 🛤 ։ൃΛख఻ͬͯ͘ΕΔํืूத

Slide 65

Slide 65 text

gem != Rails Plugin 🛤 ࠓ౓͸ٯʹɺgemͰ͸ͳ͍Rails pluginͷύλʔϯ

Slide 66

Slide 66 text

ੲ͸Railsͷ֦ு͸gem͡Ό
 ͳ͔ͬͨ

Slide 67

Slide 67 text

💎 i18n_generators

Slide 68

Slide 68 text

i18n_generators 🛤 Rails I18nͷϦιʔεϑΝΠϧΛࣗಈ຋༁Ͱੜ੒͠·͘Δ΍ͭ 🛤 ๻͕ॳΊͯࣗ෼Ͱ࡞ͬͨRails plugin 🛤 (ͦΕҎલʹ͸ଞਓ͕࡞ͬͨ΋ͷΛforkͯ͠ϝϯςͱ͔͙ͯͨ͠Β͍) 🛤 2008೥ 🛤 GitHubͱ͔Asakusa.rbͱ͔͕Ͱ͖ͨ೥

Slide 69

Slide 69 text

First CommitΛݟͯΈΔͱ…… 🛤 https://github.com/amatsuda/ i18n_generators/commit/7a9b45c

Slide 70

Slide 70 text

Installation

Slide 71

Slide 71 text

gem install ͱ͔ bundle install ͡Όͳ͍ʂ 🛤 ౰࣌͸gem͡Όͳ͔ͬͨ͜ͱ͕Θ͔Δ

Slide 72

Slide 72 text

Rails pluginͱͯ͠͸ൺֱతྺ࢙ ͕௕ͯͣͬ͘ͱϝϯςͯ͠ΔͷͰ 🛤 Ruby 1.8ʙ3.0ͷશͯͷόʔδϣϯRubyͰಈ͘ 🛤 Rails 3.0ʙ6.1ͷશͯͷόʔδϣϯRailsͰಈ͘ 🛤 ݱଘ͢ΔRails I18nؔ࿈ϓϩμΫτͱͯ͠͸࠷ݹͷ ΋ͷ͔΋͠Εͳ͍

Slide 73

Slide 73 text

࡞͖͔͚ͬͨͬ 🛤 Rails I18nϓϩδΣΫτʹ࠷ॳ͔ΒؔΘͬͨ೔ຊਓͩͬͨ 🛤 ౰࣌޿͘࢖ΘΕ͍ͯͨ gettext-rails ͷϦιʔεΛϕʔεʹͯ͠ɺຊମଆ ͷ ja.yml Λॻ͍ͨ 🛤 ΞϓϦ಺ͷYAML͸Ωʔͷ໋໊نଇ͕ܾ·ͬͯΔΜ͔ͩΒࣗಈੜ੒Ͱ͖ ΔͷͰ͸ʁͱࢥͬͨͷͰ΍ͬͯΈͨ 🛤 Rails I18n͢ΔͳΒ͜͏͍͏΋ͷ͕ඞਢͰ͸ʁͱࢥͬͯ࡞͚ͬͨͲɺ
 ҙ֎ͱ޿·Βͳ͔ͬͨ

Slide 74

Slide 74 text

ٯʹɺ࡞ऀ͕ࢥͬͨҎ্ʹ
 ޿·ͬͯ͠·ͬͨ΋ͷ

Slide 75

Slide 75 text

💎 kaminari

Slide 76

Slide 76 text

kaminari 🛤 ϖʔδωʔγϣϯ͢Δ΍ͭ 🛤 2011೥

Slide 77

Slide 77 text

࡞͖͔͚ͬͨͬ 🛤 ౰࣌σϑΝΫτͩͬͨwill_paginate͕Rails 3ʹ
 ͳ͔ͳ͔ରԠͯ͘͠Εͳͯ͘ࠔͬͯͨ 🛤 ͦͷ͜Ζ࡞ऀͨͪ͸GitHub͍ͬͯ͏ελʔτΞοϓ Λ૑ۀͯͯ͠๩͔ͬͨ͠ 🛤 Rails 3ͷ৽ػೳΛ࢖͑͹΋ͬͱ͏·͘࡞ΕΔؾ͕ͨ͠

Slide 78

Slide 78 text

Rails 3ͷ৽ػೳ 🛤 Active RecordͷϝιουνΣΠϯํࣜͷ৽API 🛤 Rails Engine

Slide 79

Slide 79 text

Rails 3ͷ৽ػೳʹ͍ͭͯͷৄ͍͜͠ͱ͸ ౰࣌ WEB+DB Press Vol. 58 ʹॻ͍ͨ 🛤 ૯ूฤͷDVDΛങ͑͹ࠓͰ΋ಡΊ·͢

Slide 80

Slide 80 text

ݱଘ͢ΔதͰ͸ੈքͰԿ൪໨͔ʹ ݹ͍Rails Engine͔΋͠Εͳ͍

Slide 81

Slide 81 text

kaminari͍ͬͯ͏;໊͚ͨ͟લ 🛤 ίʔυ͸ॻ͚ͨΜ͚ͩͲɺ໊લ͕ܾΊΒΕͳͯ͘
 2ि͙ؒΒ͍ϦϦʔεͰ͖ͳ͔ͬͨ 🛤 ౦ژRubyձ͔ٞͳΜ͔Ͱhsbt͞Μʹ͖ͯͱ͏ʹ
 ܾΊͯ΋Βͬͨ

Slide 82

Slide 82 text

ڞಉϝϯςφ 🛤 @yuki24 🛤 ౰࣌Issue͕100ݸͱ͔ཷ·ͬͯΔͷΛݟΔʹݟ͔Ͷ ͯɺAsakusa.rbͷmeetupͰʮख఻͍·͠ΐ͏ ͔ʁʯͬͯݴͬͯ͘Εͨ

Slide 83

Slide 83 text

ͻͲ͍ίʔυ 🛤 ·͍͋Ζ͍Ζྺ࢙తܦҢ͕͋ΔΜͰ͢Α 🛤 ࠓͱͳͬͯ͸ݟͲ͜Ζ͸ಛʹͳ͍͠ɺίʔυ͸৭ʑ ͻͲ͍ΜͰಛʹಡΉඞཁ͸ͳ͍

Slide 84

Slide 84 text

2011೥ͭͳ͕Γ 🛤 2011೥ʹ࡞ͬͨଞͷgem

Slide 85

Slide 85 text

💎 action_args

Slide 86

Slide 86 text

action_args 🛤 Railsͷίϯτϩʔϥʔ͕MerbΈ͍ͨʹͳΔ΍ͭ 🛤 ͜ΕφγͰ͸RailsͳΜ͔࢖͑ͳ͘ͳΔ͙Β͍ศར ͳ΍ͭ

Slide 87

Slide 87 text

ࣗ෼͕࡞ͬͨgemͷதͰҰ൪޷͖ ͳ΍͔ͭ΋͠Εͳ͍

Slide 88

Slide 88 text

࡞͖͔͚ͬͨͬ 🛤 Rails 3ͷίϯτϩʔϥʔͷίʔυ͕ؾʹ৯Θͳ ͔͔ͬͨΒ

Slide 89

Slide 89 text

Rails 2 + Merb = Rails 3 🛤 ίϯτϩʔϥʔʹؔͯ͠͸ɺྑ͘ͳ͍ํͷAPIΛ
 બ୒ͯ͠͠·ͬͨ 🛤 ͜͜ͰMerbํࣜΛαϙʔτͰ͖ͳ͔ͬͨͷ͸Rails ͷྺ্࢙਺গͳ͍DHHͷ൑அϛεͩͱࢥ͏

Slide 90

Slide 90 text

ݟͲ͜Ζ 🛤 https://github.com/asakusarb/action_args/ commit/895b1ad

Slide 91

Slide 91 text

"using Refinements in order not to reveal our plugin internal methods"

Slide 92

Slide 92 text

͜ͷgemͷதͰ͔͠࢖Θͳ͍௒ϓϥΠϕʔτͳ ϝιουΛੜ΍ͨ͢ΊʹrefinementsΛ׆༻ 🛤 ͜͜Ͱ͸ɺActionController::Base ʹϓϥΪϯ಺ ෦༻ͷϩδοΫΛ௥Ճ͍ͯ͠ΔΜ͚ͩͲɺͦΜͳ΋ ͷ͕ϢʔβʔͷΞϓϦʹ࿙Εग़ͪ͠Ό͏ͱΧοίѱ ͍ 🛤 ͦ͜ͰɺϑΝΠϧείʔϓͳϝιουΛݺͼ͍ͨͱ ͜ΖͰ͚ͩੜ΍͢Α͏ʹ͢Δ

Slide 93

Slide 93 text

2015೥8݄ 🛤 ͜ͷίϛοτ͕ߦΘΕͨ2015೥8݄ʹԿ͕͋ͬͨͷ ͔ʁ

Slide 94

Slide 94 text

͖͔͚ͬ͸ @_ksss_ ͞Μͷπ Πʔτ

Slide 95

Slide 95 text

https://twitter.com/_ksss_/ status/631458253688340480

Slide 96

Slide 96 text

https://twitter.com/a_matsuda/ status/631470723974873093

Slide 97

Slide 97 text

https://twitter.com/_ksss_/ status/631478188414144512

Slide 98

Slide 98 text

https://twitter.com/_ksss_/ status/631589269283303424

Slide 99

Slide 99 text

https://twitter.com/a_matsuda/ status/631608168175415296

Slide 100

Slide 100 text

ͪͳΈʹཌ೥ʹ͸Railsʹ΋ೖΕͨ 🛤 https://github.com/rails/rails/commit/ 571f0f32 🛤 ͜Ε͕Rails্࢙ॳrefinements

Slide 101

Slide 101 text

https://github.com/rails/ rails/commit/571f0f32

Slide 102

Slide 102 text

Refinements 🛤 ͓࢓ࣄͷRailsΞϓϦͰ͸΄ͱΜͲ࢖͍ಓ͕ͳ͍͚ ͲɺϥΠϒϥϦ΍ϑϨʔϜϫʔΫͷ։ൃʹ͸͛͢ʔ ศར

Slide 103

Slide 103 text

͓ͦΒ͘͜ͷػೳΛ͏·͘࢖͏ͱɺΊͪΌΊ ͪΌ៉ྷͳϑϨʔϜϫʔΫΛ࡞Δ͜ͱ΋Մೳ͔΋ 🛤 public APIϝιουҎ֎͸ϢʔβʔʹԿ΋ݟ͑ͯͳ ͍Έ͍ͨͳ 🛤 Ͱ΋Rails͸͍·͞Βແཧ͔ͳ……

Slide 104

Slide 104 text

ͦΕ͔Βɺ2011೥ʹ࡞ͬͨ΋ͷΛ ΋͏ͻͱͭ

Slide 105

Slide 105 text

💎 active_decorator

Slide 106

Slide 106 text

active_decorator 🛤 ͍ΘΏΔσίϨʔλʔ 🛤 Active Model͕஀ੜͨ͜͠ͱ΋͋ͬͯɺ Presenterύλʔϯͱ͔ͦ͏͍͏ͷ͕ྲྀߦͯͨ͠ 🛤 Draper͕Ͱ͖ͨͷ΋͜ͷ͜Ζ

Slide 107

Slide 107 text

͖͔͚ͬ 🛤 Draperͷख৮Γ͕͋·Γʹ΋RubyΒ͘͠ͳͯ͘
 ؾ࣋ͪѱ͍ͷͰɺࣗ෼Ͱ΋ͬͱײ৮ͷྑ͍΋ͷΛ ࡞ͬͨ 🛤 ਖ਼͍͠ઃܭͱਖ਼͍࣮͠૷Λࢥ͍͍ͭͯ͠·ͬͨ

Slide 108

Slide 108 text

ਖ਼͍͠ઃܭͱਖ਼͍࣮͠૷ 🛤 view helperͳΜ͔ͩΒɺhelperͱಉ༷viewͷதͰ
 ͚ͩ༗ޮʹͳΔ΂͖
 => 🛤 ͋ɺͱ͍͏͜ͱ͸ɺview_assigns ͷλΠϛϯάͰҾ ͖౉͠ର৅ͷivarΛObject#extend͢Ε͹͍͍ͷͰ ͸ʂ

Slide 109

Slide 109 text

view_assignsͱ͔;ͭ͏஌Βͳ͍ ͱࢥ͏ΜͰ͚͢Ͳɺ 🛤 ͜ͷAPIͷ஌͕ࣝ͋Δ͔ͳ͍͔͕ɺDraperͱͷ
 ख৮ΓͷࠩΛੜΜͩ

Slide 110

Slide 110 text

WEB+DB Press Vol.58ͷಛू1Λॻͨ͘Ίʹ Rails 3ͷίʔυΛಡΈ·ͬͨ͘ͷ͕࣮݁ͨ͠

Slide 111

Slide 111 text

ख৮Γ 🛤 ;ͭ͏ͷRubyͷϞδϡʔϧΛૉ௚ʹ࢖͏͚ͩ 🛤 ಛघͳجఈΫϥεΛܧঝͱ͔͠ͳ͍ 🛤 ͓·͡ͳ͍Λ֮͑ͳͯ͘ྑ͍ 🛤 RubyͷύϫʔΛͦͷ··࢖͏

Slide 112

Slide 112 text

ࣅͨΑ͏ͳίϯηϓτͷ΋ͷΛ
 ΋͏1ݸ

Slide 113

Slide 113 text

💎 jb

Slide 114

Slide 114 text

jb 🛤 JSONΛ࡞ΔͨΊͷςϯϓϨʔτΤϯδϯ 🛤 jbuilder͍ͬͯ͏DSL͕ԚΒͯ͘͠࢖͍ํ͕֮͑
 ʹ͍͘΍ͭͷalternative

Slide 115

Slide 115 text

ίϯηϓτ 🛤 JSONͱRubyͷHash͍͍ͬͯͩͨҰॹͩΑͶ 🛤 ςϯϓϨʔτͷதͰจࣈྻΛ੾ͬͨுͬͨͯ͠ JSONͬΆ͍จࣈྻΛ૊ΈཱͯΔΜ͡Όͳͯ͘ɺ HashͷΠϯελϯεΛ࡞ͬͨΒͦΕΛJSONʹ͠ ͯ͘ΕΔ΄͏͕௚ײతͩ͠ے͕ྑ͍ͷͰ͸ʁ

Slide 116

Slide 116 text

ઃܭͱ࣮૷ 🛤 Action ViewͰ͸1ຕ1ຕͷςϯϓϨʔτ͕ίϯύΠϧ͞Εͨ ΋ͷ͕ϝιουͱͯ͠ఆٛ͞ΕΔ 🛤 jbͰ͸ίϯύΠϧ΋Կ΋ͳͯ͘ɺςϯϓϨʔτʹॻ͍ͨ΋ͷ ͕ͦͷ···ΔͬͱϝιουbodyʹͳΔ 🛤 ͦͷϝιου͕HashͷΠϯελϯεΛฦ͢Α͏ʹ͢Ε͹͍ ͍͚ͩɻͱʹ͔͘;ͭ͏ͷRubyΛॻ͚͹ྑ͍

Slide 117

Slide 117 text

ϝϦοτ 🛤 ṖͷDSLΛ֮͑ͳͯ͘ྑ͍ 🛤 Կ΋ͯ͠ͳ͍ͷͰ଎͍ 🛤 jbuilderΑΓ΋ϑΝΠϧ໊ͷ֦ுࢠ͕୹͍

Slide 118

Slide 118 text

ݟͲ͜Ζ 🛤 template handlerͷԿ΋΍ͬͯͳͬ͞΀Γ

Slide 119

Slide 119 text

lib/jb/handler.rb

Slide 120

Slide 120 text

handler͕Կ΋΍ͬͯͳ͍ςϯϓϨʔτ
 ΤϯδϯΛ΋͏1ݸ

Slide 121

Slide 121 text

💎 string_template

Slide 122

Slide 122 text

ݱଘ͢ΔRubyͷςϯϓϨʔτ
 ΤϯδϯͷதͰ͸Ӊ஦࠷଎

Slide 123

Slide 123 text

jbͱಉ͡ײ͡ͰɺςϯϓϨʔτ͕
 ͦͷ··ϝιουbodyʹͳΔ 🛤 ͦ͜Ͱฦͨ͠String͕ͦͷ··HTMLͱ͔ʹͳΔ

Slide 124

Slide 124 text

ςϯϓϨʔτ͕ΫΦʔτ͞Εͨ΋ͷ͕ ·Δ͝ͱ1ຊͷStringϦςϥϧʹͳΔ 🛤 ແବͳbufferΦϒδΣΫτ͕࢖ΘΕͣʹҰܸͰ String͕૊ΈཱͯΒΕΔͷͰੈք࠷଎

Slide 125

Slide 125 text

ͨͩͷRubyͳͷͰɺಛघͳຒΊࠐΈ
 ه๏ͱ͔͸Ұ੾ͳ͍

Slide 126

Slide 126 text

<%= %> ͱ͔ແͯ͘େৎ෉ͳͷʁ

Slide 127

Slide 127 text

RubyͷStringʹ͸ #{} ͷ interpolation ͕͋ΔΜͰ͢Αʂ 🛤 ͜ΕͰ͚ͬ͜͏ͳΜͱ͔ͳΔ

Slide 128

Slide 128 text

࢖͍Ͳ͜Ζ 🛤 layoutϑΝΠϧͱ͔Έ͍ͨͳɺΊͬͪΌrender͞ ΕΔ͚Ͳ͋·Γසൟʹ͍͡Βͳ͍Α͏ͳ΋ͷ͸͜Ε Ͱॻ͍͓ͯ͘ͱύϑΥʔϚϯε͕Ք͛Δ͔΋

Slide 129

Slide 129 text

ݟͲ͜Ζ 🛤 ΍ͬͺΓtemplate handlerͷԿ΋΍ͬͯͳͬ͞΀ Γ

Slide 130

Slide 130 text

lib/string_template/ handler.rb

Slide 131

Slide 131 text

Τϯδϯͭͳ͕Γ 🛤 Τϯδϯ͸ΤϯδϯͰ΋ɺࠓ౓͸ςϯϓϨʔτΤϯ δϯ͡Όͳͯ͘ Rails Engine

Slide 132

Slide 132 text

💎 heavens_door

Slide 133

Slide 133 text

heavens_door 🛤 ΈΜͳେ޷͖Capybaraͷςετίʔυ͕ɺϒϥ΢ βͷૢ࡞͔Βੜ੒Ͱ͖ΔEngine

Slide 134

Slide 134 text

໊લ 🛤 ࿐൐ઌੜͷελϯυ 🛤 ͳΜ͔ͦΕͬΆ͍ؾ͕ͨ͠Μ͚ͩͲɺ·͋Θ͔Γʹ ͔ͬͨ͘Ͱ͢Ͷ

Slide 135

Slide 135 text

͖͔͚ͬ 🛤 ZOZOςΫϊϩδʔζ͞Μͷ৽نҊ݅ͰɺΈΜͳͰ systemςετॻ͜͏͍ͥͬͯ͏͜ͱʹͳͬͯ 🛤 Ͱ΋खॻ͖Ͱ͍͍ͪͪॻ͘ͷ͸େมͩͬͨͷͰ

Slide 136

Slide 136 text

࣮͸ϒϥ΢βૢ࡞Ϟʔυ͚ͩ͡Όͳͯ͘ ίϚϯυϥΠϯϞʔυ΋͋ͬͨΓ͢Δ

Slide 137

Slide 137 text

ίϚϯυϥΠϯϞʔυʁ 🛤 ࡞ͬͨຊਓʹ͔͠࢖͍ํ͕Θ͔Βͳ͍πʔϧʹͳΓ ͦ͏ͳͷͰ৸͔ͤͯ͋Δ

Slide 138

Slide 138 text

ઌߦݚڀ 🛤 ͜ͷϒϥ΢β্ͷૢ࡞Λه࿥ͯ͠capybaraͷίʔ υΛు͘ػೳ͸ɺ2010೥ʹ࡞ͬͨhocus_pocusͬ ͍ͯ͏Rails Engine pluginͷػೳͱͯ͠طʹ࣮૷ ࡁΈͩͬͨ΋ͷ

Slide 139

Slide 139 text

͜Μͳ;͏ʹxx೥ܦ͔ͬͯΒੲॻ͍ͨ ίʔυͷժ͕ग़ͨΓ͢Δ͜ͱ΋͋Δ 🛤 ௕೥ίʔυΛॻ͖ଓ͚ͯΔͱΞυόϯςʔδ͕͋ͬ ͨΓ͢Δɺͱ͍͏ࣄྫ

Slide 140

Slide 140 text

💎 hocus_pocus

Slide 141

Slide 141 text

hocus_pocus 🛤 WikiΈ͍ͨͳײ֮Ͱɺϒϥ΢β্Ͱૢ࡞ͨ͠Βαʔ όʔ্Ͱϖʔδ͕࡞ΕΔRails Engine

Slide 142

Slide 142 text

࡞Γ࢝Ίͨͷ͸2010೥ 🛤 Kaminari͕Engineͱͯ͠͸૬౰ݹ͍͖ͬͯͬ͞ ݴ͚ͬͨͲɺͦΕΑΓݹ͔ͬͨ 🛤 ͍͢͝Φʔύʔπ͔΋͠Εͳ͍

Slide 143

Slide 143 text

͍·͍ͪྲྀߦΒͳ͔ͬͨ…… 🛤 UI͕ϔϘ͗ͨ͢ 🛤 πʔϧࣗମͷ֓೦͕೉͗ͨ͢͠ 🛤 υΩϡϝϯτ͕ແͩͬͨ 🛤 ΍Γ͔ͨͬͨ͜ͱ͸Ͱ͖ͦ͏ʂͬͯࢥͬͨΒͳΜ͔ ๞͖ͨ

Slide 144

Slide 144 text

͍͍ͩͨͰ͖ͨʂ => ͪΌΜͱ࢖͑ Δ·Ͱ࡞ΓࠐΉͷ͕ۤख

Slide 145

Slide 145 text

ίϯηϓτ͕ಛघͩ͠࢖͍ํ΋೉ղͰɺ࡞ͬͨ ຊਓʹ͔͠࢖͍ํ͕Θ͔Βͳ͍πʔϧʹͳͬͯ ͠·ͬͨ

Slide 146

Slide 146 text

͜ͷϓϩμΫτ͕ٴ΅ͨ͠Өڹ 🛤 Railsඪ४ͷweb-consoleΛΠϯεύΠΞ 🛤 https://github.com/rails-girls-summer-of- code/summer-of-code-2014/wiki/Project- ideas#conductor-web-based-assistant-for- development

Slide 147

Slide 147 text

࡞ͬͨߕ൹͸͋ͬͨΈ͍ͨ 🛤 ݁ہweb-console͸΍ͬͯΔ͜ͱ͸ͥΜͥΜҧ͏ ͚Ͳ……

Slide 148

Slide 148 text

Capybaraؔ࿈ͷϏδϡΞϧܥͷ EngineΛ΋͏1ͭ (͋ͱ͍ͭͰʹݴ͏ͱϓϩάϨۂ໊ͭͳ͕Γ)

Slide 149

Slide 149 text

💎 roundabout

Slide 150

Slide 150 text

roundabout 🛤 ը໘ભҠਤੜ੒πʔϧ

Slide 151

Slide 151 text

ը໘ભҠਤͷੜ੒ 🛤 ࣮૷ͱͯ͠͸CapybaraͷϞϯΩʔύον 🛤 ςετίʔυதʹCapybaraͰൃੜͨ͠ϦΫΤετ ͷભҠΛશ෦ه࿥͢Δ 🛤 ͜ΕΛͭͳ͛ͯֆʹ͢Δͱը໘ભҠਤʹͳΔ

Slide 152

Slide 152 text

͜Μͳײ͡(RedmineϓϩδΣΫτͰ ࣮ߦͨ݁͠Ռ)

Slide 153

Slide 153 text

ਤʹ͸ςετ͕ॻ͔Ε͍ͯΔ
 ΋ͷ͔͠ग़ͯ͜ͳ͍ 🛤 ͭ·Γɺ͋ΔछͷςετΧόϨοδతͳ΋ͷ͕Մࢹ Խ͞ΕΔπʔϧͰ͋Δͱ΋ݴ͑Δ

Slide 154

Slide 154 text

ΞΠσΞ͸͓΋͠Ζ͍͠ɺϙςϯγϟϧ͸͋Δ ؾ͕͢ΔΜ͚ͩͲɺ͋·Γ࢖ΘΕͯΔखԠ͑͸ ͳ͍͔΋ 🛤 ͜ΕΛػʹͥͻ͝ར༻͍ͩ͘͞

Slide 155

Slide 155 text

ΧόϨοδؔ࿈ͭͳ͕ΓͰ

Slide 156

Slide 156 text

💎 per_file_coverage (unreleased)

Slide 157

Slide 157 text

per_file_coverage (Ծ) 🛤 ςετ࣮ߦ࣌ʹɺΞϓϦΛߏ੒͢Δ֤ϑΝΠϧ͕
 Ͳͷςετ͔Βݺͼग़͞Ε͍ͯΔ͔(ͱɺͦͷٯ)Λ
 શ෦ચ͍ग़ͯ͠ՄࢹԽ͢Δ

Slide 158

Slide 158 text

࣮૷ͱͯ͠͸SimpleCovͷ
 ϓϥάΠϯ 🛤 (ͨͩ͠SimpleCovʹ͸ϓϥάΠϯͳͲͱ͍͏֓೦ ͸ͳ͍)

Slide 159

Slide 159 text

஍ࠈͷϞϯΩʔύον 🛤 ͦ͏͍͑͹͍͓ͪ͏ SimpleCov ͷίϛολʔͰ͸ ͋ΔͷͰɺ֦ு͕͠΍͍͢Α͏ʹϑΟʔυόοΫ͙ Β͍͸͍͖͍ͯͨ͠

Slide 160

Slide 160 text

RubyͷCoverageϞδϡʔϧΛ
 ར༻

Slide 161

Slide 161 text

͖͔͚ͬ 🛤 ANDPADࣾͷͦͦ͜͜ͷن໛ͷطଘΞϓϦʹࢀը ͯ͠ɺʮ͜ͷίʔυ͸ͲͷspecϑΝΠϧ͔Βςε τ͞ΕͯΔΜͩΖ͏ʁʯͱ͔ɺٯʹʮ͜ͷspec͸ Ͳ͜Β΁ΜͷϑΝΠϧΛςετͯ͠ΔΜͩΖ͏ʯͱ ͔஌Γͨ͘ͳͬͨͷͰ

Slide 162

Slide 162 text

application_controller͚ͩͰ΋300ݸͱ͔͋Δ ͷͰɺ΍ͬͺ͜͏͍͏ͷ͕஌Γͨ͘ͳΔΜͰ͢Α

Slide 163

Slide 163 text

Ξ΢τϓοτྫ

Slide 164

Slide 164 text

͔͠͠ɺgem͸·ͩͳ͍…… 🛤 HTML͕ڊେԽͨ͠৔߹ͷύϑΥʔϚϯε໰୊͕
 ౗͍ͤͯͳ͍ 🛤 ໊લ͕ܾ·͍ͬͯͳ͍ʂ

Slide 165

Slide 165 text

୭໊͔͍͍લΛ͚͍ͭͯͩ͘͞ 🛤 ͓ئ͍͠·͢

Slide 166

Slide 166 text

Coming Soon...💎

Slide 167

Slide 167 text

࠷ۙͷ͓࢓ࣄؔ࿈Ͱ࡞ͬͨ΋ͷΛ ΋͏1ͭ

Slide 168

Slide 168 text

💎 lightweight_attributes

Slide 169

Slide 169 text

lightweight_attributes 🛤 Active RecordͷϞσϧͷΠϯελϯεੜ੒Λۃྗ ܰ͘͢ΔͨΊͷ͑͛ͭͳ͍ϞϯΩʔύον

Slide 170

Slide 170 text

ARͷϞσϧͷΠϯελϯεੜ੒ 🛤 AR 4͙Β͍Ͱೖͬͨtype castingͱ͔͍͏୭΋࢖ͬͯͳ ͍ػೳͷͨΊʹٸܹʹॏͨ͘ͳͬͨ 🛤 ͱʹ͔͘DB͔ΒϞσϧΛΨόοͱҾͬுͬͯฦ͚ͩ͢Έͨ ͍ͳAPIͱ͔ͩͱɺ͕͜͜ϘτϧωοΫʹͳΔ 🛤 RubyϨϕϧͰ͸ɺಛʹTimeతͳ΍ͭͷparse͕஗͔ͬͨ Γ͢Δ

Slide 171

Slide 171 text

RubyͰTimeతͳ΍ͭͷparse͕ ଎͘ͳΔͱ͍͍ͳ͊ 🛤 https://bugs.ruby-lang.org/issues/16005

Slide 172

Slide 172 text

https://bugs.ruby-lang.org/ issues/16005

Slide 173

Slide 173 text

ͱ΋͋Εɺ lightweight_attributes ʹ͍ͭͯ

Slide 174

Slide 174 text

sponsored by ΞΧπΩ 🛤 ࠓ೥͔Βnobuͷύτϩϯʹͳͬͨ͋ͷΞΧπΩࣾ Ͱ͢ʂ

Slide 175

Slide 175 text

ίʔυ͕͑͛ͭͳ͗ͯ͢͞
 ϝϯςෆೳ 🛤 ͜ͷ΁Μͷίʔυ͸Railsͷόʔδϣϯ͝ͱʹͥΜ ͥΜҧͬͯͯɺෳ਺όʔδϣϯରԠͱ͔Ϛδແཧ

Slide 176

Slide 176 text

ͱ͍͏͜ͱͰɺ·ͱ΋ʹϝϯς ͞Εͯͳ͍ͷͰར༻͸ඇਪ঑

Slide 177

Slide 177 text

type castingΛ஗Ԇͤ͞Δͱ͍͏ ΞΠσΞ 🛤 kamipo͞Μ͕͏·͍͜ͱरͬͯActive Record 6.1ʹίϛοτͯ͘͠Ε͔ͨΒ΋͏͓ଂೖΓͰ͍͍͔ ͳ……

Slide 178

Slide 178 text

Rails 6.1

Slide 179

Slide 179 text

Coming Soon...💎

Slide 180

Slide 180 text

ΞΧπΩ͞ΜεϙϯαʔͰ΋͏1ͭ

Slide 181

Slide 181 text

💎 activerecord-ruby (unreleased) 🛤 ΞϓϦதͰߋ৽͞Εͳ͍͜ͱ͕લఏͷ͍ΘΏΔ
 ʮϚελʔσʔλʯΛΠϯϝϞϦʹల։ 🛤 ARͷΦϒδΣΫτͷ··Ωϟογϡ͢Δ 🛤 readonlyͳͷͰ҆৺ͯ͠࢖͍ճͤΔ

Slide 182

Slide 182 text

ૂ͍ 🛤 ΫΤϦͷແବଧͪΛ཈੍ 🛤 ARͷΦϒδΣΫτੜ੒ίετΛ࡟ݮ 🛤 GCෛՙΛܰݮ

Slide 183

Slide 183 text

͜͜·ͰͳΒ୭΋͕ߟ͑ͨ͜ͱ͋Δͱࢥ͏ Μ͚ͩͲɺΠϯλʔϑΣΠεͱ࣮૷͕໰୊ 🛤 Model.fetch_from_cache ͱ͔ͦ͏͍͏ײ͡ͷ
 μα͍ίʔυ͸ઈରॻ͖ͨ͘ͳ͍ 🛤 ϓϩμΫγϣϯͷίʔυ͸;ͭ͏ͷARͷίʔυ͔Β Կ΋ม͑ͣʹɺͰ΋ͲͷϞσϧ͕ʮϚελʔςʔϒ ϧʯ͔͚ͩڭ͑ͯ΍ͬͨΒউखʹۭؾΛಡΜͰಈ࡞ ͢Δ͙Β͍͕͍͍

Slide 184

Slide 184 text

activerecord-ruby ͷAPI 🛤 ʮϚελʔʯͬΆ͍ϞσϧʹҎԼͷΑ͏ͳએݴΛ
 ೖΕΔ class Country < ActiveRecord::Base find_by_ruby! end

Slide 185

Slide 185 text

ͦΕ͚ͩ 🛤 ଞͷίʔυ͸Ұ੾͍͡Βͳͯ͘΋ɺҎԼͷΫΤϦͨ ͕ͪDBΛݺͼग़͢͜ͱͳ͘ద੾ͳ஋Λฦ͢ Model.find(id) Model.where(prefecture: 'Tokyo').order(:created_at)

Slide 186

Slide 186 text

joins͕ೖͬͯͨΓ͢ΔΑ͏ͳෳࡶͳΫΤϦ ͕౤͛ΒΕͨΒDBʹϑΥʔϧόοΫ͢Δ

Slide 187

Slide 187 text

ϝϞϦ͔Βऔ͖ͬͯͨ΋ͷͱDB͔Βऔ͖ͬͯͨ ΋ͷʹᴥᴪ͕ͳ͍͔Ͳ͏͔ൺֱ͢ΔϞʔυΛ౥ࡌ 🛤 ςετΛ͜ΕͰճ͓ͯ͘͠ͱ҆৺Ͱ͖Δ͸ͣ

Slide 188

Slide 188 text

ύϑΥʔϚϯεήΠϯ 🛤 ະ஌਺ 🛤 ਖ਼௚ͳͱ͜Ζɺ·ͱ΋ͳ࣮ΞϓϦͰͷޮՌ͸ݶఆత ͳ༧ײ͸͍ͯ͠Δ 🛤 DBͷ઀ଓ͕ύοπϯύοπϯΈ͍ͨͳ؀ڥͰ͸
 ޮ͔͘΋

Slide 189

Slide 189 text

ݟͲ͜Ζ 🛤 ARͷΠϯλʔϑΣΠεͱγʔϜϨεʹ࿈ܞ͢ΔͨΊ ͷςΫχοΫ

Slide 190

Slide 190 text

࣮૷ৄࡉ 🛤 AR͕૊ΈཱͯͨASTΛSQLͰ͸ͳͯ͘Rubyͷ
 ίʔυʹม׵͢Δ ToRuby visitor ΛΰϦΰϦ࣮૷

Slide 191

Slide 191 text

gem͸·ͩͳ͍

Slide 192

Slide 192 text

Coming Soon...💎

Slide 193

Slide 193 text

ࠓ·Ͱʹແ͔ͬͨΞϓϩʔνͩ͠ɺίʔυ΋͔ ͳΓ͓΋͠Ζ͍ͷͰɺੈʹग़ͨΞΧπΩʹ͸ͥͻ ͍ͬͯ͡Έ͍ͯͩ͘͞

Slide 194

Slide 194 text

ઌߦݚڀ 🛤 arel_ruby

Slide 195

Slide 195 text

💎 arel_ruby 🛤 https://github.com/amatsuda/arel_ruby 🛤 (2012೥)

Slide 196

Slide 196 text

ArelͷASTͷRuby visitor 🛤 ͭ·ΓɺࠓճͷϓϩμΫτͷΤϯδϯ෦෼ͦͷ΋ͷ

Slide 197

Slide 197 text

͜Ε͸౰࣌ɺRDB͔Β੾Γ཭ͯ͠Rubyͷੈք͚ͩ ͰΞϓϦͷςετ͕࣮ߦͰ͖ͨΒ͓΋͠Ζ͍͔΋ɺ ͱࢥͬͯ΍ͬͯΈͨ΋ͷ 🛤 ͋·Γݱ࣮తͳϢʔεέʔεͰ͸ͳ͔ͬͨͷͰɺ
 ୯ʹ໘നͦ͏͔ͩΒ࡞ͬͯΈ͚ͨͩΈ͍ͨͳײ͡ʹ ͳͬͯ͠·ͬͨ 🛤 ͦͯͣͬ͠ͱ͓ଂೖΓ

Slide 198

Slide 198 text

ίʔυ͸ॻ͚ͯ΋Ϣʔεέʔε Λݟޡͬͨྫ

Slide 199

Slide 199 text

8೥ܦͬͯɺ৽ͨͳϢʔεέʔεΛ ݟ͚ͭͯ෮׆

Slide 200

Slide 200 text

͜Μͳ;͏ʹxx೥ܦ͔ͬͯΒੲॻ͍ͨ ίʔυͷժ͕ग़ͨΓ͢Δ͜ͱ΋͋Δ 🛤 ௕೥ίʔυΛॻ͖ଓ͚ͯΔͱΞυόϯςʔδ͕͋ͬ ͨΓ͢Δɺͱ͍͏ࣄྫ

Slide 201

Slide 201 text

·ͱΊ

Slide 202

Slide 202 text

΍ͬͺRails 🛤 RailsΛ͍ͬͺ͍ಡΜͩΓॻ͍ͨΓ͍ͯ͠ΔͱRails ʹৄ͘͠ͳΔ

Slide 203

Slide 203 text

͍ͭͰ΋Ͳ͜Ͱ΋ૉૣ͘
 ύονΛॻ͜͏ 🛤 Railsʹৄ͘͠ͳΔͱɺRails͚ͩ͡Όͳ͍ͯ͘ΖΜ ͳ΋ͷʹύον͕ॻ͚ΔΑ͏ʹͳΔ 🛤 gem-srcΛrbenv΍bundlerͱ࿈ܞ͓͍ͤͯͯ͞ɺ ৗʹ࠷୹खॱͰύονΛ౤͚͛ͭΕΔ४උΛ੔͑ͯ ͓͜͏

Slide 204

Slide 204 text

ͱʹ͔ͨ͘͘͞Μ
 ύονΛॻ͜͏ 🛤 ύονΛͨ͘͞Μॻ͔ͳ͍ͱɺύον͕ॻ͚Δ
 Α͏ʹ͸ͳΒͳ͍ 🛤 ྔ͕࣭ʹస͡Δ͜ͱ΋͋Δ

Slide 205

Slide 205 text

gem࡞Ո΁ͷಓ 🛤 ͍ΖΜͳ΋ͷʹύονΛॻ͍ͯΔͱɺଞਓʹॻ͔ͤ ΔΑΓࣗ෼Ͱॻ͍ͨ΄͏͕ྑ͍΋ͷ͕Ͱ͖Δ͜ͱ͕ Θ͔Δ 🛤 ͖͔͚ͬ΍ϢʔεέʔεΛ͔ͭ·͑ͯɺϓϩμΫτ ʹ͍ͯ͜͠͏

Slide 206

Slide 206 text

ͦΜͳΜ୭Ͱ΋ࢥ͍ͭ͘Ͱ͠ΐɺΈ͍ͨ ͳgemͰ΋ͱʹ͔͘΍ͬͯΈΔͱྑ͍ 🛤 ҙ֎ͱ୭΋΍Ζ͏ͱͯ͠ͳ͔ͬͨΓɺࣗ෼͕ੈքͰ Ұ൪͏·͘΍ΕͨΓ͢Δ

Slide 207

Slide 207 text

໊લॏཁ 🛤 ໊લ͚ͭΔͷΉ͍ͣ 🛤 ໊લ͕͚ͭΕͳͯ͘ࠓ೔ͷൃදʹؒʹ߹Θͳ͔ͬͨ ΋ͷ͕͍͔ͭ͋͘ΔͷͰɺ୭͔Ұॹʹ໊લΛߟ͑ͯ ΄͍͠……

Slide 208

Slide 208 text

gemͷख़੒ 🛤 ࡞ͬͨgem͸͙͢ʹժ͕ग़ͳͯ͘΋ɺޙ͔ΒϢʔε έʔε͕͍͖ͭͯͯɺԿ೥΋ܦ͔ͬͯΒ໾ʹཱͬͨ Γ͢Δ 🛤 ͷͰɺ΍ͬͺΓΞΠσΞΛ͖ͪΜͱίʔυʹམͱ͠ ͓ͯ͘͜ͱ͕େࣄ

Slide 209

Slide 209 text

ϝϯς 🛤 gemΛ͍ͬͺ͍࡞ͬͨΓͯ͠Δͱɺϝϯςର৅͕
 ૿͑͗ͯ͢ख͕ճΒͳ͘ͳΔ 🛤 ͦ΋ͦ΋๞͖ͬΆ͍ਖ਼֬ͳͷͰϝϯςͱ͔ۤख…… 🛤 ͳͷͰɺ୭͔ϝϯςख఻ͬͯ͘ΕΔͱͱͯ΋خ͠ ͍……

Slide 210

Slide 210 text

Future Works 🛤 ࠓޙͱ΋ɺԿ͔ϓϩμΫτͷΞΠσΞ͕͖߱ͬͯͨ Βɺ਺ϲ݄ʹ1ճ͙Β͍ͷϖʔεͰgemΛ࡞Γଓ͚ ͍ͨ 🛤 @amatsuda ͷ࣍ճ࡞ʹ͝ظ଴͍ͩ͘͞ʂ

Slide 211

Slide 211 text

Coming Soon! 💎

Slide 212

Slide 212 text

·ͱΊ 🛤 গ͠Ͱ΋օ͞Μͷ͜Ε͔ΒͷOSS׆ಈͷώϯτʹ ͳ͍ͬͯΕ͹޾͍Ͱ͢

Slide 213

Slide 213 text

end 🛤 name: Akira Matsuda 🛤 GitHub: @amatsuda 🛤 Twitter: @a_matsuda