Slide 1

Slide 1 text

Rails歴2年()の私が Cakeを半年触って 学んだこと

Slide 2

Slide 2 text

自己紹介 松原愛美 ランサーズ株式会社1年目 CRE @manamin0521m 学生時代インターンにてRails 2

Slide 3

Slide 3 text

今日話すこと 2つの言語(フレームワーク)で開発したことで、 それぞれの違いを知る → 違いから気づいたことについて 3

Slide 4

Slide 4 text

CakePHP 1.3→2.8 PHP 5.3 Version 4

Slide 5

Slide 5 text

言語仕様の違い

Slide 6

Slide 6 text

1. viewに値を渡す時の違い Rails @user = User.find(1) Cake2.8 $user = $this->User->findById(1); $this->set(user, $user); 6

Slide 7

Slide 7 text

「インスタンス変数」の認識の誤りに気づく ◂ Ruby時代は「viewに値を渡せる変数」と認識 ◂ 本来はメソッド内のみ使用可という意味  → オブジェクト指向の理解のきっかけに 7

Slide 8

Slide 8 text

2. 返り値の理解 Ruby def plus(num1, num2){ sum = num1 + num2 } sum = plus(10, 8) puts '加算の結果は#{ sum }です' 最後に評価された値が返る ※指定することも可能 PHP5.3 function plus($num1, $num2){ $sum = $num1 + $num2; return $sum; } $sum = plus(10, 8); print '加算の結果は'.$sum.'です'; Returnが必要 8

Slide 9

Slide 9 text

3. 変数と関数の違い Ruby 変数 @user = @user.id 関数(メソッド) Post.test PHP5.3 変数 $userId = $this->User->id; 関数(メソッド) $this->Post->test(); 9

Slide 10

Slide 10 text

3. 変数と関数の違いを意識 ◂ PHPは関数(メソッド)を使う場合、 引数が空なら()が必要 ◂ Ruby時代はピリオドで繋ぎ、直感的に取り出していた 10

Slide 11

Slide 11 text

配列とオブジェクト

Slide 12

Slide 12 text

1. 配列の扱い方 Ruby a = [1, 2, 3] a.include?(x) a.empty? (※Arrayクラス) PHP $a = array(1, 2, 3);(※5.3) $a = [1, 2, 3];(※5.4以降) in_array( $x, $a ); empty( $a ); 12

Slide 13

Slide 13 text

2. Findした結果が配列かオブジェクトか Cake2.8 Findした結果が配列 $User['id'] (3以降はオブジェクト) ※オブジェクトから値を 取り出すとき $user->id Rails Findした結果が オブジェクト @User.id 13

Slide 14

Slide 14 text

3. FormからデータをPostした時の処理 Rails Paramsで受け取る createメソッドが オブジェクト化して オブジェクトをsave Cake2.8 $this->request->data; saveメソッドが 配列を引数に取るため 配列をsave 14

Slide 15

Slide 15 text

4. 複数テーブルを結合して値を取り出す時 Rails user = User.find(params: id) @user = user.user_profiles オブジェクト Cake2.8 $user = $this->User->find('first', array( 'conditions' => array('User.id' => $id), 'contain' => array('UserProfile') )); $user[‘UserProfile’]; 配列 15

Slide 16

Slide 16 text

感じたこと Ruby時代はコピペと感覚で なんとかなってたけど PHPは省略できない部分がRubyより多い 違いの理由を学ぶことで勉強になる 複数の言語、フレームワークに触れた方がいいと言わ れる理由がわかった 16

Slide 17

Slide 17 text

ありがとう ございました! 17