logo

テクニカルコラム「第3回 “Ruby 1.9 新機能 Fiber”」

伊藤忠テクノソリューションズ株式会社(略称:CTC)のグループ会社で、ITシステムの保守サポート、運用サービス及び教育サービスを提供するシーティーシー・テクノロジー株式会社(代表取締役社長:藁谷二郎、本社:東京都千代田区、以下:CTCテクノロジー)は表記コラムのバックナンバーを公開しました。原文は以下の通りです。

今回の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」関連コース
リンク

本プレスリリースは発表元企業よりご投稿いただいた情報を掲載しております。
お問い合わせにつきましては発表元企業までお願いいたします。

このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]