Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Crystal 言語の紹介 (歌舞伎座.tech #9)

Crystal 言語の紹介 (歌舞伎座.tech #9)

歌舞伎座.tech #9「 異種プログラミング言語格闘勉強会 」での発表資料
http://kbkz.connpass.com/event/26677/

842aaadff6e13fbf372c9b17b49b031c?s=128

Pine Mizune

March 20, 2016
Tweet

Transcript

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

    Crystal language
  2. ࣗݾ঺հ o *%)/ !QJOF o ݴޠ $SZTUBM+BWB4DSJQU o ίϛϡχςΟ $SZTUBM+1ӡӦ

    o .PCJMF'BDUPSZ *OD
  3. ໨࣍  $SZTUBMͱ͸Կ͔  $SZTUBM͕ଞͷݴޠʹൺ΂༏ΕΔ఺  '"2  ·ͱΊ

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

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

    $SZTUBM͸ɺ ͱ
  6. $SZTUBMͱ͸Կ͔   $ ݴޠ 3VCZ ඇৗʹߴ଎ දݱྗ͕๡͍͠ ੜ࢈ੑ͕௿͍ ˓

      ߴ͍දݱྗ ߴ͍ੜ࢈ੑ ࣮ߦ଎౓͕஗͍ ˓ ˓  ಉ࣌ʹ࣮ݱ
  7. <$SZTUBMͱ͸> ݴޠͷಛ௃঺հ  3VCZ෩γϯλοΫε  ΦϒδΣΫτࢦ޲  ੩తܕ෇͚  ωΠςΟϒίʔυग़ྗ

     ηϧϑϗεςΟϯάίϯύΠϥ ͦΕͧΕ ղઆ͠·͢
  8. <$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͸΄΅ಉ͡
  9. <$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
  10. <$SZTUBMͱ͸> ΦϒδΣΫτࢦ޲ u جຊ͸ 3VCZϕʔε ü Ϋϥεϕʔε ü ΦʔϓϯΫϥε ü

    μοΫλΠϐϯά ü .JYJO uඪ४Ϋϥεྫ ü 4USJOH ü 4ZNCPM ü *OU 'MPBU ü #PPM ü /JM
  11. <$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 • ΦʔόʔϩʔυՄೳ • ܕΛ໌ࣔͳ͠΋Մೳ μοΫλΠϐϯά
  12. <$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
  13. <$SZTUBMͱ͸> ηϧϑϗεςΟϯάίϯύΠϥ  $SZTUBM *OJUJBM DPNNJU͕ HJUIVCDPNDSZTUBMMBOHDSZTUBM

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

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

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

    r $ݴޠόΠϯσΟϯά ࠓ೔͸ओʹ͜Εʹ͍ͭͯ
  17. <$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓8"'  u 3VCZ4JOBUSB u $SZTUBM,FNBM require 'sinatra’ get '/'

    do 'Hello world!’ end require “kemal” get ”/” do “Hello World!” end Kemal.run )FMMP8PSMEΛฦ͢ͷΈ
  18. <$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓8"'  3VCZ4JOBUSB $SZTUBM,FNBM ฏۉϨεϙϯε࣌ؒ NT  ЖT ϦΫΤετॲཧ਺ 

    TFD  TFD ѹ౗తͳ଎౓ࠩ ˞ࢀরXSL.BDCPPL1SP-BUFIUUQLFNBMDSDPN
  19. <$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓3FEJT  u 3FEJT ΫϥΠΞϯτͷ࣮૷଎౓Λൺֱ ü ݴޠ໊ ϥΠϒϥϦ໊  ü

    $ )JSFEJT ü $SZTUBM $SZTUBM3FEJT ü (P 3BEJY ü (P 3FEJHP ü ݴޠ໊ ϥΠϒϥϦ໊  ü +BWB +FEJT ü /PEF JPSFEJT ü 3VCZ SFEJTSC ü 3VCZ SFEJTSCIJSFEJT
  20. <$SZTUBMͷ༏Ґ఺>࣮ߦ଎౓3FEJT  ˞ࢀরIUUQXXXTUFGBOXJMMFDPNSFEJTDMJFOUTDSZTUBMWTSVCZWTDWTHP ࣮ߦίϚϯυ਺ඵ

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

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

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

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

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

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

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

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

    SCFOW ʹରԠ͢ΔDSFOW΋͋Γ·͢ɻ
  29. <'"2>28"'͸͋Γ·͔͢ " ͍Ζ͍Ζ͋Γ·͢ u 4JOBUSBϥΠΫͳ ,FNBM IUUQLFNBMDSDPN u 3BJMTϥΠΫͳ 'SPTU

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

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

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

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

  34. 5IBOLT