SlideShare a Scribd company logo
1 of 45
Download to read offline
PHPerを魅了する
                        Rubyの魅力(1)
                               芳野 貴洋
                                 (株)手嶋屋
                          第1回 LT (社内勉強会)
PHPerを魅了するRubyの魅力(1)
                                  2013/03/13
                                     Powered by Rabbit 2.0.6
Ruby
Ruby

    ✓ 国産のオブジェクト指向言語
    ✓ http://www.ruby-lang.org/ja/


PHPerを魅了するRubyの魅力(1)          Powered by Rabbit 2.0.6
Ruby::PHPとの違い

    ✓ Web用言語ではなく汎用言語
    ✓ 純粋なオブジェクト指向言語
    ✓ 日本語の扱いが得意

PHPerを魅了するRubyの魅力(1)    Powered by Rabbit 2.0.6
Rubyの魅力

    ✓ 短い
    ✓ 簡単
    ✓ 綺麗

PHPerを魅了するRubyの魅力(1)             Powered by Rabbit 2.0.6
Rubyの魅力

    ✓ 短い ← 今回はこれだけを紹介
    ✓ 簡単
    ✓ 綺麗

PHPerを魅了するRubyの魅力(1)             Powered by Rabbit 2.0.6
Ruby::
 短い
Ruby::短い


                  短いはいい
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い

    ✓ 短いコードは書きやすい
    ✓ 短いコードは読みやすい
    ✓ 短いコードはバグが出にくい!!

PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


        短いコードはバ
        グが出にくい
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い
    ✓ 短いコードはバグが出にくい
         ✓ キー入力が減るとタイプミスが減る
         ✓ 1画面に処理が収まるほど可読性が
          高い(80x24)
         ✓ 差分が減るので違いがわかりやすい
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


                        重要
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


        短いコードはバ
        グが出にくい
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


                        比較
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い

      PHPとRubyで同
      じ処理をするス
      クリプトを書く
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


     「引数が100未満かを確認し、100未満の場
     合は1つづつ順番に加算して結果を返す」



PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


                   まず、PHP
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い
                         <?php
                         function add($number)
                         {
                            if ( $number < 100 )
                           {
                              $i = 0;
                              $result = 0;
                              while ($i <= $number)
                             {
                                $result = $result + $i;
                                $i++;
                             }
                              return $result;
                           }
                            else
                           {
                              return "100以上です";
                           }
                         }
                         print add($argv[1]);
                         ?>




PHPerを魅了するRubyの魅力(1)                                      Powered by Rabbit 2.0.6
Ruby::短い


                つぎ、Ruby
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い
                 def add(number)
                   return "100以上です" if number >= 100
                   result = 0
                   (1..number).each do |i|
                     result += i
                   end
                   result
                 end
                 puts add(ARGV[0].to_i)


PHPerを魅了するRubyの魅力(1)                                   Powered by Rabbit 2.0.6
Ruby::短い
         使用 行・文字数
      言語  行数(関数) 文字数
    PHP     21(9)行 261文字
    Ruby     9(6)行 157文字
   Rubyの方が短かく書ける!
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


        短いコードはバ
        グが出にくい
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


      今回使ったRuby
        の魔法
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


     今回のサンプルにはコードを短かくするた
       めの3つのRuby魔法を使いました



PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い.魔法1


                       if 修飾子
PHPerを魅了するRubyの魅力(1)            Powered by Rabbit 2.0.6
Ruby::短い.魔法1

   ifの条件が真の時に実行する処理を
   先に書く
        def add(number)
          return "100以上です" if number >= 100


PHPerを魅了するRubyの魅力(1)                   Powered by Rabbit 2.0.6
Ruby::短い.魔法1

   もちろん unless も同じように書け
   る
         def hoge(number)
           return "100以上ではないです" unless number >= 100



PHPerを魅了するRubyの魅力(1)                           Powered by Rabbit 2.0.6
Ruby::短い.魔法2


        範囲(Range)オ
         ブジェクト
PHPerを魅了するRubyの魅力(1)           Powered by Rabbit 2.0.6
Ruby::短い.魔法2

   「○番から△番まで」をオブジェク
   ト化する
        (1..number).each do |i|   # 1からnumberまでが範囲オジェクト




PHPerを魅了するRubyの魅力(1)                              Powered by Rabbit 2.0.6
Ruby::短い.魔法2
     範囲 (1..number) は配
     列 [1,2,3...number] の
     とほぼ同じ (ただし後ろの
       書き方は出来ない)
PHPerを魅了するRubyの魅力(1)           Powered by Rabbit 2.0.6
Ruby::短い.魔法3


                       戻り値
PHPerを魅了するRubyの魅力(1)           Powered by Rabbit 2.0.6
Ruby::短い.魔法3
   最後に評価した値がデフォルトの戻
   り値になる
                  # result を評価した値が自動で戻り値になる
                  # return は不要
                  result
                end


PHPerを魅了するRubyの魅力(1)                          Powered by Rabbit 2.0.6
Ruby::短い
                 def add(number)
                   return "100以上です" if number >= 100
                   result = 0
                   (1..number).each do |i|
                     result += i
                   end
                   result
                 end
                 puts add(ARGV[0].to_i)


PHPerを魅了するRubyの魅力(1)                                   Powered by Rabbit 2.0.6
Ruby::短い

      このようにRuby
      で書くとコード
        が短か..
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い


      Rubyが本気出を
      出したようです
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い

   本気、出しました
        def add(number)
          return "100以上です" if number >= 100
          (1..number).inject {|result, i| result += i }
        end
        puts add(ARGV[0].to_i)


PHPerを魅了するRubyの魅力(1)                             Powered by Rabbit 2.0.6
Ruby::短い

    ✓ injectメソッでたたみこみ演算
    ✓ 最後の評価はメソッドも可
         ✓ injectを評価した結果が戻る


PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い
          使用 行・文字数
       言語   行数(関数) 文字数
     PHP     21(9)行 261文字
     Ruby     9(6)行 157文字
     Ruby本気   5(2)行 135文字
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い
    まだあるRubyの魔法
     ✓ ブロック付きメソッド呼び出し
     ✓ 特異メソッド・メソッド再定義
     ✓ キーワード引数 ← 2.0 New
     ✓ カリー化 ← 2.0 New

     ✓ などなど...
PHPerを魅了するRubyの魅力(1)              Powered by Rabbit 2.0.6
Ruby::短い.まとめ


                       まとめ
PHPerを魅了するRubyの魅力(1)         Powered by Rabbit 2.0.6
Ruby::短い.まとめ
    ✓ 短いコードはバグが減る
    ✓ Rubyの魔法でより短かいコード
      が書ける
    ✓ たまに本気出す
PHPerを魅了するRubyの魅力(1)     Powered by Rabbit 2.0.6
Ruby::短い.まとめ


                       ただし
PHPerを魅了するRubyの魅力(1)         Powered by Rabbit 2.0.6
Ruby::短い.まとめ

        短かく過ぎると
        黒魔法になるの
          で注意
PHPerを魅了するRubyの魅力(1)     Powered by Rabbit 2.0.6
おわり

        ご清聴ありがと
        うございまし
          た。
PHPerを魅了するRubyの魅力(1)         Powered by Rabbit 2.0.6
Powered by Rabbit
    このプレゼン資料はRD書式と
    Rabbitを使って作成しました。
    ✓ RD書式
    ✓ Rabbit: rabbit-shocker.org
PHPerを魅了するRubyの魅力(1)          Powered by Rabbit 2.0.6

More Related Content

Similar to phperを魅了するrubyの魅力(1)

Rubinius Under a Microscope
Rubinius Under a MicroscopeRubinius Under a Microscope
Rubinius Under a Microscope高広 内山
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようKoichi Sasada
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon phpdo_aki
 
第1部「一時間で覚えるruby」
第1部「一時間で覚えるruby」第1部「一時間で覚えるruby」
第1部「一時間で覚えるruby」Hiromu Shioya
 
Rails基礎講座 part.1
Rails基礎講座 part.1Rails基礎講座 part.1
Rails基礎講座 part.1Jun Yokoyama
 
そんな装備で大丈夫か?
そんな装備で大丈夫か?そんな装備で大丈夫か?
そんな装備で大丈夫か?2celeb
 
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxTomoya Kawanishi
 
Python vs ruby
Python vs rubyPython vs ruby
Python vs rubyosamunmun
 
PHPer のための Ruby 教室
PHPer のための Ruby 教室PHPer のための Ruby 教室
PHPer のための Ruby 教室higaki
 
Ruby Enterprise Environment
Ruby Enterprise EnvironmentRuby Enterprise Environment
Ruby Enterprise EnvironmentTomoya Kawanishi
 
はじめてのRuby拡張ライブラリ
はじめてのRuby拡張ライブラリはじめてのRuby拡張ライブラリ
はじめてのRuby拡張ライブラリMasahiro Tomita
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアKouhei Sutou
 
Ruby2.0 Getting Started
Ruby2.0 Getting StartedRuby2.0 Getting Started
Ruby2.0 Getting StartedYuki Teraoka
 
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Ouka Yuka
 
Ruby開発が教えてくれたこと
Ruby開発が教えてくれたことRuby開発が教えてくれたこと
Ruby開発が教えてくれたことyukihiro_matz
 
Weeklycms20120218
Weeklycms20120218Weeklycms20120218
Weeklycms20120218Yoshi Sakai
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースよしだ あつし
 

Similar to phperを魅了するrubyの魅力(1) (20)

Rubinius Under a Microscope
Rubinius Under a MicroscopeRubinius Under a Microscope
Rubinius Under a Microscope
 
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 RubyをコンパイルしようCookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
Cookpad 17 day Tech internship 2017 言語処理系入門 Rubyをコンパイルしよう
 
20111029 rubyon php
20111029 rubyon php20111029 rubyon php
20111029 rubyon php
 
第1部「一時間で覚えるruby」
第1部「一時間で覚えるruby」第1部「一時間で覚えるruby」
第1部「一時間で覚えるruby」
 
Ruby紹介
Ruby紹介Ruby紹介
Ruby紹介
 
Rails基礎講座 part.1
Rails基礎講座 part.1Rails基礎講座 part.1
Rails基礎講座 part.1
 
Rubyの話を少し
Rubyの話を少しRubyの話を少し
Rubyの話を少し
 
そんな装備で大丈夫か?
そんな装備で大丈夫か?そんな装備で大丈夫か?
そんな装備で大丈夫か?
 
Ruby on RedHat Enterprise Linux
Ruby on RedHat Enterprise LinuxRuby on RedHat Enterprise Linux
Ruby on RedHat Enterprise Linux
 
Python vs ruby
Python vs rubyPython vs ruby
Python vs ruby
 
PHPer のための Ruby 教室
PHPer のための Ruby 教室PHPer のための Ruby 教室
PHPer のための Ruby 教室
 
Ruby Enterprise Environment
Ruby Enterprise EnvironmentRuby Enterprise Environment
Ruby Enterprise Environment
 
はじめてのRuby拡張ライブラリ
はじめてのRuby拡張ライブラリはじめてのRuby拡張ライブラリ
はじめてのRuby拡張ライブラリ
 
Rubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェアRubyを使った分散全文検索ミドルウェア
Rubyを使った分散全文検索ミドルウェア
 
mrubyのすすめ
mrubyのすすめmrubyのすすめ
mrubyのすすめ
 
Ruby2.0 Getting Started
Ruby2.0 Getting StartedRuby2.0 Getting Started
Ruby2.0 Getting Started
 
Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!Rubyの仕事で食べていくために僕らは!
Rubyの仕事で食べていくために僕らは!
 
Ruby開発が教えてくれたこと
Ruby開発が教えてくれたことRuby開発が教えてくれたこと
Ruby開発が教えてくれたこと
 
Weeklycms20120218
Weeklycms20120218Weeklycms20120218
Weeklycms20120218
 
Next GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリースNext GAE Heroku を使って 3分でRailsアプリをリリース
Next GAE Heroku を使って 3分でRailsアプリをリリース
 

phperを魅了するrubyの魅力(1)

  • 1. PHPerを魅了する Rubyの魅力(1) 芳野 貴洋 (株)手嶋屋 第1回 LT (社内勉強会) PHPerを魅了するRubyの魅力(1) 2013/03/13 Powered by Rabbit 2.0.6
  • 3. Ruby ✓ 国産のオブジェクト指向言語 ✓ http://www.ruby-lang.org/ja/ PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 4. Ruby::PHPとの違い ✓ Web用言語ではなく汎用言語 ✓ 純粋なオブジェクト指向言語 ✓ 日本語の扱いが得意 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 5. Rubyの魅力 ✓ 短い ✓ 簡単 ✓ 綺麗 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 6. Rubyの魅力 ✓ 短い ← 今回はこれだけを紹介 ✓ 簡単 ✓ 綺麗 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 8. Ruby::短い 短いはいい PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 9. Ruby::短い ✓ 短いコードは書きやすい ✓ 短いコードは読みやすい ✓ 短いコードはバグが出にくい!! PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 10. Ruby::短い 短いコードはバ グが出にくい PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 11. Ruby::短い ✓ 短いコードはバグが出にくい ✓ キー入力が減るとタイプミスが減る ✓ 1画面に処理が収まるほど可読性が 高い(80x24) ✓ 差分が減るので違いがわかりやすい PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 12. Ruby::短い 重要 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 13. Ruby::短い 短いコードはバ グが出にくい PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 14. Ruby::短い 比較 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 15. Ruby::短い PHPとRubyで同 じ処理をするス クリプトを書く PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 16. Ruby::短い 「引数が100未満かを確認し、100未満の場 合は1つづつ順番に加算して結果を返す」 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 17. Ruby::短い まず、PHP PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 18. Ruby::短い <?php function add($number) { if ( $number < 100 ) { $i = 0; $result = 0; while ($i <= $number) { $result = $result + $i; $i++; } return $result; } else { return "100以上です"; } } print add($argv[1]); ?> PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 19. Ruby::短い つぎ、Ruby PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 20. Ruby::短い def add(number) return "100以上です" if number >= 100 result = 0 (1..number).each do |i| result += i end result end puts add(ARGV[0].to_i) PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 21. Ruby::短い 使用 行・文字数 言語 行数(関数) 文字数 PHP 21(9)行 261文字 Ruby 9(6)行 157文字 Rubyの方が短かく書ける! PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 22. Ruby::短い 短いコードはバ グが出にくい PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 23. Ruby::短い 今回使ったRuby の魔法 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 24. Ruby::短い 今回のサンプルにはコードを短かくするた めの3つのRuby魔法を使いました PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 25. Ruby::短い.魔法1 if 修飾子 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 26. Ruby::短い.魔法1 ifの条件が真の時に実行する処理を 先に書く def add(number) return "100以上です" if number >= 100 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 27. Ruby::短い.魔法1 もちろん unless も同じように書け る def hoge(number) return "100以上ではないです" unless number >= 100 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 28. Ruby::短い.魔法2 範囲(Range)オ ブジェクト PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 29. Ruby::短い.魔法2 「○番から△番まで」をオブジェク ト化する (1..number).each do |i| # 1からnumberまでが範囲オジェクト PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 30. Ruby::短い.魔法2 範囲 (1..number) は配 列 [1,2,3...number] の とほぼ同じ (ただし後ろの 書き方は出来ない) PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 31. Ruby::短い.魔法3 戻り値 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 32. Ruby::短い.魔法3 最後に評価した値がデフォルトの戻 り値になる # result を評価した値が自動で戻り値になる # return は不要 result end PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 33. Ruby::短い def add(number) return "100以上です" if number >= 100 result = 0 (1..number).each do |i| result += i end result end puts add(ARGV[0].to_i) PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 34. Ruby::短い このようにRuby で書くとコード が短か.. PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 35. Ruby::短い Rubyが本気出を 出したようです PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 36. Ruby::短い 本気、出しました def add(number) return "100以上です" if number >= 100 (1..number).inject {|result, i| result += i } end puts add(ARGV[0].to_i) PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 37. Ruby::短い ✓ injectメソッでたたみこみ演算 ✓ 最後の評価はメソッドも可 ✓ injectを評価した結果が戻る PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 38. Ruby::短い 使用 行・文字数 言語 行数(関数) 文字数 PHP 21(9)行 261文字 Ruby 9(6)行 157文字 Ruby本気 5(2)行 135文字 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 39. Ruby::短い まだあるRubyの魔法 ✓ ブロック付きメソッド呼び出し ✓ 特異メソッド・メソッド再定義 ✓ キーワード引数 ← 2.0 New ✓ カリー化 ← 2.0 New ✓ などなど... PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 40. Ruby::短い.まとめ まとめ PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 41. Ruby::短い.まとめ ✓ 短いコードはバグが減る ✓ Rubyの魔法でより短かいコード が書ける ✓ たまに本気出す PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 42. Ruby::短い.まとめ ただし PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 43. Ruby::短い.まとめ 短かく過ぎると 黒魔法になるの で注意 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 44. おわり ご清聴ありがと うございまし た。 PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6
  • 45. Powered by Rabbit このプレゼン資料はRD書式と Rabbitを使って作成しました。 ✓ RD書式 ✓ Rabbit: rabbit-shocker.org PHPerを魅了するRubyの魅力(1) Powered by Rabbit 2.0.6