SlideShare una empresa de Scribd logo
1 de 74
Descargar para leer sin conexión
怠惰なRubyistへの道
Enumerator::Lazyの使いかた
      Chikanaga Tomoyuki
         (@nagachika)
          Fukuoka.rb


            2012.12.1 Fukuoka Ruby Kaigi 01
Agenda

Enumerable
Enumerator
Enumerator::Lazy
Agenda

Enumerable
2.0 の新機能(NEW)
Enumerator
Enumerator::Lazy
ATTENTION

 今日の話は
 Ruby 2.0 の
新機能について
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 周年
Ruby 2.0
Aug. 24 2012: big-feature freeze
Oct. 24 2012: feature freeze
Nov.   2 2012: 2.0 preview1 released
←今ココ
Dec.   1 2012: 2.0 preview2 released
Feb. 24 2013: 2.0 release
2.0 is in
   development

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

2.0.0 で未来を垣間見る

rvm, rbenv を使っていれば
rvm install ruby-head
rbenv install 2.0-devel
Self Introduction
twitter id: @nagachika
ruby trunk changes
(http://d.hatena.ne.jp/nagachika)

CRuby committer
Yokohama.rb → Fukuoka.rb
Sound.rb(ruby-coreaudio, ruby-puredata)
Recent Activity
RDoc    3.9.4 → 4.0.0
RubyGems 1.8.24 → 2.0
Rake    0.9.2.2 → 0.9.5 (Rake 10?)
MiniTest 3.4.0 → 4.3.2


空前のメジャーバージョンアップラッシュ
Recent Activity




かけこみコミットラッシュ
New Features
キーワード引数            Array#bsearch
Module#prepend     GC bitmap marking
Refinement         Debugger/Profiler
Enumerator::Lazy   API
                   スクリプトエンコーディング
DTrace対応           UTF-8化

TracePoint         String#b
Keyword Arguments
def tupple(key: a        , value:       b   )
  { key => value }
end
tupple key:   k    , value:         v   # =>
{ k => v      }
tupple value: 42       # => {       a    => 42 }
tupple   # => {    a    =>      b   }
Module#prepend

 obj         C           M         Object
class C; include M; end
Module#include (Mixin) は定義済みのメソッドを上書きできない




 obj          M          C          Object

class C; prepend M; end
Module#prepend は C のメソッドを上書きできる
Around Alias (alias_method_chain) のかわりに使える
Module#prepend
module Title
  def initialize(title, name)
    @title = title
    super(name)
  end
  def name
    @title + super
  end
end
class Person
  def initialize(name) @name=name end
  def name
    @name
  end
  prepend Title
end
Person.new( Mr. , nagachika ).name #=>   Mr.nagachika
Module#prepend
prepend なしだと(include だと)
class Person
  ...
end

module Title
  ...
end

class Men < Person
  include Title
  def initialize
    super;
    @title =    Mr.
  end
end
Refinement

大幅
路線
変更?
@a_matsuda++
Enumerator::Lazy
Enumerator::Lazy



  の前に
Enumerable
Enumerable


もちろん使ってますよね?
Array, Hash, IO...

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

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


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


Capable of being enumerated;
countable [Wikitionary]
Enumerable


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


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

each だけ用意しておけば
map, select, reject, grep, etc...
といったメソッドが使えるようになる
(これらのメソッドが each を使って
実装されている)
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 ]
ここまでのまとめ

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


Enumerator
使ってます?
Enumerator


each に渡すブロックを保留した
状態でオブジェクトとして持ち回る
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| ...}
      ↑これだけちょっと特殊
Object#enum_for
each 以外の任意のメソッドの呼び出しを
Enumerator にできる
(実は Enumerable でなくてもいい)


e_byte = $stdin.enum_for(:each_byte)
  => バイトごとに yield
e_line = $stdin.enum_for(:each_line)
  => 行ごとに yield
Enumerator.new{|y|}

e =   Enumerator.new{|y|
  y   << 0
  y   << :foo
  y   << 2
}
ブロックが each の代わり。
ブロックパラメータ y に << すると
yield することになる。
Enumerator.new{|y|}
class A
  def each
    yield 0
    yield :bar
    yield 2
  end
end
A.new.to_enum
と同じ
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
Method Chain

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


[:a, :b, :c, :d].map.with_index do |sym, i|
  i.even? ? sym : i
end
=> [:a, 1, :c, 3]         Enumerator
                       独自のメソッド
with_index
[ruby-dev:31953] Matz wrote...
  mapがenumeratorを返すと
obj.map.with_index{|x,i|....}
ができるのが嬉しいので導入したのでした。というわけで、
* eachにもmapにもwith_indexが付けられて嬉しい
というのが本当の理由です。
Secret Story of
  Enumerator.

  Enumerator は
with_index の為に
    生まれた!
ここまでのまとめ

• Enumerator
  • 外部イテレータ化
  • メソッドチェーン
•
Enumerator::Lazy


2.0 の新機能
Enumerator::Lazy


Enumeratorのサブクラス
Enumerable#lazy

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


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

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

Enumrator::Lazy#force
to_a の alias
遅延されているイテレータの評価を実行
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 を呼ぶと実行される
Enumeratorとの違い


Method Chain の使いかたがより強力に
中間データの抑制
Pitfall of
   Enumerator (1)
map, select のようにブロックの戻り値
を利用するメソッドを複数繋げることがで
きない(しても意味がなくなる)


(0..5).map.select{|i| i % 2 == 0 }
 => [ 0, 2, 4 ]
↑ map の意味がなくなっている
True Method Chain
map や select といったメソッドもいくつでも
Method Chain できる。
そう、Lazy ならね。


# 1 から 1000 のうち任意の桁に7を含む数を返す
(1..1000).lazy.map(&:to_s).select{|s|
  /7/ =~ s
}.force
Pitfall of
   Enumerator (2)
map, select のようにブロックの戻り値
を利用するメソッドを外部イテレータ化し
ても意味がない
e = (0..5).map
e.next # => 0
e.next # => 1
e.next # => 2
e.next # => 3
↑ map の意味がなくなっている
True External
       Iterator
map などにブロックを渡せるので
適用した結果を順に取り出せる
l = (0..5).lazy.select{|i| i.even? }
l.next # => 0
l.next # => 2
l.next # => 4
Efficient Memory
       Usage

Lazy は yield 毎に Method Chain の
最後まで処理される
Enumerable version
large_array.map{...}.select{...}
Enumerable version
large_array.map{...}.select{...}




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




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



        GCされる
      map     select
Enumerable version
large_array.map{...}.select{...}



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


           GC ed
Lazy version
large_array.lazy.map{...}.select{...}.force
Lazy version
large_array.lazy.map{...}.select{...}.force


           GC ed
Lazy version
large_array.lazy.map{...}.select{...}.force
Lazy version
large_array.lazy.map{...}.select{...}.force




       中間データが不要
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]
Lazy with IO

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

Enumerable, Enumerator だと空行まで先
に読んでしまう。
Lazy なら1行読むたびに take_while/map
のブロックが実行される
 → 逐次処理できる
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]
Interactivity
実行順序を利用してインタラクティブに
(0..Float::INFINITY).lazy.map{|i|
  p num
  line = $stdin.gets
  line.chomp if line
}.take_while{|l|
  l and not l.empty?
}.force
Pitfall of Lazy?
メモ化されない
(force を2回呼ぶともう一度 each が
呼ばれる)
  IOなど副作用のある each だと結果が
  変化する
   ex) $stdin.lazy.take(1)
enum_for のように each のかわりにな
るメソッドを指定できない
   $stdin.enum_for(:each_byte).lazy
   $stdin.lazy(:each_byte) と書きたい
Lazy as a Better
   Enumerator

     Lazy は
  Enumerator の
    正統進化版
Happy Lazy
Programming!

Más contenido relacionado

La actualidad más candente

Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lensNaoki Aoyama
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Keisuke Fukuda
 
Frege, What a Non-strict Language
Frege, What a Non-strict LanguageFrege, What a Non-strict Language
Frege, What a Non-strict Languagey_taka_23
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターンMoriharu Ohzu
 
今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/PrismNaoki Aoyama
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in ScalaLintaro Ina
 
Popcntによるハミング距離計算
Popcntによるハミング距離計算Popcntによるハミング距離計算
Popcntによるハミング距離計算Norishige Fukushima
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentationJason Namkung
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009miwarin
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会Akihiko Matuura
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎信之 岩永
 
葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by KerasYuji Kawakami
 

La actualidad más candente (20)

Emcpp item31
Emcpp item31Emcpp item31
Emcpp item31
 
Boost Tour 1.50.0 All
Boost Tour 1.50.0 AllBoost Tour 1.50.0 All
Boost Tour 1.50.0 All
 
Van laarhoven lens
Van laarhoven lensVan laarhoven lens
Van laarhoven lens
 
Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35Effective Modern C++ 読書会 Item 35
Effective Modern C++ 読書会 Item 35
 
Frege, What a Non-strict Language
Frege, What a Non-strict LanguageFrege, What a Non-strict Language
Frege, What a Non-strict Language
 
クロージャデザインパターン
クロージャデザインパターンクロージャデザインパターン
クロージャデザインパターン
 
今から始める Lens/Prism
今から始める Lens/Prism今から始める Lens/Prism
今から始める Lens/Prism
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
boost tour 1.48.0 all
boost tour 1.48.0 allboost tour 1.48.0 all
boost tour 1.48.0 all
 
はてなブックマーク in Scala
はてなブックマーク in Scalaはてなブックマーク in Scala
はてなブックマーク in Scala
 
Popcntによるハミング距離計算
Popcntによるハミング距離計算Popcntによるハミング距離計算
Popcntによるハミング距離計算
 
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
 
Emcjp item21
Emcjp item21Emcjp item21
Emcjp item21
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
Sns suite presentation
Sns suite presentationSns suite presentation
Sns suite presentation
 
GoF デザインパターン 2009
GoF デザインパターン 2009GoF デザインパターン 2009
GoF デザインパターン 2009
 
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
 
非同期処理の基礎
非同期処理の基礎非同期処理の基礎
非同期処理の基礎
 
葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras葉物野菜を見極めたい!by Keras
葉物野菜を見極めたい!by Keras
 
C++14 Overview
C++14 OverviewC++14 Overview
C++14 Overview
 

Destacado

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 Kaja のご提案
Ruby Kaja のご提案Ruby Kaja のご提案
Ruby Kaja のご提案nagachika 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
 

Destacado (7)

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 Kaja のご提案
Ruby Kaja のご提案Ruby Kaja のご提案
Ruby Kaja のご提案
 
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 a 怠惰なRubyistへの道 fukuoka rubykaigi01

きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回Tomoya Kawanishi
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)啓 小笠原
 
多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討Yu Sato
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPAkira Takahashi
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumTomohiro Kumagai
 
フィボナッチ数列の作り方
フィボナッチ数列の作り方フィボナッチ数列の作り方
フィボナッチ数列の作り方Tomoya Kawanishi
 
for JSDeferred Code Reading
for JSDeferred Code Readingfor JSDeferred Code Reading
for JSDeferred Code ReadingKenichirou Oyama
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)YoheiOkuyama
 
Ruby2.0 Getting Started
Ruby2.0 Getting StartedRuby2.0 Getting Started
Ruby2.0 Getting StartedYuki Teraoka
 
函数プログラミングの エッセンスと考え方
函数プログラミングのエッセンスと考え方函数プログラミングのエッセンスと考え方
函数プログラミングの エッセンスと考え方啓 小笠原
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしKazuki Minamitani
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
Evolution Of Enumerator
Evolution Of EnumeratorEvolution Of Enumerator
Evolution Of EnumeratorAkinori Musha
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみるftnk
 

Similar a 怠惰なRubyistへの道 fukuoka rubykaigi01 (20)

Ruby 2.5
Ruby 2.5Ruby 2.5
Ruby 2.5
 
Boost tour 1_40_0
Boost tour 1_40_0Boost tour 1_40_0
Boost tour 1_40_0
 
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
 
関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)関数型言語&形式的手法セミナー(3)
関数型言語&形式的手法セミナー(3)
 
多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討多次元配列の効率的利用法の検討
多次元配列の効率的利用法の検討
 
Replace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
 
Scala on Hadoop
Scala on HadoopScala on Hadoop
Scala on Hadoop
 
フィボナッチ数列の作り方
フィボナッチ数列の作り方フィボナッチ数列の作り方
フィボナッチ数列の作り方
 
for JSDeferred Code Reading
for JSDeferred Code Readingfor JSDeferred Code Reading
for JSDeferred Code Reading
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Ruby2.0 Getting Started
Ruby2.0 Getting StartedRuby2.0 Getting Started
Ruby2.0 Getting Started
 
函数プログラミングの エッセンスと考え方
函数プログラミングのエッセンスと考え方函数プログラミングのエッセンスと考え方
函数プログラミングの エッセンスと考え方
 
Rの高速化
Rの高速化Rの高速化
Rの高速化
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
Evolution Of Enumerator
Evolution Of EnumeratorEvolution Of Enumerator
Evolution Of Enumerator
 
Python で munin plugin を書いてみる
Python で munin plugin を書いてみるPython で munin plugin を書いてみる
Python で munin plugin を書いてみる
 

Más de 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
 

Más de 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
 

Último

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Último (9)

Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

怠惰なRubyistへの道 fukuoka rubykaigi01