Slide 1

Slide 1 text

Ruby in Japan vs the World Andrey Novikov, Evil Martians Osaka Web Designers and Developers Meetup 22 March 2025

Slide 2

Slide 2 text

About me I’m Andrey @Envek on GitHub and everywhere Back-end engineer at Evil Martians Ruby, Go, PostgreSQL, Docker, k8s… Living in Suita, Osaka for 2 years Love to ride mopeds, motorcycles, and cars over Japan

Slide 3

Slide 3 text

evilmartians.com evilmartians.jp 邪悪な火星人? イービルマーシャンズ!

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Ruby A programmer’s best friend # Output "I love Ruby" say = "I love Ruby" puts say # Output "I *LOVE* RUBY" say['love'] = "*love*" puts say.upcase # Output "I *love* Ruby" # five times 5.times { puts say } ruby-lang.org

Slide 6

Slide 6 text

Ruby Ruby is a general-purpose programming language, interpreted and high-level You need an interpreter, you don’t have to understand how it works under the hood. Object-oriented yet functional, influenced by Perl and Smalltalk Everything is an object, even numbers and functions. No primitive types. Designed for programmer productivity and readability Care less about runtime performance, more about developer happiness. Highly dynamic: you can change almost everything at runtime It is called monkey patching: amend classes, redefine methods, reassign constants. Created by Yukihiro Matsumoto in 1995 So it was born in Japan! And still developed by mostly Japanese core team 🇯🇵

Slide 7

Slide 7 text

Object-oriented Everything is an object, even numbers and functions. No primitive types. Example: numeric overloads for ActiveSupport::Duration See activesupport/lib/active_support/core_ext/numeric/time.rb in Ruby on Rails. 1.month + 5.minutes # => 1 month and 5 minutes (1.month + 5.minutes).class # => ActiveSupport::Duration Time.current + 1.month # => 2025-04-22 15:00:00 +0900 # Reopen Numeric class class Numeric # Define month method def month ActiveSupport::Duration.days(self) end end

Slide 8

Slide 8 text

Functional Callable blocks (procs and lambdas) with closures More about this in Threads, callbacks, and execution context in Ruby # Define a lambda y, l = 1, ->(x) { x + y } # Call it l.call(2) # => 3 # Use it for collection transformation [1, 2, 3].map(&l). # => [2, 3, 4] reduce(&:+) # => 9 Threads, callbacks… talk

Slide 9

Slide 9 text

Pros and cons Pros Easy and quick to start with Non-steep learning curve Readable and expressive Almost like English A lot of ready libraries “There is a gem for that” Nice and active community MINASWAN: Matz is nice and so we are nice Cons Slow runtime performance Not the best for CPU-bound tasks Poor parallelism due to GVL GVL: Global VM Lock restricts parallelism, but works well for I/O-bound tasks Memory footprint Debugging might be hard Monkey patching can make code hard to understand

Slide 10

Slide 10 text

Brief history of Ruby

Slide 11

Slide 11 text

Early days of Ruby (1993-2005) 1993: Matz started working on Ruby 1995: Ruby 0.95 released 1996: Ruby 1.0 released 2002: First English book about Ruby published 2003: Ruby 1.8 released Ruby was mostly known in Japan and didn’t have much traction.

Slide 12

Slide 12 text

Big bang: Ruby on Rails 2005: DHH released famous “Blog in 15 minutes” video 見る Ruby on Rails demo Ruby on Rails demo 共有 共有 Everyone: 🤯 Blog in 15 minutes

Slide 13

Slide 13 text

Ruby on Rails Highly opinionated web framework made possible by Ruby dynamic nature Convention over configuration Introspection and metaprogramming to reduce boilerplate No explicit requires for application code Everything is autoloaded, filenames are derived from class names Active Record ORM that maps database tables to Ruby objects and introspects database schema That all allowed really rapid development of web applications!

Slide 14

Slide 14 text

Boom of startups on Ruby on Rails Twitter (early days) Probably was fully rewritten to another tech stack after a few years. GitHub Still uses Ruby on Rails, backports a lot of features to Rails itself. Shopify Runs on Ruby on Rails, manages to serve million RPS on Black Friday. Airbnb Started with Ruby on Rails, but now uses a lot of other technologies. Heroku Ruby on Rails was the first supported language on Heroku.

Slide 15

Slide 15 text

Great boost for Ruby itself Ruby 1.9 (2007) YARV: move from interpretation to bytecode compilation Native threads Sane character encoding support Syntax changes for hashes, lambdas

Slide 16

Slide 16 text

Alternative Rubies MRI (Matz’s Ruby Interpreter) - The original Ruby implementation written on C. TruffleRuby - A high performance implementation built on the GraalVM. JRuby - The Ruby Programming Language on the JVM Java libraries can be called directly, but C-extensions are not supported. mruby - lightweight partial implementation for embedded usage. Artichoke - Bundle Ruby applications into a single WASM binary, Ruby implementation in Rust. and more: https://github.com/codicoscepticos/ruby-implementations Ruby implementations

Slide 17

Slide 17 text

Great tools from Ruby community Level of user experience provided by Ruby itself inspired the community to create great tools, that inspired other communities. Bundler — dependency manager with lockfile Inspired Cargo, CocoaPods RSpec — testing framework Inspired Jest, Mocha RVM and Rbenv — Ruby version managers Inspired pyenv, nvm, asdf, and mise-en-place Capistrano — deployment tool for old server days Inspired many deploy tools like Ansistrano on top of Ansible

Slide 18

Slide 18 text

Evil Martians founded (2006)

Slide 19

Slide 19 text

Ruby outside of web development Homebrew – package manager for macOS (and Linux) Chef and Puppet – configuration management tools Vagrant – virtual machine management DragonRuby – game development

Slide 20

Slide 20 text

Is Ruby dying? (2015-2020) No Made with ♥ by @jmcharnes. It felt stagnant, but it was not dying. isrubydead.com

Slide 21

Slide 21 text

The pandemic: Ruby’s second wind Why lockdowns and Ruby are a perfect match? Ruby is great for prototyping Ruby is great for small teams Ruby is great for remote work

Slide 22

Slide 22 text

Second rise of Ruby and Rails Ruby 3 (2020): Ractors: lightweight concurrency Fibers: cooperative multitasking Type definitions and checking with RBS Ruby 3x3: Ruby 3.0 is 3 times faster than Ruby 2.0 (thanks to JIT) Syntax changes: pattern matching, deconstructions, … …and many more changes: Ruby Evolution Rails 7 (2021) and 8 (2024): one-man-band framework for modern web development Hotwire: modern, HTML-over-the-wire approach Ruby Evolution

Slide 23

Slide 23 text

Present day Ruby is still a great language for new startups: Startups on Rails in 2024

Slide 24

Slide 24 text

Ruby in Japan How Ruby is different in Japan compared to the rest of the world?

Slide 25

Slide 25 text

Is Ruby popular in Japan? Yes… Every 10th Ruby developer is in Japan Biggest Ruby conferences are in Japan RubyKaigi: 1500+ attendees in 2024 Kaigi on Rails: 700+ attendees in 2024 And a lot of regional Ruby conferences and meetups but Ruby is behind Python, Java, and Go Ranked 8th in popularity (21th worldwide by TIOBE) And isn’t highest paid one too With salaries ranked 9th from ¥4.1M per year 1. https://www.jetbrains.com/lp/devecosystem-2023/ruby/ ↩︎ 2. https://www.tokhimo.com/post/popular-programming-languages-in-japan-2022-1 ↩︎ [1] [2]

Slide 26

Slide 26 text

Ruby in Japanese companies Cookpad – recipe sharing platform SmartHR – HR platform Money Forward – personal finance management RIZAP – unmanned gyms chocoZAP ANDPAD – construction management platform Timee – scheduling platform for gig workers STORES – e-commerce platform Qiita - tech blogging platform KOMOJU – payment gateway for cross-border e-commerce RubyKaigi sponsors

Slide 27

Slide 27 text

Ruby usage diversity in Japan Not only web development! mRuby for embedded systems From keyboards (KeebKaigi) to satellites Popular for educational purposes Often taught in schools and universities. Also SmalRuby – visual Ruby programming for kids. Collaborations with government E.g. Ruby City MATSUE

Slide 28

Slide 28 text

Let’s go Ruby? Read books and docs: Ruby Quickstart on the official site and in-browser Ruby Playground Programming Ruby aka “Pickaxe book” Agile Web Development with Rails Practical Object-Oriented Design Ruby Layered design for RoR applications Martian book with recipes for growing apps Ruby under a microscope for in-depth understanding of how Ruby works Attend meetups and conferences: RubyKaigi Kaigi on Rails And local ones too! Kyobashi.rb meetup Kansai RubyKaigi #08 conference Naniwa.rb meetup Ruby Tuesday meetup (usually online) … (that list isn’t exhaustive!)

Slide 29

Slide 29 text

Thank you! @Envek @Envek @[email protected] @envek.bsky.social github.com/Envek @evilmartians @evilmartians @[email protected] @evilmartians.com evilmartians.com Our awesome blog: evilmartians.com/chronicles! These slides are here: envek.github.io/owddm-ruby-in-japan-vs-world Powered by Slides are here