Your SlideShare is downloading. ×
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
そんな装備で大丈夫か?
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

そんな装備で大丈夫か?

2,420

Published on

そんな装備で大丈夫か?

そんな装備で大丈夫か?

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,420
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. フリーランスプログラマ 高木 誠 Tokyu.rb azabu.gem
  • 2. .rb とか書いてあるのに何でphpやってるの?  実はその正体はRubyの世界から来た刺客  CyberXにRubyとRailsの素晴らしさを伝えにきた。
  • 3. そんな装備(言語,フレームワーク)で大丈夫か? 画像は権利上の都合で削除されました。
  • 4. 大丈夫だ、問題ない 画像は権利上の都合で削除されました。
  • 5. 大丈夫じゃない、問題ある!  日々のイベント運用でヘトヘト  イベントのコードなどが呼び出し元のロジックなどに
  • 6. そんな装備(言語,フレームワーク)で大丈夫か? 画像は権利上の都合で削除されました。
  • 7. 一番いいのをくれ 画像は権利上の都合で削除されました。
  • 8. Ruby on Rails
  • 9. Ruby の特徴  すべてがオブジェクト  柔軟な構文  ブロック  mixin
  • 10. すべてがオブジェクト?
  • 11. 配列もハッシュもオブジェクト [PHP] $value = array(1,12,123); foreach ($values as $value) { echo $value; } [ruby] values = [1,12,123] values.each do |value| p value End values.each {|value| p value } h = {‘2’ => 2,’3’ => 3,’4’ => 4} h.each {|k,v| p “%s %04d” % [k,v]}
  • 12. 数値もオブジェクト [PHP] for ($cnt = 0 ;$cnt < 100;$cnt++) { echo $cnt; } [ruby] 100.times do |cnt| p cnt end
  • 13. ActiveRecordの戻り値もオブジェクト [ruby on rails] @user.name = ‘<hogehoge>’ @user.save view でモデルクラスを扱えるので view 上で <?= user.name_escape ?> と表記できる。 [cakephp] $this->user[‘User’][‘name’] = ‘<hogehoge>’; $this->User->save($this->user); $this->set(‘name’ => $this->User->$name_escape($this->user));
  • 14. すべてオブジェクトのメソッドでいける [PHP] $a = explode("," , "ThinkPad,Macbook,vaio"); $s = implode("|" , $a); foreach ($a as $value) { } [ruby] a = "ThinkPad,Macbook,vaio".split(/,/) s = a.join('|') (ibm,apple,sony) = "ThinkPad,Macbook,vaio".split(/,/) "ThinkPad,Macbook,vaio".split(/,/).each {|value| }
  • 15. 変数の空などの判断もオブジェクト [PHP] if (empty($s)) {} if (s == NULL) {} [ruby] if s.empty? end if s.nil? end
  • 16. 柔軟な構文?
  • 17. いろいろ省略できる 括弧を省略できる def print(value) p value end print(“hogehoge”) print “hogehoge” 戻り値を省略できる def get_user(id) User.find(id) end
  • 18. 戻り値を複数返せる def get_values return 1,2,3 end a,b,c = get_values
  • 19. 条件式が後ろにあってもいける [PHP] if ($hoge) { foo($hoge); } if ($max) { for ($cnt = 0 ; $cnt < $max;$cnt++ ) { print $cnt; } } [ruby] foo(hoge) if hoge max.times do |cnt| p cnt end if max
  • 20. ブロック?
  • 21. メソッドに処理の一部分を引き渡せる [PHP] $value = array(1,12,123); $puts_array = array(); foreach ($value in $values) { array_push($puts_array,"!!" . $value . "!!") } [ruby] values = [1,12,123] a = [] values.each {|value| a << "!!%s!!" % [value] } puts_array = values.inject([]) {|value,a| a << "!!%s!!" % [value];a}
  • 22. つまり?  呼び出し元で一部分のみ実装する処理がつくれる  似たような処理だけどちょっと違うような処理の実装に向 いている
  • 23. Mix-in module SampleModule def square(n) n * n end end class SampleClass include SampleModule # 略 end o = SampleClass.new p o.square(3) #=> 9
  • 24. Railsの特徴  設定より規約(cakeと似ている)  rubyをいろいろ拡張している  プラグインが充実  rubyだから簡潔、柔軟な処理が可能
  • 25. rubyをいろいろ拡張している # Railsの日付拡張機能 Time.now + 1.day Time.now + 1.month Time.now.beginning_of_month Time.now.end_of_month Time.now.end_of_week Date.today.end_of_week
  • 26. 複数のデータベースに接続 legary: adapter: mysql database: 192.168.0.33 username: user password: pass host: legary_host new: adapter: mysql database: 192.168.0.44 username: user password: pass host: new_host class LegacyClient < ActiveRecord::Base establish_connection "legary" end class Client < ActiveRecord::Base establish_connection "new" End
  • 27. ActsAsReadonlyable  スレーブとマスターの自動切り替え  テーブル別に設定可
  • 28. Single Table Inheritance  テーブルは同一だが別クラスとして定義できる  データの格納先は一つのテーブルだが複数の実装  アイテムやイベントの実装に最適 class RecoveryItem < Item def use(inventry) … end end class OffensiveItem < Item def use(inventry) … end end
  • 29. ActiveScaffold(マスタメンテ)  Ajax  細かい権限制御  自動生成  カスタマイズ可  モデルを通した動作
  • 30. これらを踏まえて  イベントが頻繁に追加されるソーシャルゲームに最適  ソースが頻繁に変更されるソーシャルゲームに最適  再利用しやすい
  • 31. ご静聴ありがとうございました。

×