From: Kouhei Sutou Date: 2008-07-18T21:28:21+09:00 Subject: [ruby-list:45242] Re: Ruby版Camelliaライブラリ 須藤です。 In <20080718195826.6453.KANNO-S@po.ntts.co.jp> "[ruby-list:45241] Ruby版Camelliaライブラリ" on Fri, 18 Jul 2008 19:56:13 +0900, Satoru Kanno wrote: > この度,株式会社アルテ様の協力を受けNTTが共同で開発した > Rubyで利用可能なCamelliaライブラリを公開いたしましたので, > ご報告させていただきます. > URL: > http://info.isl.ntt.co.jp/crypt/camellia/source.html 少し試してみていくつか気になった点がありました。 == cext -> ext setup.rbを使用するのであればcext/ではなくext/ディレクトリに した方がよいと思います。ruby setup.rb config && ruby setup.rb buildでできるようになります。 Hoeだけを使うのであればsetup.rbは必要ないので混乱のないよう に消してしまってもよいと思います。 ext/camellia-example.rbはsample/などに移動した方がわかりやす いかもしれません。 == lib/ lib/以下にcamellia_rb*があってライブラリのバージョンは CamelliaRb::VERSIONで定義されています。おそらくnewgemで生成し たテンプレートをそのまま利用しているのだと思いますが、以下の ようにした方がよいと思います。 lib/camellia_rb.rb -> lib/camellia.rb lib/camellia/version.rb -> lib/camellia/version.rb lib/camellia.rb: require 'camellia' require 'camellia/version' lib/camellia/version.rb: module Camellia #:nodoc: module VERSION #:nodoc: MAJOR = 1 MINOR = 0 TINY = 0 STRING = [MAJOR, MINOR].join('.') end end こうすることでrequire 'camellia'しただけでCamellia::VERSION できるようになります。必要がないのであればCamelliaRbのRbは外 した方がよいと思います。 ただ、こうするとconfig/hoe.rbも↑の変更に追従する必要がある と思います。 ついでに言えば必要のないファイルなどは消してもよいのではない かと思います。例えば、log/やtest/(書かれていないので)など です。 == Camellia.new cext/camellia-rb.cではCamellia.newを定義していますが Camellia#initializeを定義した方がよいと思います。 == RSTRING() もし、1.9対応も視野に入れているのであれば RSTRING()->len/RSTRING()->ptrではなく RSTRING_LEN()/RSTRING_PTR()を使った方がよいと思います。 # RSTRING_LEN()/RSTRING_PTR()がないときは自分で#define。 == Camellia::CamelliaError Camellia::CamelliaError#errorとCamellia::CamelliaError#errno は必要ない気がします。 個人的な好みで言えばCamellia::Errorでもよさそうな気がします。 == Camellia#set_key 別名としてCamellia#key=も用意すると便利かもしれません。 ざっと眺めて書いたのでおかしなことを言っているところもあると 思いますが、そのようなところは無視してやってください。