共有ライブラリ用のテンプレートを吐き出すスクリプト

Ruby用の共有ライブラリを記述するとき、以下のような手順を踏むことが多いです。

  1. 共有ライブラリ本体のコードを書く。
  2. Makefileを生成するための extconf.rb を書く。
  3. extconf.rbからMakefileを生成する。
  4. make する。

このとき、クラス名は 共有ライブラリ本体のソースコード、extconf.rbに複数回記述されることになり、ちょいと面倒です。そこで、上記の流れを一部省略するようなスクリプトを作成してみました。現在書いてるプログラムの副産物なので、やっつけ実装ですが^ー^;

使用方法は、作成したいクラス名をHogeとすると、

 ruby libgen.rb Hoge

として実行します。すると、

./
|-- Makefile
|-- extconf.rb
|-- Hoge.c
`-- libgen.rb 

と3つのファイルが吐き出されます。この状態で、既に共有ライブラリを make することができます。なお、Hoge.cは、共有ライブラリの作成時に必須のInit_関数と、テスト用の関数を含んだ最小構成のCソースファイルです。このファイルを編集していけば、共有ライブラリを比較的簡単に実装することができるかと思います。ソースコードgithubにアップロードしてありますので、そちらからどうぞ。