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

Post on 12-Dec-2014

12.849 views 0 download

description

うずらフォントで作成したのですが、slideshare上ではなんとも可愛げのないフォントに・・・。 ダウンロードして自由に使っていただいて構いません。 ダウンロードされる方は、一緒にうずらフォントをダウンロードして使うことをお勧めします。 http://key.milkcafe.to/azuki/font/uzura.html 発表の詳細情報はブログのエントリとしてまとめてあります。 あわせてこちらもご覧下さい。 http://mochikoastech.blog113.fc2.com/blog-entry-27.html http://mochikoastech.blog113.fc2.com/blog-entry-28.html http://mochikoastech.blog113.fc2.com/blog-entry-36.html http://mochikoastech.blog113.fc2.com/blog-entry-37.html

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

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

HelloWorldを書いてみる

1-1

先ずは

PHP

書いてみる

こんなテキストファイルを

作って

<?php

echo ‘Hello World’;

?>

こんな名前で保存する

sample1.php

そして

コマンドラインで

php sample1.php

をたたく

実行結果は?

Hello World

でたー

PHP

で書いた

HelloWorld

完成です

ではでは

1-2

今度は

Ruby

で書いてみる

さっきと同じく

こんなテキストファイルを

作って

puts 'Hello World'

こんな名前で保存する

sample1.rb

そして

コマンドラインで

ruby sample1.rb

をたたくと

実行結果は?

Hello World

おー、出たー(結果はそりゃ一緒だよね)

簡単です

めっちゃくちゃ

簡単です

そしてこんな簡単な

HelloWorldから

合計8つもの

「違うところ」

「同じところ」

つまり

学びのポイント

見つけます

行きますよー?

その

HelloWorldから分かる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コマンドを使います

・・・ふう(もうへとへと)

すごい!

たったあれだけの

HelloWorldから

8こも学んだ!

自分に拍手!

ぱちぱち!

前半戦終了

では

1と2が終わったので

もう一度アジェンダ

確認

1.HelloWorldを  PHPとRubyそれぞれで書く

2.そこから分かることを話す

3.「モナベアツスクリプト」を  PHPとRubyそれぞれで書く

4.そこから分かることを話す

3と4に行きましょう

よーし

PHP使いから見たRuby

モナベアツスクリプトを書いてみる

モナベアツスクリプト?

あれですよ

モナー

世界のナベアツ

みたいなことを

やらせる

スクリプトです

ええと

ナベアツをご存知ない方は

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 = '                    / ̄ ̄ ̄ ̄ ̄ ' . "\n";$monaBeatsu .= '   ヽ )メ )メ )ノ< (゚∀゚ (゚∀゚ (゚∀゚ ' . strval($i + 1) . "\n";$monaBeatsu .= '                    \_____ ';

} elseif (($i + 1) % 5 === 0) {$monaBeatsu = '    ∧_∧   / ̄ ̄ ̄ ̄ ̄ ' . "\n";$monaBeatsu .= '   ( = ゚ ω )< ゚ ' . strval($i + 1) . "\n";$monaBeatsu .= '   (   )  \_____ ' . "\n";$monaBeatsu .= '    | |  |' . "\n";$monaBeatsu .= '   (_ _ )_) ';

} else {$monaBeatsu = '    ∧_∧   / ̄ ̄ ̄ ̄ ̄ ' . "\n";$monaBeatsu .= '   ( ´∀ `)<  ' . strval($i + 1) . "\n";$monaBeatsu .= '   (   )  \_____ ' . "\n";$monaBeatsu .= '    | |  |' . "\n";$monaBeatsu .= '   (_ _ )_) ';

}

echo $monaBeatsu . "\n";}?>

こんな名前で保存する

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["3"] != nil || (i % 3) == 0mona_beatsu = '                                       / ̄ ̄ ̄ ̄ ̄ ' + "\n"mona_beatsu += '      ヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ< ' + i.to_s + "\n"mona_beatsu += '                                      \_____ '

elsif (i % 5) == 0mona_beatsu = '       ∧ ∧     _ / ̄ ̄ ̄ ̄ ̄ ' + "\n"mona_beatsu += '      ( = ゚ ω  ゚)< ' + i.to_s + "\n"mona_beatsu += '             ( ) \_____ ' + "\n"mona_beatsu += '          | | |' + "\n"mona_beatsu += '     (_ _)_) '

else mona_beatsu = '       ∧ ∧     _ / ̄ ̄ ̄ ̄ ̄ ' + "\n"mona_beatsu += '      ( ´∀  `)< ' + i.to_s + "\n"mona_beatsu += '             ( ) \_____ ' + "\n"mona_beatsu += '          | | |' + "\n"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  (   )  \_____   | |  |  (_ _)_)

ちょっとなごむ

・・・

それは

さておき

HelloWorldよりは込み入ってても

そんなに難しくない

のです

コメント含めてもせいぜい30行くらい

ではこの

モナベアツスクリプトから

さっきと

同じ

ように

合計8つの

「違うところ」

「同じところ」

つまり

おもろー

いや違った

学びのポイント

見つけます

行きますよー?(さらに駆け足で)

その

モナベアツスクリプトから分かる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 + 1end ( 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: elseif

Ruby: elsif

Rubyってelseifの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こも学んだ!

HelloWorldと合わせて

16こも学んだ!

そんな自分に

拍手!

ぱちぱち!

それから

RBCに拍手!

ぱちぱち!

後半戦終了

では

これにて

PHP使いから見たRuby

終わります

ご清聴

ありがとうございましたー