Slide 1

Slide 1 text

Extend your own programming language [email protected] -5Ͱ૿ิ

Slide 2

Slide 2 text

͠͹Β͓͘଴͍ͪͩ͘͞ ✓ ͝ཡͷεϙϯαʔͷఏڙ ʹΑΓ͓ૹΓ͠·͢

Slide 3

Slide 3 text

slide sponsors " " ! !!! @moro @ tricknotes dRuby Web ( ) https://t.co/fLhzWll5gY @hisashim Rails 700 https://t.co/wAMLWDekJh?amp=1 @igaiga555 https://lambdanote.com @golden_lucky @vestige_

Slide 4

Slide 4 text

slide sponsors 5 !! 6 2 Scratch Day in !! @mame iSeq iSeq @youchan Speee Ruby @koichiroo RubyKaigi 2018 2 @ktou RubyWorld Conference 2018 yancya @yancya

Slide 5

Slide 5 text

slide sponsors seki @tsuboi @ogijun people.suzuri.jp hsbt tatsuosakurai kenchan june29 zaimy tnmt umazura 4 -20 pixiv FANBOX halfmoon_0419 usa shimashima35 igaiga

Slide 6

Slide 6 text

Extend your own programming language [email protected] -5Ͱ૿ิ

Slide 7

Slide 7 text

RubyKaigi 2018 Ruby Ruby MinRuby dRuby

Slide 8

Slide 8 text

RubyKaigi 2018 ...

Slide 9

Slide 9 text

MinRuby Ruby Ruby MinRuby

Slide 10

Slide 10 text

MinRubyͷίϯςΩετ AST - genv - lenv - Marshal.dump

Slide 11

Slide 11 text

ঢ়ଶΛอଘʗ࠶ݱͰ͖Δ ...

Slide 12

Slide 12 text

ετϨʔδʹอଘʗ࠶ݱ Ruby

Slide 13

Slide 13 text

ωοτϫʔΫʹอଘʗ࠶ݱ HTTP dRuby TupleSpace / Linda

Slide 14

Slide 14 text

TupleSpace Linda

Slide 15

Slide 15 text

TupleSpaceαʔόΛ༻ҙ͢Δ drbunix:/tmp/my_ts URI

Slide 16

Slide 16 text

;ͭ͏͸ϑΝΠϧ͔Βىಈ parse AST genv, lenv evaluate

Slide 17

Slide 17 text

TupleSpace͔Βͷىಈ TupleSpace AST, genv, lenv take evaluate

Slide 18

Slide 18 text

ϓϩηεϚΠάϨʔγϣϯ TupleSpace

Slide 19

Slide 19 text

ϫʔΧΛىಈ͢ΔτϦοΫ [:ts_eval, ...] take [:ts_call, ...] write [:ts_call, ...] AST, genv, lenv evaluate while true it = ts.take([:ts_eval, nil, nil, nil, nil]) it[0] = :ts_call ts.write(it) spawn_worker end

Slide 20

Slide 20 text

TupleSpaceΛಉظ͢Δ࢓૊Έ TupleSpace Linda write take/read TS ͍͔ͭ͜ͷ࿩Λ͍ͨ͠

Slide 21

Slide 21 text

ͭ·Γ TS TS MinRuby

Slide 22

Slide 22 text

Docker, Rinda, Ring, MinRuby ෳ਺ͷίϯςφʹ഑ஔ͞Εͨ3JOEBͷλϓϧεϖʔεΛ3JOHΛ࢖ͬͯΦʔέε τϨʔγϣϯ ΍ઃఆͳ͠Ͱಉظͤ͞Δͱ͜Ζ·Ͱ͸࡞ͬͨɻݱࡏ͸ϝογϡ ঢ়ʹ઀ଓ͠߹͍ͬͯΔͷͰɺ"HFOUΛ࢖ͬͯ௨৴ΛݮΒͯ͠Έ͍ͨɻ