皆さん、こんにちは。今回は、C言語とRubyを連携させ、高いパフォーマンスと柔軟性を同時に実現する方法についてお伝えします。C言語の力強い計算機能とRubyのエレガントなスクリプティングを融合させ、開発の可能性を広げましょう。
1. C言語の関数をRubyから呼び出す
最初に、C言語で書かれた関数をRubyから呼び出す例を見てみましょう。これにはRubyのFFI
(Foreign Function Interface)を使用して、C言語の関数を呼び出します。
C言語のコード (example.c)
#include <stdio.h> void helloFromC() { printf("Hello from C!\n"); }
Rubyのコード (app.rb)
require 'ffi' # C言語のDLLをロード module Example extend FFI::Library ffi_lib './example.so' attach_function :helloFromC, [], :void end # C言語の関数を呼び出す Example.helloFromC
2. RubyからC言語のライブラリを利用する
次に、RubyからC言語のライブラリを利用する例を見てみましょう。これにもRubyのFFI
を使用し、C言語の数学ライブラリをRubyから呼び出します。
C言語のコード (mathlib.c)
double add(double a, double b) { return a + b; }
Rubyのコード (app.rb)
require 'ffi' # C言語のDLLをロード module MathLib extend FFI::Library ffi_lib './mathlib.so' attach_function :add, [:double, :double], :double end # C言語のライブラリを利用 result = MathLib.add(3.14, 2.71) puts "Result: #{result}"
3. RubyとC言語でデータのやり取り
最後に、RubyとC言語でデータのやり取りを行う例を見てみましょう。RubyのFFI
を使用して、C言語で定義した構造体をRubyで使用します。
C言語のコード (data.h)
struct Data { int value; };
Rubyのコード (app.rb)
require 'ffi' # C言語の構造体をRubyで定義 class Data < FFI::Struct layout :value, :int end # 新しい構造体を作成 data = Data.new data[:value] = 42 puts "Value: #{data[:value]}"
まとめ
C言語とRubyを連携させることで、高いパフォーマンスと柔軟性を同時に享受できます。RubyのFFI
を活用し、C言語の関数やライブラリを手軽に呼び出し、データのやり取りが可能です。プロジェクトの要件に応じて最適な方法を選択し、効果的な開発を進めましょう。Happy Coding!