オルタナティブ・ブログ > 吉政忠志のベンチャービジネス千里眼 >

IT業界でベンチャービジネスの支援をしている執筆者が日々の活動ログと感じたことを、徒然なるままに書き綴っていきます。

Ruby 1.9 新機能「Fiber」とは?(CTC教育サービス メールマガジン6月号コラムより)

»

皆様、こんにちは。吉政創成の吉政でございます。 弊社のお客様であるCTC教育サービス様がメールマガジンを発行されましたので、ご案内します。

今号のコラムはRuby 1.9 新機能「Fiber」についてです。なお、今号の目次は以下の通りです。

目次
■ニュース   Microsoft Hyper-V新コースリリース!
■キャンペーン VMware認定コース(VCP4対応)キャンペーン
         8/11開催分より実施!
■トピックス  1) VMware認定資格 VCAP 受験体験記!!
         2)『Inst. Tech View ~Ruby 1.9 新機能 Fiber~』

※原文をご覧になりたい方は以下をご覧ください。
ctc201106.pdfをダウンロード

『Inst. Tech View ~Ruby 1.9 新機能 Fiber~』については以下をご覧ください。

今回のInst. Tech Viewは、Webアプリケーション開発言語として注目を集めている「Ruby」がテーマです。
他の開発言語ではあまり見られないRubyの新機能の1つである「Fiber」を紹介します。

FiberはRubyの1.9から導入されており、プログラマに対して複数のタスクを切り替えて実行(並行処理)するための構造を提供します。この構造はコルーチン、マイクロスレッド、軽量スレッドなどと呼ぶこともあります。Fiberを使用すれば状態を持つ処理を並行に扱うための記述を簡潔に行うことができます。以下の例はFiberを使用して2つのタスクを並行に実行している例です。

fiber_a = Fiber.new {
  1.upto(3) do |i|
    Fiber.yield(i)
  end
}
fiber_b = Fiber.new {
  3.downto(1) do |i|
    Fiber.yield(i)
  end
}
3.times do
  a = fiber_a.resume
  b = fiber_b.resume
  puts "a: #{a} b: #{b}"
end
# 実行結果
# a: 1 b: 3
# a: 2 b: 2
# a: 3 b: 1

上記の例では、Fiber.newの後ろにあるコードブロックで処理を記述し、それをFiberオブジェクトとして変数に代入します。Fiberオブジェクトはresumeメソッドにより呼び出され、Fiber.yieldで処理が中断します。次回以降のresumeメソッドの呼び出しで、中断した時の状態から処理を
再開することができます。また実行結果から、処理の中断と再開で変数の値が保持されている事がわかります。

Fiberはノンプリエンティブマルチタスクや非同期処理、ゲームプログラミング、Generatorの実装などに使用すると有効です。

CTC教育サービスが提供するRuby関連コースは、プログラミングの初心者から経験者まで、今回のFiberのような最新機能を体系的に習得できるカリキュラム構成になっています。

コースの詳細情報はこちら

「Ruby」関連コース
http://www.school.ctc-g.co.jp/ruby/

以上

Comment(0)