Slide 1

Slide 1 text

Programming Language Crystal 2015-07-29 W8LT#4 @dtan4 IUUQTqJDLSQLZ[T

Slide 2

Slide 2 text

TF[FNJ
 ͪͦ͝͏͞·Ͱ͢

Slide 3

Slide 3 text

ಙాݚ.

Slide 4

Slide 4 text

IUUQTDSZTUBMTI

Slide 5

Slide 5 text

IUUQTDSZTUBMTI

Slide 6

Slide 6 text

IUUQDSZTUBMMBOHPSH

Slide 7

Slide 7 text

Crystal • Ruby ͬΆ͍γϯλοΫε • ੩తܕνΣοΫ • Crystal ͷίʔυ಺Ͱ C ॻ͚Δ • ωΠςΟϒίʔυੜ੒ • Crystal -> LLVM IR -> ωΠςΟϒ http://crystal-lang.org/ https://github.com/manastech/crystal

Slide 8

Slide 8 text

• ίϯύΠϥ͕ Crystal Ͱ࣮૷͞ΕͯΔ (!) Crystal http://crystal-lang.org/ https://github.com/manastech/crystal

Slide 9

Slide 9 text

Crystal • Initial commit ͸ 2012-09-04 • v0.1.0 ͸ 2014-06-19 • ݱࡏ͸ v0.7.4 (2015-06-24) http://crystal-lang.org/ https://github.com/manastech/crystal

Slide 10

Slide 10 text

Crystal • Πϯετʔϧ (Mac OS X): • Try it online: http://play.crystal-lang.org/ $ brew tap manastech/crystal $ brew update $ brew install crystal-lang

Slide 11

Slide 11 text

Crystal • Πϯετʔϧ (Mac OS X): • Try it online: http://play.crystal-lang.org/ $ brew tap manastech/crystal $ brew update $ brew install crystal-lang CSFXOQNͰDSZTUBMೖΕͯΔͱ
 1"5)ʹΑͬͯ͸Ϳ͔ͭΔ Ϳ͔ͭͬͨ DSZTUBM͸
 ·͕͍ͪ

Slide 12

Slide 12 text

Crystal • εΫϦϓτ࣮ߦ • όΠφϦϏϧυ & ࣮ߦ: • ࠷దԽϏϧυ & ࣮ߦ $ crystal [run] hoge.cr $ crystal build hoge.cr $ ./hoge $ crystal build hoge.cr --release $ ./hoge

Slide 13

Slide 13 text

Ruby ͱͷҧ͍ • Ҿ਺ʹܕࢦఆͰ͖Δ def hoge(n : Int) • γϯάϧΫΥʔτͩΊ • Bool ஋͸ Bool ϦςϥϧɺΫϥε͡Όͳ͍ • RubyGems తͳύοέʔδγεςϜແ͍ • (crystal#220) • ࣗલͷґଘ؅ཧγεςϜ͕͋Δ $ crystal deps • ඪ४ϥΠϒϥϦʹ͍Ζ͍ΖἧͬͯΔ • ͳͲͳͲ $VSTFT )551 .BSLEPXO 0"VUI 4QFDʜ

Slide 14

Slide 14 text

ϕϯνϚʔΫ

Slide 15

Slide 15 text

஛಺ؔ਺ #!/usr/bin/env crystal def tarai(x, y, z) return y if x <= y tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y)) end puts tarai(13, 10, 0) #!/usr/bin/env ruby def tarai(x, y, z) return y if x <= y tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y)) end puts tarai(13, 10, 0)

Slide 16

Slide 16 text

஛಺ؔ਺ #!/usr/bin/env crystal def tarai(x, y, z) return y if x <= y tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y)) end puts tarai(13, 10, 0) #!/usr/bin/env ruby def tarai(x, y, z) return y if x <= y tarai(tarai(x - 1, y, z), tarai(y - 1, z, x), tarai(z - 1, x, y)) end puts tarai(13, 10, 0) ιʔείʔυ͸ શ͘ಉ͡ ճ UBSBJݺͼग़͠

Slide 17

Slide 17 text

஛಺ؔ਺ 3VCZ $SZTUBM ͦͷ·· $SZTUBM Ϗϧυࡁ $SZTUBM ࠷దԽࡁ UBSBJ T T T T

Slide 18

Slide 18 text

஛಺ؔ਺ 3VCZ $SZTUBM ͦͷ·· $SZTUBM Ϗϧυࡁ $SZTUBM ࠷దԽࡁ UBSBJ T T T T ͦͷ··Y όΠφϦϏϧυY

Slide 19

Slide 19 text

؆୯ͳ HTTP αʔό #!/usr/bin/env crystal require "http/server" server = HTTP::Server.new(8080) do |request| HTTP::Response.ok "text/plain", "Hello world!" end server.listen #!/usr/bin/env ruby require "rack" app = Proc.new do |env| ["200", { "Content-Type" => "text/plain" }, ["Hello world!"]] end Rack::Handler::WEBrick.run(app, Port: 8080)

Slide 20

Slide 20 text

؆୯ͳ HTTP αʔό 3VCZ $SZTUBM ͦͷ·· $SZTUBM Ϗϧυࡁ $SZTUBM ࠷దԽࡁ ฒྻ SFRT 
 SFRT 
 SFRT 
 SFRT SFRT $ ab -k -c 10 -n 10000 http://localhost:8080/

Slide 21

Slide 21 text

؆୯ͳ HTTP αʔό 3VCZ $SZTUBM ͦͷ·· $SZTUBM Ϗϧυࡁ $SZTUBM ࠷దԽࡁ ฒྻ SFRT 
 SFRT 
 SFRT 
 SFRT SFRT $ ab -k -c 10 -n 10000 http://localhost:8080/ ͦͷ··Y ࠷దԽϏϧυY

Slide 22

Slide 22 text

WAF • Codcore/amethyst (ࢵਫথ) • Rails ͬΆ͍΍ͭ • druvrajvanshi/Moonshine • Sinatra ͬΆ͍΍ͭ

Slide 23

Slide 23 text

ॴײ • ஌໊౓௿͍ • άάϥϏϦςΟ௿͍ • Go ͸όΠφϦు͚Δ͚Ͳจ๏͕…ͱ͍͏
 Rubyist ʹ΢έ͕ྑͦ͞͏ • Ruby ք۾ͷࢿ࢈ΛҠ২͠΍ͦ͢͏ • ΤίγεςϜڵོͯ͠΄͍͠