SlideShare a Scribd company logo
15分でわかる PHP と Ruby の違い 第3回 イケテル Rails 勉強会@東京 2008年4月26日
みなさん
こんにちは
今日は
第3回 イケテルRail s 勉強会@東京
の中で
15分
だけ
お時間を 頂戴して
PHP使い から見た Ruby
という視点で
Ruby
の
話をしたいと 思います
・・・?
イケテル
Rails
勉強会なのに
なんで 急に
PHP使い から見た
Ruby
なのか?
と言うと
理由1
前回の
第2回 イケテルRails勉強会@東京
で
見た
Java使い から見た Rubyの特色
という 発表が
すっっっっっ
・・・
ごく
イケてたから!
ああ、あんな発表を
いつか私も してみたい・・・
そんな あこがれの 気持ち
これが 理由1
なのです
私欲にまみれてて すみません・・
で
もうひとつの 理由は
身の回りに
PHP
使い
が
多かったから
これが 理由2です
・・・
もう少し 説明しますと
なんと 言いますか
私が RBCに
Railsイケテル! Rubyおもしろい!
って
教えて もらった みたいに
周囲に居る人に
Railsイケテル! Rubyおもしろい!
って
知ってもらえる
きっかけを
作りたかった のです
貰ったものを
増やして
他の人に 渡す
そんな ループを
RBCで
ぐるっぐる
ぐるっっぐる
回して みたかった! のです
長々と 語りましたが (前説で3分経ったよ)
要は
PHPを
使っている人の ための
Rubyの
きっかけ 講座
に
なれたら嬉しい
それだけです
よーし
行きますよ!
あ、その前に
どんな流れ
で
話を するのか
だけ
先にお話し しておきます
今日の流れ
1.HelloWorldを   PHPとRubyそれぞれで書く 2.そこから分かることを話す 3.「モナベアツスクリプト」を   PHPとRubyそれぞれで書く 4.そこから分かることを話す
この4つです
そして 時間も短いので
この話の 目指すところは
あくまで
きっかけ 講座
にすぎません
なので
「もうちょっと 詳しく 知りたかった・・・」
と
思って もらえれば
大成功!
という訳で
超 駆け足です
よーし
今度こそ 行きますよ!
PHP 使いから見た Ruby
1
Hello Worldを 書いてみる
1-1
先ずは
PHP
で
書いてみる
こんな テキストファイルを 作って
<?php echo ‘Hello World’; ?>
こんな名前で 保存する
sample1.php
そして
コマンド ラインで
php sample1.php
をたたく
実行 結果は?
Hello World
でたー
PHP
で書いた
Hello World
完成です
ではでは
1-2
今度は
Ruby
で書いてみる
さっきと 同じく
こんな テキストファイルを 作って
puts 'Hello World'
こんな名前で 保存する
sample1.rb
そして
コマンド ラインで
ruby sample1.rb
をたたくと
実行 結果は?
Hello World
おー、出たー (結果はそりゃ一緒だよね)
簡単です
めっちゃくちゃ
簡単です
そしてこんな 簡単な
Hello Worldから
合計 8つもの
「違うところ」
「同じところ」
つまり
学びの ポイント
を
見つけます
行きますよー?
その
2
Hello Worldから 分かる8つのこと
2-1
Rubyは コンパイル 不要
PHP
と
Ruby
どちらも
インタプリタ 言語なので
意識的な コンパイルは
不要
です
これが 1つ目
次!
2-2
クラスは 作らなくても 良い
PHP
は
基本的に
手続き型の 言語なので
クラスは
作りません (特にPHP4以前)
そして
Ruby
Ruby
Ruby
Rubyは
ですね
えーと
オブジェクト指向型言語
なので
す
が
クラス
作らなくても OKです
PHPみたいにも 書けるのです
Rubyって アレでしょ?
クラス・・・ 作んないと いけないんでしょ?
と思っていた PHP使いには
ちょっと嬉しい 事実!
そーか クラスなくても いーのかー
よーし次!
2-3
Rubyの 標準出力は puts
PHP
の標準出力は
echoや print
ですが
Ruby
の標準出力は
putsや print
なのです
(2-3は  それだけです)
次!次! (時間ないよー)
2-4
文字列は “ か’で囲む
これは
PHP
も
Ruby
も
一緒です
それから
シングル クォートで 囲むと
式の展開が行われない
ところも
一緒
です
・・・
次ー! (ちょっと焦ってます)
2-5
Rubyは 式ごとの ;は不要
PHP
だと
式の終わりごとに「;」を書かないと
Parse error: parse error, unexpected String...
などと 怒られますが
Ruby
は
「;」 要りません
改行が「;」の 代わりです
これが 2-5
えーと あとみっつ・・・
2-6
どちらも ファイル名 は自由
これも立派な 「同じところ」
Ruby
も
PHP
も
拡張子を それぞれ
.php
や
.rb
にしていれば
ファイル名 自体は 自由です
クラス名と統一! とかいうルールは ないのです
よし!
あと2こ!
2-7
Rubyには 開始と終了の 宣言が無い
こっちは立派な 「違うところ」
PHP
は
最初
と
最後
を
<?php  ?>
で囲わないと いけません
どこから どこまでが ソースか
分かるように しているのです
でも
Ruby
は
単純
超単純
ファイルの 最初から最後までがソース
なんて潔い!
Rubyって 男前!
そして 最後に!
2-8
Rubyの 実行コマンドは ruby
PHP
が
php コマンドを 使うように
Ruby
は
はruby コマンドを 使います
・・・ふう (もうへとへと)
すごい!
たった あれだけの
Hello Worldから
8こも 学んだ!
自分に 拍手!
ぱちぱち!
前半戦 終了
では
1と2が 終わったので
もう一度 アジェンダ 確認
1.HelloWorldを   PHPとRubyそれぞれで書く 2.そこから分かることを話す 3.「モナベアツスクリプト」を   PHPとRubyそれぞれで書く 4.そこから分かることを話す
3と4に 行きましょう
よーし
PHP 使いから見た Ruby
3
モナベアツ スクリプトを 書いてみる
モナベアツ スクリプト?
あれですよ
モナー
に
世界のナベアツ
みたいな ことを
やらせる
スクリプト です
ええと
ナベアツを ご存知ない方は
FizzBuzz みたいなものだと 思ってください
つまり
3が付く数字と
3の倍数のとき
アホになって
5の倍数のとき
犬っぽくなります
それ以外の ときは?
普通の モナー
シンプルな つくりです
では 書いてみよー
3-1
先ずは
PHP
で書いてみる
こんな テキストファイルを 作って
<?php // 3 の倍数もしくは 3 がつく数字の時はアホになって // 3 の倍数でも 3 がつく数字でもなくて、 5 の倍数の時はモナーが犬っぽくなる for ($i = 0; $i < 40; $i++) { $monaBeatsu = ''; if (strpbrk(strval($i + 1), '3') !== false || ($i + 1) % 3 === 0) { $monaBeatsu = '                     / ̄ ̄ ̄ ̄ ̄ ' . &quot;\n&quot;; $monaBeatsu .= '   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  ' . strval($i + 1) . &quot;\n&quot;; $monaBeatsu .= '                    \_____ '; } elseif (($i + 1) % 5 === 0) { $monaBeatsu = '     ∧_∧   / ̄ ̄ ̄ ̄ ̄ ' . &quot;\n&quot;; $monaBeatsu .= '   (  = ゚ ω ゚)<  ' . strval($i + 1) . &quot;\n&quot;; $monaBeatsu .= '   (   )  \_____ ' . &quot;\n&quot;; $monaBeatsu .= '    | |  |' . &quot;\n&quot;; $monaBeatsu .= '   (_ _ )_) '; } else { $monaBeatsu = '     ∧_∧   / ̄ ̄ ̄ ̄ ̄ ' . &quot;\n&quot;; $monaBeatsu .= '   (  ´∀ `)<  ' . strval($i + 1) . &quot;\n&quot;; $monaBeatsu .= '   (   )  \_____ ' . &quot;\n&quot;; $monaBeatsu .= '    | |  |' . &quot;\n&quot;; $monaBeatsu .= '   (_ _ )_) '; } echo $monaBeatsu . &quot;\n&quot;; } ?>
こんな名前で 保存する
sample2.php
そして
コマンド ラインで
php sample2.php
をたたく
実行 結果は?
    ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  1   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  2   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  3                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  4   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  5   (   )  \_____    | |  |   (_ _ )_)
これが
40 まで
続きます
こんな 感じです
    ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  1   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  2   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  3                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  4   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  5   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  6                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  7   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  8   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  9                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  10   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  21                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  22   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  23                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  24                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  25   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  26   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  27                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  28   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  29   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  30                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  11   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  12                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  13                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  14   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  15                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  16   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  17   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  18                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  19   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  20   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  31                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  32                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  33                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  34                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  35                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  36                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  37                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  38                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  39                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  40   (   )  \_____    | |  |   (_ _ )_)
ちょっと
カワユス
・・・
これが PHP
で書いた
モナベアツ スクリプト
でした
ではでは
3-2
今度は
Ruby
で
書いてみます
さっきと 同じく
こんな テキストファイルを 作って
# 3 の倍数もしくは 3 がつく数字の時はアホになって # 3 の倍数でも 3 がつく数字でもなくて、 5 の倍数の時はモナーが犬っぽくなる for i in 1..40 mona_beatsu = ''; if i.to_s[&quot;3&quot;] != nil || (i % 3) == 0 mona_beatsu = '                     / ̄ ̄ ̄ ̄ ̄ ' + &quot;\n&quot; mona_beatsu += '   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  ' + i.to_s + &quot;\n&quot; mona_beatsu += '                    \_____ ' elsif (i % 5) == 0 mona_beatsu = '     ∧_∧   / ̄ ̄ ̄ ̄ ̄ ' + &quot;\n&quot; mona_beatsu += '   (  = ゚ ω ゚)<  ' + i.to_s + &quot;\n&quot; mona_beatsu += '   (   )  \_____ ' + &quot;\n&quot; mona_beatsu += '    | |  |' + &quot;\n&quot; mona_beatsu += '   (_ _ )_) ' else  mona_beatsu = '     ∧_∧   / ̄ ̄ ̄ ̄ ̄ ' + &quot;\n&quot; mona_beatsu += '   (  ´∀ `)<  ' + i.to_s + &quot;\n&quot; mona_beatsu += '   (   )  \_____ ' + &quot;\n&quot; mona_beatsu += '    | |  |' + &quot;\n&quot; mona_beatsu += '   (_ _ )_) ' end puts mona_beatsu end
こんな名前で 保存する
sample2.rb
そして
コマンド ラインで
ruby sample2.rb
をたたくと
実行 結果は?
    ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  1   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  2   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  3                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  4   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  5   (   )  \_____    | |  |   (_ _ )_)
・・・
まあ実行結果は PHPと 変わりません
さっきと 同じく
40 まで
続きます
こんな 感じです
    ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  1   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  2   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  3                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  4   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  5   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  6                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  7   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  8   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  9                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  10   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  21                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  22   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  23                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  24                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  25   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  26   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  27                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  28   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  29   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  30                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  11   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  12                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  13                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  14   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  15                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  16   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  17   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  18                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  ´∀ `)<  19   (   )  \_____    | |  |   (_ _ )_)     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  20   (   )  \_____    | |  |   (_ _ )_)                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  31                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  32                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  33                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  34                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  35                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  36                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  37                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  38                    \_____                     / ̄ ̄ ̄ ̄ ̄   ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ<  39                    \_____     ∧_∧   / ̄ ̄ ̄ ̄ ̄   (  = ゚ ω ゚)<  40   (   )  \_____    | |  |   (_ _ )_)
ちょっと なごむ
・・・
それは
さておき
Hello World よりは込み入ってても
そんなに 難しくない
のです
コメント含めても せいぜい 30行くらい
ではこの
モナベアツ スクリプトから
さっきと
同じ
ように
合計 8つの
「違うところ」
「同じところ」
つまり
おもろー
いや違った
学びの ポイント
を
見つけます
行きますよー? (さらに駆け足で)
その
4
モナベアツ スクリプトから 分かる8つのこと
4-1
Rubyの コメントは #で始まる
PHP
のコメントは
// で始まるか /*   */ で囲う
のですが
Ruby
のコメントは
# で始まるか
=begin と =end で囲う
のです
ふーん
次! (時間ないのー)
4-2
変数の頭に $が不要
PHP
の変数は
$で 始まります
$i
とか
$j
とか
そういう 感じです
でも
Ruby
のローカル 変数は
$要りません
あとは
命名規則も あって
PHPなら
変数名は
$myName (2つめ以降の単語は 頭文字大文字)
でも
$MyName (単語は全部  頭文字大文字)
でも
自由!
なんですが
Rubyの
変数名は
my_name (単語は _ で区切る)
という
ルール
があります
じゃあ次!
4-3
繰り返しの 書き方が ちょっと違う
PHP
1から10まで 数えたかったら
for (i = 0; i <10; i++) {    echo i + 1; }
同じことを
Ruby
でやりたかったら
for i in 1..10    puts i end
でも
Rubyは
どちらかと いうと
For文
よりも
times メソッドを
使うことの 方が
多いです
こんな感じ
10.times do |i|   puts i + 1 end  ( do 〜 end で囲まれた部分を 繰り返し、 || で囲まれた i に 回数分の数値が代入される)
では次! (間に合わない気がしてきた)
4-4
if文の 書き方も ちょっと違う
さっき
For文
の書き方が
ちょっと
違いましたよね?
それと
同じように
if文の 書き方も
ちょっと 違います
PHP
が
if ($result === 1) {     echo 'TRUE';  } elseif ($result === 0) {     echo 'FALSE';  } else {     echo '?';  }
なら
Ruby
は
if result == 1     puts 'TRUE'  elsif result == 0     puts 'FALSE'  else     puts '?'  end
いちばん 驚いたのは
if result == 1     puts 'TRUE'  elsif  result == 0     puts 'FALSE'  else     puts '?'  end
PHP: elseif Ruby: elsif
違い 分かりました?
PHP: els e if Ruby: elsif
Rubyって els e ifの e ないの?!
コード 書いてて
絶対
間違えます
豆知識!
次つぎー!
4-5
Rubyは ++やーーが 使えない
PHP
でよく使う
i++
とか
iーー
なんと
Ruby
では
使えません
i=i+1
を
少しでも
省略して
書きたかったら
i+=1
を
使います
あと3つ!
次は・・・
4-6
どちらも 型宣言が 不要
これは 「同じところ」 ですね
PHP
も
Ruby
も
$a=5; $a=‘hoge’;
とか
a=5; a=‘hoge’;
のように
intを代入 していた変数に 文字列を再代入
みたいな
Java使い にとっては
ちょっと 気持ち悪いことが
出来ちゃいます
(でも便利)
まだ時間ある?
あと2つ!
4-7
メソッドの 呼び出し方が ちょっと違う
PHP
は
echo strval($i);
みたいな 書き方
つまり
オブジェクト.メソッド
みたいな書き方は
しません
一方
Ruby
は
puts i.to_s
のように
オブジェクト.メソッド
な書き方を
します
あとは
引数
に
( )
を
つけないのも
PHPとの
違い
ですね
では
最後! (もう余裕ない)
4-8
Rubyは 文字列の 連結が .= じゃなくて +=
PHP
の
文字列の 連結は
$str = ‘aaa’; $str .= ‘bbb’;
のように
.=
で繋ぎます
そして
Ruby
の場合は
str = ‘aaa’ str += ‘bbb’
のように
+=
で
繋ぎます
このように
書き方が 微妙に
違う
のです
ささやか ですが
自分で 書いてて
引っか かったり
知りたかった
ポイント
を
挙げてみました
・・・ぜぇぜぇ
よし! 〆ます
たった あれだけの
モナベアツ スクリプト から
8こも 学んだ!
Hello World と合わせて
16こも 学んだ!
そんな 自分に
拍手!
ぱちぱち!
それから
RBCに 拍手!
ぱちぱち!
後半戦 終了
では
これにて
PHP 使いから見た Ruby
を
終わります
ご清聴
ありがとう ございましたー

More Related Content

PDF
20120519 inverse fizzbuzz を解いてみよう
PDF
正規言語でプログラミング
PDF
Gitのすすめ
PDF
やるおがtriphone HMMを作るようです
PPTX
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
PDF
Title
PDF
伺うかのうだうだぐだぐだ
PDF
About technical docs that connect people and technology
20120519 inverse fizzbuzz を解いてみよう
正規言語でプログラミング
Gitのすすめ
やるおがtriphone HMMを作るようです
モダンでもなく reactでもなく フロントエンドでもなく 開発でもない話
Title
伺うかのうだうだぐだぐだ
About technical docs that connect people and technology

More from mochiko AsTech (9)

PDF
20090418 イケテルRails勉強会 第2部Air編 解説
PDF
20090418 イケテルRails勉強会 第2部Air編
PDF
20090418 イケテルRails勉強会 第1部Rails編
PDF
アウトプットの価値
PDF
WiiリモコンでMacBookを操る
PDF
写真で振り返るABCクッキング
PDF
11月8日イケテルjruby勉強会@東京
PDF
勉強会へ行こう!
PPT
5分で分かるcron
20090418 イケテルRails勉強会 第2部Air編 解説
20090418 イケテルRails勉強会 第2部Air編
20090418 イケテルRails勉強会 第1部Rails編
アウトプットの価値
WiiリモコンでMacBookを操る
写真で振り返るABCクッキング
11月8日イケテルjruby勉強会@東京
勉強会へ行こう!
5分で分かるcron
Ad

Recently uploaded (10)

PDF
【QYResearch】世界製薬業界の市場変革と将来展望における多角的な事業展開の探求
PDF
【会社紹介資料】株式会社スキルアップ ~エンジニア第一主義!収入・働きやすさ・成長機会でトップクラスを目指す~ 高収入を実現する還元モデル × 自分で選べ...
PPTX
データサイエンス研修提案資料 RIZAPビジネスイノベーション株式会社.pptx
PDF
受発注バスターズ説明資料  (2025_08_13~) Saleshub掲載用.pdf
PDF
西都 採用サイト掲載用ピッチ資料 | 安心して働ける環境と成長できるキャリアパス
PDF
世界化学品産業の市場動向と将来展望に関する包括的な調査研究 QYResearch
PDF
【2507】インパクト共創室実績
PDF
2508_ インパクトレポート会社概要_雨風太陽
PDF
AI活用の成果が変わる!生成AI時代の速読・読解力トレーニング「AI Reading Lab」
PDF
sustainability_MSOLサステナビリティレポート_202508_日本語版_完成版.pdf
【QYResearch】世界製薬業界の市場変革と将来展望における多角的な事業展開の探求
【会社紹介資料】株式会社スキルアップ ~エンジニア第一主義!収入・働きやすさ・成長機会でトップクラスを目指す~ 高収入を実現する還元モデル × 自分で選べ...
データサイエンス研修提案資料 RIZAPビジネスイノベーション株式会社.pptx
受発注バスターズ説明資料  (2025_08_13~) Saleshub掲載用.pdf
西都 採用サイト掲載用ピッチ資料 | 安心して働ける環境と成長できるキャリアパス
世界化学品産業の市場動向と将来展望に関する包括的な調査研究 QYResearch
【2507】インパクト共創室実績
2508_ インパクトレポート会社概要_雨風太陽
AI活用の成果が変わる!生成AI時代の速読・読解力トレーニング「AI Reading Lab」
sustainability_MSOLサステナビリティレポート_202508_日本語版_完成版.pdf
Ad

PHP使いから見たRuby(Talking about PHP & Ruby)