Slide 1

Slide 1 text

σϑΥϧτઃఆͰ฻Β͍ͨ͠ ࣲాതࢤ / GMO Pepabo, Inc. 2019.06.14 Pepabo Tech Friday June ։ൃ؀ڥ 2019

Slide 2

Slide 2 text

؀ڥΛ੔උ͢Δͷ͸ઐ໳৬ͷᅂΈ

Slide 3

Slide 3 text

ϓϩάϥϚͷେਆث wλʔϛφϧ w4IFMM wΤσΟλ

Slide 4

Slide 4 text

ϓϩάϥϚͷେਆث wλʔϛφϧ w4IFMM wΤσΟλ wϒϥ΢β

Slide 5

Slide 5 text

λʔϛφϧ wߴઐ5FSB5FSN wେֶQVUUZ wࣾձਓJ5FSN wࣾձਓϖύϘ5FSNJOBMBQQ wݱࡏ"MBDSJUUZ

Slide 6

Slide 6 text

4IFMMͷར༻ཤྺ wߴઐUDTI wେֶࣾձਓCBTI wࣾձਓϖύϘೖࣾ਺೥લ·Ͱ[TI wݱࡏpTI

Slide 7

Slide 7 text

ΤσΟλ wߴઐࣾձਓ&NBDT wࣾձਓϖύϘೖࣾ਺೥લ·Ͱ"UPN wݱࡏ7JTVBM4UVEJP$PEF

Slide 8

Slide 8 text

ಓ۩ΛબͿͱ͖ͷϙϦγʔ

Slide 9

Slide 9 text

೥ͷબ୒ϙϦγʔ wࣗ෼ͷײ֮ʹ͍ۙඪ४ઃఆͷιϑτ΢ΣΞΛ࢖͏ɺ߹Θͳ͍ͱ͜Ζ͸ ΧελϚΠζ͔ࣗ෼͕׳ΕΔɻ w8JOEPXTͰ΋ग़དྷΔ͚ͩಉ͡ૢ࡞͕Մೳͳιϑτ΢ΣΞΛ࢖͏ɻ w3VTUͰॻ͔Ε͍ͯΔπʔϧ͸͍͍ͩͨྑ͍ ͳΜͱͳ͘

Slide 10

Slide 10 text

"MBDSJUUZ w(16Λ࢖ͬͨ΍ͨΒ଎ͯ͘͵Δ͵Δಈ͘λʔϛφϧ wJ5FSNͷλϒػೳ͕ͳ͍ͷͰUNVYͰؤு͍ͬͯΔ wઃఆ͕ldDPOpHBMBDSJUUZBSBDSJUUZZNMzͱϙʔλ ϒϧͳͷ͕ྑ͍ɻ

Slide 11

Slide 11 text

pTI w#BTI΍;TIͷγΣϧ͕ಈ͔ͳ͍໘౗ͳ΍ͭ ఘΊͨ  wઃఆΛೖΕͳͯ͘΋͍͍ͩͨ΍Γ͍ͨ͜ͱ ಛʹཤྺ ͕Ͱ͖Δ wϓϥάΠϯγεςϜͷpTIFSNBO࢖ͬͯɺ؀ڥ͸ͩ ͍͍ͨ࠶ݱՄೳ

Slide 12

Slide 12 text

74$PEF w֦ு͸͋·ΓೖΕͳ͍ ඞਢ͸&NBDT'SJFOEMZ,FZT͚ͩ  wϦϞʔτ΍MJWFTIBSFͳͲ͸ࢼ͠ʹೖΕΔ͚Ͳ͍͍ͩͨ์ஔ wAFAʹΤΠϦΞεͯ͠Δ wλʔϛφϧͱߦͬͨΓདྷͨΓͯ͠ޮ཰ѱ͍ͱײ͡Δ͕࣌͋ΔͷͰΤ σΟλ͚ͩͰ׬݁Ͱ͖ΔΑ͏ʹؤுΓ͍ͨʜ

Slide 13

Slide 13 text

։ൃ؀ڥͰ࠷ۙڵຯ͕͋Δ͜ͱ

Slide 14

Slide 14 text

࠷ۙڵຯ͕͋Δ͜ͱ w(/6DPSFVUJMTͷஔ͖׵͑ w(&.@)0.&ͷڞ༗ w9%(@

Slide 15

Slide 15 text

(/6DPSFVUJMTͷஔ͖׵͑ wMTFYBMTE wDBUCBU wHSFQUIF@TJMWFS@TFBSDIFSSJQHSFQ ͍͍ͩͨ3VTU੡ͷπʔϧͳͷͰ3VTUؤுͬͯ͘Ε

Slide 16

Slide 16 text

(&.@)0.&ͷڞ༗ w(&.@)0.&Λઃఆ͢Δͱ3VCZ(FNT͸ͦͷσΟϨΫτϦʹHFN ΛೖΕΔɻະࢦఆͷ৔߹͸ҎԼɻ w 3VCZ(FNT͸3VCZͰॻ͔Ε͍ͯΔίʔυͱ$Ͱॻ͔Ε͍ͯΔ ίʔυ͕͋Δ͕3VCZͰॻ͔Ε͍ͯΔίʔυ͸HFNTQFDͰ໌ࣔ͠ ͯͳ͍ݶΓෳ਺όʔδϣϯͰڞ༗ͯ͠ಈ͔͢͜ͱ͕Ͱ͖Δ ~ > l ~/.rbenv/versions/2.6.0-dev/lib/ruby/gems/2.6.0/ build_info cache doc extensions gems specifications

Slide 17

Slide 17 text

(&.@)0.&Λڞ༗ͯ͠Έͨ w +3VCZ 5SV⒐F3VCZશͯͰ࢖͏HFNΛಉ͡σΟϨΫτϦ ʹೖΕΔ w ͰೖΕͨHFN͕Ͱͳ͍ɺͱ͍͏͜ͱ͕ͳ͘ͳͬͯḿΔ w ࣮͸HFNTQFD͕૿͑ΔͱSVCZͷىಈ͸஗͘ͳΔ w +3VCZͱࠞͥΔͱ3VCZ(FNTͷෆ۩߹͕ͲΜͲΜݟ͔ͭΔ ~ > l .local/share/gem/gems | wc -l 3843

Slide 18

Slide 18 text

$֦ு͸ϦϏϧυ͢Δඞཁ͕͋Δ #!/usr/bin/env ruby require 'rubygems/commands/pristine_command' gems = Gem::Specification.all.map do |spec| [spec.name, spec.version] if spec.platform == RUBY_ENGINE && spec.missing_extensions? end.compact.uniq gems.each do |n,v| cmd = Gem::Commands::PristineCommand.new cmd.options[:args] = [n] cmd.options[:version] = v cmd.execute end

Slide 19

Slide 19 text

ຖ೔࠷৽൛ʹ͢Δศརͳ΍ͭ #!/usr/bin/env bash eval "$(rbenv init -)" rbenv shell --unset brew upgrade brew cask upgrade rbenv global system rbenv uninstall -f 2.7.0-dev rbenv install 2.7.0-dev rbenv global 2.7.0-dev gem update rbenv shell 2.4 ~/Documents/github.com/hsbt/tools/exe/all-pristine rbenv shell 2.5 ~/Documents/github.com/hsbt/tools/exe/all-pristine rbenv shell 2.6 ~/Documents/github.com/hsbt/tools/exe/all-pristine rbenv shell 2.7 ~/Documents/github.com/hsbt/tools/exe/all-pristine ~/Documents/github.com/hsbt/tools/exe/gem-shebang rbenv shell --unset

Slide 20

Slide 20 text

͜ΕΛϓϩάϥϚશһʹ ఏڙ͍ͨ͠ΜͩΑͳ͋

Slide 21

Slide 21 text

9%(@$0/'*(@ wdDPOpHͱdMPDBMTIBSFʹઃఆϑΝΠϧΛ഑ஔ͢Δ wdͷ௚Լʹ͍ΖΜͳϑΝΠϧ͕ͨ͘͞ΜʹͳΒͳͯ͘ศར w࠷ۙͷπʔϧΛݟͯΔͱ͘Β͍͸9%(Λ࢖͏Α͏ʹͳ͖ͬͯͯ ͍Δɻ w3VCZͷπʔϧ΋ͦΕΒΛ࢖͏Α͏ʹ։ൃͯ͠ΔΑ wIUUQTHJUIVCDPNSVCZSVCZQVMM

Slide 22

Slide 22 text

͕࣌ؒ͋Ε͹  খཻͳπʔϧͷօ͞Μ

Slide 23

Slide 23 text

খཻͳπʔϧͨͪ wHFNDPEFTFBSDI wBMMSVCZ wHFNTSD

Slide 24

Slide 24 text

Demo ~ > gemsearch extension_build_error rb2exe-0.3.0/bin/traveling-ruby-2.2.2/l32/lib/ruby/2.2.0/rubygems/installer.rb: def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: rb2exe-0.3.0/bin/traveling-ruby-2.2.2/l64/lib/ruby/2.2.0/rubygems/installer.rb: def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: rb2exe-0.3.0/bin/traveling-ruby-2.2.2/osx/lib/ruby/2.2.0/rubygems/installer.rb: def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: rb2exe-0.3.0/bin/traveling-ruby-2.2.2/win/lib/ruby/2.2.0/rubygems/installer.rb: def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: ruby-compiler-0.1.1/vendor/ruby/lib/rubygems/installer.rb: def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: rubygems-update-2.7.7/lib/rubygems/installer.rb: def extension_build_error(build_dir, output, backtrace = nil) # :nodoc: rubygems-update-2.7.7/lib/rubygems/installer.rb: deprecate :extension_build_error, :none, 2018, 12

Slide 25

Slide 25 text

Demo all-ruby -e "puts ‘foo'&.match?(/foo/)" all-ruby -e "require 'tempfile'; p Tempfile.new.close!” all-ruby -e "require 'io/console'; p IO.method_defined?(:noecho)” all-ruby -e "require 'uri'; puts URI.const_defined?(:DEFAULT_PARSER)” all-ruby -e "p [].respond_to? :flat_map"

Slide 26

Slide 26 text

Demo ~ > gem i rails clone http://rubyonrails.org -> /Users/hsbt/Documents/rubyonrails.org error Could not find version control system: http://rubyonrails.org exists /Users/hsbt/Documents/github.com/rails/rails Successfully installed rails-5.2.3 1 gem installed