Slide 1

Slide 1 text

20 Sun, 2016 / Վ෣ب࠲UFDIʮ ҟछϓϩάϥϛϯάݴޠ֨ಆษڧձ ʯ Pine Mizune (@pine613) Crystal language

Slide 2

Slide 2 text

ࣗݾ঺հ o *%)/ !QJOF o ݴޠ $SZTUBM+BWB4DSJQU o ίϛϡχςΟ $SZTUBM+1ӡӦ o .PCJMF'BDUPSZ *OD

Slide 3

Slide 3 text

໨࣍  $SZTUBMͱ͸Կ͔  $SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  '"2  ·ͱΊ

Slide 4

Slide 4 text

໨࣍  $SZTUBMͱ͸Կ͔  $SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  '"2  ·ͱΊ

Slide 5

Slide 5 text

$SZTUBMͱ͸Կ͔   u 3VCZͷදݱྗ u $ͷ଎౓ ͷ ಉ࣮࣌ݱ Λ໨ඪͱͨ͠ݴޠ $SZTUBM͸ɺ ͱ

Slide 6

Slide 6 text

$SZTUBMͱ͸Կ͔   $ ݴޠ 3VCZ ඇৗʹߴ଎ දݱྗ͕๡͍͠ ੜ࢈ੑ͕௿͍ ˓   ߴ͍දݱྗ ߴ͍ੜ࢈ੑ ࣮ߦ଎౓͕஗͍ ˓ ˓  ಉ࣌ʹ࣮ݱ

Slide 7

Slide 7 text

<$SZTUBMͱ͸> ݴޠͷಛ௃঺հ  3VCZ෩γϯλοΫε  ΦϒδΣΫτࢦ޲  ੩తܕ෇͚  ωΠςΟϒίʔυग़ྗ  ηϧϑϗεςΟϯάίϯύΠϥ ͦΕͧΕ ղઆ͠·͢

Slide 8

Slide 8 text

<$SZTUBMͱ͸> 3VCZ෩γϯλοΫε  # A very basic HTTP server require “http/server” server = HTTP::Server.new(8080) do |ctx| ctx.response.content_type = “text/plain” ctx.response.print “Hello world” end puts “Listening on http://0.0.0.0:8080” server.listen 4ZOUBY͸΄΅ಉ͡

Slide 9

Slide 9 text

<$SZTUBMͱ͸> 3VCZ෩γϯλοΫε  1.upto(100) do |i| if i % 15 == 0 puts "FizzBuzz” elsif i % 3 == 0 puts "Fizz” elsif i % 5 == 0 puts "Buzz” else puts i end end u 3VCZ u $SZTUBM 1.upto(100) do |i| if i % 15 == 0 puts "FizzBuzz” elsif i % 3 == 0 puts "Fizz” elsif i % 5 == 0 puts "Buzz” else puts i end end

Slide 10

Slide 10 text

<$SZTUBMͱ͸> ΦϒδΣΫτࢦ޲ u جຊ͸ 3VCZϕʔε ü Ϋϥεϕʔε ü ΦʔϓϯΫϥε ü μοΫλΠϐϯά ü .JYJO uඪ४Ϋϥεྫ ü 4USJOH ü 4ZNCPM ü *OU 'MPBU ü #PPM ü /JM

Slide 11

Slide 11 text

<$SZTUBMͱ͸> ੩తܕ෇͚ def foo(x : Int) puts “Int: #{x}” end def foo(x : String) puts “Str: #{x}” end foo(10) #=> Int: 10 foo(“10”) #=> Str: 10 • ΦʔόʔϩʔυՄೳ • ܕΛ໌ࣔͳ͠΋Մೳ μοΫλΠϐϯά

Slide 12

Slide 12 text

<$SZTUBMͱ͸> ωΠςΟϒίʔυग़ྗ u 3VCZ BOE$SZTUBM ͷιʔείʔυ puts (1..100_000_000) .map { 1 }.reduce { |a, b| a + b } u $SZTUBM ࣮ߦ࣌ؒTFD ࣮ߦ࣌ؒ ࠷దԽ༗ TFD u 3VCZ ࣮ߦ࣌ؒTFD ˞.#1JODI  $SZTUBMW3VCZW

Slide 13

Slide 13 text

<$SZTUBMͱ͸> ηϧϑϗεςΟϯάίϯύΠϥ  $SZTUBM *OJUJBM DPNNJU͕ HJUIVCDPNDSZTUBMMBOHDSZTUBM

Slide 14

Slide 14 text

໨࣍  $SZTUBMͱ͸Կ͔  $SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  '"2  ·ͱΊ

Slide 15

Slide 15 text

$SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  ࣮ߦ଎౓  /JM҆શ ܕ҆શ  ϥΠϒϥϦͷҠ২ੑ r 3VCZ͔ΒͷҠ২ੑ r $ݴޠόΠϯσΟϯά

Slide 16

Slide 16 text

$SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  ࣮ߦ଎౓  /JM҆શ ܕ҆શ  ϥΠϒϥϦͷҠ২ੑ r 3VCZ͔ΒͷҠ২ੑ r $ݴޠόΠϯσΟϯά ࠓ೔͸ओʹ͜Εʹ͍ͭͯ

Slide 17

Slide 17 text

<$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓8"'  u 3VCZ4JOBUSB u $SZTUBM,FNBM require 'sinatra’ get '/' do 'Hello world!’ end require “kemal” get ”/” do “Hello World!” end Kemal.run )FMMP8PSMEΛฦ͢ͷΈ

Slide 18

Slide 18 text

<$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓8"'  3VCZ4JOBUSB $SZTUBM,FNBM ฏۉϨεϙϯε࣌ؒ NT  ЖT ϦΫΤετॲཧ਺  TFD  TFD ѹ౗తͳ଎౓ࠩ ˞ࢀরXSL.BDCPPL1SP-BUFIUUQLFNBMDSDPN

Slide 19

Slide 19 text

<$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓3FEJT  u 3FEJT ΫϥΠΞϯτͷ࣮૷଎౓Λൺֱ ü ݴޠ໊ ϥΠϒϥϦ໊  ü $ )JSFEJT ü $SZTUBM $SZTUBM3FEJT ü (P 3BEJY ü (P 3FEJHP ü ݴޠ໊ ϥΠϒϥϦ໊  ü +BWB +FEJT ü /PEF JPSFEJT ü 3VCZ SFEJTSC ü 3VCZ SFEJTSCIJSFEJT

Slide 20

Slide 20 text

<$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓3FEJT  ˞ࢀরIUUQXXXTUFGBOXJMMFDPNSFEJTDMJFOUTDSZTUBMWTSVCZWTDWTHP ࣮ߦίϚϯυ਺ඵ

Slide 21

Slide 21 text

໨࣍  $SZTUBMͱ͸Կ͔  $SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  '"2  ·ͱΊ

Slide 22

Slide 22 text

<'"2>23VCZͷίʔυ͸ͦͷ··ಈ͖·͔͢ " Ұ෦ಈ͘΋ͷ΋͋Γ·͢ $SZTUBM͸ 3VCZ෩ͷγϯλοΫεΛ࣋ͭผݴޠͰ͢ɻ $SZTUBMͱ 3VCZͷͲͪΒͰ΋ಈ͘ίʔυ͸ॻ͚·͕͢ɺ׬શͳ ޓ׵ੑ͸͋Γ·ͤΜɻ׬શͳޓ׵ੑΛ໨ࢦͨ͠ݴޠͰ΋͋Γ·ͤ Μɻ

Slide 23

Slide 23 text

<'"2>2HFN͸࢖͑ͳ͍ΜͰ͔͢ " ࢖͑·ͤΜ $SZTUBM͸3VCZͷϥΠϒϥϦΛͦͷ··ར༻͢Δ͜ͱΛ૝ఆ͠ ͍ͯ·ͤΜɻ  ओʹ഑ྻɾϋογϡपΓͱΫϥεఆٛपΓʹඇޓ׵ͳมߋ͕͋Δ ͷͰɺϥΠϒϥϦ͸·ͣͦͷ··ಈ࡞͠·ͤΜɻ ˞1)1ͱ ))7.ͷΑ͏ͳؔ܎ʹ͸͋Γ·ͤΜ

Slide 24

Slide 24 text

<'"2>23BJMT͸ಈ͖·͔͢ " ಈ͖·ͤΜ ུ

Slide 25

Slide 25 text

<'"2>2DHP ͸͋Γ·͔͢ " DHPΑΓརศੑ͸ྼΓ·͕͢ɺݴޠػೳͱͯ͠$ #JOEJOH͕͋Γ·͢ @[Link("m")] lib LibM fun acos(x : Float64) : Float64 end puts LibM.acos(-1.0)

Slide 26

Slide 26 text

<'"2>2ύοέʔδϚωʔδϟ͸͋Γ·͔͢ " ެࣜʹ։ൃ͞Ε͍ͯΔ΋ͷ͕͋Γ·͢ (JU ϕʔεͳ෼ࢄܕύοέʔδϚωʔδϟʔ͕طʹ࣮૷͞ Ε͍ͯ·͢ɻ TIBSEZNM ʹ :".-ܗࣜͰґଘΛهड़͠·͢ɻ ৄࡉIUUQTHJUIVCDPNDSZTUBMMBOHTIBSET

Slide 27

Slide 27 text

<'"2>2ରԠ͍ͯ͠Δ 04͸ԿͰ͔͢ " -JOVYͱ .BD049Ͱ͢ 8JOEPXT͸ݴޠͷ։ൃΛ༏ઌ͢ΔͨΊɺޙճ͠ʹ ͳ͍ͬͯ·͢ɻ  ˞ରԠ͢Δ-JOVYσΟετϦϏϡʔγϣϯ %FCJVO6CVOUV3FE)BU$FOU04"SDI-JOVY

Slide 28

Slide 28 text

<'"2>2։ൃपลπʔϧ͸͋ΔΜͰ͔͢ " *%&͸͋Γ·ͤΜ͕ɺπʔϧ΍ΤσΟλϓϥάΠ ϯ͸͍Ζ͍Ζ͋Γ·͢  4VCMJNF7JN&NBDT ޲͚ϓϥάΠϯ͕͋Γ·͢ɻ ίʔυϑΥʔϚολ͸ίϯύΠϥ૊ΈࠐΈͰ͢ɻ ADSZTUBMUPPMGPSNBUA  SCFOW ʹରԠ͢ΔDSFOW΋͋Γ·͢ɻ

Slide 29

Slide 29 text

<'"2>28"'͸͋Γ·͔͢ " ͍Ζ͍Ζ͋Γ·͢ u 4JOBUSBϥΠΫͳ ,FNBM IUUQLFNBMDSDPN u 3BJMTϥΠΫͳ 'SPTU IUUQTHJUIVCDPNDSZTUBMMBOHTIBSET ׬੒౓͕ߴ͘Φεεϝ

Slide 30

Slide 30 text

<'"2>2όʔδϣϯ ͸͍ͭग़·͔͢ " ͦΖͦΖग़ͦ͏ͳงғؾ Ͱ͢ ݱࡏͷ࠷৽൛͸ W Ξϧθϯνϯͷ.BOBT5FDIOPMPHZ4PMVUJPOT͕த ৺ͱͳͬͯ044ͰӶҙ։ൃதͰ͢ɻ IUUQNBOBTDPNBS

Slide 31

Slide 31 text

<'"2>2೔ຊͷίϛϡχςΟ͸͋Γ·͔͢ " ͋Γ·͢ ఆظతͳษڧձΛ౦ژͰ։࠵͍ͯ͠·͢ɻ IUUQDSZTUBMDPOOQBTTDPN  ೔ຊޠυΩϡϝϯτ΋͋Γ·͢ɻ IUUQKBDSZTUBMMBOHPSHEPDT

Slide 32

Slide 32 text

໨࣍  $SZTUBMͱ͸Կ͔  $SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  '"2  ·ͱΊ

Slide 33

Slide 33 text

·ͱΊ u $SZTUBM͸3VCZ෩ͷݴޠ u ߴ଎ͳ࣮ߦͱܕਪ࿦͕ಛ௃ u·ͩ։ൃ్্ͷݴޠ ࠷৽W  u ࠓޙͷൃలʹظ଴

Slide 34

Slide 34 text

5IBOLT