Slide 1

Slide 1 text

஌ͬͯΔΑ͏Ͱ஌Βͳ͍ rails newͷੈք ϚωʔϑΥϫʔυ ژ౎։ൃڌ఺ @luccafort 1

Slide 2

Slide 2 text

ओཁͳSNS Twitter: @luccafort GitHub: @luccafort Mixi2: @luccafort ࣗݾ঺հ idɿ@luccafort • Kyoto.rb / ؔ੢Rubyձٞ08 /
 Go Conference 2025 ΦʔΨφΠβʔ • Kyoto.go ϑΝ΢ϯμʔ • ϚωʔϑΥϫʔυ ژ౎։ൃڌ఺ॴଐ • 2025೥6݄͔ΒϓϩδΣΫτϚωʔδϟʔʹ ͳΓ·ͨ͠ 2

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

9

Slide 10

Slide 10 text

10

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

༏लਓࡐٻΉʂʂʂ 28ଔֶੜͩͱͳ͓Ϥγοʂ ϚωʔϑΥϫʔυͷ ։ൃऀΞΧ΢ϯτ͸ ͪ͜Β ↓↓↓ ࠓ೥11݄͔Βฐࣾʢin Tokyoʣʹ৽ଔೖࣾ͢Δ Denys͘Μ

Slide 19

Slide 19 text

໊ݹ԰ڌ఺ͷ Πϯλʔϯืू͸ ͪ͜Β͔Βʂ ↓↓↓↓↓

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

“rails new”ΛֶͿ໨తͱഎܠ “rails new”ͷ࣮૷ΛಡΈղ͘ “rails new”͔ΒಘΒΕΔ͜ͱ Agenda 21

Slide 22

Slide 22 text

ಥવͰ͕͢…… 22

Slide 23

Slide 23 text

“rails new”͕Ͳ͏ಈ͔͘ આ໌Ͱ͖Δਓ 🙋🙋 23

Slide 24

Slide 24 text

͍·खΛ͋͛ΒΕͳ͔ͬͨਓ…… 24

Slide 25

Slide 25 text

ʮ͋ͳͨʯ͕ର৅ऀͰ͢ɻ 🎉🎉🎉🎉🎉 25

Slide 26

Slide 26 text

໨త ͳͥ”rails new”ʹ͍ͭͯ࿩ͦ͏ͱࢥͬͨͷ͔ʁ 26

Slide 27

Slide 27 text

໨త ͳͥ”rails new”ʹ͍ͭͯ࿩ͦ͏ͱࢥͬͨͷ͔ʁ 27 • RailsΛΑΓਂ͘ཧղ͔ͨͬͨ͠ • ݸਓ։ൃʮҎ֎ʯͷ੒௕ͷબ୒ࢶͬͯͳΜ͚ͩͬʁ • ؔ੢Rubyձٞ08ɺΑ͔ͬͨΑͶ…… • Ͱ΋ݸਓ։ൃͷѹ͕ڧ͗ͨ͢ؾ΋͢Δ • ݸਓ։ൃͰͳ͍੒௕ͷબ୒ࢶ΋͋ΔΜ͡Όͳ͍͔ʁ

Slide 28

Slide 28 text

• RailsΛΑΓਂ͘ཧղ͔ͨͬͨ͠ • ݸਓ։ൃʮҎ֎ʯͷ੒௕ͷબ୒ࢶͬͯͳΜ͚ͩͬʁ • ؔ੢Rubyձٞ08ɺΑ͔ͬͨΑͶ…… • Ͱ΋ݸਓ։ൃͷѹ͕ڧ͗ͨ͢ؾ΋͢Δ • ݸਓ։ൃͰͳ͍੒௕ͷબ୒ࢶ΋͋ΔΜ͡Όͳ͍͔ʁ ໨త ͳͥ”rails new”ʹ͍ͭͯ࿩ͦ͏ͱࢥͬͨͷ͔ʁ 28 ͳʹΑΓίʔυΛಡΜͩΓɺ ॻ͍ͨΓ͢Δͷ͸ָ͍͠ʂʂ

Slide 29

Slide 29 text

ํ޲ੑ͸ܾ·͚ͬͨͲ ͡Ό࣮͋ࡍͳʹΛ͢Δͱ͍͍ΜͩΖ͏ʁ 🤔

Slide 30

Slide 30 text

࣮ࡍʹRailsΛಈ͔ͯ͠ Irb.pryͰͳʹΛͯ͠Δ͔ ݟΕ͹͍͍͡ΌΜ 30

Slide 31

Slide 31 text

࣮ࡍʹRailsΛಈ͔ͯ͠ Irb.pryͰͳʹΛͯ͠Δ͔ ݟΕ͹͍͍͡ΌΜ ͳΔ΄Ͳʁʁʁ 31

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

33 ͦ͏͍͑͹”rails new”͕ ͳʹ΍ͬͯΔ͔આ໌Ͱ͖ͳ͘Ͷʁ

Slide 34

Slide 34 text

• ͳΜ͔Generatorͱ͔࢖ͬͯͦ͏ɻ • CommandΫϥεΛ࢖࣮ͬͯ૷͞Εͦ͏ • ੲௐ΂ͨؾ͕͢Δ͚Ͳ๨Εͨ…… 34

Slide 35

Slide 35 text

“rails new”ΛֶͿ໨తͱഎܠ “rails new”ͷ࣮૷ΛಡΈղ͘ “rails new”ΛಡΉͱݟ͑ͯ͘ΔʮRailsΒ͠͞ʯ Agenda 35

Slide 36

Slide 36 text

“rails new”ͷ ࣮૷ΛಡΈղ͘ 36

Slide 37

Slide 37 text

1. ίϚϯυղੳ: CLI → Command → ApplicationCommand 2. δΣωϨʔλॳظԽ: AppGenerator.new 3. Φϓγϣϯॲཧ: implied_optionsઃఆ 4. σΟϨΫτϦ࡞੒: create_root → mkdir 5. ϑΝΠϧੜ੒: ςϯϓϨʔτ͔ΒϑΝΠϧ࡞੒ 6. Bundle Install: bundle install࣮ߦ 7. ؀ڥઃఆ: JS/CSS/Hotwireɺafter_bundle_callbacksͷ࣮ߦ 37 Rails new ࣮ߦॱ ͬ͘͟Γ·ͱΊ

Slide 38

Slide 38 text

3. Φϓγϣϯॲཧ: implied_optionsઃఆ 4. σΟϨΫτϦ࡞੒: create_root 5. ϑΝΠϧੜ੒: ςϯϓϨʔτ͔ΒϑΝΠϧ࡞੒ 6. Bundle 7. ؀ڥઃఆ: JS/CSS/Hotwireɺafter_bundle_callbacksͷ࣮ߦ 38 Rails new ࣮ߦॱ ͬ͘͟Γ·ͱΊ 1. ίϚϯυղੳ: CLI → Command → ApplicationCommand 2. δΣωϨʔλॳظԽ: AppGenerator.new Rails new ࣮ߦॱ ͬ͘͟Γ·ͱΊ 38 ͕͜͜Θ͔Ε͹ આ໌Ͱ͖ͦ͏ʂ

Slide 39

Slide 39 text

CLI͸ͲͷΑ͏ʹͯ͠ݺ͹Ε͍ͯΔ͔ 39

Slide 40

Slide 40 text

“rails/cli”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 40

Slide 41

Slide 41 text

“rails/cli”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 41

Slide 42

Slide 42 text

“rails/command”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 42

Slide 43

Slide 43 text

“rails/command”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 43

Slide 44

Slide 44 text

“rails/command”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 44

Slide 45

Slide 45 text

“rails/command”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 45

Slide 46

Slide 46 text

“rails/command”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 46

Slide 47

Slide 47 text

“rails/command”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 47

Slide 48

Slide 48 text

“rails/command”Ͱ͸ͳʹΛ͍ͯ͠Δ͔ʁ 48

Slide 49

Slide 49 text

“ApplicationCommand::Base”Ͱ͸ ͳʹΛ͍ͯ͠Δ͔ʁ 49

Slide 50

Slide 50 text

“Rails::Generators::AppGenerator”Ͱ͸ ͳʹΛ͍ͯ͠Δ͔ʁ 50

Slide 51

Slide 51 text

“Rails::Generators::AppGenerator”Ͱ͸ ͳʹΛ͍ͯ͠Δ͔ʁ 51

Slide 52

Slide 52 text

“Rails::Generators::AppGenerator”Ͱ͸ ͳʹΛ͍ͯ͠Δ͔ʁ 52

Slide 53

Slide 53 text

“Rails::Generators::AppGenerator”Ͱ͸ ͳʹΛ͍ͯ͠Δ͔ʁ 53

Slide 54

Slide 54 text

“Rails::Generators::AppGenerator”Ͱ͸ ͳʹΛ͍ͯ͠Δ͔ʁ 54

Slide 55

Slide 55 text

ίʔϧόοΫ࣮ߦͰ͸ͳʹΛ͍ͯ͠Δ͔ʁ 55

Slide 56

Slide 56 text

΍͔ͬͨʂʁʂʁʂʂʂʂ 56

Slide 57

Slide 57 text

“rails new”ΛֶͿ໨తͱഎܠ “rails new”ͷ࣮૷ΛಡΈղ͘ “rails new”͔ΒಘΒΕΔ͜ͱ Agenda 57

Slide 58

Slide 58 text

“rails new”͔ΒಘΒΕΔ͜ͱ 58

Slide 59

Slide 59 text

59

Slide 60

Slide 60 text

60

Slide 61

Slide 61 text

• ࢓૊ΈΛཧղ͍ͯ͠ͳͯ͘΋Railsʮ͸ʯ࢖͑Δ • ਂ͘ཧղ͢Δʹ͸ʮؔ࿈஌ࣝɾഎܠɾԾઆɾݕূʯ͕ େࣄ ࢓૊ΈΛཧղ͢ΔͱԿ͕خ͍͔͠ 61

Slide 62

Slide 62 text

• ਓ͸ʮͰ͖ͦ͏ʯͳ͜ͱ͔͠ʮ΍Γ͍ͨʯͱࢥΘͳ͍ • ਎ۙͳಓ۩ʹର͢ΔཧղΛਂΊΔͱൃ૝ͷ͖͔͚͕ͬ ੜ·ΕΔ ࢓૊ΈΛཧղ͢ΔͱԿ͕خ͍͔͠ 62

Slide 63

Slide 63 text

https://www.nlp.co.jp/000015.php 63

Slide 64

Slide 64 text

஌͍ͬͯΔͱʮͰ͖Δʯ͜ͱ ͷ෯͕޿͕Δʂ

Slide 65

Slide 65 text

https://github.com/onk/rails_app_template/blob/master/ costtie_template.rb ͜ͷtemplateϑΝΠϧΛ࢖͏ͱ ͍ͭ΋࢖͏δΣϜ΍ઃఆ͕શ෦ ೖͬͨঢ়ଶͰ։ൃ͕ελʔτͰ͖ ΔͷͰศར

Slide 66

Slide 66 text

࢓૊ΈΛཧղ͢ΔͱԿ͕خ͍͔͠

Slide 67

Slide 67 text

࢓૊ΈΛཧղ͢ΔͱԿ͕خ͍͔͠

Slide 68

Slide 68 text

• Railsͷίʔυ͸ҙ֎ͱಡΊΔ •ʮΘ͔Βͳ͍ʯ৔߹͸ʮΘ͔Δʯঢ়ଶ·ͰϨϕϧΛ۷Γ Լ͛Α͏ɻʮΘ͔ͬͨʯΒྡ઀ྖҬʹखΛ޿͛Α͏ •ʮΑ͍໰͍ʯ͕Ͱ͖Δ஥ؒ΍ίϛϡχςΟΛݟ͚ͭΑ͏ 68 ·ͱΊ

Slide 69

Slide 69 text

$ rails new \ welcome:rails_world! 69

Slide 70

Slide 70 text

΍ͬͯΈͯ ବ໨ͩͬͨΒ ਓʹฉ͚ ຊ೔ͷҰ۟

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

72

Slide 73

Slide 73 text

References • https://github.com/rails/rails/ • Rails Τϯδϯೖ໳ • https://railsguides.jp/engines.html • Rails newͷॲཧΛ௥ͬͯΈͨ • https://qiita.com/okuramasafumi/items/707a74af435f321c1fc2 • ਪ͠׆ͱͯ͠ͷrails new • https://kaigionrails.org/2024/talks/sakahukamaki/ • rails new ͨ࣌͠ͷ௥ՃॲཧΛ͔͘ • https://blog.eiel.info/blog/2013/08/01/rails-new-template/

Slide 74

Slide 74 text

References • Rails6ʹ͓͍ͯɺrails newͨ͋͠ͱʹඪ४ػೳΛؒҾ͍ ͍ͯ͘ͱ͖ʹΈΔ΂͖ͱ͜Ζ • https://shinkufencer.hateblo.jp/entry/2020/11/14/000000 • ActiveSupport::CodeGenerator Ͱ༡΅͏ • https://developers.freee.co.jp/entry/activesupport-generator • GemɺRailtieϓϥάΠϯɺEngineʢfull/mountableʣͷҧ ͍ͱͦΕͧΕͷجૅ৘ใ • https://qiita.com/kidach1/items/565c2c077ae8d15fe3a8

Slide 75

Slide 75 text

References • ͍͍࣭໰ͬͯͳΜͩΖ͏ • https://note.com/shuharinoshu/n/n6558b8f4adc2 • ϫʔΫγϣοϓʹ͓͚Δ”ྑ͍໰͍"ͱ͸ʁ • https://note.com/yuki_anzai/n/nba5741aa630f