Slide 1

Slide 1 text

No content

Slide 2

Slide 2 text

. ) (

Slide 3

Slide 3 text

( . ! ! )

Slide 4

Slide 4 text

Ruby is a family. MRI (Matz Ruby) JRuby (JVM) mruby TruffleRuby (GraalVM) RubyMotion Rubinius Opal (JavaScript)

Slide 5

Slide 5 text

Relatives of Ruby. Rubex Crystal

Slide 6

Slide 6 text

I introduce MCM-3angle. [MRI-Crystal-mruby]

Slide 7

Slide 7 text

MCM-3angle Crystal mruby MRI

Slide 8

Slide 8 text

MCM-3angle Crystal mruby MRI !

Slide 9

Slide 9 text

MCM-3angle Crystal mruby MRI 1 . . . 1 . - 1 : . : . . 1 1 - ./: #

Slide 10

Slide 10 text

MCM-3angle Crystal mruby MRI

Slide 11

Slide 11 text

MCM-3angle Crystal mruby MRI / / -

Slide 12

Slide 12 text

mruby is cuteὑ mitamae haconiwa ngx_mruby H2O mysql-mruby mruby-arduino

Slide 13

Slide 13 text

Probably we can use mruby more!

Slide 14

Slide 14 text

But envs running mruby are hard to debug. So, Steep!

Slide 15

Slide 15 text

Steep is gradual typing for Ruby. Gradual typing : mypy, TypeScript, Hack…

Slide 16

Slide 16 text

# main.rb hiredis = Hiredis.new puts hiredis.incr("momonga") puts hiredis.incr("momonga") puts hiredis.flushall

Slide 17

Slide 17 text

> mruby main.rb 1 2 OK

Slide 18

Slide 18 text

# main.rbi class Hiredis def initialize: (String, Integer) -> any | -> any def incr: (String) -> Integer def flushall: -> String end

Slide 19

Slide 19 text

> steep check --dump-all-types --strict -I . . 1 2, " , " , 3= , ,,. 54 3:1 3= 3 = . 54 1 2, " , " , : 1 7 , ,,. 54 8 54 . 54 5 1 2, " , " , 5 4, ,,. 54 . 54 5 1 2, ") , " , : 1 , ,,. 54 8 54 1 2, " , " , , ,,0 7 = = 71 1 2, " , " , 5 4, = 4 8 54 3 = = 71 1 2, ") , " , 5 4, ,, 575 8 54 3 = = 71 1 2, ") , " , : 1 , ,,. 54 8 54 1 2, " , " , , ,,0 7 = = 71 1 2, " , " , 5 4, = 4 8 54 3 = = 71 1 2, ") , " , 5 4, ,, 575 8 54 3 = = 71 1 2, (") , (" , : 1 , ,,. 54 8 54 1 2, " , (" , 257 , = 4 8 54 . 54 5 1 2, (" , (" , 5 4, = 4 8 54 : 81:: 1 2, (") , (" , 5 4, ,,0 7 8 54 : 81::

Slide 20

Slide 20 text

• , • , . , • , .