SlideShare a Scribd company logo
1 of 65
Download to read offline
怠惰なRubyistへの道
Enumerator::Lazyの使いかた
      Chikanaga Tomoyuki
         (@nagachika)
          Yokohama.rb




                           1
Agenda

Enumerable
Enumerator
Enumerator::Lazy


                   2
WARNING

 今日の話は
 Ruby 2.0 の
新機能について


              3
Ruby 2.0

2013年リリース予定
[ruby-dev:44691] より

Aug. 24 2012: big-feature freeze
Oct. 24 2012: feature freeze
Feb. 24 2013: 2.0 release
Ruby の生誕 20 周年



                                   4
Ruby 2.0


未来の話


           5
2.0 is in
   development

       ※注※
    仕様は開発中のものであり
リリース版では変更される場合があります




                      6
Install Ruby 2.0

未来を手中に

rvm, rbenv を使っていれば
rvm install ruby-head
rbenv install 2.0-devel


                          7
Ruby 2.0 for
   Windows




               8
Self Introduction
twitter id: @nagachika
ruby trunk changes
(http://d.hatena.ne.jp/nagachika)

CRuby committer
Yokohama.rb → 福岡遠征中
Sound.rb(ruby-coreaudio, ruby-puredata)



                                          9
Enumerator::Lazy


                   10
Enumerator::Lazy



  の前に
                   11
Enumerable

             12
Enumerable


もちろん使ってますよね?




               13
Array, Hash, IO...

Array や Hash, IO は
    Enumerable を
   include している


                     14
Enumerable

【形容詞】 数えられる            [日本語 WordNet(英和))


 可算;可付番       [クロスランゲージ 37分野専門語辞書]


Capable of being enumerated;
countable [Wikitionary]




                                           15
Enumerable


「each メソッドを呼ぶと、何かが
順に(N回) yield で渡される」
というルール(N >= 0)




                      16
Enumerable


each メソッドが定義されて
いるクラスに include して
使う(Mix-in)


                    17
Enumerable

each だけ用意しておけば
map, select, reject, grep, etc...
といったメソッドが使えるようになる
(これらのメソッドが each を使って
実装されている)



                                    18
An Example
class A
  include Enumerable
  def each
    yield 0
    yield 1
    yield 2
  end
end
A.new.map{|i| i * 2 } # => [ 0, 2, 4 ]


                                         19
ここまでのまとめ

Enumerable は each メソッドを使って
多彩なメソッドを追加する
なにが「数え上げられる」のかは
each メソッドがどのように
yield を呼び出すかで決まる




                             20
Enumerator



使ってます?

              21
Enumerator


each に渡すブロックを保留した
状態でオブジェクトとして持ち回す




                    22
to_enum, enum_for

Enumerator の作りかた
•   Enumerator.new(obj, method=:each, *args)
•   obj.to_enum(method=:each, *args)
•   obj.enum_for(method=:each, *args)
•   Enumerator.new{|y| ...}
      ↑これだけちょっと特殊




                                               23
Object#enum_for
each 以外の任意のメソッドの呼び出しを
Enumerator にできる
(実は Enumerable でなくてもいい)


e_byte = $stdin.enum_for(:each_byte)
  => バイトごとに yield
e_line = $stdin.enum_for(:each_line)
  => 行ごとに yield


                                       24
Enumerator.new{|y|}

e =   Enumerator.new{|y|
  y   << 0
  y   << :foo
  y   << 2
}
ブロックが each の代わり。
ブロックパラメータ y に << すると
yield することになる。


                           25
Enumerator.new{|y|}
class A
  def each
    yield 0
    yield :bar
    yield 2
  end
end
A.new.to_enum
と同じ


                      26
Enumerator as
 External Iterator
外部イテレータとして使える

e = (0..2).to_enum
e.next # => 0         each が yield する値が
e.next # => 1         順に next で取り出せる
e.next # => 2
e.next
=> StopIteration: iteration reached an end




                                             27
Method Chain

map, select など一部のメソッドはブロッ
クを省略すると Enumerator を返すので
複数のメソッドを組み合わせて使う
ary.map.with_index { |v,i| ... }




                                   28
Method Chain


[:a, :b, :c, :d].map.with_index do |sym, i|
  i.even? ? sym : i
end
=> [:a, 1, :c, 3]         Enumerator
                       独自のメソッド



                                              29
with_index
[ruby-dev:31953] Matz wrote...
  mapがenumeratorを返すと
obj.map.with_index{|x,i|....}
ができるのが嬉しいので導入したのでした。というわけで、
* eachにもmapにもwith_indexが付けられて嬉しい
というのが本当の理由です。




                                   30
Secret Story of
  Enumerator.

  Enumerator は
with_index の為に
    生まれた!
  というのは嘘ですが
 主な用途は with_index の
 ためのような気がします

                      31
ここまでのまとめ
• Enumerator
• Object#to_enum, enum_for
• 外部イテレータ化
  • Method Chain
•

                             32
Enumerator::Lazy


2.0 の新機能


                   33
Enumerator::Lazy


Enumeratorのサブクラス



                    34
Enumerable#lazy

Enumerator::Lazy の作りかた
Enumerable#lazy を呼ぶ


>> (0..5).lazy
=> #<Enumerator::Lazy: 0..5>



                               35
Enumerator::Lazy

Lazyのmap,select,zipなど一部のメソッ
ドがさらにLazyを返す
>> (0..5).lazy.map{|i| i * 2}
=> #<Enumerator::Lazy:
#<Enumerator::Lazy: 0..5>:map>




                                 36
Enumerator::Lazy
> Enumerator::Lazy.instance_methods(false)

      map          collect                 flat_map
collect_concat      select                  find_all
     reject          grep                     zip
      take       take_while                  drop
 drop_wihle         cycle
      lazy          force
                      [ruby 2.0.0dev (2012-05-30 trunk 35844)]



                                                                 37
force

Enumrator::Lazy#force
to_a の alias
遅延されているイテレータの評価を実行




                        38
A Lazy Demo
>> l = (0..5).lazy
=> <Enumerator::Lazy: 0..5>
>> l_map = l.map{|i| p i; i * 2 }
=> <Enumerator::Lazy: #<Enumerator::Lazy: 0..5>:map>
# この時点ではまだブロックの内容は実行されていない!
>> l_map.force
0
1
2
3
4
5
=> [0, 2, 4, 6, 8, 10]
# force を呼ぶと実行される


                                                       39
Enumeratorとの違い


Method Chain の使いかたがより強力に
中間データの抑制




                           40
Pitfall of
   Enumerator (1)
map, select のようにブロックの戻り値
を利用するメソッドを複数繋げることがで
きない(しても意味がなくなる)


(0..5).map.select{|i| i % 2 == 0 }
 => [ 0, 2, 4 ]
↑ map の意味がなくなっている


                                     41
True Method Chain
map や select といったメソッドもいくつでも
Method Chain できる。
そう、Lazy ならね。


# 1 から 1000 のうち任意の桁に7を含む数を返す
(1..1000).lazy.map(&:to_s).select{|s|
  /7/ =~ s
}.force


                                        42
Pitfall of
   Enumerator (2)
map, select のようにブロックの戻り値
を利用するメソッドを外部イテレータ化し
ても意味がない
e = (0..5).select
e.next # => 0
e.next # => 1
e.next # => 2
e.next # => 3
↑ select の意味がなくなっている


                           43
True External
         Iterator
map などにブロックを渡せるので
適用した結果を順に取り出せる
l = (0..5).lazy.select{|i| i.even? }
l.next # => 0
l.next # => 2
l.next # => 4
l.next # => StopIteration: iteration reached an end



                                                      44
Efficient Memory
       Usage

Lazy は yield 毎に Method Chain の
最後まで処理される




                                 45
Enumerable version
large_array.map{...}.select{...}




                                   46
Enumerable version
large_array.map{...}.select{...}




      map




                                   47
Enumerable version
large_array.map{...}.select{...}




      map        select




                                   48
Enumerable version
large_array.map{...}.select{...}



        GCされる
      map     select




                                   49
Enumerable version
large_array.map{...}.select{...}



        GCされる
      map     select
      map 結果のため
large_array と同じくらいの
     中間データが必要
                                   50
Lazy version
large_array.lazy.map{...}.select{...}.force




                                              51
Lazy version
large_array.lazy.map{...}.select{...}.force




                                              52
Lazy version
large_array.lazy.map{...}.select{...}.force


           GC ed




                                              53
Lazy version
large_array.lazy.map{...}.select{...}.force




                                              54
Lazy version
large_array.lazy.map{...}.select{...}.force


           GC ed




                                              55
Lazy version
large_array.lazy.map{...}.select{...}.force




                                              56
Lazy version
large_array.lazy.map{...}.select{...}.force




       中間データが不要


                                              57
Lazy Chain Demo
>> (0..4).lazy.select{|i|
   p “select:#{i}”; i.event?
 }.map{|i| p “map:#{i}”; i * 2 }.force
“select:0”
“map:0”
“select:1”
“select:2”
“map:2”
“select:3”
“select:4”
“map:4”
=> [0, 4, 8]

                                         58
Lazy with IO

例) $stdin から空行を読むまでの各行の
文字数の配列を返す
$stdin.lazy.take_while{|l|
  ! l.chomp.empty?
}.map {|l| l.chomp.size }




                             59
Lazy with IO

Enumerable だと空行まで先に読んでしまう。
Lazy なら1行読むたびに take_while/map の
ブロックが実行される
 → 逐次処理できる




                                  60
Lazy List
無限に続く要素を扱える


list = (0..Float::INFINITY)
list.map{|i| i * 2}.take(5)
 => 返ってこない
list.lazy.map{|i| i * 2 }.take(5).force
 => [0, 2, 4, 6, 8]


                                          61
Pitfall of Lazy?
メモ化されない
(force を2回呼ぶともう一度 each が
呼ばれる)
 IOなど副作用のある each だと結果が
 変化するけどいいのかなぁ(いいかも)
enum_for のように each のかわりにな
るメソッドを指定できない



                            62
Lazy as a Better
   Enumerator

     Lazy は
  Enumerator の
    正統進化版


                   63
Happy Lazy
Programming!

               64
One More Thing!


https://github.com/nagachika/lazy_sample




                                           65

More Related Content

What's hot

Popcntによるハミング距離計算
Popcntによるハミング距離計算Popcntによるハミング距離計算
Popcntによるハミング距離計算Norishige Fukushima
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)Takeshi Yamamuro
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competitionyak1ex
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介MITSUNARI Shigeo
 
深層学習 Day1レポート
深層学習 Day1レポート深層学習 Day1レポート
深層学習 Day1レポートtaishimotoda
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介MITSUNARI Shigeo
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
constexpr idioms
constexpr idiomsconstexpr idioms
constexpr idiomsfimbul
 
Metaprogramming in JuliaLang
Metaprogramming in JuliaLangMetaprogramming in JuliaLang
Metaprogramming in JuliaLangYuichi Motoyama
 
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待Seiya Tokui
 

What's hot (17)

Popcntによるハミング距離計算
Popcntによるハミング距離計算Popcntによるハミング距離計算
Popcntによるハミング距離計算
 
Boost.SIMD
Boost.SIMDBoost.SIMD
Boost.SIMD
 
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
 
boost tour 1.48.0 all
boost tour 1.48.0 allboost tour 1.48.0 all
boost tour 1.48.0 all
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
C++0x in programming competition
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
 
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
 
深層学習 Day1レポート
深層学習 Day1レポート深層学習 Day1レポート
深層学習 Day1レポート
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介Haswellサーベイと有限体クラスの紹介
Haswellサーベイと有限体クラスの紹介
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
constexpr idioms
constexpr idiomsconstexpr idioms
constexpr idioms
 
R-hpc-1 TokyoR#11
R-hpc-1 TokyoR#11R-hpc-1 TokyoR#11
R-hpc-1 TokyoR#11
 
Metaprogramming in JuliaLang
Metaprogramming in JuliaLangMetaprogramming in JuliaLang
Metaprogramming in JuliaLang
 
Emcjp item33,34
Emcjp item33,34Emcjp item33,34
Emcjp item33,34
 
深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待深層学習フレームワークChainerの紹介とFPGAへの期待
深層学習フレームワークChainerの紹介とFPGAへの期待
 
Juliaで並列計算
Juliaで並列計算Juliaで並列計算
Juliaで並列計算
 

Viewers also liked

Ruby Kaja のご提案
Ruby Kaja のご提案Ruby Kaja のご提案
Ruby Kaja のご提案nagachika t
 
CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013nagachika t
 
Ruby on azure で game server service
Ruby on azure で game server serviceRuby on azure で game server service
Ruby on azure で game server servicenagachika t
 
Magellan on Google Cloud Platform
Magellan on Google Cloud PlatformMagellan on Google Cloud Platform
Magellan on Google Cloud Platformnagachika t
 
CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014nagachika t
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKnagachika t
 
Functional Music Composition
Functional Music CompositionFunctional Music Composition
Functional Music Compositionnagachika t
 

Viewers also liked (7)

Ruby Kaja のご提案
Ruby Kaja のご提案Ruby Kaja のご提案
Ruby Kaja のご提案
 
CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013CRuby Committers Who's Who in 2013
CRuby Committers Who's Who in 2013
 
Ruby on azure で game server service
Ruby on azure で game server serviceRuby on azure で game server service
Ruby on azure で game server service
 
Magellan on Google Cloud Platform
Magellan on Google Cloud PlatformMagellan on Google Cloud Platform
Magellan on Google Cloud Platform
 
CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014CRuby_Committers_Whos_Who_in_2014
CRuby_Committers_Whos_Who_in_2014
 
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDKBigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
BigQuery case study in Groovenauts & Dive into the DataflowJavaSDK
 
Functional Music Composition
Functional Music CompositionFunctional Music Composition
Functional Music Composition
 

Similar to 怠惰なRubyistへの道

Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーmganeko
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 
多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討Yu Sato
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep LearningSatoshi imai
 
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~Akabane Hiroyuki
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装MITSUNARI Shigeo
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementationMITSUNARI Shigeo
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011finalMikio Kubo
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageTaku Miyakawa
 
フィボナッチ数列の作り方
フィボナッチ数列の作り方フィボナッチ数列の作り方
フィボナッチ数列の作り方Tomoya Kawanishi
 
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz..."Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...nkazuki
 
続・ゲンバのSwift
続・ゲンバのSwift続・ゲンバのSwift
続・ゲンバのSwiftYuichi Adachi
 
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015Ryosuke Okuta
 
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10Muneyoshi Suzuki
 

Similar to 怠惰なRubyistへの道 (20)

Node.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラーNode.jsでつくるNode.js ミニインタープリター&コンパイラー
Node.jsでつくるNode.js ミニインタープリター&コンパイラー
 
Boost tour 1_40_0
Boost tour 1_40_0Boost tour 1_40_0
Boost tour 1_40_0
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 
多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討
 
lispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learninglispmeetup#63 Common Lispでゼロから作るDeep Learning
lispmeetup#63 Common Lispでゼロから作るDeep Learning
 
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
不安定な環境の中でのバッチ処理~JobQueueシステムQudoを使った事例~
 
高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装高速な倍精度指数関数expの実装
高速な倍精度指数関数expの実装
 
Tottoruby 20130119
Tottoruby 20130119Tottoruby 20130119
Tottoruby 20130119
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
 
Or seminar2011final
Or seminar2011finalOr seminar2011final
Or seminar2011final
 
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
 
フィボナッチ数列の作り方
フィボナッチ数列の作り方フィボナッチ数列の作り方
フィボナッチ数列の作り方
 
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz..."Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
 
続・ゲンバのSwift
続・ゲンバのSwift続・ゲンバのSwift
続・ゲンバのSwift
 
Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015Chainerチュートリアル -v1.5向け- ViEW2015
Chainerチュートリアル -v1.5向け- ViEW2015
 
フラグを愛でる
フラグを愛でるフラグを愛でる
フラグを愛でる
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10x64 のスカラー,SIMD 演算性能を測ってみた @ C++  MIX #10
x64 のスカラー,SIMD 演算性能を測ってみた @ C++ MIX #10
 
Ruby 2.5
Ruby 2.5Ruby 2.5
Ruby 2.5
 

More from nagachika t

Make Ruby Differentiable
Make Ruby DifferentiableMake Ruby Differentiable
Make Ruby Differentiablenagachika t
 
All bugfixes are incompatibilities
All bugfixes are incompatibilitiesAll bugfixes are incompatibilities
All bugfixes are incompatibilitiesnagachika t
 
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter TuningInspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuningnagachika t
 
Ruby trunk changes 統計版
Ruby trunk changes 統計版Ruby trunk changes 統計版
Ruby trunk changes 統計版nagachika t
 
Pd Kai#3 Startup Process
Pd Kai#3 Startup ProcessPd Kai#3 Startup Process
Pd Kai#3 Startup Processnagachika t
 
Pd Kai#2 Object Model
Pd Kai#2 Object ModelPd Kai#2 Object Model
Pd Kai#2 Object Modelnagachika t
 

More from nagachika t (6)

Make Ruby Differentiable
Make Ruby DifferentiableMake Ruby Differentiable
Make Ruby Differentiable
 
All bugfixes are incompatibilities
All bugfixes are incompatibilitiesAll bugfixes are incompatibilities
All bugfixes are incompatibilities
 
Inspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter TuningInspection of CloudML Hyper Parameter Tuning
Inspection of CloudML Hyper Parameter Tuning
 
Ruby trunk changes 統計版
Ruby trunk changes 統計版Ruby trunk changes 統計版
Ruby trunk changes 統計版
 
Pd Kai#3 Startup Process
Pd Kai#3 Startup ProcessPd Kai#3 Startup Process
Pd Kai#3 Startup Process
 
Pd Kai#2 Object Model
Pd Kai#2 Object ModelPd Kai#2 Object Model
Pd Kai#2 Object Model
 

Recently uploaded

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - 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...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 

Recently uploaded (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - 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...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 

怠惰なRubyistへの道