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

Learn ruby with doukaku

Learn ruby with doukaku

西日暮里.rb ゴールデンだよLT大会 @ 秋葉原UDX!!

Fumiaki MATSUSHIMA

April 28, 2016
Tweet

More Decks by Fumiaki MATSUSHIMA

Other Decks in Programming

Transcript

  1. (株)永和システムマネジメント
    @mtsmfm
    松島 史秋
    どう書くで学ぶ Ruby

    View Slide

  2. 松島 史秋
    GitHub, Twitter, Nintendo ID
    @mtsmfm

    View Slide

  3. View Slide

  4. どう書く

    View Slide

  5. https://yhpg.doorkeeper.jp/

    View Slide

  6. http://nabetani.sakura.ne.jp/hena/orde03nofconv/

    View Slide

  7. 多角形の頂点のうち、
    内角が180度より小さいも
    のの数を計算する
    プログラムを書け。

    View Slide

  8. スタート!!!

    View Slide

  9. ...

    View Slide

  10. 1時間後

    View Slide

  11. Emoji provided free by Emoji One

    View Slide

  12. Emoji provided free by Emoji One

    View Slide

  13. できても
    できなくても
    発表

    View Slide

  14. Emoji provided free by Emoji One

    View Slide

  15. おもしろい!

    View Slide

  16. View Slide

  17. 1時間という枠

    View Slide

  18. 素振り重要
    Photo by cambodia4kidsorg

    View Slide

  19. 文字列操作

    View Slide

  20. どう書くの
    入力は
    文字列

    View Slide

  21. /*0*/ test( "1a2t3s2s", "11" );
    /*1*/ test( "1a1c1d00", "22" );
    /*2*/ test( "00", "20" );
    /*3*/ test( "3q", "6" );
    /*4*/ test( "3t2a", "8" );
    /*5*/ test( "3t3a", "8" );
    /*6*/ test( "3t4a", "12" );
    /*7*/ test( "004q2g", "32" );
    /*8*/ test( "4c2g2k4i", "24" );
    /*9*/ test( "1o1a4f4i1t", "26" );
    /*10*/ test( "4t3a4g2a2o2p", "24" );
    /*11*/ test( "4i4o3i3c3n3h2c", "30" );
    /*12*/ test( "4m3n3m002b1b3a", "34" );
    /*13*/ test( "001b2a3t4s3s2s1s", "27" );
    /*14*/ test( "1n1j3o4o1h2n2r1k", "36" );
    /*15*/ test( "4o2a2j1m2e4l2l3m3o", "42" );

    View Slide

  22. String#scan
    '1a2t3s2s'.scan(/\d\w/)
    #=> ["1a", "2t", "3s", "2s"]

    View Slide

  23. String#chars

    View Slide

  24. String#ord
    Integer#chr
    ?a.ord
    #=> 97
    97.chr
    #=> "a"

    View Slide

  25. 配列操作

    View Slide

  26. Array#zip
    Array#rotate

    View Slide

  27. Array#combination
    a = [1, 2, 3, 4]
    a.combination(1).to_a
    => [[1],[2],[3],[4]]
    a.combination(2).to_a
    => [[1,2],[1,3],[1,4],[2,3],[2,4],[3,4]]
    a.combination(3).to_a
    => [[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
    a.combination(4).to_a
    => [[1,2,3,4]]

    View Slide

  28. Array#transpose
    [
    [1,2],
    [3,4],
    [5,6]
    ].transpose
    => [[1, 3, 5], [2, 4, 6]]

    View Slide

  29. Enumerable#each_slice
    Enumerable#each_cons

    View Slide

  30. &.

    View Slide

  31. Ruby
    組込みだけで
    超便利!

    View Slide

  32. 便利 gem

    View Slide

  33. gem 'activesupport',
    require: 'active_support/all'

    View Slide

  34. あれ?
    AS だっけ?
    標準だっけ?

    View Slide

  35. Emoji provided free by Emoji One

    View Slide

  36. gem 'pry-rescue'

    View Slide

  37. 例外上がった
    ところで
    止まる

    View Slide

  38. Bundler

    View Slide

  39. require 'bundler/inline'
    gemfile do
    source 'https://rubygems.org'
    gem 'activesupport',
    require: 'active_support/all'
    end

    View Slide

  40. 結果の共有に
    便利

    View Slide

  41. フィードバック

    View Slide

  42. '1a2t3s2s'.scan(/\d\w/)
    #=> ["1a", "2t", "3s", "2s"]

    View Slide

  43. '1a2t3s2s'.scan(/../)
    #=> ["1a", "2t", "3s", "2s"]

    View Slide

  44. '1a2t3s2s'.scan(/../)
    #=> ["1a", "2t", "3s", "2s"]
    Emoji provided free by Emoji One

    View Slide

  45. 別言語で解く

    View Slide

  46. Ruby の表現力

    View Slide

  47. “Rubyをキメると
    気持ちいい”
    - matz

    View Slide