SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
Ruby &
ActiveSupport
  for expart
  藤岡岳之(xibbar)
今後の予定

classとmoduleからやりましょう
 継承、mix-in
 ネームスペース
 define_XXX
 匿名メソッド
 XXX_eval

rubyのイテレータ
クロージャってなんジャ
lambdaとproc
classの初歩と継承
# ただの名前と点数を表示するだけ              s=Student.new("fujioka")
のプログラム                         s.english=80
                               s.puts_status
class Student                  rs=RikeiStudent.new("katahira")
  attr_accessor :name          rs.english=80
  attr_accessor :english       rs.math=92
  def initialize(name)         rs.science=85
    @name=name                 rs.puts_status
  end
  def puts_status
    puts @name
    puts @english              ~% ruby person.rb
  end                          fujioka
end                            80
                               katahira
class RikeiStudent < Student   80
                               92                解説ポイント
  attr_accessor :math
  attr_accessor :science       85
                                                 •継承
  def puts_status
    super                                       •attr_accessor
    puts @math                                  •super
    puts @science
  end
                                                •new
end                                             •initialize
                                                •ぐらい?
classの解説ちょっとだけ
class Student                  s=Student.new("fujioka")
  @@namelist=[]                s.english=80
  attr_accessor :name          s.puts_status
  attr_accessor :english       rs=RikeiStudent.new("katahira")
  def initialize(name)         rs.english=80
    @name=name                 rs.math=92
                                                               解説ポイント
    @@namelist.push name       rs.science=85
  end                          rs.puts_status           •クラスメソッド
  def puts_status              p Student.namelist
    puts @name                 p RikeiStudent.namelist •インスタンスメソッド
    puts @english
  end                                                     •クラス変数
  def self.namelist                                       •インスタンス変数
    @@namelist                  % ruby person.rb
  end                           fujioka                   •オブジェクトに型がある
end                             80
                                katahira                  •変数に型はない
class RikeiStudent < Student    80
  attr_accessor :math           92
  attr_accessor :science        85
  def puts_status               ["fujioka", "katahira"]
    super                       ["fujioka", "katahira"]
    puts @math
    puts @science
  end
end
classの入れ子
class Sample
  attr_accessor :value           #<Sample:0x239ec>
  KATAHIRA="DO"                  #<Sample::Sample2:0x23834>
  class Sample2                  "VALUE"
    attr_accessor :value         nil
    def self.katahira            "DO"
      KATAHIRA
    end
  end
  class Sample3
  end
end

sample=Sample.new
p sample
sample2=Sample::Sample2.new
p sample2
sample.value="VALUE"                 解説ポイント
p sample.value
p sample2.value               •インスタンスものは独立している
p Sample::Sample2.katahira
                              •クラスものは子クラスから呼び出せる
moduleって何?



インスタンスを作れない
継承できない
mix-inの対象になる
moduleをちょっとだけ
module SampleModule
  PI=3.14
  def self.pi                 % ruby module.rb
    PI                        3.14
  end                         3.14
  def pi
    PI
  end
end

p SampleModule.pi

class SampleClass
  include SampleModule
end                                 解説ポイント

sc=SampleClass.new       •moduleをクラスメソッドのように使う
p sc.pi
                          •self.piのようにすると呼び出せる
                         •moduleをmix-in用に使う
                          •includeするとclassのメソッドの一部になる
moduleを入れ子に
module SampleModule
  module ChildModule
    def child_module         % ruby module_chile.rb
      "CHILD_MODULE"         "SAMPLE_MODULE"
    end                      "CHILD_MODULE"
  end
  def sample_module
    "SAMPLE_MODULE"
  end
end
class SampleClass
  include SampleModule
  include ChildModule
end                                解説ポイント
sc=SampleClass.new       •同じネームスペースのものしかmix-inされない
p sc.sample_module
p sc.child_module        •入れ子もincludeしなければならない
                         •Railsのソースはほとんどmoduleばっかり
                         •ちょっとだけ見てみよう
                          •ARの呼び出しの部分でも見てみるか。
おしまい




おしまい
次回以降も引き続きやりましょう

Más contenido relacionado

Destacado

Biodiversity Heritage Library for Boston Library Consortium
Biodiversity Heritage Library for Boston Library ConsortiumBiodiversity Heritage Library for Boston Library Consortium
Biodiversity Heritage Library for Boston Library ConsortiumChris Freeland
 
Intercambios Clínicos
Intercambios ClínicosIntercambios Clínicos
Intercambios Clínicosguestdfeb73
 
Powerpoint Presentation
Powerpoint PresentationPowerpoint Presentation
Powerpoint Presentationkakua
 
給天下女人的沉思
給天下女人的沉思給天下女人的沉思
給天下女人的沉思Philip Zee
 
挑戰世界記錄
挑戰世界記錄挑戰世界記錄
挑戰世界記錄Philip Zee
 
E A In Higher Ed
E A  In  Higher  EdE A  In  Higher  Ed
E A In Higher Edjimphelps
 

Destacado (7)

Biodiversity Heritage Library for Boston Library Consortium
Biodiversity Heritage Library for Boston Library ConsortiumBiodiversity Heritage Library for Boston Library Consortium
Biodiversity Heritage Library for Boston Library Consortium
 
Presentacion Consejo 14.03.08v2
Presentacion Consejo 14.03.08v2Presentacion Consejo 14.03.08v2
Presentacion Consejo 14.03.08v2
 
Intercambios Clínicos
Intercambios ClínicosIntercambios Clínicos
Intercambios Clínicos
 
Powerpoint Presentation
Powerpoint PresentationPowerpoint Presentation
Powerpoint Presentation
 
給天下女人的沉思
給天下女人的沉思給天下女人的沉思
給天下女人的沉思
 
挑戰世界記錄
挑戰世界記錄挑戰世界記錄
挑戰世界記錄
 
E A In Higher Ed
E A  In  Higher  EdE A  In  Higher  Ed
E A In Higher Ed
 

Similar a Ruby and ActiveSupport for expart

メタプログラミングRuby勉強会#5
メタプログラミングRuby勉強会#5メタプログラミングRuby勉強会#5
メタプログラミングRuby勉強会#5Ashitaba YOSHIOKA
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unithigaki
 
メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4Ashitaba YOSHIOKA
 
ebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superKaito Minatoya
 
クラスのインスタンス変数について
クラスのインスタンス変数についてクラスのインスタンス変数について
クラスのインスタンス変数についてTomoya Kawanishi
 
20110820 metaprogramming
20110820 metaprogramming20110820 metaprogramming
20110820 metaprogrammingMasanori Kado
 
Module での名前解決について
Module での名前解決についてModule での名前解決について
Module での名前解決についてTomoya Kawanishi
 
演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用するkwatch
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料co-hey japan
 

Similar a Ruby and ActiveSupport for expart (10)

メタプログラミングRuby勉強会#5
メタプログラミングRuby勉強会#5メタプログラミングRuby勉強会#5
メタプログラミングRuby勉強会#5
 
Ruby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::UnitRuby初級者向けレッスン 第46回 ─── Test::Unit
Ruby初級者向けレッスン 第46回 ─── Test::Unit
 
Phantom Type in Scala
Phantom Type in ScalaPhantom Type in Scala
Phantom Type in Scala
 
メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4メタプログラミングRuby勉強会#4
メタプログラミングRuby勉強会#4
 
ebisu.rb #19 超実践 super
ebisu.rb #19 超実践 superebisu.rb #19 超実践 super
ebisu.rb #19 超実践 super
 
クラスのインスタンス変数について
クラスのインスタンス変数についてクラスのインスタンス変数について
クラスのインスタンス変数について
 
20110820 metaprogramming
20110820 metaprogramming20110820 metaprogramming
20110820 metaprogramming
 
Module での名前解決について
Module での名前解決についてModule での名前解決について
Module での名前解決について
 
演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する演算子オーバーライドをDSLに活用する
演算子オーバーライドをDSLに活用する
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料
 

Más de xibbar

エンジニア志望だったのにRuby社長をしてよかったと思う5つのこと
エンジニア志望だったのにRuby社長をしてよかったと思う5つのことエンジニア志望だったのにRuby社長をしてよかったと思う5つのこと
エンジニア志望だったのにRuby社長をしてよかったと思う5つのことxibbar
 
札幌Ruby会議03のlt
札幌Ruby会議03のlt札幌Ruby会議03のlt
札幌Ruby会議03のltxibbar
 
Fukushima.rb#00
Fukushima.rb#00Fukushima.rb#00
Fukushima.rb#00xibbar
 
仙台Ruby会議02 Pdf
仙台Ruby会議02 Pdf仙台Ruby会議02 Pdf
仙台Ruby会議02 Pdfxibbar
 
地域振興論2009
地域振興論2009地域振興論2009
地域振興論2009xibbar
 
栃木Ruby会議02 Lt途中まで
栃木Ruby会議02 Lt途中まで栃木Ruby会議02 Lt途中まで
栃木Ruby会議02 Lt途中までxibbar
 
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法xibbar
 
1000speakers仙台
1000speakers仙台1000speakers仙台
1000speakers仙台xibbar
 
More Better Nested Set
More Better Nested SetMore Better Nested Set
More Better Nested Setxibbar
 
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3xibbar
 
Tohoku Open Source Conference 2008
Tohoku Open Source Conference 2008Tohoku Open Source Conference 2008
Tohoku Open Source Conference 2008xibbar
 
acts_asを使ってみよう
acts_asを使ってみようacts_asを使ってみよう
acts_asを使ってみようxibbar
 
Rails2 Pr
Rails2 PrRails2 Pr
Rails2 Prxibbar
 

Más de xibbar (13)

エンジニア志望だったのにRuby社長をしてよかったと思う5つのこと
エンジニア志望だったのにRuby社長をしてよかったと思う5つのことエンジニア志望だったのにRuby社長をしてよかったと思う5つのこと
エンジニア志望だったのにRuby社長をしてよかったと思う5つのこと
 
札幌Ruby会議03のlt
札幌Ruby会議03のlt札幌Ruby会議03のlt
札幌Ruby会議03のlt
 
Fukushima.rb#00
Fukushima.rb#00Fukushima.rb#00
Fukushima.rb#00
 
仙台Ruby会議02 Pdf
仙台Ruby会議02 Pdf仙台Ruby会議02 Pdf
仙台Ruby会議02 Pdf
 
地域振興論2009
地域振興論2009地域振興論2009
地域振興論2009
 
栃木Ruby会議02 Lt途中まで
栃木Ruby会議02 Lt途中まで栃木Ruby会議02 Lt途中まで
栃木Ruby会議02 Lt途中まで
 
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
tDiaryなどのレガシーウェブアプリをRuby1.9で動かす方法
 
1000speakers仙台
1000speakers仙台1000speakers仙台
1000speakers仙台
 
More Better Nested Set
More Better Nested SetMore Better Nested Set
More Better Nested Set
 
Ruby&Active Support for expert 3
Ruby&Active Support for expert 3Ruby&Active Support for expert 3
Ruby&Active Support for expert 3
 
Tohoku Open Source Conference 2008
Tohoku Open Source Conference 2008Tohoku Open Source Conference 2008
Tohoku Open Source Conference 2008
 
acts_asを使ってみよう
acts_asを使ってみようacts_asを使ってみよう
acts_asを使ってみよう
 
Rails2 Pr
Rails2 PrRails2 Pr
Rails2 Pr
 

Último

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Último (8)

AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Ruby and ActiveSupport for expart

  • 1. Ruby & ActiveSupport for expart 藤岡岳之(xibbar)
  • 2. 今後の予定 classとmoduleからやりましょう 継承、mix-in ネームスペース define_XXX 匿名メソッド XXX_eval rubyのイテレータ クロージャってなんジャ lambdaとproc
  • 3. classの初歩と継承 # ただの名前と点数を表示するだけ s=Student.new("fujioka") のプログラム s.english=80 s.puts_status class Student rs=RikeiStudent.new("katahira") attr_accessor :name rs.english=80 attr_accessor :english rs.math=92 def initialize(name) rs.science=85 @name=name rs.puts_status end def puts_status puts @name puts @english ~% ruby person.rb end fujioka end 80 katahira class RikeiStudent < Student 80 92 解説ポイント attr_accessor :math attr_accessor :science 85 •継承 def puts_status super •attr_accessor puts @math •super puts @science end •new end •initialize •ぐらい?
  • 4. classの解説ちょっとだけ class Student s=Student.new("fujioka") @@namelist=[] s.english=80 attr_accessor :name s.puts_status attr_accessor :english rs=RikeiStudent.new("katahira") def initialize(name) rs.english=80 @name=name rs.math=92 解説ポイント @@namelist.push name rs.science=85 end rs.puts_status •クラスメソッド def puts_status p Student.namelist puts @name p RikeiStudent.namelist •インスタンスメソッド puts @english end •クラス変数 def self.namelist •インスタンス変数 @@namelist % ruby person.rb end fujioka •オブジェクトに型がある end 80 katahira •変数に型はない class RikeiStudent < Student 80 attr_accessor :math 92 attr_accessor :science 85 def puts_status ["fujioka", "katahira"] super ["fujioka", "katahira"] puts @math puts @science end end
  • 5. classの入れ子 class Sample attr_accessor :value #<Sample:0x239ec> KATAHIRA="DO" #<Sample::Sample2:0x23834> class Sample2 "VALUE" attr_accessor :value nil def self.katahira "DO" KATAHIRA end end class Sample3 end end sample=Sample.new p sample sample2=Sample::Sample2.new p sample2 sample.value="VALUE" 解説ポイント p sample.value p sample2.value •インスタンスものは独立している p Sample::Sample2.katahira •クラスものは子クラスから呼び出せる
  • 7. moduleをちょっとだけ module SampleModule PI=3.14 def self.pi % ruby module.rb PI 3.14 end 3.14 def pi PI end end p SampleModule.pi class SampleClass include SampleModule end 解説ポイント sc=SampleClass.new •moduleをクラスメソッドのように使う p sc.pi •self.piのようにすると呼び出せる •moduleをmix-in用に使う •includeするとclassのメソッドの一部になる
  • 8. moduleを入れ子に module SampleModule module ChildModule def child_module % ruby module_chile.rb "CHILD_MODULE" "SAMPLE_MODULE" end "CHILD_MODULE" end def sample_module "SAMPLE_MODULE" end end class SampleClass include SampleModule include ChildModule end 解説ポイント sc=SampleClass.new •同じネームスペースのものしかmix-inされない p sc.sample_module p sc.child_module •入れ子もincludeしなければならない •Railsのソースはほとんどmoduleばっかり •ちょっとだけ見てみよう •ARの呼び出しの部分でも見てみるか。