タグ

2020年1月2日のブックマーク (2件)

  • RubyInline gem で C 拡張を手軽に作ってみた - エムスリーテックブログ

    こんにちは、サーバーサイドエンジニアといいつつも最近は React をいじっていることが多い矢崎(id:Saiya)です。 去年あたりに自宅用に作っている Rails のアプリケーションから、libgd *1 の提供する C 言語向けの API を呼び出すコードを導入していたのですが、その際に使った RubyInline gem が便利だったので、(主に自分への備忘録を兼ねて)使う上での留意点や tips などを書いておきます *2。公式のサンプルにあるような簡単な利用例ではあまり迷うことはないのですが、多少凝った用途で使う上でハマった点もありましたため、備忘とご共有までに。 なお、この記事は エムスリーアドベントカレンダー 7 日目の記事です、他の記事もぜひご覧くださいませ。 RubyInline gem とは C 言語のソースの文字列を inline メソッドに渡すとコンパイルされ、R

    RubyInline gem で C 拡張を手軽に作ってみた - エムスリーテックブログ
  • Ruby FFIを使ったエクステンションの作り方 - Boost Your Programming!

    Ruby FFIについて ここ最近libclangのRuby Bindingのffi-clangに機能を追加していたのですが、その過程でFFI(Foreign function interface)というものを知りました。FFIとはようするに多言語を呼び出すためのインターフェイスのことのようで、RubyにおけるFFIはlibffiを利用しているようです。 Rubyでは(C言語で)エクステンションを書けば共有ライブラリを利用するようなライブラリ(Gem)を作ることができますが、FFIを使えばRubyで書くことができますしポータブルな実装になります。家曰く: コンパイルが必要無い マルチプラットフォーム(変更無しでJRubyやRubiniousなどで動作する) 記述がRubyなので読み書きしやすい Rubyの実装の変更に影響されない 実際FFIを使ってみると、単純なものなら一瞬でバインディン

    Ruby FFIを使ったエクステンションの作り方 - Boost Your Programming!