BathyScaphe ネタ(その36):CocoaOniguruma に乗り換え予定

BathyScaphe では内部のいくつかの機能に OgreKit を使用しているが、CocoaOniguruma に乗り換えることをしばらく前から検討してきた。OgreKit の機能や性能に特段不満が有る訳ではないが、以下のような理由によるものだ:

CocoaOniguruma の方が「シンプル」
ソースコードOgreKit に比べてぐっと量が少ないので、実装を把握しやすい。
CocoaOniguruma の方が「新しい」
OgreKit は 2007/09/30 (Leopard 登場以前)以来ぷっつりと更新が無い。もっとも動作に支障は出ていないし、今後も動かなくなるということはそうそうないと思うが… CocoaOniguruma は 2008 年 8月(Leopard 登場以降)の登場。ちょっと新しい。前述の「シンプルで実装を把握しやすい」ということも合わせて、将来に対する安心感が有る(いざとなれば自力でいじりやすい)。
CocoaOniguruma の方が「小さい」
手元でビルドすると、CocoaOniguruma フレームワークのサイズは544KBであった。OgreKit の 1.3MB と比べるとそれなりにインパクトのある小ささだ。最近 BathyScaphe もちょっとダイエットした方がかっこいいかな?と思っていたんだよね :-)
CocoaOniguruma も「鬼車」
これが RegexKit および同 Lite フレームワークではなく、CocoaOniguruma に惹かれる強い理由かも。

元々 OgreKit の検索パネルとか(Application Kit Layor)は BathyScaphe では利用していないから、このへんも全く障害にならない。で、BathyScaphe 1.6.3 も出したし、次期バージョンでいよいよ計画を実行に移そうかと考え、この夏期休暇中、手元でごそごそと乗り換え作業を行ってみていたところなのだ。

感触としては乗り換えは比較的容易に可能だ。どちらも鬼車のバインディングだから正規表現自体はそのまま使い続けられる。ちょっと手を動かさなければいけない点として、OgreKit でいうところの

// 全てのマッチした部分の OGRegularExpressionMatch オブジェクトを
// 列挙する OGRegularExpressionEnumerator オブジェクトを返す。
- (NSEnumerator*)matchEnumeratorInString:(NSString*)string;

みたいなものは CocoaOniguruma にはないので、かわりに自分でループなり何なりして頑張る必要があることくらいか。実家の Tiger マシンでも動いたから、乗り換えにゴーサインを出しちゃって、良いかな。