CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
今回の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の関連コース一覧
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes