Share
Embed
Ruby in Japan vs the World
Talk about Ruby for non-Rubyists.
Ruby is said to be very popular in Japan and many companies use it, but is it true? Let's see what things are happening and how the situation looks like.
Andrey Novikov
March 22, 2025
Transcript
29 slides
-
Ruby in Japan vs the World Andrey Novikov, Evil Martians
Osaka Web Designers and Developers Meetup 22 March 2025 -
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 -
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 -
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 🇯🇵 -
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 -
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 -
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 -
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. -
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 -
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! -
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. -
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 -
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 -
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 -
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 -
Is Ruby dying? (2015-2020) No Made with ♥ by @jmcharnes.
It felt stagnant, but it was not dying. isrubydead.com -
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 -
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 -
Present day Ruby is still a great language for new
startups: Startups on Rails in 2024 -
Ruby in Japan How Ruby is different in Japan compared
to the rest of the world? -
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] -
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 -
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 -
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!) -
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