SlideShare uma empresa Scribd logo
1 de 103
Baixar para ler offline
Ruby        Mac OS X
                による
      デスクトップアプリケーション開発入門
                             -- Snow Leopard対応版




                      関西Ruby会議02 ­ 2009年11月7日
                      ネットワーク応用通信研究所 研究員
                         高尾 宏治<kouji@netlab.jp>




2009年11月8日日曜日
Ruby        Mac OS X
                による
      デスクトップアプリケーション開発入門
                             -- Snow Leopard対応版




                      関西Ruby会議02 ­ 2009年11月7日
                      ネットワーク応用通信研究所 研究員
                         高尾 宏治<kouji@netlab.jp>




2009年11月8日日曜日
Ruby        Mac OS X
                による
      デスクトップアプリケーション開発入門
                             -- Snow Leopard対応版




                      関西Ruby会議02 ­ 2009年11月7日
                      ネットワーク応用通信研究所 研究員
                         高尾 宏治<kouji@netlab.jp>




2009年11月8日日曜日
RubyとMac




2009年11月8日日曜日
RubyとMac




2009年11月8日日曜日
RubyとMac

       OS X 10.2
       Ruby 1.6.7

                2002




2009年11月8日日曜日
RubyとMac

       OS X 10.2
       Ruby 1.6.7
                          2005
                2002
                       OS X 10.4
                       Ruby 1.8.2


2009年11月8日日曜日
RubyとMac
                                  OS X 10.5
                                 Ruby 1.8.6
       OS X 10.2                 RubyCocoa
       Ruby 1.6.7                   Rails
                          2005
                2002                2007
                       OS X 10.4
                       Ruby 1.8.2


2009年11月8日日曜日
RubyとMac
                                  OS X 10.5
                                 Ruby 1.8.6
       OS X 10.2                 RubyCocoa
       Ruby 1.6.7                   Rails
                          2005                2009
                2002                2007
                       OS X 10.4            OS X 10.6
                       Ruby 1.8.2          Ruby 1.8.7
                                           RubyCocoa
                                              Rails
2009年11月8日日曜日
RubyistとMacユーザ




2009年11月8日日曜日
RubyistとMacユーザ
         Rubyは世界ランク10位
         1位はJava




                         http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html




2009年11月8日日曜日
RubyistとMacユーザ
         Rubyは世界ランク10位
         1位はJava


         Macの世界シェアは10%以下
         90%以上がWindows




                           http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html




2009年11月8日日曜日
RubyistとMacユーザ
         Rubyは世界ランク10位
         1位はJava


         Macの世界シェアは10%以下
         90%以上がWindows


         海外のRubyist≒Macユーザ
         Ruby Conf 2008に出席したある人の感想



                                     http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html




2009年11月8日日曜日
RubyistとMacユーザ
         Rubyは世界ランク10位
         1位はJava


         Macの世界シェアは10%以下
         90%以上がWindows


         海外のRubyist≒Macユーザ
         Ruby Conf 2008に出席したある人の感想


         NaClのMacユーザ=Rubyist
                                     http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html




2009年11月8日日曜日
RubyによるMacアプリ開発




2009年11月8日日曜日
RubyによるMacアプリ開発




2009年11月8日日曜日
RubyによるMacアプリ開発

         標準の開発ツール(Xcode)がRuby対応
         ただし、Mac OS X 10.5だけ...




2009年11月8日日曜日
RubyによるMacアプリ開発

         標準の開発ツール(Xcode)がRuby対応
         ただし、Mac OS X 10.5だけ...

         Rubyを使ってMacアプリを開発できる
         RubyとRubyCocoa
         MacRuby




2009年11月8日日曜日
RubyによるMacアプリ開発

         標準の開発ツール(Xcode)がRuby対応
         ただし、Mac OS X 10.5だけ...

         Rubyを使ってMacアプリを開発できる
         RubyとRubyCocoa
         MacRuby

         とにかくGUI




2009年11月8日日曜日
開発ツール:Xcode




2009年11月8日日曜日
開発ツール:Xcode



                グループ




2009年11月8日日曜日
開発ツール:Xcode

                       ファイル一覧



                グループ




2009年11月8日日曜日
開発ツール:Xcode

                       ファイル一覧



                グループ

                       エディタ




2009年11月8日日曜日
開発ツール:Interface Builder




2009年11月8日日曜日
開発ツール:Interface Builder



            メインウインドウ




2009年11月8日日曜日
開発ツール:Interface Builder



            メインウインドウ
                       プロパティ




2009年11月8日日曜日
開発ツール:Interface Builder


                               GUI部品
            メインウインドウ
                       プロパティ




2009年11月8日日曜日
公式開発言語:Objective-C




2009年11月8日日曜日
公式開発言語:Objective-C

         Macアプリの公式開発言語




2009年11月8日日曜日
公式開発言語:Objective-C

         Macアプリの公式開発言語

         C言語にオブジェクト指向機能を追加
         C言語の上位互換言語




2009年11月8日日曜日
公式開発言語:Objective-C

         Macアプリの公式開発言語

         C言語にオブジェクト指向機能を追加
         C言語の上位互換言語

         C++とは異なるオブジェクトシステム
         Smalltalk由来




                         参考画像:CちゃんとSqueakのコラボ、絶妙なバランス
                             http://www.limo.fumi2kick.com/forum/glang/glang17.jpg


2009年11月8日日曜日
公式開発言語:Objective-C

         Macアプリの公式開発言語

         C言語にオブジェクト指向機能を追加
         C言語の上位互換言語

         C++とは異なるオブジェクトシステム
         Smalltalk由来

         Cocoa:Objective-C用のライブラリ

                          参考画像:CちゃんとSqueakのコラボ、絶妙なバランス
                              http://www.limo.fumi2kick.com/forum/glang/glang17.jpg


2009年11月8日日曜日
RubyとObjective-C
                Ruby                   Objective-C
                   self.width   [self width];




2009年11月8日日曜日
RubyとObjective-C
                Ruby                   Objective-C
                   self.width   [self width];

         オブジェクトシステムはSmalltalk由来




2009年11月8日日曜日
RubyとObjective-C
                Ruby                      Objective-C
                   self.width      [self width];

         オブジェクトシステムはSmalltalk由来

         相性は抜群
         『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』
                                    -- 中川智史:RHC本より




2009年11月8日日曜日
RubyとObjective-C
                Ruby                      Objective-C
                   self.width      [self width];

         オブジェクトシステムはSmalltalk由来

         相性は抜群
         『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』
                                    -- 中川智史:RHC本より


         Rubyが理解できていればObjective-Cの理解は早い
         ただし、C言語の知識があることが前提

2009年11月8日日曜日
RubyとObjective-C
                Ruby                      Objective-C
                   self.width      [self width];

         オブジェクトシステムはSmalltalk由来

         相性は抜群
         『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』
                                    -- 中川智史:RHC本より


         Rubyが理解できていればObjective-Cの理解は早い
         ただし、C言語の知識があることが前提

2009年11月8日日曜日
RubyとObjective-C
                Ruby                      Objective-C
                   self.width      [self width];

         オブジェクトシステムはSmalltalk由来

         相性は抜群
         『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』
                                    -- 中川智史:RHC本より


         Rubyが理解できていればObjective-Cの理解は早い
         ただし、C言語の知識があることが前提

2009年11月8日日曜日
RubyCocoaとMacRuby




2009年11月8日日曜日
RubyCocoaとMacRuby

         RubyCocoa
                RubyとObjective-Cの橋渡しを行うライブラリ




2009年11月8日日曜日
RubyCocoaとMacRuby

         RubyCocoa
                RubyとObjective-Cの橋渡しを行うライブラリ



         MacRuby
                Macに特化したRubyの処理系

                                     http://www.macruby.org/




2009年11月8日日曜日
RubyCocoaとMacRuby

         RubyCocoa
                RubyとObjective-Cの橋渡しを行うライブラリ



         MacRuby
                Macに特化したRubyの処理系

                                     http://www.macruby.org/




2009年11月8日日曜日
MacRubyの特徴
                   http://www.macruby.org/




2009年11月8日日曜日
MacRubyの特徴
                                  http://www.macruby.org/




         CRuby 1.9ベース、100%互換を目標




2009年11月8日日曜日
MacRubyの特徴
                                  http://www.macruby.org/




         CRuby 1.9ベース、100%互換を目標

         LLVMで再実装されたVM




2009年11月8日日曜日
MacRubyの特徴
                                  http://www.macruby.org/




         CRuby 1.9ベース、100%互換を目標

         LLVMで再実装されたVM

         Rubyスクリプトをコンパイル可能




2009年11月8日日曜日
MacRubyの特徴
                                          http://www.macruby.org/




         CRuby 1.9ベース、100%互換を目標

         LLVMで再実装されたVM

         Rubyスクリプトをコンパイル可能

         Mac OS Xにプリインストールされる(かも?)

         メイン開発者のLaurent Sansonetti氏はAppleの社員




2009年11月8日日曜日
MacRubyのデモ



                class AppController
                  attr_accessor :textField

                  def hello(sender)
                    @textField.stringValue = "Hello,MacRuby!"
                  end
                end



2009年11月8日日曜日
MacRubyの情報源




2009年11月8日日曜日
MacRubyの情報源




2009年11月8日日曜日
MacRubyの情報源




2009年11月8日日曜日
MacRubyの情報源
         『RubyによるMac OS Xデスクトップアプリケーション開発入門』
         通称RHC本
         ISBN: 978-4839931780
         9月25日発売 3,570円(税込み)




2009年11月8日日曜日
MacRubyの情報源
         『RubyによるMac OS Xデスクトップアプリケーション開発入門』
         通称RHC本
         ISBN: 978-4839931780
         9月25日発売 3,570円(税込み)


         MacRuby:世界に1冊




2009年11月8日日曜日
MacRubyの情報源
         『RubyによるMac OS Xデスクトップアプリケーション開発入門』
         通称RHC本
         ISBN: 978-4839931780
         9月25日発売 3,570円(税込み)


         MacRuby:世界に1冊

         RubyCocoa:日本に1冊




2009年11月8日日曜日
MacRubyの情報源
         『RubyによるMac OS Xデスクトップアプリケーション開発入門』
         通称RHC本
         ISBN: 978-4839931780
         9月25日発売 3,570円(税込み)


         MacRuby:世界に1冊

         RubyCocoa:日本に1冊

         6F展示会場にてサイン会



2009年11月8日日曜日
Macアプリの配布
         Bodega:Macアプリ版AppStore




2009年11月8日日曜日
Mac OS X 10.6




2009年11月8日日曜日
Mac OS X 10.6




                      http://www.apple.com/jp/macosx/uptodate/




2009年11月8日日曜日
Mac OS X 10.6

         2009/8/28リリース
         Snow Leopard:雪




                          http://www.apple.com/jp/macosx/uptodate/




2009年11月8日日曜日
Mac OS X 10.6

         2009/8/28リリース
         Snow Leopard:雪

         GCD(Grand Central Dispatch)




                                 http://www.apple.com/jp/macosx/uptodate/




2009年11月8日日曜日
Mac OS X 10.6

         2009/8/28リリース
         Snow Leopard:雪

         GCD(Grand Central Dispatch)

         OpenCL



                                 http://www.apple.com/jp/macosx/uptodate/




2009年11月8日日曜日
Mac OS X 10.6

         2009/8/28リリース
         Snow Leopard:雪

         GCD(Grand Central Dispatch)

         OpenCL



                                 http://www.apple.com/jp/macosx/uptodate/




2009年11月8日日曜日
GCDとは




                http://www.apple.com/jp/macosx/technology/




2009年11月8日日曜日
GCDとは


         並列処理を行うためのライブラリ




                           http://www.apple.com/jp/macosx/technology/




2009年11月8日日曜日
GCDとは


         並列処理を行うためのライブラリ

         C言語の拡張とランタイム




                           http://www.apple.com/jp/macosx/technology/




2009年11月8日日曜日
GCDとは


         並列処理を行うためのライブラリ

         C言語の拡張とランタイム

         MacRuby 0.5以降で利用できる


                               http://www.apple.com/jp/macosx/technology/




2009年11月8日日曜日
GCDのサンプル
         素数の数を求める処理をGCDを使って実装する

           # 整数numが素数かどうかを判定する
           # 戻り値がtrueであれば素数
           def prime?(num)
             (2...num).each do |i|
               return false if num % i == 0
             end
             return true
           end




2009年11月8日日曜日
GCDのサンプル
           # 10_000_000から10_000_299までの素数の数を求める
           prime = []
           for i in 0...300
             n = i + 10_000_000
             prime << n if prime?(n)
           end
           puts(prime.length)


           $ time macruby count-prime.rb
           14
           macruby count-prime.rb 14.86s user 0.12s system 93% cpu 16.016 total



2009年11月8日日曜日
GCDのサンプル
           # 10_000_000から10_000_299までの素数の数を求める

           prime = []
           for i in 0...300
                n = i + 10_000_000
                prime << n if prime?(n)
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
GCDのサンプル
           # 10_000_000から10_000_299までの素数の数を求める

           prime = []
           for i in 0...300          ループの並列処理
                n = i + 10_000_000
                prime << n if prime?(n)
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
GCDのサンプル
           # 10_000_000から10_000_299までの素数の数を求める

           prime = []
           for i in 0...300          ループの並列処理
                n = i + 10_000_000
                prime << n if prime?(n)   ロック
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
ループの並列処理
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q.apply(300) do |i|
                n = i + 10_000_000
                prime << n if prime?(n)
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
ループの並列処理
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
                                          並列処理用のオブジェクトの取得

           prime = []
           q.apply(300) do |i|
                n = i + 10_000_000
                prime << n if prime?(n)
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
ループの並列処理
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
                                          並列処理用のオブジェクトの取得

           prime = []
           q.apply(300) do |i|
                                                    並列ループ

                n = i + 10_000_000
                prime << n if prime?(n)
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
グローバルディスパッチキュー
            グローバルディスパッチキュー


                10000000
                 素数?
                             10000001
                              素数?
                                        10000002
                                         素数?
                                                   …   10000299
                                                        素数?




                           ワーカースレッド1               ワーカースレッド2




         処理(ブロック)をディスパッチキューに登録
         FIFO
         CPUのコア数などを考慮して自動で並列処理




2009年11月8日日曜日
グローバルディスパッチキュー
            グローバルディスパッチキュー


                10000000
                 素数?
                             10000001
                              素数?
                                         10000002
                                          素数?
                                                    …   10000299
                                                         素数?




                           ワーカースレッド1                ワーカースレッド2


                              10000000
                               素数?




         処理(ブロック)をディスパッチキューに登録
         FIFO
         CPUのコア数などを考慮して自動で並列処理




2009年11月8日日曜日
グローバルディスパッチキュー
            グローバルディスパッチキュー


                10000000
                 素数?
                             10000001
                              素数?
                                         10000002
                                          素数?
                                                    …     10000299
                                                           素数?




                           ワーカースレッド1                ワーカースレッド2


                              10000000                  10000001
                               素数?                       素数?




         処理(ブロック)をディスパッチキューに登録
         FIFO
         CPUのコア数などを考慮して自動で並列処理




2009年11月8日日曜日
ループの並列処理の詳細
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q.apply(300) do
                n = i + 10_000_000
                prime << n if prime?(n)
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
ループの並列処理の詳細
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
                                          グローバルディスパッチキューの取得

           prime = []
           q.apply(300) do
                n = i + 10_000_000
                prime << n if prime?(n)
           end
           puts(prime.length) #=> 14



2009年11月8日日曜日
ループの並列処理の詳細
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
                                          グローバルディスパッチキューの取得

           prime = []
           q.apply(300) do
                n = i + 10_000_000
                prime << n if prime?(n)
           end                       ブロックをグローバルディスパッチキューに登録


           puts(prime.length) #=> 14



2009年11月8日日曜日
ロック
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)
           end
           q_prime.dispatch(true) { puts(prime.length) }




2009年11月8日日曜日
ロック
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
                                                    ロック用のオブジェクトの取得
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)
           end
           q_prime.dispatch(true) { puts(prime.length) }




2009年11月8日日曜日
ロック
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
                                                    ロック用のオブジェクトの取得
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)    ロック

           end
           q_prime.dispatch(true) { puts(prime.length) }




2009年11月8日日曜日
ロック
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
                                                    ロック用のオブジェクトの取得
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)      ロック

           end
           q_prime.dispatch(true) { puts(prime.length) }       処理完了待ち




2009年11月8日日曜日
プライベートディスパッチキュー
         グローバルディスパッチキュー
           10000000
            素数?
                         10000001
                          素数?
                                      10000002
                                       素数?
                                                 …            10000299
                                                               素数?




                      ワーカースレッド1                    ワーカースレッド2


                                                            10000200
                                                             素数?




                      プライベートディスパッチキュー
                       10000019
                       配列に追加
                                    10000079
                                    配列に追加
                                                 10000103
                                                 配列に追加
                                                                  …
         ディスパッチキューに登録した順に1つずつ処理
         プライベートキューは何個でも生成可能
         ワーカースレッドはグローバルとプライベートで共通




2009年11月8日日曜日
プライベートディスパッチキュー
         グローバルディスパッチキュー
           10000000
            素数?
                         10000001
                          素数?
                                      10000002
                                       素数?
                                                 …            10000299
                                                               素数?




                      ワーカースレッド1                    ワーカースレッド2


                         10000019                           10000200
                         配列に追加                               素数?




                      プライベートディスパッチキュー
                       10000019
                       配列に追加
                                    10000079
                                    配列に追加
                                                 10000103
                                                 配列に追加
                                                                  …
         ディスパッチキューに登録した順に1つずつ処理
         プライベートキューは何個でも生成可能
         ワーカースレッドはグローバルとプライベートで共通




2009年11月8日日曜日
プライベートディスパッチキュー
         グローバルディスパッチキュー
           10000000
            素数?
                         10000001
                          素数?
                                      10000002
                                       素数?
                                                 …          10000299
                                                             素数?




                      ワーカースレッド1                    ワーカースレッド2




                      プライベートディスパッチキュー


                                                               …
                       10000019     10000079     10000103              10000271   素数の
                       配列に追加        配列に追加        配列に追加                 配列に追加      数を出力




         ディスパッチキューに登録した順に1つずつ処理
         プライベートキューは何個でも生成可能
         ワーカースレッドはグローバルとプライベートで共通




2009年11月8日日曜日
プライベートディスパッチキュー
         グローバルディスパッチキュー
           10000000
            素数?
                         10000001
                          素数?
                                      10000002
                                       素数?
                                                 …          10000299
                                                             素数?




                      ワーカースレッド1                    ワーカースレッド2


                         10000103
                         配列に追加




                      プライベートディスパッチキュー


                                                               …
                       10000019     10000079     10000103              10000271   素数の
                       配列に追加        配列に追加        配列に追加                 配列に追加      数を出力




         ディスパッチキューに登録した順に1つずつ処理
         プライベートキューは何個でも生成可能
         ワーカースレッドはグローバルとプライベートで共通




2009年11月8日日曜日
ロックの詳細
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)
           end
           q_prime.dispatch(true) { puts(prime.length) }




2009年11月8日日曜日
ロックの詳細
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
                                                プライベートディスパッチキューの生成
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)
           end
           q_prime.dispatch(true) { puts(prime.length) }




2009年11月8日日曜日
ロックの詳細
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
                                                プライベートディスパッチキューの生成
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)
                                             配列への要素追加をキューに登録(非同期)
           end
           q_prime.dispatch(true) { puts(prime.length) }




2009年11月8日日曜日
ロックの詳細
           # 10_000_000から10_000_299までの素数の数を求める

           q = Dispatch::Queue.concurrent
           prime = []
           q_prime = Dispatch::Queue.new("com.example.prime")
                                                プライベートディスパッチキューの生成
           q.apply(300) do
                n = i + 10_000_000
                q_prime.dispatch { prime << n } if prime?(n)
                                             配列への要素追加をキューに登録(非同期)
           end
           q_prime.dispatch(true) { puts(prime.length) }
                                               素数の数の出力をキューに登録(同期)




2009年11月8日日曜日
使用したGCDのメソッド




2009年11月8日日曜日
使用したGCDのメソッド
         Dispatch::Queue.concurrent(priority = :default)
         並列処理用のグローバルディスパッチキューを取得する




2009年11月8日日曜日
使用したGCDのメソッド
         Dispatch::Queue.concurrent(priority = :default)
         並列処理用のグローバルディスパッチキューを取得する

         Dispatch::Queue#apply(amount_size)
         並列ループを実行する




2009年11月8日日曜日
使用したGCDのメソッド
         Dispatch::Queue.concurrent(priority = :default)
         並列処理用のグローバルディスパッチキューを取得する

         Dispatch::Queue#apply(amount_size)
         並列ループを実行する

         Dispatch::Queue.new(label)
         シリアル処理用のプライベートディスパッチキューを生成する




2009年11月8日日曜日
使用したGCDのメソッド
         Dispatch::Queue.concurrent(priority = :default)
         並列処理用のグローバルディスパッチキューを取得する

         Dispatch::Queue#apply(amount_size)
         並列ループを実行する

         Dispatch::Queue.new(label)
         シリアル処理用のプライベートディスパッチキューを生成する

         Dispatch::Queue#dispatch(synchronicity = false)
         ディスパッチキューにブロックを登録する



2009年11月8日日曜日
GCD vs. Thread

         無駄に複数のスレッドを起動せずOS(中央)が制御

         ロック不要
         デッドロックが発生しない

         スレッド直接を使った方が効率がよいアプリが書けるが...
         高い技術力やスレッドに関する知識が必要



2009年11月8日日曜日
まとめ




2009年11月8日日曜日
まとめ

         RubyとMac
         Rubyist≒Macユーザ




2009年11月8日日曜日
まとめ

         RubyとMac
         Rubyist≒Macユーザ

         RubyによるMacアプリ開発
         MacRubyを使おう




2009年11月8日日曜日
まとめ

         RubyとMac
         Rubyist≒Macユーザ

         RubyによるMacアプリ開発
         MacRubyを使おう

         Mac OS X 10.6
         GCDは並列処理を行うライブラリ



2009年11月8日日曜日
質疑・応答
      RHC本サポート:http://www.takao7.net/rhcbk/
      kouji@takao7.net、@takaokouji、id:kouji0625
      Pokenでハイホー!

      RHC本のサイン&販売会はこのあとすぐ!!



                                                  関西Ruby会議02 ­ 2009年11月7日
                                                  ネットワーク応用通信研究所 研究員
                                                     高尾 宏治<kouji@netlab.jp>




2009年11月8日日曜日

Mais conteúdo relacionado

Destaque

Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Takuro Sasaki
 
JavascriptでRubyの作り方
JavascriptでRubyの作り方JavascriptでRubyの作り方
JavascriptでRubyの作り方Shuyo Nakatani
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookTadashi Saito
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編Kazuya Numata
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerTakuro Sasaki
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選Drecom Co., Ltd.
 
Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)Yohei Yasukawa
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでKouhei Sutou
 
Pattern for 4 mm and 5mm
Pattern for 4 mm and 5mmPattern for 4 mm and 5mm
Pattern for 4 mm and 5mmPhil Heft
 
2mm Hi-Rel Connector Accessories
2mm Hi-Rel Connector Accessories2mm Hi-Rel Connector Accessories
2mm Hi-Rel Connector AccessoriesPhil Heft
 
bbfinance tanitim i̇ngi̇li̇zce
bbfinance tanitim i̇ngi̇li̇zcebbfinance tanitim i̇ngi̇li̇zce
bbfinance tanitim i̇ngi̇li̇zceZiya Gündoğdu
 
приложение 2
приложение 2приложение 2
приложение 2Maxim Gladkov
 
Flinderz slaat haar vleugels uit
Flinderz slaat haar vleugels uitFlinderz slaat haar vleugels uit
Flinderz slaat haar vleugels uitSander Bos
 
Developing or Streamlining System Infographic
Developing or Streamlining System InfographicDeveloping or Streamlining System Infographic
Developing or Streamlining System InfographicGeorge Sloane
 
Philips 27 maart 2017 #digisummit
Philips 27 maart 2017 #digisummitPhilips 27 maart 2017 #digisummit
Philips 27 maart 2017 #digisummitLucien Engelen
 
Romanos nikolaos cv (03.2017) en
Romanos nikolaos cv  (03.2017) enRomanos nikolaos cv  (03.2017) en
Romanos nikolaos cv (03.2017) enRomanos Nikolaos
 

Destaque (19)

Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会Rubyで操るAWS 第67回Ruby関西 勉強会
Rubyで操るAWS 第67回Ruby関西 勉強会
 
JavascriptでRubyの作り方
JavascriptでRubyの作り方JavascriptでRubyの作り方
JavascriptでRubyの作り方
 
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby BookRuby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
Ruby本から読み解くRuby考古学 - Ruby Archaeology from the Ruby Book
 
高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編高トラフィックサイトをRailsで構築するためのTips基礎編
高トラフィックサイトをRailsで構築するためのTips基礎編
 
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawlerRubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
 
実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選実録!Railsのはまりポイント10選
実録!Railsのはまりポイント10選
 
Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)Railsチュートリアルの歩き方 (第3版)
Railsチュートリアルの歩き方 (第3版)
 
Apache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject IntrospectionでApache ArrowのRubyバインディングをGObject Introspectionで
Apache ArrowのRubyバインディングをGObject Introspectionで
 
Pattern for 4 mm and 5mm
Pattern for 4 mm and 5mmPattern for 4 mm and 5mm
Pattern for 4 mm and 5mm
 
Inquiryproject
InquiryprojectInquiryproject
Inquiryproject
 
2mm Hi-Rel Connector Accessories
2mm Hi-Rel Connector Accessories2mm Hi-Rel Connector Accessories
2mm Hi-Rel Connector Accessories
 
bbfinance tanitim i̇ngi̇li̇zce
bbfinance tanitim i̇ngi̇li̇zcebbfinance tanitim i̇ngi̇li̇zce
bbfinance tanitim i̇ngi̇li̇zce
 
приложение 2
приложение 2приложение 2
приложение 2
 
Flinderz slaat haar vleugels uit
Flinderz slaat haar vleugels uitFlinderz slaat haar vleugels uit
Flinderz slaat haar vleugels uit
 
Developing or Streamlining System Infographic
Developing or Streamlining System InfographicDeveloping or Streamlining System Infographic
Developing or Streamlining System Infographic
 
Smart Phones
Smart PhonesSmart Phones
Smart Phones
 
Philips 27 maart 2017 #digisummit
Philips 27 maart 2017 #digisummitPhilips 27 maart 2017 #digisummit
Philips 27 maart 2017 #digisummit
 
Manual de capacitación
Manual de capacitaciónManual de capacitación
Manual de capacitación
 
Romanos nikolaos cv (03.2017) en
Romanos nikolaos cv  (03.2017) enRomanos nikolaos cv  (03.2017) en
Romanos nikolaos cv (03.2017) en
 

Semelhante a RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版

RubyによるMac OS Xデスクトップアプリケーション開発入門
RubyによるMac OS Xデスクトップアプリケーション開発入門RubyによるMac OS Xデスクトップアプリケーション開発入門
RubyによるMac OS Xデスクトップアプリケーション開発入門宏治 高尾
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Koichi Shimozono
 
Railsエコシステムの研究
Railsエコシステムの研究Railsエコシステムの研究
Railsエコシステムの研究Akira Matsuda
 
Ruby Enterprise Environment
Ruby Enterprise EnvironmentRuby Enterprise Environment
Ruby Enterprise EnvironmentTomoya Kawanishi
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみましたYoshiyuki MIYAGI
 
Management of Gems using Bundler.
Management of Gems using Bundler.Management of Gems using Bundler.
Management of Gems using Bundler.Tamotsu Furuya
 
Rubyボードハンズオン
RubyボードハンズオンRubyボードハンズオン
Rubyボードハンズオン三七男 山本
 
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02Yasuko Ohba
 
Corona HandsOn #1
Corona HandsOn #1Corona HandsOn #1
Corona HandsOn #1Tetsuo Ono
 
2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」
2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」
2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」Hiro H.
 
The Way We Are Working On Our Website @とちぎRuby会議02
The Way We Are Working On Our Website @とちぎRuby会議02The Way We Are Working On Our Website @とちぎRuby会議02
The Way We Are Working On Our Website @とちぎRuby会議02Yoji Shidara
 
Corona Handson #0
Corona Handson #0Corona Handson #0
Corona Handson #0Tetsuo Ono
 
Nature Of Software Development
Nature Of Software DevelopmentNature Of Software Development
Nature Of Software DevelopmentShintaro Kakutani
 
PHPer のための Ruby 教室
PHPer のための Ruby 教室PHPer のための Ruby 教室
PHPer のための Ruby 教室higaki
 
TDD frameworks let me dream "Project Specific Language"
TDD frameworks let me dream "Project Specific Language"TDD frameworks let me dream "Project Specific Language"
TDD frameworks let me dream "Project Specific Language"Kyosuke MOROHASHI
 
Sub Resources Rails Plug-in
Sub Resources Rails Plug-inSub Resources Rails Plug-in
Sub Resources Rails Plug-inYasuko Ohba
 

Semelhante a RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版 (20)

RubyによるMac OS Xデスクトップアプリケーション開発入門
RubyによるMac OS Xデスクトップアプリケーション開発入門RubyによるMac OS Xデスクトップアプリケーション開発入門
RubyによるMac OS Xデスクトップアプリケーション開発入門
 
Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発Ruby on Rails を用いたWEBアプリケーションの開発
Ruby on Rails を用いたWEBアプリケーションの開発
 
Railsエコシステムの研究
Railsエコシステムの研究Railsエコシステムの研究
Railsエコシステムの研究
 
Ruby Enterprise Environment
Ruby Enterprise EnvironmentRuby Enterprise Environment
Ruby Enterprise Environment
 
MacRuby を使ってみました
MacRuby を使ってみましたMacRuby を使ってみました
MacRuby を使ってみました
 
Management of Gems using Bundler.
Management of Gems using Bundler.Management of Gems using Bundler.
Management of Gems using Bundler.
 
Railsの今昔
Railsの今昔Railsの今昔
Railsの今昔
 
Rava on JRuby
Rava on JRubyRava on JRuby
Rava on JRuby
 
Railsの基礎
Railsの基礎Railsの基礎
Railsの基礎
 
Rubyボードハンズオン
RubyボードハンズオンRubyボードハンズオン
Rubyボードハンズオン
 
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
More Pragmatic Patterns of Ruby on Rails at Kansai Ruby Kaigi #02
 
Corona HandsOn #1
Corona HandsOn #1Corona HandsOn #1
Corona HandsOn #1
 
2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」
2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」
2011-7-17 !RubyKaigi (NotRubyKaigi) 発表資料「WindowsマシンでRuby系勉強会へ行くと凹むことの考察」
 
The Way We Are Working On Our Website @とちぎRuby会議02
The Way We Are Working On Our Website @とちぎRuby会議02The Way We Are Working On Our Website @とちぎRuby会議02
The Way We Are Working On Our Website @とちぎRuby会議02
 
Corona Handson #0
Corona Handson #0Corona Handson #0
Corona Handson #0
 
Nature Of Software Development
Nature Of Software DevelopmentNature Of Software Development
Nature Of Software Development
 
PHPer のための Ruby 教室
PHPer のための Ruby 教室PHPer のための Ruby 教室
PHPer のための Ruby 教室
 
TDD frameworks let me dream "Project Specific Language"
TDD frameworks let me dream "Project Specific Language"TDD frameworks let me dream "Project Specific Language"
TDD frameworks let me dream "Project Specific Language"
 
Sub Resources Rails Plug-in
Sub Resources Rails Plug-inSub Resources Rails Plug-in
Sub Resources Rails Plug-in
 
Ruby24
Ruby24Ruby24
Ruby24
 

Mais de 宏治 高尾

Smalruby - The neat thing to connect Rubyists and Scratchers -
Smalruby - The neat thing to connect Rubyists and Scratchers -Smalruby - The neat thing to connect Rubyists and Scratchers -
Smalruby - The neat thing to connect Rubyists and Scratchers -宏治 高尾
 
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...宏治 高尾
 
(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Pro...
(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyPro...(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyPro...
(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Pro...宏治 高尾
 
(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Prog...
(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyProg...(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyProg...
(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Prog...宏治 高尾
 
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜宏治 高尾
 
Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...
Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...
Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...宏治 高尾
 
ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~
ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~
ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~宏治 高尾
 
勉強会をはじめよう
勉強会をはじめよう勉強会をはじめよう
勉強会をはじめよう宏治 高尾
 
Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門宏治 高尾
 
やさしいMatzの作り方
やさしいMatzの作り方やさしいMatzの作り方
やさしいMatzの作り方宏治 高尾
 

Mais de 宏治 高尾 (12)

Smalruby - The neat thing to connect Rubyists and Scratchers -
Smalruby - The neat thing to connect Rubyists and Scratchers -Smalruby - The neat thing to connect Rubyists and Scratchers -
Smalruby - The neat thing to connect Rubyists and Scratchers -
 
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
小学生3年生から使えるRubyのビジュアルプログラミングエディタ「スモウルビー」と、それを活用した任意団体「Rubyプログラミング少年団」[第7回フクオカ...
 
(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Pro...
(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyPro...(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyPro...
(final version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Pro...
 
(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Prog...
(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyProg...(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and RubyProg...
(beta version) KIDS, RUBY, FUN! - Introduction of the Smalruby and Ruby Prog...
 
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜Kids,Ruby,Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
Kids, Ruby, Fun! ぼくたち、 Rubyプログラミング少年団! 〜小学生からはじめる Ruby プログラミング〜
 
Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...
Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...
Kids, Ruby, Run! - Introduction of the Smalruby and the Ruby Programming Shou...
 
ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~
ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~
ぼくたちRubyプログラミング少年団!~小・中学生向けプログラミング言語Rubyの学習塾の運営、学習教材の開発・販売事業~
 
勉強会をはじめよう
勉強会をはじめよう勉強会をはじめよう
勉強会をはじめよう
 
Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門Mac Rubyではじめる!Macアプリ開発入門
Mac Rubyではじめる!Macアプリ開発入門
 
MacRuby on Rails
MacRuby on RailsMacRuby on Rails
MacRuby on Rails
 
MacRuby on Rails
MacRuby on RailsMacRuby on Rails
MacRuby on Rails
 
やさしいMatzの作り方
やさしいMatzの作り方やさしいMatzの作り方
やさしいMatzの作り方
 

Ú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
 
論文紹介: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
 
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
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
論文紹介: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
 
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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Ú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
 
論文紹介: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」の紹介
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介: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
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
論文紹介: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...
 
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
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版

  • 1. Ruby Mac OS X による デスクトップアプリケーション開発入門 -- Snow Leopard対応版 関西Ruby会議02 ­ 2009年11月7日 ネットワーク応用通信研究所 研究員 高尾 宏治<kouji@netlab.jp> 2009年11月8日日曜日
  • 2. Ruby Mac OS X による デスクトップアプリケーション開発入門 -- Snow Leopard対応版 関西Ruby会議02 ­ 2009年11月7日 ネットワーク応用通信研究所 研究員 高尾 宏治<kouji@netlab.jp> 2009年11月8日日曜日
  • 3. Ruby Mac OS X による デスクトップアプリケーション開発入門 -- Snow Leopard対応版 関西Ruby会議02 ­ 2009年11月7日 ネットワーク応用通信研究所 研究員 高尾 宏治<kouji@netlab.jp> 2009年11月8日日曜日
  • 6. RubyとMac OS X 10.2 Ruby 1.6.7 2002 2009年11月8日日曜日
  • 7. RubyとMac OS X 10.2 Ruby 1.6.7 2005 2002 OS X 10.4 Ruby 1.8.2 2009年11月8日日曜日
  • 8. RubyとMac OS X 10.5 Ruby 1.8.6 OS X 10.2 RubyCocoa Ruby 1.6.7 Rails 2005 2002 2007 OS X 10.4 Ruby 1.8.2 2009年11月8日日曜日
  • 9. RubyとMac OS X 10.5 Ruby 1.8.6 OS X 10.2 RubyCocoa Ruby 1.6.7 Rails 2005 2009 2002 2007 OS X 10.4 OS X 10.6 Ruby 1.8.2 Ruby 1.8.7 RubyCocoa Rails 2009年11月8日日曜日
  • 11. RubyistとMacユーザ Rubyは世界ランク10位 1位はJava http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html 2009年11月8日日曜日
  • 12. RubyistとMacユーザ Rubyは世界ランク10位 1位はJava Macの世界シェアは10%以下 90%以上がWindows http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html 2009年11月8日日曜日
  • 13. RubyistとMacユーザ Rubyは世界ランク10位 1位はJava Macの世界シェアは10%以下 90%以上がWindows 海外のRubyist≒Macユーザ Ruby Conf 2008に出席したある人の感想 http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html 2009年11月8日日曜日
  • 14. RubyistとMacユーザ Rubyは世界ランク10位 1位はJava Macの世界シェアは10%以下 90%以上がWindows 海外のRubyist≒Macユーザ Ruby Conf 2008に出席したある人の感想 NaClのMacユーザ=Rubyist http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html 2009年11月8日日曜日
  • 17. RubyによるMacアプリ開発 標準の開発ツール(Xcode)がRuby対応 ただし、Mac OS X 10.5だけ... 2009年11月8日日曜日
  • 18. RubyによるMacアプリ開発 標準の開発ツール(Xcode)がRuby対応 ただし、Mac OS X 10.5だけ... Rubyを使ってMacアプリを開発できる RubyとRubyCocoa MacRuby 2009年11月8日日曜日
  • 19. RubyによるMacアプリ開発 標準の開発ツール(Xcode)がRuby対応 ただし、Mac OS X 10.5だけ... Rubyを使ってMacアプリを開発できる RubyとRubyCocoa MacRuby とにかくGUI 2009年11月8日日曜日
  • 21. 開発ツール:Xcode グループ 2009年11月8日日曜日
  • 22. 開発ツール:Xcode ファイル一覧 グループ 2009年11月8日日曜日
  • 23. 開発ツール:Xcode ファイル一覧 グループ エディタ 2009年11月8日日曜日
  • 25. 開発ツール:Interface Builder メインウインドウ 2009年11月8日日曜日
  • 26. 開発ツール:Interface Builder メインウインドウ プロパティ 2009年11月8日日曜日
  • 27. 開発ツール:Interface Builder GUI部品 メインウインドウ プロパティ 2009年11月8日日曜日
  • 29. 公式開発言語:Objective-C Macアプリの公式開発言語 2009年11月8日日曜日
  • 30. 公式開発言語:Objective-C Macアプリの公式開発言語 C言語にオブジェクト指向機能を追加 C言語の上位互換言語 2009年11月8日日曜日
  • 31. 公式開発言語:Objective-C Macアプリの公式開発言語 C言語にオブジェクト指向機能を追加 C言語の上位互換言語 C++とは異なるオブジェクトシステム Smalltalk由来 参考画像:CちゃんとSqueakのコラボ、絶妙なバランス http://www.limo.fumi2kick.com/forum/glang/glang17.jpg 2009年11月8日日曜日
  • 32. 公式開発言語:Objective-C Macアプリの公式開発言語 C言語にオブジェクト指向機能を追加 C言語の上位互換言語 C++とは異なるオブジェクトシステム Smalltalk由来 Cocoa:Objective-C用のライブラリ 参考画像:CちゃんとSqueakのコラボ、絶妙なバランス http://www.limo.fumi2kick.com/forum/glang/glang17.jpg 2009年11月8日日曜日
  • 33. RubyとObjective-C Ruby Objective-C self.width [self width]; 2009年11月8日日曜日
  • 34. RubyとObjective-C Ruby Objective-C self.width [self width]; オブジェクトシステムはSmalltalk由来 2009年11月8日日曜日
  • 35. RubyとObjective-C Ruby Objective-C self.width [self width]; オブジェクトシステムはSmalltalk由来 相性は抜群 『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』                            -- 中川智史:RHC本より 2009年11月8日日曜日
  • 36. RubyとObjective-C Ruby Objective-C self.width [self width]; オブジェクトシステムはSmalltalk由来 相性は抜群 『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』                            -- 中川智史:RHC本より Rubyが理解できていればObjective-Cの理解は早い ただし、C言語の知識があることが前提 2009年11月8日日曜日
  • 37. RubyとObjective-C Ruby Objective-C self.width [self width]; オブジェクトシステムはSmalltalk由来 相性は抜群 『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』                            -- 中川智史:RHC本より Rubyが理解できていればObjective-Cの理解は早い ただし、C言語の知識があることが前提 2009年11月8日日曜日
  • 38. RubyとObjective-C Ruby Objective-C self.width [self width]; オブジェクトシステムはSmalltalk由来 相性は抜群 『RubyとCocoa(Objective-C)は、非常に幸運な組み合わせだったと言えるでしょう』                            -- 中川智史:RHC本より Rubyが理解できていればObjective-Cの理解は早い ただし、C言語の知識があることが前提 2009年11月8日日曜日
  • 40. RubyCocoaとMacRuby RubyCocoa RubyとObjective-Cの橋渡しを行うライブラリ 2009年11月8日日曜日
  • 41. RubyCocoaとMacRuby RubyCocoa RubyとObjective-Cの橋渡しを行うライブラリ MacRuby Macに特化したRubyの処理系 http://www.macruby.org/ 2009年11月8日日曜日
  • 42. RubyCocoaとMacRuby RubyCocoa RubyとObjective-Cの橋渡しを行うライブラリ MacRuby Macに特化したRubyの処理系 http://www.macruby.org/ 2009年11月8日日曜日
  • 43. MacRubyの特徴 http://www.macruby.org/ 2009年11月8日日曜日
  • 44. MacRubyの特徴 http://www.macruby.org/ CRuby 1.9ベース、100%互換を目標 2009年11月8日日曜日
  • 45. MacRubyの特徴 http://www.macruby.org/ CRuby 1.9ベース、100%互換を目標 LLVMで再実装されたVM 2009年11月8日日曜日
  • 46. MacRubyの特徴 http://www.macruby.org/ CRuby 1.9ベース、100%互換を目標 LLVMで再実装されたVM Rubyスクリプトをコンパイル可能 2009年11月8日日曜日
  • 47. MacRubyの特徴 http://www.macruby.org/ CRuby 1.9ベース、100%互換を目標 LLVMで再実装されたVM Rubyスクリプトをコンパイル可能 Mac OS Xにプリインストールされる(かも?) メイン開発者のLaurent Sansonetti氏はAppleの社員 2009年11月8日日曜日
  • 48. MacRubyのデモ class AppController attr_accessor :textField def hello(sender) @textField.stringValue = "Hello,MacRuby!" end end 2009年11月8日日曜日
  • 52. MacRubyの情報源 『RubyによるMac OS Xデスクトップアプリケーション開発入門』 通称RHC本 ISBN: 978-4839931780 9月25日発売 3,570円(税込み) 2009年11月8日日曜日
  • 53. MacRubyの情報源 『RubyによるMac OS Xデスクトップアプリケーション開発入門』 通称RHC本 ISBN: 978-4839931780 9月25日発売 3,570円(税込み) MacRuby:世界に1冊 2009年11月8日日曜日
  • 54. MacRubyの情報源 『RubyによるMac OS Xデスクトップアプリケーション開発入門』 通称RHC本 ISBN: 978-4839931780 9月25日発売 3,570円(税込み) MacRuby:世界に1冊 RubyCocoa:日本に1冊 2009年11月8日日曜日
  • 55. MacRubyの情報源 『RubyによるMac OS Xデスクトップアプリケーション開発入門』 通称RHC本 ISBN: 978-4839931780 9月25日発売 3,570円(税込み) MacRuby:世界に1冊 RubyCocoa:日本に1冊 6F展示会場にてサイン会 2009年11月8日日曜日
  • 56. Macアプリの配布 Bodega:Macアプリ版AppStore 2009年11月8日日曜日
  • 57. Mac OS X 10.6 2009年11月8日日曜日
  • 58. Mac OS X 10.6 http://www.apple.com/jp/macosx/uptodate/ 2009年11月8日日曜日
  • 59. Mac OS X 10.6 2009/8/28リリース Snow Leopard:雪 http://www.apple.com/jp/macosx/uptodate/ 2009年11月8日日曜日
  • 60. Mac OS X 10.6 2009/8/28リリース Snow Leopard:雪 GCD(Grand Central Dispatch) http://www.apple.com/jp/macosx/uptodate/ 2009年11月8日日曜日
  • 61. Mac OS X 10.6 2009/8/28リリース Snow Leopard:雪 GCD(Grand Central Dispatch) OpenCL http://www.apple.com/jp/macosx/uptodate/ 2009年11月8日日曜日
  • 62. Mac OS X 10.6 2009/8/28リリース Snow Leopard:雪 GCD(Grand Central Dispatch) OpenCL http://www.apple.com/jp/macosx/uptodate/ 2009年11月8日日曜日
  • 63. GCDとは http://www.apple.com/jp/macosx/technology/ 2009年11月8日日曜日
  • 64. GCDとは 並列処理を行うためのライブラリ http://www.apple.com/jp/macosx/technology/ 2009年11月8日日曜日
  • 65. GCDとは 並列処理を行うためのライブラリ C言語の拡張とランタイム http://www.apple.com/jp/macosx/technology/ 2009年11月8日日曜日
  • 66. GCDとは 並列処理を行うためのライブラリ C言語の拡張とランタイム MacRuby 0.5以降で利用できる http://www.apple.com/jp/macosx/technology/ 2009年11月8日日曜日
  • 67. GCDのサンプル 素数の数を求める処理をGCDを使って実装する # 整数numが素数かどうかを判定する # 戻り値がtrueであれば素数 def prime?(num) (2...num).each do |i| return false if num % i == 0 end return true end 2009年11月8日日曜日
  • 68. GCDのサンプル # 10_000_000から10_000_299までの素数の数を求める prime = [] for i in 0...300 n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) $ time macruby count-prime.rb 14 macruby count-prime.rb 14.86s user 0.12s system 93% cpu 16.016 total 2009年11月8日日曜日
  • 69. GCDのサンプル # 10_000_000から10_000_299までの素数の数を求める prime = [] for i in 0...300 n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 70. GCDのサンプル # 10_000_000から10_000_299までの素数の数を求める prime = [] for i in 0...300 ループの並列処理 n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 71. GCDのサンプル # 10_000_000から10_000_299までの素数の数を求める prime = [] for i in 0...300 ループの並列処理 n = i + 10_000_000 prime << n if prime?(n) ロック end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 72. ループの並列処理 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q.apply(300) do |i| n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 73. ループの並列処理 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent 並列処理用のオブジェクトの取得 prime = [] q.apply(300) do |i| n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 74. ループの並列処理 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent 並列処理用のオブジェクトの取得 prime = [] q.apply(300) do |i| 並列ループ n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 75. グローバルディスパッチキュー グローバルディスパッチキュー 10000000 素数? 10000001 素数? 10000002 素数? … 10000299 素数? ワーカースレッド1 ワーカースレッド2 処理(ブロック)をディスパッチキューに登録 FIFO CPUのコア数などを考慮して自動で並列処理 2009年11月8日日曜日
  • 76. グローバルディスパッチキュー グローバルディスパッチキュー 10000000 素数? 10000001 素数? 10000002 素数? … 10000299 素数? ワーカースレッド1 ワーカースレッド2 10000000 素数? 処理(ブロック)をディスパッチキューに登録 FIFO CPUのコア数などを考慮して自動で並列処理 2009年11月8日日曜日
  • 77. グローバルディスパッチキュー グローバルディスパッチキュー 10000000 素数? 10000001 素数? 10000002 素数? … 10000299 素数? ワーカースレッド1 ワーカースレッド2 10000000 10000001 素数? 素数? 処理(ブロック)をディスパッチキューに登録 FIFO CPUのコア数などを考慮して自動で並列処理 2009年11月8日日曜日
  • 78. ループの並列処理の詳細 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q.apply(300) do n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 79. ループの並列処理の詳細 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent グローバルディスパッチキューの取得 prime = [] q.apply(300) do n = i + 10_000_000 prime << n if prime?(n) end puts(prime.length) #=> 14 2009年11月8日日曜日
  • 80. ループの並列処理の詳細 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent グローバルディスパッチキューの取得 prime = [] q.apply(300) do n = i + 10_000_000 prime << n if prime?(n) end ブロックをグローバルディスパッチキューに登録 puts(prime.length) #=> 14 2009年11月8日日曜日
  • 81. ロック # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) end q_prime.dispatch(true) { puts(prime.length) } 2009年11月8日日曜日
  • 82. ロック # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") ロック用のオブジェクトの取得 q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) end q_prime.dispatch(true) { puts(prime.length) } 2009年11月8日日曜日
  • 83. ロック # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") ロック用のオブジェクトの取得 q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) ロック end q_prime.dispatch(true) { puts(prime.length) } 2009年11月8日日曜日
  • 84. ロック # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") ロック用のオブジェクトの取得 q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) ロック end q_prime.dispatch(true) { puts(prime.length) } 処理完了待ち 2009年11月8日日曜日
  • 85. プライベートディスパッチキュー グローバルディスパッチキュー 10000000 素数? 10000001 素数? 10000002 素数? … 10000299 素数? ワーカースレッド1 ワーカースレッド2 10000200 素数? プライベートディスパッチキュー 10000019 配列に追加 10000079 配列に追加 10000103 配列に追加 … ディスパッチキューに登録した順に1つずつ処理 プライベートキューは何個でも生成可能 ワーカースレッドはグローバルとプライベートで共通 2009年11月8日日曜日
  • 86. プライベートディスパッチキュー グローバルディスパッチキュー 10000000 素数? 10000001 素数? 10000002 素数? … 10000299 素数? ワーカースレッド1 ワーカースレッド2 10000019 10000200 配列に追加 素数? プライベートディスパッチキュー 10000019 配列に追加 10000079 配列に追加 10000103 配列に追加 … ディスパッチキューに登録した順に1つずつ処理 プライベートキューは何個でも生成可能 ワーカースレッドはグローバルとプライベートで共通 2009年11月8日日曜日
  • 87. プライベートディスパッチキュー グローバルディスパッチキュー 10000000 素数? 10000001 素数? 10000002 素数? … 10000299 素数? ワーカースレッド1 ワーカースレッド2 プライベートディスパッチキュー … 10000019 10000079 10000103 10000271 素数の 配列に追加 配列に追加 配列に追加 配列に追加 数を出力 ディスパッチキューに登録した順に1つずつ処理 プライベートキューは何個でも生成可能 ワーカースレッドはグローバルとプライベートで共通 2009年11月8日日曜日
  • 88. プライベートディスパッチキュー グローバルディスパッチキュー 10000000 素数? 10000001 素数? 10000002 素数? … 10000299 素数? ワーカースレッド1 ワーカースレッド2 10000103 配列に追加 プライベートディスパッチキュー … 10000019 10000079 10000103 10000271 素数の 配列に追加 配列に追加 配列に追加 配列に追加 数を出力 ディスパッチキューに登録した順に1つずつ処理 プライベートキューは何個でも生成可能 ワーカースレッドはグローバルとプライベートで共通 2009年11月8日日曜日
  • 89. ロックの詳細 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) end q_prime.dispatch(true) { puts(prime.length) } 2009年11月8日日曜日
  • 90. ロックの詳細 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") プライベートディスパッチキューの生成 q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) end q_prime.dispatch(true) { puts(prime.length) } 2009年11月8日日曜日
  • 91. ロックの詳細 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") プライベートディスパッチキューの生成 q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) 配列への要素追加をキューに登録(非同期) end q_prime.dispatch(true) { puts(prime.length) } 2009年11月8日日曜日
  • 92. ロックの詳細 # 10_000_000から10_000_299までの素数の数を求める q = Dispatch::Queue.concurrent prime = [] q_prime = Dispatch::Queue.new("com.example.prime") プライベートディスパッチキューの生成 q.apply(300) do n = i + 10_000_000 q_prime.dispatch { prime << n } if prime?(n) 配列への要素追加をキューに登録(非同期) end q_prime.dispatch(true) { puts(prime.length) } 素数の数の出力をキューに登録(同期) 2009年11月8日日曜日
  • 94. 使用したGCDのメソッド Dispatch::Queue.concurrent(priority = :default) 並列処理用のグローバルディスパッチキューを取得する 2009年11月8日日曜日
  • 95. 使用したGCDのメソッド Dispatch::Queue.concurrent(priority = :default) 並列処理用のグローバルディスパッチキューを取得する Dispatch::Queue#apply(amount_size) 並列ループを実行する 2009年11月8日日曜日
  • 96. 使用したGCDのメソッド Dispatch::Queue.concurrent(priority = :default) 並列処理用のグローバルディスパッチキューを取得する Dispatch::Queue#apply(amount_size) 並列ループを実行する Dispatch::Queue.new(label) シリアル処理用のプライベートディスパッチキューを生成する 2009年11月8日日曜日
  • 97. 使用したGCDのメソッド Dispatch::Queue.concurrent(priority = :default) 並列処理用のグローバルディスパッチキューを取得する Dispatch::Queue#apply(amount_size) 並列ループを実行する Dispatch::Queue.new(label) シリアル処理用のプライベートディスパッチキューを生成する Dispatch::Queue#dispatch(synchronicity = false) ディスパッチキューにブロックを登録する 2009年11月8日日曜日
  • 98. GCD vs. Thread 無駄に複数のスレッドを起動せずOS(中央)が制御 ロック不要 デッドロックが発生しない スレッド直接を使った方が効率がよいアプリが書けるが... 高い技術力やスレッドに関する知識が必要 2009年11月8日日曜日
  • 100. まとめ RubyとMac Rubyist≒Macユーザ 2009年11月8日日曜日
  • 101. まとめ RubyとMac Rubyist≒Macユーザ RubyによるMacアプリ開発 MacRubyを使おう 2009年11月8日日曜日
  • 102. まとめ RubyとMac Rubyist≒Macユーザ RubyによるMacアプリ開発 MacRubyを使おう Mac OS X 10.6 GCDは並列処理を行うライブラリ 2009年11月8日日曜日
  • 103. 質疑・応答 RHC本サポート:http://www.takao7.net/rhcbk/ kouji@takao7.net、@takaokouji、id:kouji0625 Pokenでハイホー! RHC本のサイン&販売会はこのあとすぐ!! 関西Ruby会議02 ­ 2009年11月7日 ネットワーク応用通信研究所 研究員 高尾 宏治<kouji@netlab.jp> 2009年11月8日日曜日