今回の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」関連コース
リンク
御社のプレスリリース・イベント情報を登録するには、ZDNet Japan企業情報センターサービスへのお申し込みをいただく必要がございます。詳しくは以下のページをご覧ください。